mcpField
G
generate2dmap

generate2dmap

github.com/0x0funkyクリエイティブ・メディア4.6k281 回インストール3 週間前に更新
リポジトリ

generate2dmap について

generate2dmapは、2Dゲームのマップやシーン素材を作るスキルです。プレイ可能なマップデータや背景画を必要とする制作者向けで、背景画と明示的な形状・データを持つマップを区別し、検証・プレビュー・書き出しの手順を備えています。

主な機能

  1. 01シーンとマップデータの計画
  2. 02地形やプロップ素材の作成と整理
  3. 03マップのナビゲーションデータ検証
  4. 04シーンのプレビューとルート確認
  5. 05Tiled、Godot、LDtkへの書き出し

活用シーン

  1. 01出口と衝突データを持つレベルの制作
  2. 02戦闘やストーリー用背景の作成
  3. 03マップデータのゲームエンジンへの書き出し
  4. 04ルート確認とマップのプレビュー

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/0x0funky/agent-sprite-forge --skill generate2dmap

インストール後、Claude Code で/generate2dmapを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
background-scenes.md
engine-maps.md
hd2d-plates.md
hd2d-presentation.md
layered-map-contract.md
map-presets.md
map-strategies.md
parallax-backgrounds.md
prop-pack-contract.md
scene-preview.md
side-scroll-scenes.md
references/runtime/
map-runtime.mjs
references/schemas/
common.schema.json
map.schema.json
scripts/
build_motion_mask.py
build_scene_preview.py
compose_layered_preview.py
conform_background.py
edit_locality_check.py
export_godot.py
export_ldtk.py
export_tiled.py
extract_platform_strip.py
extract_prop_pack.py
extract_scene_lights.py
extract_terrain_tiles.py
forge_av.py
forge_core.py
forge_matte.py

詳細

2D マップを生成する

ゲームのアート、カメラ、レンダラー、データ規約に沿って、リクエストに必要な最小限のシーンバンドルを作成します。 背景画像にゲームシステムは不要ですが、プレイ可能なマップには、絵だけでなく明示的なジオメトリとデータが必要です。

使用する場合

  • コリジョンと出口を備えた、プレイ可能なマップ、レベル、ルームセット、タイルマップ、地形、プロップキット。
  • パララックス背景、バトル、タイトル画面やストーリーの背景、またはライトと動きを備えた HD-2D プレート。
  • マップデータを検証、プレビュー、または Tiled、Godot、LDtk にエクスポートする必要がある場合。

使用しない場合

  • アクター、アイテム、攻撃エフェクト:generate2dsprite。動画からキャラクターの動きを作成する場合:video2dsprite。
  • ユーザーが求める、コードで描画するタイル、レイアウト、パララックス:codeart2d。API または CLI の呼び出しのみの場合:generate2dmedia。

機能の確認(セッションごとに1回)

python "<skill-dir>/../generate2dmedia/scripts/forge_doctor.py" --host-tools <tools> --save <output>/doctor.json を実行します。<tools> には、使用できるツールの一覧にあるメディアツール(image_gen、image_edit、image_to_video)を列挙するか、none を指定します。ROUTES ブロックに、設定済みの API キー(yes または no)、ローカル環境の準備状況、解決された順序が表示されます。encoding.stdout が失敗する場合は、PYTHONUTF8=1 を設定してください。

アートソース

マップアートでは画像生成をデフォルトとします。対象は地形やタイルシート、プロップキット、HD-2D プレート、ペイント済みの背景、パララックスレイヤーです。マップデータ(レイアウト、コリジョン、出口、スポーン)は、作成して検証するデータであり、アートではありません。各アセットの art_source(api、host_image、existing、またはリクエストがあった場合のみ code)を記録し、返信で使用したルートを示します。ユーザーが明示的に指定したルートを優先します。

  1. API:キーが設定されている場合は、OpenAI(OPENAI_API_KEY)、Google Gemini(GEMINI_API_KEY)、xAI(XAI_API_KEY)、BytePlus Seedream(ARK_API_KEY)、fal.ai(FAL_KEY)を使用します。キーは環境変数またはユーザーの設定ファイルで設定します(route-media.md)。設定済みのキーは所有者の同意を意味するため、呼び出しごとに確認する必要はありません。
  2. ローカル:使用できる場合は、自分の画像ツール(Codex image_gen、Grok のネイティブツール)を使用します。使用できない場合は、ユーザーがログイン済みの Codex CLI、続いて Grok CLI を使用します。
  3. codeart2d(オートタイル、レイアウト、スタイライズされたパララックス、アンビエントループ)は、ユーザーがコードで描画するアートを明示的に求めた場合、または route_media.py が no-route(終了コード 3)を出力した場合にのみ使用します。その場合は「コード描画、画像モデルなし」と伝えます。

