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 boosts its primary resource output:
| Planet Type | Resource Boosted | Multiplier |
|---|---|---|
| Metal | Metal | 1.5× |
| Crystal | Crystal | 1.5× |
| Gas | Gas | 1.5× |
| Rare | Rare | 1.5× |
| Food | Food | 1.5× |
| Agricultural | Food | 2.0× |
| Industrial | All non-food resources | 1.25× |
| None | — | 1.0× |
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) |