DocsLayout & seats

Sheet mode

The Sheet tab in the Layout Editor shows every component in your game as rows in a table, with the live table preview beside it. It is built for the loop that happens after a playtest, when you already know what needs to change and just want to change it — six quantities, a deck reassignment, forty pieces of re-exported art — without visiting forty inspectors.

Everything you do here is an ordinary editor edit. The preview updates as you type, and nothing is stored until you press Save layout, exactly as in Arrange mode.

Tabs

Rows are split the way a spreadsheet splits sheets. First by component kind — Cards, Pieces, Tokens, Dice, Pads — and a kind only gets a tab when your game actually has one, so a card game shows Cards rather than four empty tabs.

Then four tabs every game has: Zones, Placements, Setup and Automation. Those last three are the whole pre-game half of your game — what starts where, what players choose before the first turn, and what the table does for them — and they are offered even when empty, because an empty Placements tab is where the first placement gets added.

Each tab shows the columns that make sense for it. Cards get art, deck and quantity; dice get their face list; zones get role, scope and visibility; placements get a destination and a count.

Columns

Every tab opens with the columns that matter and hides the long tail. The Columns menu turns the rest on, grouped by what they affect, and your choice is remembered per tab.

Cells are real controls, not just text: enums are dropdowns, true/false is a checkbox, art opens the image browser, and any cell that points at something in your game — a component, a deck, a zone, a position, a variant — is a picker you choose from rather than a name you spell. A few values are too structured to type — a stat block, a die’s faces, your data tags — so those cells show a summary like "3 stats" and open an editor when you click them. It is the same editor the inspector uses in Arrange mode, not a cut-down version: a stat gets its icon, key, type, starting value, bar ceiling and min/step here, and a die’s faces get their own artwork. Anything you can author on a component from the inspector, you can author from its row.

Those columns export their summary for context and are ignored on the way back in, so editing one in a spreadsheet changes nothing rather than mangling it.

A component that came from the Component Library keeps its own options — colour, shape, corner badges, a spinner’s wedges — and those live in its Data tags cell, as the real controls rather than raw text. They and your own tags share one place because they are one thing: a library option IS a property, so nothing is listed twice. Library and uploaded components stay in the same tabs; a component can be both (library art swapped for your own), so splitting them would only move rows around as you edited them.

Some columns are read-only on purpose:

ColumnWhy
IDPermanent. Setup placements and saved games point at it, so it survives a rename
KindChanging a kind rebuilds the component and drops its pending edits, so it lives in the inspector behind a confirmation
On tableDerived — how many actually reach the table, counting every setup placement
Library typeRecorded when a component comes from the Component Library

The Zones tab

Zones are where most of a game’s behaviour lives — what a region means, who can see into it, what it accepts — and this is the first place you can edit all of them at once.

Two things there behave differently from everything else, and both are worth knowing:

  • Who uses it (shared vs. each player) is not a simple field. Changing it also moves the zone between table space and seat space and rewrites its setup placements, so taybl does all three together
  • The position columns — X, Y, width, height, rotation, layer — edit the layout rather than the zone. They are tinted, and they undo with ⌘Z in Arrange mode, not in the sheet. Typing exact numbers is the fastest way to line up something like a row of 24 board spaces
  • A zone in the hand or supply tray is sized differently, so those columns are hatched on its row and Tray cols / Tray rows take over. A tray lays its zones out as tiles on its own grid, so what a tray zone has is a tile span, not a position — leave a span blank and the tile sizes itself to whatever the zone holds

The Placements tab

One row per setup placement — the flat, literal list of what is on the table when a game begins. Setup mode groups those same placements into cards ("Land hex", "Number tokens") because that is the right shape for placing things by eye; this is the right shape for a game with forty-seven of them and one thing to change in each.

