Wargame Mechanics Index

How the index was built

The index takes every free ruleset hosted on the Wargame Library, reads it, and records each rules mechanic against a shared vocabulary. That makes it possible to see which ideas are common across the hobby and which belong to one game alone. This page describes each step and how mechanics are scored.

122documents
2,253pages read
66rulesets
1,359mechanics
185concepts in use
138flagged unique
crawl site→download PDFs→text + OCR→agent extraction→validate→merge concepts→DuckDB + scores→this site

01Source corpus

The source is the Wargame Library catalog, run by Little Wars TV. The site is built on Wix, so its page list was read from the site's own routing table: 73 pages, including navigation and category pages.

Every hosted file (under /_files/ugd/) was downloaded, 122 documents totalling 962 MB. When a file was linked from several pages it was assigned to one page, preferring a game page over a navigation page and a canonical page over a copy-of-* draft. After that de-duplication the documents sit on 49 pages. Each document was then given a role during extraction:

RoleDocuments
core rules40
quick reference10
scenario28
army list4
cards counters13
play aid8
supplement5
magazine9
article4
other1

02Text extraction

Text was read page by page from each PDF's embedded text layer. Many older rulebooks and magazines are image-only scans, so any page with fewer than 80 characters of embedded text was rendered at 200 dpi and read with Apple's Vision OCR instead.

In total 2,253 pages were read, 353 of them by OCR, producing 5.8 million characters of rules text. Every page keeps its page number, which is how each mechanic cites where it appears.

OCR quality varies. Typescript from the 1970s, two-column layouts and dense tables come out noisy, and some table values could not be recovered. Those cases are described under Limitations.

03What counts as a ruleset

A ruleset is the unit everything else hangs from. There are 66 of them:

  • Game pages. A page for one game is one ruleset, together with its rules, quick reference sheets, cards, scenarios and army lists.
  • Magazines and collections. Issues of MWAN, The Courier, Historical Miniature Gamer, Wargames Soldiers & Strategy and Wargames Illustrated contain many articles. Only articles with complete, playable rules or a substantial rules variant became rulesets (27 in all). Battle reports, reviews, painting guides and plain scenarios were left out.
  • Variants. A ruleset that modifies another system records it as its parent system, for example a Fire & Fury variant or a Lion Rampant add-on.

Each ruleset also records its era, domain, scale, what a playing piece represents, grid type, dice, complexity and whether it supports solo play, so the index can be filtered by them.

04The ontology

Comparing mechanics across games needs a shared vocabulary. The ontology has three layers:

  1. Family: a rules subsystem such as turn structure, command, or morale. There are 15.
  2. Concept: a recognisable pattern that many games could use, defined without reference to any one game. Examples are card-driven activation, command points and army breakpoint.
  3. Mechanic: one ruleset's version of a concept, with the name the game itself uses, a summary, how it works, a verbatim quote and page references.

Canonical and coined concepts

The ontology started with 98 canonical concepts written before extraction. When a game had a mechanic none of them fitted, the extractor coined a new concept named family.x_name and wrote a game-neutral definition for it. Coined concepts are where most of the genuinely unusual mechanics live.

After extraction, the coined concepts were reviewed together. Synonyms coined separately for different games were merged; for example, three separate kinds of suppression became one Suppression & pinning concept. Ideas that turned up in more than one game were promoted to canonical. In all 47 coined ids were mapped onto 31 promoted concepts, leaving 57 coined concepts and 128 canonical ones in use.

FamilyScopeConceptsMechanicsRated 3
Movement & ManoeuvreHow units relocate, change formation and facing.172027
Ranged CombatShooting, artillery, gunnery at a distance.1815312
Command & ControlLeadership, orders, activation limits, friction, information.2314424
Forces & Unit DefinitionTroop types, grades, points, lists, representation.121272
Scenario, Campaign & VictorySet-up, pre-game, objectives, campaigns, events.121266
Turn Structure & SequenceHow play time is divided and who acts when.1712413
Morale & CohesionWill to fight, disorder, rout, army breakpoints.1311918
Close CombatHand-to-hand, shock, charges, boarding resolution.149911
Resolution EngineRandomisers and core resolution maths used throughout.158011
Damage & AttritionHow losses are recorded and applied.14688
Battlefield & EnvironmentTerrain, weather, visibility, fortifications.7452
Special SystemsMagic, myth, logistics, engineering, other domain add-ons.9375
Naval SystemsShip-specific mechanics: wind, gunnery, ramming, submarines.7222
Air SystemsAircraft-specific mechanics: altitude, energy, tailing, damage.480
Solo & Non-Player ForcesRules that drive one side without a human player.351

