tile_studio is a layered tile-map editor. Connect a palette to the tile_palette
input and double-click the node. Maps are saved as .pxntilemap
(tile_canvas_save / tile_canvas_load).
Layout
- Left: the connected palette (pick the brush to paint with)
- Center: the canvas, switchable between the paint view (which brush is on which cell) and the result view (the look after rule resolution)
- Right: the layer list; timeline and warnings at the bottom
Tools
Pen / eraser / flood fill / line / rectangle (outline & filled) / stamp / eyedropper, with undo/redo. Strokes commit as units, so one stroke = one undo step.
- Stamp: placing a stamp brush lays down all its cells at once. Placements that would stick out of the map are rejected; "Remove last stamp" undoes one
- Eyedropper: click a cell to pick up its brush
Layers
Three layer kinds can be added:
| Kind | Rendered? | Purpose |
|---|---|---|
| Visual | yes | Artwork. Static, animated, auto/rule tiles and stamps mix freely on one layer |
| Collision | no | Per-cell collision shapes; included in game-data exports |
| Metadata | no | Arbitrary key/values (spawn points, …); included in game-data exports |
Each layer has visibility, lock, and opacity. Locked layers can't be painted.
Painting auto/rule tiles
Painting with a rule brush (→ Building assets) picks the actual tiles from neighbor relationships — roads connect, wall corners turn. Only the area around your edit is re-resolved, so large maps stay responsive.
- Visual variation is deterministic from the map seed: re-evaluating the same map always yields the same picture
- If a tile isn't what you expect, switch to the paint view to see what was painted where
Timeline
For maps with animated tiles, drag the timeline (milliseconds) to preview any moment.
The chosen time also drives the node's lightweight image preview output. In-editor
autoplay is planned; for animation output see
Export.
When assets go missing
Cells whose assets can't be found render as missing and are listed in warnings.
Restore the asset in the library or connect it to additional_assets. Because saving
a project embeds snapshots, this usually resolves itself.