Skip to content

0001: Point of view ​

Status: Accepted

Context ​

A recorder only sees what its player can see. In the prototype's MTGO example, the recording player's draws are named, while the opponent's hand appears only as a count (PlayerB: hand 7), and the opponent's cards are first named when they are played or revealed. The prototype hints at this with [Local "PlayerA"], but nothing defines it, so a parser has to infer that the file is one-sided.

Decision ​

  1. Every file is recorded from one player's seat. A required Perspective header tag names that player. Its value MUST exactly match one of the names in the Players tag. That player is "us" and every other player is "them". Information hidden from the perspective player is hidden in the file.
  2. Every object gets an instance ID, whether or not its identity is known. A hidden object (a card in an opponent's hand, a face-down card, an unknown card moving between hidden zones) is listed with its ID and no name. A defined reveal event later binds a name to that ID. Hand sizes, library sizes, and zone moves stay exact even when the card is unknown.
  3. Player names are recorded as they are. Player names are public, and the spec does not define redaction. Hiding names or hands from viewers is up to applications (for example mtgreplay.app), not the format.

Rules basis ​

Checked against the Comprehensive Rules effective 2026-09-25.

  • 400.2: zones are public (graveyard, battlefield, stack, exile, ante, command) or hidden (library, hand), and cards in hidden zones may not be visible to every player. The perspective player's view is a property of the game itself, so the file has to say whose view it records.
  • 401.3: any player may count the cards in any library at any time. Hidden cards still count, so they need instance IDs even when unnamed.
  • 701.20a: to reveal a card is to show it to all players. Revealing is how a hidden object's identity becomes known, which is the basis for the reveal event.
  • 708.2: face-down spells and permanents have no characteristics other than those the rules or effect give them. Face-down objects are hidden objects with IDs.

Alternatives rejected ​

  • Spectator and omniscient perspectives (a public-information-only view, or a full-information view from a game engine or tournament server). Rejected for now: every current source records from a player's seat, and the spec adds nothing speculatively. Revisit if a real source needs one.
  • Recording everything and letting viewers hide information. Rejected: game clients cannot see the opponent's hidden cards, so almost every real file would be incomplete.
  • Hidden cards without IDs (counts only). Rejected: when a card is later revealed, it cannot be linked back to the moment it was drawn, tutored, or bottomed.
  • Spec-defined redaction. Rejected: names are public, and hiding information is a presentation concern for applications.

Consequences ​

  • Perspective replaces the prototype's Local.
  • The card table and move grammar must allow an instance with no name, and the spec must define a reveal event.
  • Example files use real player names. They are not anonymised.