Switch 購入時から遊んでみたかったゲームなのだけど、やっと購入して遊んでみた。
僕の周囲では評判の良いゲーム。
これがまぁ、変わったゲームではある。
課題を出されるのでアセンブラでプログラムを作る、というゲームだ。
…ゲームなのか? まぁ、楽しいのだけど、人を選ぶのは間違いない。
表面上は、小さな人がチョコマカと動き回ったりして、ゲームらしくなっている。
でも、これはあくまでも飾り。ゲームの本質はそこではない。
ゲーム内容的には純粋にプログラムをするだけだし、そのプログラムも「入力データを8倍して出力せよ」とか、「0 を区切りとする入力データ列の合計を出力せよ」とか、いかにもプログラム演習っぽい物。
使用言語はアセンブラ。それも、1950年代くらいの、飛び切り古いアセンブラだと思っていい。
アキュムレータ(レジスタ)は1つだけ。
条件分岐は「0」と「負」しかない。
メモリはあるけど、配列として使えない。
スタックなんてないからサブルーチンも呼び出せない。
いや、1950年代の計算機は、「計算機」なので掛け算や割り算の機能を持っている。
でも、このゲームではそれすらない。足し算引き算だけ。
ちなみに「直値」という概念もない。扱えるデータは、すべてあらかじめメモリに入っているもののみ。
#翌日追記
途中のステージから命令が追加され、間接アドレッシングでメモリを配列として使えるようになりました。
後の部分で書いてあるのだけど、この文章書いた時点で最後までゲームを終わらせていなかったための勘違い。
もっとも、序盤のステージでは配列を使いたくても使えない、というのは事実。
しかし、この厳しすぎる制約の中でプログラムをする、というのが、適度に頭を使う心地よいものなのだ。
プログラムをするゲームというよりは、ちょっと複雑なパズルゲームだと言って良いだろう。
「A ÷ B の余りを求めよ」と言われたら、普通のプログラム言語なら1行で終わってしまう。
でも、こんなに制約が多いアセンブラだと、ちょっと工夫しないといけない。
そもそも割り算命令なんてないのだ。割り算って何だっけ? ってところから考える必要がある。
ゲーム的には、入力に対して正しい出力が得られれば「成功」となる。
各ステージは「成功」すれば次に進めるのだけど、さらに「十分小さいプログラム」と「十分速いプログラム」を作れたか、ということも評価される。
これがまた、アセンブラでゲームを作っているようで楽しい。
ゲームとしては、入力されるデータは毎回変わる。
そのため、入力を「決め打ち」して高速化するような姑息な手段はとれない。
その一方で、データはランダムに決められているわけではなく、非常に巧妙に作られている。
「0区切りデータの合計」であれば、あえてデータがない「nullデータ列」が入っていたりする。
データが無いから合計は 0 なのだけど、ちゃんとプログラムを組んでいないとおかしな出力を出してしまい「失敗」となる。
デバッグもプログラムの楽しさだと思うのだけど、わざとバグが出やすい課題とデータを用意してあるのだ。
昨日ダウンロードして遊び始めたところなので、まだ全部は遊んでいない。
昨日は、たった3つのデータをソートするプログラムで頭を悩まし、一端プレイを終了した。
ソートプログラムって、配列を前提に考えてしまうもので、配列がない環境でのアルゴリズムが思いつかなかった。
その後もお風呂に入りながら考えたり、家事をしながら考えたりして、「今晩試してみよう」というアルゴリズムは思いついている。
ゲームを離れている時間まで考え続けてしまうのだから、ゲームとしてはかなり成功していると思う。
僭越ながら、僕も過去に Z80 vs 6502 というページを作ったことがある。
Z80 と 6502 で、よくあるプログラムを「課題」として、高速なプログラムを作る競争で、結構盛り上がった。
もっとも、最初から競争を意図していたのではない。
僕がプログラムを作って公開したら、多くの人が改良案を送ってきてくれたので競争になってしまっただけ。
でもね、多くの人が参加してくれたというのは、つまり、「アセンブラの最適化は楽しい」ってことに他ならない。
そんなの、プログラマの中でもほんの一部の上級者だけが理解できる楽しみだと思っていた。
でも、それを多くの人に届けようというのがこのゲーム。
プログラム経験があったほうがすぐに楽しめるとは思うけど、最初は簡単な課題からなので、経験が無くても理解できる。
よくわからない時は、ゲーム中で「上司」に相談すると、回答例を教えてくれる。
(プログラムの正解例ではなく、こんな入力があったら、こんな出力になればいい、と教えてくれる)
足し算だけで「40倍するプログラムを作れ」というのは、アセンブラ経験者じゃないと悩むかもしれない。
同じものを足せば2倍になる。2回繰り返せば4倍になるし、3回繰り返せば8倍になる。
また、4倍になったものに元のデータを加えれば5倍になる。
8倍と5倍が作れるのだから、8*5で40倍も作り出せる。
フィボナッチ数列を作れ、に至っては、言っていることもわからないかもしれない。
一応簡単な説明はゲーム中にあるのだけど、フィボナッチ数列とは何か、と調べることも面白いだろう。
プログラムを組むって、対象を理解することだから。ゲームとはいえ、ゲーム機の前を離れて調査することも楽しみのうち。
おまけ的な要素だけど、このゲームは「ブラック企業」が舞台になっている。
ちょこまかと画面上を動く小さな人は、CPU でいえば「アキュムレータ」だ。
データをどうにかする単純作業を、延々と繰り返す社畜。
課題は上司から出されるし、よくわからない時は上司に聞けばいい。
だけど、この上司の受け答えがまた、ブラック企業感を出している。
英語が元のゲームのはずなのに「忖度」とか「プレミアムフライデー」とか、時事ネタもたくさん入っている。
この会話がいちいち面白い。
さらに、時々ストーリー進行があり、企業の外ではなにかとんでもないことが起きている、とわかってくる。
ブラック企業過ぎて、主人公は何年も本社ビルから外に出ていないようなのだ。
だから、外の世界がどうなっていても、会社で楽しく働いていられる。
「グーの惑星」を作った会社なのだけど、あれも楽しかった。
(Wii 版が発売されてすぐに買って遊んだ)
あちらも、少し陰のある独特の世界観だった。
今作も同じような雰囲気。
まぁ、このセンスも、好き嫌いがはっきり分かれそうなところではあるのだけど。
いろいろな意味で、すごく面白いのだけど人を選びそうなゲームです。
同じテーマの日記(最近の一覧)
関連ページ
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |