Planet System
Planet size, population, food mechanics, housing efficiency, stability, and the energy system.
Planet Object
Resource production is not stored on the planet. It is computed each tick from the buildings currently constructed on the planet. See Buildings.
Planet Size
Planet size determines the number of construction slots and base housing capacity.
| Size | Construction Slots | Base Housing Capacity |
|---|---|---|
| Small | 3 | 500 |
| Medium | 5 | 1 000 |
| Large | 7 | 2 000 |
Total housing capacity = base housing + housing contributed by Housing Block buildings.
Population System
Population is a single scalar representing the total number of citizens.
Colonization
- New planet starts at
population = 0 - Requires a colony fleet to colonize
- Player chooses how much population to transfer
- Origin planet immediately loses that population
- Transport requires cargo capacity in the fleet
Food Mechanics
Constants
| Constant | Value |
|---|---|
food_per_pop | 1.0 (food units consumed per citizen per tick) |
starvation_multiplier | 0.5 (population lost per unit of food deficit) |
base_growth_rate | 0.02 (2% population growth per tick when food surplus) |
Each economic tick
Growth (net_food > 0)
Stable (net_food = 0)
Population does not change.
Starvation (net_food < 0)
Production Formula
All resource production comes from buildings. Each building's output per tick is:
Food production exception: stability_modifier is floored at 0.5 for Hydroponic Farms. This prevents an unrecoverable death spiral where zero stability blocks the only means of restoring food and stability.
Outputs are summed across all completed buildings on the planet and applied to the planet's resource stockpiles each tick.
Housing Efficiency (Efficiency Modifier)
The modifier is computed by linear interpolation across five zones:
| Housing Ratio | Zone | Efficiency |
|---|---|---|
| 0 | No population | 0.10 (floor) |
| 0 → 0.50 | Underpopulated | 0.10 → 0.50 (linear) |
| 0.50 → 0.75 | Growing | 0.50 → 1.00 (linear) |
| 0.75 → 0.90 | Optimal | 1.00 |
| 0.90 → 1.00 | Crowding | 1.00 → 0.80 (linear) |
| ≥ 1.00 | Overcrowded | 0.80 (cap) |
The efficiency floor of 0.10 ensures buildings always produce something even with zero population.
Stability
Range: 0 – 100. Stability is both an input and output of each economic tick.
Modifiers
This multiplier is applied to all building outputs (with the food-production floor described above).
Delta per tick
| Condition | Stability Change |
|---|---|
| No negative events | +1.0 / tick (recovery) |
| Starvation (net_food < 0) | −2.0 / tick |
| Overcrowding (housing_ratio > 1.0) | −1.0 / tick |
| Starvation + Overcrowding | −3.0 / tick |
Recovery only applies when no negative condition is active. Stability is clamped to 0, 100 after each delta.
Specialization Modifiers
Each planet has a specialization type that shapes its economy through production multipliers and traits. Specializations are assigned procedurally at galaxy generation based on a planet's orbit index and the star type of its system.
Full Specialization Reference
| Type | Habitable | Production Modifiers | Traits |
|---|---|---|---|
| None | ✅ | All ×1.0 (balanced) | — |
| Metal | ✅ | Metal ×1.8, Food ×0.6 | — |
| Crystal | ✅ | Crystal ×1.8 | Pop Growth ×0.8 |
| Gas | ✅ | Gas ×1.8 | Housing Cap ×0.7 |
| Rare | ✅ | Rare ×2.0 | Stability floor 20 |
| Agricultural | ✅ | Food ×2.0, Metal ×0.5 | — |
| OceanWorld | ✅ | Food ×1.5, Gas ×1.3, Metal ×0.3 | — |
| Industrial | ✅ | Metal/Crystal/Gas/Rare ×1.25, Food ×0.0 | — |
| Forge | ✅ | All ×1.0 | Stability floor 15, +1 build slot |
| Research | ✅ | Food ×0.7 | Pop Growth ×0.9 |
| HiveWorld | ✅ | All ×1.0 | Housing Cap ×2.0, Pop Growth ×1.3, Stability floor 10 |
| Naval | ✅ | Metal ×0.6 | Fleet bonuses (planned) |
| Frozen | ❌ | Crystal ×1.4, Rare ×1.2 | Pop Growth ×0.6 |
| Toxic | ❌ | Gas ×1.6, Rare ×1.3 | Pop Growth ×0.5, Housing Cap ×0.6 |
| Barren | ❌ | All ×0.7 | Cannot be a homeworld |
| DeathWorld | ❌ | Metal ×1.6, Rare ×1.5 | Pop Growth ×0.4, Stability floor 30 |
Trait Descriptions
- Habitable — Only habitable planets can be claimed as a homeworld via the Homeworld assignment system.
- Pop Growth modifier — Multiplies the base population growth rate (2%/tick) after food calculations. Values < 1.0 slow growth; > 1.0 accelerate it.
- Housing Cap modifier — Multiplies the total housing capacity of the planet. Affects the
housing_ratiothat drives the efficiency modifier. - Stability floor — Stability cannot fall below this value regardless of negative events. Higher floors protect harsh planets from total economic collapse.
- Build slots bonus — Adds extra construction slots beyond what planet size provides.
Specialization by Location
Orbit position, star type, and sector sun proximity together determine which specializations can appear.
Orbit zones (base)
| Orbit Zone | Typical Specializations |
|---|---|
| Inner orbits (1–2) | Barren, DeathWorld, Metal |
| Near-inner (3–4) | Metal, Rare, Toxic, Industrial |
| Habitable zone | None, Agricultural, OceanWorld, HiveWorld, Research, Naval, Forge |
| Outer mid (10–12) | Crystal, Frozen, Gas |
| Deep outer (13+) | Frozen, Gas, Rare |
Star type — habitable zone orbits
| Star Type | Habitable Zone |
|---|---|
| Yellow Dwarf | Orbits 5–8 |
| Red Giant | Orbits 7–11 |
| Blue Giant | Orbits 3–6 |
| Neutron Star | None |
Sector suns and temperature shift
Each sector has 1 or 2 suns (30% chance of a binary pair). All systems within a sector are positioned at varying distances from these suns. The closer a system is to the nearest sector sun, the warmer its planets tend to be; the further away, the colder.
A temperature shift is computed per system and applied as an offset to the habitable zone boundaries:
| Distance to nearest sector sun | Temperature shift | Effect |
|---|---|---|
| < 80 units | −2 | Warmer — habitable zone shifts 2 orbits inward |
| 80–179 units | 0 | Nominal — no shift |
| 180–279 units | +2 | Cooler — habitable zone shifts 2 orbits outward |
| ≥ 280 units | +4 | Frigid — habitable zone collapses entirely |
A shift of +4 means no habitable-zone specializations can appear in that system regardless of star type — every planet that would otherwise be habitable is instead drawn from cold or toxic pools.
Binary sectors (two suns) tend to produce more uniformly warm planets because systems are rarely far from both stars simultaneously. Single-sun sectors are more extreme: systems huddled near the sun are very warm while those on the fringe may be completely frozen.
Energy System
Buildings that produce resources consume energy. Energy is generated by Solar Arrays and Nuclear Reactors.
This ratio multiplies all resource-producing building outputs. Even with zero power plants, buildings operate at 50% efficiency (the floor ensures planets are never completely unproductive).
When energy_demand = 0 (no extraction buildings), energy_ratio = 1.0.
See Buildings for per-building energy values.
Economic Ticks
The economy advances in discrete ticks. The tick interval is configured server-side (default: 5 minutes).
Lazy tick system
Planets are not ticked on a global schedule. Instead, each planet records last_tick_at. When a player views a planet, the server computes how many ticks have elapsed since the last tick and applies them all at once (catch-up).
This means planets that are not visited still advance correctly — they just apply all overdue ticks in a burst when next accessed.
Global events (fleet movement, trade routes, espionage) are advanced on the same lazy schedule using a shared last_global_tick_at timestamp.
Resources
| Resource | Primary Use |
|---|---|
| Metal | Ship frames, building construction |
| Crystal | Electronic modules, sensors |
| Gas | Fuel, engine modules, some refineries |
| Rare | Advanced modules, high-tier buildings |
| Food | Population sustenance (consumed each tick) |