Skip to the guide
Pixx Suite

Build · Tilemap & world builder · Advanced

Pixxori — Advanced

Power use of Pixxori: exact export formats (Tiled, TMX, LDtk, CSV), flip bits and collision values, big worlds, stamps, seeds and the tilemap hand-off.

Open Pixxori

#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

  1. Press Ctrl+E (or click Export) to open Export the map.
  2. 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.
  3. 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.

  1. Bit 0x80000000 = flipped horizontally, 0x40000000 = flipped vertically, 0x20000000 = flipped diagonally.
  2. Mask the flags off to get the GID: gid = cell & 0x1FFFFFFF.
  3. Apply the diagonal flip first, then horizontal, then vertical. A 90° clockwise rotation (Z in Pixxori) is diagonal + horizontal.
  4. 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:

ValueKind
0none
1solid
2one-way
3 / 4slope 45° rising / falling
5 / 6slope 22° rising, low / high half
7 / 8slope 22° falling, high / low half
9ladder
10water
11hazard
  1. In Tiled exports, read the merged rectangles per kind for physics, or the raw grid property for tile-based checks.
  2. In LDtk, read the IntGrid layer value directly.
  3. 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

  1. 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.
  2. Click Create the level and save a project file right away: that's your clean base.
  3. Make your hand edits and save the project again under a new name, so you keep both versions.
  4. 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

  1. Create the map with New map… → World 1024² or type up to 4096 × 4096 tiles.
  2. Paint big areas with Rect and Fill (G) instead of the brush; terrain sets autotile rectangles and fills too.
  3. 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.
  4. Turn on ⊞ (chunk outlines) to see the 32 × 32-cell chunks Pixxori stores the map in. Empty chunks take no space.
  5. 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

  1. Choose Select (M) and drag over a region.
  2. Click Save as a stamp and name it. The stamp is stored in the project, so it travels with project files and Cloud saves.
  3. Pick it from the Stamps panel and paint with it like a big brush; Z, X and Y rotate and flip it.
  4. 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:

  1. 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.
  2. Tile layers keep their order, visibility, opacity and parallax.
  3. The collision layer becomes 0/1 cells plus a values list with each cell's kind (the table above).
  4. Objects keep their names, types, sizes and properties, and remember which layer they were on.
  5. 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

  1. Build the level in Pixxori, with collision kinds and typed objects (for example type: spawn, type: door).
  2. Export Tiled (.tmj) and unzip it next to your game's maps, keeping the tileset PNGs beside the .tmj.
  3. In your loader, mask off the flip bits, read the collision rectangles per kind for physics, and turn objects into entities by type.
  4. 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

  1. Send This level to Pixxizi.
  2. 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.
  3. See Pixxizi — Advanced for what each engine receives.

#Lit and shadowed scenes

  1. Send This level to Pixxado.
  2. 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.
  3. 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.