ドミノソフト公式ブログ

合同会社ドミノソフトの公式ブログです。

CPUをNANDゲートからつくるゲームのすゝめ(Turing Complete)

ドミノソフトのqwavです。

Turing Completeの最終ステージまでクリアした記念にブログを書きます。

store.steampowered.com

恥ずかしながら私のCPUに対する理解がブラックボックスになっていて、CPUって実際何してるんだろう?と思ったのがこのゲームを始めたきっかけです。 (細かいことは知らんけど何かしらの命令にもとづいて何かしらの計算してるんでしょぐらいの理解)

ゲームのプレイ時間としては約40時間、WATER WORLDという実績(最終ステージをクリア時に付与)までプレイしました。 (正直いくつか解法がわからないステージもあり、攻略ブログやSTEAMにも解説があがっているので、そこをカンニングしてしまいました。)

ちなみにTUTORIAL COMPLETEという実績(実質CPU作成)の取得率が約5%、先ほどのWATER WORLDの実績の取得率は約2%と結構な人が投げ出しているみたいなので、ちょっとした自慢です。 (ちなみにSEKIROの葦名一心の実績の取得率は約20%でした。)

Turing Completeとは

宇宙人にさらわれた主人公が知能テストとして、NANDゲートを使ってCPUを作り、機械語・アセンブリ言語でのプログラミングを行い、お題をクリアしていくパズルゲームです。(さもなくばお前は喰ってやると言われます。)

宇宙人に攫われた

そんなことをいきなり言われても0からCPUをつくるのは私にはどうやっても不可能です。

しかし、ゲームではNANDゲートから他の論理演算ゲート(OR,AND,NOR,XOR)等をつくったり、加算器をつくったり、レジスタをつくったり、組み合わせて演算装置をつくったり等々のステージがあるので段階を踏んで一個ずつ理解を深めていけました。

またそのあとに、機械語・アセンブリ言語に関してもレベル別にステージがあるので、理解しやすかったです。 (最初は自分で作ったCPUで四則・論理演算をしてみるものから、ハノイの塔や迷路を解くような問題が与えらます。)

論理回路や機械語とは?等の説明はとくにないので、基本情報やらを何も知らないとこのあたりが結構きつそうです。

Turing Completeの良いところ・悪いところ

良いところ

  • ステップ実行しながらレジスタ・RAM・配線等に流れている値を視認可能
  • ほぼすべてのステージにテストケースが付いている(パスしないと次のステージに進めない)
    • パズルゲーム的には当たり前な感じはしますが、見方を変えればテスト駆動開発ができる
    • 実際オペコードを追加したときに意図していない値をレジスタに保存するようにしてしまい、それに気が付いて(場当たり的な)修正をすることができました。
  • ゲームなのでハードウェア的な不調の考慮は不要

悪いところ(あったらうれしい)

  • 最適な回路の組み方については学べない
    • 答えが一致すればOK、回路やプログラミングの中身はなんでもいいよという感じです。ここで学んだことを糧に専門的な教材に移るのがいいんでしょうね。
    • これを逆手に汎用CPUではなくそのステージ専用の回路・CPU作成、プログラミングをすることでスコアアタックが公式に行われています。どうやってそんなスコア叩きだせるの?と頭のいい人たちはすごいです。
  • 後半になっていくほどステージの説明が雑な感じ
    • このステージのインプットとアウトプットはなんなん?と何回かなりましたが、雰囲気でなんとなくわかる感じです。
  • (日本語翻訳について、有志による翻訳もありますがまだ充実してるとはいいにくいです。英語が分からない箇所はGooglePixelに翻訳をしてもらっていました。ありがとうGooglePixel)
    • (宇宙人が設定やジョークを言っているだけ(多分)のところも多いので、無視しても問題ないと思います。)

まとめ

2050円(2025/2現在)のゲームにどこまで求めているんだという話になりそうですが、 デバッガー、テストケース、ステップバイステップの教材、無限の資材を抱き合わせたバンドル商品と思うとかなり破格のお値段なのではないでしょうか。 セールも滅多に来ないみたいなので、欲しいときが買い時です。 (ちなみにこのゲームはアーリーアクセスで今も開発継続しているようなので、今後の進化にも期待です。)

レビューも中々おもしろいです。 steamcommunity.com

最後に

自分の中でブラックボックスだったCPUについてほんの少しだけ理解度が深まりました。 また、機械語・アセンブリ言語でプログラミングしていた・している方々には頭が下がる一方です。 これからは高級言語のありがたみを噛み締めていきたいと思います。

それでは。


↓は公衆の面前に晒すのは恥ずかしいかぎりですが私のゲームクリア時までにつくったCPUもろもろです。 ネタバレになるかもしれないのでこれからゲームをプレイしたい方は見ないほうがいいと思いますが、 画像も鮮明ではないので直接的なネタバレ(ぱっと見では回路を具体的にどう繋ぐみたいのはあんまりわからないはず)にはならないので、 つくる規模感が知りたい方はちらっと見てもいいかもしれません。

CPU図面