夜中に前へ

育児、思考実験、書評、ゲームレビュー、あと雑記

並列処理にプロセス間通信…傑作プログラミング系パズルの続編『セブン・ビリオン・ヒューマンズ』レビュー

こんばんは、夜中たわしです。

あの『ヒューマン・リソース・マシーン』の続編が出ましたよ。

その名も『セブン・ビリオン・ヒューマンズ』。ニンテンドースイッチとSteamで配信中です。

f:id:tawashix:20181121234359j:plain

タイトルから匂わせる通り、70億人全員に仕事をくれるみたいです。

f:id:tawashix:20181121234415j:plain f:id:tawashix:20181121234418j:plain f:id:tawashix:20181121234421j:plain f:id:tawashix:20181121234425j:plain f:id:tawashix:20181121234428j:plain

本作はブラックな世界観で本格的なプログラミング系パズルを楽しめる、最高なシリーズの2作目です。たぶん前作から遊んだほうが遊びやすいので、未プレイの方はそちらのレビューをご覧ください。ガッツリ書いてます。

前作は低級言語チックでしたが、本作はマルチプロセスの高級言語……っぽいやつ。

四則演算での掛け算割り算はもちろん、条件を細かく指定できるif文も使えて、さらにはプロセス間通信みたいなのまで実装されていますよ。

要は機能が増えてできる処理の幅が増えた(かわりに要求も複雑になった)ってところですね。

前作から入った場合「こんなに機能使っていいんですか!!?」となり、逆に本作を遊んでから前作に挑戦すると「え? 掛け算ってもしかして足し算の繰り返しで実装しなきゃならんの? マジ??」ってなります。

そう考えると、どっちから遊んでも面白いかもしれません。いずれも段階的にコマンドの使い方がわかるようステージが構成されているので、大丈夫。

なんだか謎なPVもどうぞ。

クリアしてから見たけど、最後すごいこと言ってんなこれ。

ゲーム内容

f:id:tawashix:20181121234657j:plain

前作と同じく、ステージクリア型のパズルゲームです。ステージ数は前作の36ステージから64ステージに大幅増量。1ステージか1イベントで1年経過するため、最終ステージにおける主人公は勤続69年! 働きすぎだ!!

今作の一番の特徴は、複数人を1つのプログラムで動かすって部分。社員ごとに別の処理を書きたい場合も多々ありますが、関数なんて概念は当然ないので、一気に書くほかないです。

f:id:tawashix:20181121234710j:plain

たとえばこのステージは、パネルの位置によって処理を分岐させて、右に行く社員と左に行く社員の処理を分ける必要あり。簡単ですね。今後必須の技です。

ちなみ上記ステージ、パネルを落とせという意味かと思いきや、本人が穴に飛び込めって意味です。穴の先がどうなっているかの説明はありません……。

このように処理を分けるのは必須で、その気になれば全社員に個人向けスペシャル処理を書くことも可能(なステージもある)。けどめちゃくちゃ面倒なんで、おのずと処理の共通化に尽力することになります。

f:id:tawashix:20181121234802j:plain

そうそう、クリア時には結果判定が行われるんですが、これがなかなか楽しい。

行数目標とスピード目標ってのがあって、これを達成してみるのもなかなか骨があって面白いんですが、ランダムテストが走ってグラフが伸びていく様子を見てるだけでも気持ちいいです。

新コマンド・機能

いくつか今作での新たなコマンドや機能を紹介しましょう。

if文

まずは見てくださいよこのif文!

f:id:tawashix:20181121234819j:plain f:id:tawashix:20181121234822j:plain

前作をプレイしていると度肝を抜かれる高機能。もう何でもできるぞ!

andやorで連結できて、いくら連結しても1ステップ扱いなんで、ものすごいif文を作るのが行数目標達成の鍵。度を越すとかなり見づらくなるけど。

プロセス間通信

f:id:tawashix:20181121234906j:plain

tellとlisten……これさえあれば、社員同士の密な連携が可能!

f:id:tawashix:20181121234914j:plain

tellは選んだ言葉を全体あるいは方向を指定して伝えます。対になるlistenは指定の言葉が聞こえるまで処理を待機。

つまりある処理が終わり次第、別の社員たちに別の処理をさせるというのが簡単に実現できます。

これは完全にプロセス間通信!(スレッド間通信かもしれないけど、プロセス扱いしときましょう。人間だし……)

メモリ機能

前作で数字を記憶したいときは、その辺に数字の書いたパネルを置いてましたが……