05Mechanic extraction

The rules were read by Claude agents working in parallel. The corpus was split into 12 batches of similar size, with magazines grouped separately. Each agent worked from the same written specification and the ontology, and produced one structured file per site page.

The specification asked agents to:

  • read the core rules in full and skim supporting material such as cards, quick reference sheets and scenarios;
  • cover the core loop of every game (turn structure, activation, movement, combat, damage, morale and the dice engine), then anything distinctive;
  • record one mechanic per concept per ruleset, merging two features of a game that map to the same concept;
  • quote the source verbatim, 40 words at most, light OCR fixes allowed, and cite page numbers;
  • stay factual and never add rules that are not in the text.

Every file was then checked by a validator. It confirms each value comes from the allowed lists, each concept is either canonical or defined as coined, each cited document belongs to the ruleset, and no ruleset uses a concept twice. Files had to pass before they were loaded. Rulesets ended up with between 2 and 49 mechanics, a median of 22.

06Quote verification

Every quote is checked against the extracted rules text automatically, each time the index is built. The check finds where the quote actually is, which catches transcription slips, quotes the agents tidied too far, and wrong page numbers.

  1. Normalise. Quote and page text are lower-cased, accents and punctuation removed, words split across a line break rejoined, and runs of whitespace collapsed. Typographic differences then can't cause a mismatch.
  2. Split. A quote with "…" is split into its pieces, and every piece must be found.
  3. Search in widening rings. First the cited pages and their neighbours, then the whole cited document, then every document belonging to the ruleset.
  4. Score. Each piece is aligned against the text with a fuzzy partial match from 0 to 100, which tolerates OCR errors such as rn read as m. The quote's score is that of its weakest piece.
StatusRuleQuotes
Verified, exactfound word for word after normalisation1,187
Verified, closescore ≥ 90: the same passage, with OCR-level differences136
Words verifiedbelow 90, but at least 90% of the quote's words are on the cited pages: the scan's columns or table cells are out of order36
Partial matchscore 75–900
Not foundscore below 750

In all, 97.4% of quotes are verified. Where a verified quote turned up on a different page from the one cited, the index shows found on p. N beside the citation (5 quotes). Each mechanic carries its status as a badge, and the Quote check filter shows or hides each group.

The first run of the check also exposed a text problem. Several scanned PDFs ship with a poor text layer from an earlier OCR pass. Text extraction now scores every page by the share of tokens that look like real words. A page scoring below 0.6 is re-read with OCR, and the new text replaces the old only when it scores at least 0.1 higher. Quotes that still failed were then re-taken word for word from the corrected text.

07Scoring

Each mechanic gets two numbers. Distinctiveness is a judgement about how a game implements an idea. Rarity is measured from the corpus: how many rulesets use the concept at all. Uniqueness combines the two.

Distinctiveness (1–3)

The extractor rated each mechanic against this rubric, and was told most mechanics should be 1:

1

Standard. Widely used and implemented in the usual way: a fixed move in inches, a d6 to hit. 785 mechanics.

2

Notable variant. A familiar idea with a real twist, such as card-driven activation where cards also carry morale values. 452 mechanics.

3

Distinctive. Unusual or innovative, and part of why the game plays differently from its peers. 122 mechanics.

Rarity

Rarity uses the same idea as inverse document frequency in search engines. A concept used by every ruleset tells you nothing about any one of them; a concept used by just one is a signature of that game. With N = 66 rulesets and n the number of rulesets using the concept:

rarity = ln(1 + N / n)

A concept used once scores ln(1 + 66) = 4.20. The most widespread concept, six-sided dice core, is used by 35 rulesets and scores 1.06. The 1 inside the log keeps a concept used by every ruleset above zero (ln 2 ≈ 0.69), so even the most standard mechanic keeps some weight.

