2016年11月25日 00:00
いきなりだが、筆者が知る限りの“変態的パズルゲーム”は「SpaceChem」、「Infinifactory」、「TIS-100」の3タイトルだ。
「SpaceChem」は、いくつかの命令と回路を組み合わせて難解な問題を解くもの。「Infinifactory」は3D版の「SpaceChem」となっており、3D空間で様々な種類のブロックを組み合わせてやはり難解な問題を解いていく。そして「TIS-100」は、架空のコンピューター「TIS-100」にアセンブリ言語を入力して“問題を解く”パズルゲームとなっている。
いずれもパズルと言うには複雑怪奇なものばかりだが……偶然にも、これらは同じアメリカのデベロッパー、Zachtronicsの作品である。Zachtronicsはパズルゲームを中心に数々のタイトルを開発しており、作品を追うごとにゲーム離れしたゲーム画面になっていくという点でも注目のデベロッパーと言える。この変態的(褒め言葉である)パズルゲームデベロッパーの新作タイトル「SHENZHEN I/O」が、11月18日に正式にリリースされた。
この「SHENZHEN I/O」の面白さは、難解であるがゆえにその達成感も大きく感じられることにある。プレーヤーが挑むのは、マイコンやアセンブリ言語を駆使して指定の装置を作っていく“エンジニアの仕事”。架空とはいえマイコンもアセンブリ言語も本格的なため明らかに人を選ぶゲームだが、実際のところはそれらの知識が皆無でもプレイでき、一旦その壁を越えればどんどんハマっていく魅力がある。
以下ではその内容を紹介していくが、その魅力を感じていただき、新たな中毒者が生まれることを期待したい。
パーツを組み合わせ、プログラムを書く。詳細はマニュアルを読め!
「SHENZHEN I/O」はZachtronicsが開発したパズルゲーム……ということになっているが、実際のところは“仮想のデバイスを作成するシミュレーター”と言った方がしっくり来る。
プレーヤーは中国深センにあるエレクトロニクス企業「Shenzhen Longteng Electronics Co., Ltd.」の社員として、架空のデバイスを作成することになる。キャッチコピーは「BUILD CIRCUITS.WRITE CODE.RTFM.(回路を組み、コード(プログラム)を書き、マニュアルを読め!)」。
本作には複数のステージが用意されており、それぞれに「こういう役割をするデバイスを作って欲しい」という目的が用意されている。
この目的を達成するために、マイコンやメモリといったパーツを組み合わせて回路を組み、マイコンには架空のアセンブリ言語でプログラムを書き、ステージをクリアしていくという内容になっている。
“プログラミング”という言葉を聞くと身構えてしまうかもしれないが、使用する命令の数は意外と少なく、「データ(値)を受け取る」、「データを加工する」、「データの内容を見て処理を分岐させる」……おおまかに言ってしまうと、このくらいの数だ。
また本作には30ページ以上ある英語のPDFマニュアルが付属しており、ここにすべての仕様が書いてあるので、この内容をもとにマイコンの設定やプログラムを構成していくこととなる。詳細な内容が知りたければ、マニュアルに全て書いてあるので頑張って読んでいただきたい……とすると記事が終わってしまうので、具体的な解法がどんなものか、一部になるが本記事でも紹介したいと思う。
解き方を閃いてしまえば簡単!? 内容を基板とプログラムに落とし込もう
それではゲームシステムについてご紹介したい。まずは、各ステージごとに目的が表示されている。例えば最初のステージは「ダミーの監視カメラについているLEDをそれっぽく発光させる」という電子機器を作るのが目的だ。
目的を把握したら、VERIFICATION(検証)というタブをクリックし、グラフを表示させる。ここに書いてある信号と同じ信号を出力するデバイスを作るのが目的だ。
この問題において、グラフが示しているのは、「『active』(赤LED)と『network』(青LED)の信号を一定時間0(消灯)に、別の一定時間に信号を100(点灯)にする」という指示を組み合わせたもので、コード側でこの波形を再現できれば良いことがわかる。
問題の方を見てみると、「active」の方はコードを完成しているので、「network」の部分だけを作成すれば良い。まずは問題を理解して、それに対する考えをコードとしてゲーム内に落としこむ、というのがクリアへのステップになる。
問題では続いて、「network」にマイコンを配置してプログラムを入力していく。具体的には、以下のようなものだ。
信号を0にして、4ステップ分送る
mov 0 p0
slp 4
これは「p0というポート(出口)に0という値を設定(mov)し、4ステップ分固定して出力(slp)する」という表現だ。これが、グラフの谷の部分にあたる。0という値がグラフの線の高さを、4ステップというのは横の長さを意味している。
その下には、グラフの山の部分を作るため、以下のようなコードを入れる。
信号を100にする
mov 100 p0
slp 2
上のブロックと見比べてみるとわかるが、p0の値を100にして、実行分を2ステップにしただけだ。そして、「network」の指示にはもう1つ谷と山があるので、以下のように入力する。
信号を0にしたあと、また100にする
mov 0 p0
slp 1
mov 100 p0
slp 1
といった具合に続けていって、グラフを再現していく。特に指定をしなければ、プログラムは1番下の行まで実行すると最初に戻ってループするので、ここまで入力できれば、最初のステージはクリアとなる。
チュートリアルはないが自分で調べて問題を解くのが最高に楽しい!
さて、1ステージ目の攻略方法を具体的に紹介してみたが、「『mov』や『slp』、『p0』などがいきなり出てきて、よくわからない」という方もいるかと思う。筆者も最初はまったくわからなかった。
しかし本作、端的に言えば「安心してください、全部マニュアルに書いてありますよ」ということに尽きる。ゲーム内もチュートリアルは一切なし。強いて言えば最初の問題の前任者が途中まで書き残したコードがあるくらいだ。
本作は、この突き放し具合が最高に面白い。英語で書いてある30ページ強のマニュアル(中には中国のビサ申請書など関係ないのもある)を読み解き、わからないところがありながらも辞書で調べたり、ゲーム内で実際に入力してみたりして、自分なりに解決し、問題を解く――これが本作の楽しみだ。
ちなみにSteamでは「コミュニティガイド」というユーザーがガイドを作って公開する機能があり、本作に登場するモジュールや、言語の仕様について日本語訳を作成し公開してくださっている方がいる。筆者も大いに参考にさせていただいた。著者のhimatchi氏に感謝したい。
ゲームを進めていくと、指示が複雑になり、解き方がまったくわからないステージも出てくる。プログラムを1行ずつ実行して動きを確かめる方法などで試行錯誤していると、これが意外と解けてしまったりする。絶対解けないと思った問題が解けた時の快感は言葉に表現できないほどだ。
「問題が解けた? おめでとう、次はどれだけ“スマート”にできるかな?」
さて、マニュアルとにらめっこし、自分なりの解き方でステージをクリアできたとしよう。問題が難しければ難しいほど、大きな達成感を感じ、余韻にひたることができる。
余韻に浸っているプレーヤーに新たな挑戦を叩きつけるように、そのとき画面には「機器のコスト」、「電力消費量」、「コードの長さ」が表示される。
複数のモジュールが使用されていれば機器のコストは上昇するし、多くの命令を実行すると電力消費量が、冗長な表現をするとコードは長くなっていく。
少ないモジュール数で、少ない命令数で、シンプルなコードを書く。少しでも“スマート”な方法で問題を解決できるかを突き詰める、それがエンジニアのプライドだ。
画面にはこれみよがしに他のプレーヤーがどのくらいの数字だったか、そして「あなたのフレンドはこの数値で問題を解きましたよ」という表が表示される。
フレンドや他のプレーヤーに負けたくない。クリアしたステージでも、もっとシンプルに早く攻略できないか、“スマート”という魔性の魅力を持った言葉に引きこまれ、さらに頭を悩ましていくことになる……。
まさに“変態的”パズルゲーム、悩みと快感のコンボが気持ち良い!
問題を解くためにプログラムを組む必要があるなど、本作はパズルゲームの中でも断トツに“変態的”な作品だ。だがパズルゲームというものは、難易度の高さに、気持ちよさが比例する。この変態的な作品は実感として、間違いなく最高の快感を得ることができるだろう。
さらに1度解いた問題でも、もっとスマートに問題が解けないか、ということを考えだすとどこまでも遊べるほど奥が深い作品だ。
プログラム経験がなくても「マニュアルを読めば」なんとかなる。実際に筆者もアセンブリ言語など触ったことがない。さすがに「HARMONIC MAXIMIZATION ALOGORITHM」という聞いたこともないような単語が出てきたときは問題を諦めそうになったが、これもマニュアルに書いてあった。
この魔性の魅力を持った変態的パズルゲーム「SHENZHEN I/O」、プレイサイクルも解き方も良くある「パズルゲーム」とは一線を画するものなので最初は戸惑うかもしれないが、その最初の一歩の敷居を乗り越えてしまえば“解けない時の最大の悩み”と“解けた時の最高の快感”を感じることができる。
特にこれまでのいわゆる「パズルゲーム」に満足できないというストイックな方や、挑戦する壁が高いほど燃える熱心なゲームプレーヤーは、たとえプログラミング知識が0だとしても、本作をプレイすることでパズルゲームの新たな扉が開くことを感じていただけると思う。価格は1,480円と安価なので、気になった方はぜひ(マニュアルを読んで)楽しんでいただきたい。