pixelkiln 0.53.2 → 0.53.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/TILES.md CHANGED
@@ -151,13 +151,35 @@ Four-corner masks use `TERRAIN_MODE_MATCH_CORNERS`; four-edge masks use
151
151
  bits on its atlas tile. Isometric and hex tile shapes are carried from the
152
152
  resolved manifest spec.
153
153
 
154
+ **The peering-bit property names depend on tile shape, and Godot enforces
155
+ it.** A square tile's corners are `top_left_corner`/`top_right_corner`/
156
+ `bottom_left_corner`/`bottom_right_corner`; an isometric or oblique
157
+ (diamond) tile's are the diamond-point names `top_corner`/`right_corner`/
158
+ `bottom_corner`/`left_corner` — the square names are invalid on a diamond
159
+ tile and Godot's own `is_valid_terrain_peering_bit()` rejects them outright,
160
+ so writing the wrong set produces a `.tres` that looks plausible but carries
161
+ no usable terrain data at all once loaded. The corner-mask → isometric-name
162
+ mapping (mask bit 3/2/1/0 = NW/NE/SW/SE → `top_corner`/`right_corner`/
163
+ `left_corner`/`bottom_corner`) is confirmed against a production, hand-verified
164
+ isometric Wang set (a downstream consumer's `docs/terrain-tiles.md` §5: every
165
+ tile rendered, its corners sampled, checked against its mask). Edge/side
166
+ masks on an isometric or oblique tile are refused rather than guessed — the
167
+ diagonal peering-bit direction for that case hasn't been verified the same
168
+ way — so `--format godot` on an edge-ruled isometric tileset asks for
169
+ `--format generic` or `--format tiled` instead, neither of which has this
170
+ shape dependency.
171
+
154
172
  The texture path is relative to the `.tres`, so the generated PNG and resource
155
173
  can move together inside a Godot project.
156
174
 
157
175
  Both this `TileSet` and the `SpriteFrames` that `pack --format godot` writes
158
176
  are loaded by a headless Godot 4.7.2 in CI (`npm run test:godot`), which
159
177
  reports the atlas tiles, terrain sets and names, animation names, frame
160
- counts, speeds, and loop flags it sees.
178
+ counts, speeds, and loop flags it sees, and — for both a square and an
179
+ isometric terrain set — round-trips an actual peering bit through Godot's
180
+ own `get_terrain_peering_bit()` rather than only checking tile/terrain-set
181
+ counts. That last check is what would have caught this bug; the counts alone
182
+ did not.
161
183
 
162
184
  ## Deliberate limits
163
185
 
@@ -171,4 +193,6 @@ counts, speeds, and loop flags it sees.
171
193
  - A `terrain` asset's `"transition"` corners collapse into a two-color mask
172
194
  (see above); the cliff-tier 25-tile set exports, but its middle transition
173
195
  ring is not distinguished from the two named terrains in Tiled/Godot.
196
+ - Godot edge/side masks on an isometric or oblique tile remain generic- or
197
+ Tiled-only; see Godot 4 above.
174
198
  - Export never changes source PNGs or the lockfile.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelkiln",
3
- "version": "0.53.2",
3
+ "version": "0.53.3",
4
4
  "description": "Manifest-driven pixel-art generation, review, recovery, and packaging with deterministic provenance.",
5
5
  "type": "module",
6
6
  "sideEffects": false,