Lane Wars devlog

Rival Realms: Waking Up the Campaign Map

Our campaign map used to hold its breath until the player arrived. Now every pair of realms has a relationship that can sour, rivals fight small wars of their own, and the player can choose to calm a quarrel or feed it.

Blue and gold crowned faction crest Red crossed swords marking a war front Lane Wars army marker Parchment scroll of peace terms
Crossed swords now mark the fronts of wars between rival realms, and every one of those wars ends in a peace.

For a long time the Lane Wars campaign had a quiet problem. Rival realms near the player made decisions; realms further away mostly slept. AI realms never fought one another, so outside the player's own borders the map looked frozen. This entry explains how we changed that, and what a first round of testing taught us.

Tension: a slow fuse between every pair of realms

Every pair of realms, the player included, now carries a hidden tension score from 0 to 100. Each week it moves. Sharing a border, disliking one another, one side growing much stronger than the other and the occasional border incident all push it up. Trading together or facing a common enemy pull it down, and a truce stops it from rising.

The player never sees the number. The Chancellor shows a single word instead: Calm, Strained, Hostile or War looming. We wanted the build-up to be readable without turning diplomacy into a spreadsheet. When tension reaches 100, that realm goes to war.

Eras: a calm start and a fighting middle

A typical campaign runs to about a hundred turns, and it is split into three eras so the map changes character as the player learns the game:

  • Peace, Turns 1 to 25. AI realms cannot fight each other, and tension between them cannot climb past Hostile. A new player should not watch borders shuffle before they understand them.
  • Border Wars, Turns 26 to 55. Up to two wars between AI realms can run at the same time.
  • Open Conflict, Turn 56 onward. Up to four at a time.

War on the player, with a warning

The old rule for an AI declaring war on the player was a weekly chance roll. It worked, but it could feel arbitrary. The same tension system now drives it: a realm declares when its tension with the player reaches 100, and it prepares the declaration a turn ahead so the warning comes before the war.

Some things hold a realm back even at 100: the opening grace period, a truce, no shared border, no army in the field, or an army too wounded to fight. The Chancellor names whatever is holding a realm back, so a war should never arrive without a reason the player could have seen.

Small wars, not conquest

Wars between AI realms are deliberately limited. Each one has a modest goal of one to three provinces, and it ends in peace when that goal is met, when the defender takes back as many, when time runs out or when the attacker has no army left.

There are also lines AI realms never cross. They cannot take one another's capitals or castles, they cannot reduce a realm below three provinces, and each war allows only one attack per turn. Distant realms also stop sleeping when it matters: a realm at war, or about to be, recruits and moves wherever it is on the map. Marches and battles the player cannot see play six times faster, so enemy turns stay short.

Design rule: a war between rival realms should change a border, never erase a realm.

The stalemate we did not expect

To check the pacing, we let a fresh campaign play itself from the first turn, ending turns automatically and keeping the player at peace so only the rival realms fought. Wars started on schedule. Thirteen were declared. But in 77 turns, exactly one province changed hands, and it was retaken the next week.

The cause was simple once we looked. Both sides piled their armies onto the front, the defender also had its garrison and its walls, and an AI only attacks when it likes its odds. Neither side ever did. The wars were real on paper and invisible on the map.

Sieges and joint attacks

We fixed the stalemate by giving wars between rival realms a way to grind forward:

  • Sieges. An army standing next to an enemy province wears down its garrison a little every week, and the garrison cannot heal until the army leaves. After a few weeks the besieger likes its odds and attacks.
  • Joint attacks. When a realm attacks, its other armies next to the target join the battle from where they stand.
  • Better staging. Armies now gather next to provinces they are allowed to take, rather than staring at a castle they never could.

None of this changes wars against the player. On the player's border, an army in hiding still never attacks; there it remains an ambush.

Where the player fits in

Rival wars are not just background. The Chancellor gives the player four ways to take part:

  • Call to Arms. Ask a friendly realm to join a war against a common enemy. The alliance lasts as long as that war and ends with it.
  • Answering a call. An AI realm at war may send an envoy asking the player to join its side. Accepting earns its favour; refusing costs a little goodwill.
  • Mediate. Pay gold to calm a quarrel between two realms, and earn a little goodwill from both.
  • Sow Discord. Pay spies to stir two realms against each other. If the agents are caught, the realm thinks less of the player.

The player can play peacemaker, opportunist or troublemaker, and the map responds to each.

Making distant wars readable

A war the player cannot follow is just noise, so each one is surfaced in three places. Red crossed swords sit on the border of every active front on the map. The weekly report notes declarations, captured provinces and peace. The Chancellor's Wars tab lists the wars between realms and the tensions that are rising toward the next one.

What the numbers say, and what comes next

With sieges and joint attacks in place, a second automated run told a different story. The first war between rival realms again began on Turn 35. By Turn 71, nine provinces had changed hands instead of one, and four wars ended with the attacker reaching its goal. Fronts swung both ways: some realms that lost a province won it back a few weeks later. No realm lost more than two provinces, and enemy turns took around three to six seconds.

These are results from automated runs in the current development build, not a finished balance. The next step is playtesting: whether wars feel too frequent or too rare, whether the build-up is visible enough, and whether mediation and discord are worth their price. The goal stays the same as when we started: a calm opening, a lively middle game where rival realms really fight and borders move, nobody wiped out, and a player who can choose to be the diplomat or the troublemaker.