この記事は 六間坂上 Advent Calendar 10日目 の記事です。
プログラミングゲームが増えてきた
こんにちは。ここのえです。
ここ2~3年のゲーム界隈を見てみると、プログラミングを主軸に置いたゲームが増えてきました。個人的には工場ゲーと同じぐらい興味のあるジャンルなので、積極的に漁っているのですが、巷ではあまり話題になることがありません。
実際昔に比べて、プログラミングに対するハードルは学習面・開発環境面といった各方面で下がっており、学習教材はYoutubeにもUdemyにでも溢れるように存在してますし、VSCodeやJetbrains IDEのような優秀なエディタも無料で使える時代です。直近ではChatGPTのような大規模LLMによってより触れやすい環境になったなあと思います。そういった面からも、「プログラミング」という一大コンテンツ(?)に親しむ人が多くなったことが、プログラミングを軸としたゲームが増えた一因なのではないか?と勝手に邪推しています。
ただゲーム内プログラミングは昔から存在していたものの、そのニッチな需要が故に日の目を浴びることがないのも事実です。軽く探してみましたが、この手のゲームをまとめられている記事はありませんでした……。
ということで、今回はゲーム内プログラミングがあるゲームを紹介していこうと思います。何気にこのブログで技術系の情報以外を取り上げるのは初かもしれません。まあQiitaとかZennじゃないしたまにはいいよね。
プログラミングゲームの定義
プログラミングゲーム……と一口に言っても、それに近しいジャンルもあるので中々境界を引くのが難しい側面があります。今回は「プログラミングがあるゲーム」を紹介したいので、以下の線引きを行いました。
プログラミング学習教材は取り扱わない
義務教育への導入によって、教育現場での需要が増している関係で各社からプログラミング学習のためのゲームがリリースされています。これは「プログラミングを学習する事」が目的であるので、学習教材であると見做して、今回はゲームとして取り扱いません。一例としては、任天堂の「ナビつき!つくってわかる はじめてのゲームプログラミング」などがあります。
シミュレータは除外
一応Steamのジャンル上では「ゲーム」になっているのですが、CRUMB Circuit Simulator というゲームがあります。ブレッドボード上の回路をシミュレートし、LCDに色々表示したり、ゲーム内でシミュレートされたArduinoで遊んだりできる珍妙なゲームなのですが、明確なクリア目標やミッション等は存在しない純粋なシミュレータになっています。こういったゲームも今回は扱いません。でもかなり面白いのでぜひ触ってみてください。
チューリング完全でもプログラミング要素がなければ除外
チューリング完全である非常に有名なゲームとして、Baba is You が挙げられます。チューリング完全なので頭のおかしい人たちが日々クリエイティブなものを生産しています。実質プログラミングゲームと言っても過言ではないのですが、あくまでBaba is Youの主軸はパズルゲームなので、レベルエディタはもはやゲームではないですし、このゲーム自体がノードベースでもコードベースでもないです。そのためこういったゲームも今回は除外します。
Modも取り扱わない
ゲーム内プログラミングといえば、まずMinecraftのModである Computer Craft を思い出す人が多いかもしれません。実際自分も相当遊んだのですが、ゲーム内でLuaを書いてボットを動かしマイクラの作業を自動化できます。BC/IC/TE等の工業modと組み合わせると遺憾なくパワーを発揮してくれるのでとても好きなのですが、Modはあくまでユーザが製作したものでゲーム自身ではないですし、そこまで取り上げるともう収拾がつかなくなるので今回は触れません。
本記事のゲーム紹介について
本題に入る前に記事の流れや注意事項を説明しておきます。
- ゲームは発売年順に並べています。アップデートは加味していません
- あくまで筆者が購入したゲームだけを紹介しています。
- その他の有名ゲームもありますが、紹介から漏れてしまっていたら申し訳ありません
- 若干ですが齧っただけで詰んだゲームもあります
- ノード・コードによるプログラミングが中心ですが、一部に回路設計系ゲームも含まれます。
(1995~2010) カルネージハート
※現行機ではリリースされていません。
- プログラム要素:コア要素
- タイプ:ノード
- ジャンル:対戦
- 難易度:困難
プログラミングゲームを語る上で欠かせないゲームと言えば、やはりArtdinkのカルネージハート一択でしょう。えっ知らないって?わぁ……ァ……泣いちゃった!!!
Artdinkと聞くと、一生9を擦り続けている「A列車で行こう」シリーズや、Neo Atlasシリーズが有名ですが、カルネージハートも同社が開発・販売しています。
本ゲームを語弊を恐れずに簡潔にまとめるのであれば、「アーマードコアのロボをチップを組んで自律制御させて戦わせる」ゲームです。OKE(Overkill Engine)と呼ばれるロボをハードウェア・ソフトウェア両面から設計し、敵のロボットにぶつけて対戦するのがメインの内容です。シリーズは計6作リリースされており、作品によってはOKE部隊を動かしていくストラテジー的要素が含まれているものもあります。
非常に完成度の高いゲームで、特にPSPの「カルネージハート エクサ」はArtdinkの最高傑作だと勝手に思っています(個人の意見です)。大型のソフトウェアを載せるとジャミングに弱くなったり、OKE間の通信で連携攻撃を行ったり等々、夢とロマンに溢れたプログラミングゲームです。男の子ってこういうのが好きなんでしょ?うん、そう。
しかし残念ながら、2010年に発売されたPSPの「エクサ」を最終作として、今の所後継作が発売される見込みは全くありません。2020年代に発売されていたらもっと売れていたのではないか、という気持ちでいっぱいです。時代を先取りしすぎたんでしょうか……
(2016) SHENZHEN I/O
- プログラム要素:コア要素
- タイプ:コード+回路設計
- ジャンル:パズル
- 難易度:激ムズ
プログラミングゲームの概念を変えたといっても過言ではない名作、SHENZHEN I/O です。ご存じの方も多い(?)と思いますが、ミッション内容を満たすように回路設計を行いアセンブラを記述するパズルゲームです。いや、これをゲームと呼んでいいのか……?
たぶんゲームのはずなんですが、このゲームにはデータシートがついてきます。やっぱりおかしい。序盤から終盤までこれとにらめっこしながらプレイすることになります。日本語翻訳してくださった方がいるので、ゲームを持ってなくてもこれを見ると憂鬱な楽しい気持ちになってきて購入したくなると思います。
なお、「アセンブラ書かせられるの!?ヤバ……」と言っていられるのは序盤だけで、残念ながらこのゲームの本質はそこではありません。とにかくチップを配置できる領域が狭いです。このゲームの真なる姿は「一生アセンブラをショートコーディングする」ゲームです。限られたエリア内でアナログ/デジタル入出力をそれぞれ繋いで適切な処理を行いアウトプットを行います。ケーブルはブリッジ以外で交差できないので、数行しか書けないアセンブラで頭を悩ませながら、各チップも最適な配置を行わないと全くクリアできません。
そんなSHENZHEN I/Oを開発したZachtronicsですが、他にも Exapunks, Opus Magnum といったパズルゲームをリリースしており、「Zachtronics系論理パズル」として Zach-Like と呼ばれる一大ジャンルを築き上げました。残念ながら本家Zachtronicsは2022年発売の「Last Call BBS」を最終作としてゲーム開発を終えました。現在はこれに続くような形で、The Signal State 等のゲームがぽつぽつとリリースされています。
ちなみに私はキャンペーンを全てクリア済みです(唐突な自慢)。なのでこのゲームを語る資格はある……でしょう。たぶん。
(2019) GLADIABOTS – AI Combat Arena
- プログラム要素:コア要素
- タイプ:ノードベース
- ジャンル:対戦
- 難易度:?
カルネージハートに近しい、3vs3の自律制御ロボットの対戦ゲームです。ただしマシンのアセンブリについては非常に簡略化されており、機体タイプと武器が1セットで固定されています。兵種も「アサルト」「ショットガン」「マシンガン」「スナイパー」の4種しか存在しません。
リリースされた当初即購入したのですが、遊んでみると戦闘面がかなり簡素にまとめられており、コードも「近・中距離の敵を射撃」といった事が1ノードで出来てしまうため、かなりシンプルにまとまっている印象がありとっつきやすいです。ただしカルネージハートに慣れてしまっていると、チップ容量や重量含めての駆け引きがないため、カルピスウォーターを希釈して飲んでいるような感じでした。
ハマる人にはハマるかもしれません。私はカルネージハートの方が好みかな……
(2019) Automachef
- プログラム要素:サブ要素
- タイプ:ビジュアル or コード
- ジャンル:パズル
- 難易度:困難
自動キッチンでお店を経営するゲームです。注文が来たらそれに合わせてラインを動かし、お客様に食べ物を提供していきます。これだけ聞くと工場パズルゲームで、プログラミング要素はないんじゃない?と思いがちですが、何やら怪しい施設が存在します……
妙だな……なんか間違えてZach–Likeゲーム買っちゃった?
いいえ。間違っていません。これは Automachef です。たぶんプログラミングゲー漁りしてる人の9割ぐらいはこのゲームをそんな目で見ていないと思います。というか存在も知らないかもしれません。しかしポップな見た目のワイワイお料理工場パズルでアセンブラを書かされます。私も最初はそんなつもりで購入したゲームじゃなかったので、2度見どころか2恒河沙 度見ぐらいしました。
当然のように公式ページでドキュメントがPDFで配布されています。うーんこれはお料理ゲー!w
ここまで色々焚きつけましたが、これはAutomachefの名誉のために声を大にして言いたいのですが、あくまでAC-16コンピュータはオマケ要素です。別に使わなくても攻略は可能なので安心してください。他にもアセンブラを書かず、Scratch風のビジュアルプログラミングで設定する方法もあります。
このゲームは電力消費やリソース消費のスコアという概念があり、それ故に製造時の機械動作や電源のON/OFFについて最適化する必要性があります。そのため最高スコアを取ろうとしたときにこのコンピュータが役に立つのですが、まあそれがなくてもクリア自体は問題なくできます。とはいえプログラマーたるものこれを見てしまったらアセンブラを書かずにはいられなくなってしまうので……逆にコンピュータ制御で全てを動かすみたいな縛りプレイが始まったり始まらなかったりします。
ちなみにコンピュータ抜きで、Automachefのパズル難易度はかなり高めです。私は途中で全クリアできず、途中で挫折してしまいました……。
(2019) Autonauts
- プログラム要素:メイン要素
- タイプ:ビジュアル
- ジャンル:工場
- 難易度:簡単
ボットをプログラミングして生産の自動化を行っていく、SatisfactoryやFactorioといった工場ゲー風ののプログラミングゲームです。工場ゲーと言っても複雑な生産管理や緻密な資源管理はないので、子供でも遊べるようなシンプルな感じです。
他の工場ゲームと一線を画す点として、ベルトコンベヤのような運搬機器が存在しません。採掘や林業といったリソース収集だけでなく、運搬もすべてプログラムを組んでボットで処理する必要があります。
コーディングはScratch風のビジュアルスクリプティングですが、「プレイヤーの動作をいい感じに記録してコードにする」機能があるので、これのおかげで知識はほとんどいりません。手動で複雑な条件の設定も勿論可能なので、プレイヤーのスキルに応じて緻密なプログラムを書くことも可能です。
グラフィック自体はかなり簡素な3Dモデルで、アニメーションも単調だったりはするのですが、ゲームの本質的な部分が良く練られているので全然楽しめると思います。恐らく知る限りでは、工場+スクリプティングのジャンルを切り開いたパイオニア的存在だと思います。後続の類似ゲームとしては、あのPreferred Networksの作った Omega Crafter などがあります。
ちなみに日本語ローカライズが本当に若干ですが怪しいです(プレイには全く支障がありません)。設定を開いてみると、グラフィックの質の最高設定が「お見事」になってます。実際奥ゆかしい。
(2020) Move Code Lines
- プログラム要素:コア要素
- タイプ:コード?
- ジャンル:パズル
- 難易度:普通
動画を見ると一発で分かりやすいのですが、Move Code Linesはその名の通り、Javascript風のコードがメチャクチャな状態で並んでいるので、要求されたアウトプットの通りに出力できるようコードの行を並び替える、というゲームです。
自分でコードを記述することはできないため、あくまで与えられた行のみで構成する必要があります。ゲームが進んでいくと関数が登場したり、input関連の関数が出てきたりして段々複雑になっていきます。
幸いパズルとしての難易度はそこまで高くないのですが、何といってもアホみたいなうんコード💩が魅力です。パズルを成立させるためにとんでもないコードが乱立しています。どう考えても必要のないコードの行が紛れていたりして、たぶんプログラミング初心者でもこんなコード書かないでしょう。実際のプロダクトだったら全部プルリク蹴り飛ばしたい。
(2021) Turing Complete
- プログラム要素:コア要素
- タイプ:コード+回路設計
- ジャンル:パズル
- 難易度:困難
SHENZHEN I/Oとまた別のベクトルでおかしいゲームが、Turing Complete です。何をするかというと、NAND素子からCPUを組み上げていくゲームです。パズルの問題を一つ一つ解いていくと、最終的にCPUが作れます。そしてそれを拡張したり、自作CPUを使って問題を解いたりします。素晴らしく教育的であり、ためになるゲームです。
え、ゲームじゃなくて学習教材だって?いいえ。Steamページにちゃんと記述があります。
Player feedback is crucial for puzzle games.
(パズルゲームにはプレイヤーのフィードバックが不可欠です。)
公式がそう言ってんだから、誰が何と言おうとパズルゲームです
Turing Completeにもアセンブラエディタは存在しますが、当然アセンブラの命令セットも自作することになります。自分でCPU作ってるんだから当然そう。ADD とか SUB とかの算術とか、条件分岐の IF とかも自作です。頑張りましょう。
ただSHENZHEN I/Oに比べて、回路は幾らでも置けますし、ケーブルは幾らでも交差できるような設計になっているため、パズル的な難しさより、問題解決の方に重きを置いている印象があります。そのあたりは人によって好みが分かれると思うので、どっちのゲームを買うか……という判断に繋がってくるかも。参考になれば嬉しいです。
(2023) Desynced
- プログラム要素:コア/サブ要素(後述)
- タイプ:ノード
- ジャンル:ストラテジー+工場
- 難易度:ピンキリ
今最も熱いプログラミングゲーム(※諸説あり)
DesyncedはRTS+工場+プログラミングの合わせ技の完全無敵最強ゲームです。間違いなくここ数年のプログラミングゲームの中で頭一つ抜けて一番面白い。間違いないです。
ゲームの基本的な流れは採掘→製造→研究といったように工場ゲームを踏襲していますが、Autonautsと同様に原則として輸送はボットが行います。またFactorioと同様各地に敵エイリアンが存在しており、これを撃破しながら開拓地を拡大していきます。また定期的に拠点へ攻撃が訪れるため、襲撃に備えて防衛ラインを構築していく必要があります。
公式のジャンルは工場ゲームではなく「SFストラテジーゲーム」と呼称されており、実際リソース管理や戦闘のバランスがFactorioやDyson Sphere Program(Dark Fog以降)といった他の襲撃有りの工場ゲーに比べて、難易度がかなりシビアに作られています。しかしDesyncedはありとあらゆる事がプログラムで操作可能なので、これを使って問題を解決していきます。採掘ポイント探査・前線の巡回や襲撃時の防衛網の構築・ドロップ品の回収・物流の最適化といった様々な用途でプログラムを駆使して最適化を行い、厳しい環境を乗り越えていくことになります。コーディングがおまけのAutomachefと異なり、こちらは高難易度ではコーディングがないとかなり厳しくなります。
プログラムはUnreal Engineライクなノードベースでのコーディングが必要になります。機能的にも充実しており、コンソールでのデバッグプリントが可能だったり、よく使うスクリプトは関数としてまとめてライブラリ化することもできます。他のプログラミングゲームと異なり、ストラテジーゲームという性質上、イレギュラーな場面に遭遇することも多いです。敵撃破時のエンティティ参照のNULLチェック等、例外処理も重要になってきます。
またシンプルな運搬や採掘については、コードを書かなくても簡単なボット設定で指示を出すことが可能です。敵からの襲撃イベント無し+資源無限のゆるい設定のワールドでは、こちらのユニット指示をメインにして、気が向いたらコードを書くといった事も可能なので慣れないうちはこちらがお勧めです。難易度によってコーディングの必要性に幅があるため、ゲーム紹介のコーディング要素を「コア/サブ要素」という表記にしています。
ちなみにこのゲーム、マルチプレイ対応です。PvPとPvEモードの両方があります。ウィンターセールで安くなってるので買ってみんなで遊びましょう。
(2024) ABI-DOS
- プログラム要素:コア要素
- タイプ:ノード
- ジャンル:パズル系
- 難易度:普通
ん、私ともプログラミングパスルをやるべき
※アビドス高等学校もといブルーアーカイブとは一切関係はありません。
2024年11月15日に発売されたばかりの、新進気鋭のZach-Likeパズルゲームです。ミッションごとに与えられた指示の通りに、インプットされたUBITS(カラーデータブロック)をノードを使って加工し、指定されたアウトプットを出力するようにノードベースでプログラムを組んでいきます。
この手のゲームにしては珍しく、上記の動画を見てみると分かりやすいのですが、UBITSが動いている様子がリアルタイムで表示されるので、非常にキャッチーで見ているだけで爽快感があります。
ABI-DOSは Assembly Based Interface Deus Operating System の略になっており、アセンブラベースという通り色々と融通が利かない挙動をするノードが沢山用意されています。条件分岐周りが高級言語と違い高度な事ができないのでノード配置を考える必要があったり、各ノードのOE(Order of Execution)を意識していないと意図せぬ挙動を起こしたりします。メモリが存在しないのが特に厄介で、盤面にキープしたUBITSが混ざらないようにうまく裁いていくのが非常に難しく、同時に面白いポイントです。
ゲーム内容もまあまあイカれており、ミッションの内容がデータのソートだったり、スタックの実装だったりするのですが、うまくパズルゲームに落とし込んでいる所がかなり高評価です。またプログラミングゲームとしてかなり前衛的な点として、ブレークポイントやデバッグ表示などの機能が充実しており、ロジックの構築に集中できる環境が整っているのがとても嬉しい点です。個人的には2024年に遊んだプログラミングゲームの中で一番面白かったと思います。
後記
気が付いたらとんでもない長文になっていました……
記事の投稿が大幅に遅れてしまい申し訳ありませんでした……。実のところ当日までにある程度完成していたのですが、ジャンル定義があやふやで色々混在して一旦白紙に戻したりしてるうちに、当初の3倍ぐらい時間がかかってます。でも結果としてSteamウィンターセールにぶつかったので布教としてはよかったのかも……?
またゲーム関連の記事は幾らでも語りたいことがあるので、書き始めれば筆は乗るのですが、ゴールが見えないので中々モチベの維持が難しいな……と思いました。暫くはまた技術・クリエイティブ畑に戻ろうと思います。
コメント