Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-22 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 83% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 101% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 142% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 71% | 0% |
Build the smallest map bundle that satisfies the game. Decide the map as a pipeline, not as a single strategy label:
visual_model: baked_raster | layered_raster | tilemap | layered_tilemap | parallax_layersruntime_object_model: none | separate_props | y_sorted_props | interactive_entities | foreground_occluderscollision_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 pipeline from the existing game, camera, collision needs, map scale, and editing needs.
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.
This skill is image-generation-first for visual assets. Use built-in image_gen as the default creative art source for base maps, dressed 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.
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.
User-facing parameters may be stated in natural language:
map_kind: overworld | town | dungeon | shrine | arena | battle_bg | side_scroller | tacticalvisual_model: baked raster | layered raster | tilemap | layered tilemap | parallaxsize: pixel dimensions, tile dimensions, or camera-relative sizeperspective: 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 | walkmeshprop_generation: none | one_by_one | prop_pack_2x2 | prop_pack_3x3 | prop_pack_4x4output_format: PNG only | layered preview | manifest JSON | engine-native map dataWhen unspecified:
image_gen as the visual asset source.baked_raster + coarse_shapes for battle backgrounds, title/menu scenes, cutscenes, and fixed arenas.layered_raster + y_sorted_props + precise_shapes for top-down RPG exploration with tall props, occlusion, interactables, or reusable props.tilemap or layered_tilemap only when the engine/editor already uses tiles or the user asks for editable tiles.parallax_layers for side-scrollers and scrolling backgrounds.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.visual_model, runtime_object_model, collision_model, and engine_target.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.Use $generate2dsprite for reusable transparent props, 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.
Choose the generation shape deliberately:
one_by_one: safest for large, important, animated, or irregular props.prop_pack_2x2: 4 related props, safest batch size.prop_pack_3x3: 9 small/medium props, good quality/time tradeoff.prop_pack_4x4: 16 very simple small props; fastest but most likely to drift or touch edges.Prop packs save image-generation calls and prompt overhead, but reduce per-prop control. Use them for rocks, shrubs, barrels, small signs, lamps, crates, floor ornaments, plants, and repeated environmental props. Do not use prop packs for buildings, gates, trees with wide canopies, character-like statues, hero objects, or anything that must be pixel-perfect.
For layered maps with generated props, prefer this reference pipeline:
assets/map/<name>-base.png as ground-only terrain.view_image 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, preserving camera, terrain, size, road/water shapes, anchor pads, and boundaries. Treat this as a planning/reference image, 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.
For a baked raster map:
assets/map/<name>.png<name>.prompt.txtdata/<name>-collision.json or data/<name>-zones.jsonFor 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 prop pack:
#FF00FF backgroundassets/props/<prop>/prop.png filesprop-pack.json extraction manifestedge_touch entries for accepted propsAlways validate what the chosen pipeline requires:
Other measured skills in the registry, with their headline benchmark lift.