Squad tactics readouts
squad-tactics-readouts · an adoption of Fact list, version 1
Use in your game
Opens the authoring tool with these answers and settings already filled in. You still add your game's own rules and tuning.
What is in the ZIP
The ZIP holds the adoption and its acceptance tests. In the authoring tool, choose Add contract and pick this ZIP. If you keep your design as files, put them in contracts/.
The contract behind it
Covers facts that players must be able to read. It says how each fact is shown, heard, or felt. A colour-only route is not enough. HUD layout and tutorials stay with your game.
Questions
The supplied answer is marked on each question. Pick other answers to see what changes. Nothing is saved here: the ZIP and the authoring tool use the supplied answers.
Can a fact shown by the game use colour as its only clue?
Why this is asked
Colour can merge for some players. A second clue keeps enemies and allies distinct for everyone; a colour setting helps only the player who finds it.
Can a fact listed here use sound as its only clue?
Why this is asked
A sound-only warning disappears when the game is muted or a player cannot hear it. This choice says whether another clue is required.
Are you promising a player setting for any listed fact?
Why this is asked
Different players need different ways to read a fact. This choice says whether your game promises any presentation setting.
Numbersno numbers
This contract has no numbers to set.
Rulesno rules
A rule is a check between the numbers. Validation reports a rule that fails.
This contract has no rules between its numbers.
Lists1 list
Each list holds the rows this adoption supplies. A list can be empty.
Readable facts
readable-facts
| Id | Fact | Channel | Presentation settings | Without audio |
|---|---|---|---|---|
squad-allegiance-symbol | 02-mechanics.md#squad-allegiance | symbol-or-shape | Colour-blind palette recolours the chevron badge but preserves its shape; HUD scale enlarges or shrinks it; no setting disables it. | — |
squad-allegiance-text | 02-mechanics.md#squad-allegiance | text | HUD scale enlarges or shrinks the squad label; no setting disables it. | — |
offscreen-threat-bearing | 02-mechanics.md#offscreen-threat-direction | place-or-size | HUD scale changes the threat arrow's size and distance from the screen edge while preserving its bearing; no setting disables it. | — |
offscreen-threat-spatial-audio | 02-mechanics.md#offscreen-threat-direction | spatial-audio | Audio-off disables the directional radio call; offscreen-threat-bearing remains readable. | The offscreen-threat-bearing row keeps the threat direction readable through the screen-edge arrow. |
action-points-pips | 02-mechanics.md#action-points-remaining | place-or-size | HUD scale changes the action-point pip size and spacing while preserving the number filled; no setting disables it. | — |
action-points-number | 02-mechanics.md#action-points-remaining | text | HUD scale changes the number's size; no setting disables it. | — |
overwatch-symbol | 02-mechanics.md#overwatch-state | symbol-or-shape | Colour-blind palette recolours the eye badge but preserves its shape; HUD scale resizes it; no setting disables it. | — |
overwatch-pulse | 02-mechanics.md#overwatch-state | animation | Reduced motion disables the pulsing border; overwatch-symbol remains readable. | — |
Test inputsscope and seeds
Some tests need a scope or seeds from the adoption before they can run.
fact-policy-holds
Fact policy holds
- Scope
- all Fixed mechanics prose that promises the player can read a squad allegiance, threat direction, action-point total, or overwatch state, and every readable-facts row
presentation-control-visible
Presentation control visible
- Scope
- colour-blind palette, HUD scale, reduced motion, and audio-off at both ends of their supported ranges, across every applicable cited planning and combat situation
Acceptance tests20 tests apply
The contract comes with 6 tests. A test that runs once per row is counted once for each row. Tests that do not apply to these answers are still listed, with the reason.
fact-policy-holds
the readable-facts list is complete and has no duplicate pair
Applies to squad-tactics-readouts.
Audit class: observer-judged. Across the supplied scope, the readable-facts rows are non-empty, every fact the Fixed prose promises the player can read appears in at least one row, and no two rows name the same fact citation and the same channel.
Test steps and diagnostics
- Scope
all Fixed mechanics prose that promises the player can read a squad allegiance, threat direction, action-point total, or overwatch state, and every readable-facts row- Holds
the readable-facts rows are non-empty; every fact the Fixed prose promises the player can read appears in at least one row; no two rows name the same fact citation and the same channel
- Diagnostics
squad-tactics-readouts-fact-list-completeness
colour-and-audio-policy-holds
the promised colour and audio policies hold throughout play
Applies to squad-tactics-readouts.
Audit class: observer-judged. Across every fact the game's Fixed prose says the player can tell, including facts with no readable-facts row, and the play situations that prose names, every fact the game shows remains readable after all hue differences are removed; every promised fact remains readable with audio muted and has at least one row whose channel is text, symbol-or-shape, place-or-size, animation, outline-or-contrast, or haptic.
Test steps and diagnostics
- Scope
every fact the game's Fixed prose says the player can tell, including facts with no readable-facts row, across the play situations that prose names
- Holds
every fact the game shows remains readable after all hue differences are removed; every promised fact remains readable with audio muted and has at least one row whose channel is text, symbol-or-shape, place-or-size, animation, outline-or-contrast, or haptic
- Diagnostics
squad-tactics-readouts-fact-observer-resultssquad-tactics-readouts-colour-and-audio-state
presentation-control-visible
the promised presentation setting changes a fact in play
Applies to squad-tactics-readouts.
Audit class: observer-judged. Across the supplied scope, at least one player-facing setting changes or can disable a channel named by a readable-facts row. Every row names each setting that affects its channel and the result at every supported end, and the running game matches that declaration in every applicable cited situation. A disabled channel points to another readable row for the same fact or admits that the fact becomes unreadable; any admission obeys the selected colour and audio policies.
Test steps and diagnostics
- Scope
colour-blind palette, HUD scale, reduced motion, and audio-off at both ends of their supported ranges, across every applicable cited planning and combat situation- Holds
at least one player-facing setting changes or can disable a channel named by a readable-facts row; every row names every setting that changes or can disable its channel and states the result at each supported end; each declaration matches the running game in every applicable play situation named by the row's fact citation; when a setting can disable the row's channel, the row names another channel row for the same fact that remains readable or states that the fact becomes unreadable, and any unreadable result obeys the selected colour and audio policies
- Diagnostics
squad-tactics-readouts-presentation-settingssquad-tactics-readouts-presentation-observer-results
presentation-setting-effect-holds · squad-allegiance-symbol
the setting declaration for squad-allegiance-symbol matches play
Applies to the squad-allegiance-symbol row.
Audit class: observer-judged. For squad-allegiance-symbol, observe every named setting at both ends of its supported range in every applicable situation named at 02-mechanics.md#squad-allegiance. The channel changes or is disabled exactly as declared. If disabled, another row keeps the fact readable or this row admits unreadability, and that result obeys the selected colour and audio policies. This row declares: Colour-blind palette recolours the chevron badge but preserves its shape; HUD scale enlarges or shrinks it; no setting disables it.
Test steps and diagnostics
- Given
the channel at
02-mechanics.md#squad-allegiance; this row declares:Colour-blind palette recolours the chevron badge but preserves its shape; HUD scale enlarges or shrinks it; no setting disables it.- When
- every named setting is observed at both ends of its supported range in every applicable play situation named at
02-mechanics.md#squad-allegiance
- every named setting is observed at both ends of its supported range in every applicable play situation named at
- Then
- the channel changes or is disabled exactly as declared
- if the channel is disabled, another declared row keeps the fact readable or this row states that the fact becomes unreadable, and that result obeys the selected colour and audio policies
- Diagnostics
squad-tactics-readouts-squad-allegiance-symbol-presentation-setting-result
presentation-setting-effect-holds · squad-allegiance-text
the setting declaration for squad-allegiance-text matches play
Applies to the squad-allegiance-text row.
Audit class: observer-judged. For squad-allegiance-text, observe every named setting at both ends of its supported range in every applicable situation named at 02-mechanics.md#squad-allegiance. The channel changes or is disabled exactly as declared. If disabled, another row keeps the fact readable or this row admits unreadability, and that result obeys the selected colour and audio policies. This row declares: HUD scale enlarges or shrinks the squad label; no setting disables it.
Test steps and diagnostics
- Given
the channel at
02-mechanics.md#squad-allegiance; this row declares:HUD scale enlarges or shrinks the squad label; no setting disables it.- When
- every named setting is observed at both ends of its supported range in every applicable play situation named at
02-mechanics.md#squad-allegiance
- every named setting is observed at both ends of its supported range in every applicable play situation named at
- Then
- the channel changes or is disabled exactly as declared
- if the channel is disabled, another declared row keeps the fact readable or this row states that the fact becomes unreadable, and that result obeys the selected colour and audio policies
- Diagnostics
squad-tactics-readouts-squad-allegiance-text-presentation-setting-result
presentation-setting-effect-holds · offscreen-threat-bearing
the setting declaration for offscreen-threat-bearing matches play
Applies to the offscreen-threat-bearing row.
Audit class: observer-judged. For offscreen-threat-bearing, observe every named setting at both ends of its supported range in every applicable situation named at 02-mechanics.md#offscreen-threat-direction. The channel changes or is disabled exactly as declared. If disabled, another row keeps the fact readable or this row admits unreadability, and that result obeys the selected colour and audio policies. This row declares: HUD scale changes the threat arrow's size and distance from the screen edge while preserving its bearing; no setting disables it.
Test steps and diagnostics
- Given
the channel at
02-mechanics.md#offscreen-threat-direction; this row declares:HUD scale changes the threat arrow's size and distance from the screen edge while preserving its bearing; no setting disables it.- When
- every named setting is observed at both ends of its supported range in every applicable play situation named at
02-mechanics.md#offscreen-threat-direction
- every named setting is observed at both ends of its supported range in every applicable play situation named at
- Then
- the channel changes or is disabled exactly as declared
- if the channel is disabled, another declared row keeps the fact readable or this row states that the fact becomes unreadable, and that result obeys the selected colour and audio policies
- Diagnostics
squad-tactics-readouts-offscreen-threat-bearing-presentation-setting-result
presentation-setting-effect-holds · offscreen-threat-spatial-audio
the setting declaration for offscreen-threat-spatial-audio matches play
Applies to the offscreen-threat-spatial-audio row.
Audit class: observer-judged. For offscreen-threat-spatial-audio, observe every named setting at both ends of its supported range in every applicable situation named at 02-mechanics.md#offscreen-threat-direction. The channel changes or is disabled exactly as declared. If disabled, another row keeps the fact readable or this row admits unreadability, and that result obeys the selected colour and audio policies. This row declares: Audio-off disables the directional radio call; offscreen-threat-bearing remains readable.
Test steps and diagnostics
- Given
the channel at
02-mechanics.md#offscreen-threat-direction; this row declares:Audio-off disables the directional radio call; offscreen-threat-bearing remains readable.- When
- every named setting is observed at both ends of its supported range in every applicable play situation named at
02-mechanics.md#offscreen-threat-direction
- every named setting is observed at both ends of its supported range in every applicable play situation named at
- Then
- the channel changes or is disabled exactly as declared
- if the channel is disabled, another declared row keeps the fact readable or this row states that the fact becomes unreadable, and that result obeys the selected colour and audio policies
- Diagnostics
squad-tactics-readouts-offscreen-threat-spatial-audio-presentation-setting-result
presentation-setting-effect-holds · action-points-pips
the setting declaration for action-points-pips matches play
Applies to the action-points-pips row.
Audit class: observer-judged. For action-points-pips, observe every named setting at both ends of its supported range in every applicable situation named at 02-mechanics.md#action-points-remaining. The channel changes or is disabled exactly as declared. If disabled, another row keeps the fact readable or this row admits unreadability, and that result obeys the selected colour and audio policies. This row declares: HUD scale changes the action-point pip size and spacing while preserving the number filled; no setting disables it.
Test steps and diagnostics
- Given
the channel at
02-mechanics.md#action-points-remaining; this row declares:HUD scale changes the action-point pip size and spacing while preserving the number filled; no setting disables it.- When
- every named setting is observed at both ends of its supported range in every applicable play situation named at
02-mechanics.md#action-points-remaining
- every named setting is observed at both ends of its supported range in every applicable play situation named at
- Then
- the channel changes or is disabled exactly as declared
- if the channel is disabled, another declared row keeps the fact readable or this row states that the fact becomes unreadable, and that result obeys the selected colour and audio policies
- Diagnostics
squad-tactics-readouts-action-points-pips-presentation-setting-result
presentation-setting-effect-holds · action-points-number
the setting declaration for action-points-number matches play
Applies to the action-points-number row.
Audit class: observer-judged. For action-points-number, observe every named setting at both ends of its supported range in every applicable situation named at 02-mechanics.md#action-points-remaining. The channel changes or is disabled exactly as declared. If disabled, another row keeps the fact readable or this row admits unreadability, and that result obeys the selected colour and audio policies. This row declares: HUD scale changes the number's size; no setting disables it.
Test steps and diagnostics
- Given
the channel at
02-mechanics.md#action-points-remaining; this row declares:HUD scale changes the number's size; no setting disables it.- When
- every named setting is observed at both ends of its supported range in every applicable play situation named at
02-mechanics.md#action-points-remaining
- every named setting is observed at both ends of its supported range in every applicable play situation named at
- Then
- the channel changes or is disabled exactly as declared
- if the channel is disabled, another declared row keeps the fact readable or this row states that the fact becomes unreadable, and that result obeys the selected colour and audio policies
- Diagnostics
squad-tactics-readouts-action-points-number-presentation-setting-result
presentation-setting-effect-holds · overwatch-symbol
the setting declaration for overwatch-symbol matches play
Applies to the overwatch-symbol row.
Audit class: observer-judged. For overwatch-symbol, observe every named setting at both ends of its supported range in every applicable situation named at 02-mechanics.md#overwatch-state. The channel changes or is disabled exactly as declared. If disabled, another row keeps the fact readable or this row admits unreadability, and that result obeys the selected colour and audio policies. This row declares: Colour-blind palette recolours the eye badge but preserves its shape; HUD scale resizes it; no setting disables it.
Test steps and diagnostics
- Given
the channel at
02-mechanics.md#overwatch-state; this row declares:Colour-blind palette recolours the eye badge but preserves its shape; HUD scale resizes it; no setting disables it.- When
- every named setting is observed at both ends of its supported range in every applicable play situation named at
02-mechanics.md#overwatch-state
- every named setting is observed at both ends of its supported range in every applicable play situation named at
- Then
- the channel changes or is disabled exactly as declared
- if the channel is disabled, another declared row keeps the fact readable or this row states that the fact becomes unreadable, and that result obeys the selected colour and audio policies
- Diagnostics
squad-tactics-readouts-overwatch-symbol-presentation-setting-result
presentation-setting-effect-holds · overwatch-pulse
the setting declaration for overwatch-pulse matches play
Applies to the overwatch-pulse row.
Audit class: observer-judged. For overwatch-pulse, observe every named setting at both ends of its supported range in every applicable situation named at 02-mechanics.md#overwatch-state. The channel changes or is disabled exactly as declared. If disabled, another row keeps the fact readable or this row admits unreadability, and that result obeys the selected colour and audio policies. This row declares: Reduced motion disables the pulsing border; overwatch-symbol remains readable.
Test steps and diagnostics
- Given
the channel at
02-mechanics.md#overwatch-state; this row declares:Reduced motion disables the pulsing border; overwatch-symbol remains readable.- When
- every named setting is observed at both ends of its supported range in every applicable play situation named at
02-mechanics.md#overwatch-state
- every named setting is observed at both ends of its supported range in every applicable play situation named at
- Then
- the channel changes or is disabled exactly as declared
- if the channel is disabled, another declared row keeps the fact readable or this row states that the fact becomes unreadable, and that result obeys the selected colour and audio policies
- Diagnostics
squad-tactics-readouts-overwatch-pulse-presentation-setting-result
audio-off-result-holds · offscreen-threat-spatial-audio
the audio-off result for offscreen-threat-spatial-audio matches play
Applies to the offscreen-threat-spatial-audio row.
Audit class: observer-judged. With audio off in every situation named at 02-mechanics.md#offscreen-threat-direction, the row promises: The offscreen-threat-bearing row keeps the threat direction readable through the screen-edge arrow. If that declaration says the fact becomes unreadable, the selected audio policy must allow it.
Test steps and diagnostics
- Given
the audio channel at
02-mechanics.md#offscreen-threat-directionand this row's audio-off declaration:The offscreen-threat-bearing row keeps the threat direction readable through the screen-edge arrow.- When
- audio is turned off in every play situation named at
02-mechanics.md#offscreen-threat-direction
- audio is turned off in every play situation named at
- Then
- the player receives the declared non-audio route or the fact becomes unreadable exactly as declared
- an unreadable result occurs only when the selected audio policy allows it
- Diagnostics
squad-tactics-readouts-offscreen-threat-spatial-audio-audio-off-result
fact-readable-by-channel · squad-allegiance-symbol
the fact defined at 02-mechanics.md#squad-allegiance is readable through a pictorial symbol, distinct shape, or pattern alone
Applies to the squad-allegiance-symbol row.
Audit class: observer-judged. The check repeats in every play situation named at 02-mechanics.md#squad-allegiance. Every other route to the fact is removed or made identical across the states being distinguished — declared or not — so a pictorial symbol, distinct shape, or pattern is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route. Within each named play situation, an observer meets each state the cited prose names at least once, in an order they do not know, and correctly names the state every time from a pictorial symbol, distinct shape, or pattern alone.
Test steps and diagnostics
- Given
the fact defined at
02-mechanics.md#squad-allegiance, checked separately in every play situation named there, with every other route to the fact removed or made identical across the states being distinguished — declared or not — so a pictorial symbol, distinct shape, or pattern is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route- When
- within each named play situation, an observer using a pictorial symbol, distinct shape, or pattern meets each state the cited prose names at least once, in an order the observer does not know, with no prior knowledge of which state is present
- Then
- in each named play situation, the observer correctly names the state every time from a pictorial symbol, distinct shape, or pattern alone
- Diagnostics
squad-tactics-readouts-squad-allegiance-symbol-observer-result
fact-readable-by-channel · squad-allegiance-text
the fact defined at 02-mechanics.md#squad-allegiance is readable through words or numbers shown to the player alone
Applies to the squad-allegiance-text row.
Audit class: observer-judged. The check repeats in every play situation named at 02-mechanics.md#squad-allegiance. Every other route to the fact is removed or made identical across the states being distinguished — declared or not — so words or numbers shown to the player is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route. Within each named play situation, an observer meets each state the cited prose names at least once, in an order they do not know, and correctly names the state every time from words or numbers shown to the player alone.
Test steps and diagnostics
- Given
the fact defined at
02-mechanics.md#squad-allegiance, checked separately in every play situation named there, with every other route to the fact removed or made identical across the states being distinguished — declared or not — so words or numbers shown to the player is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route- When
- within each named play situation, an observer using words or numbers shown to the player meets each state the cited prose names at least once, in an order the observer does not know, with no prior knowledge of which state is present
- Then
- in each named play situation, the observer correctly names the state every time from words or numbers shown to the player alone
- Diagnostics
squad-tactics-readouts-squad-allegiance-text-observer-result
fact-readable-by-channel · offscreen-threat-bearing
the fact defined at 02-mechanics.md#offscreen-threat-direction is readable through where something sits or how large or full it is alone
Applies to the offscreen-threat-bearing row.
Audit class: observer-judged. The check repeats in every play situation named at 02-mechanics.md#offscreen-threat-direction. Every other route to the fact is removed or made identical across the states being distinguished — declared or not — so where something sits or how large or full it is is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route. Within each named play situation, an observer meets each state the cited prose names at least once, in an order they do not know, and correctly names the state every time from where something sits or how large or full it is alone.
Test steps and diagnostics
- Given
the fact defined at
02-mechanics.md#offscreen-threat-direction, checked separately in every play situation named there, with every other route to the fact removed or made identical across the states being distinguished — declared or not — so where something sits or how large or full it is is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route- When
- within each named play situation, an observer using where something sits or how large or full it is meets each state the cited prose names at least once, in an order the observer does not know, with no prior knowledge of which state is present
- Then
- in each named play situation, the observer correctly names the state every time from where something sits or how large or full it is alone
- Diagnostics
squad-tactics-readouts-offscreen-threat-bearing-observer-result
fact-readable-by-channel · offscreen-threat-spatial-audio
the fact defined at 02-mechanics.md#offscreen-threat-direction is readable through the direction or position of a sound alone
Applies to the offscreen-threat-spatial-audio row.
Audit class: observer-judged. The check repeats in every play situation named at 02-mechanics.md#offscreen-threat-direction. Every other route to the fact is removed or made identical across the states being distinguished — declared or not — so the direction or position of a sound is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route. Within each named play situation, an observer meets each state the cited prose names at least once, in an order they do not know, and correctly names the state every time from the direction or position of a sound alone.
Test steps and diagnostics
- Given
the fact defined at
02-mechanics.md#offscreen-threat-direction, checked separately in every play situation named there, with every other route to the fact removed or made identical across the states being distinguished — declared or not — so the direction or position of a sound is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route- When
- within each named play situation, an observer using the direction or position of a sound meets each state the cited prose names at least once, in an order the observer does not know, with no prior knowledge of which state is present
- Then
- in each named play situation, the observer correctly names the state every time from the direction or position of a sound alone
- Diagnostics
squad-tactics-readouts-offscreen-threat-spatial-audio-observer-result
fact-readable-by-channel · action-points-pips
the fact defined at 02-mechanics.md#action-points-remaining is readable through where something sits or how large or full it is alone
Applies to the action-points-pips row.
Audit class: observer-judged. The check repeats in every play situation named at 02-mechanics.md#action-points-remaining. Every other route to the fact is removed or made identical across the states being distinguished — declared or not — so where something sits or how large or full it is is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route. Within each named play situation, an observer meets each state the cited prose names at least once, in an order they do not know, and correctly names the state every time from where something sits or how large or full it is alone.
Test steps and diagnostics
- Given
the fact defined at
02-mechanics.md#action-points-remaining, checked separately in every play situation named there, with every other route to the fact removed or made identical across the states being distinguished — declared or not — so where something sits or how large or full it is is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route- When
- within each named play situation, an observer using where something sits or how large or full it is meets each state the cited prose names at least once, in an order the observer does not know, with no prior knowledge of which state is present
- Then
- in each named play situation, the observer correctly names the state every time from where something sits or how large or full it is alone
- Diagnostics
squad-tactics-readouts-action-points-pips-observer-result
fact-readable-by-channel · action-points-number
the fact defined at 02-mechanics.md#action-points-remaining is readable through words or numbers shown to the player alone
Applies to the action-points-number row.
Audit class: observer-judged. The check repeats in every play situation named at 02-mechanics.md#action-points-remaining. Every other route to the fact is removed or made identical across the states being distinguished — declared or not — so words or numbers shown to the player is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route. Within each named play situation, an observer meets each state the cited prose names at least once, in an order they do not know, and correctly names the state every time from words or numbers shown to the player alone.
Test steps and diagnostics
- Given
the fact defined at
02-mechanics.md#action-points-remaining, checked separately in every play situation named there, with every other route to the fact removed or made identical across the states being distinguished — declared or not — so words or numbers shown to the player is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route- When
- within each named play situation, an observer using words or numbers shown to the player meets each state the cited prose names at least once, in an order the observer does not know, with no prior knowledge of which state is present
- Then
- in each named play situation, the observer correctly names the state every time from words or numbers shown to the player alone
- Diagnostics
squad-tactics-readouts-action-points-number-observer-result
fact-readable-by-channel · overwatch-symbol
the fact defined at 02-mechanics.md#overwatch-state is readable through a pictorial symbol, distinct shape, or pattern alone
Applies to the overwatch-symbol row.
Audit class: observer-judged. The check repeats in every play situation named at 02-mechanics.md#overwatch-state. Every other route to the fact is removed or made identical across the states being distinguished — declared or not — so a pictorial symbol, distinct shape, or pattern is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route. Within each named play situation, an observer meets each state the cited prose names at least once, in an order they do not know, and correctly names the state every time from a pictorial symbol, distinct shape, or pattern alone.
Test steps and diagnostics
- Given
the fact defined at
02-mechanics.md#overwatch-state, checked separately in every play situation named there, with every other route to the fact removed or made identical across the states being distinguished — declared or not — so a pictorial symbol, distinct shape, or pattern is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route- When
- within each named play situation, an observer using a pictorial symbol, distinct shape, or pattern meets each state the cited prose names at least once, in an order the observer does not know, with no prior knowledge of which state is present
- Then
- in each named play situation, the observer correctly names the state every time from a pictorial symbol, distinct shape, or pattern alone
- Diagnostics
squad-tactics-readouts-overwatch-symbol-observer-result
fact-readable-by-channel · overwatch-pulse
the fact defined at 02-mechanics.md#overwatch-state is readable through movement over time alone
Applies to the overwatch-pulse row.
Audit class: observer-judged. The check repeats in every play situation named at 02-mechanics.md#overwatch-state. Every other route to the fact is removed or made identical across the states being distinguished — declared or not — so movement over time is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route. Within each named play situation, an observer meets each state the cited prose names at least once, in an order they do not know, and correctly names the state every time from movement over time alone.
Test steps and diagnostics
- Given
the fact defined at
02-mechanics.md#overwatch-state, checked separately in every play situation named there, with every other route to the fact removed or made identical across the states being distinguished — declared or not — so movement over time is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route- When
- within each named play situation, an observer using movement over time meets each state the cited prose names at least once, in an order the observer does not know, with no prior knowledge of which state is present
- Then
- in each named play situation, the observer correctly names the state every time from movement over time alone
- Diagnostics
squad-tactics-readouts-overwatch-pulse-observer-result
JSONthe adoption as one file
The adoption file as supplied. Answers you try on this page are not written into it; to change an adoption, open it in the authoring tool.
{
"contract": "fact-list",
"version": 1,
"origin": "https://opengdd.org/contracts/fact-list-1",
"summary": "Covers facts that players must be able to read. It says how each fact is shown, heard, or felt. A colour-only route is not enough. HUD layout and tutorials stay with your game.",
"mechanism": [
"Each readable-facts row is one fact-and-channel promise. A fact carried by several non-colour channels repeats the same Fixed citation in several rows; a fact with no row makes no channel-readability promise under this contract.",
"A row promises that its channel alone lets a player distinguish the states the cited Fixed prose defines in every play situation the citation names. The check repeats for each named situation, with every other route to the fact removed or made identical across the states being distinguished — declared or not — so the named channel is the only thing that changes with the fact; developer instrumentation that is not a player-facing surface (an audit pane, a debug overlay, or a save file) is not a route. Within each named play situation, an observer meets each state the cited prose names at least once, in an order they do not know, and must name the state every time from the named channel alone.",
"A fact carried by memorable authored content, such as a published deck or a fixed map, can be readable through a route the channel rows do not describe; the rows promise presentation, not secrecy.",
"The ten channel ids are text, symbol-or-shape, place-or-size, animation, outline-or-contrast, audio-cue, spatial-audio, narration, audio-description, and haptic. Colour is not another channel: colour-alone is a game-wide policy for every fact the game shows, including a fact with no row, while a fact appears in readable-facts only when at least one non-colour channel carries it.",
"A listed fact may be a unit state, warning direction, resource amount, or card state. This contract records whether that fact is readable; it does not define tutorials, controls, or how the state changes.",
"Each row declares every player-facing setting that changes or can disable its channel. If a setting can disable that row's channel, the adoption either names another row for the same fact that remains readable or states that the fact becomes unreadable. The unreadable result is forbidden whenever another selected policy requires the fact to remain readable under that setting.",
"Package validation checks the list's shape, ids, channel choices, Fixed citations, and required setting declarations. The verification pack separately audits list completeness, the game-wide colour and audio policies, each setting declaration, and whether each channel distinguishes the cited states. Under fixed-by-game a row may declare no affected setting, but a setting a row does declare is binding and audited like any other row fact; colour-alone: player-recolourable independently still promises its colour setting."
],
"questions": {
"colour-alone": {
"asks": "Can a fact shown by the game use colour as its only clue?",
"rationale": "Colour can merge for some players. A second clue keeps enemies and allies distinct for everyone; a colour setting helps only the player who finds it.",
"guidance": "never",
"options": {
"never": {
"meaning": "Colour is never the only clue. Red enemies and green allies also differ by an outline or label.",
"semantics": "Every fact the game shows remains readable when all hue differences are removed. Player colour settings may still be offered, but they do not replace this requirement."
},
"player-recolourable": {
"meaning": "Colour may be the only clue when the player can replace it. A player who cannot separate red and green can choose two clear colours.",
"semantics": "Any fact the game shows may use hue as its sole distinction only when a player-facing setting lets the player change every colour carrying that fact. The changed presentation must preserve the same fact."
}
}
},
"audio-alone": {
"asks": "Can a fact listed here use sound as its only clue?",
"rationale": "A sound-only warning disappears when the game is muted or a player cannot hear it. This choice says whether another clue is required.",
"guidance": "never",
"options": {
"never": {
"meaning": "Sound is never the only clue for a listed fact. A danger tone also has a label or icon.",
"semantics": "Every promised fact remains readable with audio muted. The reviewer groups rows by fact citation and confirms at least one non-audio channel per fact: text, symbol-or-shape, place-or-size, animation, outline-or-contrast, or haptic."
},
"allowed": {
"meaning": "A listed fact may use sound as its only clue. Muting a rising danger tone may hide how close a timer is to ending.",
"semantics": "A promised fact may become unreadable when all audio is muted. Its Fixed citation must identify every play situation in which the audio-only promise applies."
}
}
},
"presentation-control": {
"asks": "Are you promising a player setting for any listed fact?",
"rationale": "Different players need different ways to read a fact. This choice says whether your game promises any presentation setting.",
"guidance": "player-configurable",
"options": {
"fixed-by-game": {
"meaning": "This answer promises no player-facing setting for the listed facts. A row may still name a setting your game happens to have. Any colour setting promised by your colour answer still stands.",
"semantics": "Every row still declares any player-facing setting that changes or can disable its channel. The adoption promises none of those settings through this answer, even when a row names a setting the game happens to have. A setting a row does name is still binding: its declared result is audited like any other row fact. Answering colour-alone with player-recolourable independently promises its colour setting."
},
"player-configurable": {
"meaning": "Your game promises a player-facing setting for at least one listed fact. A warning-volume setting changes the same warning wherever it appears.",
"semantics": "The adoption promises at least one player-facing setting that changes or can disable a channel named by a readable-facts row. Every affected row names the setting and its result. The changed presentation is observable in every applicable play situation named by the citation of each affected fact."
}
}
}
},
"declares": {
"rows": {
"readable-facts": {
"description": "List every fact and every independent way players can read it without colour. Use one row per pair, with no repeats. Two ways for health need two rows with the same citation. A finished adoption needs at least one row. The validator does not count rows; a reviewer does.",
"record": {
"id": {
"type": "string",
"required": true,
"pattern": "kebab-case",
"unique": true,
"description": "A short, stable name for this fact and its channel. Use a different name for each row."
},
"fact": {
"type": "citation",
"required": true,
"description": "Where your fixed game prose defines the fact and its states. The same prose must name every play situation covered."
},
"channel": {
"type": "string",
"required": true,
"options": [
"text",
"symbol-or-shape",
"place-or-size",
"animation",
"outline-or-contrast",
"audio-cue",
"spatial-audio",
"narration",
"audio-description",
"haptic"
],
"description": "The non-colour way that carries this fact by itself. In each named situation, an observer must identify every state from this way alone. Symbol-or-shape uses a pictorial symbol, bare form, or pattern, such as a shield badge or hatching. Place-or-size uses where something sits or how large or full it is, such as a threat arrow's direction. Animation uses movement over time, such as a pulsing border. Narration reads interface content. Audio description explains visual action that the interface does not name."
},
"presentation-settings": {
"type": "string",
"required": true,
"description": "Name every player-facing setting that changes or can disable this row's channel, and say what happens at each end of the setting's range — for a switch, when it is on and when it is off. Write 'none' when no setting affects it. If a setting can disable the channel, name another row for the same fact that remains readable or state that the fact becomes unreadable. Unreadable is only allowed when your colour and sound answers do not require the fact to stay readable. The validator checks that this field exists; a reviewer checks its truth."
},
"without-audio": {
"type": "string",
"when": {
"row": {
"channel": [
"audio-cue",
"spatial-audio",
"narration",
"audio-description"
]
}
},
"description": "Say what a player gets when audio is off. Name a non-audio row for the same fact, or state that the fact becomes unreadable. Unreadable is only allowed when your colour and sound answers do not require the fact to stay readable. The validator checks that this field is present on an audio row; a reviewer checks its truth."
}
}
}
}
},
"pack": "sha256:d026a70c9b4f1e60109b61fb4c8f5645cbd8aff4e2cd6bfb28a9622ffa782771",
"answers": {
"colour-alone": "never",
"audio-alone": "never",
"presentation-control": "player-configurable"
},
"values": {},
"rows": {
"readable-facts": [
{
"id": "squad-allegiance-symbol",
"fact": "02-mechanics.md#squad-allegiance",
"channel": "symbol-or-shape",
"presentation-settings": "Colour-blind palette recolours the chevron badge but preserves its shape; HUD scale enlarges or shrinks it; no setting disables it."
},
{
"id": "squad-allegiance-text",
"fact": "02-mechanics.md#squad-allegiance",
"channel": "text",
"presentation-settings": "HUD scale enlarges or shrinks the squad label; no setting disables it."
},
{
"id": "offscreen-threat-bearing",
"fact": "02-mechanics.md#offscreen-threat-direction",
"channel": "place-or-size",
"presentation-settings": "HUD scale changes the threat arrow's size and distance from the screen edge while preserving its bearing; no setting disables it."
},
{
"id": "offscreen-threat-spatial-audio",
"fact": "02-mechanics.md#offscreen-threat-direction",
"channel": "spatial-audio",
"presentation-settings": "Audio-off disables the directional radio call; offscreen-threat-bearing remains readable.",
"without-audio": "The offscreen-threat-bearing row keeps the threat direction readable through the screen-edge arrow."
},
{
"id": "action-points-pips",
"fact": "02-mechanics.md#action-points-remaining",
"channel": "place-or-size",
"presentation-settings": "HUD scale changes the action-point pip size and spacing while preserving the number filled; no setting disables it."
},
{
"id": "action-points-number",
"fact": "02-mechanics.md#action-points-remaining",
"channel": "text",
"presentation-settings": "HUD scale changes the number's size; no setting disables it."
},
{
"id": "overwatch-symbol",
"fact": "02-mechanics.md#overwatch-state",
"channel": "symbol-or-shape",
"presentation-settings": "Colour-blind palette recolours the eye badge but preserves its shape; HUD scale resizes it; no setting disables it."
},
{
"id": "overwatch-pulse",
"fact": "02-mechanics.md#overwatch-state",
"channel": "animation",
"presentation-settings": "Reduced motion disables the pulsing border; overwatch-symbol remains readable."
}
]
},
"verification": {
"fact-policy-holds": {
"scope": "all Fixed mechanics prose that promises the player can read a squad allegiance, threat direction, action-point total, or overwatch state, and every readable-facts row"
},
"presentation-control-visible": {
"scope": "colour-blind palette, HUD scale, reduced motion, and audio-off at both ends of their supported ranges, across every applicable cited planning and combat situation"
}
}
}