← BACK TO ASCENTGITHUB ↗

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 far side of the Moon, imaged by NASA's Lunar Reconnaissance Orbiter
THE BENCHMARK · THE MOON (NASA/GSFC/LRO). THE ENGINE'S MOON HAS TO BE WHERE THIS ONE IS.

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.

Jupiter's Great Red Spot in true color, from NASA's Juno mission
JUPITER (NASA/JPL/JUNO) · ONE OF FIVE BODIES IN THE REAL-SCALE DEMO, SEEDED FROM J2000 STATE VECTORS.

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

Follow the work on GitHub →

Next: Setare, the game it's for →

PHOTOGRAPHY COURTESY OF NASA  //  © 2026 JOSHUA MASERIN