godot-tilemap

Build and edit tile-based 2D levels in Godot 4.7 with TileMapLayer and TileSet: paint layers, set up collision/navigation/custom-data on tiles, autotile with terrain sets, and read/write cells from code (set_cell, get_cell_tile_data, local_to_map). Use when working with TileMapLayer nodes, .tres Til

By gamedev-skills · 2,347 installs

npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill godot-tilemap

Source repository · Upstream listing

Godot TileMap (4.7 TileMapLayer) Author tile based levels with TileMapLayer + TileSet , add per tile collision and custom data, autotile with terrains, and manipulate cells at runtime. Targets Godot 4.7 , where TileMapLayer replaces the now deprecated TileMap node. When to use Use when designing 2D levels from a tile grid, configuring a TileSet (collision, navigation, custom data, terrains), or reading/writing tiles from code. Use when migrating a TileMap node (single node, many layers) to multiple TileMapLayer nodes (one layer each). When not to use: moving the player across the tiles → godot 2d movement ; general physics bodies/raycasts → godot physics ; procedural map generation algorithms → procedural gen ; level design practice → level design . Core workflow 1. Add a TileMapLayer node (one per visual/logical layer: background, walls, foreground). Each holds exactly one layer of tiles. 2. Create or assign a TileSet on the layer's tile set property. Add an atlas source (a texture sliced into tiles) in the TileSet editor. Save the TileSet as an external .tres so multiple layers/levels reuse it. 3. Add tile data in the TileSet editor: physics layers (collision polygons), navigation layers, occlusion, and custom data layers (typed per tile values like damage or is ladder ). 4. Paint in the TileMap bottom panel (Paint/Line/Rectangle/Bucket). For self connecting tiles, define a terrain set and paint with Connect/Path mode. 5. Enable per layer collision/navigation via the layer's collision enabled / navigation enabled properties. 6. Read/write from code with local to map , set cell , get cell source id , and get cell tile data(...).get custom data(...) . Patterns 1. Convert mouse position to a cell and read its custom data 2. Place and erase tiles at runtime 3. Autotiling a region with a terrain set 4. Iterate placed tiles (e.g. find all spawn tiles) Pitfalls TileMap node is deprecated in 4.3. Use TileMapLayer nodes (one layer per node); group them under a parent Node2D . Old TileMap calls that took a layer argument ( set cell(layer, ...) ) do not apply to TileMapLayer . local to map needs layer local coordinates. A world position needs to local(...) first. A mouse event's position is in viewport pixels, not world space, so it is wrong as soon as a Camera2D scrolls or zooms; convert it with make input local(event) (or poll get local mouse position() ) instead. get cell tile data returns null for empty cells or non atlas sources — always null check before get custom data . Custom data is typed. A layer declared as int returns int ; reading it as the wrong type or referencing a non existent layer name errors. Define the layer in the TileSet first. Terrains need every combination defined. set cells terrain connect produces odd results if the TileSet's terrain bitmask peering is incomplete. Runtime edits are batched to end of frame. If you must read updated internals immediately after set cell , call update internals() (expensive — avoid in loops). Collision not working? Check the layer's collision enabled , that the tile has a physics layer with a polygon, and that the TileSet's physics layer mask matches your bodies. References For TileSet setup (atlas sources, physics/navigation/custom data layers, terrain bitmasks), scene tiles, Y sorting, and runtime tile data overrides ( use tile data runtime update ), read references/tileset and terrains.md . Related skills godot 2d movement — characters that walk on these tiles. godot physics — collision layers/masks the tile collisions participate in. procedural gen — generating tilemaps from noise/RNG. level design / roguelike — design practice and grid based genres.