Elevator dispatch algorithm playground

elevator-core is a deterministic, engine-agnostic Rust simulation library for elevators. This in-browser playground lets you compare dispatch strategies side-by-side on identical rider traffic, tweak car count, max speed, capacity, and door cycle, and share a permalink that reproduces the exact run. The same crate runs natively in Bevy, in Unity and GameMaker through a C ABI, in Godot via a gdext extension, and in the browser via wasm-bindgen.

Why elevator-core

Dispatch strategies

Idle-parking strategies

Scenarios

Frequently asked questions

What is elevator-core?
An engine-agnostic Rust simulation library for elevators. Models cars, stops, lines, riders, doors, and dispatch in a tick-based loop with a struct-of-arrays world. Same crate powers Bevy, Unity / .NET / GameMaker (via C ABI), Godot (via gdext), and the browser (via wasm-bindgen).
Which engines does it support?
Bevy 0.18 natively, plus Unity, .NET, and GameMaker through elevator-ffi, Godot through a gdext extension, and the browser through elevator-wasm. The core crate has zero engine dependencies.
Which dispatch strategies are built in?
Six: SCAN, LOOK, NEAREST, ETD, DCS, and RSR. All implement the DispatchStrategy trait so you can plug in your own.
Is the simulation deterministic?
Yes. Same config + seed produces bit-identical snapshots across every host. elevator-contract enforces this in CI.
Can I share a specific simulator setup?
Yes. The Share button copies a permalink encoding scenario, dispatch and parking strategies for both panes, the seed, intensity, traffic mode, and any tweaked physics parameters.
What is Quest mode?
A 15-stage curriculum that teaches the elevator-core API one primitive at a time. You write a controller in TypeScript inside an embedded Monaco editor and watch your code drive the cars.

Resources

If you can read this, JavaScript or WebAssembly is disabled in your browser; the interactive playground requires both. The links above let you read the same material as static documentation.

elevator-core / playground

Cabin Idle Moving Reposition Doors Loading
Scenario
A
Dispatch
Parking
Traffic Quiet
B
Dispatch
Parking
Traffic Quiet

Scenario source

scenario.ron
Loading simulation…