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, and it is an infinite template: it has no count of its own. Physical copies come from where it is placed — a setup placement count, or a deck member quantity. 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, Behaviors, and the kind-specific extras; the inspector also shows the derived number of copies (read-only). Front and back art are set through the face slots (upload or replace inline). How many copies appear is set on the setup placement that places the component (its Count, plus Per player for one set per seat), or — for a deck — on each card's quantity in its group. Cards are grouped into decks from the Component Groups section — 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 }.optional()Size in abstract table units — only the ratio to the table matters. Absent → sized from the host zone box (whose fitContents scales the contents to the box — see layout)
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