Character controller
A floating capsule with Ecctrl-style movement, jumping, slopes, auto-balance, moving-platform coupling, and optional custom (planet / wall-walking) gravity.
import { World } from "jolt-ts";import { CharacterController } from "jolt-ts-character-controller";
const world = await World.create({ gravity: [0, -9.81, 0] });const controller = new CharacterController({ world, position: [0, 1, 0] });
controller.setForwardDirection({ x: 0, y: 0, z: 1 });controller.setMovement({ forward: true, run: true });
controller.step(1 / 60); // apply floating, friction, movement, jumpworld.step(1 / 60); // integrate the physics worldCharacter controller
A floating capsule with Ecctrl-style movement, jumping, slopes, auto-balance, moving-platform coupling, and optional custom (planet / wall-walking) gravity.
Vehicles & drones
Shape-cast wheeled cars with suspension, tire slip, and an automatic gearbox, plus thrust-and-torque multirotor drones with velocity or position control.
Animation, decoupled
A tiny locomotion state machine that turns controller state into
IDLE/WALK/RUN/JUMP_* and drives a Three.js AnimationMixer — or any
renderer you like.
Network-ready
Deterministic stepping with getSyncState() / applySyncState() for
server authority, rollback, and client reconciliation. No allocations on the
hot path.
This library is an imperative TypeScript port of Ecctrl by Erdong Chen and contributors. See Acknowledgements for full credits and licensing.