From 430769cc03064d0ec0b593a94075f0f1b52cf5fc Mon Sep 17 00:00:00 2001 From: meleki Date: Thu, 24 Sep 2026 06:15:16 +0200 Subject: [PATCH] Describe the terrain autotile kind Co-Authored-By: Claude Opus 5.5 --- Development.md | 2 +- Tiles.md | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Development.md b/Development.md index 56ae58f..de980ed 100644 --- a/Development.md +++ b/Development.md @@ -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 [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 diff --git a/Tiles.md b/Tiles.md index d77fcfc..b3df85c 100644 --- a/Tiles.md +++ b/Tiles.md @@ -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