プログラミングを駆使してサバイバルする「Mechanica」#4

プログラミングを駆使してサバイバルする「Mechanica」#3

□トラップをプログラミングする

拠点の守りを固めただけでは不十分。敵が来たときに備えて撃退用のトラップも設置せねば。
遠出したときに教会の跡地で見つけたレーザートリップワイヤートゲ付き振り子、そしてクラフトしたライトセーバーナイフ発射装置を正面口に組み合わせた。トゲ付き振り子は作動トリガーを別途用意する必要がなく、単品のみで作動するようになっている。そばを通過したものを感知して振り子がブォン!と旋回する。
ライトセーバーは作動するとビームの剣を高速で薙ぎ払う。強し。ナイフ発射装置は超高速でナイフを飛ばす。
ライトセーバーとナイフ発射装置は、作動させるためのトリガーを用意しなくてはならないので、トリガーとなるレーザートリップワイヤーと組み合わせてみた。プログラミング内容は”レーザートリップワイヤーがオンになったとき“という入力動作と”トラップが作動する“という命令をリンクさせるだけ。”レーザートリップワイヤーがオンになったとき”とは何かがレーザーに触れたとき、を表す。この2つをリンクさせればレーザーに触れた瞬間トラップが作動するようになる。

ところが敵だけではなく、自分がレーザーに触れてしまった場合にもトラップは作動してしまう。その場合もちろん自分もダメージを負う。このままでは移動に難が生じるので、必要に応じてレーザーを点けたり消したりできるようにしたい。
適当なところに付けたボタンを押すたびにそれが実行されるようにプログラミングしてみる。

まずボタンを押したときという入力動作とレーザートリップワイヤー Is onのVariable(変数)を用意。それら2つと、レーザートリップワイヤーのターン オンターン オフという命令の間にブランチ(分岐)を挟む。前者2つをブランチと繋げたら、If Trueをターン オフに、If Falseをターン オンに繋げる。

これでボタンを押すたびにレーザートリップワイヤーのレーザーがオン・オフするようになった。さらにドアも連動するよう加えたらもっと利便性が高まりそうだ。外に出る時ドアを開けると同時にレーザーを消したりとか。今度トライしてみよう。

それにしても私自身プログラミングは初心者なわけだが、文字で説明しようとするとどうにも上手く相応しい日本語が出てこない。なんとなく直感的にいけるような感じにはなっているものの、今後のプレイの高度化のためにもいずれどこかのタイミングで一通り日本語に変換して分かりやすくまとめてみたほうが良さそうだ。

□自動生産工場の幕開け

スチールインゴットが大量に必要になってきた。全てのクラフトの基本材料といっても過言ではないほどとにかく要るのだ。そこで原材料となる鉄鉱石の採掘からスチールインゴット生産までのプロセスを自動化させ、プレイの効率化を目指す。上のスクショに写ってるのは鉄鉱石を溶かしインゴットを生産する溶鉱炉。多数のインゴットを作るためには大量の鉄鉱石を1つずつ投入していかなければならない。これを手動で続けるのは大変。というわけで…鉄鉱石の採掘ポイントに設置してある自動採掘機と溶鉱炉をベルトコンベアで繋いでみた。これにより自動採掘された鉄鉱石がベルトコンベア上を流れ、溶鉱炉内に落ちていくのだ。そして溶鉱炉のインゴットが出てくる出口に収納ボックスを置いておけば、出てきたインゴットが自動で収納されていく。これでスチールインゴットの自動生産が可能になったわけだ。
追記上記の組み合わせの場合ベルトコンベアを間に挟む必要はなく、自動採掘機と溶鉱炉を直接繋げるだけで同じ効果が得られます。あとになって気づきました!

だが問題もある。自動採掘機にはバッテリー、溶鉱炉には燃料が必須。ただ寝ながら待っているわけにはいかないのだ。そして拠点から離れているという不便さ。拠点に届くまでベルトコンベアを足そうにもこれまたクラフト材料が大量に必要になってくる。こういったことに対処していく中で閃いたアイディアをプログラミングで形にしていけるっていうのが素晴らしい。楽しくなってきましたよ!

2020/3/18追記】オブジェを不安定に配置しちゃったりすると挙動が乱れ、付近のオブジェの位置がズレまくる現象が頻発。組み上げた生産ラインが全部パァになってしまう出来事が何度かあったのでしばらく寝かします。改善希望!