PROJECT · INTERSTELLAR ENGINE // STATUS · PRE-ALPHA, FOUNDATIONS YEAR
Interstellar Engine
A hyperrealistic space-simulation engine in C++20 and Vulkan 1.3 — the goal is KSP's approachability with Orbiter's scientific accuracy, in one engine that can carry a player from a launchpad to interstellar space without a loading screen.
It's pre-alpha and honest about it: not playable, no content, and that's deliberate. The first year is foundations — rendering, coordinate precision, orbital physics — because everything above them inherits their flaws.

The coordinate problem
Floating-point numbers fail quietly at solar-system scale: past 253, a double can't tell two nearby positions apart, and your Moon starts to shimmer. The engine sidesteps the whole failure class with a three-layer coordinate system — positions are stored as 64-bit integers on a 1 mm grid, physics runs in float64 relative to a local origin, and rendering runs in float32 relative to the camera. Origin shifts are atomic, and a subtract-before-convert invariant keeps catastrophic cancellation out of the pipeline entirely.
Integrators that don't lie
Orbital mechanics punishes naive integration — energy drifts, orbits spiral, and at time-warp the errors compound. The engine runs symplectic integrators, which conserve the structure of the problem instead of fighting it: leapfrog and Yoshida-4 as the base, IAS15 as an adaptive fallback for close encounters, then Wisdom-Holman for planetary motion. The current milestone nests Wisdom-Holman hierarchically, so tightly bound satellites — like our Moon, deep in Earth's gravity — integrate correctly even at heavy time-warp.

Validated against reality
Trajectories are checked against JPL HORIZONS ephemeris data — the same source NASA uses — never against the sim's own output. The live demo propagates the Sun, Earth, Moon, Mars, and Jupiter at real scale from J2000 states with energy-drift telemetry on screen. The test suite sits at 484/484 green.
"If my Moon isn't where NASA says, the code isn't done."
Stack
- LANGUAGE
- C++20
- RENDERER
- Vulkan 1.3 · Vulkan-HPP · dynamic rendering
- PLATFORM
- SDL2 · CMake · vcpkg
- MATH
- GLM, double precision
- TESTS
- Catch2 v3 — 484 green, runs in seconds
- PLANNED
- EnTT · Jolt Physics · Lua 5.4 + sol2
Next: Setare, the game it's for →
PHOTOGRAPHY COURTESY OF NASA // © 2026 JOSHUA MASERIN