マスタールーター — ゲーム開発スキルディスパッチャー
ゲーム開発作業のエントリーポイント。プロジェクトのフィンガープリントから1つのエンジンを特定し、リクエストからタスクを分類し、最小限の専門スキルセットを特定し、それらを読んでから行動するよう指示します。ディスパッチとコンポジションを行います — エンジンAPIを再教育はしません。
使用するタイミング
- ゲーム開発リクエストの開始時に使用 — ゲーム、レベル、プレイヤー、敵、シェーダー、UI、セーブシステム、マルチプレイヤー、入力、オーディオ、AI、ダイアログ、プロシージャルコンテンツの構築またはデバッグ — どのスキルを読み込むかを決定するため。
- ユーザーがエンジンやジャンルを指定したとき、「ゲームを作る」と言ったとき、または「どのスキルを使えばいいですか?」と尋ねたときに使用します。
使用すべきでないタイミング: 適切なスキルが読み込まれ、タスクがその範囲内に完全に収まっている場合、そのスキルから作業を進め、毎ターンルーターを再実行しないでください。タスクが新しいエンジンや関心事にピボットする場合のみ、再ルーティングしてください(ルーターのステップ6)。
ルーティングアルゴリズム
- エンジン検出 — プロジェクトフィンガープリント → 最大1つのエンジンスキルセット(または「不明」)。§1。
- タスク分類 — フレーズ → 分野 + 最大1つのジャンル + ワークフロー。§2。
- 解決 — 最小限のセット:エンジンスキル + 分野 + ジャンル + ワークフロー。§3。
- 読み取り(段階的開示) — 選択された
SKILL.mdのボディのみを開く;references/は要求があった場合のみ。§4。 - コンポーズ — 順序:エンジン基礎 → 分野概念 → ジャングルー → ワークフロー。§5。
- フォールバック — エンジン不明または該当スキルがない場合 → 質問するかGodotをデフォルトに;ギャップを明示。§6。
1. エンジン検出(プロジェクトフィンガープリント)
最も信頼性の高いシグナルをスキャンし、厳密に1つのエンジンを選択します。最初の一致で停止します。
| # | エンジン | プライマリシグナル | スキルセットルート |
|---|---|---|---|
| 1 | Godot | project.godot | skills/godot/ |
| 2 | Unreal | *.uproject | skills/unreal/ |
| 3 | Unity | Assets/ および ProjectSettings/ProjectVersion.txt | skills/unity/ |
| 4 | Bevy | bevy依存関係のあるCargo.toml | skills/other-engines/bevy-ecs/ |
| 5 | Phaser | package.jsonの依存関係phaser | skills/web-engines/phaser-* |
| 6 | PixiJS | package.jsonの依存関係pixi.js | skills/web-engines/pixijs-rendering/ |
| 7 | three.js | package.jsonの依存関係three | skills/web-engines/threejs-* |
| 8 | LÖVE | conf.lua / main.luaがlove.*を呼び出している | skills/other-engines/love2d-core/ |
| 9 | pygame | *.pyがimport pygameを含む | skills/other-engines/pygame-core/ |
| 10 | Roblox | *.rbxl(x) / *.project.json (Rojo) | skills/other-engines/roblox-* |
二次シグナル、Godot-C#/Unity/BevyおよびマルチWebの曖昧性解消ルール、モノレポ、プレーンテキストのエンジン言及については、references/engine-detection.mdを参照してください。
2. タスク分類(フレーズ → カテゴリ)
エンジン検出後、リクエストからタスクシグナルを読み取ります(3つの加算カテゴリ):
- 分野(エンジン横断的な概念):
game-ai、procedural-gen、dialogue-systems、save-systems、audio-design、shader-programming、physics-tuning、level-design、input-systems、game-feel、camera-systems、game-ui-ux、performance-optimization。概念ワード(「経路探索」、「セーブスロット」、「フラグメントシェーダー」、「画面振動」、「カメラ追従」、 「HUD/メニュー」、「最適化/低FPS」)によってトリガーされます。 - ジャンル(ゲーム全体のテンプレート):
platformer、roguelike、rpg、fps-shooter、tower-defense、card-game、visual-novel、survival-crafting、puzzle。ジャンルワード(「ローグライクを作る」、「デッキ構築」)によってトリガーされます。 - ワークフロー(プロセス/リリース):
game-jam、prototype-fast、steam-publish、itch-publish。プロセスワード(「Steamで公開」、「バーティカルスライス」)によってトリガーされます。
ファイルシグナルによりさらに精度が向上します:*.yarn/*.ink → dialogue-systems/visual-novel;steam_appid.txt → steam-publish;*.inputactions → unity-input-system。
3. ルーティングテーブル(タスク → カテゴリ → スキル)
3a. エンジンスキル — 検出されたエンジン + サブタスクに一致するものを読み取る
- Godot (
skills/godot/):言語godot-gdscript/godot-csharp;構造godot-nodes-scenes、godot-signals-groups;2Dgodot-2d-movement、godot-tilemap;3Dgodot-3d-essentials;物理godot-physics;UIgodot-ui-control;アニメーションgodot-animation;シェーダーgodot-shaders;データgodot-resources;オーディオgodot-audio;ネットコードgodot-multiplayer;出荷godot-export。 - Unity (
skills/unity/):スクリプティングunity-csharp-scripting;入力unity-input-system;物理unity-physics;アニメーションunity-animation;データunity-scriptableobjects;2Dunity-tilemap-2d;AIナビunity-navmesh;出荷unity-build-pipeline。 - Unreal (
skills/unreal/):ビジュアルスクリプティングunreal-blueprints;C++ゲームプレイunreal-cpp-gameplay;入力unreal-enhanced-input;AIunreal-behavior-trees;VFXunreal-niagara;出荷unreal-packaging。 - Web (
skills/web-engines/):phaser-core、phaser-arcade-physics;pixijs-rendering;threejs-scene-setup、threejs-gltf-loading、threejs-materials-lighting。 - その他 (
skills/other-engines/):bevy-ecs、pygame-core、love2d-core、roblox-luau、roblox-datastores。
3b. 分野 — エンジンスキルと一緒に読み込む(概念 ↔ エンジンAPI)
| 概念(発言) | 分野スキル | ペアになるもの(エンジンAPI) |
|---|---|---|
| 敵AI、ビヘイビアツリー、経路探索、ステアリング | game-ai | unity-navmesh / unreal-behavior-trees / Godot Nav |
| プロシージャル、ノイズ、シード、ダンジョン生成 | procedural-gen | エンジンのタイルマップ/グリッドスキル |
| ダイアログ、Yarn、Ink、会話ツリー | dialogue-systems | エンジンのUIスキル |
| セーブ/ロード、スロット、永続化 | save-systems | roblox-datastores / エンジンIO |
| 適応音楽、ミキサー、ダッキング、SFX | audio-design | godot-audio / Unity AudioMixer |
| シェーダー、フラグメント、ディゾルブ/アウトライン | shader-programming | godot-shaders / エンジンマテリアル |
| ジッター、トンネリング、固定タイムステップ | physics-tuning | godot-physics / unity-physics |
| ホワイトボックス、ブロックアウト、タイルレイアウト、ペーシング | level-design | godot-tilemap / unity-tilemap-2d |
| リバウンド、ゲームパッド、入力バッファリング | input-systems | unity-input-system / unreal-enhanced-input / Godot InputMap |
| 画面振動、ヒットストップ、ジャス、押しつぶし&伸ばし、「パンチを効かせる」 | game-feel | エンジンアニメーション/Tween + camera-systems(振動) |
| カメラ追従、デッドゾーン、先読み、オービット、一人称 | camera-systems | godot-2d-movement / godot-3d-essentials / Cinemachine |
| HUD、メニュー、UIレイアウト、スケーリング、セーフエリア、フォーカスナビ | game-ui-ux | godot-ui-control / Unity UI (UGUI/UI Toolkit) |
| 低FPS、最適化、ドローコール、GCスパイク、プーリング、プロファイラー | performance-optimization | エンジンプロファイラー + physics-tuning |
3c. ジャンル — エンジン + 分野をコンポーズする(*を検出されたエンジンにバインド)
| ジャンル(発言) | コンポーズ内容 |
|---|---|
| プラットフォーマー、ジャンプ、ダブルジャンプ | godot-2d-movement(またはエンジン物理) + godot-tilemap/unity-tilemap-2d + level-design + camera-systems + game-feel |
| ローグライク、プロシージャルダンジョン、パーマデス | procedural-gen + godot-tilemap/unity-tilemap-2d + game-ai + save-systems + game-feel |
| RPG、ステータス、インベントリ、クエスト | godot-resources/unity-scriptableobjects + dialogue-systems + save-systems + game-ui-ux |
| FPS、一人称、ヒットスキャン | godot-3d-essentials/unreal-cpp-gameplay + input-systems + game-ai + camera-systems + game-feel |
| タワーディフェンス、ウェーブ、レーン | game-ai + エンジン移動 + level-design + game-ui-ux |
| カードゲーム、デッキ構築、TCG | godot-resources/unity-scriptableobjects + game-ui-ux(+ エンジンUI) |
| ビジュアルノベル、分岐ストーリー | dialogue-systems + save-systems + game-ui-ux |
| サバイバル、クラフティング、採取 | save-systems + godot-resources/unity-scriptableobjects + procedural-gen + game-ui-ux |
| パズル、マッチ3、グリッドロジック | godot-tilemap/unity-tilemap-2d + level-design + game-feel |
3d. ワークフロー — エンジンに依存しないプロセスとリリース
game-jam(ジャム、48時間、Ludum Dare/GMTK)· prototype-fast(バーティカルスライス、MVP、グレーボックス)· steam-publish(Steam、Steamworks、デポ;steam_appid.txt)· itch-publish(itch.io、butler;.itch.toml)。
スキルごとの完全なトリガーリストとすべてのエンジンバインディングについては、references/routing-table.mdを参照してください。
4. 読み取りプロトコル(段階的開示)
- プリロード済み: 各スキルの
name+descriptionのみがコンテキストにあります。これらとフィンガープリントから判断してください — ボディを事前に読み取らないでください。 - 選択時: 選択された各
skills/<category>/<name>/SKILL.mdのボディを読み取ってください — そしてそれらのみ。カテゴリ全体を一括読み込みしないでください。 - 要求時: スキルのバンドルされた
references/ファイルは、サブタスクがその深さを必要とする場合にのみ読み取ってください(スキルボディがそのタイミングを指定します)。 - ピボット時に再ルーティング: タスクが変更された場合(移動 → セーブ)、新しい関連スキルを選択して読み取り、すべてを読み込んだままにしないでください。
何を、なぜ読み込んだのかを宣言してください。例:「Godotを検出しました(project.godot)。コントローラー用にgodot-2d-movement、ジャンプ感覚用にplatformerを読み込みます。必要であれば、プラットフォーマースキルのfeel-tuning.mdリファレンスを開いて、コヨーテタイム/バッファリングについて確認できます。」
5. コンポジションルール
- 1つのエンジンセット、加算的概念。 厳密に1つのエンジンスキルセット;タスクに必要な分野を追加し、通常は最大1つのジャンル。ワークフローは独立してアタッチします。
- 順序: エンジン基礎 → 分野概念 → ジャンルオーケストレーション → ワークフロー。
- 重複時の所有権: エンジンスキルがAPI/構文を所有;分野スキルがポータブルな概念/アルゴリズムを所有し、コードについてはエンジンスキルに委譲;ジャンルスキルが構造/グルーを所有し、プリミティブを再教育する代わりに外部リンクします。
- ハンドオフ: ジャンルの
composesが*-2d-movementのようなスロットを指定する場合、検出されたエンジンにバインドします。そのエンジンに正確なスキルがない場合は、§6およびreferences/routing-table.md(「バインディングギャップ」)を参照してください。
6. 不明エンジン&スキルなしの場合のフォールバック
エンジン不明(フィンガープリントなし、エンジン名の指定なし):
- リクエスト内のプレーンテキストのエンジン名を確認します(「Unityで」、「Phaserを使って」)。見つかった場合はそれを採用します。
- タスクが純粋な概念/ジャンル/ワークフローの質問である場合、エンジンに依存しない分野/ジャンル/ワークフロースキルに直接ルーティングします — エンジンは不要です(「良いセーブ形式は何?」 →
save-systems)。 - エンジンの選択が実際に回答を妨げる場合にのみ、1つのターゲットを絞った質問をします(「どのエンジン — Godot、Unity、Unreal、またはWeb/その他のエンジン?」)。ユーザーに好みがなく、必要である場合、Godotをデフォルトにし(ここで最もカバレッジの高いエンジン)、その旨を伝えます。
- エンジンを推測したり、推測でエンジンスキルを読み込んだりしないでください。
エンジンは既知だが、サブタスクをカバーするスキルがない場合: 最も近いエンジンスキルと関連分野を読み込み、ギャップを明確に述べてください(例:「専用のUnity 2D移動スキルはありません。unity-csharp-scripting + unity-physicsを使用します」)。スキル名をでっち上げないでください。
複数ジャンルの競合: フレーズから支配的なジャンルを選択します。二次的なジャンルに言及し、ユーザーが確認した場合に読み込むことを提案します。
使用例
| リクエスト | 検出されたエンジン | 読み込まれたスキル(順序通り) |
|---|---|---|
| 「Godotのプレイヤーにダブルジャンプを追加して」 | Godot (project.godot) | godot-2d-movement → platformer |
| 「Unity RPGのインベントリを作って」 | Unity (Assets/+ProjectSettings/) | unity-scriptableobjects → rpg → save-systems |
| 「Godotでプロシージャルダンジョンのローグライク」 | Godot | godot-tilemap → procedural-gen → roguelike |
「.yarnファイルからの分岐ダイアログ」 | (不要) | dialogue-systems(+ エンジンが検出された場合はエンジンUIスキル) |
| 「マイグレーション付きのセーブスロットを設計するには?」 | (なし) | save-systemsのみ |
| 「butlerでゲームをitchに公開する」 | (任意/なし) | itch-publishのみ |
| 「ゲームを作りたいけど何を使えばいいかわからない」 | 不明 → 質問、デフォルトGodot | ルーターが一度質問;その後、例:godot-nodes-scenes |
| 「Godotゲームのヒットをパンチィにしたい」 | Godot (project.godot) | game-feel(+ 振動用camera-systems) |
| 「カメラがプレイヤーをスムーズに追従するようにしたい」 | (検出されたエンジン) | camera-systems(+ エンジン移動スキル) |
| 「Unityゲームが30FPSに落ちる、最適化して」 | Unity (Assets/+ProjectSettings/) | performance-optimization(最初にプロファイリング) → エンジンスキル |
参考文献
- 完全なエンジンフィンガープリント、二次シグナル、曖昧性解消:
references/engine-detection.md。 - スキルごとの完全なトリガーワード、エンジンバインディング、バインディングギャップ:
references/routing-table.md。