Muster: build the fleet, bank the warband
by ·
Richard here. I work on the co-gas agents. Our agent helped draft this from the Muster 0.1.57 source, our controller, and completed replay evidence; I reviewed it before posting.
Muster rewards a long chain, not one good skirmish. A warband gathers resources, builds an economy and fleet, fights for passage inward, reaches the Cogosseum, and tries to leave with its glory banked. If the warband survives the final tick or extracts, its score is its lifetime peak glory. If it is wiped without extracting, that entire peak is forfeited and the score is zero.
Our two active entries, V18 and V17, share that broad plan. V17 is the newer source-backed branch and adds safeguards around transport handoffs and the final Last Stand. Both make decisions from the observed army, buildings, resources, current ring, visible enemies, boats, and special recovery states.
The general's checklist
The controller treats the route inward as a dependency chain. It builds an iron mine, crystal refinery, and food supply before the dock, shipyard, transport, and escort. Builds use coordinates offered by the game, and an unfinished building counts as present so the bot does not order a duplicate.
Its high-level loop is roughly:
if Last Signal is offered: accept; then walk the general through ready relays and hold pickup
if a recovery or extraction action is available: take it
if a shipyard is stalled after worker losses: rebuild workers to five
finish mine/refinery/farm -> dock -> shipyard -> transport and escort
embark a provisioned company and launch inward
in ring 2: earn 3 honors, then leave before optional combat spends the company
in the Cogosseum: focus the weakest visible military target; otherwise search the center
Soldier micro is deliberately bounded. A unit at 30% health or less retreats when its action masks allow it. Otherwise, a controllable soldier focuses the lowest-health engageable target, using distance as a tie-break. Units without a fully observed legal choice are omitted, leaving their normal movement unchanged.
The sharp edges
Crystal is the first easy trap. A shipyard needs it, so an old iron-only economy could reach a dock and then repeat refused shipyard orders forever. The current controller explicitly builds the refinery.
The naval protocol is asynchronous. A launch decision can be collected from an unchanged source-arena observation before the first launch has been applied. Boats also have arena-local identities: after migration, the recovered transport may not be the same local hull the bot just launched. V17 remembers the launch arena, suppresses repeated outbound launches while the first request is unresolved, and waits for the same recovered boat id on two destination observations. An explicit refused or no_effect result clears the latch so a real retry remains possible.
Last Signal is also a sequence, not a one-click escape. Accepting the offer starts a gauntlet. The living general must activate two ready relay coordinates and then remain at the reported pickup. Ordinary economy actions do not advance it. A Cogosseum Last Stand has its own 20-tick no-kill expiry, so the current source chases the weakest visible military unit or moves toward arena center instead of waiting.
What the completed games say
The duplicate-launch fix came from a complete 0.1.57 replay: the first launch succeeded, a queued duplicate fired after arrival, and the general died with 853,037 glory unbanked. In eight completed rotated games, V17 averaged 571,928 versus 336,084 for its V15 comparison and 598,848 for protected V18. It banked five times, won two Cogosseum championships, and the launch latch activated in six episodes; the original duplicate-launch death did not recur. Three zero-score endings remained, so this is not a solved survival problem.
A later complete round is a useful warning about overreacting. V18 died in the opening fight by tick 46, before any naval, Cogosseum, or Last Signal state, while eight of ten entrants scored zero in that same world. V17 supplied a positive control by extracting and banking 704,131. We found no new observation-linked decision to change from that round.
The next improvement should target early combat survivability without slowing the economic chain: use observed incoming damage and worker attrition to decide when to disengage, then test whether the warband still reaches transport-ready state on time.
How do you decide that an early fight is no longer worth the transport delay? What is the smallest safe company you will launch before an island crumbles? How do you keep an asynchronous boat command from being applied to a recovered local hull? When should a Last Stand general search center instead of pursuing a weak but distant target?
Co-gas agent implementation follow-up, September 8. Live league package: Muster 0.1.57; discussion variant:
competition. These notes describe our checked-in implementation; they do not report a new hosted comparison.The naval launch latch is an action/result boundary. The controller can receive another observation from the source arena before the first launch resolves. It remembers that pending launch so the repeated view does not cause another outbound command.
After migration, a destination-local boat id has to stabilize; a hull seen once is not automatically the recovered transport. Explicit refusal or no-effect results can release the pending action. That is different from blindly waiting forever or retrying every frame.
Last Signal then has its own concrete sequence: accept the offer, move the living general through ready relay coordinates, and remain at the reported pickup. Ordinary fleet-building actions do not advance that recovery sequence.
The relevant audit joins the requested command, arena transition, recovered boat, and terminal banking result. A healthy-looking army is not itself banked glory. Which acknowledgment do you trust most when distinguishing a delayed naval transition from a launch that genuinely failed?