Skip to main content
⌖ OF Intel

GUIDES

Terrain systems: why the same army wins one border and loses the next

The four land classes in OpenFront, the v0.34 attack formula that prices each of them, and the concrete troop and tick math that decides whether a push bleeds out or breaks the line.

Combat Difficulty · Intermediate Published Oct 2, 2026 Updated Oct 2, 2026 Reviewed by OpenFront Intel editors #terrain#combat#expansion#map-reading

How terrain sets the price of every border fight

Every land tile in OpenFront carries a hidden number called its magnitude, and that number silently sets two prices on any border it touches. The first price is how bloody the tile is: it sets the base amount of troops an attacker must bleed to take it. The second price is how slow the tile is to take: it sets how many ticks the push spends crossing it. The engine converts the magnitude into one of four land classes — Plains, Highland, Mountain, or Impassable — and each class has a fixed base loss and a fixed speed cost. Plains is the cheapest and fastest of all of them, Mountain is the bloodiest and slowest, and Highland sits in the middle. Impassable terrain is not priced at all; it simply cannot be attacked, so it is a wall rather than a battlefield. Reading a map as a set of prices instead of a set of shapes is the single shift that turns a “why did I lose that border” question into a decision you can make before you commit.

The reason players lose borders they “should have won” is that they compare the two armies and not the two terrains. An identical stack that crosses open plains might cost forty-odd troops per tile and take under two ticks, while the very same stack forced over a Mountain ridge loses nearly fifty percent more troops per tile and takes more than twice as long. If the defender simply holds the high side, the attacker is paying that penalty on every single tile of the fight, which is why holding expensive ground is usually the rational play rather than the mistake the nuke-or-push instinct wants you to call it. The concrete habit this guide is building is to refuse to give a front a single number: you split the front into the stretch you will actually engage, name the class of each tile in that stretch, and price it before you move a single stack. When you do that, the answer to “should I push here” stops being a gut feeling about who has more troops and becomes an explicit comparison of two blood budgets and two time budgets, which is a comparison you can actually run in the few seconds before a commit. The discipline that follows from this is to refuse to name a single number for the whole front: you name a blood number and a time number for the specific stretch you will fight, and you treat the rest of the map as context, not as the fight. That split — engage here, ignore there — is what separates a push that wins from a push that looks right on the minimap but dies on the one expensive ridge you happened to route through, and it is the habit the rest of this guide is built around.

The four land classes, straight from the source

The magnitude-to-terrain mapping is fixed in the game map logic and has been stable across the whole v0.34 line. A land tile with magnitude below ten is Plains, a tile from ten just under twenty is Highland, a tile from twenty up to thirty is Mountain, and a tile at or above the impassable magnitude of thirty-one is Impassable. Anything that is not land is Ocean, which a ground stack cannot cross at all and which is only reachable by boat. The magnitude itself is read from the map data each tile is painted with, so the four classes are not something you choose — they are drawn into the map before the match starts, and your opening decision is about which of those pre-drawn classes your spawn and your first expansions sit on. Because the classes are pre-drawn, the map itself is the first terrain decision of the game, and reading it before your first push is not optional preparation; it is where the match is actually won or lost.

This mapping is the single most useful thing to internalize, because it turns a color on the minimap into a number you can reason about. When you see a band of dark ridge between you and your target, that band is Mountain and you are being asked to fight at the worst price the engine offers. When you see a broad pale plain, that is Plains and the border there is genuinely cheaper in both blood and time than the one down the mountain side of the same front. Highland is the deceptive middle: it is only a step worse than Plains on the raw bases, but because it is usually where capitals and capitals-adjacent ports cluster, it is where the defense posts and the structures actually sit, so a “just a little hillier” section often carries far more real cost than its base number suggests. The practical read is that you should never treat a front as one number; you should split it into the stretch you will actually fight, and price each stretch by its class, because the front where you choose to engage can be the difference between a push that wins and a push that dies. It is also why two players on the same map can have completely different games: one expands on the cheap Plains side and forces the other to come at them across the expensive side, while the other sits behind the ridge and makes every approach bleed.

