工場作りに防衛にと大忙しのMindustry。v6.0からの機能でマイクロプロセッサーなるものが追加されており、これを利用すると非常にクリエイティブなゲームプレイが可能だ。今回はそのマイクロプロセッサーを用いたゲームプレイの例を紹介する。
マイクロプロセッサー、及びその上位版のブロックはビジュアルエディタを使用してプログラミングを行うことが出来る。
ユニット制御やメモリーセルブロックへの書き込み/読み取りなど様々な機能があるが、その中の一つに近隣のブロック(コンテナとその中身や、ノードとその流入電力など)の状態を取得することが出来る命令があるので、今回はこれを利用する。
1.まずはSensorを追加する。
追加ボタンを押してSensorを選ぶと上の画像と同じ状態になるはずだ。もうこの時点で帰りたくなるプレイヤーも多いだろうが、一つ一つ解説していく。
一番左のresultはいわゆる変数であり、ここに取得した情報を格納する。真ん中の@copperは文字通り銅のことであり、@copperの横にある編集ボタンをクリックするとこのようになる
小ウィンドウが展開され、他のリソース類も選ぶことが出来る。少しゲームらしさが残っていて安心出来るポイントだ。もちろん直接記述することも可能だが。
右のblock1は参照するブロックのことで、デフォルトではblock1になっているが、ここをcontainer1やnucleus1にすることでコンテナやコアを参照することが出来る。
というわけで、Sensorのデフォルト設定は「resultにblock1の中にある銅の数を記録しますよ」ということになる。
まずはこれを活用してメッセージブロックにコアに保存されている銅の数を表示する例を紹介しよう。
まずは上記のように参照するブロックがすべて選択出来ているか確認する。何もブロックを持っていない状態でマイクロプロセッサをクリックすると、マイクロプロセッサの下に編集ボタンが出るほか、付近の選択可能なブロックが選択/選択解除可能になる。
コアの選択を外した状態。この状態だとマイクロプロセッサ内のコードでコアを参照しようとしてnecleus1と記述しても動かない。
お気づきの方も居るだろうが、マイクロプロセッサは黄色い円の中にあるものにしか関与出来ないということだ。ただし、メモリーセルとマイクロプロセッサを並べて遠くまで情報を伝達することは可能。それについては後述する。
あとはメモリープロセッサのエディタをこう
Sensorについては既に書いたとおり。Printはresultの内容をプリントバッファなるものに書き込み、Print Flushはメッセージブロックへプリントバッファの内容を書き込むというもの。結果としてこうなる
見事にメッセージブロックにコア内の銅の数が表示されるというわけだ。マイクロプロセッサー内の命令は毎秒120個実行されるそうなので、この数字はきちんと更新されている。また全く知らない人からしたら何の数字か分からないので、Printの前にもう一つPrintを追加し、「”銅”」と書くのも良いだろう※変数の内容ではなく文字を表示したい場合、ダブルクォーテーションで囲む必要がある。
ちなみにコア内のリソースは画面上部に常に表示されているので実用上の価値はなく、マウスオーバーしなければ見られないのも不便である。
コメント