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, coins, counters.
  • Sheet (kind: sheet) — a printed pad players write on rather than move: a score card, a character sheet, a notepad.

Pick the kind by what the object does at the table, not by what the rules call it. A piece is something a player picks up and moves — a hero figure, but also a resource cube, which is why the Component Library builds cubes and gems as pieces. A token is a generic marker you drop somewhere and leave: a chip, a coin, a damage counter.

What a component means in the economy is a separate axis from what it is. Mark a piece or a token as a tradeable resource (isResource) in the inspector when it stands for wood, ore or coin. The flag is advisory — no rule is enforced from it — but it tells Pip and the generator what they are looking at.

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 a file, or press Choose to pick one the game already holds. 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.

The Component Library

You do not have to build every component from scratch, and you do not have to upload art for the common ones. The Components tab in the Studio is a component library — a catalogue of ready-made object types, grouped into categories: Figures, Cards, Dice & random, Tokens & resources, Boards & tracks, Zones & containers, and Timing. Each entry is drawn procedurally, so it needs no uploaded image at all.

Pick an entry and you get its own settings before you add it. A Die offers its number of sides (d4 through d20), pips or numbers, a colour swatch, and a quantity; a Token offers a colour, a value and a label; a Spinner lets you author each wedge with its own label, colour and likelihood. Adjust those, then use Add to <your game> (the button carries your game’s name) and the component joins it — after which you place it like any other, with a setup placement.

A few entries are bigger than the rest, and add more than one object.

Standard deck is a complete French-suited deck — all 52 cards, every one of them drawn by taybl, plus the component group that holds them together and a face-down draw pile to keep them in. Give it a label, pick a green or blue back, and switch on Include jokers if the game wants 54. You go straight to placing the group rather than authoring fifty-two cards by hand. See decks. Deck of cards does the same for a deck you write yourself: type or paste a table of cards and get one component each.

Polyhedral dice set adds the whole roleplaying set at once — d4, d6, d8, d10, d12, d20 and, if you want it, the percentile die that reads in tens — each with its own silhouette, all in one group.

Score pad is a printed pad players write on rather than an object on the felt: pick how many rows it has and whether every player gets their own, and it arrives with the row per round, a total, and the place it lives — the Sheets panel players open from the table menu. Edit its rows afterwards in the sheet builder. See sheets.

Counter is a number players count up and down at the table — the round, a score, a life total. Say what it tracks, what it starts at and whether it draws as a plain number or a dial, and it arrives showing that number in the middle of its face. At the table, right-click it for +1 / −1, or press = and - with it selected; Undo puts it back. The number belongs to the counter itself, so a per-player tracker is one counter placed per player on its setup placement rather than a setting on the component. Rename it, retune its ceiling or change its starting value afterwards in the inspector’s Stats section.

The library is a starting point, not a separate class of object. Once added, a library component is an ordinary component: it appears in the Layout tab, takes the same shared fields as anything else, and its catalogue settings stay editable from the component inspector. You can equally build the same object with Add component and set it up by hand — the library just saves you the setup and the art.

You can also just ask Pip for one — “add four red meeples to the supply”, “give me a d20”, “add wood, brick and ore cubes”, “give every player a score pad”, “add a round tracker”. Pip picks the catalogue entry and its settings for you. Remember that the count lives on the setup placement, not the component (a component is an unlimited template — see setup placements), so name the zone the pieces belong in and Pip will place them there. Without a zone the component is still created — it just waits in the components list until you place it.

When taybl picks a piece for you

If your rules name a component you never uploaded art for — the pawns in a roll-and-move, the resource cubes in a euro — generation does not leave it blank. It matches the component to the closest library entry and dresses it in that silhouette, so a “Red King” arrives as a red piece rather than a bare letter. The component inspector flags every one it picked with an Auto-assigned by taybl note and a Swap component button, so you can see exactly what it guessed and change it. Nothing else about the component is touched: its name, size and setup placements are the ones the rules produced. Upload real art for it whenever you like and your art takes over — the procedural look is only ever the fallback.

To add a new type from scratch, use Add component in the Layout toolbar; to retire one without deleting it, toggle hidden (below). A new component is not placed anywhere until you place it — with one exception. A sheet is a pad players write on rather than move, and one nobody can find is useless, so creating a sheet also mints its home: a zone whose pads open from the felt’s Sheets card, plus the setup placement that puts a pad in it. It is playable straight away, and you can still move it onto the table if it belongs there.

Fields shared by every kind

FieldValuesDefaultWhat it does
kindpiece card die token sheetThe 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, so it also decides which way up the component is drawn (a sheet wider than it is tall is a landscape pad; there is no separate orientation field). Absent → the component takes its proportions from its art and its scale from the host zone box (whose fitContents scales the contents to the box — see layout). This is why the same square image is drawn square whether you call the component a piece or a card: proportions follow the artwork, not the kind
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.

A binding also carries a rotation — the turn that face's art is drawn at. It is per-face, which is the whole point: set it on the back and the back turns while the front stays exactly as it was. That is how you fix a card back that scanned upside down without re-cutting the image. Do not reach for the rotatable behaviour or a setup rotation for this — those turn the whole component, both faces at once, the way turning a real card does.

Rotating the pixels is the better fix while you still have the sheet: the slicer's per-block Turn bakes it in as the cards are cut (see uploading assets). The binding's rotation is for art that is already uploaded and bound across a whole deck.

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
rotation0 90 180 270.optional()Draw this face turned. 180 puts an upside-down scan the right way up. 90 / 270 swap the art's width and height, so the component's box is re-shaped to match. Only quarter turns — an arbitrary angle has no box to fill

In the editor this is the Turn button on the art slot: on a component's front and back, on a die face, and — most usefully — on a deck's shared back, where one click fixes every card that has no back of its own. In the bulk grid it is the Front turn / Back turn columns, so a whole deck is one fill-down. You can also just ask Pip to turn a face over.

Sign in to ask Pip about building games.
Sign in