DocsLayout & seats

Seats

A seat is a player’s place at the table. The layout block lists one seat per player in layout.seats[], and each seat anchors the player’s personal view — their hand, their tray, anything placed in seatLocal space.

A seat carries just two fields:

FieldTypeMeaning
indexnumberThe seat’s stable id (0-based). setup placements and per-seat references target a seat by this index
anglenumber (degrees)Where the seat sits around the table, clockwise. 0 = the far edge (across from the local player); 180 = the near edge (the local seat). In [0, 360)

The angle convention

Angles run clockwise from the far edge. 0 is straight across the table from you, 180 is your own near edge, and 90 / 270 are the right and left sides. Think of it from the local player’s chair looking out across the felt — 0 is the opponent opposite, 180 is right in front of you.

Seat count must match the player count

There must be exactly one seat per maximum player: layout.seats.length must equal meta.playerCount.max. The pipeline checks this — a mismatch is a validation error. Add or remove seats by changing the max player count and re-placing them on the table.

How seatLocal placement uses seats

A zone placed in seatLocal space is instantiated once per seat, each copy rotated to that seat’s angle. That’s how a hand or a personal tray appears in front of every player, correctly oriented. The matching idea on the zone side is scope: a perSeat zone gives each seated player their own instance.

How to edit in the Studio

Open your game → Layout tab. Seats are drawn around the table edge; drag one to change its angle. To change how many seats there are, adjust the game’s max player count — the editor keeps seats.length aligned with playerCount.max.

Sign in to ask Pip about building games.
Sign in