すべての画像で、次のコマンドを使用します:python "<skill-dir>/../generate2dmedia/scripts/route_media.py" image --prompt-file <txt> --reference <png> --size 1536x1024 --out-dir <new>。マスク付きプレートの動きには route_media.py video を使用します。各コマンドは route、artifact、sha256、estimateUsd を含む1行の JSON を出力します。ユーザーから提供された既存のアートはいつでも使用できます。実際に生成していないものを生成したと主張してはいけません。プロンプトと要件を維持し、利用できない機能があれば報告してください。

ホストに関する注意

  • Codex: image_gen は自分の画像ツールです。設定済みのキーがない場合はこれを使用し、view_image で結果を確認します。このセッションで作成した、プロジェクト内にない画像は、python "<skill-dir>/../generate2dmedia/scripts/cli_media.py" adopt --codex-thread <thread-id> --output-dir <new> で取り込みます。codeart2d と generate2dmedia は明示的に指定された場合のみ使用します。ここからルートが切り替わる場合は、それらの SKILL.md を開いてください。
  • Claude Code: 組み込みの画像生成機能はありません。route_media.py は API またはローカル CLI を使用します。作成したすべての PNG を Read で確認してください(デバッグ用オーバーレイ、プレビューを含む)。Bash でツールを実行します。<skill-dir> は ${CLAUDE_SKILL_DIR} です。
  • Grok: ネイティブの画像・動画ツールは自分のツールです。実際のスキーマを使用してください。

コマンド

各ツールは、ユーザーのプロジェクトルートから次の形式で1行のコマンドとして実行します:python "<skill-dir>/scripts/<tool>.py" ...。<skill-dir> はこのスキルのフォルダーです。関連スキルはその隣にあります(<skill-dir>/../codeart2d)。入力と出力はプロジェクト内に置いてください。各ツールは新しい --output-dir(または新しい --output ファイル)に出力します。既存の出力先がある場合は拒否し、出力先の隣にステージングしたうえで、チェックを通過した場合にのみ公開します(--strict-qc / --strict の場合、失敗すると何も公開されません)。成功時はJSONを1行出力します。エラー時は error: ... を出力して終了コード1で終了します。使い方の誤りがある場合は終了コード2で終了します。Python 3.10以降、numpy、Pillowが必要です(scipyを推奨)。シーンの動きにはffmpeg 5.1以降、ブラウザーランタイムにはnodeが必要です。すべてのフラグは --help で確認できます。

アート制作の前に計画する

ビューポートと論理解像度、ワールドの範囲、原点、カメラとズーム、アクターのスケールと占有範囲、ルート、ランドマーク、インタラクション、出口、描画順を記録します。ソース画像のピクセル数はワールドの単位ではありません。返されるサイズを測定し、均一なスケールとアンカーを指定してください。動作に応じて選択します(map-strategies.md、ジャンルごとの初期値はmap-presets.mdを参照してください)。

  • scene_mode:オーサリングされたエリア、町、またはアリーナ。地形に小道具と明示的なジオメトリを組み合わせます。
  • tile_mode / grid_mode:繰り返し可能または編集可能な地形、あるいはセルのルール。タイルにレイヤーデータを組み合わせます。
  • room_chunk_mode:共通のキットとドア用ソケットから、つながった部屋を作成します。
  • side_scroll_mode:横視点の背景、または移動用ジオメトリを備えたプレイ可能なプラットフォームステージ。
  • baked_scene_mode:戦闘、タイトル、ストーリーの完成済み画像。ホットスポットや範囲を限定した動きを追加することもできます。

インタラクション、奥行き、再利用、編集、動きに必要な場合にのみ、オブジェクトを分割します。ピクセルアートでは論理ピクセルを慎重に決め、最近傍拡大を使用する必要があります。HD-2Dでは、ピクセルアートのアクターに、描き込まれた背景と光を組み合わせます。

パイプライン

ナビゲーションを設計し、アートとキットを作成して配置し、データを検証してプレビューし、エクスポートします。プレイ可能なマップは map_bundle.v2 です(layered-map-contract.md)。

