feat: sprite-mode test-chamber with 13-bone puppet + sprite-tilemap

13-bone humanoid rig (12 visible bones + 1 root) hand-ported from
substrate reference, mapped to PROTOTYPE asset-pack via asset_aliases
indirection (asset_pack: player). Bones use texture/z_order/scale/
anchor fields from the rig-format extension. Tracks split: lower for
legs + feet (walk animation), upper for root/body/head/shoulders/arms
(idle animation).

Animations:
- idle.anim.json: 2.0s loop on upper track, subtle body+head sway
- walk.anim.json: 0.6s loop on lower track, legs+feet cycle

Sprite-tilemap: 4-tile palette (floor_001-003 walkable, floor_004
as wall). Map content: 20x20 with wall-border and interior wall
blocks. tile_rotations parallel array exercises 90 and 180-degree
rotations on a handful of cells for visual rotation-pipeline
verification.

init.lua loads textures via asset_aliases lookup:
- maps.load_textures(aliases) resolves tilemap-tile atlas-ids
- puppet.load_rig(path, aliases) loads + resolves bone textures
- furniture textures preloaded at init (bed, bench, backpack) to
  avoid first-frame load stutter; rendered via engine.render.
  draw_sprite_transform in the draw hook

Camera follows puppet via per-frame camera.set_target. Headtrack:
head bone (look_at: true) rotates to face mouse world-position.

New SPOREL_CI=1 traces from render and init hooks:
- vagrant: render_frame_ok (per frame from render)
- vagrant: sprite_mode=on (once after first sprite-draw)
- vagrant: assets_loaded=14 (once after init: 7 puppet + 4 tile + 3 furniture)
This commit is contained in:
Axel Meyer
2026-05-18 03:29:54 +02:00
parent 161913795b
commit 3457a7eab8
7 changed files with 151 additions and 70 deletions

View File

@@ -3,25 +3,47 @@
"tilemap": "vagrant_test",
"size": { "w": 20, "h": 20 },
"tiles": [
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
4,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,4,
4,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,3,3,1,1,1,1,1,1,2,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
],
"tile_rotations": [
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,90,0,0,0,0,0,0,180,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
]
}