Formations, and the tactic each one opens on #
A force does not choose its opening tactic. It is handed one by what it was built as, and what it was built as is a Formation - MegaMek's own composition requirements over weight class, movement, armour, damage at a range and the roles present. Nothing on this page is invented here: the requirements are read out of megamek.client.ratgenerator.FormationType by bridge/sds/SdsFormations.java, committed as crates/sds-core/tests/corpus/formations.txt, and checked against the catalogue on every commit.
What is not MegaMek's is the last column. Which tactic a composition asks for is a reading of it, and it is the one thing here worth arguing with. The cohesion rule is the tabletop rules': a formation holds while 3 or more of its units are neither destroyed nor routed, and below that it is disabled and the force falls back to engage. FormationType is a generation filter that never touches a running game, so nothing in MegaMek applies that rule for us and the bot keeps it itself - what MegaMek settles is the predicate under it, which is a unit the game has removed from play.
The order #
A lance of four heavies is a Battle Lance and a Heavy Battle Lance and a Support Lance all at once, so which one it is comes down to which is asked first. The order is a constant, and scarce means fewest lances left to take: each position goes to the formation with the fewest lances no formation above it has already claimed, measured over twenty thousand lances drawn from MegaMek's own force generator. crates/sds-core/tests/corpus/lances.txt is that derivation, with the corpus it came from, and formation::ORDER is pinned to it. Nothing recomputes the order at build time.
The satisfies column is how much of that corpus a formation's criteria admit and the claims column is how much of it the formation is left once everything above has been asked. The gap between them is what the order costs a formation, and the units column - how much of a lance a definition pins down - is what the order used to be sorted by.
A force that qualifies as nothing at all opens on engage, and so does a force this bot cannot read - anything that is not four ground Meks.
| # | formation | family | units | satisfies | claims | asks for | opens on |
|---|---|---|---|---|---|---|---|
| 1 | Order * | Command | 0 | 0 | 0 | Same model | never - faction not modelled |
| 2 | Artillery Fire | Fire | 2 | 4 | 4 | 2 of Artillery | bombard |
| 3 | Light Recon | Recon | 4 | 23 | 23 | UltraLight to Light; every unit: Walk/Cruise 6+, Scout | harass |
| 4 | Horde | Striker/Cavalry | 4 | 48 | 28 | UltraLight to Light; every unit: Damage <= 10 at range 9 | harass |
| 5 | Fast Assault | Assault | 11 | 58 | 58 | Medium to Colossal; every unit: Walk 5+ or Jump 1+; 3 of Damage 25+ at range 7; 3 of Heavy+; 1 of Juggernaut or 2 of Sniper | engage |
| 6 | Sweep | Pursuit | 4 | 177 | 177 | UltraLight to Medium; every unit: Walk/Cruise 5+, Damage 10+ at range 6 | flank |
| 7 | Light Striker/Cavalry | Striker/Cavalry | 8 | 186 | 80 | UltraLight to Medium; every unit: Walk/Cruise 5+; 2 of Weapon with damage 5+ at range 18; 2 of Striker, Skirmisher | flank |
| 8 | Light Fire | Fire | 2 | 225 | 198 | UltraLight to Medium; 2 of Sniper, Missile Boat | engage |
| 9 | Probe | Pursuit | 7 | 275 | 201 | UltraLight to Heavy; every unit: Damage 10+ at range 9; 3 of Walk/Cruise 6+ | flank |
| 10 | Pursuit | Pursuit | 4 | 492 | 286 | UltraLight to Medium; 3 of Walk/Cruise 6+; 1 of Weapon with damage 5+ at range 15 - or every unit Striker | flank |
| 11 | Recon | Recon | 6 | 912 | 427 | every unit: Walk/Cruise 5+; 2 of Scout, Striker - or every unit Scout | flank |
| 12 | Hammer | Striker/Cavalry | 4 | 1243 | 242 | every unit: Walk/Cruise 5+ - or every unit Striker | never - faction not modelled |
| 13 | Light Battle | Battle | 4 | 726 | 362 | UltraLight to Heavy; 3 of Light; 1 of Scout | harass |
| 14 | Heavy Striker/Cavalry | Striker/Cavalry | 10 | 449 | 446 | Medium to Colossal; every unit: Walk/Cruise 4+; 3 of Heavy+; 2 of Striker, Skirmisher; 1 of Weapon with damage 5+ at range 18 | flank |
| 15 | Rifle | Battle | 9 | 782 | 626 | Medium to Colossal; every unit: Walk/Cruise 4+; 3 of Medium, Heavy; 2 of AC weapon | never - faction not modelled |
| 16 | Striker/Cavalry | Striker/Cavalry | 6 | 1381 | 653 | UltraLight to Heavy; every unit: Walk/Cruise 5+ or Jump 4+; 2 of Striker, Skirmisher - or every unit Striker | flank |
| 17 | Anti-Air | Fire | 5 | 755 | 736 | 3 of Sniper, Missile Boat; 2 of Standard AC, LBX, Artillery weapon, Anti-Air targeting quirk | never - no behaviour prices it |
| 18 | Heavy Recon | Recon | 9 | 1368 | 1082 | every unit: Walk/Cruise 4+; 2 of Walk/Cruise 5+; 2 of Scout; 1 of Heavy+ | flank |
| 19 | Assault | Assault | 11 | 1194 | 1137 | Medium to Colossal; every unit: Armor 135+; 3 of 25 damage at range 7; 3 of Heavy+; 1 of Juggernaut or 2 of Sniper - or every unit Juggernaut | engage |
| 20 | Hunter | Assault | 2 | 1432 | 1079 | 2 of Juggernaut or Ambusher - or every unit Ambusher | entrench |
| 21 | Direct Fire | Fire | 6 | 1668 | 1159 | every unit: Damage 10 at range 18; 2 of Heavy+ | engage |
| 22 | Fire | Fire | 3 | 1698 | 942 | 3 of Sniper, Missile Boat - or every unit MissileBoat | engage |
| 23 | Fire Support | Fire | 3 | 2418 | 1231 | 3 of Indirect fire weapon | bombard |
| 24 | Medium Battle | Battle | 2 | 2927 | 1391 | UltraLight to Heavy; 2 of Medium | engage |
| 25 | Anvil | Assault | 6 | 5285 | 1373 | Medium to Colossal; every unit: Armor 105+; 2 of AC, SRM, or LRM | never - faction not modelled |
| 26 | Ranger | Striker/Cavalry | 0 | 6967 | 1624 | UltraLight to Heavy - or every unit Skirmisher | flank |
| 27 | Heavy Battle | Battle | 2 | 5737 | 1587 | Medium to Colossal; 2 of Heavy+ | engage |
| 28 | Battle | Battle | 5 | 5149 | 1176 | 2 of Heavy+; 3 of Brawler, Sniper, Skirmisher - or every unit Brawler | never - another formation is this predicate |
| 29 | Berserker/Close | Battle | 5 | 5149 | 1176 | 2 of Heavy+; 3 of Brawler, Sniper, Skirmisher - or every unit Brawler | advance |
| 30 | Urban | Urban | 4 | 6426 | 1703 | 2 of Jump 1+ or Infantry/BA; 2 of Walk/Cruise <= 4 - or every unit Ambusher | entrench |
| 31 | Security | Security | 5 | 7124 | 1407 | 1 of Scout, Striker; 1 of Sniper, Missile Boat; 3 of Not assault | entrench |
| 32 | Command | Command | 3 | 12504 | 973 | 2 of Sniper, Missile Boat, Skirmisher, Juggernaught; 1 of Brawler, Striker, Scout | engage |
| 33 | Support | Support | 0 | 20000 | 566 | nothing at all | engage |
What is never offered #
These stay in the catalogue with their criteria intact and are never handed to a force. They carry no opening at all, so nothing can turn one into a tactic or fit a weight to it.
Faction not modelled. MegaMek declares these as one house's. Nothing here knows which house a force belongs to - classification takes designs, and no field on the wire carries a faction - so a gated formation that was offered would match every house's force, which is not a narrower description but a wrong one. These come back by evaluating the gate once a force arrives with a faction.
No behaviour prices it. Naming a force by a specialism the scorer cannot play describes it by something it will not then do.
Another formation is this predicate. MegaMek separates the pair by a unit type and the unit types it separates them by are vehicles, so on a force of four Meks the two are one criterion and only the order chooses between them. The one withheld is the one whose distinction is the vehicles.
| formation | why |
|---|---|
| Order | faction not modelled (DC) |
| Hammer | faction not modelled (FWL) |
| Rifle | faction not modelled (FS) |
| Anti-Air | no behaviour prices it |
| Anvil | faction not modelled (FWL) |
| Battle | another formation is this predicate |
What this bot declines to decide #
Marked * above. Where the wire cannot answer a requirement the formation is refused rather than guessed at, and a force that would have been one of these is classified as whatever comes next in the order, for a reason that is MegaMek's rather than ours.
One narrowing is not a decline and is worth knowing about. The Anti-Air Lance takes a unit either for its guns or for the force generator's ANTI_AIRCRAFT mission role, which lives in data/forcegenerator and is not a fact about a machine on the board. The gun half is read and the role half is not; because the two are an or, that can only refuse a force MegaMek would have accepted, never accept one it would have refused.
| formation | what is missing |
|---|---|
| Order | MegaMek's own qualifies() divides by zero here - UPSTREAM.md note 11 |
What nobody opens on #
7 of the 13 tactics are nobody's opening: break, control, regroup, reposition, screen, spot, withdraw. That reads as right rather than as a gap. A formation says what a force was built for, and none of those is something a force is built for - they are things a force becomes.