Skip to content

Loadout

A Loadout captures what one player brought to one Match: their faction, character, starting cards, or any other game-specific configuration that applies to them individually, rather than to the Match as a whole.

Loadout is the per-player counterpart to Playset. Playset is shared and applies equally to every participant (expansions, variants, scenario); Loadout is individual and can differ from player to player within the same Match.


A Loadout is responsible for:

  • holding player-specific, game-defined configuration for one Participation;
  • feeding faction- and character-level statistics (e.g. faction win rates).

A Loadout is NOT responsible for:

  • configuration shared across all participants — that belongs to Playset;
  • the player’s result (score, rank, outcome) — that belongs to Participation directly;
  • identity resolution.

  • A Loadout belongs to exactly one Participation.
  • A Loadout’s fields are game-dependent and may be partially or fully empty for games that do not define factions, characters, or comparable concepts.
  • A Loadout does not change except through an approved MatchEdit that targets it — the same rule as Participation’s result.

A Loadout is created together with its Participation, when the Match is recorded, for games that define player-specific configuration.

None. Immutable once created.

A Loadout is never deleted while its Participation exists.


  • Loadout belongs to Participation.

Loadout is a value object / child entity within the Match aggregate, scoped under its Participation. It has no independent identity or lifecycle outside of its Participation.