Describe the terrain autotile kind

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adminandClaude Opus 5.5 committed 2026-09-24 06:15:16 +02:00
1 parent d2dbf02ba6
commit 430769cc03
2 files changed
+32 -4

No files matched your search

+1 -1
@@ -14,7 +14,7 @@ npm run build # writes dist/ and regenerates index.html
./build.sh # the same under `set -o pipefail`, for callers that pipe the output
php tools/make-user.php <name> <password> [admin|user] # an account; every tool signs in (see Accounts)
php tests/php/accounts.test.php # the API's account rules, no server needed (CI's gate job)
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1363 editor checks, screenshots in /tmp/gm-e2e-*.png
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1367 editor checks, screenshots in /tmp/gm-e2e-*.png
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
./e2e.sh start [GM_STEPS] # the same run detached, see below
./e2e.sh status # live progress, or the last run's result
+31 -3
@@ -5,15 +5,16 @@ same grass is used by several maps, the same way a texture is worn by several sp
the asset was called *autotile*; a project still holding that type loses those assets on load
(no migration, #137).
A tile is one of three **kinds**:
A tile is one of four **kinds**:
| Kind | Block | Tiles it produces | What it does |
|---|---|---|---|
| **None (1 × 1)** | 1 tile | 1 | the picture as it is, repeated in every painted cell — the default |
| **Floor (2 × 3)** | 2 tiles wide, 3 tall | 47 | an **autotile**: edges, convex corners and **notches** (inner corners) |
| **Wall (2 × 2)** | 2 tiles wide, 2 tall | 16 | an **autotile**: edges and convex corners, no notches |
| **Terrain (6 × 4)** | 6 tiles wide, 4 tall | 47 | an **autotile** in the layout of the common top-down sheets, see [below](#terrain) |
A plain tile (*None*) ignores its neighbours. The two autotile kinds draw their own edges: paint a
A plain tile (*None*) ignores its neighbours. The autotile kinds draw their own edges: paint a
patch of grass onto a map and the borders towards everything else — the rounded corners, the
straight edges, the notch where two edges meet — are picked per cell from one hand-drawn **block**.
@@ -37,6 +38,33 @@ in the sheet. The borders behave normally, left on the left and top on top. The
RPG Maker MZ (`Tilemap.FLOOR_AUTOTILE_TABLE`), and the tests check the editor against that table
row by row.
### Terrain
The terrain block is the layout many top-down tilesets use for ground, cliffs or stone patches:
```
column 0 1-3 4 | 5
row 0 strip top top-left, top, top-right notch bottom right | notch bottom left
row 1 strip mid left, inside, right notch top right | notch top left
row 2 strip end bottom-left, bottom, ... notches TL + BR | notches TR + BL
row 3 lone tile strip left, middle, right (unused)
```
- **Columns 0-3** hold one whole tile for each of the 16 ways the four sides can join: the
bordered 3x3, a vertical and a horizontal strip, and the lone tile.
- **Columns 4-5** hold the notches. The 2x2 on top is a small hole seen from its four sides, so
each of its tiles has one notch. Row 2 has the two diagonal pairs. The two tiles in row 3 are
not used.
- **A tile the sheet draws is taken whole.** A strip or a lone rock looks the way the artist drew
it, even where it differs from the 3x3.
- **The rest is composed**: an edge with a notch, or notches next to each other. It is the tile of
its sides with the notch quarters put in. A notch also brings the quarter above or below it
from the same notch tile, when that quarter would be plain inside. That is what keeps a cliff's
notch whole: its wall reaches over the crossing into the quarter above. On flat ground that
quarter is plain inside anyway, so nothing changes.
- The inside is **not** turned by half a tile as in a floor block. The 3x3 is an ordinary
nine-slice.
**The tile size comes from the picture**: the kind says how many tiles wide a block is, so a 96 px
wide floor block means 48 px tiles and 24 px quarters, and a 48 px square picture is a 48 px plain
tile. A plain tile only has to be square — an odd side is fine; an autotile block must split evenly
@@ -54,7 +82,7 @@ asks for; a picture that does not fit is kept and named, never silently dropped.
like any other picture — it has no frames, so it is always the whole canvas —, or
[pixel art](Pixel-Art), whole or one of its frames. Cutting frames is
the [Textures](Textures) tab, by hand or with **Slice…** where the sheet is a regular grid.
- **Kind** — *None (1 × 1)*, *Floor (2 × 3)* or *Wall (2 × 2)*. Chosen, not guessed: a sheet whose rows alternate
- **Kind** — *None (1 × 1)*, *Floor (2 × 3)*, *Wall (2 × 2)* or *Terrain (6 × 4)*. Chosen, not guessed: a sheet whose rows alternate
between the two shapes (`Outside_A4` in RPG Maker) would be read wrong either way, and the choice
is one click.
- **Frames per second** and **Playback** (*Loop* or *Ping-pong*) — how the pictures run. One