DocsRules & publishing

Procedures (legacy)

A procedure is a single named button that runs several steps at once — for example “draw five cards, reorder them, place them back on top.” It is the one place in the schema that looks like a tiny program rather than a physical arrangement.

That is exactly why you almost never want one. taybl models a physical table, not a rules engine: players move, flip, and deal things by hand and resolve every rule themselves from the rules sidebar. A procedure short-circuits that — and the more a game leans on procedures, the less it behaves like a real table.

Do not author procedures

This is the important part:

  • Generated games never emit a procedures block. The AI pipeline is built to express everything as components, zones, and rules text instead.
  • You should not add one by hand. There is no Studio panel for authoring procedures, by design.
  • The schema retains procedures only so that a handful of older, hand-authored games keep loading. Treat it as legacy.

Whenever something feels like it needs a procedure, the taybl-native answer is almost always a zone (with the right accepts and visibility) plus a line of rules text telling the player what to do. The player performs the steps; the rules describe them.

For completeness: the step vocabulary

If you ever read a legacy definition, a procedure is an id, a name, a description, and an ordered list of steps. Each step is keyed by a do verb. You will not write these, but here is what they mean:

doWhat the step does
move / dealRelocate components between zones; deal can fan out perSeat
shuffle / flipRandomise or flip a zone’s contents
reveal / hideChange a zone’s face-up state
prompt / chooseShow a message, or ask the player to pick components
setProperty / adjustSet or bump a global or per-player counter
moveObject / removeObjectAct on the specific object the procedure was invoked on
attachObject / detachObjectPin one object onto another (e.g. a counter on a piece)

An object-targeted procedure carries an appliesTo filter so it appears only in the right object’s context menu. Again — these exist for backward compatibility, not for new authoring.

Sign in to ask Pip about building games.
Sign in