Selections
A selection is the one interactive moment inside a phase:
players click to pick from a pool. Pick the 10 kingdom piles for this game;
pick which role card is yours; pick a starting region. A selection records the
choices and — crucially — those choices can drive setup.distribute to deal the
picked component types into supply zones at game start.
During a selection’s phase the renderer hides every zone that isn’t a pick
target, turning the named pool into clickable outlines (or component faces).
Once the picks are made, the setup.distribute entries bound to this selection
deal the picked components into their destination zones. That is the mechanism:
a selection narrows a large pool down to the few component types a game uses.
How to edit in the Studio
Open your game → Layout tab → select the phase. The Selections inspector lists the phase’s pick selections; + Add pick selection creates one. Set its Name, Scope (Shared — the table picks together — or Per seat — each player picks), the Pick min / Pick max range, and the Candidate zones pool.
Fields
| Field | Type | What it does |
|---|---|---|
id | id | Stable identifier; referenced by setup.distribute entries and setup steps |
name | string | Label shown while picking |
scope | 'shared' | 'perSeat' | shared → one set picked together; perSeat → each player picks their own |
targets | 'zone' | 'component' | Whether the renderer makes zone outlines or component faces clickable |
from | id[] | The pool to pick from — zone ids when targets: 'zone', component ids when targets: 'component' |
count | { min, max } | How many to pick; min may be 0, max at least 1 |
alsoShow | id[] (.optional()) | Extra zones to keep visible during this phase even though they aren’t pick targets (e.g. the hand picks are added to) |
grant | object (.optional()) | Identity assignment for component picks — see grants. Only valid when targets: 'component' |
optional | boolean (.optional()) | When true, players may skip — unfilled picks are auto-assigned randomly on phase advance |
description | string (.optional()) | Helper text shown while picking |
A shared selection produces one set of picks for the whole table; a perSeat
selection gives each player their own picks (and is required for ownership
grants). Because a selection-phase hides every non-target zone,
list any destination zone — the hand the picks land in, a reference card — in
alsoShow so it stays on screen while picking.