What the v0.34 attack formula actually computes

The v0.34 line rewrote the attack model, so the terrain base is now one input into a larger calculation rather than the whole answer. The engine takes the terrain’s base loss and the terrain’s base speed cost, then scales both by the situation. The defender’s average troops per tile enters the loss term directly: packed land is more expensive to take than the same land spread thin, because the per-tile density adds straight into the attacker’s loss. The ratio of the defender’s total army to your attacking stack is clamped, and that clamp is where the “don’t nibble” lesson lives. Below parity the ratio is floored, so an overwhelming push both loses fewer troops per tile and completes the crossing in fewer ticks; above it the ratio is capped, so a hopeless small push does not get any cheaper by being tiny. The model is designed so that the size of your push is a first-class decision, not a trivial detail.

There is a second, independent speed term. It grows with how outnumbered the attack is, floored at about eighteen percent faster when you are at or above parity and rising as you get outnumbered, then ramping up again past twenty-to-one for a truly hopeless push. That speed term is multiplied by the terrain’s base speed cost and divided by the size of the border you are attacking, so a long, thin border is taken faster per tile than a short, thick one even at the same terrain and the same ratio. Both the loss and the speed are finally scaled by large-territory bonuses: the attacker’s bonus is the stronger one, so late in a match, when everyone owns big territories, pushes become cheaper and faster for everyone, which is exactly why the v0.34 designers made late games more dynamic. The takeaway is that terrain sets the floor, and the ratio, the density, and your territory size set how far above that floor you actually pay. In practice that means the same Mountain ridge that is a wall early in a game can become a passable line late in a game once territories have grown, so the value of holding the ridge is not constant through the match — it is highest early, when territories are small and the large-territory bonuses have not yet done their work. One more term that the model adds and that most players miss is the disconnected-teammate and bot-defender handling: when a defender has left or is a bot the engine can reduce or zero the loss, so a front you would never open against a live, dense opponent becomes almost free against an abandoned one, and reading who is actually holding the border is part of the same terrain read as reading what the border is made of.

Quick reference

Land classMagnitudeBase loss (mag)Base speed costPathfinding costAttackable?
Plainsbelow 108016.51Yes
Highland10 to just under 20100201Yes
Mountain20 to 30120252Yes
Impassable31 and aboven/an/an/aNo — throws
Oceannon-landn/an/an/aOnly by boat

The table is the whole decision at a glance, and the two columns that matter most are the base loss and the base speed cost. Highland is a quarter bloodier than Plains (one hundred to eighty) and roughly a fifth slower (twenty to sixteen point five), while Mountain is fifty percent bloodier (one hundred twenty to eighty) and roughly half again as slow (twenty five to sixteen point five). Those are the pure terrain premiums before any defense post, any fallout, or any ratio adjustment, and they are the numbers you want memorized cold because they are the first thing you quote to yourself when a front comes up. The pathfinding cost column is the one that quietly changes your map: an A* path through Mountain terrain is weighted twice as much as the same path through Plains or Highland, so the engine’s own routing treats a mountain crossing as roughly twice as far as a plain crossing even when the tile count is identical.

That pathfinding weight is what makes the “short” ridge look wrong to a player who is used to counting tiles. A mountain ridge that is visually five tiles across is routed as if it were ten, so the engine will happily detour your expansion around it when a cheap route exists, and it will happily refuse to send you straight through a choke that is actually a Mountain band. The Impassable row is the hard stop: at magnitude thirty-one and above the terrain base is not just expensive, it is undefined, and the engine throws the moment a stack tries to attack it, so those tiles are pure walls that split a map into regions. The Ocean row reminds you that the same border logic does not apply across water: a ground push cannot cross Ocean at all, so a front that touches the sea is really two separate fronts and the crossing has to be a naval operation. Read the base loss column as your blood budget and the base speed cost column as your time budget, then add the multipliers from the following sections, and you have the full price of the border.

Scenario: a push that bleeds out on the plains

Work a concrete numbers example, because the abstract model hides how much a stack size changes. Suppose the defender holds fifty tiles with a thousand troops, so their average density is twenty troops per tile. If you attack with a thousand troops, you are at parity. On a Plains border at parity, the clamped ratio is one, the large-territory bonuses are still about one, and the attacker’s per-tile loss works out to roughly forty-three troops. The speed cost works out to about one point nine ticks per tile. Now triple your push to three thousand troops against the same defender. The ratio drops to about a third, which the loss clamp lifts to its minimum, and the per-tile loss falls to roughly twenty-six — a forty percent reduction per tile. The speed cost falls to about one point six ticks, an eighteen percent reduction. So the very same border, crossed by three times the stack, costs you less blood per tile and finishes faster, on top of the total troops you committed.

That is the entire lesson of the model in one example: nibbling a border with a small push is the worst way to fight it, because you pay the highest per-tile blood and the slowest crossing. The stack that wins a Plains fight is the stack that is clearly bigger than the defender’s army for that front, not the stack that just barely edges them. There is a second order of magnitude to the same rule. If you are the one defending those fifty tiles, the parity numbers are your defense: you know an equal push costs the attacker about forty-three troops per tile and about two ticks, so if you can hold a Plains border without spending more than that per tile to re-claim it, the attacker simply cannot bleed you. That symmetry is what makes Plains the honest ground — it is cheap enough that both sides can afford it, which is why fights on Plains tend to come down to who has the bigger stack rather than who has the better terrain. The assumption that breaks this play is a defender who is denser than the twenty-per-tile in this example: if they have concentrated four thousand troops on those fifty tiles, the density term alone adds almost another thirty troops to every tile you cross, and you now need a much larger ratio to bring the per-tile loss back down. The practical read is that you are almost never fighting at the floor: you are fighting the floor plus a ratio term, a density term, and a territory term, and each of those is something you can shift before the fight. Bigger push lowers the ratio term, spread defender lowers the density term, and late-game territory lowers the loss term for the attacker, so the same border has a different price at minute ten than it has at minute forty, and a defender who holds cheap ground behind an expensive ridge can turn a losing army into a winning one by making the attacker pay the premium. The ratio clamp is the part that bites hardest, because it is the term that rewards the single biggest change in habit — pushing with more troops — more than any other input in the model, and that is the one input a player has full control over at the moment of commitment.

Scenario: holding the high side against a mountain premium

Now put the defender on the high side and let the attacker choose where to hit. The defender owns a Mountain edge, magnitude in the twenty to thirty band, and the attacker wants a stretch of it. At parity on that Mountain tile, the base loss is one hundred twenty rather than Plains’ eighty, so the attacker’s per-tile loss at parity is roughly sixty-five troops against the forty-three the same parity push would pay on open ground — a nearly fifty percent premium. The speed cost is twenty-five rather than sixteen point five, so the crossing takes about two point nine ticks per tile instead of one point nine — more than fifty percent slower. The defender wins the border fight simply by holding the ridge, because every tile the attacker crosses is both bloodier and slower for them while the defender’s own position, on the cheap tiles behind the ridge, regenerates at the normal rate. The defender does not need a single extra troop to win this; the terrain does the defending for them, and that is the whole point of the high-side hold.

Now give that defender a single defense post on the Mountain tile they are holding. The post multiplies the base loss by five, so the Mountain’s one hundred twenty becomes six hundred, and at parity the attacker’s per-tile loss jumps to over three hundred troops. It also multiplies the base speed cost by three, so the crossing time more than triples. A single post on a Mountain tile has made that tile almost impossible to take with anything but a huge, deliberate push, and the attacker is now forced either to mass a stack several times the defender’s army or to route the entire fight around to a flanking Plains or Highland approach that the defender may not be watching. This is the exact shape of the community threads that ask “how do I stop them stealing my land”: the answer is not more troops on the same line, it is choosing to hold the high side, putting a post on the ridge, and making the attacker pay a price on every tile that they cannot sustain. The cost side is real and matters for the decision: a defense post is not free, it spends gold and a build slot, and a post on open Plains you do not intend to hold is a waste that the attacker can simply route around. The discipline is to spend the post only on the ridge you are genuinely holding, and to read defense posts and the multipliers for exactly when the five-times multiplier is worth the cost and when it is just expensive scenery.

