Under the Hood

Built for Scale, On Purpose

Maximum performance is a top design goal of Sovereign Empires — not a polish item bolted on at the end. Every system is designed for thousands of units from the first line of code.

Deterministic core

A headless, pure-C# simulation with all-int / fixed-point state where possible. Save/load is round-trip safe, and the determinism keeps the door open for lockstep multiplayer.

Structure-of-Arrays

SoA data stores with swap-remove and a stable id → slot mapping. Systems run single-pass per tick with no per-frame allocations.

Spatial grids

Per-attacker scan radius over spatial grids keeps combat target-acquisition cost near-constant per unit, even at high unit counts.

GPU instancing

Units, building pieces, shadows, and projectiles render through MultiMesh — a single draw call per bucket — with anti-cull rects so nothing gets erased.

Off-thread generation

Terrain and decoration generation run off the main thread, deterministically, so a massive world can stream up without stalling the frame.

Always-on profiler

A permanent in-engine profiler and a headless benchmark harness measure every system. The rule on the project: don't optimize without the overlay open.

The Stack

  • Engine: Godot 4.6 (mono / .NET) for an iso-2D client.
  • Language: C# 12 on .NET 10.
  • Architecture: a no-engine C# game library holding the simulation, with the client referencing it one-way and reading its spans.
  • Tooling: a sprite-baking pipeline turns 3D models into GPU-instanced 2D units, plus a headless bench harness for sim and render.
The current performance floor is roughly 10,000 active units at a 30 Hz sim and 60 FPS render, with combat, projectiles, and air all live — and the next lever is moving the sim onto a background thread with double-buffered snapshot interpolation.

Following Along

Engineering notes and milestones land in the Devlog as the game grows.