SpaceChem

パズルゲームだがストーリーがある。
難易度が上昇していったり、ロケーションが変更されて新しい追加要素が出てきたりする理由付けに一役買っている。
そして思わぬ方向に進み始めるので、簡素ながらパズル以外にも楽しめる。まあタイトルやムービーに出てくるアートからしてIlluminatiなので、なんかありそうだと思えるのだが。

 

以下にあるレベルの解と結果を提示していくが、どういう理屈で駆動しているのか理解せずにコピーしても学習出来ない点もプログラムと同じなので、まだやっていないけれどこれからやるかもという人も見ても問題ないと思う。そもそもサムネイルの段階では小さすぎて分からないはずだが。
また、Cycle、Reactor、Symbolのいずれかの要素の最小値を求めるとなると、他の要素が増大する傾向が強いので、これらのうちのいずれかの最小を求めるといった限定的な条件でなければ最適解も存在しない。以下に提示する解以外にも無数の解き方は存在する(ReactorとCycleの最小値は両立出来る可能性が高いと思うけれど)。

 

イマイチな点。

各装置を繋ぐパイプの中が分子が一杯になって詰まった場合、それを出力していた装置は空きを待つ状態になる。このとき、出力先の装置がこれを消化して空きができるまで前の装置は出力することが出来ず停止してしまい、無駄な時間が生じるわけだ。
これを緩和してやるには、パイプを冗長にして一時的なプールを増やしてやらなくてはならないというのが、なんともエレガントではない。
さらに冗長にパイプを敷き詰めた上で、微妙に配線の仕方を変えるだけでCycle数が変化してしまうのが尚更厄介だ。

冗長な例。

SpaceChem-Redundant.jpgSpaceChem-RedundantResult.jpg

これは一見無駄な配線に見えるが、一直線に繋ぐと詰まってしまうため、このほうが高速なのである。

一方の無駄のない例。

SpaceChem-Straight.jpgSpaceChem-StraightResult.jpg

中央のパイプが赤玉で埋まってしまい、最初のReactorが度々停止状態に陥ってしまっている。

使用した回路例。

SpaceChem-Reactor1.jpgSpaceChem-Reactor2.jpg 

 

分子Aが25%、分子Bが75%の確率で同じ入力部から出てきたり、一旦分子を分解して出力した場合にψとωで出力数が異なっていたりと、入力される分子に偏りが生じるレベルになってくると、こういう状況を回避するのは難しい。

パイプの配線もパズルのうちと言えばそれまでなのだろうか?
いや、冗長にパイプを敷き詰めるところにゲーム性があるとは思えん。このゲームの肝となっているReactor内の回路の善し悪しを正しく評価することを阻害しているだろう。
パイプの配線によって生じているゲーム性というものは、各装置の出力を他の何らかの装置の入力として選んでアサイン出来るという点だろう。

では、どうすれば良かったのだろうか。
どの長さのパイプでも無尽蔵に分子の一時保存できるとなると、この後出てくるタンクの意味が無いし(先の通り、もう既に意味が無いが)、それを利用した効率の悪い回路がまかり通ってしまうだろう。
どの長さのパイプでも単一の分子の保存しか出来ない、または一切の保存が出来ない場合、これまで以上によくできた回路でない限り完全に詰まってしまって、身動きがとれずスタックしたような状態になってしまうたね、飛躍的に難易度が上昇してしまうだろう。
どの長さのパイプでも一定数の分子しか一時保存が出来ない。その定数はレベルによって変動させてもよい…あたりが落としどころだろうか。

 

なおこのレベルの場合、単一のReactorで最終的な出力する分子まで作ることができればこの「詰まり」は起こらないと予想しているのだが、それをやるとなると使用するシンボル数が激増して一つのReactorにひしめき、ぐちゃぐちゃな回路になることは明らかである。それは妙技ではあるが、これまたエレガントではないだろう。

 

SpaceChem-Improved1.jpgSpaceChem-Improved2.jpg

上記の2つのReactorを使う構成を維持したままSymbolを削りまくるとこうなった。シンプルな構成に落ち着いたが、こちらの方が多くのCycle数を要してしまう。

SpaceChem-ImprovedResult.jpg

最初のReactorの出力先を左によせて処理の周期を短くすると、次のReactorの処理する周期が異なり噛み合いが悪くなる。逆に出力先を右によせて周期を長くとってやると、結果的に次のReactorの処理する周期が短くなりすぎて、必要以上にOを捨てる処理が走り続けてしまいパイプ上にも殆ど分子が残らず、無駄が増えてしまうのである。その中間をとっても解決はせず。
Nが来た丁度のタイミングでOも同じようなタイミングで回路が回っていることが理想的であるのだが、いずれにせよそうはならない回路だということである。
難しいものである。


コメントを残す

メールアドレスが公開されることはありません。