PX-Art

TILESETS

Tilesets cut on a fixed grid, not guessed from an image

A tileset only works if every tile is exactly where it should be. PX-Art draws a magenta hollow guide grid into the generation canvas so the model can only paint inside the boxes, then cuts the result on the same fixed coordinates rather than inferring rows and columns from image content. The export opens directly in Tiled.

Why the guide grid exists

The obvious way to build an AI tileset is to generate a big image of tiles and then detect the boundaries. It fails in a specific, annoying way: a grass tile that fills its box edge to edge and a rock tile with a transparent margin project different boundaries, so the detected grid drifts and every tile after the drift is cut half a pixel off. In a tiled map, that reads as seams.

PX-Art removes the inference step. A magenta hollow guide grid is composited into the canvas, the model is constrained to paint cell by cell inside those boxes, and the backend slices at the same fixed coordinates it drew. The cut is deterministic: the same layout produces the same tiles every time, regardless of what the content looks like.

Deterministic cutting is also what makes the export trustworthy for an agent. Tile sourceRow and sourceCol in the manifest are the coordinates the generator used, not a guess reconstructed after the fact.

Four view dimensions, kept apart

Perspective is not a filter you apply afterwards — geometry, lighting and silhouette all differ. The four view dimensions are independent, and a game picks the one it is actually built on:

ViewKindUsed for
Top-downtilesetStraight overhead maps; tiles butt together with no vertical faces.
Orthogonal 45 degreestileset_orthoThe classic tilted overhead RPG look, where walls show a face.
Side viewtileset_sidePlatformers: gravity runs down the screen and terrain reads as ground and platforms.
IsometricisometricDiamond-grid maps; exports as an isometric Tiled orientation.

Side view gets a defined minimum terrain set, because a platformer needs specific pieces before it can build anything: interior material fill, a two-cell-wide long platform, left and right end caps, and corner and underside pieces. Without those, a "tileset" is a pile of textures you cannot assemble.

Tile size and animated tiles

  • Tile size is 16, 32, 48 or 64 pixels, defaulting to 32 and following the game's standard cell size when one is set.
  • Animated tiles take 2 to 8 loop frames, defaulting to 4 — water, torches, machinery.
  • Style follows the game, so a tileset generated later still matches the sprites made earlier; see the pixel style contract for how palettes are conformed.

What the export ZIP contains

Four files, each with a distinct job:

atlas.png

The image, tiles laid out by row and column.

tileset.json

PX-Art's own manifest: name, image, tileSize, columns, tileCount and tiles.

tileset.tsx

Tiled's tileset XML, with per-tile properties carried through.

tileset.tmj

A preview map you can open in Tiled immediately to see the set assembled.

Each entry in the manifest's tiles array carries id, assetId, name, file, role, sourceRow, sourceCol, atlasCol and atlasRow. The two coordinate pairs are deliberately separate: source coordinates say where the tile was generated, atlas coordinates say where it sits in the packed image. Keeping both means a re-pack does not destroy the link back to generation, and assetId ties each tile to the asset record an agent can query.

The same four fields — role, sourceRow, sourceCol and assetId — are written as per-tile properties in tileset.tsx, so the information survives into Tiled instead of stopping at the ZIP boundary.

Opening it in Tiled

  1. Unpack the ZIP as a unitKeep all four files together; tileset.tsx and tileset.tmj reference atlas.png by relative path.
  2. Open tileset.tmjIt is a working map, so you see the set assembled rather than a bare grid.
  3. Check the tile propertiesSelect any tile and its role and source coordinates are there in the properties panel.
  4. Reuse tileset.tsx in your own mapsAdd it as an external tileset in whatever map you are actually building.
  5. Set filtering to nearestIn Tiled and in your engine, or pixel tiles will be smoothed at anything other than 100 percent zoom.

Exporting a whole scene, not just the tiles

Tiles are the raw material; the Arrange workspace is where a map gets built. A saved scene exports as Tiled JSON with the details an importer normally has to guess:

  • Orientation is orthogonal or isometric, matching how the scene was actually composed.
  • Tile layers are row-major gid arrays where 0 means an empty cell.
  • The tileset is an image-collection tileset — one image per tile, with firstgid at 1.
  • Layers keep both coordinate systems: x and y hold the original cell coordinates, while offsetx and offsety hold the canvas pixel origin. An importer does not have to reconstruct negative coordinates that were cropped away.
  • Non-tile nodes export as an objectgroup, each object carrying custom properties px_art_node_id, px_art_z, px_art_asset_id, px_art_asset_file and px_art_tags.

