Pieces
A piece (kind: piece) is a physical figure on the table — a meeple, a
mini, a pawn, a chess knight, a board marker. Use it for any moving token
that isn’t a card, die, or generic
token.
Like every component, a piece is just an object players pick up and place. taybl does not know whose turn it is and never blocks a move — a "knight" can be dragged anywhere on the board. The piece-specific fields exist to draw the figure correctly and to hint at how it usually moves, not to police anything.
How to edit in the Studio
Open your game → Layout tab and select the piece. The component
inspector shows the shared fields (name, quantity, per-player, behaviors)
plus a Movement hints (UX only) disclosure unique to pieces. Front and
back art are set through the face slots. The piece outline (shape) and a
multi-cell footprint are set in the generated GDL rather than through a
dedicated control — see
shapes, behaviors & value bindings.
Piece-specific fields
| Field | Values | Default | What it does |
|---|---|---|---|
kind | piece | — | Marks this component as a piece |
faces | { front?, back? } bindings | .optional() | Art for each side — both optional on a piece (a mini may be single-sided) |
movementHints | array of MovementHint | .optional() | Display-only highlights when a player lifts the piece — never enforced |
Pieces also share shape, footprint, and behaviors with every kind —
see shapes, behaviors & value bindings for the
meeple silhouette (shape: polygon) and multi-cell footprint.
Movement hints
A MovementHint paints a suggestion of legal destinations when a player
picks the piece up. It is a pure UX affordance — taybl highlights the cells,
but the player can still drop the piece anywhere. Each hint has a type:
type | What it highlights |
|---|---|
orthogonal | Straight lines along rows and columns (rook) |
diagonal | Diagonal lines (bishop) |
any | Any direction (queen / king) |
lShape | Knight’s L-shaped jumps |
path | Along a connected path / track |
custom | A bespoke pattern the renderer resolves |
Each hint also takes optional refinements:
| Field | Values | Default | What it does |
|---|---|---|---|
range | integer ≥ 1, or unlimited | .optional() | How many cells the highlight reaches |
canJump | true | .optional() | Whether the highlight ignores intervening pieces |
direction | forward backward | .optional() | Restricts the highlight relative to the piece’s seat (e.g. pawns) |
Because hints never enforce anything, you don’t need them to be exact — they are a convenience for players, and the rules text is still the authority.
Related
- Components overview — shared fields
- Shapes, behaviors & value bindings —
shape,footprint,behaviors - Tokens — for chips and cubes rather than figures
- Grids — the boards pieces move across