🎮 Phaser Editor v5 用 MCP サーバー
この Model Context Protocol (MCP) サーバー は、LLM を Phaser Editor v5 に接続するためのツールを提供します。Phaser Editor の IDE 機能とシームレスに連携するように設計されており、開発者がゲームシーンを効率的に作成・管理できるようにします。
📦 インストール
このサーバーは NPM パッケージとして利用できます。Cursor、Claude Desktop、GitHub Copilot などの MCP ホストの設定で使用できます。
以下は Cursor 用設定ファイルの例です:
{
"mcpServers": {
"phaser-editor": {
"command": "npx",
"args": ["@phaserjs/editor-mcp-server"]
}
}
}
このサーバーは、実行中の Phaser Editor v5 デスクトップアプリケーションに接続します。プロジェクトへのすべての変更は、実行中の Phaser Editor インスタンスを通じて行われます。
💻 コーディング
このサーバーが提供するすべてのツールは、Scene Editor、Asset Pack Editor など、Phaser Editor の機能と連携するように特別に調整されています。これらのツールは、プロジェクトのソースコードを直接変更するためのものではありません。ただし、Cursor などのコードエディタと併用すると、Phaser Editor 独自のファイルとプロジェクトのソースコードの両方に同時にアクセスでき、強力で統合された開発ワークフローを実現します。
Phaser Editor プロジェクトテンプレートのいずれかから始めることをおすすめします。これらのテンプレートは Cursor とのシームレスな統合のために事前設定されています。必要な設定と、LLM が Phaser Editor 独自のファイルおよびプロジェクトのソースコードとやり取りする方法を理解するためのルールが含まれています。
🧠 トレーニングレベルで LLM ベースのコンテンツ生成を強化する
大規模言語モデル (LLM) は、高品質で文脈に沿った例が与えられると、新しいコンテンツを生成するのが得意です。これは特にゲームレベル生成で効果的です。この能力を最大限に活用するには、モデルに再現してほしい概念や要素を明確に表現したトレーニングレベルを作成するのが良い習慣です。
🎯 トレーニングレベルが重要な理由
トレーニングレベルは、ゲームの構造とロジックを定義する具体的な例として機能します。これらの例は、LLM が関与するコンポーネントとそれらがどのように相互作用するかを理解するのに役立ち、設計に沿った新しいレベルを生成できるようにします。
たとえば、タイルマップベースのレベルを扱う場合、ゲームで使用される主要なオブジェクトを含む TrainingLevel シーンを作成できます。明確さと意味理解を向上させるには:
- オブジェクトごとに1 レイヤーを使用します。
- 各レイヤーに
pipe、cloud、mountain などの説明的な識別子を付けます。
この構成により、LLM はパターンを検出し、新しいコンテンツ生成タスクに適用しやすくなります。
👁️ 視覚ツールは役立つが、コンテキストが鍵
MCP サーバーは、テクスチャ画像を検査し、シーンの「スクリーンショット」を生成するツールを提供します。これらの視覚情報は役立ちますが、LLM がゲームのコンテキストとロジックを完全に把握するには常に十分とは限りません。
そのため、構造化され適切にラベル付けされたトレーニングレベルを作成することが不可欠です。これらのレベルは、より豊かで実行可能なコンテキストを提供し、モデルが正確で関連性の高いゲームコンテンツを生成する能力を高めます。
🧰 ツール概要
このプロジェクトは、Phaser Editor 環境内でシーン、アセット、タイルマップ、アニメーションなどを管理するための包括的なツールセットを提供します。以下は、主な機能ごとにグループ化した利用可能なすべてのツールの概要です。
🖥️ IDE ツール
| ツール |
説明 |
ide-get-all-scenes-in-project |
プロジェクト内のすべてのシーンを一覧表示します。 |
ide-get-active-scene |
エディタで現在フォーカスされているシーンを取得します。 |
ide-open-scene |
エディタでシーンを開きます。 |
ide-create-new-scene |
新しいシーンファイルを作成します。 |
ide-save-scene |
シーンのエディタ状態を保存します。 |
🎨 アセットツール
| ツール |
説明 |
assets-get-available-textures |
プロジェクト内の利用可能なすべてのテクスチャを一覧表示します。 |
assets-get-texture-binary |
テクスチャのバイナリデータを取得します。 |
assets-get-available-bitmapfonts |
利用可能なすべてのビットマップフォントを一覧表示します。 |
assets-get-bitmapfont-image |
ビットマップフォントの PNG 画像/テクスチャを取得します。 |
assets-get-spritesheet-image |
スプライトシートの PNG 画像/テクスチャを取得します。 |
assets-get-texture-content-bounding-box |
テクスチャコンテンツのバウンディングボックスを取得します。 |
assets-get-available-animations |
利用可能なすべてのスプライトアニメーションを一覧表示します。 |
assets-get-available-spine-skeletons |
プロジェクト内のすべての Spine スケルトンを一覧表示します。 |
assets-get-available-spine-atlases |
プロジェクト内のすべての Spine アトラスを一覧表示します。 |
assets-get-spine-skeleton-info |
Spine スケルトンの情報 (アニメーションとスキン) を取得します。 |
assets-get-spine-skin-image |
Spine スキンの PNG 画像を取得します。 |
assets-get-available-tilemaps |
利用可能なすべての Tiled タイルマップファイルを一覧表示します。 |
assets-get-tilemap-data |
Tiled タイルマップファイルのデータを取得します。 |
🎬 シーンツール
| ツール |
説明 |
scene-clear-scene |
現在のシーンをクリアします。 |
scene-get-scene-dimension |
現在のシーンの寸法を取得します。 |
scene-get-screenshot |
シーンのスクリーンショットを取得します。 |
scene-get-scene-data |
現在のシーン内のすべてのオブジェクトを、そのプロパティを含めて取得します。 |
scene-move-game-object-in-render-list |
現在のシーン内のオブジェクトを並べ替えます。 |
scene-delete-game-objects |
指定されたゲームオブジェクトをシーンから削除します。 |
scene-move-game-objects-to-parent |
オブジェクトを指定された親に移動します。 |
scene-pack-objects-in-container |
オブジェクトをコンテナにグループ化します。 |
scene-delete-plain-objects |
指定されたプレーンオブジェクトをシーンから削除します。 |
scene-add-game-objects |
複数の新しいゲームオブジェクトをシーンに追加します。 |
scene-update-game-objects |
シーン内の複数のゲームオブジェクトを更新します。 |
scene-add-plain-objects |
複数の新しいプレーンオブジェクトをシーンに追加します。 |
scene-update-plain-objects |
シーン内の複数のプレーンオブジェクトを更新します。 |
🗺️ 編集可能タイルマップツール
| ツール |
説明 |
scene-add-editable-tilemap |
新しい編集可能タイルマップをシーンに追加します。編集可能タイルマップは完全に変更可能で、プレーンオブジェクトとして表現されます。 |
scene-add-tileset-to-editable-tilemap |
編集可能タイルマップにタイルセットを追加し、すべてのレイヤーのタイル ID を更新します。 |
scene-delete-tileset-from-editable-tilemap |
編集可能タイルマップからタイルセットを削除し、すべてのレイヤーのタイル ID を更新します。 |
scene-add-editable-tilemap-layer |
編集可能タイルマップとシーンに新しいレイヤーを追加します。 |
scene-resize-editable-tilemap-layer |
編集可能タイルマップレイヤーのデータをサイズ変更します。 |
scene-write-editable-tilemap-layer-data |
効率的な変更のために、レイヤー内のタイルデータの一部を更新します。 |
scene-fill-editable-tilemap-layer-data |
レイヤーの領域を単一のタイル ID で塗りつぶします。 |
scene-get-editable-tilemap-layer-selection-data |
レイヤーから選択したタイルデータを 2D 配列として取得します。 |