本文へスキップ

コーディングエージェントとブラウザゲームエンジン: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 日に、各エンジンの公式サイトとリポジトリ、そしてよく知られたコミュニティプロジェクトを調べました。「見つからず」は、探したけれど見つからなかったという意味で、存在しないという意味ではありません。

debuffPhaserPixiJSKAPLAYExcaliburGodot(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 エンジンよりも小さいです。

ランタイム全体のダウンロードサイズ、brotli(kB、小さいほど良い)
debuff20 kB
KAPLAY59 kB
Excalibur118 kB
PixiJS185 kB
Phaser276 kB

各ライブラリのビルド済みバンドル全体(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 でゲームを作る で一歩ずつ進められます。