The planner treats one power unit as one energy unit per second, matching the
wiki's worked Battery example. All times are estimates for a constant load and
the selected weather. The formulas below are exactly what the calculator uses.
1. Generation and demand
Let P be Solar Panels, D be Drills, and
G be active fueled Generators. Each Drill consumes 120 power.
One panel produces 100 in clear weather, 70 when cloudy, 10 in rain,
5 in a thunderstorm, and 0 at night. Each fueled Generator adds a constant
120 in every condition.
generation = P × power per panel + G × 120
demand = D × 120
surplus = generation − demand
A positive surplus can charge Batteries. A negative value is the amount
Batteries must supply; if their output cannot cover it, the grid overloads.
2. Battery limits
Let B be Batteries. Each stores 96,000 energy and can charge
or discharge at no more than 200 power per second. More Solar Panels cannot
make a Battery exceed that input limit.
bank capacity = B × 96,000
bank input/output limit = B × 200
actual charge rate = min(max(surplus, 0), B × 200)
Full-load Battery operation is possible only when
B × 200 ≥ Battery-backed demand. Because fueled Generators also
run at night, Battery-backed demand = max(0, demand − G × 120).
The calculator does not assume that a smaller
number of machines keeps running when the grid is overloaded.
3. Recharge and runtime
Upgrade rows show two bounds, not the Battery's current state. Empty-to-full
assumes the entire bank starts empty. Runtime-from-full assumes it starts full.
empty-to-full seconds = bank capacity ÷ actual charge rate
full runtime seconds = bank capacity ÷ Battery-backed demand
No current charge state is inferred. All displayed recharge and runtime values
use the empty-bank and full-bank bounds above.
4. How the upgrade target is calculated
The optimizer does not require a 100% recharge. The Battery buffer says how
many minutes the full load should run from storage. The recovery window says
how quickly Solar must replace only that consumed energy. One full game day is
20 real-time minutes.
Battery-backed demand = max(0, demand − G × 120)
buffer energy = Battery-backed demand × buffer minutes × 60
Batteries for output = ceil(Battery-backed demand ÷ 200)
Batteries for capacity = ceil(buffer energy ÷ 96,000)
required Batteries = max(output count, capacity count)
recovery power = buffer energy ÷ (recovery minutes × 60)
required Panels = ceil((demand + recovery power − G × 120) ÷ panel output)
With “any positive surplus,” recovery time is not constrained: the planner
simply requires at least one unit of spare generation. The default Balanced
approach reaches baseline power, activates the next Drill, then adds its buffer
and recovery generation before planning another Drill. The Conservative approach
interleaves Panels and Batteries until those protections are complete, then
activates the Drill. Both approaches reach the same final setup; only build order
differs. Every table row is one physical build.
5. Worked example: 4 / 2 / 2
In clear weather, 4 panels generate 400. Two Drills consume 240, leaving
160 for charging. Two Batteries store 192,000 and have a combined 400/s
limit, so the available 160 surplus is the actual charge rate.
empty-to-full = 192,000 ÷ 160 = 1,200 sec = 20 min
runtime from full = 192,000 ÷ 240 = 800 sec = 13m 20s
For a 10-minute buffer, the load consumes 144,000 energy. Recovering that in
20 minutes needs 120 charging power. Demand plus recovery is 360, so the
result rounds up to 4 clear-weather panels.
6. Materials
Costs are accumulated in table order and compared with the entered inventory.
Solar Panel = 8 Iron + 8 Copper + 8 Glass
Drill = 10 Iron + 10 Copper
Battery = 10 Iron + 10 Copper + 15 Silicon
Energy Generator = 5 Iron + 5 Copper
“Reachable” means the inventory covers every build up to that row, not only
the item on that row. Generators are user-selected temporary sources and are
not automatically added to the upgrade path or its cumulative cost.
Limits and sources
This upgrade path is an approximation, not a statistical prediction.
Weather is modeled as a constant selected daytime baseline, cloudy by default.
Rain, thunderstorms, night, and sequences of poor conditions can drain Batteries
faster or delay recovery. The game does not publish reliable probabilities or
durations for those conditions, so the calculator does not invent occurrence
rates. A selected Generator is assumed fueled and active for the entire calculated
period. The wiki verifies 120 constant output, combustible fuel, and the 5 Iron +
5 Copper recipe. Current player testing says fuel burns even without demand,
conversion is manual, and converted runtime is capped around 12 minutes; those
operational details are not published game-file values. Charging loss, exact
Battery balancing, and sleep simulation are also undocumented. Actual results can
differ if weather persists or the game distributes charge unevenly between Batteries.
Sources:
energy and weather data,
Drill data,
Battery data,
Solar Panel data, and
Energy Generator data.