Commit Graph
6 Commits
Author SHA1 Message Date
jcoffey-dev 16d047ea81 The bots
A position is worth its centres, and almost nothing else: units are how you
get them and are worth nothing in themselves. Every other term is a small
correction on that one fact.

Orders are a greedy plan taken in order of what is worth most, with a second
unit put behind the first when the prize is worth two units -- a bot that
never doubles up is not playing this game. Agreements are applied after the
plan rather than as a constraint on it, on purpose: the plan has to know what
it is giving up before it can decide whether the promise is worth keeping.

Three things the tests taught it. It garrisons a threatened centre it is
already standing on, because scoring only moves had it defending Berlin by
marching the Munich garrison there. It never shoves at its own countryman,
which has no strength and wastes two units. And the price of breaking a
promise is how far it trusts the partner, not how far the partner trusts it
-- the other way round gives a power that has been lied to four times a high
cost of retaliating, because it has been scrupulous and is still well thought
of, which is exactly backwards.

Every decision comes back as a sentence. When a power turns on you it says
what the province was worth and what it thought you were worth, because being
betrayed should be infuriating rather than mysterious.
2026-09-09 07:09:38 -07:00
jcoffey-dev 38f69e9aa6 Harnesses for retreating and the winter
All 176 published cases now parse and run. Retreating passes 18 of 18,
building 7 of 7, civil disorder 13 of 13; movement is unchanged at 133 of
139.

The retreat and winter engine code was written before these cases and mostly
held up, but civil disorder was wrong in a way playing would never have shown.

It measured distance to a power's *home* centres. The rule is distance to the
centres it owns -- a Russia driven out of Moscow and holding Sweden measures
from Sweden -- so every power that had lost a home centre was disbanding the
wrong unit.

And it measured over the graph each unit moves on, which is wrong in both
directions. An army counts sea provinces it would have to be convoyed across,
so Albania is two steps from Naples rather than unreachable. A fleet counts
inland provinces it could never enter, so the Baltic is two from Warsaw. That
reads as nonsense until you notice what is being measured: not how the unit
would get home, but how far out of the way it is. A fleet in the Baltic is
still in the middle of Russia's business; one in the North Atlantic is not.

Civil disorder also only applies to the shortfall. A power that disbanded one
of the two it owed has half answered, and the automatic rule picks from what
is left rather than from what it started with.
2026-09-09 06:41:28 -07:00
jcoffey-dev 9a12b46bd1 Write down the six that do not pass
A known deviation nobody has written down is a bug waiting to be
rediscovered, and a red mark nobody can explain is worse than a red mark with
a reason next to it.
2026-09-09 06:24:14 -07:00
jcoffey-dev f4d60235ea Four endings, not two
A game of this ends in a solo, an elimination, a draw, or somebody else's
solo, and none of those is a win or a loss in the shape the other games on
this site use. The draw is the one that matters: it is the usual outcome and
it is neither, so it cannot borrow either tune.
2026-09-09 00:20:54 -07:00
jcoffey-dev f92330b552 Units, orders, and finding the water under an army
Convoy routing is breadth-first over the fleets actually ordered to convoy
this army, so it returns the shortest chain and answers null rather than
guessing. It takes a set of fleets to treat as already gone, which is what
the adjudicator will need to ask whether a convoy survives being attacked.

The tests found a wrong assumption of mine rather than a wrong line of code:
taking the Channel out of a London to Brest convoy leaves no route at all.
The North Sea does not touch the Mid-Atlantic on this board -- the long way
round is over the top through the Norwegian Sea -- so the Channel is the
whole western sea route.
2026-09-09 00:20:18 -07:00
jcoffey-dev c5cd0a6351 The board, and what this game is going to be
Seventy-five provinces as two graphs, because an army and a fleet do not move
on the same one, and three provinces whose two coasts do not connect.

The topology is a fact about a published game and free to use; the artwork is
not, and there is none here -- the map will be generated from this data the
way the cave game's dodecahedron is. The name is a working one for the same
reason the starship game is not called what you expect.

The tests check the board against itself, and symmetry is the one that pays:
it found the Skagerrak wired to the Baltic, which would have opened a back
door into the Baltic and made Denmark worth nothing.
2026-09-09 00:13:30 -07:00