コーディングエージェントとブラウザゲームエンジン:debuff はどう違うのか
コーディングエージェントは、どのエンジンでもゲームのコードを書けます。違いが出るのは、書いたあとに何を確かめられるかです。手助けがなければ、エージェントはソースを編集して、せいぜいビルドを走らせる程度です。そして最後に「このジャンプ、気持ちいいですか?」とあなたに尋ねます。時間の大半を食うのは、この最後のステップです。
debuff はこのギャップを埋めるために作られています。エージェントは動いているゲームを見て、あなたが見たものを再現し、何かを尋ねる前に変更がうまくいったことを証明できるべきです。この記事ではその仕組みを説明したうえで、2026 年 10 月時点で主な代替エンジンがエージェントに何を提供しているか、明らかに先を行っている点も含めて見ていきます。
debuff 側
以下はすべて debuff 0.2(npm create debuff@latest)に入っています。
最初から接続済みの MCP サーバー
新しいプロジェクトには @debuffjp/mcp を起動する .mcp.json が含まれています。Claude Code のようにこれを読む MCP クライアントなら、設定なしで使えます。サーバーにはプロジェクト用ツール(inspect_project、list_assets、build、run_scenarios、fuzz)があります。ゲーム用ツールもあります(game_start、game_step、game_input、game_state、game_capture、game_frames、game_errors、game_params、game_set_param、game_notes、game_replay、game_pause、game_stop)。
開いているゲームへのライブアタッチ
npm run dev でゲームを開いていれば、game_start は新しいタブを立ち上げずにそのタブへアタッチします。開発オーバーレイには agent バッジが表示され、エージェントによる一時停止、ステップ、パラメータ変更はすべてオーバーレイのアクティビティログに並び、そこから取り消せます。あなたとエージェントは同じゲームを見ているわけです。
何も開いていないとき、またはエージェントが mode: "headless" を指定したときは、ヘッドレスブラウザに専用のコピーが用意されます。時間は game_step を呼んだときだけ進むので、エージェントが見るものは再現可能です。
オーバーレイのメモを game_notes で読む
何かおかしいと思ったら、オーバーレイにメモを書きます(「ここのジャンプ、ふわっとしすぎ」)。エージェントは game_notes でそれを、ティック、その瞬間のシーンの inspect() の状態、そこに至るまでのフレームと一緒に読みます。証拠がメモについてくるので、チャットで状況を説明する必要はありません。
game_replay:見たものを再現する
開発ツールは、ページ読み込みからのキー、ポインター、パラメータ変更をすべて記録しています。メモのティックを指定して game_replay を呼ぶと、その瞬間までのすべてがシナリオとして .debuff/replays/ に保存されます。debuff は固定ステップとシード付き乱数で動くので、このファイルはあなたのセッションを正確に再現します。スローモーションのようにリプレイで再現できないものは warnings に並びます。
型付きパラメータ
手触りに関わる値は game.params.define(...) で、型、デフォルト、範囲、単位とともに宣言します。エージェントは game_params で読み、範囲をチェックする game_set_param で変更します。値の調整にコード変更はいらず、結果は自分のタブで確認できます。
決定的なシナリオ
シナリオは、ステップ、入力、inspect() の状態に対する期待値、スクリーンショットのキャプチャを並べた JSON スクリプトです。npm test がヘッドレスブラウザで実行し、キャプチャをベースラインと比較します。変更の検証はシナリオで行い、リプレイもファズの検出結果も、ただのシナリオの1つです。
ファズ
npx debuff fuzz は、ランダムだけれどもっともらしい入力(移動キーの長押し、アクションの連打)で、シミュレーション上の数分間ゲームをプレイします。クラッシュ、スタック状態(inspect() が変化しなくなる)、行ったり来たりのループは、それを再現するシナリオとして .debuff/fuzz/ に保存されます。同じ --seed で実行を繰り返せ、何か見つかるとコマンドは非ゼロで終了するので、CI のゲートにも使えます。
説明付きのエラー
game_errors が返すのは素のスタックトレースではありません。各エラーには kind(your-code、debuff-usage、debuff-bug、outside)、ソースマップ済みのファイルと行、ヒントが付きます。エージェントはゲームのバグと API の誤用を見分けられ、debuff-bug にはエンジン内部を回避するパッチを促す代わりに reportUrl が付いてきます。
AGENTS.md とプロンプト
新しいプロジェクトには AGENTS.md(コマンド、構成、作業ループ、ルール)と、そこを指す CLAUDE.md が含まれます。MCP サーバーは playtest、fix-errors、tune-feel、add-mechanic、explain-stutter の 5 つのプロンプトも提供しています。Claude Code のようなクライアントでは、これらがスラッシュコマンドとして表示されます。どれも創作の判断はあなたに残します。エージェントが選択肢を出し、あなたが選ぶのです。
代替エンジンがエージェントに提供しているもの
2026 年 10 月 17 日に、各エンジンの公式サイトとリポジトリ、そしてよく知られたコミュニティプロジェクトを調べました。「見つからず」は、探したけれど見つからなかったという意味で、存在しないという意味ではありません。
| debuff | Phaser | PixiJS | KAPLAY | Excalibur | Godot(Web エクスポート) | |
|---|---|---|---|---|---|---|
| 公式 MCP サーバー | あり(実行中のゲーム向け) | あり(Phaser Editor のシーン向け) | 見つからず | 見つからず | 見つからず | なし(コミュニティ製サーバーあり) |
| llms.txt | あり、llms-full.txt も | あり(サンプル索引) | あり、llms-full.txt も | なし(404) | なし(404) | なし(404) |
| 公式のエージェント向けガイド | 新規プロジェクトに AGENTS.md、MCP プロンプト | メインリポジトリに 28 のスキル | 公式スキルリポジトリ | 見つからず | 見つからず | 見つからず |
| 実行中のゲームへのエージェントのアタッチ | あり(ライブまたはヘッドレス) | なし | なし | なし | なし | コミュニティ MCP:デバッグ実行と出力 |
| 自動テスト | シナリオ、ファズ | HEADLESS レンダラー | 未確認 | 未確認 | スクリーンショットテスト用パッケージ | --headless、GUT、gdUnit4 |
Phaser
Web エンジンの中で、エージェント向けの素材がいちばん多いのは Phaser です。phaser.io は llms.txt を提供していますが、索引しているのはドキュメントではなく v4 のサンプルです(docs.phaser.io/llms.txt は 404)。メインリポジトリには 28 のトピック別スキルを収めた skills/ フォルダがあり、v3 から v4 への移行用スキルもあります。公式の Phaser Editor MCP サーバー もありますが、これは Phaser Editor v5 のシーンを編集するもので、実行中のゲームを調べたりステップ実行したりはしません。Phaser には描画せずに動かすための HEADLESS レンダラー が定義されています。
Phaser が強いところ:成熟度、大きなコミュニティ(GitHub スター約 4 万)、長年積み重なったサンプルとチュートリアル、組み込みの物理、ビジュアルエディタ、そして圧倒的に多い機能。ゲームにそれらが必要なら、今のところ Phaser のほうが安全な選択です。
PixiJS
PixiJS は llms.txt と llms-full.txt を公開していて、LLM 向けページ からは公式の pixijs-skills リポジトリが案内されています。v8 向けの約 25 のスキルで、npx skills add か Claude Code プラグインとしてインストールできます。エージェント向けとして、質がよく最新のドキュメントです。MCP サーバーは見つかりませんでした。
PixiJS はゲームエンジンではなくレンダラーなので、ゲームループ、入力、シーン、テストは自分で用意するか、別のライブラリで補います。強いところ:描画性能と機能、Web の選択肢の中で最大のエコシステム(スター約 4.8 万)、そして長い本番実績。
KAPLAY
KAPLAY は親しみやすく、すぐに始められます。コンポーネントモデルはエージェントにも書きやすいものです。ただエージェント向けの面ではほとんど見つかりませんでした。llms.txt は 404 で、AI ガイド はコーディングエージェントではなくゲーム AI(ステートマシンやルールシステム)についてのものです。見つかった MCP サーバーは、小さなコミュニティ製のドキュメントサーバーだけでした。強いところ:やさしい API、オンラインのプレイグラウンド、そして debuff より大きく確立したコミュニティ。
Excalibur
Excalibur は TypeScript ファーストのエンジンで、API がわかりやすいです。テスト用パッケージ @excaliburjs/testing があり、Puppeteer でゲームを操作してスクリーンショットを比較します。このリストの中では debuff のシナリオにいちばん近いものです。llms.txt(404)と MCP サーバーは見つかりませんでした。強いところ:物理など最初から使える機能の多さと、長年のリリース実績。
Godot(Web エクスポート)
Godot は Web エンジンではありませんが、多くのブラウザゲームが Godot で作られていて、エージェント向けツールは 5 つの中でいちばん充実しています。すべてコミュニティ製です。Coding-Solo/godot-mcp(スター約 6,000)はエディタを起動し、プロジェクトをデバッグモードで実行し、出力をキャプチャし、シーンを編集します。hi-godot/godot-ai も人気があります。Godot はコマンドラインからヘッドレスで動き、GUT と gdUnit4 は成熟したテストフレームワークです。ドキュメントは llms.txt を提供していません(404)。
Godot の強み:エンジンが持てるほぼすべて。本格的なエディタ、2D と 3D、アセットライブラリ、最大のコミュニティ(スター約 11.8 万)、成熟したスクリプト言語。エディタや 3D を求めるなら Godot を使いましょう。
本当に違うところ
Phaser と PixiJS はエージェントによいドキュメントを用意していて、Godot のコミュニティはプロジェクトを実行して出力を読む MCP サーバーを作っています。ほかで見つからなかったのは、同じ実行中の Web ゲームの上で、あなたとエージェントの間をつなぐループです。あなたが瞬間をフラグすると、エージェントはそのティックの状態を受け取ります。エージェントはその瞬間をシナリオとして正確に再現し、あなたのタブで取り消し可能な型付きパラメータを調整し、シナリオとファズで修正を検証します。
もう1つ測れる違いがサイズです。debuff のランタイム全体は、ここに挙げたどの Web エンジンよりも小さいです。
各ライブラリのビルド済みバンドル全体(debuff の全パッケージ、kaplay.mjs、excalibur.min.js、pixi.min.js、phaser.min.js)を brotli で圧縮し、2026年10月17日に計測しました。ツリーシェイキングしたゲームはさらに小さくなります。
これは限られた優位性で、本当のコストも伴います。debuff はまだ若く(0.x)、2D 専用です。エディタはなく、コミュニティは小さく、サードパーティの資料も多くありません。各エンジンでエージェントがどれだけ成功するかは測っていないので、debuff ならエージェントがゲームを早く完成させるとは主張しません。言えるのは、各エンジンでエージェントが何を確かめられるかだけです。
各エンジンとのより広い比較は、debuff vs Phaser、PixiJS、KAPLAY、Excalibur、Godot、Babylon.js をご覧ください。
このループを自分で試すなら、ウォークスルー Claude Code と debuff でゲームを作る で一歩ずつ進められます。