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)
72 lines
2.7 KiB
Markdown
72 lines
2.7 KiB
Markdown
# sporel-module-vagrant-skeleton
|
|
|
|
F.vagrant Tier-1 test-chamber: single player as puppet, WASD direct
|
|
movement, camera-chase, headtrack to mouse-cursor. Phase 1 stage.
|
|
|
|
**Version:** 0.2.0
|
|
**Module-ID:** vagrant-skeleton
|
|
**Requires:** lib-core.input >=0.4.0, lib-core.camera >=0.3.0, lib-core.render >=0.1.0, lib-core.maps >=0.1.2, lib-core.puppet >=0.2.0, lib-asset.prototype-subterrain >=0.1.0
|
|
**Tags:** test-chamber, puppet, walking-sim
|
|
|
|
## Topology
|
|
|
|
<!-- topology:start (auto-generated; do not edit) -->
|
|
<!-- topology:end -->
|
|
|
|
## Controls
|
|
|
|
- **W A S D** — direct movement (4-way, normalized for diagonals)
|
|
- **Mouse** — head/torso look-at target
|
|
- **ESC** — return to launcher
|
|
|
|
## Demonstrates
|
|
|
|
- lib-core.puppet integration (skeleton, keyframe animation, procedural-ready, look-at constraint)
|
|
- idle <-> walk animation-state transition driven by movement input
|
|
- Camera-chase via lib-core.camera target-provider
|
|
- Throwaway-content test-chamber stance: existing maps v0.1 format,
|
|
hand-painted humanoid rig + 2 keyframe animations.
|
|
|
|
## Interactions
|
|
|
|
- WASD active -> walk animation on lower track
|
|
- WASD released -> idle animation on upper track (subtle torso sway)
|
|
- Mouse moved -> head-bone angle updates each frame to face cursor's
|
|
world-position (look-at constraint on bones marked `look_at: true`)
|
|
|
|
## CI Hooks
|
|
|
|
- `SPOREL_CI=1` -> 60-frame perf canary. Emits `vagrant: frame_avg_ms=N`
|
|
and `vagrant: render_frame_ok` (per-frame, from render hook), then exits.
|
|
Used by smoke stages P0-S25a + P0-S25b.
|
|
|
|
## References
|
|
|
|
- ADR-0028 (Launcher-Flow)
|
|
- ADR-0036 (Lib-Override for multi-module reuse)
|
|
- ADR-0037 (Tests-as-Libs)
|
|
- ADR-0038 (API-Doc-Convention)
|
|
|
|
## CHANGELOG
|
|
|
|
### v0.2.0
|
|
- Sprite-mode rendering throughout: 13-bone humanoid puppet via
|
|
lib-core.puppet v0.2 with PROTOTYPE asset-pack textures; sprite-tilemap
|
|
via lib-core.maps v0.1.2 with 4 floor variants (floor_001-003 walkable,
|
|
floor_004 as wall); hardcoded furniture (bed, bench, backpack) via
|
|
engine.render.draw_sprite_transform.
|
|
- Asset-pack indirection: manifest.module asset_aliases maps the alias-
|
|
keys (player, tiles, world) to lib-asset.prototype-subterrain. Rig
|
|
and tilemap atlas-ids resolved at init via puppet.load_textures and
|
|
maps.load_textures.
|
|
- Tile rotations: vagrant_test.map.json includes a tile_rotations
|
|
parallel array exercising 90 and 180-degree rotations for visual
|
|
verification of the rotation pipeline.
|
|
- Animation refinements: walk on lower track now includes foot bones
|
|
(legs + feet alternate); idle on upper track with subtle body+head
|
|
sway.
|
|
- New smoke traces emitted under SPOREL_CI=1:
|
|
vagrant: render_frame_ok (per frame from render hook),
|
|
vagrant: sprite_mode=on (once after first sprite draw),
|
|
vagrant: assets_loaded=14 (once after init).
|