Phases
Most games need only one table layout. Phases are for the games that don’t: a draft that hides the supply until you’ve picked, a scenario that reveals the board in steps, a setup stage that differs from the playing stage. A phase is a named, ordered snapshot of the layout — it changes what is on screen and where, then hands control back to the players.
Phases are emphatically not a turn machine. taybl never advances a phase on its own, never checks whose turn it is, and never enforces anything. Players move to the next phase by hand when the table agrees to; a phase only decides which zones are visible and where they are placed. If you find yourself reaching for phases to enforce a sequence, you don’t need them — a single layout plus the rules reference is the taybl-native answer.
The first phase in the list is the initial one. Phases are entirely optional: a
game with no phases block renders exactly as it did before phases existed.
How to edit in the Studio
Open your game → Layout tab. The phase switcher at the top lets you add, select, and reorder phases; editing the table while a phase is selected captures that phase’s layout (which zones are hidden, where each sits). Per-phase selections are authored in the same inspector. The preview re-renders as you switch phases so you can see each stage.
Phase fields
| Field | Type | What it does |
|---|---|---|
id | id | Stable identifier for the phase |
name | string | Label shown in the phase switcher |
description | string (.optional()) | What happens in this phase; shown to players |
layout | object (.optional()) | The per-phase layout override (below) |
selections | PhaseSelection[] (.optional()) | Click-to-pick interactions offered this phase — see selections |
onEnter | step[] (.optional()) | Steps to run on entering the phase (uses the procedure-step vocabulary) |
The layout override
A phase’s layout rewrites the table for that stage without touching the base
layout:
| Field | Type | What it does |
|---|---|---|
hidden | id[] (.optional()) | Zones hidden during this phase |
zones | record (.optional()) | Per-zone placement overrides, keyed by zone id (same shape as a base zone placement) |
Related
- Selections — the click-to-pick interactions a phase offers
- Grants — identity assignment during a selection
- Layout overview — the base layout phases override