Tecnologia5 min de leitura

How to simulate a solar system at scale in a game

Why a planet-sized world breaks a game engine, the three tricks that fix it (floating origin, double precision, compressed distances), how orbits and spheres of influence work, and how COLONIZED builds the Aurin system: real radii, Kepler orbits and one server zone per body.

Este conteúdo ainda não foi traduzido. Exibindo a versão em English.

Render of ships in orbit over the night side of a planet, with the atmosphere lit on the horizon
Render de nossas próprias naves, feito no Blender. Não é uma captura do jogo.

Em resumo

  • A 32-bit float has about seven significant digits: at 8,389 km from the origin, the smallest step it can represent is already one metre, and at one astronomical unit it is 16.4 km.
  • Games solve it with a floating origin (moving the world so the player stays near zero), with double precision (Unreal Engine 5's Large World Coordinates) and by compressing distances.
  • Unreal's default world limit is about 88 million km, less than one real astronomical unit (149.6 million km), so a 1:1 solar system does not fit without extra work.
  • COLONIZED's Aurin system keeps real body sizes (planets of 6,000 to 6,400 km), Kepler orbits and compressed distances: one lore astronomical unit is 15 million km.

To simulate a solar system at scale, a game has to solve three problems at once: numerical precision (computers cannot store a position to the millimetre a million kilometres from the origin), distance (real space is mostly empty and takes too long to cross) and motion (planets and moons orbit, and the sky has to agree with them). Every space game picks its own mix of tricks. This guide explains them, with the numbers, and then shows the choices we made for the Aurin system of COLONIZED.

Problem one: a float runs out of digits

Game engines have traditionally stored positions as 32-bit floating-point numbers (float), which keep about seven significant digits. Close to the origin of the world that is plenty. Far from it, the gap between two representable positions (the ULP, or unit in the last place) grows:

Distance from the origin Smallest step a float32 can represent
10 km about 1 mm
100 km about 8 mm
1,000 km about 6 cm
8,389 km 1 m
384,400 km (Earth to Moon) 32 m
1 astronomical unit 16.4 km

A 64-bit double, with 15 to 17 significant digits, has a step of about 0.03 mm at one astronomical unit. The decline is gradual, not a cliff, and in practice the trouble starts earlier than the table suggests, because errors pile up with every calculation: cameras shake, characters slide, physics explodes. Players of early space games called it the Kraken.

Three tricks that fix it

Floating origin. Keep the player near (0, 0, 0) and move the universe instead. When the ship gets too far from the origin, everything is shifted back. Space games with large worlds use it precisely to beat the floating-point errors caused by their size.

Double precision. Unreal Engine 5 introduced Large World Coordinates: its core types moved to 64-bit doubles, and the default world limit jumped from about 21 km in Unreal Engine 4 to about 88 million km. Two caveats from Epic’s own documentation: some systems still work in single precision (Niagara particles, for example, store floats plus a grid cell), and 88 million km is still less than one real astronomical unit (149.6 million km). A 1:1 solar system does not fit by default.

Compressing distances. Most games keep planets at a believable size and bring them closer together. Travel stays playable and the whole system fits in the engine’s world. The cost is that orbital periods, light and the view from each world have to be recomputed so they still agree with each other.

Large games usually combine all three, and add a fourth: splitting the system into zones, so each region is simulated around its own origin. Unreal’s World Partition does a version of this for streaming on a single world.

Problem two: orbits and gravity

Planets follow Kepler’s laws. The third one, in NASA’s words, says that the squares of the orbital periods are proportional to the cubes of the semi-major axes: T = 2π√(a³/GM). Double the distance and the year gets about 2.8 times longer.

Simulating the pull of every body on every ship at once (the n-body problem) is expensive and unstable. The usual approximation is the sphere of influence: the region where one body’s gravity dominates, roughly r = a·(m/M)^(2/5). Inside it, only that body pulls; at its edge, the ship switches to the next one. This is the patched conics method NASA used for early lunar trajectory work, and the one most space games use: one body influences you at a time and planets move on fixed rails. The price is that Lagrange points do not exist in a pure patched-conics model, which is less realistic and more playable.

Problem three: a sky that agrees

A planet that orbits, rotates and has moons needs a sky that matches: day and night, the size of the sun from each world, eclipses, moons that rise and set. If positions are approximate, the sky has to be computed from the same data, or a player will notice the moon in the wrong place.

How COLONIZED builds the Aurin system

COLONIZED is a space survival MMORPG set in the Aurin system. These are the choices in its development build; they are design decisions in code, not a promise that every world is finished.

  • Real sizes. In the star catalogue, the four planets have radii between 6,000 and 6,400 km, close to Earth’s, the moons between 400 and 1,950 km and the star, a G1V, 130,000 km.
  • Compressed distances. One astronomical unit of the lore equals 15 million km, about a tenth of the real one. Ithera, the temperate world, orbits at 15 million km; the outer ice belt sits at 45 million km. The whole system fits inside the engine’s 88 million km world with double precision.
  • Kepler for the planets. Orbital periods follow Kepler’s third law, anchored on Ithera’s 200-day year. Ormek, at 6 million km, takes 50.6 days; Kaldrek, at 28.5 million km, takes 524. Anyone can check the arithmetic.
  • Not Kepler for the moons, on purpose. The moons orbit in hours, where Kepler with the measured masses would ask for days. It is a deliberate choice for play, and the lore turned it into a mystery: the settlers’ Tabla de Fases, an empirical clock of the moons, with two exact 1:2:4 resonances (Melvara, Tirane and Selvane go round in 0.5, 1 and 2 hours).
  • One zone per body. Each body’s sphere of influence is its own server zone and the destination of a jump. Within its zone, a body stays still and the sun moves around it: day, night and eclipses come from the body’s rotation and the direction of the star, so the terrain never has to move.
  • Gravity from density. The catalogue computes each body’s surface gravity from its density and radius, g = (4/3)·π·G·ρ·R. On foot, the build still uses one common scale for every body; per-body gravity on foot is pending.
  • Real relief. The planets’ terrain is built from real topographic data of Earth (NOAA’s ETOPO and other public elevation models), remixed so no world is a recognisable Earth; moons get populations of impact craters. The generator never invents relief with noise.

All fifteen bodies with a surface have been generated by that pipeline and are going through a visual review, body by body. You can read the worlds themselves, with every radius, gravity and atmosphere, in our guide to the Aurin system, and the canon in the Codex. The chain that turns the lore into those fifteen worlds is explained step by step in how COLONIZED builds fifteen worlds from their lore, and every figure is in the Aurin system in numbers.

Perguntas e respostas

Why do games have trouble with very large worlds?

Because positions are usually stored as 32-bit floating-point numbers, which have about seven significant digits. Far from the origin, the gap between representable positions grows: at about 8,400 km it is already one metre, which makes objects jitter and physics break.

Can Unreal Engine 5 handle a real-scale solar system?

Not directly. Unreal Engine 5 uses double precision (Large World Coordinates), but its default world limit is about 88 million km, less than one real astronomical unit. Games either compress distances, split the system into zones or move the origin.

What is a sphere of influence in orbital mechanics?

The region around a body where its gravity dominates over that of the body it orbits. Its usual approximation is r = a·(m/M)^(2/5), and space games use it to switch which body pulls a ship (the patched conics method).

How big is the solar system in COLONIZED?

In the canon and the game's star catalogue, the Aurin system has a G1V star, four planets with radii from 6,000 to 6,400 km, ten moons and a captured asteroid. Distances are compressed: one lore astronomical unit equals 15 million km, so the outer ice belt sits at 45 million km.

Fontes

Os números de terceiros levam à fonte. A data é a de publicação ou, quando não há, o dia em que consultamos a página.

  1. Large World Coordinates in Unreal Engine 5 · Epic Games documentation · 2026-10-13
  2. World Partition · Epic Games documentation · 2026-10-13
  3. Floating-point numeric types · Microsoft Learn · 2026-01-14
  4. Orbits and Kepler's laws · NASA · 2024-05-21
  5. Patched conic approximation (TN D-1780) · NASA Technical Reports Server · 1963