A row says what is placed, where it goes, and under what conditions:

  • Component or Deck — one or the other, never both. Setting one clears the other, because a placement puts down a single component or a whole deck
  • Zone, and Position where the zone has addressable spots — a grid cell, a node, an edge, or a drop point on an open-play zone
  • Count, Face up, Rotation (degrees clockwise — how the piece is turned when it lands, blank for upright), and either Per player (once into every player’s copy of the zone) or Seat (one specific player’s copy)
  • Min players / Max players, so a placement only happens at some player counts — the four-player-only spaces on a board
  • Variant and Variant is, to tie a placement to a setup choice. A gated placement is held back until Start Game and only happens when the choice matches
  • Random — shuffle this piece into a fresh cell each game instead of leaving it where you placed it. Tick the rows you want and fill the column down to randomise a whole board; the ones you leave alone stay pinned. It writes a scatter step, so the layout you drew survives as the recommended board and only the deal is re-rolled

It works row by row even when several rows place the same component — four ore hexes are four placements of one piece, and ticking one leaves the other three where they are. Your Position is what makes that possible, so a row with no Position can’t be singled out: ticking it randomises every copy of its component, and the cell’s help says so.

Rows on the same Setup-mode card share one scatter, which is what keeps a board’s big hexes and its small tokens dealt across their own cells rather than each other’s. Only a shared grid zone with more than one fixed cell can be scattered; the cell says so on any row that can’t.

Every cell that points at something in your game is a picker, not a box you type a name into. Click one and you get the same list the inspectors use: Component shows each piece’s real art, grouped by deck — or by kind for a loose piece — and searchable once the list runs past a handful, so three components all called “Tile” are tellable apart at a glance. Zone, Deck and Variant list what your game has. Position lists the spots in that row’s own zone, by their friendly names — “N · outer”, not cell_2_3 — so you cannot pick a cell that belongs to a different zone.

An open-play zone is the exception: its drop points are made where a piece lands rather than declared up front, so there is nothing to list. That cell offers Across and Down instead — millimetres from the middle of the zone, each showing the range its box allows, so 0, 0 is dead centre and the numbers either side are as far as the zone goes. Easiest of all is to drag the piece where you want it in Setup mode and let the placement record the spot.

The keyboard still works the way a spreadsheet does: Enter or a double-click opens the list, typing a letter opens it already filtered, the arrows move, Enter picks, and Escape closes. A single-value cell writes nothing until you pick; a tick list writes each tick as you make it, so Escape there just closes the list.

A file is different — a CSV or a workbook still carries names, and importing one resolves Deck or Northlands to the right thing. If two components share a name the import says so and asks for the id rather than guessing.

Putting the cursor on a row rings its destination zone on the table beside you.

Component, Deck and Zone are required, so clearing one does nothing; pick the replacement over it instead.

The Setup tab

One row per setup step players resolve before the first turn — a variant they switch, an identity each of them takes, a shared pool they pick from, a draft from a privately dealt hand. The Type column is fixed: a step’s type is chosen when you add it, with the four buttons at the top right.

The columns are the flat parts of a step — its title and helper text, who picks, what they pick from, how many, and whether picks are exclusive, skippable or randomised. The Pool column is a multi-picker: tick as many as you like, and it follows what the step actually picks — a step that picks components offers components, one that picks zones offers zones. From a file it takes a comma-separated list of names, and if one entry does not resolve the whole cell is refused, because half a pool is worse than none.

Default offers only what that variant can actually hold — true / false for a switch, its own choices for a list — so a default the schema would refuse at Save is never on the menu. Also show ticks zones the same way.

A few parts of a step are decisions with several interlocking pieces — what a pick grants, where a shared pool’s picks are dealt, what a variant switches on. Those columns show a summary and are read-only here; edit them in Settings → Setup, where they have room.

The Automation tab

One row per silent step the table runs at game start with no player input — see setup automation. Action is what it does, and the columns beside it change with it: a shuffle needs a zone, a deal needs a from, a to and a count, a property needs a key and a value.

