Skip to content

Installation

Requirements, load order, the shipped fonts, and how to confirm text is drawing on a vehicle.

One dependency, no database, no SQL. A release archive is ready to start; a git clone is not — see Build it first.

Requirements

tLib v1.0 or newer, which is free, and lua54. tUnit declares tlib_min_version '1.0' and refuses to start below it. Do not edit that out to run on an older tLib — you get a stack trace mid-save instead of a clear message.

Build it first

Two runtime files are generated and not tracked in git. A release archive ships both built.

bash
bun install
bun run build
OutputSymptom if missing
client/ui/, the editor UI and ui_page/tunitedit gives a cursor over a blank screen
server/dist/bundle.js, this resource's WriteResourceFileEvery save fails; data.json is never written on Enhanced

Neither failure says "you did not build this".

Load order

cfg
ensure tLib
ensure tUnit

The folder must be named tUnit. A renamed folder is the usual cause of an import that finds no layouts.

Fonts

Three faces ship in web/fonts/. Nothing to source.

Config.fonts keyFaceFileWeight
condensedBarlow Condensed Blackcondensed.woff2900
blockArchivo Blackblock.woff2400
stencilBig Shoulders Stencilstencil.woff2800

All three are SIL OFL 1.1; web/fonts/LICENSES.md carries the copyright lines. Delete one and nothing errors — that cell is painted in the generic sans instead, which looks like a styling bug.

Fonts must be local; a Google Fonts <link> falls back to sans. Pick a thick stroke relative to cap height — stroke thickness decides whether text survives at distance.

Adding your own typeface

  1. Put yourface.woff2 in web/fonts/.
  2. Add an @font-face to web/atlas.html with a distinct font-family.
  3. Add that family to the FAMILIES map in the same file's script block.
  4. Add a key to Config.fonts naming that family.

To replace a shipped face, overwrite the file and stop. web/fonts/**/* is escrow_ignored, so your typefaces survive an update.

Making text appear

tUnit seeds layouts for valor2rb and valor5rb, each with a left and right element on the unit source.

  1. Start the server and get into a valor2rb.
  2. Run /tunit and set Unit number.
  3. Text appears on both doors within a second.

For any other model, add a layout to Config.layouts or position one in game with the editor. A vehicle with no layout draws nothing, and nor does an element with an empty value. If nothing appears, run tunit_diag before changing anything — Troubleshooting is organised around its output.

What it writes to disk

data.json, in the resource folder, created on the first editor save. It is gitignored and not shipped: Config.layouts is the seed, data.json the authority — see Precedence. In tLib demo mode nothing is written at all; check line 2 of tunit_diag before hunting a broken editor.

Still stuck? Support can answer it directly.

Was this page helpful?