このブログはプログラマーのオススメのゲームの話をする Advent Calendar 2019 - Adventarの15日目のブログです。
15日目のブログはゲームについて。数年ほど前Nintendo Switchが発売されて間もない頃にTwitterでちょこちょこ話題になっていた、ヒューマンリソースマシーンというゲームについて書きます。
以前シニアプログラミングもくもく会で少し話もしていたのですが、Switch版以外にも、Android版も、iOS版)もあるそうです。
プレイしている感じ、タッチ操作に最適化された部分がとても多い(コントローラ操作に最適化されていない部分がとても多い)ので、スマートフォンのゲームに抵抗がない人はスマートフォンでやったほうがいいかも*1
そもそも何をするゲームか
このゲームが何をするゲームかというと、それぞれのステージのお題に従ってブロックをトレイに並べ、ステージをクリアするタイプのパズルゲームです。
なにやらWikipediaに記事があったので、ざっくりとはこちらを見るといいかもしれない。
ブロックの内容が「数字を足す」とか「値をコピーする」とか、なにかとプログラミングっぽくて、「これはプログラマにウケる」みたいなことを言及している人が当時いたのを思い出しますが、まあ、概ねそのとおりだなあ という感じがします。
ただ、プログラミングをするだけじゃない
このゲームがScratchなどのようなプログラミング的な環境と違うのは、用意されている命令の少なさ。
数値演算については、(少なくとも自分のクリアしたステージ範囲内では)「数字を足す」と「数字を引く」しかなく、掛け算や引き算、べき乗などといった算術処理はできません。
ステージのお題が「2を3乗する」などであっても、それは数字の掛け算などではなく、足し算をうまくループして実現しなければならないのです。
この感じがとても、CPUっぽい
そこでタイトルに戻って、なんかこのゲームのステージをいくつかこなしていて、とても「CPUっぽい」と思いました。
もちろん最近のCPUはもうちょっと高度な命令を使えると思いますし、そもそも足し算や引き算より掛け算や割り算のほうが得意なはずですが…。
そういうことではなく、この「命令が過度に制限された中で、使える命令だけで処理を代替する」という感じが、ほかのプログラミング風味の環境以上にプログラミングしているなあ と感じました。
おかげですでにプログラミングの経験がある人であっても結構難しく、ギリギリクリアはできても、中盤をすぎるとステップ数やコードの実行効率を含めて満点(ちゃんと評価される)を取るのはなかなか難しい。
既存のプログラミング環境では、モジュール(や言語の基本仕様)がすでに代替していて、あえて知らなくてもいいところまでの深いアルゴリズムに対する理解が必要になるゲームだ と感じています。
まあそんなわけで
Switchだからといって(知っている限り)ネット関連機能などはなく、これといって特徴的な機能もありませんが、われこそはという人は遊んでみてはいかがでしょうか。
まあ、ちゃんとプログラミング理解している人にはそんなに難しくない内容かもしれませんが・・・。