必要なもの方法
シートからプロップを作成extract_prop_pack.py --input <sheet> --rows R --cols C --labels a,b --output-dir <new>(--grid-rounding nearest、--auto-boxes、--boxes-file <json> --keep-canvas、--world-scale 3/8、--suggest-footprint ellipse)。anchor_px を基準に配置します(prop-pack-contract.md)
地形の塗りつぶし、オーバーレイ、アイソメトリックまたは六角形、Wangタイルの行extract_terrain_tiles.py --strict-qc(--layer overlay、--shape iso-diamond、--wang NAME=A/B:MASKS。--edge-policy seamless はタイル状にするアートにのみ使用します)
プラットフォームの端と中間部分extract_platform_strip.py --strict-qc(side-scroll-scenes.md)
コードで描画するオートタイル(依頼があった場合のみ)codeart2d autotile_build.py(継ぎ目を検証したタイルセットマニフェスト)を実行し、その後エクスポーターを使用します
コードで描画するプレイ可能なマップ(依頼があった場合のみ)codeart2d layout_build.py(map_bundle.v2 を書き出します)を実行し、その後 map_nav.py check とエクスポーターを使用します
描画順、接触アンカー、配置の監査compose_layered_preview.py --base <png> --placements <json> --output <png> --report <json>。--bundle <map_bundle.json> --debug-overlay --audit-out <json> を指定した場合は、両方を確認します
プレイ可能なマップを検証map_bundle.py validate --bundle <b>(map_bundle.py hash で sha256 を補完)を実行し、その後 map_nav.py check --bundle <b> --output-dir <new> を実行します(隣接する各タイルに --link を指定)。nav-debug.png を確認します。map_nav.py query で地点または移動をテストします
マップを歩いて、すべてのルートを確認build_scene_preview.py --bundle <b> --output-dir <new> --verify を実行します。scene-snapshot.json を添付します(scene-preview.md)
エクスポートexport_tiled.py export --bundle <b> --output-dir <new>(Phaser には --embedded-variant を指定)。export_godot.py --bundle <b> --output-dir <new>。export_ldtk.py --bundle <b> --output-dir <new>(engine-maps.md)
部屋のチャンク、サイドスクロールの文法validate_chunks.py --chunks <json> --output-dir <new>。validate_layout.py --layout <json> --output-dir <new>
パララックスvalidate_parallax.py --spec <plan> --report <qa.json>(camera.pivot と、出荷する aspects を宣言します)。依頼があった場合は、コード描画レイヤーに codeart2d parallax_build.py を使用します(parallax-backgrounds.md)
ゲームの画面サイズや床に合わせて絵画を調整conform_background.py conform --mode cover または --mode ground-fit。すべての画面アスペクト比で被写体を確認するには、conform_background.py validate-crops を使用します
HD-2Dプレートhd2d-plates.md:stage.json を計画し、scene_layout_guide.py を実行し、guide.png を添付して生成した後、validate_stage.py --stage <json> --output-dir <new> を実行します。すべての layout-*.png を確認します
ライト、影、雰囲気hd2d-presentation.md:extract_scene_lights.py extract --stage <json> を実行し、lights.json を調整します
プレートの夜間版、ライティング版、損傷版edit_locality_check.py --before <master> --after <variant> --stage <json> --edit-box <box> を実行します。失敗した場合は再生成します
静止プレート上の水、炎、霧、布background-scenes.md:build_motion_mask.py --envelope-from <clip> を実行し、scene_motion.py build を実行した後、デコードしたファイルに対して scene_motion.py qa を実行します。依頼があった場合は、コード描画の波紋や光彩に codeart2d ambient_bake.py を使用します
全フレームのシーンループgenerate2dsprite assemble_frames.py(--static-regions、--loop-overlap K --ambient)
Webゲームのコリジョンとパスreferences/runtime/map-runtime.mjs(map_nav.py と同じルール)

受け入れ基準

  • プレイ可能なマップとして受け入れられるのは、map_bundle.py validate と map_nav.py check が合格し、build_scene_preview.py のルートチェックで、すべてのルートについて ok: true と示された場合のみです。map_nav が証明するのはデータ上の到達可能性であり、コリジョンが描画されたアートと一致することではありません。
  • ゲーム内スケールの代表的なアクターを配置して合成し、スポーン地点の空き、コライダーと樹冠の位置関係、ポータル到着地点の相互性、接続部、繰り返し時の継ぎ目、カメラの映る範囲を確認してください。
  • プレートを使用する場合、ステージの最良ステータスは needs-visual-review です。ループをシームレスと称する前に、scene_motion.py qa の数値(デコード後の継ぎ目、フレーム数、fps、keyint、バイト数)を引用してください。
  • ネイティブアルファでは紫を保持する必要があります。RGB のチェッカーボードは透明ではありません。モバイルでのパフォーマンスを主張する前に、実機でテストしてください。
  • オリジナルとプロンプトを、由来情報(ルート、モデル、estimateUsd)とともに納品してください。ランタイムアセットとデータ、プレビュー、実施したチェック、残る制限も含めてください。
  • 公開する各 QA エンベロープから、WARN または FAIL のチェックをすべて(id、値、しきい値、ファイル)原文どおりに報告してください。公開されたエンベロープに warn が1つでもある場合、「すべてのチェックに合格」と言ってはいけません。

参考資料

map-strategies.md、map-presets.md、layered-map-contract.md、prop-pack-contract.md、side-scroll-scenes.md、parallax-backgrounds.md、background-scenes.md、hd2d-plates.md、hd2d-presentation.md、scene-preview.md、engine-maps.md。データ契約は references/schemas/map.schema.json を参照してください。

コメント