DocsZones

Grids & boards

A grid turns a zone into a structured board: a chessboard, a hex wargame map, a point-to-point route network, or an open lattice that tiles snap to. A grid lives on a zone whose role is grid and whose arrangement is grid — the grid spec then describes the cells, nodes, and edges components can sit on.

Like everything else in taybl, a grid is scaffold, not a rules engine. It gives components named spots to land on; it never enforces legal moves, adjacency, or turn order. Players move pieces between cells by hand.

The four grid types

A grid’s type picks how its spots are laid out:

typeUse it forNotes
squareA rank-and-file board (chess, checkers)Needs either a cells list or both width and height
hexA hex map (Catan, wargames)Same cell rules as square, plus an orientation
graphA point-to-point network (Pandemic, Ticket to Ride)Defined by nodes + connections rather than a cell block
openAn unbounded tile lattice (Carcassonne, dungeon crawls)No fixed cells; tiles snap to an openGrid lattice at runtime

Cells, nodes, edges, regions

Depending on the type, a grid is built from a few kinds of part:

FieldTypeMeaning
width / heightnumber .optional()Cell-block dimensions for a square/hex grid; an alternative to listing cells
cellsarray .optional()Explicit positioned cells — each an id, optional offset (mm), label, color, region
orientationflat | pointy .optional()Hex lattice rotation. flat = a flat edge at 12 o’clock; pointy = a vertex at 12 o’clock. Must match the hex tile art. Default flat
nodesarray .optional()Vertices / intersections — placement targets distinct from cells (a Catan settlement spot, a Pandemic city)
connectionsarray .optional()Edges between cells / nodes (see below)
regionsarray .optional()Named groups of cellIds (a board’s territories or sectors)
openGridobject .optional()Required when type is open: the lattice (square | hexPointy | hexFlat) and cellSize tiles snap to
nodeSizenumber .optional()Default node-marker radius (mm) for a graph grid
nodesVisibleboolean .optional()Whether node markers + routes are drawn during play. Default (unset) = hidden — the graph is an invisible scaffold so pieces sit on the printed board art
fitobject .optional()A sub-rectangle of the zone box (fractions, 0..1) the cell block fills — aligns cells over board art whose printed grid doesn’t span the whole image

Connections (edges)

A graph grid’s connections[] are the edges between nodes (or cells). An edge with an id becomes a placement target itself — a road between two cities, a Ticket to Ride route you drop train cars onto:

FieldTypeMeaning
from / tostringThe two endpoints (cell, node, or open id)
idid .optional()When set, the edge is a droppable placement target
bidirectionalboolean .optional()Equivalent to directed: false. Mutually exclusive with directed
directedboolean .optional()true = traversal only fromto (a one-way segment). Default = undirected
typestring .optional()Free-form category label — a renderer hint for colour or style (land vs. sea, track colour)
weightnumber .optional()Positive numeric cost on the edge (a route length, a movement cost)

How to edit in the Studio

Open your game → Layout tab and select the board zone. For square/hex grids, the Zone inspector exposes the grid dimensions; the fit overlay lets you drag the cell block to line up with a board image. For a graph grid, the graph inspector opens: toggle into Move, Add, or Connect mode to drag nodes onto their printed spots, drop new nodes, and click two nodes to link them. The same panel toggles nodesVisible and sets the default node size, with one-click “Fit nodes to box” and “Match box aspect” fixes for aligning the topology over a surface image.

Sign in to ask Pip about building games.
Sign in