f:id:tawashix:20181121235003j:plain

なんと社員ごとに4つまでモノを記憶できるようになりました。革命的ですね。

これ数値を覚えるだけじゃなく、「近くのパネル」や「近くの穴」なんかを記憶させて、そこに向かわせることもできますよ。

そう上記の画面からわかると思いますが、社員ごとにメモリの内容を見ながらステップ実行ができます。ただし前作にあった、逆回しにステップ実行する機能はなくなったみたい。さすがに複数人に対応するのは厳しかったか?

ちなみにプログラム開始前に社員に触れると、各々何かコメントをくれます。

f:id:tawashix:20181121235049j:plain f:id:tawashix:20181121235052j:plain

何を言ってるんだこいつらは。

ForEachDir

f:id:tawashix:20181121235103j:plain

「for each direction」の略で、周囲8方向をスキャンするコマンド。これゲーム内では説明不足で難しいので、ちょっと詳しく書いておくと……

周囲8マスのうち指定したマスについて、すべてスキャンするまで繰り返し読み込み、スキャンを終えるとForEachDirのブロックを抜けます。

スキャンの順序は左上から始まって時計回りで、スキャンした内容は都度指定したメモリに読み込まれます。ステップ実行しながらメモリ内を見れば分かりやすいので、一度確認してみるといいかと。

f:id:tawashix:20181121235112j:plain

全部読み込んで加算した結果を書き込むなら、こんな感じ。

たぶんこれ、普通のfor文がないから分かりにくいんだよなあ……。


これだけコマンドが出てくるとゾッとするかもしれないですが、一気に出てくるわけじゃないんで心配ご無用です。

排他処理も必要

複数プロセス(社員)を同時に動かすと発生する問題。それは処理の競合です。

f:id:tawashix:20181121235156j:plain

各々が好き勝手にパネルを運んでいると、同時に同じパネルを取ろうとしたり、置こうとした箇所にパネルが置かれていたりと処理が破綻する場合があります。

そう、知らん間に排他処理の重要性について学ばされているのです。もちろん排他をお手軽に実現する仕組み(ミューテックスなど)はありません。

対策としては、tellとlistenを使って処理中にブロックするガチなものから、「失敗時にリカバリーの処理を入れる」「タイミングをずらして回避させる」「ランダム性により偶然うまくいくのを祈る」などの作戦があります。

とりあえず祈ってもいいでしょう。

f:id:tawashix:20181121235258j:plain

大丈夫、半分以上のテストケースでOKを出せばクリア扱いで、次のステージに行けるんで! 実際の仕事では許されませんが!!

f:id:tawashix:20181121235313j:plain f:id:tawashix:20181121235319j:plain

完璧を目指したい場合は、失敗するケースを用意してくれるのでバグが取りやすいです。これありがたいなあ。

その他スクリーンショット

最後に、印象に残った画像を紹介するコーナーです。

f:id:tawashix:20181121235337j:plain

爆発する!?

f:id:tawashix:20181121235344j:plain

爆発、好きなんだなあ。私も好きです。

f:id:tawashix:20181121235402j:plain

物騒な話になってきた。

f:id:tawashix:20181121235353j:plain

なんなんだこのフロアは。しかも作業内容はパネルをバケツリレーしてシュレッダーにかけることだし……。

f:id:tawashix:20181121235415j:plain

すごい問題が出てきた。

おわりに

そうそう、前作同様、サントラが無償配布されていてとってもありがたい。

Tomorrow Corporation : 7 Billion Humans Soundtrack

作業用BGMにいいですよ。なんせプログラミングしてる時に流れてた曲なんですもん。


前作と比べてかなりパワーアップしていて、十分楽しめました。不満点は細かな操作がし辛いことと、[else if]が存在しないことくらい。

指示した通りに社員たちが動くのは楽しいし、全員が協調して目的を達成すると本当に嬉しい。

プログラミングの楽しさのエッセンスが詰まっていて、本物のプログラミングでは難しめの技術もパズルとして遊びながらなんとなく習得できるので、おすすめです。

関連記事

プログラミング系パズルゲーム『ヒューマン・リソース・マシーン』がすごい!(クリア後感想) - 夜中に前へ

中毒性の高いAI構築対戦ゲーム『マリオネットAI』レビュー - 夜中に前へ

【感想】オープンワールド型パズルゲーム『The Witness』に衝撃を受けた(PS4/Steam/スマホ) - 夜中に前へ

スポンサーリンク