7 Billion Humans
ゲームの説明
ゲーム画面1 にあるコマンドを 2 の部分にドラッグするとコマンドを組むことができます。1 をダブルクリックで追加することもできます。 3 のタブをクリックするとコマンド領域の切り替えができます。 1 : キャラクター 2 : mem に記憶したもの コマンドを実行しているときにキャラクターをクリックすると状態を確認できます。 「mem」の部分については序盤は表示されません。ゲームをある程度進めて使えるコマンドが増えると表示されます。 1 : 行動の再生 / 一時停止 2 : 行動を中止する 3 : コマ送り 4 : 再生速度の調整
1 : コマンド 2 : 組んだコマンド 3 : 切り替え用タブコマンドの保存組んだコマンドは3つまで保存できます。コマンドを組む領域はタブで切り替えることができます。 行動時間短縮用とかコマンド数節約用とか分けて保存できるので、リトライするときに便利です。
失敗の条件クリア条件を満たさずに行動を完了する してはいけないと示されている行動をする クリア前に全員死亡する 行動完了までに長時間かかる クリア後の行動時間調査で失格する 確認できているのは上の5つです。 全員死亡についてはクリア条件が全員死亡の場合を除きます。 長時間かかると怒られて失敗になることがあるのですが、具体的にどれくらいの時間なのかは分からないです。12倍速で2分経つと怒られるので、1倍速で20分くらいかもしれないです。 行動時間の調査は、プレイヤーがコマンドを組むのにかかった時間は関係ないです。
クリア時の結果クリア時に結果が表示されます。コマンド数は単純にそのままですが、行動時間の調査は少し分かりにくいです。 行動時間については、プレイヤーが組んだコマンドで25回テストして平均時間が計算されます。その平均時間の50%を超えるものがあると失格するみたいです。例えば、平均時間が100秒だったときは、25回のうち1回でも151秒以上のときがあると失格するようです。また、失敗しているものがあったときも失格するみたいです。 この調査がどういう意味なのかですが、"運任せ" を認めないようにするためかもしれないです。 例えば、社員1人とパネル2つがあって、パネルの数字は開始時にランダムで決まるとします。クリア条件は "小さい数字のほうを持って穴に落ちる" だとします。 この場合、if を使って2つの数字を比較する → 持つ → 落ちる、という流れになりますが、2つのうち数字が小さいほうというのは(同じ数字にはならないとして)半々です。そのため、数字を比較せずにどちらかを持って落ちる、というのを繰り返せばいつかはクリアできます。これはクリア時間最速になりますが失敗することもあります。 そういうことがないかどうかを、クリア後に実際にゲーム側がテストして判断しているのかなと思います。 あまりに運任せなコマンドの組み方をしなければ、ある程度は時間がかっても大丈夫だし、たくさんコマンドを使っても大丈夫です。コマンド数は200、行動時間は600秒でも大丈夫でした。 いわゆる "65535 問題" みたいなものもあるかもしれないので(ファミコン世代です)、実際には処理の問題として上限があるかもしれないですが、上限があったとしても、普通にプレイするのであれば問題ないと思います。
コマンド数と行動時間の関係"コマンドが少ない = 行動時間が短い" ではないです。例えば、if を使うとコマンド数を節約できる場合もあるのですが、if を使わず素直にコマンドを並べたほうが行動時間を短縮できるときがあります。 5歩進んでパネルを持ち上げるというのを実現する方法として、step を5つ並べるのと if で分岐させるのを比べると、行動時間は step を並べたほうが短いです。if は分岐の判断で処理時間が発生するので、判断をするたびに立ち止まることになるからです。 ただ、step を並べるといった方法は中盤を過ぎると凄まじいコマンド数になって入力が面倒になってしまうので、その辺のバランスを取るのに悩むことになると思います。 大きく時間を短縮するには発想を変える必要がありますが、もう少し時間を短縮したいといった場合は、コマンド数は増えますが if の無駄をチェックするといいかもしれません。 下の画像は32年目でキャラクター1人1人に対して単純にコマンドを追加していった場合です。コマンド数は200になります。31秒でクリアできますが凄く面倒です。
if コマンドif は「もし、○○が××なら△△する」というコマンドです。 if で指定した条件を満たしているかいないかをキャラクターが判断して、実行するコマンドを自動で選んでくれます。 このコマンドを使うと、例えば、立っている場所にパネルがなければ進んで、パネルがあるなら持ち上げる、ということを判断して行動してくれます。 if は大事なコマンドだと思います。クリアするためだけではなく、コマンド数の節約や、if と jump で分岐先だけを指定して行動用のコマンドは別に用意しておくという使い方もできると思います。 プログラムとかを少しでも習ったことがあれば把握できるとは思いますが、もし意味が分からないときは時間をかけて色々と試して覚えるしかない気がします。
mem の初期値ゲームを進めると set コマンドなどで mem に何かを記憶させることができるようになります。 この mem の初期値(まだ指定されていない状態)は「0」です。「何も無い」ではありません。直接「何も無い」を記憶させるか、「方向」によって何もない床を記憶させたときは「何も無い」になります。 「0」と「何も無い」は違うものと判断されます。
nearest コマンド指定したもののうちで、キャラクターから近い位置にあるものを mem に記憶させます。 "mem1=nearest (穴)" にして次のコマンドを "step (mem1)" にすれば穴に落ちます。 "mem1=nearest (パネル)" とすると近い距離にあるパネルを mem1 に記憶させることができるので、次のコマンドを "pickup (mem1)" にすれば、step で移動させなくても、そのパネルの位置まで移動して持ち上げてくれます。移動させたいだけなら "step (mem1)" です。 複数のパネルがキャラクターから同じ距離にある場合に、どの方向のパネルがセットされるかの優先順位は 足元 上 右 左 下 右上 左上 右下 左下 みたいです。斜め移動を含む1歩先の距離の場合です。2歩以上の距離がある場合は未確認です。