DocsComponents

Components

A component is a physical object type on the table — a meeple, a card, a die, a wooden cube. One entry describes one type; count says how many physical copies of it exist. taybl never spawns, scores, or removes components on its own: players pick them up and move them by hand, exactly as at a real table.

Every component has a kind — the discriminant that decides which extra fields it carries:

  • Piece (kind: piece) — meeples, minis, pawns, markers.
  • Card (kind: card) — anything that flips between a front and a shared back.
  • Die (kind: die) — a randomiser with two or more faces.
  • Token (kind: token) — chips, cubes, coins, counters.

Pick the kind by what the object is at the table, not by what it does in the rules — a "resource cube" is a token, a "hero figure" is a piece, even if the rulebook treats them similarly.

How to edit in the Studio

Open your game → Layout tab. Click a component on the table to open the component inspector on the right. There you set the Name, Quantity, the Per player toggle, Behaviors, and the kind-specific extras. Front and back art are set through the face slots (upload or replace inline). Cards are also grouped into decks from the separate Decks tab — see decks.

To add a new type, use Add component in the Layout toolbar; to retire one without deleting it, toggle hidden (below).

Fields shared by every kind

FieldValuesDefaultWhat it does
kindpiece card die tokenThe discriminant; picks the kind-specific fields
idlowercase snake_caseUnique id, referenced by setup and zones
nametextHuman label shown in the inspector and hover preview
facesFaceBinding per side.optional() (required on card)Art bindings — see shapes, behaviors & value bindings and below
size{ w, h, thickness } mm.optional()Real-world dimensions in millimetres. Absent → sized from the host zone box (whose fitContents scales the contents to the box — see layout)
countinteger ≥ 11How many physical copies of this type exist
perSeattrue.optional()When set, count applies per seated player
propertiesrecord of string / number / boolean.optional()Free-form data tags (suit, faction, point value) — never enforced
hiddentrue.optional()Skip this type during setup and hide it from pickers. The type stays in the GDL so flipping it back re-enables it

Face bindings

Art is bound through a FaceBindingfaces.front and faces.back. A binding is format-agnostic: { image } for the current 2D renderer, { model } reserved for a future 3D renderer, { color } as a flat-colour fallback or tint. Components reference assets by id only, so adding 3D later is purely additive.

FieldValuesDefaultWhat it does
imageasset id.optional()2D sprite, drawn by the current renderer
modelasset id.optional()3D model id, reserved for a future renderer
colorcolour string.optional()Flat-colour fallback / tint when no art is bound
Sign in to ask Pip about building games.
Sign in