Skip to content

Playset

A Playset captures the configuration shared by every player in a Match: which Expansions were used, which variants or custom rules were active, and which scenario or map was played — for one specific Game.

A Playset is not owned by any single Match. The same Playset can be referenced by any number of Matches that share the same configuration, so a group that always plays with the same expansion and house rules only needs to define it once.


A Playset is responsible for:

  • referencing exactly one Game, fixed for its entire lifetime;
  • referencing zero or more of that Game’s Expansions;
  • holding active variants/custom rules, and an optional scenario, as free-form labels;
  • remaining reusable across any number of Matches;
  • allowing its owner to rename it, without affecting its configuration or any Match that references it.

A Playset is NOT responsible for:

  • holding per-player configuration (faction, character, starting cards) — that belongs to Loadout, on each MatchParticipant;
  • deciding which Match uses it — a Match holds a reference to a Playset, not the other way around;
  • changing its own configuration once created — a different configuration requires a new Playset (see Invariants).

  • A Playset references exactly one Game, fixed at creation. It can never be changed to a different Game.
  • Every Expansion a Playset references must belong to that same Game.
  • A Playset’s Expansions, variants/custom rules, and scenario are immutable once created. Only its Name can be changed afterward.
  • A Playset is owned by exactly one User (its creator).
  • A Playset can be referenced by any number of Matches.
  • A Match’s Playset, if any, must belong to the same Game as the Match itself.
  • A Playset is never deleted while referenced by any Match.

A Playset is created by a User, either ad hoc while recording a Match, or standalone, ahead of time, for later reuse.

Only a Playset’s Name can be changed after creation, by its owner. Its configuration cannot change; a different configuration is always a new Playset. A Match can be updated, via an approved MatchEdit, to reference a different Playset — this changes which Playset the Match points to, never the content of any Playset itself.

A Playset is never deleted while referenced by any Match.


  • Playset references Game (exactly 1);
  • Playset references Expansion (0..N, must belong to the same Game);
  • Playset is referenced by Match (0..N);
  • Playset is owned by User.

  • PlaysetCreated
  • PlaysetRenamed

Playset is its own Aggregate Root, not a child entity of Match — precisely because it must be shareable across many Matches, which a child entity cannot be. A Match holds a reference (an identifier) to a Playset; it does not own it.