Changing the Action starts the step over rather than patching it, since the four actions share almost no fields. Dealing into a per-player zone is marked per-player for you — a deal into a hand that forgets it deals nothing at all.

Zone, From, To and Component are pickers, the same as on the Placements tab, so a deal points at a zone your game has rather than one you spelled right.

A scatter is authored right here: Pool is which pieces get shuffled, From cells narrows that to the ones standing on particular cells (this is what the Placements tab’s Random column writes), Cells the positions they may land on — leave it blank for the usual case, where they permute among the cells they already sit on — and Skip where / Skip value keep them off a cell whose occupant matches (no number token on the desert). Rules takes the spacing constraints as text: noAdjacent:value=6|8; maxRunLength:terrain=2; evenSpacing, semicolon separated. Those are the same three the Setup-mode checklist offers.

Pool, From cells and Cells are all multi-pickers. The two cell columns list the positions of the zone this scatter targets, by their friendly names, with the raw id underneath — so you can tick four of a board’s nineteen hexes without hunting for their ids.

A scatter written by the Fixed | Randomize toggle in Setup mode lives inside the Board setup variant rather than as a step of its own, so it shows up here as a row named after that variant. What it randomises is yours to edit; its title and its condition belong to the variant, and those cells say so.

Working in the grid

It behaves the way Excel and Google Sheets do, on purpose — the gestures you already have in your fingers should work here.

Moving around

  • Arrow keys move; Enter commits and drops to the next row; Tab commits and moves across. Hold Shift to go the other way
  • Tab skips the read-only columns, like a protected spreadsheet
  • ⌘+arrow jumps to the end of a run of filled cells; Home / End go to the ends of a row, ⌘Home / ⌘End to the corners of the sheet
  • Start typing to overwrite a cell, or Enter to edit what’s there; on a picker cell either opens the list, already filtered to what you typed
  • Escape cancels an edit, leaving the old value

Selecting

There are two things you can have selected, and the sheet keeps them visibly apart: a block of cells, tinted cell by cell, or whole rows, tinted edge to edge with a marker down the left. Which one you have decides what ⌘C, ⌘A and Delete do, so you can tell before you press a key.

  • Click and drag across cells to select a block. Drag past the edge and the sheet scrolls itself, so a 400-card selection is one gesture
  • Click a row number to select that whole row. Shift+click another and you get every row between them; ⌘click adds or removes one at a time; or just drag down the row numbers
  • Shift+click or Shift+arrow extends whichever selection you are in
  • ⌘A selects every cell — or, if you already have rows selected, every row. Esc clears. Click a column header to sort by it

Filling and copying

  • Grab the small square at the corner of the selection and drag it down. One value repeats; two or more that form a run continue it — 1, 2 gives 3, 4, and Card 01 gives Card 02, Card 03, keeping the padding
  • A picker column always repeats rather than counting up — there is no "next" component after Knight, so filling a Component or Zone column down a board copies the same reference into every row
  • Double-click that square to fill all the way to the last row
  • ⌘D fills down, ⌘R fills right — the fastest way to put sixty cards in one deck, or give them all the same size
  • ⌘C / ⌘V copy and paste blocks, including to and from Excel or Google Sheets
  • ⌘Z undoes your last sheet change while the grid has focus, ⌘⇧Z redoes it. A fill of sixty cells is a single undo

A cell only commits when you press Enter or click away, so a half-typed value never reaches the table. A picker cell commits the moment you choose — what you type there is a search, and it is never written as a value.

Seeing what you are editing

The table sits beside the sheet so you can watch it change, and the two point at each other.

On the Zones tab, the zone your cursor is on is ringed on the table — every copy of it, so a per-seat zone lights up in all of them, which is honest: that one row edits them all. Click a zone on the table and the sheet jumps to its row, which is the quickest way to answer "what are this thing’s settings".