Uniqueness

uniqueness = distinctiveness × rarity

Multiplying means a mechanic has to be both well executed and rare to rank at the top. A routine version of a rare idea and a clever twist on a universal idea both land in the middle. Worked values:

Rulesets using concept (n)Rarityd = 1d = 2d = 3
14.204.208.4112.61
23.533.537.0510.58
52.652.655.317.96
102.032.034.066.08
201.461.462.924.38
351.061.062.123.18

The Most unique tab shows every mechanic rated 3 or whose concept appears in only one ruleset, 138 in all. It is sorted by distinctiveness first, then by how few rulesets use the concept, rather than by the uniqueness product: the product ties every distinctive mechanic of a one-off concept at 12.61, and lets a coined one-off outrank a more distinctive mechanic that a few games share. Each mechanic shows the two facts separately.

Rarity is relative to this corpus. If a game appears twice (Loose Files is both a standalone page and an article in Wargames Illustrated 428), its concepts count as slightly more common than they are.

08Games like this

Each ruleset's profile lists the games whose mechanics are closest to its own. Similarity looks only at mechanics; era, scale and domain are ignored, so a naval game can match a land game that resolves damage the same way.

Ruleset vectors

Each ruleset is a vector with one entry per concept it uses. The entry's weight is that mechanic's uniqueness score from Scoring. Sharing a rare, distinctive mechanic therefore counts heavily, and sharing a commonplace such as d6 dice or terrain movement penalties counts for little. Concepts used by only one ruleset get weight 0: no other game can share them, so they would only lengthen that game's vector and make it look less like everything else.

similarity(A, B) = Σc wA,c · wB,c / (‖wA‖ · ‖wB‖)

That is the cosine of the two vectors. It runs from 0 (nothing in common) to 1 (identical profiles) and doesn't depend on how many mechanics each game has. The terms of the sum show which shared concepts produce the match, and the five largest are listed on each card as the strongest overlap.

Rules for listing a match

  • The two rulesets must share at least 2 concepts, so a single coincidence can't make a match.
  • Up to 6 matches are shown, highest first.
  • A game indexed twice under the same title (such as Loose Files) is never matched with itself and appears only once among another game's matches.
  • Bands: strong ≥ 0.35, moderate ≥ 0.25, otherwise loose. 55 of 66 rulesets have at least one strong match. The median best match scores 0.44.

Short rulesets, such as a magazine variant with a handful of mechanics, share little with anything and get only loose matches. Matches are a starting point for exploring, not a classification.

09Dating & the timeline

The Timeline tab places each ruleset at its original publication year: the first time that game's design appeared in print or online. That is often not the year of the copy the Library hosts. A fourth edition from 2024 of a game first released in 2010 is dated 2010, because its mechanics date from then.

How dates were set

  • Sources, in order: the hosted text itself (copyright lines, edition statements, "first published"), the Library's own page ("Publisher: X, 1990", issue dates), then published references such as publisher pages, magazine archives and BoardGameGeek.
  • Magazine articles take their issue's date, unless the article says the rules appeared earlier.
  • Variants and add-ons are dated by their own first publication, not their parent system's.
  • New editions of the same game take the first edition's year. Fistful of T-34s, for example, is dated as an edition of Fistful of TOWs (1998).
  • Each ruleset records its original year, the hosted edition's year, a source, the supporting evidence and a confidence: 40 high, 20 medium and 6 low. For 16 rulesets the original year differs from the edition the Library hosts.

Reading the chart

Each row is a concept and each dot a ruleset using it. The earliest dot is highlighted as the concept's first appearance in the library. That is a statement about this collection only: the Library holds 4 rulesets from before 1914, none from 1914–1969, and 62 from 1970 on, so a "first appearance" in 1987 may well have earlier ancestors outside it. The axis compresses 1820–1920 so the modern hobby gets the width, and the empty gap is marked. A bar strip above counts rulesets per decade, and the same data is available as a table.

10Find a game

The Find a game tab recommends rulesets from the Library based on a short questionnaire. It runs entirely in your browser. Answers are saved only on your device, and a link can carry them to someone else.

