thedivergentai/godot-tilemap-mastery
Expert blueprint for TileMapLayer and TileSet systems for efficient 2D level design. Covers terrain autotiling, physics layers, custom data, navigation integration, and runtime manipulation. Use when building grid-based levels OR implementing destructible tiles. Keywords TileMapLayer, TileSet, terrain, autotiling, atlas, physics layer, custom data.
npx skills add https://github.com/thedivergentai/GD-Agentic-Skills --skill godot-tilemap-mastery
TileMapLayer routing + trade-offs — not TileSet editor Steps 1–3 tutorials (see Official Docs).
set_cell() in huge loops without batching — Prefer terrain connect, patterns, or chunk batchers.source_id in set_cell — Wrong overload → crash or silent miss.local_to_map / map_to_local.set_cells_terrain_connect.get_cell_tile_data() every physics frame — Cache metadata (fast_metadata_cache.gd).| Goal | Prefer | Script | Trade-off |
|------|--------|--------|-----------|
| Organic ground / roads / rivers | Terrain autotile | terrain_autotile.gd / terrain_path_painter.gd | Setup cost in TileSet; fastest designer iteration |
| Prefab rooms / houses / stamps | TileMapPattern | tile_pattern_stamper.gd | Great for procgen pieces; less flexible per-cell |
| Sparse / precise edits | set_cell | — | Fine for few cells; bad for thousands/frame |
| Huge streaming worlds | Chunks | tilemap_chunking.gd / procedural_chunk_batcher.gd / tilemap_data_manager.gd | Indirection + load boundaries |
| Destructible dig/break | Custom data HP | destructible_tile_logic.gd | Must refresh nav/physics after edits |
| Gameplay queries (friction/hazard) | Custom data + cache | gameplay_data_query.gd / fast_metadata_cache.gd | Cache invalidation on set_cell |
| Nav after edits | Runtime nav fix | nav_mesh_teleport_fix.gd | Costly if every cell; batch rebuilds |
| One-way / physics layers | TileSet physics | physics_shape_interaction.gd | Align with CharacterBody masks |
| Iso / multi-floor sort | Y-sort layers | sorting_Z_layering.gd | Parent + all layers need y_sort |
| Legacy TileMap → layers | Migration | tilemap_layer_v43_upgrade.gd | One-time upgrade aid |
Editor atlas/physics paint setup: Official Documentation in Reference — Do NOT reload Steps 1–3 / flood_fill tutorials from this skill body.
| Task | MANDATORY script(s) |
|------|---------------------|
| Serialize / large world data | tilemap_data_manager.gd |
| Runtime terrain paths | terrain_path_painter.gd / terrain_autotile.gd |
| Destructible tiles | destructible_tile_logic.gd |
| Custom data gameplay reads | gameplay_data_query.gd (+ fast_metadata_cache.gd if hot) |
| Procedural bulk place | procedural_chunk_batcher.gd |
| Chunk stream in/out | tilemap_chunking.gd |
| Pattern stamp prefabs | tile_pattern_stamper.gd |
| Nav repair after edits | nav_mesh_teleport_fix.gd |
| One-way / physics layer ops | physics_shape_interaction.gd |
| Y-sort / Z layering | sorting_Z_layering.gd |
| 4.3+ multi-layer upgrade | tilemap_layer_v43_upgrade.gd |
y_sort_enabled on parent and each TileMapLayer; tune y_sort_origin on tall tiles — see sorting_Z_layering.gd.set_cell storms — tile_pattern_stamper.gd / procedural_chunk_batcher.gd.get_used_cells() source_id/atlas between layers; persist deltas via tilemap_data_manager.gd rather than full maps when possible.> LLM-ignorance rule: if a general agent would not know it before reading, it lives here or in scripts/ — never delete, only move.
| Topic | Reference |
|-------|-----------|
| TileSet editor steps | tileset-editor-setup.md |
| Runtime APIs + flood/terrain | runtime-tile-patterns.md |
| Iso / patterns / diff | expert-tilemap-architectures.md |
> Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain — do not preload the whole lattice.
set_cell / terrain painting, and when multiple layers beat a single legacy TileMap.y_sort_origin used at query time.set_cell loops.move_and_slide against tile colliders, one-way platforms, and floor/wall queries over TileMapLayer geometry.TILE_SHAPE_ISOMETRIC and multi-floor TileMapLayers.set_cell / custom-data queries dominate frame time.Take thedivergentai/godot-tilemap-mastery 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.