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.
bun install
bun run build| Output | Symptom 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 WriteResourceFile | Every save fails; data.json is never written on Enhanced |
Neither failure says "you did not build this".
Load order
ensure tLib
ensure tUnitThe 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 key | Face | File | Weight |
|---|---|---|---|
condensed | Barlow Condensed Black | condensed.woff2 | 900 |
block | Archivo Black | block.woff2 | 400 |
stencil | Big Shoulders Stencil | stencil.woff2 | 800 |
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
- Put
yourface.woff2inweb/fonts/. - Add an
@font-facetoweb/atlas.htmlwith a distinctfont-family. - Add that family to the
FAMILIESmap in the same file's script block. - Add a key to
Config.fontsnaming 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.
- Start the server and get into a
valor2rb. - Run
/tunitand set Unit number. - 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.
tUnit
Still stuck? Support can answer it directly.
Was this page helpful?
TIMMYG Studios