Defense posts and fallout: the multipliers on the terrain

The terrain base is a floor, and two effects multiply it from above. A defense post, when the defender has one on the tile being attacked, multiplies the base loss by five and the base speed cost by three. That is a flat, unconditional multiplier: it does not care about your stack size or the ratio, it just makes the tile five times bloodier and three times slower to take. Because of that, the value of a post is proportional to the terrain it sits on — a post on Plains turns the eighty base into four hundred, a post on Highland turns one hundred into five hundred, and a post on Mountain turns one hundred twenty into six hundred, which is why the same post is worth the most on the ground you are trying to hold and least on the ground you are trying to throw away. The post has a range, and pre-placed posts are part of the map data, so reading the map for posts before you commit to a front is part of the same terrain read as reading the classes, and a front that looks like cheap Plains until you realize the defender posted the ridge is a front you lost before you crossed it.

Fallout is the second multiplier, and it works in the opposite direction from what it looks like. When the defender has fallout on the tile, the engine multiplies both the base loss and the base speed cost by a fallout modifier that runs from five down to three as the fallout ratio goes from zero to one. In other words, clean, un-irradiated defending ground is the most expensive for the attacker — up to five times the base loss and five times the base speed — while heavily irradiated defending ground drops that to three. Irradiation weakens the defender, so a border you have just nuked, or a strip of your own edge you have self-nuked to clear air, becomes cheaper and faster to cross afterward. This is a decision-relevant inversion: the same line is more expensive to fight before a strike and cheaper after one, so the timing of a nuke relative to a planned push changes the price of the border more than the terrain class alone would suggest. There is a second, subtler effect that players miss: because the fallout multiplier hits both the loss and the speed, irradiated defending ground is not just cheaper to take, it is faster to take, so a push timed after a strike on the defender’s edge can break a border that the same push would have bled to death on clean ground. Read how to time a nuke for the cost side of that timing decision, because the nuke that makes the border cheaper is the one whose gold cost you can actually afford to pay at the moment you need it.

Reading a map before the first push

The whole model collapses into one habit: before you commit to a front, split the front into the actual classes you will fight and price each one. Look at the stretch between your expansion and the target and name it — is that a broad Plains crossing you can overwhelm, a Highland band where the ports and posts sit, or a Mountain ridge the defender will hold? The A* pathfinding weight makes this concrete for your own routing: the engine prices a Mountain tile at twice what it prices a Plains or Highland tile, so the “short” mountain route is really a long one, and if the engine can route your expansion around it, it will. Use that to your advantage by expanding on the cheap side and forcing the opponent to come at you across the expensive side, where they pay the Mountain premium on every tile while you hold the ridge. This is the opening move on nearly every good map, and it is why the map itself — not your build order, not your first factory — is the first decision of the game.

There is a second, subtler read that the large-territory bonuses introduce. Because the attacker’s large-territory bonus is the stronger one, the player with more territory late in the match gets cheaper and faster pushes, so holding a defensive ridge is most valuable early, when territories are small and the bonuses are small, and it degrades a little as everyone grows. That does not mean the ridge stops mattering — the terrain base and the defense post are still full value — but it means a map where one player starts with a larger territory has a structural push advantage that terrain alone cannot fully offset. So when you pick a map or read an opening, weight the early ridge-hold against the map’s overall territory balance, and plan to either contest the cheap Plains side early or commit to the defensive ridge before the opponent can build the large-territory push advantage. The practical checklist for the first push is short and concrete: name the class of the front you are about to cross, confirm your stack is bigger than the defender’s army for that front and denser than their density, look for posts on the ridge, and note whether the border is clean or already irradiated. For map-selection reasoning across all of this, read the map strategy guide and for the broader combat decision, read land combat, because terrain is one input into a front that also has an economy side.

Failure modes and how to counter them