Those object properties are the bridge back to the workspace: px_art_asset_id is the same id an agent passes to asset tools, and px_art_z preserves draw order that a flat object list would otherwise lose.

How an agent takes delivery

For a whole map, an agent calls get_scene_bundle and receives the scene JSON, the Tiled map, in-bundle paths for every dependency, a SHA-256 per file and short-lived download URLs — enough to write the map into a repository and verify it. The scene is also readable as a resource at scene://SCENE_ID/tiled, and analyze_layout reports overlaps, out-of-bounds nodes and lock conflicts deterministically before anything is committed. Full tool list on the MCP page, and the wider agent workflow on assets for coding agents.

Limits and things to check

  • The cut is deterministic; the art is not. The grid guarantees each tile lands in its box, not that the tile is the one you imagined. Review the set before building a level on it.
  • Tiles must be checked for seams by tiling them. A tile that looks right alone can repeat badly. Lay a patch in the preview map before committing.
  • Views do not convert. A top-down set cannot be re-projected into isometric; pick the view your game uses and generate for it.
  • Godot has a thin adapter; Unity support is not claimed. The Tiled files are standard, so any importer that reads TSX and TMJ will work.
  • Map building wants a desktop. The Arrange workspace needs a large canvas and precise pointer control; phones can browse assets and take notes.
  • Rights remain yours to verify. Legally generated assets can be used commercially, subject to third-party rights, applicable law and AI-provider terms; AI output is not guaranteed exclusive or registrable.

Static tile generation costs 5 credits per image and local repairs 2 credits per patch; failed or partially failed runs refund the unfinished portion automatically. See pricing — formal checkout is still under review and not open yet.

FAQ

How are tiles cut out of the generated image?

A magenta hollow guide grid is composited into the generation canvas so the model paints cell by cell inside the boxes, and the backend slices at the same fixed coordinates it drew. Nothing is inferred from image content, so tiles with transparent margins cut exactly like tiles that fill their box.

Which map perspectives are supported?

Four independent view dimensions: top-down (tileset), orthogonal 45 degrees (tileset_ortho), side-view platformer (tileset_side) and isometric. Side view additionally produces a minimum terrain set: interior fill, a two-cell-wide long platform, left and right end caps, and corner and underside pieces.

What is inside the tileset export ZIP?

Four files: atlas.png with tiles laid out by row and column; tileset.json with name, image, tileSize, columns, tileCount and a tiles array; tileset.tsx as Tiled tileset XML; and tileset.tmj, a preview map you can open in Tiled straight away.

What metadata does each tile carry?

In tileset.json each tile has id, assetId, name, file, role, sourceRow, sourceCol, atlasCol and atlasRow. The role, sourceRow, sourceCol and assetId are also written as per-tile properties in tileset.tsx, so they survive into Tiled.

How do I open the result in Tiled?

Unpack the ZIP keeping all four files together and open tileset.tmj — it is a working preview map that references atlas.png by relative path. To build your own map, add tileset.tsx as an external tileset. Set texture filtering to nearest so pixel tiles are not smoothed.

How does a full map scene export?

As Tiled JSON with orientation set to orthogonal or isometric, tile layers as row-major gid arrays where 0 is empty, an image-collection tileset with firstgid 1, and layers keeping both original cell coordinates (x, y) and canvas pixel origin (offsetx, offsety). Non-tile nodes become an objectgroup whose objects carry px_art_node_id, px_art_z, px_art_asset_id, px_art_asset_file and px_art_tags.

What tile sizes and animated tile lengths are available?

Tile size is 16, 32, 48 or 64 pixels, defaulting to 32 and following the game's standard cell size when one is set. Animated tiles take 2 to 8 loop frames, defaulting to 4.

Related

Build a tileset you can open in Tiled

Pick a view, set a tile size, generate on the guide grid and export an atlas with JSON, TSX and a ready-to-open preview map.

Create a free accountSee pricing

New accounts start with 20 credits. Formal checkout is still under review and not open yet.