OpenFront Numbers Worth Double-Checking
Figures that circulate in OpenFront guides, set beside what the source code actually says: city troop cap, trade income, SAM reload, and one of ours.
The short version
- City +25,000 and +250,000 are both right. On-screen troops are a tenth of the internal value
- Trade income is not proportional to distance. It is a sigmoid, so nearby ports earn far less than a linear estimate suggests
- The game's own help text is stale in places. It lists SAM reload as 7.5 seconds; the code says 9
The biggest gap is the city troop bonus: it circulates as +25,000 while the source says +250,000, a factor of ten. Alliance duration is another — five minutes, not the ten that gets repeated.
Below is each circulating figure set against the game repository. This is not a page about who is wrong — it is a page about which number to trust, and it includes the ones we got wrong ourselves.
No site is named. Some values were right in older builds, and some may already be fixed. What matters is what the code says right now.
Reference: the commit in
_meta.commit, shown at the foot of every page and in the rail.
1. Troop cap from a city — both numbers are right
| Commonly quoted | Source code |
|---|---|
| +25,000 per level | +250,000 per level |
⚠️ This is a unit difference, not an error. Both figures describe the same thing read off two different places, so neither one is wrong.
The troop figures the game prints are the internal value divided by ten — the client’s renderTroops is renderNumber(troops / 10). So a city level raises the cap you see by +25.0K. The constant in the source is 250_000.
Read it off the screen and you write 25,000. Read it off the code and you write 250,000. Same thing, two frames of reference.
This site publishes internal values because every formula is written in them. Comparing against the screen, drop a zero. → How to Measure Distance On Screen
Either notation leads to the same conclusion — holding 1,000 tiles, one city is worth 5,175 tiles of land. That reorders your entire gold priority.
→ How Many Cities Should You Build?
2. Trade income scales with distance
| Commonly quoted | Actual |
|---|---|
linear or near-linear, base + rate × distance | a sigmoid |
75,000 / (1 + e^(−0.03 × (distance − 300))) + 50 × distance
| Distance (tiles) | Actual (gold) | Common estimate (gold) |
|---|---|---|
| 100 | 5,185 | ~33,800 |
| 200 | 13,557 | ~60,900 |
| 300 | 52,500 | ~88,900 |
Short lanes get overstated by more than 6×. That is the number that convinces people clustered ports still earn something.
→ Where Should You Build Ports?
3. Tiles give population linearly
| Commonly quoted | Actual |
|---|---|
| a flat figure per tile (e.g. 3) | 2 × (tiles^0.6 × 1000 + 50,000) |
The 0.6 exponent is the whole story. Land has diminishing returns; believing it is linear makes expansion always look correct. In practice, past a certain point cities dominate.
| Tiles held | One more tile adds |
|---|---|
| 100 | +190 |
| 1,000 | +76 |
| 5,000 | +40 |
→ Troop Cap and the 42.2% Rule
4. The worker system
| Commonly quoted | Actual |
|---|---|
| workers breed faster than the army | no worker concept found in the current source |
There is one slider, the attack ratio, and no structure that divides population into workers and soldiers. The code has a variable named goldFromWorkers, but that just holds passive gold income — it is not a unit.
It may have existed in an older build and been removed.
5. Defense post multipliers vary by terrain
| Commonly quoted | Actual |
|---|---|
| mountain ×6 / flat ×4.5, terrain-dependent | ×5 flat, terrain-independent |
The code multiplies the terrain coefficient by ×5 with no branch for terrain type.
The outcome does differ by terrain, though. On mountain (120) the effective figure is 600; on plains (80) it is 400. “A post in the mountains is stronger” is a correct feeling with the wrong cause — it is the terrain coefficient, not the post multiplier.
→ Defense Post Range and Placement
6. SAM reload is 7.5 seconds
| Commonly quoted | Actual |
|---|---|
| 7.5 s | 9 s |
SAMCooldown() is 90 ticks and a tick is 100 ms, so 9 seconds.
The game’s own help text also says 7.5 seconds. This is a case of the help being older than the code. The same text gives the range as “100 pixel” when level 1 range is actually 70 tiles.
That 1.5 seconds decides whether two simultaneous incoming missiles both get stopped.
7. SAM intercept chance
| Commonly quoted | Actual |
|---|---|
| 75% chance to intercept | there is no probability roll |
Interception is deterministic — the interceptor reaches the missile and deletes it. Randomness is used only to pick which missile to shoot at.
Intercepts fail for four real reasons: out of range, still reloading, caught too late (no intercept is allowed on the final step of the trajectory), or still under construction. Luck is not one of them.
8. SAMs cannot touch a MIRV at all
| Commonly quoted | Actual |
|---|---|
| MIRV cannot be intercepted | MIRV warheads are on the intercept list |
The intercept list is atom bomb, hydrogen bomb, and MIRV warhead. What cannot be intercepted is the MIRV body before it splits; the warheads themselves are valid targets.
They get through for three reasons, and volume is only the third: MIRV warheads travel at speed 22 against an interceptor’s 12, no intercept is allowed on the final step of the trajectory, and only then does the 9-second reload matter. Levelling a SAM adds parallel intercepts, which helps with the third but not the first two.
9. Stacking a port beats spreading
| Commonly quoted | Actual |
|---|---|
| one port at level 10 ≈ 3× ten ports | the reverse — ten ports are 1.4× better |
A port rolls once every 10 ticks, and one check yields at most one ship, whatever the level. A level-N port makes N attempts inside that check but stops at the first success.
| For the same 7,875,000 gold | Ships per check |
|---|---|
| 1 port × level 10 | 0.60 |
| 10 ports × level 1 | 0.84 |
The 3× figure appears if you apply the failure-streak discount to only one side of the comparison. Held to the same rules, the stacked port comes out slightly behind.
Levels 2–3 are still efficient. When there is no coastline left to build on, upgrading is right.
→ Where Should You Build Ports?
10. Trade ships run between your own ports
| Commonly quoted | Actual |
|---|---|
| your own ports trade with each other | they do not |
Candidate partners are drawn only from other players’ ports.
Trains are the easy confusion. A train stopping at your own city still pays 10,000 gold. Sea trade has no self case.
It changes the placement advice completely: there is no reason to space your ports apart from each other. Only the distance to someone else’s port matters.
11. Stack levels into one factory
| Commonly quoted | Actual |
|---|---|
| upgrade a single factory | the reverse — spreading is 21% better |
⚠️ The name is the trap here. The function behind the dispatch denominator is named
unitCountand carries the comment// Count of units owned— but the body istotal += unit.level(). It sums levels, not buildings.
Since the denominator is your level total, splitting changes nothing about it. What actually decides the outcome is elsewhere: a station dispatches at most one train, then waits 10 ticks. A level-6 factory makes six attempts but stops at the first success.
| For the same 3,875,000 gold | Trains per tick |
|---|---|
| 1 factory × level 6 | 0.0198 |
| 6 factories × level 1 | 0.0240 |
Same rule as ports. Where a per-check ceiling of one exists, more checks wins.
12. A low attack ratio makes troops grow faster
| Commonly quoted | Actual |
|---|---|
| the slider position affects growth rate | no effect whatsoever |
The growth formula reads exactly two things: current troops and the cap. The attack ratio is a client-side value deciding how much a click sends; it never enters the growth calculation.
The reason it looks connected is indirect. A high ratio sends more troops out, fewer troops means a lower fraction of cap, and a fraction nearer 42.2% grows faster. The cause is what you have left, not the slider.
→ The Attack Ratio Slider · Troop Cap and the 42.2% Rule
13. A SAM starts intercepting once its gauge is partly full
| Commonly quoted | Actual |
|---|---|
| partial function above some build progress | zero intercepts until complete |
The interception logic is attached at the moment construction completes. Before that, no check runs at all regardless of how full the bar looks. There is no threshold and no probability.
Not a SAM quirk. A city under construction does not raise your cap; a defense post under construction adds no loss multiplier at the border. The one place the under-construction state leaks against you is a factory — it already counts toward the dispatch denominator.
Things that checked out
For fairness, these matched the source exactly.
- FFA win condition, 80% of the land
- Growth peak at 42% of cap
- City prices 125,000 → 250,000 → 500,000 gold, capped at 1,000,000
- Prices in gold: atom bomb 750,000 · hydrogen bomb 5,000,000 · missile silo 1,000,000 · MIRV 25,000,000 · SAM launcher 1,500,000
- Traitor mark, −50% defense for 30 seconds
- Defense post radius, 30 tiles
- Warship range 130 tiles, 250 shell damage every 2 seconds
Why this keeps happening
The game is in alpha and patches often. A number written down once goes stale on the next patch, and a number typed into prose never gets fixed.
That is why this site extracts figures from the repository. One npm run extract updates the docs and the calculators together, and a failed extraction stops the build.
We are not immune, though. Of the site’s 64 values, 62 are extracted and 2 are still entered by hand — the ones with no fixed constant in the source (the lobby’s default Tribe count) and the exponents that arrive as strings rather than code. If something here is wrong, those two are the likeliest. And as entry 1 shows, our reasoning can be wrong even when the number is right. Tell us via contact.
Further reading
- Named OpenFront Strategies — seven standards with evidence
- Ten Common Mistakes
- Reading the Bottom Bar — checking these numbers on screen yourself
- How to Measure Distance On Screen — the internal/display conversion
- Building Cost Calculator — check the circulating prices yourself