generate2dmap について
generate2dmapは、2Dゲームのマップやシーン素材を作るスキルです。プレイ可能なマップデータや背景画を必要とする制作者向けで、背景画と明示的な形状・データを持つマップを区別し、検証・プレビュー・書き出しの手順を備えています。
主な機能
- 01シーンとマップデータの計画
- 02地形やプロップ素材の作成と整理
- 03マップのナビゲーションデータ検証
- 04シーンのプレビューとルート確認
- 05Tiled、Godot、LDtkへの書き出し
活用シーン
- 01出口と衝突データを持つレベルの制作
- 02戦闘やストーリー用背景の作成
- 03マップデータのゲームエンジンへの書き出し
- 04ルート確認とマップのプレビュー
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ 0x0funky/ agent-sprite-forge --skill generate2dmapインストール後、Claude Code で/generate2dmapを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/background-scenes.mdengine-maps.mdhd2d-plates.mdhd2d-presentation.mdlayered-map-contract.mdmap-presets.mdmap-strategies.mdparallax-backgrounds.mdprop-pack-contract.mdscene-preview.mdside-scroll-scenes.mdreferences/runtime/map-runtime.mjsreferences/schemas/common.schema.jsonmap.schema.jsonscripts/build_motion_mask.pybuild_scene_preview.pycompose_layered_preview.pyconform_background.pyedit_locality_check.pyexport_godot.pyexport_ldtk.pyexport_tiled.pyextract_platform_strip.pyextract_prop_pack.pyextract_scene_lights.pyextract_terrain_tiles.pyforge_av.pyforge_core.pyforge_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)を記録し、返信で使用したルートを示します。ユーザーが明示的に指定したルートを優先します。
- 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)。設定済みのキーは所有者の同意を意味するため、呼び出しごとに確認する必要はありません。 - ローカル:使用できる場合は、自分の画像ツール(Codex
image_gen、Grok のネイティブツール)を使用します。使用できない場合は、ユーザーがログイン済みの Codex CLI、続いて Grok CLI を使用します。 - 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 を参照してください。