Tile Studio covers the whole flow from authoring tile assets to painting layered maps and exporting game-ready data. This chapter is the overview; each step has its own detailed chapter:
- Building Tile Assets (Tile Asset Builder)
- Tile Library & Packs
- Tile Palettes
- Painting Maps (Tile Studio)
- Exporting Maps & Game Integration
The basic flow:
Build assets (tile_asset_builder)
→ save as .pxntile (tile_asset_save)
→ arrange a tile palette (tile_palette_create)
→ paint the map (tile_studio)
→ export images / animations / game data
1. Build tile assets — tile_asset_builder
- Connect a sheet (
Image/SpriteSheet) and bulk-slice it in the dedicated editor to register static tiles. No per-cell wiring. - Slots can be swapped to animations from the
imagesinput (same-size frames). Keeping the brush ID preserves the palette slot while only the visual changes. - Multi-cell art such as a 2×2 house becomes a single stamp brush via cell selection.
- Auto/rule tiles made with
autotile_from_template/autotile_from_parts/rule_set_editorimport directly. - Assets saved with
tile_asset_saveare self-contained.pxntilefiles — the original input nodes can be deleted afterwards.
2. Organize the library
- Store assets under
user_data/library/user/tiles/in any folder structure (e.g.MyGame/terrain/). References use stable IDs, so moving or renaming folders never breaks palettes or maps. - A folder with
tilepack.jsonbecomes a managed pack for dependency-checked ZIP export/install. - Legacy
.pxnrulefiles appear in the library and can be copy-converted to.pxntile(the original is untouched).
3. Tile palettes — tile_palette_create
- Register brushes from saved assets into pages and groups. Select a chip and click an empty slot to place it (with a ghost preview while hovering), drag & drop chips to move or swap them, and press Delete to remove. Library-registered assets are materialized automatically at evaluation time.
- Multi-cell stamps (e.g. 2×2) occupy their full footprint of slots, displayed as the real image split into cells; they can only be placed where the footprint is free.
- Assets whose cell size is an integer multiple (e.g. 1×1→16×16) are auto-scaled on registration, always with a scale badge and a warning. Non-integer ratios and different grid kinds are rejected — use "convert copy" to create a matching asset first.
- The scratch area at the bottom paints with the real resolve pipeline (autotile connections included) — unregistered library chips work too, and the play button animates the board with the real animation cycle. Scratch content is never saved.
- A palette is a selection layout; reordering it never changes existing maps.
4. Paint maps — tile_studio
- Pen, eraser, flood fill, line, rectangle, stamps, and eyedropper.
- Static tiles, animated water, auto-tile roads, seeded rule tiles, and house stamps mix on the same layer.
- Collision and metadata layers are saved with the map but never drawn into the PNG.
- Rule tiles re-resolve only around your edits; the same seed always yields the same look.
- Scrub the timeline slider to preview animated tiles at any time.
5. Export
| Target | Node |
|---|---|
| Single PNG at a chosen time | tile_canvas_render → downstream image nodes |
| Animation (frames / sprite sheet) | tile_canvas_animation_render |
| PNG sequence folder | tile_bundle_export (images profile) |
| Custom engines (atlas + tileset + map JSON) | tile_bundle_export (native profile); contract in docs/contracts/tile-runtime-v1/ |
| Tiled (.tmj/.tsj + atlas) | tile_bundle_export (Tiled profile); Unity/Godot via their Tiled importers |
| Single Tiled JSON (compat) | tiled_map_export / tiled_tileset_export |
Bundle exports are staged, verified, and atomically swapped — no half-written folders. Maps pin asset revisions, so library updates never silently change existing maps.
Low-level API (advanced)
The Rule Tile nodes (rule_tile_pack, rule_set_preset, rule_canvas, rule_render, …)
keep working as before; Tile Studio is built on top of them and .pxnrule stays compatible.