#What you'll learn
- What each export contains, field by field, so your engine loader reads it right.
- How tile flips and rotations are stored, and why LDtk is the exception.
- The collision values Pixxori uses everywhere, from the editor to the engine.
- How to work on very large maps without slowing down.
- How the tilemap hand-off is built, so you know what Pixxizi and Pixxado receive.
#Before you start
- Work through the Pixxori — Intermediate guide first: terrain sets, layers, parallax and collision kinds.
- Know which format your engine reads (Tiled JSON/TMX, LDtk or plain CSV), or plan to go through Pixxizi.
- Keep a project file (.pxori) of anything important: some map-wide actions clear undo.
#How-tos
#How to choose the right export format
- Press Ctrl+E (or click Export) to open Export the map.
- Pick a format. Each one is described in the window:
- Tiled (.tmj): tile layers as GIDs with flip bits, objects (tile objects too) as object layers, collision as merged rectangles per kind plus the raw grid as a property, parallax factors, animated tiles and per-tile collision in the tilesets. Tileset PNGs ride along in one ZIP.
- Tiled (.tmx): the same map as classic XML with CSV layers, embedded tilesets, tile animations and properties.
- LDtk: Tiles layers (X/Y flips, parallax), the collision layer as an IntGrid with one value per kind, objects as Entities, tile animations and collision in the tileset custom data.
- CSV: one file per tile or collision layer, Tiled-style GIDs (0 = empty) and 0/1 for collision.
- PNG image: the whole map rendered at 1×–4×, with or without the background colour and the collision overlay.
- Pixxori project: everything, to open again later.
- Click Download.
#How to read flips and rotations in your engine
Pixxori stores every cell the way Tiled does: a GID (the tileset's first GID plus the tile index) with three flag bits on top.
- Bit 0x80000000 = flipped horizontally, 0x40000000 = flipped vertically, 0x20000000 = flipped diagonally.
- Mask the flags off to get the GID: gid = cell & 0x1FFFFFFF.
- Apply the diagonal flip first, then horizontal, then vertical. A 90° clockwise rotation (Z in Pixxori) is diagonal + horizontal.
- LDtk has no rotation, only X/Y flips. Pixxori lists any rotated tiles as warnings in the LDtk export, so rotate tiles only if you use Tiled, CSV or Pixxizi.
#How to map collision values in code
Every collision cell holds a kind number. The same numbers appear in the LDtk IntGrid, the Tiled collision property and the tilemap hand-off:
| Value | Kind |
|---|---|
| 0 | none |
| 1 | solid |
| 2 | one-way |
| 3 / 4 | slope 45° rising / falling |
| 5 / 6 | slope 22° rising, low / high half |
| 7 / 8 | slope 22° falling, high / low half |
| 9 | ladder |
| 10 | water |
| 11 | hazard |
- In Tiled exports, read the merged rectangles per kind for physics, or the raw grid property for tile-based checks.
- In LDtk, read the IntGrid layer value directly.
- Plain CSV collision is 0/1 only (any kind counts as 1). Use Tiled or LDtk if you need the kinds.
#How to reproduce a generated level exactly
- In Biome kits & levels, note the kit, View, Tile size, Level size and Layout seed. Together they always give exactly the same level, on any device.
- Click Create the level and save a project file right away: that's your clean base.
- Make your hand edits and save the project again under a new name, so you keep both versions.
- To get the untouched base back later (or to share it), open Kits, choose the same kit and options, type the same Layout seed and click Create the level.
#How to work on a very large world
- Create the map with New map… → World 1024² or type up to 4096 × 4096 tiles.
- Paint big areas with Rect and Fill (G) instead of the brush; terrain sets autotile rectangles and fills too.
- Zoom out to plan: below a few screen pixels per tile Pixxori draws a one-pixel-per-tile overview, and the Minimap shows the visible area.
- Turn on ⊞ (chunk outlines) to see the 32 × 32-cell chunks Pixxori stores the map in. Empty chunks take no space.
- Export Tiled or LDtk rather than PNG image: a rendered image is limited to 8192 pixels per side.
#How to reuse parts of maps with stamps
- Choose Select (M) and drag over a region.
- Click Save as a stamp and name it. The stamp is stored in the project, so it travels with project files and Cloud saves.
- Pick it from the Stamps panel and paint with it like a big brush; Z, X and Y rotate and flip it.
- Ctrl+C / Ctrl+X / Ctrl+V work on the selection for one-off moves.
#How to understand what a tilemap hand-off contains
When you send This level (tilemap: layers, collision, objects) from Send to App:
- Every distinct tile actually used (tileset × tile × flip flags, plus tile objects) is baked into one tileset image at your map's tile size, so the receiving app needs no GIDs, flips or multiple tilesets.
- Tile layers keep their order, visibility, opacity and parallax.
- The collision layer becomes 0/1 cells plus a values list with each cell's kind (the table above).
- Objects keep their names, types, sizes and properties, and remember which layer they were on.
- When a tilemap comes back into Pixxori, it opens as a new map with that one tileset; collision kinds and objects are restored, and height layers (from other apps) are kept and sent on again.
#Workflows
#Tiled-based engine pipeline
- Build the level in Pixxori, with collision kinds and typed objects (for example type: spawn, type: door).
- Export Tiled (.tmj) and unzip it next to your game's maps, keeping the tileset PNGs beside the .tmj.
- In your loader, mask off the flip bits, read the collision rectangles per kind for physics, and turn objects into entities by type.
- When you change the level, export again over the same files: tileset file names stay the same for the same tileset names.
#Engine-ready levels without writing a loader
- Send This level to Pixxizi.
- Pick your engine there (Godot, Unity, GameMaker, Phaser, LÖVE or Defold). Pixxizi writes the level in that engine's own format, with collision and object markers.
- See Pixxizi — Advanced for what each engine receives.
#Lit and shadowed scenes
- Send This level to Pixxado.
- Pixxado opens it in Scene mode with a Level tiles light blocker: collision cells block light, and wall heights set how long sun shadows are.
- Levels bigger than 1024 pixels are cropped in Pixxado, so send a room or a screen-sized map for lighting work.
#Tips and shortcuts
- H or hold Space to pan; drag with the middle mouse button works too. 0 fits the whole map.
- Animated kit tiles (water, lava, torches, portals) are drawn live and exported as Tiled/LDtk tile animations. ▶ Anim in the options bar only changes the editor preview.
- ⁂ Random weights are per tile in your selection, so you can make one grass tile common and a flower rare.
- Project files (.pxori) are ZIPs holding map.json and one PNG per tileset. Autosave keeps your current map on this device between visits.
- The New map tile size can be anything from 1 to 256 pixels; tile width and height are set separately when you add a tileset.
#Troubleshooting
- If tiles appear rotated or mirrored wrongly in your engine, the loader is probably applying the flip flags in the wrong order. Apply diagonal first, then horizontal, then vertical.
- If LDtk shows tiles the wrong way round, they were rotated in Pixxori. Replace them with unrotated (flipped-only) tiles or use Tiled.
- If the PNG export says it's too big, lower the scale or export Tiled/LDtk; images are limited to 8192 px per side.
- If undo stopped working after a layer change, that's by design: layer add, move, duplicate and delete, resize and tileset removal clear the history. Re-open your last project file or Cloud save if you need to go back.
- If a received tilemap looks different from the original, check the original's hidden layers: hidden layers travel with their visibility switched off.
#Related guides
- Pixxori — beginner guide · Pixxori — Intermediate
- Pixxizi — engine exports · Pixxado — lighting and shadows
- Send to App · Cloud and Library