Skip to content

Spreadsheets

Typed tables and free-form sheets — what actually differs, the ten column types, AI columns and cells, and the entity grid's smaller set of powers.

All documentation — Modelling the world
On this page

A spreadsheet is a document with a grid instead of a page. There are two kinds, and a third surface that looks like one and is not.

The formula language they run is its own reference.

A spreadsheet's typed columns: a Name column, an Icon column of image thumbnails, and a Damage Types column whose values render as coloured pills.
Typed columns — a thumbnail column and a multi-select one.

Which kind to make

The Documents tree’s context menu offers both:

Menu entryWhat you get
New TableA typed sheet: every column has a field type, and values are coerced into it
New Free-form SheetAn untyped sheet: every column is general, and each cell decides its own kind

A new table starts with three columns — Name, Value, Notes — and six blank rows. A new free-form sheet starts with six blank untyped columns and six rows.

What actually differs

The mode flag is not the mechanism — a per-column general flag is, which is why you can convert between them.

Typed columnFree-form column
Header showsThe column’s labelIts letter, when unlabelled
Field typeOne of ten, with configurationNone
Column sort and filterYesNo
A committed valueCoerced to the column’s typeAuto-detected, conservatively
Can host a formulaOnly certain typesAlways
AI configurationOn the columnOn the cell
Range Sort ↑ / ↓ in the toolbarNoYes, with more than one row selected

Auto-detection is deliberately not Excel-aggressive. It recognises blank, TRUE/FALSE case-insensitively, plain numbers, and unambiguous ISO dates. Everything else is text — so 1-2 stays 1-2 rather than becoming a date.

Converting

Free-form and Convert to table are in the toolbar, and each is one undo step. Converting to a table infers each column’s type from its cells; a column with mixed kinds becomes text, and unnamed columns become Column A, Column B, and so on.

Columns

Ten of the twenty field types are available on a spreadsheet column:

TypeMenu label
textText
richTextRich text
numberNumber
booleanCheckbox
dateDate
assetAsset
entityEntity
selectSelect
colorColor
vector3Vector3

Excluded: code, condition, and every reference type except asset and entity.

A new column is text, 160 pixels wide, named Column N — and N is a count, not a position, so inserting between two columns does not renumber anything.

A select column can point at a project enum or bitmask; the options resolve when the sheet is read and the resolved list is never stored, so renaming an option updates every cell at once.

The column menu

Column name · Sort ascending · Sort descending · Filter (No filter · Contains · Equals · Is empty · Is not empty) · Freeze column — the first column only · Conditional formatting… · Type · AI settings… · Insert column left · Insert column right · Delete column.

A filter matches the displayed text, not the stored value.

Cells

A cell holds its raw value, optionally a formula, optionally AI metadata, optionally a manual format, and — in a free-form sheet — its detected kind. Cells are sparse: an empty one is not stored.

Rich cells are stored separately, because rich text cannot live in a plain-value map — with a flattened plain-text copy alongside it, so the grid can draw a preview and the cell stays searchable.

The last row is a phantom. It is always there, always blank, and typing in it materialises a real row and your value in a single step. Editing or clearing a cell preserves its formatting, and a commit that changes nothing writes nothing and adds no undo step.

Right-clicking a cell

Copy · Cut · Paste · Clear · Format (a submenu) · Insert row above · Insert row below · Delete row.

Format offers Bold, Italic, Underline, Strikethrough, three alignments, Fill colour, Text colour and Clear formatting.

Keys

Enter edits · arrows move, Shift extends · Tab and Shift+Tab move a column · Ctrl+A selects all · Delete clears · Ctrl+F finds · any printable character starts typing.

AI columns and AI cells

Two shapes, and which you get depends on the sheet.

An AI column (typed sheets) has a prompt, and every cell in it is generated and coerced into the column’s own type. Its output type can be text, number, boolean, date, select, color or entity.

A per-cell AI (free-form) is set on the cell itself, from AI prompt…. Its output type is narrower: Text, Number, Checkbox or Date.

From a column’s panel you can run four scopes: Empty cells, Outdated, Errors, or Whole column — and whole column skips anything you have hand-edited. Selecting more than twenty cells in a free-form sheet asks first, with the credit estimate.

Two markers you will see on a cell:

MarkerMeaning
Outdated — a referenced value changed.Something the cell’s prompt mentioned has changed since it was generated
Hand-edited — won’t be auto-overwritten.You typed over it, and bulk runs now skip it

A generated cell records the model it used and the credits it spent, so you can see where an expensive column went.

In an AI column, typing a value that starts with = is a plain human override, not a formula.

The entity grid is not a spreadsheet document

Opening an entity definition as a table — Open as spreadsheet in the entities tree — gives you a grid over that definition’s items. It looks the same and it can do less, deliberately: its columns are a schema and its rows are your items.

A spreadsheetThe entity grid
Edit cellsYesYes
Add, insert or delete rowsYesNo — rows are items
Add or retype columnsYesNo — columns are the definition
Formatting, conditional formatting, commentsYesNo
Author a formula in a cellYesNo — formulas belong to the field
Convert to free-form, range sortYesNo
Row heightsYesNo
Column widthsSaved in the documentPer browser
UndoThe document’s own stackThe project-wide stack

Its first three columns are always Name, Picture and Description, then every effective field of the definition — own, inherited and trait.

Read-only in the grid: AI fields, computed (formula) fields, and any field type with no inline editor — boolean and color (interactive at rest instead), vector3 (edited in the row detail), code, condition, commandCall and nodeRef.

Formulas here are per field, not per cell: one formula on the field applies to every item, and it is authored in the field’s Value Source setting.

Limits

LimitValue
Rows, columns, cell lengthNothing enforces one
Minimum column width80 px
Maximum auto-fit width600 px
Default column width160 px
Row heightsShort 28 · Medium 34 · Tall 56
AI cells per request50
AI prompt length4,000 characters
A saved document snapshot~25 MiB compressed
Creating or opening a spreadsheetPro plan and above

The plan gate is Spreadsheet views are available on the Pro plan and above. Enforced in the browser; there is no server endpoint behind it.

What breaks

SituationWhat happens
A formula names a function that does not exist#NAME? — see formulas
A formula’s target row or column is deletedThe stored text is rewritten to #REF!
A formula refers past the end of the gridBlank, not an error — until a structural change writes #REF! into it
A cycle#CYCLE! on the cells in the cycle only; the rest of the sheet still computes
A conditional-formatting or AI-model changeIt is written to document metadata, which the undo manager does not track — Ctrl+Z will not reverse it
Every cell in an AI batch failsNothing is charged
Written for
Writers · Unity developers · Advanced integrators
Last updated