ゲームプロジェクトのためのナレッジベース — AIがチャットをまたいで保持する記憶
ゲームデザインの決定・ルール・ドキュメントをナレッジベースに保存。AIエージェントが読み書きし、プロジェクトとともにGitにコミットされ、3Dグラフで表示されます。

AIエージェントとの新しいチャットは、毎回まっさらな記憶から始まります。戦闘ルールをもう一度説明し、命名規則をもう一度説明し、アートスタイルをもう一度説明しても、先週セーブファイルについて下した決定をエージェントはやはり忘れています。AI Game Developer のナレッジベースはこれを解決します。エージェントが読み、検索し、更新するゲームプロジェクトのナレッジベースで、プロジェクト内のMarkdownノートとして保持され、ゲームの他の部分と一緒にGitにコミットされます。
この記事では、デモゲーム Skyward Keep でのセッションを例にその仕組み、ナレッジベースに入れるべきもの、そしてエージェントがセッションをまたいで一貫した判断を下せるように付き合う方法を紹介します。動画はアプリの実際の録画です。エージェントの返答はデモ用のスクリプトですが、その中のツール呼び出しはすべて実際に実行されたものです。
ナレッジベースとは何か
ナレッジベースは、プロジェクト内の .ai-game-dev/knowledge/ にあるプレーンなMarkdownノートのフォルダです。リポジトリ内の普通のファイルなので、次のことが言えます。
- Gitでバージョン管理されるため、デザイン上の決定への変更はすべて履歴が残り、プルリクエストでレビューできます。
- プロジェクトと一緒に移動します。リポジトリをクローンしたチームメイトも同じ知識を得られ、その人のエージェントも同じです。
- アプリの中だけでなく、任意のエディタでノートを読んだり編集したりできます。
ファイルに加えて、アプリはインデックスを保持します。ノート間のリンクを追跡し、壊れたリンクを報告し、エージェントがノートを閲覧・検索・読み取り・整理するためのツールを提供します。インデックスはノートの変更に応じて差分更新されるので、あるセッションでエージェントが書いたノートは次のセッションで利用できます。
スペース:ノートの整理方法
README のあるナレッジベースのフォルダはスペースとなり、タイトルと、そこに何を入れるかの短い説明を持ちます。エージェントはスペースの短い一覧を見て、必要になったときだけそのスペースを開き、新しいスペースを作ることもできます。これによりコンテキストは小さく保たれます。すべてのノートを毎回の会話に読み込むのではなく、タスクに必要なスペースへと向かうのです。
ゲームでうまく機能するレイアウトは次のとおりです。
- design: コアループ、メカニクス、進行、経済
- systems: 戦闘、インベントリ、セーブ、ダイアログがどのように実装されているか
- art: スタイルガイド、パレット、アセットの命名とインポート設定
- audio: 音楽の方向性、効果音の慣習、ミックスレベル
- decisions: 選択とその理由のログ
- references: 参考にしているゲームやツールへのリンクとメモ
構造を手作業で作る必要はありません。エージェントにこう頼みましょう。「design、systems、art、decisions のナレッジベーススペースを、それぞれ1段落の説明付きで作って。」
決定を記録して定着させる
最も価値のあるノートは決定です。チャットで決定を伝えると、エージェントはその理由と、何を置き換えたのかと一緒に記録し、スペースのREADMEから新しいノートにリンクを張ります。
デモでの決定はアートスタイルについてのものです。
「手描きスタイルでいこう。柔らかいテクスチャ、暖色のリムライト、輪郭線なし。セルシェードのテストよりも64 pxでよく読めたから。」
エージェントはまずナレッジベースにすでに書かれていることを確認し、スタイル探求のノートに未解決の問いを見つけます。太い輪郭線のセルシェードか、柔らかい手描きテクスチャか。次に art direction スペースに「Visual style: hand-painted」という新しいノートを書き、決定、理由(手描きのヒーローは64ピクセルでも読みやすさを保てたが、セルシェードの輪郭線はノイズになった)、そして何を置き換えるのかを記します。未解決の問いは解決済みとし、新しいノートへのリンクを付け、スペースのREADMEからそのノートにリンクします。ノートはプレーンなMarkdownでプロジェクトと一緒にコミットされるため、新しいチャットもチームメイトもすべてそれを手にできます。

