Youtubeの実況動画を見て、「Turing Complete」なるSteamのゲームに興味を持ちました。
「Turing Complete」は、論理回路からCPUを構築する過程を楽しく実践的に学べる教育シミュレーションゲームです。1
コンピュータサイエンスの様々な概念を実践的に学ぶことができ、コンピューターが動く仕組みを深く理解できるように構成されています。
基本ゴールの「チューリング完全」という課題をクリアしたので、振り返りも兼ねて、「Turing Complete」の魅力を紹介します。
1.ゲームの概要
タイトル | Turing Complete |
価格 | 2050円(購入時) |
リリース日 | 2021年10月3日 |
言語 | 英語など(日本語は未サポート) |
プラットフォーム | Steam |
プレイ時間 | 12時間(「チューリング完全」クリア時) |
テキストファイルの名前を変更することで、一部ですが日本語に翻訳されます。
Turing Completeを日本語化する方法
2.チューリング完全とは
ゲームのタイトルの「Turing Complete(チューリング完全)」とは何でしょうか。
チューリング完全
→あらゆる計算ができる能力のこと
※不正確な説明ですが、大雑把にご認識いただければ...
正しくは、「万能チューリングマシンに等しい能力を持っていること」2
- 四則計算ができる
- メモリを操作できる
- プログラムを実行できる
これらの条件を満たしていれば、チューリング完全と言えそうです。
電卓は、プログラムを実行できないので、チューリング完全ではないですね。
「Java」や「Python」などのプログラミング言語は、チューリング完全です。
ゲームの「マインクラフト」も「レッドストーン」というアイテムで複雑な回路が作成できるので、チューリング完全だそうです。
なお「スーパーマリオメーカー」がチューリング完全であると、有識者の研究により「証明されました。すごい
スーパーマリオメーカーはチューリング完全 @第15回日曜数学会
「ゲームボーイ」などのゲーム機もチューリング完全と言えそうです。
ゲームボーイで「ポケモン赤」のバイナリを書き換える動画、面白いです。
チューリング完全について何となくですが、ご理解いただけたでしょうか。
「Turing Complete」というゲームでは、
「NAND素子」という基本的な論理回路から、チューリング完全なCPUを作成します。
3.Turing Completeの概要
ゲーム前半では、以下の段階的なプロセスでチューリング完全なCPUを構築します。
- AND回路、ORゲート回路から始めて、デジタル回路の基礎原理を身につける
- 基本的な論理回路を組み合わせて、演算装置やメモリなどのコンポーネントを作成する
- チューリング完全なCPUとして機能するデジタル回路を構築する
ゲーム後半では、作成したCPUを活用して実践的なプログラミングを体験します。
- 機械語による基本的な計算処理の実装
- アセンブリ言語を使った迷路解決などの課題の挑戦
ゲームの前半は、次の4つのパートに分けられます。
1.論理回路の基礎
NAND素子を組み合わせて全ての論理演算を実行します。
1-3. NOT Gate : 入力にNAND素子を接続
1-4-1. AND Gate : NAND素子とNOT回路を接続
1-4-3. OR Gate : 入力値をNOT回路で反転してからNAND素子を接続
お気に入りの課題
1-7. XOR Gate : 作成したNOT回路、AND回路、OR回路を組み合わせる
NAND回路だけでも実装できました。
2.算術
論理回路を組み合わせて演算装置を作成します。
2-2-2. Half Adder(半加算器) : 2つの1bitの2進数の加算を行い、合計と繰り上がりを出力する回路
2-3-1. Double the Number : 2進数を左シフトして倍にする回路
2-3-2. Full Adder(全加算器) : 半加算器を拡張して前の演算の繰り上がりを考慮した回路
2-6. Signed Negator : 正の数を負の数に、負の数を正の数にする回路
2-7. 1 bit decoder : 1bitの入力値を解読する回路
2-8. 3 bit decoder : 3bitの入力値を解読する回路
3bitの入力パターンに対応して8通りの出力をします。
今後の課題で活躍する使い勝手の良い回路です。
2-9. Logic Engine : 2つの入力をOR、NAND、NOR、ANDする演算装置
先ほど作成した「3 bit decoder」が活躍します。
お気に入りの課題
2-1-1. Binary Racer : 10進数を2進数に変換するミニゲーム
2-5. Negative Numbers : 負数も2進数に変換するミニゲーム
緊張感があって楽しかったです。
マウス操作では制限時間に間に合わないので、
キーボードでの回答がオススメです。
※1~8の数字キー、スペースキー
3.メモリ
論理回路を組み合わせてメモリとプログラムカウンタを作成します。
3-5. Input Selector : 1byteのマルチプレクサ(セレクタ)を作成
IF文みたいな回路です。
3-6-2. Saving Gracefully : 1bitのメモリを作成
3-7. Saving Bytes : 8bitのレジスタを作成
1byteをセーブとロードできる回路を作成します。
3-8-1. Little Box : 4byteのRAMを作成
先ほど作成した8bitレジスタを4つ組み合わせてRAMを作成します。
キャンバスが狭すぎです。
3-8-2. Counter : プログラムカウンタを作成
作成したマルチプレクサを使用して、値をインクリメントまたは上書きします。
プログラミングで活躍するコンポーネントができました。
4.CPUアーキテクチャ
条件分岐やジャンプ命令を実現するための重要なコンポーネントを実装して、チューリング完全なCPUの完成を目指します。
4-1-1. Arithmetic Engine : CPUの中核となる演算機能(ALU)を作成
作成した「Logic Engine」に加減算の機能を追加します。
4-1-2. Registers : 1byteのデータをレジスタ間に転送する回路
セーブとロードを操作して、レジスタの値を移動します。
4-4. Calculations : CPUの土台にコピーと計算機能を追加
レジスタ1とレジスタ2の計算結果をレジスタ3に格納します。
4-5-1. Conditions : プログラムの制御フローを実現する条件判定回路
キャンバスが狭いです。
「AND」、「OR」、「NOT」回路を上手に組み合わせる、脳トレみたいな課題です。
4-5-2. Program : CPUの土台にプログラムメモリとプログラムカウンタを追加
4-6. Immediate Value : CPUの土台に即値機能を追加
即時モード時にプログラムの値をレジスタ0に格納します。
4-7. Turing Complete : 構築してきたコンポーネントを統合してチューリング完全なCPUを作成する最終ステージ
プログラムを順次実行とジャンプ命令できていることが確認できます。
見事、NAND素子から始めて、チューリング完全なCPUを作成することができました。
ゲームの後半パートでは、作成したCPUを使って機械語でプログラミングをします。
最終課題の「Water World」までクリアされた方、素晴らしいです。
なお全プレーヤーの内、最終課題をクリアできた人は2%未満だそうです。
4.Sandbox
「Turing Complete」には、学習の自由度を高める「Sandbox」という機能が実装されています。
この機能により、プレイヤーはより創造的に学習を進めることができます。
様々なコンポーネントが用意されていて、私は次のコンポーネントが気になりました。
- サウンド : 簡単な演奏ができそう
- キーボード : 自由に文字を入力できそう
- ディスプレイ : キャラクターを動かせそう
5.まとめ
「Turing Complete」は、CPUの仕組みを楽しく実践的に学べる教育的価値の高いゲームです。
NAND素子からチューリング完全なCPUまでを段階的に構築する過程は、
コンピュータサイエンスの基礎を深く理解するのに最適な教材だと思いました。
RTA(リアルタイムアタック)コミュニティも活発で、長期的な楽しみ方も可能です。3
Working Computer部門では、日本人の26分8秒が最速記録となります。(2025年7月時点)4
最後まで読んでいただき、ありがとうございました。
このゲームには、コンピュータサイエンスの面白さが詰まっています。
この記事をきっかけに、「Turing Complete」に興味を持っていただけたら嬉しいです。