ludic/packages/ludic.platformer/package.ludic
Orkuncakilkaya dd5cb5817b
All checks were successful
bootstrap / cfree-fixpoint (push) Successful in 21s
ci / build-and-test (push) Successful in 2m8s
commit-lint / conventional-commits (push) Successful in 4s
docs / build-and-deploy (push) Successful in 28s
feat(controllers): #58 platformer — ludic.platformer package (base + extensible)
The reference six-lever controller: Platformer component (jump feel as data),
decomposed input/move/gravity/jump/anim engine sub-systems (each disable-able),
JumpRequested/Landed/StateChanged events, gravity policy enum, and the opt-in
scaffolding (moving/crumble platforms w/ rider carry, pickups+score, springs,
hazards+Life, checkpoints/goal). Reuses the shared esys_move collision.

Also fixes a latent SSA-name collision in ludic_sweep_entity that triggered
once a program declared >=11 events. Reseeded; C-free fixpoint holds.
3 new regression cases (100 passed, 0 failed).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-01 16:41:34 +03:00

14 lines
644 B
Text

# ludic.platformer — the builtin Platformer controller (#58).
#
# The reference implementation of the six-lever extensibility contract (#57):
# movement feel as data, decomposed engine sub-systems (each `disable system`-able),
# a cancellable/observable event at every jump decision, and a gravity policy enum.
# Builds on the engine's Body/Collider + esys_move (swept-AABB tile collision) — it
# owns movement *policy*, never re-implements collision. Deterministic (integer
# Q16.16), so replay / lockstep / world_save all hold.
package "ludic.platformer"
version "0.1.0"
kind source
provides "Platformer"
provides "Score"
provides "Life"