On a component tab, a card appears in the top-left of the table showing the component itself — the same renderer players see, so a card shows its real face, a die its faces, and a stat pad its printed layout. It is drawn twice: once at its declared physical size, and once enlarged, because a title that overruns its header or an accent that vanishes against the art is invisible at 63×88mm. Change a card’s size and both redraw.

Stats appear on the component the way they will at the table — but only the ones marked pinned, which is what taybl draws on the piece itself. Open a component’s Stats cell and use the star to pin one; the rest stay in the piece’s click-to-open menu. A new value pins itself if there is room, and how many fit is the table’s own setting.

One caution about the small render labelled size in a free zone: most zones shrink their contents to fit the zone box, so a card’s declared millimetres are what it draws at only in a free-arrangement zone. Elsewhere the size sets the proportions and the relative scale of things sharing a zone, not the absolute size on screen. (Not to be confused with the On table column, which counts copies.)

The chevron collapses the card down to its title when you want the whole table, and that choice is remembered per game.

Neither disturbs your selection, and neither moves the table. If a highlighted zone is scrolled out of view the canvas stays where you put it — a cue you missed is better than a table that jumps on every arrow key.

The table pane shows the hand and supply trays too, since a zone docked to a tray is drawn there and nowhere else — so a hand zone highlights on its tray tile exactly as a table zone does on the felt. When the pane is too tight for a tray to fit beside the canvas, it collapses to a chip you can open, rather than squeezing the table.

All of it lives in the table pane, so Sheet-only mode shows none of it. The split control in the toolbar brings the table back.

Keeping your place

The ID and Name columns stay pinned while the rest scroll, so you can work in a column thirty across and still know which card you are looking at.

Drag the right edge of any header to widen a column, or double-click that edge to put it back. Widths are remembered per tab, like the Columns menu.

Clicking a header sorts the view — ascending, descending, then back to your own order. Sorting only changes what you see; it never rewrites the order you arranged, and a chip beside the filter box says when one is on. Because a sort reorders the view, moving rows is switched off while one is active — the row above isn’t really the row above.

In deck vs. on table

Two quantity columns, answering different questions:

  • In deck — how many of this component its deck holds. A component belongs to at most one deck, so this is a single number you set
  • On table — how many actually reach the table when the game is set up. taybl works it out from your setup placements, so a deck dealt into two zones doubles it

When they disagree, that is usually worth knowing. On table 0 is flagged: the component exists, but nothing ever places it, so it will not appear at your next playtest. Add a placement in Arrange or Setup mode.

Row actions

Right-click any row — or use the button in the row number — for duplicate, copy, paste, insert, move and delete. With several rows selected the action applies to all of them, and every label says how many: Duplicate (18). This works on every tab, not just the component ones — so eighteen placements, or a run of setup steps, duplicate in one go.

  • Move up / move down, or ⌥↑ / ⌥↓ on the keyboard, reorders rows. A block of selected rows moves together and stops at the ends. The order is yours to arrange and it is saved with the game — it sets the order you see everywhere, including the Add component menu

  • Insert a row above / below adds a new component right where you are, rather than at the bottom

  • Duplicate copies everything about the component, including its deck and quantity, but does not place it on the table. That is deliberate: a duplicate that quietly joined the deal would change your game without saying so

  • Copy and paste work on whole rows, and across games — on cards, pieces, tokens, dice and pads, and on Placements, Setup and Automation. Pasting into a different game brings the row but not its artwork, because images belong to the game they were uploaded to. A pasted placement that names a component or a zone this game does not have is skipped rather than added, and the count tells you how many

  • Zones are the exception: they copy by Duplicate only. A zone carries a box on the table as well as its settings, and there is nowhere sensible for that box to land in another game

  • Select all takes every row the sheet is currently showing — so with a search filter on, it means every row that matches

  • Delete tells you how many setup placements go with it before it commits

A selected row is highlighted edge to edge, which also changes what ⌘C does: with rows selected it copies rows, otherwise it copies the selected cells as text for a spreadsheet. Clicking any cell drops back to cell mode.