What the questions feed

QuestionMatched against
Periods, land/sea/air, size of battleeach ruleset's eras, domain and scale (one step away on scale counts half)
How much rulescomplexity (light / medium / heavy)
How long should a game lastthe typical game length; a game far outside your range scores low, and a game with no known length is neither rewarded nor ruled out
Who's playingresearched player counts and solo play (designed solo rules score higher than "solo-friendly"), the Library's Solo shelf, and solo or multiplayer mechanics
What's on your tablehex, square or area grids versus open tables
This or that (7 pairs)groups of ontology concepts, e.g. cards decide = card-driven activation, cards as randomiser, multi-use card hand
Games you already enjoy"Games like this" similarity to each one
Experiencehow distinctiveness and complexity are weighted (below)

Scoring

score = 0.45·F + 0.25·P + 0.20·S + 0.10·N (over the parts you answered)
  • F, facet match: a weighted share of your answered facet questions that the game satisfies.
  • P, mechanic preferences: each this-or-that choice adds weight to its side's concepts and takes half as much from the other side's. A game scores by which of those concepts it has, with more distinctive implementations counting a little more.
  • S, games you enjoy: the highest "Games like this" similarity between the game and any game you named.
  • N, experience: veterans get a boost for games whose mechanics are distinctive and often coined. Newcomers get a boost for standard mechanics and light rules, plus a bonus for the Library's Beginners shelf.

Missing parts are left out rather than counted as zero, so answering one question never penalises games for the questions you skipped. A small tie-breaker favours fuller rulesets and standalone games over magazine articles, and Library favourites get a slight lift. Add-ons with fewer than 8 mechanics (a points system, a page of house rules) are never recommended on their own. That leaves 56 games to choose from.

Variety, wildcard and explanations

The top results are re-ranked for variety, so you see different kinds of game rather than six near-copies. Each pick must earn its place by score and by how different it is from the picks already chosen; this is known as maximal marginal relevance. When you choose periods and also give mechanic preferences or favourite games, one wildcard is added: the best mechanics match from outside your periods.

