generate2dmap

Generate playable 2D game maps with layered art, collision metadata, and engine-ready exports.

Updated Jul 22, 2026
One-click install
npx skills add https://github.com/Chau165/local_skill --skill generate2dmap-chau165
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: generate2dmap
Source: https://github.com/Chau165/local_skill/tree/main/codex/skills/generate2dmap
Command: npx skills add https://github.com/Chau165/local_skill --skill generate2dmap-chau165

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires Pillow, and includes scripts (resource) and references (resource) components.

What problem does it solve? Creating a playable 2D game map requires more than one generated image: it needs layered visual assets, separate runtime objects, collision shapes, zones, and engine-compatible data. This Skill turns a genre or map request into a structured pipeline that produces all of those deliverables instead of a single flat picture. ## Core Features & Use Cases - Mode-Based Map Pipelines: Choose from tile_mode, scene_mode, side_scroll_mode, grid_mode, room_chunk_mode, or baked_scene_mode, each mapped to visual, object, collision, and engine-target axes. - Image-Generation-First Art Workflow: Generate foundation-only base maps, in-world reference mockups, prop packs, terrain tile atlases, and parallax layers with built-in image generation, then slice and validate them with scripts. - Structured Runtime Metadata: Produce placement JSON, collision blockers, walkable zones, spawn markers, camera bounds, exits, and scene hooks for engines like Godot, Unity, Phaser, Tiled, and LDtk. - Use Case: Ask for a Pokemon-style top-down route and receive a ground-only base map, extracted transparent props, y-sorted placement data, encounter zones, collision shapes, and a composed QA preview. ## Quick Start Ask the agent to generate a playable side-scrolling platformer stage with parallax backgrounds, separate platform objects, collision data, and a preview image.

Frequently Asked Questions about generate2dmap

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I generate a playable 2D game map with AI image generation?

Choose a map mode such as tile_mode, scene_mode, or side_scroll_mode, then generate a foundation-only base image, an in-world reference mockup, and separate prop or platform assets. Finish with placement metadata, collision shapes, zones, and a composed preview.

What map modes are available for different game genres?

Six modes cover common genres: tile_mode for top-down RPGs, scene_mode for tower defense and arenas, side_scroll_mode for platformers and brawlers, grid_mode for tactical and factory games, room_chunk_mode for roguelike rooms, and baked_scene_mode for static backgrounds.

Can I export generated maps to Godot, Unity, or Tiled?

Yes, the engine_target axis supports Godot TileMap, Unity Tilemap, Tiled JSON, LDtk, Phaser, and raw canvas output. Visual art comes from image generation first, then scripts wire the assets into engine-native scenes, tile layers, and collision data.

Why should the base map not contain props or buildings?

Runtime-controlled objects like trees, gates, hazards, and pickups need independent collision, y-sorting, interaction, and editing, so they must stay as separate assets. A base image with baked-in objects should be regenerated or demoted to a reference artifact.

How do I extract props from a generated prop pack sheet?

Run scripts/extract_prop_pack.py on a solid-magenta prop sheet with the row and column counts to chroma-key the background, isolate connected components, and crop each prop. It writes individual transparent PNGs plus a manifest with edge-touch and rejection QC data.

When should I use square prop packs versus one-by-one generation?

Square prop packs suit four or more compact decorative props like rocks, shrubs, and crates. Wide platforms, tall buildings, gates, and collision-aligned objects must be generated one-by-one, as platform strips, or as custom wide packs instead.