Purpose: AI-readable reference for Structs power system. Capacity, load, online status, struct requirements.
Energy is per-block and ephemeral. Energy produced in a block that is not consumed in that same block is permanently lost. There is no “energy balance” — only total capacity (personal generation + substation-provided) and total load (energy allocated out + struct consumption). Idle capacity is waste, not safety margin. Guild substations should aim for full utilization.
Transaction fees come from energy, not Alpha. Players never need a separate token balance to submit transactions. TX fees pull from the player’s connected power source. This means any player connected to a substation with capacity can transact. Validators earn from all transactions through energy connected to their reactor.
totalCapacity = capacity + capacitySecondary
| Term | Source |
|---|---|
| capacity | Personal generation — energy the player produces via their own infusions (reactor or generator). Only this capacity can be used to create allocations. |
| capacitySecondary | Substation-provided — energy received from the player’s connected substation. Matches the substation’s connectionCapacity. |
totalLoad = load + structsLoad
| Term | Source |
|---|---|
| load | Energy allocated out — total power the player has routed to others via allocations they created. |
| structsLoad | Sum of all online struct PassiveDraw — energy consumed by the player’s active structs. |
availablePower = (capacity + capacitySecondary) - (load + structsLoad)
playerOnline = (load + structsLoad) <= (capacity + capacitySecondary)
If offline: player halted, cannot perform actions.
playerPassiveDraw = 25,000 milliwatts (25 watts)
Base consumption when player is online.
Each struct has:
| Requirement | When Applied |
|---|---|
| BuildDraw | During building |
| PassiveDraw | When struct is online |
Total for new struct: buildPower + passivePower must be available.
| Struct | Build | Passive | Total |
|---|---|---|---|
| Ore Extractor | 500,000 W | 500,000 W | 1,000,000 W |
| Planetary Defense Cannon | 600,000 W | 600,000 W | 1,200,000 W |
| Ore Bunker | 200,000 W | 200,000 W | 400,000 W |
allocatableCapacity = capacity - load
Only the player’s personal capacity (from infusions) counts here — capacitySecondary (substation-provided) cannot be allocated out. load is the amount already allocated, so the remainder is what’s available to create new allocations from.
| Entity | Online When |
|---|---|
| Player | availablePower > 0 |
| Struct | availablePower >= struct.passiveDraw |
False positive: A player connected to a substation pool may show capacity=0 while structs are still online and drawing power. This happens because the substation handles capacity distribution. Check structsLoad > 0 as the real indicator that structs are functional — not capacity > 0.
New players typically start with zero personal capacity (no infusions yet) and rely entirely on capacitySecondary from their guild’s substation connection. The available capacity depends on what the guild allocates. Here is the load budget for the standard onboarding build order:
| Item | Build Draw | Passive Draw | Cumulative Load |
|---|---|---|---|
| Player (base) | — | 25 kW | 25 kW |
| Command Ship (build) | 50 kW | — | 75 kW |
| Command Ship (online) | — | 50 kW | 75 kW |
| Ore Extractor (build) | 500 kW | — | 575 kW |
| Ore Extractor (online) | — | 500 kW | 575 kW |
| Ore Refinery (build) | 500 kW | — | 1,075 kW |
| Ore Refinery (online) | — | 500 kW | 1,075 kW |
Build draw is temporary (only during construction) and releases when the build completes. The worst-case load during onboarding is ~1,075 kW with all three structs online plus a build in progress.
Minimum viable capacity: ~575 kW to have player + Command Ship + Ore Extractor online. If the guild substation provides less, prioritize activating Command Ship first, then build one struct at a time.
If total load ever exceeds total capacity, the player goes offline and cannot perform any actions until load is reduced (deactivate structs) or capacity is increased.
Three methods to increase a player’s available capacity:
| Method | How | Rate | Risk | Reversible |
|---|---|---|---|---|
| Reactor infusion | reactor-infuse [your-addr] [reactor-addr] [amount-ualpha] |
1g ≈ 1 kW (minus commission) | Low | Yes (defuse with cooldown) |
| Generator infusion | struct-generator-infuse [struct-id] [amount-ualpha] |
1g = 2-10 kW depending on type | High (raidable) | No |
| Buy via agreement | agreement-open [provider-id] [duration] [capacity] |
Varies by provider | Medium (ongoing cost) | Yes (close agreement) |
When infusing Alpha Matter into a reactor, the generated power is split between the player and the reactor based on the reactor’s commission rate:
playerCapacityGain = power * (1 - commission)
reactorCapacityGain = power * commission
The player’s capacity increases automatically — no allocation or substation setup needed. This makes reactor infusion the simplest path to more capacity.
Example: 3,000,000 ualpha infused into a reactor with 4% commission generates 3,000,000 mW. The reactor keeps 120,000 mW (4%), the player receives 2,880,000 mW (96%) added directly to their capacity.
Allocations can be created from Reactors, Players, and Substations. Allocations can only be connected to Substations.
For full energy management workflows, see the structs-energy skill.
The shared energy system and flexible permission model were designed for AI automation. A secondary agent can be granted scoped permissions to manage power on behalf of a player — monitoring substations, adjusting allocations, and reacting to power events via GRASS streaming. See the structs-streaming skill “Automation Patterns” section for implementation details.
systems/power-system.md — Full power system documentationschemas/formulas.md — Power capacity formulasschemas/entities.md — Player capacity/load fields