# Fixed tiles and shared edges

Threetopia owns the host tile. Creators own the content inside its slot. The same canonical terrain recipe is used by the world preview and the map preview, scaled by 0.03.

## 144 terrain variants

The catalog contains twelve families with twelve variations each: Dunes, Oasis, Coast, Pine coast, Meadow, Highland, Volcanic, Canyon, Tundra, Blossom, Wetland and Basalt.

Variants change ridge arrangement, relief, orientation and terrain color inside the host’s terrain band. They preserve the protected slot and boundary profiles. All 144 variants can fit an available coordinate; you can inspect the actual geometry before reserving.

The four original worlds are hand-authored map scenes. Boundary profiles along their edges were sampled from the real terrain. New tiles use these profiles where they meet the original worlds; neighboring new tiles share the same edge profile. The catalog is versioned so a future terrain update does not silently change a creator’s contract.

## Coordinates and growth

Positions use axial hex coordinates `(q, r)`. The six neighbors are `(q+1,r)`, `(q,r+1)`, `(q-1,r+1)`, `(q-1,r)`, `(q,r-1)`, `(q+1,r-1)`.

Growth starts at the centre. Only the **first incomplete ring** is available. The following ring appears as a preview and opens after the inner ring is published. A reservation does not count as a published tile.

The initial occupied coordinates are Lagoon `(0,0)`, Tidewater `(1,0)`, Sakura `(0,-1)`, and Punk `(1,-1)`. The ocean surrounds the shared island.

## Reserve before creating a world

A reservation is exclusive and tied to your account. Unused reservations last seven days, with at most two unused reservations per account. Creating a world package keeps its tile reserved for that package. Another creator cannot claim or upload to it.

A world package is bound to exactly one tile. A tile can hold one world package. The selected variant is locked once reserved. To choose another variant, delete an unpublished package if necessary, release the unused reservation, and reserve again.

Published packages and their tile contracts cannot be deleted or rewritten. Publish a new content version for updates.

## The contract

`tile.lock.json` contains coordinates, variant ID, version, radius, slot dimensions, boundary profiles, recipe and SHA-256 hash. The CLI and server derive the canonical contract and reject any modification. Editing both the file and its hash does not bypass this check.

| Dimension | World | Map |
| --- | --- | --- |
| Tile corner radius | 300 m | 9 units |
| Protected content radius | 190 m | 5.7 units |
| Maximum content height | 480 m | 14.4 units |
| Host slot floor | 24 m | 0.72 units |

Content GLBs use a **local** origin at the slot floor: minimum y=0. Do not add the host floor elevation to the exported model. The host positions it for you.
