miaoda-game-arcade-motion-core
v0.3.1
Published
Engine-agnostic arcade motion core for forward-advance and lateral-strafe games. Includes LaneRunner for endless runners, skiing and on-rails movement, plus RacerCar for speed-scaled steering, curve drift and off-road grip loss. Frame-rate independent wit
Maintainers
Readme
miaoda-game-arcade-motion-core
Frame-rate-independent forward speed and lateral steering for endless runners, rail shooters, downhill games, and behind-the-car racers. Use it when movement is fundamentally “advance forward and strafe sideways”; it is not a collision or general physics engine.
pnpm add miaoda-game-arcade-motion-coreimport {LaneRunner} from 'miaoda-game-arcade-motion-core';
const runner = new LaneRunner({maxSpeed: 12000, accel: 3000, brakeForce: 6000, engineBrake: 400, steerResponse: 4});
const distance = runner.update(dt, {throttle: 1, brake: 0, steer: -0.4});
camera.advance(distance);dt is seconds. speed is world units per second, x is lateral position in host-selected units, and travelled is accumulated forward distance. Inputs are throttle/brake in 0..1 and steer in -1..1. Steering scales with speedFraction, so the runner cannot pivot laterally while stopped.
Subclass LaneRunner and override modifyLongitudinal or modifyLateral for slope, wind, or genre-specific forces. RacerCar is an OutRun-style preset with road-relative position, off-road speed loss, and curve drift:
const car = new RacerCar({maxSpeed: 12000});
const distance = car.update(dt, {throttle: 1, steer: -0.4}, roadCurve);Use a fixed or bounded dt, especially after pause/resume spikes. Rendering, road generation, collision, and input mapping remain host responsibilities.