Every reason on a card comes from the scoring itself: a period or scale you chose, a concept you asked for (with the game's own name for it), the mechanics it shares with a game you like, or a Library shelf. Cautions flag where a game departs from your answers, such as heavier rules than you asked for or a mechanic you said you'd rather avoid.

Play time, players and table

Each ruleset records a typical game length, minimum and maximum players, whether an umpire is needed, whether it has solo rules, forces per side and table size. These were read from the rules and the Library's pages, preferring the designer's own figures (15 game lengths stated, 6 estimated from descriptions such as "an evening", which is taken as 2–3 hours, and 45 unknown, because most rules never say how long a game takes). Estimates are shown with ≈. A game of unknown length is neither rewarded nor penalised by the play-time question. Game profiles and recommendation cards show these details, and a game needing an umpire is flagged unless you said you play in a group.

The Library's shelves

The Library sorts its games onto curated shelves: Beginners, Classics, Solo, Skirmish, Big Battle, Horse & Musket, Sword & Shield, World Wars and Favorites. These were read from the site (84 entries; 81 matched to games in the index) and are used for the Beginners and Solo signals and the favourites fallback. A test suite checks the recommender against personas: a newcomer's picks are mostly from the Beginners shelf, a veteran's are more distinctive, a naval player gets naval games, a DBA fan gets other ancients games, games you name are never recommended back, and so on.

11Design a game

The Design a game tab assembles a new ruleset from parts proven elsewhere. There is one slot for each core system (turn structure, command, movement, ranged combat, close combat, damage, morale, and dice and resolution), plus up to 6 extras from any family. Each slot takes a concept from the ontology and, optionally, a specific game's version of it. Versions from games matching the design's period and scale are listed first. Nothing is generated: the brief quotes how each borrowed mechanic works and links to its rules page.

What the brief checks

  • Gaps: an empty core slot is noted with how many of the 56 standalone games have that system. If 80% or more do, it is flagged because players will expect one.
  • Proven pairings: chosen concepts that appear together in at least 3 games and at least twice as often as chance, using the same lift measure as the mechanic network.
  • Untested combinations: chosen pairs that no game in the library combines, although chance alone predicts at least 1.5 such games. That is either fresh ground or a sign designers avoid the pairing.
  • Clashes: a few hand-written rules for combinations the data cannot judge, such as a diceless engine alongside dice-pool shooting, or simultaneous turns alongside one-at-a-time activation.
  • Reinvention: the design is compared with every game using the "Games like this" similarity, weighting each chosen concept by its rarity and by the borrowed version's distinctiveness. A match of 45% or more is flagged.
  • Novelty and weight: novelty is the average rarity of the chosen concepts, given as a percentile of real games' own averages. Weight is a rough estimate from the number of systems and how many are borrowed from heavy games.

A design is kept in your browser and can be shared as a link. Tests check that a copy of an existing game is recognised as that game, that clashes and gaps are reported, and that share links round-trip intact.

12Patterns

Coverage map

Rows are games and columns are the 15 rules families. Each cell is shaded by how many of the game's mechanics fall in that family, and a diamond marks at least one distinctive mechanic there. Choosing a family switches the columns to that family's concepts, shaded by how distinctive each game's version is. Universal ideas then show as full columns and one-off ideas as single cells.

By default, rows are ordered so similar games sit together. The order starts from the game with the most concepts and repeatedly adds the most similar remaining game, using the "Games like this" similarity, so related designs form visible blocks. Rows can also be ordered by year or title. The sidebar filters choose which games appear.

Mechanic network

Concepts used by at least 4 of the 56 standalone games are drawn as dots, sized by how many games use them. Two concepts are linked when they appear together in at least 3 games and their lift is at least 2:

lift(A, B) = (games with both) × N / ((games with A) × (games with B))

A lift of 1 means the pair occurs together exactly as often as chance would predict; a lift of 2 means twice as often. That gives 248 links. 6 very common concepts appear with nearly everything, so none of their pairings stands out, and they aren't drawn.

Clusters are found with weighted label propagation, where each concept repeatedly adopts the label most strongly held among its neighbours, and are named by hand. The layout is a deterministic force-directed simulation with a pull toward each cluster's centre and a pass that stops dots overlapping, so the picture is the same on every build.

With 56 games and as few as 3 shared games per link, individual links are suggestive rather than statistically firm. The clusters, which aggregate many links, are the more reliable reading.

14Limitations

  • Judgement calls. Distinctiveness, concept assignment and which magazine articles count as rules were decided by AI agents following a written spec. They are consistent but not infallible, and borderline cases are recorded as such in the extraction notes.
  • OCR. Parts of US Navy 1905, They Died for Glory, Dunn-Kempf, Fife & Drum and an MWAN 28 campaign article came out garbled. Some table values are summarised rather than quoted, and a few quotes were pieced back together from scrambled columns.
  • Quote matching is textual. The quote check confirms a quote is in the extracted text, not that it supports the mechanic as described; that still rests on the extraction. A quote can also only be as good as the OCR of its page.
  • Versions. Where a page hosts more than one edition (Hallowed Ground, FUBAR), both are folded into one ruleset and the differences noted in the mechanic details.
  • Partial rules. Some magazine variants depend on rules printed in other issues, so only the changes they make are recorded.
  • Language. The 1824 Kriegsspiel is indexed from the original German, and its quotes are in German.

15Reproducing it

The pipeline is a Python package run with uv. Crawling, text extraction, validation, loading and export are all scripted. Mechanic extraction is driven by the written specification and needs an LLM to run it.

uv run python -m wargame_index.scrape      # crawl + download
uv run python -m wargame_index.text        # text layer + OCR
uv run python -m wargame_index.validate data/extract/*.json
uv run wgi build                           # DuckDB, aliases, FTS, scores
uv run wgi export                          # this site, plus a page per game and concept
uv run wgi unique --family naval           # query from the terminal

Every game and every concept also has its own permanent page (Games, Mechanics). These are plain HTML, generated at export, listed in a sitemap for search engines, and suitable for linking from the Library's own game pages.

Index built 24 October 2026. Source documents © their authors and publishers; the index links back to each file on the Wargame Library.