0x0funky/generate2dmap
Generate and revise production-oriented 2D game maps with built-in image generation as the default visual asset source, choosing a visual model, runtime object model, collision model, art direction, and engine/export target. Use when Codex needs to create or integrate RPG maps, monster-taming maps, tactical arenas, battle backgrounds, side-scroller/parallax scenes, tilemaps, layered raster maps, clean HD hand-painted maps, pixel-inspired maps, prop packs, collision zones, walkable areas, or map previews.
npx skills add https://github.com/0x0funky/agent-sprite-forge --skill generate2dmap
Build the smallest playable map bundle that satisfies the game. Start by choosing a user-facing map_mode, then map it to the lower-level pipeline axes. Do not treat a map as only one image unless the user explicitly asks for a flat visual background.
map_mode: tile_mode | scene_mode | side_scroll_mode | grid_mode | room_chunk_mode | baked_scene_modevisual_model: baked_raster | layered_raster | tilemap | layered_tilemap | parallax_layersruntime_object_model: none | separate_props | platform_objects | y_sorted_props | interactive_scene_objects | foreground_occluders | scene_hookscollision_model: none | coarse_shapes | precise_shapes | tile_collision | polygon_walkmesh | trigger_zonesengine_target: raw_canvas | Phaser | Tiled_JSON | LDtk | Godot_TileMap | Unity_Tilemap | project-nativeUse user-specified parameters when present. When the user does not specify them, infer the lightest playable pipeline from the existing game, camera, collision needs, map scale, and editing needs.
For requests that imply a playable game map, level, stage, room, prototype, or engine scene, do not ship a single baked image as the runtime map unless the user explicitly asks for a flat background only. A baked image may be a background, reference, or preview artifact, but the playable deliverable must expose gameplay geometry and objects as separate layers, props, tile/object data, collision, zones, or engine-native scene nodes.
This skill is for scenes and maps. Do not generate character, enemy, boss, projectile, NPC, player, or animation sprite assets as map deliverables. The map may include scene hooks such as player spawns, actor spawn marker metadata, patrol/encounter zones, arena entrances, gates, exits, and camera triggers, but actor artwork, projectiles, and animations belong in $generate2dsprite.
Read references/map-strategies.md when the pipeline choice is not obvious. Read references/layered-map-contract.md before implementing a layered raster map. Read references/prop-pack-contract.md before batching generated props into a sheet.
Use map_mode as the first decision. It is a product-level preset that chooses the initial pipeline axes and expected deliverables:
tile_mode: editable tile/grid maps for RPGs, monster-taming games, platformers, tactical maps, factory games, and engines/editors that already use tiles. Default axes: tilemap or layered_tilemap + interactive_scene_objects + scene_hooks + tile_collision + trigger_zones.scene_mode: base map plus separate props for tower defense, survivors-like arenas, cozy demos, top-down adventure scenes, and visual showcase maps. Default axes: layered_raster + separate_props or y_sorted_props + interactive_scene_objects + scene_hooks + precise_shapes + trigger_zones.side_scroll_mode: parallax side-scroller stages for action platformers, runners, Metroidvania rooms, side-view shooters, and beat-em-up stages. Default axes: parallax_layers + platform_objects + interactive_scene_objects + foreground_occluders + scene_hooks + precise_shapes.grid_mode: rule-heavy grid scenes for tactical RPGs, factory/automation games, board/card battlers, build grids, and terrain-cost maps. Default axes: layered_tilemap or tilemap + interactive_scene_objects + scene_hooks + tile_collision or grid metadata.room_chunk_mode: modular rooms/chunks for roguelikes, Metroidvania rooms, dungeon rooms, and procedural level assembly. Default axes: layered_tilemap or parallax_layers or layered_raster + object layers + exits/connection metadata + collision.baked_scene_mode: fixed battle backgrounds, title/menu screens, boss-room concept art, visual novel scenes, point-and-click backgrounds, or other explicitly flat/non-editable scenes. Default axes: baked_raster + none or coarse_shapes.When the mode and lower-level axes disagree, the mode's playable/editable contract wins. For example, side_scroll_mode always needs separate collision and platform/object data even if it also produces a beautiful full-width preview image.
When the user gives a genre instead of a technical map mode, choose the mode conservatively:
tile_mode with optional separate props, encounter zones, exits, NPC spawn markers, and collision.scene_mode with path metadata, build slots, props, collision/blockers, spawn/exit hooks, and optional engine scene scaffold.scene_mode or tile_mode depending on map scale; keep obstacles sparse, define spawn rings/zones, camera bounds, and collision separately.side_scroll_mode.side_scroll_mode with a walkable belt polygon instead of jump-platform geometry; use parallax/background depth plus props, enemy wave zones, and camera bounds.grid_mode.room_chunk_mode.baked_scene_mode unless gameplay/editability is requested.This skill is image-generation-first for visual assets. Use built-in image_gen as the default creative art source for base maps, in-world reference mockups, dressed references, stage references, prop sheets, prop sprites, tileset art, parallax layers, battle backgrounds, and other visible map assets.
The agent must write the creative image prompts itself. Do not use scripts to generate creative prompts or to procedurally draw final visual art. Scripts may assemble, slice, chroma-key, crop, validate, compose previews, emit JSON metadata, and wire image-generated assets into engine-native files such as Godot .tscn scenes.
Save every manually written image-generation prompt next to the generated asset as <asset>.prompt.txt or in an explicit manifest field. Do not leave accepted generated assets with empty prompt metadata when the run creates new visual assets.
Only use procedural drawing or scripted placeholder art when the user explicitly asks for placeholders, test fixtures, debug maps, or engine scaffolding without final art. If using an engine target such as Godot_TileMap, generate or reuse the visual tileset art first, then use scripts/code only to build tile layers, collision, zones, and scene wiring.
When generating an in-world reference mockup from an existing generated base/background, the prior image must be treated as an active visual reference, not just a file path or loose style hint:
image_gen call, make that exact image visible in conversation context. If it is a local file, call view_image on the saved file.image_gen prompt, explicitly say to use the visible image immediately above as the visual reference.Do not rely on a path string, filename, or generic wording like "based on the map" as the reference handoff. If the base/background is not visible in context, stop and make it visible before generating the dressed reference or stage reference.
For any playable or editable layered map, the first generated base/background/foundation image must not bake in objects that the runtime should control separately. This applies across perspectives and styles: top-down RPG maps, monster-taming maps, tactical arenas, tower-defense lanes, side-view platformers, parallax stages, tile/editor workflows, clean HD, pixel-inspired, and retro pixel art.
The base/background/foundation layer may contain only stable non-interactive foundation art:
The base/background/foundation layer must not contain runtime-controlled objects unless the user explicitly asked for a single baked image:
If a generated base/background already contains those runtime objects, do not use it as the runtime base. Regenerate a cleaner foundation-only base or demote that image to a concept/reference artifact. The next in-world reference mockup is where proposed objects may appear, and the final runtime must still use separate generated props, platform objects, object layers, tile layers, collision, zones, and scene-hook metadata as appropriate.
User-facing parameters may be stated in natural language:
map_mode: tile_mode | scene_mode | side_scroll_mode | grid_mode | room_chunk_mode | baked_scene_modemap_kind: overworld | town | dungeon | shrine | arena | battle_bg | side_scroller | side_view_action | platformer | metroidvania | brawler | tower_defense | survivors_like | tactical | factory | card_board | room_chunkvisual_model: baked raster | layered raster | tilemap | layered tilemap | parallaxsize: pixel dimensions, tile dimensions, or camera-relative sizestage_canvas: exact pixel dimensions and aspect ratio for side-scroll/parallax layers, references, and previewsstage_segment_count: number of camera-width chunks for a side-scroll stageperspective: top-down | 3/4 top-down | side-view | isometric-likeart_style: clean_hd | pixel_inspired | retro_pixel | hand_painted | project-nativevisual_asset_source: image_gen | existing_assets | procedural_placeholdercollision_precision: none | coarse | precise | tile | walkmeshtile_generation: none | terrain_tile_bundle | autotile_set | engine_native_tilesetplatform_strategy: platform_rects_with_shared_tiles | platform_strip | tilemap | custom_terrain_chunksprop_generation: none | one_by_one | prop_pack_2x2 | prop_pack_3x3 | prop_pack_4x4 | platform_strip_1x3 | platform_strip_1x4 | custom_wide_packoutput_format: PNG only | layered preview | manifest JSON | engine-native map dataWhen unspecified:
image_gen as the visual asset source.map_mode from genre and editing needs before selecting lower-level axes.tile_mode for Pokemon-like, top-down RPG, monster-taming, editor/grid-perfect, or tilemap requests.scene_mode for tower defense, survivors-like, cozy/top-down showcase maps, and base-map-plus-props requests.side_scroll_mode for side-scrollers, platformers, runners, side-view action, brawlers, Metroidvania side rooms, Mega Man-like, Castlevania-like, Contra-like, and parallax background requests.side_scroll_mode, choose a canonical stage_canvas before image generation. Use the project camera/viewport aspect when available; otherwise default to a 16:9 side-scroller canvas such as 1536x864. All primary parallax plates, stage references, and previews must preserve this same size/aspect.side_scroll_mode, choose stage_segment_count before image generation. Default to 2 camera-width segments for a normal playable scrolling level. Use 1 only for explicit one-screen rooms, boss arenas, title-like scenes, or fixed battle rooms; use 3 or more only when the user asks for a longer stage or the existing game already has that scope.side_scroll_mode, default platform_strategy to platform_rects_with_shared_tiles: write platform rectangles or engine-native platform objects as the gameplay source of truth, then skin them with a shared generated platform tile/strip library. Do not rely on a generated background or generic prop pack for platform shape.grid_mode for tactical RPGs, factory/automation maps, board/card battlers, build grids, and terrain-cost maps.room_chunk_mode for modular rooms, roguelike rooms, procedural room assembly, or Metroidvania room-chunk planning.baked_scene_mode only for non-playable visual scenes or explicitly flat images.baked_raster + coarse_shapes only for battle backgrounds, title/menu scenes, cutscenes, decorative backdrops, non-playable previews, or when the user explicitly asks for a single flat image.layered_raster + y_sorted_props + precise_shapes for top-down RPG exploration with tall props, occlusion, interactables, or reusable props; the base must be foundation-only and the props/interactables must remain separate.tilemap or layered_tilemap only when the engine/editor already uses tiles or the user asks for editable tiles; do not flatten gameplay objects into one background image.parallax_layers + platform_objects + interactive_scene_objects + scene_hooks + precise_shapes for playable side-view scrolling stages, platformers, runners, shooters, and horizontal action scenes; the parallax/background image is scenery-only and is not the runtime map by itself.clean_hd for generated exploration maps unless the project or user asks for pixel art. This means clean hand-painted top-down 2D RPG game map, HD game asset style, sharp readable terrain shapes, low texture noise, and no chunky pixels.pixel_inspired only when the user wants a pixel-adjacent look without retro chunkiness.retro_pixel only when the user explicitly asks for 16-bit, retro JRPG, or classic pixel-art maps.map_mode first. Use the genre routing table when the user describes a game type instead of a technical map format.visual_model, runtime_object_model, collision_model, and engine_target.baked_raster unless the user asked for a background-only image.parallax_layers + platform_objects + interactive_scene_objects + scene_hooks + precise_shapes unless the engine already requires a tilemap.art_style. Prefer readable gameplay shapes over decorative texture density.visual_asset_source. Default to image_gen; use existing_assets only when the project already has suitable art; use procedural_placeholder only when explicitly requested.hybrid as a result of combining axes, not as a primary category.image_gen for visible map art unless the user explicitly chose existing assets or procedural placeholders.image_gen, or edit/use an existing image when supplied, then add optional collision/zones metadata.grid_mode, generate or reuse grid/tileset visual art first, then write cell metadata such as walkable/buildable flags, move cost, terrain effects, resource nodes, and object layers.room_chunk_mode, define chunk dimensions, exits, connection sockets, collision contract, and spawn/trigger metadata before final art assembly. Chunks must be reusable and validated at their seams.stage_canvas, stage_segment_count, stage_length, and platform_strategy before generating art. Do not ask image generation for one ultra-wide full level. Generate per-segment or loopable scenery-only parallax plates first: sky, far_bg, mid_bg, near_bg, and optional foreground_overlay. Every primary parallax layer must use the same pixel dimensions, aspect ratio, camera framing, horizon line, and top-left anchor as the stage_canvas; do not accept mismatched image sizes that require guesswork to stack. Do not treat one full-width background image as a complete side_scroll_mode background stack unless the user explicitly asks for a flat/non-parallax background. These parallax passes must not contain playable foreground platforms, walkable floors, terrain chunks, hazards, pickups, doors, gates, checkpoints, crates, fences, spikes, or other runtime objects. Then perform the visual reference handoff and generate an in-world stage reference mockup that visually places up to 9 distinct intended platform/object candidates before generating final separate scene objects and metadata.dressed-reference or stage-reference exists, inspect it and continue into the post-reference object production gate.low, tall, or foreground; record an actor-safe area and an occupant policy such as none, rear_shift, fade, rear_shift_and_fade, or hide. Do not rely on render priority alone to keep actors readable.grid_mode, store grid dimensions, cell size, tile ids, terrain types, walkable/buildable flags, movement cost, collision, resource nodes, and object/entity slots.room_chunk_mode, store chunk id, size, entrances/exits, connection sockets, collision, spawn markers, camera bounds, and validation hints for seam alignment.side_scroll_mode, store stage_canvas, stage_segment_count, stage_length, segment ids, parallax layer source size, display size, anchor, render order, scroll factors, loop/repeat policy, shared platform/object library ids, camera bounds, platform collision, hazards, exits, checkpoints, and actor spawn marker metadata.side_scroll_mode, reject or normalize mismatched primary parallax layer sizes before runtime integration. The stage reference and QA preview must match stage_canvas exactly. Deterministic resizing/cropping/padding is allowed only as a normalization step on generated art, not as a way to invent missing art.For a fixed grid, tactical board, card-board arena, or project-native 2.5D tile mesh, prefer tile_generation=terrain_tile_bundle when each cell needs one of several opaque surface textures. Keep tile mesh/collision separate from the generated surface art.
edge_policy=isolated when visible gaps or individual tile meshes separate cells. Use seamless only when adjacent tiles must visually join.scripts/extract_terrain_tiles.py. The script writes portable relative paths, per-variant luminance/contrast metrics, variant-difference QC, material hints, and a Godot mesh-top runtime contract.$generate2dsprite, preserve a fixed ground-contact anchor and shared silhouette envelope, and reference the generated runtime animation contract from the terrain metadata.Sprite3D status overlay on a horizontal tile mesh, record and validate ground_lift, depth_policy, render_priority, and occupantPolicy. A correct pixel-size/offset contract alone does not prove that the vertical card will survive intersection with the horizontal surface.rear_shift_and_fade while occupied. Do not solve tile clipping by drawing the FX over every actor.python scripts/extract_terrain_tiles.py \
--input <terrain-atlas.png> \
--output-dir <assets/tilesets/name> \
--rows 2 --cols 3 \
--terrain-row plain=0 --terrain-row forest=1 \
--tile-size 512 --prompt <terrain-atlas.prompt.txt> \
--runtime-world-size 0.94 --surface-y 0.011 \
--strict-qc
Treat a low-contrast or near-duplicate variant failure as an art regeneration signal. Do not invent final terrain texture detail procedurally. Runtime tint, roughness, emission, highlighting, mesh depth, and destruction animation may remain engine-native layers.
Use $generate2dsprite for reusable transparent props and visible scene objects, but the agent must write the prop prompt itself using the selected map art_style. Do not use a script to generate the creative prompt. For clean_hd maps, explicitly request clean hand-painted HD 2D game assets and explicitly forbid pixel art. For pixel_inspired, request clean modern pixel-art-inspired props without retro chunkiness. For retro_pixel, request 16-bit or retro JRPG pixel art.
Before any prop/object image generation, classify each visible runtime object from the reference mockup:
compact_prop: small/medium, roughly square or vertical, decorative or simple blocker, no exact alignment requirementwide_or_long_object: expected aspect ratio wider than about 1.6:1, such as platforms, floor pieces, bridges, wall runs, fence rows, long traps, long signs, pipes, rails, ledges, or roadstall_or_large_object: expected aspect ratio taller than about 1.6:1 or visually dominant, such as large trees, gates, towers, buildings, banners, doors, statues, or boss-room propscollision_bearing_object: must line up with collision, walkable edges, build pads, doors, checkpoints, gates, hazards, or engine editor handlestileset_or_strip_piece: should repeat seamlessly or assemble from left/middle/right caps, corners, slopes, tops, sides, or tile piecesGeneration strategy is determined by that classification:
compact_prop objects may use square prop_pack_2x2, prop_pack_3x3, or prop_pack_4x4.wide_or_long_object, tall_or_large_object, collision_bearing_object, or tileset_or_strip_piece into square prop packs.one_by_one for important, large, tall, irregular, identity-sensitive, or collision-aligned objects.platform_strip_1x3 or platform_strip_1x4 for repeatable floors/platforms: left cap, middle repeat, right cap, plus optional corner/slope/end variant.custom_wide_pack only for several similar wide objects that share one category and can use wide cells such as 768x256, 1024x384, or another explicit non-square cell size.Choose the generation shape deliberately:
one_by_one: safest for large, important, animated, or irregular props.prop_pack_2x2: 4 related compact props, safest square batch size.prop_pack_3x3: 9 compact small/medium props, good quality/time tradeoff.prop_pack_4x4: 16 very simple compact small props; fastest but most likely to drift or touch edges.platform_strip_1x3: repeatable non-actor platform/floor strip with left cap, middle repeat, and right cap.platform_strip_1x4: repeatable non-actor platform/floor strip with left cap, middle repeat, right cap, and one extra slope/corner/end variant. This is not an animation-frame format and must not be used for characters, enemies, creatures, NPCs, summons, or animated body assets.custom_wide_pack: several related wide objects using explicit wide cells, not square cells.Prop packs save image-generation calls and prompt overhead, but reduce per-prop control. Use square prop packs for rocks, shrubs, barrels, small signs, lamps, crates, floor ornaments, plants, and repeated compact environmental props. Do not use square prop packs for buildings, gates, trees with wide canopies, bridges, platforms, floors, walls, ladders, long fences, long hazards, character-like statues, hero objects, or anything that must be pixel-perfect or collision-aligned.
When a compact shrub, grass cluster, rubble pile, or similar prop will share a walkable tile with an actor, classify it separately from blockers. Prefer a low silhouette or a rear-biased cluster that leaves the tile's actor-safe center clear. Tall walkable dressing must ship with an occupant policy; rear_shift_and_fade is the safe default for fixed isometric boards. Preserve the ground texture while fading only the tall decoration.
For layered maps with generated props, prefer this in-world reference mockup pipeline:
assets/map/<name>-base.png as ground-only terrain.view_image immediately before calling built-in image_gen; do not rely on a path string as the reference.assets/map/<name>-dressed-reference.png from the visible base. Treat this as a reference mockup, not the final runtime map.Use scripts/extract_prop_pack.py after generating a solid-magenta prop sheet. If the sheet has antialiased magenta fringe, run the imagegen chroma-key helper with soft matte and despill before extraction, then extract from the alpha-cleaned sheet. Use scripts/compose_layered_preview.py to verify placement over the base map.
An in-world reference mockup is never the final deliverable by itself. After generating dressed-reference or stage-reference, continue with:
base or backgrounddressed-reference or stage-reference mockupview_image on it immediately before writing object lists or object/prop image prompts. Do not rely on file paths alone.$generate2dsprite or direct image_gendata/<name>-props.json, data/<name>-objects.json, engine-native object layers, or tile/object data.Reference-only output is incomplete for any playable map, layered map with props, side-view stage, engine scene, or request that asks for separate props/editable objects. Only stop at a reference mockup if the user explicitly asks for a reference-only concept image.
For prop packs or object packs generated after a reference mockup, the prompt must be derived from the visible reference mockup and original base/background, not from memory or filenames. It should list the exact objects being generated and preserve the art style, lighting, perspective, and scale cues from the original base/background.
Playable side-scroll stages should be planned as camera-width segments, not as one huge generated map image. This keeps image generation readable while allowing the runtime level to be longer than a single picture.
Default contract:
stage_canvas for every segment, primary parallax plate, stage reference, stage preview, and normalization target.stage_segment_count: 2 by default for a normal playable platformer or action side-scroller. Use 1 only for explicit one-screen rooms, boss arenas, fixed battle rooms, or background-only requests.stage_length from the engine camera width and segment count, or from the existing project coordinate system when available.segment-01, segment-02, and keep each segment aligned to the same top-left camera frame.For platformer-style side-scroll stages, the runtime geometry must come from explicit platform/object metadata or engine-native nodes:
platforms: rectangles, tile spans, slopes, one-way ledges, moving platform handles, or engine-native platform nodes.terrain_chunks: optional large reusable solid pieces when rectangles are not enough.hazards: spikes, lasers, lava strips, pits, saws, traps, and other collision-critical objects.interactives: doors, gates, terminals, switches, checkpoints, pickups, exits, and destructibles.scene_hooks: player spawn, actor spawn markers, camera bounds, lock zones, arena triggers, exit links, and checkpoint ids.The art for structural geometry should skin the metadata, not define it. A good platformer stage can use simple collision rectangles with repeated platform cap/middle sprites, just like a classic tile or strip workflow. This is preferable to asking image generation to produce a complete foreground platform layout in one baked image.
For side_scroll_mode, generate or select a shared structural platform library before decorative props:
platform_strip_1x3: left cap, seamless middle repeat, right cap.platform_strip_1x4: left cap, seamless middle repeat, right cap, plus one slope/corner/broken/end variant.platform_tile_set: square or rectangular tiles for top edge, underside, wall face, corner, and optional slope when the target engine/editor is tile-based.custom_terrain_chunk: one-by-one or custom wide assets for important unique terrain chunks.Use the platform library across all stage segments. Platform objects in metadata should reference the shared library by id and declare display width, display height, anchor, repeat policy, collision rectangle, and render layer.
Do not put platform strips, floors, ledges, bridges, ladders, walls, slopes, long spike rows, or terrain chunks into ordinary square prop packs. Square prop packs are for compact decorative props and simple pickups. Structural objects need strips, tiles, custom wide cells, one-by-one assets, or engine-native tile/object layers.
For playable side-view scrolling/action maps, an in-world stage reference mockup is mandatory before generating final scene objects or scene metadata. This applies across art styles and game styles, including pixel art, clean HD, side-scrollers, platformers, runners, shooters, brawlers, scrolling combat stages, and Megaman-like or Castlevania-like stages:
stage_canvas, for example 1536x864 for a default 16:9 HD side-scroller when the project has no explicit camera size. Choose and record stage_segment_count before art generation. All primary parallax layers, stage references, and stage previews must share this exact size unless a layer is explicitly marked as a repeatable strip.stage_segment_count: 2. This means at least two camera-width segments that share one platform/object art library.stage_segment_count: 1 only for explicit one-screen rooms, boss arenas, fixed battle rooms, or background-only requests.stage_canvas size and assemble the runtime stage from segments plus object metadata.assets/map/<name>-sky.png, assets/map/<name>-far-bg.png, assets/map/<name>-mid-bg.png, assets/map/<name>-near-bg.png, and optional assets/map/<name>-foreground-overlay.png.assets/map/<name>-background.png for a playable side_scroll_mode stage. A single scenery background is allowed only when the user explicitly requests a flat/non-parallax background; in that case still continue with stage reference, separate objects, collision, camera bounds, and QA preview.stage_canvas before using them together.view_image immediately before calling built-in image_gen; do not rely on a path string as the reference.assets/map/<name>-stage-reference.png from the visible background.stage_length. Compose the final runtime preview from the original background plus these separate runtime objects.The stage reference is an in-world reference mockup. Do not ship it as the runtime map, do not infer collision from its pixels, and do not cut platform objects out of the baked reference image. If a platform must be reusable or collidable, generate it as a separate platform object, terrain chunk, tile, or engine-native object.
If the generated background already has obvious foreground gameplay pieces baked into it, do not use it as background in runtime data. Regenerate the scenery-only background or demote that image to a concept/reference artifact.
Scene hooks are metadata only. Do not generate enemy, boss, NPC, player, projectile, or animation sprites inside generate2dmap; call $generate2dsprite separately when the game needs those assets.
If a playable side-view scrolling/action run has already generated a background but has not generated assets/map/<name>-stage-reference.png, pause the platform/props pipeline and generate the stage reference next. Background plus props is not enough evidence that the level layout is coherent.
For a baked raster map:
assets/map/<name>.png<name>.prompt.txtdata/<name>-collision.json or data/<name>-zones.jsonUse this deliverable only for non-playable backgrounds or explicitly requested flat images. If actors must move through the scene, collide with level geometry, jump on platforms, collect items, trigger doors, or edit the level later, upgrade to a layered, parallax-stage, tilemap, or engine-native deliverable.
For a layered raster map:
assets/map/<name>-base.pngassets/map/<name>-base.prompt.txtassets/map/<name>-dressed-reference.png for prop planningassets/props/<prop>/prop.png folders, from one-by-one props or extracted prop packsdata/<name>-props.json placement metadatadata/<name>-collision.json and/or data/<name>-zones.json when gameplay needs themassets/map/<name>-layered-preview.pngFor a tilemap or layered tilemap:
assets/tilesets/<name>.pngFor a playable side-view scrolling/action stage:
assets/map/<name>-sky.png, assets/map/<name>-far-bg.png, assets/map/<name>-mid-bg.png, assets/map/<name>-near-bg.png, and optional assets/map/<name>-foreground-overlay.pngstage_canvas shared by the primary parallax layers, stage-reference, and stage-previewstage_segment_count and stage_length; default to at least 2 camera-width segments for a normal playable scrolling levelassets/map/<name>-background.prompt.txt and prompt files/manifests for other generated visual assetsassets/map/<name>-stage-reference.png as an in-world reference mockup for platform/object placementdata/<name>-objects.json or engine-native object layers for platforms, terrain chunks, hazards, pickups, doors, checkpoints, gates, exits, and foreground occluders, grouped by segment when the stage has more than one segmentdata/<name>-scene-hooks.json or engine-native metadata for player spawns, actor spawn marker metadata, encounter/arena triggers, camera bounds, and exit linksdata/<name>-collision.json with explicit platform/solid geometry independent from the background pixelsassets/map/<name>-stage-preview.png composed from the background plus objects for QA onlyDo not accept a single generated side-view action/platformer stage image plus collision rectangles as the final playable map. Do not accept a single camera-width scenery image as a complete scrolling level unless the user explicitly asked for a one-screen room. The stage must expose platforms or walkable lanes, hazards, doors, pickups, checkpoints, gates, exits, scene hooks, and camera bounds as separate runtime objects, tile/object layers, or metadata. Runtime background fields must point to the scenery-only background or parallax layer, never to stage-reference or stage-preview; previews are QA artifacts only.
For grid_mode:
generate2dmap.terrain_tile_bundle.v1 manifests with terrain variants, material hints, world footprint, surface height, prompt provenance, and QCFor room_chunk_mode:
chunk_id, size, entrances/exits, connection sockets, spawn markers, blockers, hazards, and camera boundsFor scene_mode:
assets/map/<name>-base.pngassets/map/<name>-dressed-reference.pngFor a prop pack:
#FF00FF backgroundassets/props/<prop>/prop.png filesprop-pack.json extraction manifestedge_touch entries for accepted propsAlways validate what the chosen pipeline requires:
occlusionClass, actorSafeArea, and occupantPolicy; runtime integration applies that policy when an actor occupies or selects the cellside_scroll_mode primary parallax layers, stage references, and stage previews match the recorded stage_canvas; any repeatable strips or differently sized foreground sprites declare display size, anchor, scale, and repeat policyside_scroll_mode records stage_segment_count, stage_length, segment ids, and whether parallax plates are per-segment or loopableside_scroll_mode levels have at least 2 camera-width segments unless the user requested a one-screen room, boss arena, fixed battle room, or background-only assetside_scroll_mode parallax layers have explicit render order, scroll factors, dimensions, loop/repeat policy, and are not used as collision sourcesside_scroll_mode platforms and terrain use explicit platform/object metadata plus a shared platform strip, tile, or terrain-chunk library; they are not taken from a generic square prop packgrid_mode outputs include grid dimensions, cell size, cell metadata, object layers, and validation of critical walkable/buildable cellsroom_chunk_mode outputs include chunk dimensions, exits/connection sockets, seam validation, collision, and at least one assembled or per-chunk previewTake 0x0funky/generate2dmap from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.