記録する価値のある決定はこんな感じです。
- 「物理には50 Hzの固定タイムステップを使う。プラットフォーミングには一貫したジャンプの高さが必要だから。これは可変タイムステップを置き換える。」
- 「敵の体力は常に10の倍数。ダメージ数値を読みやすく保つため。」
- 「アイテムアイコンはすべて正方形で中央揃え、背景は無地の暗色。」
次にセッションが物理、敵、UIに取り組むとき、エージェントはナレッジベースでその決定を見つけて従います。デモでは、まったく新しいチャットで「Skyward Keep ではどのアートスタイルを選んだのか、そしてなぜか」と尋ねると、決定と理由を答え、そのノートを出典として示します。

考えが変わったらそう伝えれば、ノートは新しい理由で更新され、古いバージョンはGitに残ります。
エージェントにナレッジベースを確認させる
エージェントにナレッジベースを直接指し示すこともできます。「インベントリを変更する前に、systems スペースを読んで、どのルールが当てはまるか教えて。」あるいは /kb コマンドで要約を頼むこともできます。これはナレッジベース全体または1つのフォルダについて、ノートのツリー、それらのリンク、壊れたリンクを表示します。
ナレッジベースを健全に保つ
ナレッジベースは、つながりが保たれ、最新であり続けて初めて役に立ちます。ツールがそれを助けます。
- ノート間のリンクが追跡され、ノート単位またはフォルダ単位で、外向きリンク、バックリンク、壊れたリンクを確認できます。
- lint チェックが、壊れたリンク、孤立したノート、慣習に従っていないノートを報告します。スペースに格納されたノートは孤立とは見なされません。
- プロジェクトの成長に合わせて、ノートをフォルダ間で移動できます。
数週間ごとに、エージェントに lint チェックを実行させ、見つかった問題を修正させましょう。コードのリファクタリングと同じように考えてください。小さく定期的な整理が全体を使いやすく保ちます。
3Dグラフ
ナレッジベースは専用ウィンドウでアニメーションする3Dグラフとして開きます。フォルダはリング、ノートはノードで、つながりの多さで大きさが変わり、フォルダごとに色分けされ、包含関係とリンクが線で示されます。デザインのどの部分がよく文書化されているか、どのノートが孤立しているかを一目で見るのに便利です。
開く場所はいくつかあります。プロジェクトのノート数を表示し、エージェントがノートを書くと脈打つステータスバーの項目、セッションのツール行にある「ナレッジベースグラフを開く」ボタン、エクスプローラーのフォルダやノートの「ナレッジベースグラフで開く」、そして右パネルのナレッジベースビューです。
何を書き、何を書かないか
エージェントがコードから読み取れないもの、つまり意図、制約、理由、慣習についてノートを書きます。コードがすでに語っていること、たとえばすべてのクラスの一覧などは省きましょう。そういうものはすぐに古くなります。
新しいプロジェクトでの良い最初の1週間は次のとおりです。
- エージェントにスペースを作らせる。
- コアループについて1つ、アートスタイルについて1つノートを書く。
- 決定をしたらチャットで伝え、エージェントに記録させる。
- 週の終わりにグラフを開き、エージェントにベースの lint を実行させる。
ナレッジベースはリリース0.21.0で登場し、0.22.1 (https://ai-game.dev/releases/0.22.1) でスペースが加わってより使いやすくなりました。Unity、Godot、Unreal のプロジェクトで同じように動作し、ただのフォルダでも使えます。ai-game.dev/download でアプリをダウンロードして、次のセッションに記憶を持たせましょう。