Adding and removing rows is not covered by ⌘Z — that undoes cell edits. To take back a paste, select the new rows and Delete them, or Reset the layout to the last save.

Splitting the window

The control at the top right sets how the width divides: a Sheet button gives the grid the whole window, a Table button gives it to the table, and the slider between them sets any balance you like — double-click it for an even split. You can also drag the divider itself. taybl remembers what you chose.

Replacing art in bulk

Drag a folder of images onto the grid. taybl matches them to your existing artwork by filename and asks what to do with each match:

  • Replace — swap the image in place. Every component using it updates at once, because the artwork keeps its identity rather than becoming a new file
  • Keep both — add it as a separate image
  • Skip — leave that one alone

Each row tells you what the existing image is currently used by, so "replace card12.png" reads as "replace the front of Locust" — which is the form you can actually answer. Apply to all handles a whole batch at once.

If two of your images share a filename — which happens when you have cut more than one print-and-play sheet — taybl will not guess. It shows you both and asks which one you meant.

Replacing art does not touch your layout, so you can do it with unsaved changes open.

Export and import

Export downloads an Excel workbook that keeps the shape of the grid:

  • a tab per kind, the same ones you see here
  • dropdowns on every column with fixed choices, so you cannot mistype a role or an arrangement
  • true / false pickers on the yes-no columns
  • reference columns — Component, Zone, Position — export as names and come back in through the same name matching, without a dropdown
  • the header frozen, and the ID column locked so it survives a careless paste
  • hover a cell in a dropdown column to see the same help the Columns menu shows

It opens in Excel, Numbers or Google Sheets. Edit it there, then Import it back. There is also a plain CSV export if you want something simpler, or are feeding another tool — both come back in through the same Import button.

Row 2 of each tab is hidden and holds taybl’s own name for each column. You can rename the headings in row 1 freely; that hidden row is what matches the file back up. If you delete it — or rebuild the sheet from scratch — taybl falls back to reading the headings, so either way the file still imports.

The rules that keep an import safe:

  • The ID column is what matches a row back to its component. Leave it alone
  • Art columns hold filenames, so you can read and edit them by hand
  • A column you delete from the file is left untouched — deleting the name column will not blank every name
  • A component missing from the file is not deleted. A row dropped by a spreadsheet filter looks exactly like a deliberate removal, so deleting is a separate checkbox you have to tick — and it only ever offers components of the kinds that file covers, so importing your cards can never touch a token
  • Import reads one tab, the one matching the tab you are on. A mistake on one tab cannot take the others down with it
  • Zones, Placements, Setup and Automation export but do not import yet. Every row on those tabs is matched by its ID, and none of them have one — edit them in the grid instead

Before anything is applied you get a preview listing every change, old value to new, plus anything taybl could not understand. Import is blocked until the problems are fixed, and the whole import is a single ⌘Z afterwards.

When a cell is hatched

A cell with a diagonal hatch means that column does nothing for that particular row — and hovering it tells you exactly why. The commonest case is a card with uploaded front art: taybl draws your image, so the composed Card title, type and body are never shown. Clear the front art and those cells come to life.

The same applies to a pad with a scanned front (the scan carries its own title), and to grid settings on a zone that is not arranged as a grid.

Adding rows

Every tab has its own add buttons at the top right, and they add the thing that tab is about:

  • card / piece / token on a component tab. A new component is not on the table yet — place it in Arrange mode, or give it a row on the Placements tab
  • placement on the Placements tab, pointed at your first component and zone for you to correct
  • variant / identity / pool / draft on the Setup tab — the type is fixed once the step exists
  • automation on the Automation tab, which starts as a shuffle

Right-click any row to duplicate or delete it. Rows on the setup tabs cannot be reordered from here: placements happen together, and step order is arranged on the sequence rail in Settings → Setup.

Sign in to ask Pip about building games.
Sign in