f7b38d984e0813bcefbe0ced7da5f0c51bd42f33
Two env-var-gated hooks (no-op in normal play): - SPOREL_CI=1: emits 'vagrant: render_frame_ok' per frame from render() and 'vagrant: frame_avg_ms=N' after 60 frames. - SPOREL_VAGRANT_PHASE1_DRIVE=1: scripted move-right input on frames 21-40, idle otherwise. Combined with SPOREL_CI=1 produces observable idle -> walk -> idle state cycle. State-transition trace 'vagrant: state=<walk|idle>' emits exactly once per actual change in set_walk_or_idle, so the smoke greps don't get noise from per-frame repeats. Fix camera.set_target_provider (absent from camera API) to use camera.set_target(x, y) called per frame from M.update instead.
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.1.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.1, lib-core.puppet >=0.1.0 Tags: test-chamber, puppet, walking-sim
Topology
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. Emitsvagrant: frame_avg_ms=Nandvagrant: 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)
Description
Languages
Lua
100%