Skip to content

Add a game simulator for generating synthetic games #2

Description

@jeremymanning

Deferred from the initial scoping of #1, which is analysis-only. Filing so we don't lose it.

Idea

Implement a D12-rules game engine that can play games start to finish with configurable agents,
producing logs in the same schema the scraper emits. Since the rules are the same whether a human
or a bot plays, board-dynamics findings from simulated games transfer to real ones.

Why it's worth doing

  • Null models. Most of the interesting claims in basic approach #1 are comparative: is this map unbalanced,
    is this position-strength trajectory unusual, do these games cluster more than chance? Each of
    those needs a generative null to compare against, and a simulator is the principled way to get
    one.
  • Counterfactuals. Replay a real game from turn k with a different move and measure the
    swing in position strength. Turns descriptive metrics into causal ones.
  • Metric validation. A position-strength metric should predict wins in simulation. If it
    doesn't, it's wrong, and we'd rather learn that from cheap simulated games than from the paper.
  • Coverage. Real data will be thin for rare configurations (unusual maps, player counts,
    drop-out patterns). Simulation fills gaps.

Scope sketch

  • Rules engine: territory placement, reinforcement/bonus calculation, attack resolution, fortify,
    card sets, elimination, turn order
  • Agent interface with a few baselines (random-legal, greedy-expansion, bonus-completion,
    border-minimizing), plus a hook for learned agents
  • Emits logs conforming to the same schema as scraped games, so the whole analysis stack runs on
    simulated and real games interchangeably
  • Validation: agent strength ordering is stable, games terminate, distributions are sane

Explicitly out of scope here

Negotiation between agents. LLM agents talking to each other is a different project answering a
different question — see the companion issue on external conversation corpora. Board play only.

Depends on

#1 — needs the log schema, map/graph representation, and position-strength metrics to exist first,
since the whole point is to plug into them.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions