shapezをやり狂う

シェイプの組み立てラインを建設するゲームです。

原料は色の3原色 (なぜか光の3原色) 2色ずつを合わせた中間色3色と全部を合わせた白と無色で合計8種と、丸と四角と風車と星 (4角) と「空白」の形の組み合わせで注文通りのシェイプを作って世界の中央にあるハブにコンベアで納品することです。資源は無限で電力は不要。

指定された形と色の1/4サイズを4つ組んで1つのシェイプを作ります。レベルが上がるとその形が4レイヤまで積みあがります。コンベア、合流/分割機、トンネル、採掘機、切断機、回転機、積層機、染色機、混色機、ゴミ箱などがだんだん解放されてくるのでうまく組み合わせてラインを作ります。

4レイヤに分かれた注文

最初は注文ごとにラインを作っていくのですが論理回路が解放されてからは全自動工場にチャレンジすることになります。

最終生産物の情報を中央のハブからしか得られず、それをレイヤごとに分割し、回転しながら右上の角の形と色 (この場所の情報しか取れない) を取り出して比較機とフィルタを駆使して判断します。コンベアを流れているシェイプの情報は得られないため比較元の情報と比較先の情報をうまく持ってくるのが大変です。一致すると直進させ、不一致の場合は脇に流すフィルタが1/0以外に形そのものや色そのものも比較できることに気付くまでは、センサーがないと実現は無理だと思ってしまいました。

1/4のシェイプはレベルが上がるとランダムで空白が混じるようになるので大変です。私は昔から慣れるまでは机上で徹底的に設計するのではなくマシンデバッグする主義なので、とりあえず動かして空白で止まってからシェイプ情報が想定外のnulになっているのでNOTを2回噛ませて1/0に変換してとか、最初の1/4が空白の場合は次の1/4は積層機をスキップしてとか、レイヤ全体が無色の場合は染色機をスキップしてとか、対症療法で回路とラインを変形していきます。

一通り動くようになったら再設計してコンパクトに仕上げます。回路レイヤは同じ色のラインを隣り合わせるとショートするため2色しかないラインをうまく使い素子をつないで回路を作ります。undoがないので一度大きなミスをしたら一気にリカバリーして休憩に入ります。放置したら二度と戻せなくなりそう。

仕上げている最中も自動化ラインは動き続けているのでどんどんレベルが進んでいきます。途中からは納品の速度が毎秒N個という感じで増えていくので、ハブ単面の4ラインを束ねてバッファリングして一気に流して、速度が限界に近づくともう1面の4ラインも追加して同期をとって8ライン一気に流してという感じです。1ラインの速度は毎秒20まで向上しているため、160個/秒まで耐えられます。

動いているところを見ながら新しいアイディアを思いついて改良したりしていましたが、そろそろ飽きてきたかな。現在レベル471です。7色を作る生産ラインの必要な個所だけに3原色を流す回路が小さくできないのが目下の悩みです。