Project outputs
A build writes everything under outDir — dist/ by default. Every file there
is derived: rewritten on every build, never edited, never committed. Most are
for the tools that pack a project into the game and for the server that talks
to it. Four are for you.
What you will open
Section titled “What you will open”warnings.json
Section titled “warnings.json”Every warning the last build raised, one line each, file and line and code, with duplicates removed. A warning that scrolled past the terminal is here. Empty on a clean build.
static-refusals.txt
Section titled “static-refusals.txt”For every interface the game does not load entirely as data, one line naming
the interface and the reason: docs-quest-log -> a component prop that is not a constant. Written on every build.
interfaces.json
Section titled “interfaces.json”The entry points: every interface the project declares, by name and number, with the components the game loads as data — their positions, sizes and properties. The number beside each name moves whenever an interface is added or renamed.
state.json
Section titled “state.json”Every state cell by its qualified name — /settings#zoom — and the slot it
was given. Open it to learn which slot a cell landed in when something outside
the build must set or read it. Persisted cells keep their slots through the
registry; session cells are
numbered fresh each build.
What the tools open
Section titled “What the tools open”scripts/
Section titled “scripts/”One pair of files per function the build wrote out — every component, every
handler, every helper, and the ones the build made for itself: <name>.cs2 is
the readable form, <name>.bin the form the game loads.
scripts.json and symbols.json
Section titled “scripts.json and symbols.json”Two tables from name to number. scripts.json covers every function under
scripts/, including the ones the build made, keyed by the file name. symbols.json
covers only what something outside the build can name — a component, an
exported function — keyed by qualified name (/armoury#Cell). Packing uses
the first to place every function; the server and the frame use the second to
call one.
calls.json
Section titled “calls.json”How to call each exported function from outside the build: its name, its
parameters in order, and what each parameter becomes when the call is made.
This is the contract a
server reads to invoke a server entry point.
It names functions, never numbers: a caller resolves the name through
scripts.json when it loads, because the numbers move.
varc-configs.json
Section titled “varc-configs.json”The state slots the game must know about before an interface can use them, and which of them persist. Packing reads it; you never do.
collections.json, db-tables.json and db-rows.json
Section titled “collections.json, db-tables.json and db-rows.json”Every list and map declared with listOf and mapOf, with its entries; and
for a collection of records, the table behind it — one column per field — and
its rows. Packing writes them into the game’s data. Open collections.json
to check what a build packed for a declaration when a read draws something you
did not write.
wire-ids.json
Section titled “wire-ids.json”Every enum marked @wire: the values ts2 authored that cross the wire, by
member name, for the server’s build to turn into constants. Written on every
build, empty or not. See Server entry points.
module-refs.json
Section titled “module-refs.json”Every module-scope ref this build bound, by qualified name, and the component
it resolved to. A folder of a workspace
names this file as its externalRefs to compile alone against the full build’s
answers.
engine-config.json
Section titled “engine-config.json”What the client runs by name and which assets it loads, from the project’s
defineEngineHooks declaration — written on every rift-extended build,
declaration or not. See
Engine hooks.
mounts.json
Section titled “mounts.json”Every named static slot: the interface it is in, its number and its position.
It is how the server and other interfaces address a slot to open something into.
See Interfaces and slots.
controls.json
Section titled “controls.json”Every value the project reads from the game — a game variable, a skill, a container, a shared cell — and the values the source compares it against. For a tool that drives a panel through its states; nothing in the game reads it.
build-fingerprint.json
Section titled “build-fingerprint.json”One hash of every file the build read and the environment it read them in. A
tool that wants to know whether dist/ still describes the tree compares this
against a fresh computation instead of building again.
What is not here
Section titled “What is not here”The persisted-state registry, ts2-state.lock.json, is written beside the
sources rather than into dist/; commit it. See
The state registry.