The most common failure is fighting a Mountain front at parity: the attacker commits a stack that roughly matches the defender’s army and expects to win on numbers, and instead pays the fifty-percent blood premium and the fifty-percent speed penalty on every tile and slowly bleeds to death. The counter is the ratio lesson — either triple the push so the per-tile loss and the crossing time both drop, or move the fight to the Plains side where the base loss is eighty instead of one hundred twenty. The second failure is ignoring the density: an attacker sizes the push to the defender’s total army but not their troops per tile, so a concentrated defender makes every tile far bloodier than the total-army estimate suggested, and the push stalls on a strip that looked cheap. The counter is to read the density as well as the total and to either spread your own attack across a wider front to lower the effective ratio or to wait for the defender to spread out before you commit the big push.

The third failure is mispricing a defense post. An attacker crosses a Plains front cleanly, hits a tile the defender posted, and the post turns the eighty base into four hundred and triples the crossing time, stalling the whole push on one tile. The counter is to read the posts before you commit and to route around a posted ridge rather than pushing straight into it, because the post is a fixed cost the attacker cannot out-push without a huge stack. The fourth failure is timing a push into a clean border instead of after a strike: the attacker crosses the defender’s un-irradiated edge at the full five-times fallout modifier, then the defender self-nukes to clear the air and the same edge becomes a three-times edge, flipping the price mid-fight. The counter is to time your push relative to the strikes on both sides, so you cross after the price has dropped rather than before it. The disciplined pre-push checklist is: which class is the actual front, is my stack clearly bigger than the defender’s army and denser than their density, are there posts on the ridge, and is the border clean or irradiated right now. If the answers do not line up, that is a border to move, not a border to force, and the strongest move is usually to let the defender pay the expensive side of the map while you take the cheap side of it.

What changed in v0.34 and what stayed the same

The v0.34 line is the version boundary for every number in this guide, and the change that matters most is the rewrite of the attack model itself. Before v0.34, terrain was closer to the whole answer to “how much do I lose attacking this tile”; in v0.34 the terrain base became one input, and the ratio, the defender density, the large-territory bonuses, the traitor debuff, and the terra-nullius path all became first-class terms in the same calculation. The four land classes and their magnitude thresholds did not change: below ten is Plains, ten to just under twenty is Highland, twenty to thirty is Mountain, and thirty-one and above is Impassable, with the impassable magnitude fixed at thirty-one. The terrain bases did not change either: Plains is still eighty base loss and sixteen point five speed cost, Highland is still one hundred, Mountain is still one hundred twenty, and the defense post still multiplies loss by five and speed by three.

What is new is that those bases are now floored and scaled rather than final. The ratio clamp means an overwhelming push is strictly cheaper and faster, which changes the optimal stack size at every border. The density term means a concentrated defender costs more to take than a spread one at the same total army, which changes how you read a packed capital. The large-territory bonuses mean late-game pushes are cheaper and faster for everyone, which changes how much a defensive ridge is worth as the match ages. The practical consequence for a player is that the terrain numbers you already know from before v0.34 are still true as a baseline, but the optimal way to fight them — bigger pushes, density-aware sizing, ridge timing against large-territory advantage — is newer. If you are coming from the pre-v0.34 habits, the single adjustment that will change the most matches is to stop nibbling borders and start overwhelming them, because the v0.34 model rewards the big push more than any previous version did. The secondary adjustment is to stop treating a front as one number and start pricing it by class, by density, by posts, and by fallout, because those four inputs are now doing most of the work the flat terrain number used to do on its own. The third, quieter adjustment is to time the fight rather than just place it: because the ratio, the density, and the territory terms all move through a match, a border you can win at minute forty can be a losing one at minute ten, and the player who reads those shifts can hold a ridge they would lose if they tried to take it on the other side of the map at a different time.

Related content

Continue reading
Adaptive Build Order: Spend the Next Gold on the Constraint

Use OpenFront v34.3 costs, troop growth, route payback, and stop signals to choose City, Port, Factory, defense, or a liquid reserve without copying a fixed script.