Deterministic n-body physics · in your browser

Simulate gravity
like it’s a
material.

Aether is a real-time physics engine for interactive worlds. Ten thousand bodies, orbital mechanics, and emergent structure  all running at a smooth 60 frames per second. Move your cursor to bend the field.

The physics

Honest simulation, engineered for the browser.

No pre-baked splines or faked motion. Aether integrates real forces every frame — and stays fast doing it.

O(n log n)

Barnes–Hut gravity

An octree approximates distant masses so the field scales to tens of thousands of bodies without melting the main thread.

Stable

Symplectic integration

A velocity-Verlet core conserves energy over long runs, so orbits stay orbits instead of quietly spiralling into noise.

Seeded

Deterministic replay

Every simulation is seeded and reproducible. Rewind, branch, and share an exact universe by passing a single hash.

60 fps

Zero-copy rendering

State lives in typed arrays and streams straight to the GPU. No garbage, no jank — just frames that land on time.

Composable

Field composition

Layer gravity, drag, springs and custom force fields. Compose behaviours the way you compose functions.

14 kB

Runs anywhere

A 14 kB core with no dependencies. Drop it into React, a game loop, or a plain canvas and it just works.

Live sandbox

Bend the field. It answers instantly.

The same core that powers the hero, exposed. Tune the constants, flip the sign of gravity, and click the canvas to reseed the swarm.

220 bodies · click to reseed
Core force

A universe you can put in production.

Aether ships as a single ES module with typed bindings. Wire it to your render loop, feed it forces, and let determinism do the rest.

k+
bodies at 60fps
kB
gzipped core
runtime deps
%
deterministic
import { World, gravity } from "aether";

const world = World.seed(0xC0FFEE);
world.spawn(10_000).force( gravity({ g: 6.674e-11 }));
world.tick(1 / 60); // step the universe