3. Theme
Change a value, restart nuggs_multicharacter, open the screen: that is the whole
loop. Nothing in html/, css/ or js/ is touched. Leave a value out and the
shipped default is used, so an empty Config.Theme = {} is the stock look.
displayFont |
The BIG lettering — crest, page titles, step headings, character names, review numbers. Read in short bursts, so it can be decorative |
uiFont |
Everything else — labels, buttons, values, blurbs, store, arrival cards. Read properly, so pick something clean |
Every family below already ships in html/fonts/ as .woff2 and is declared
in html/css/fonts.css. Naming one is the whole job — no download, no
@font-face, no internet connection needed.
Names are case- and space-sensitive: "Bebas Neue" works, "bebas neue" and
"BebasNeue" do not. A typo falls back to the built-in stack and is named in the
console at startup.
Bundled display fonts
Section titled “Bundled display fonts”| Group | Families |
|---|---|
| Blackletter / gothic — the shipped look | UnifrakturMaguntia (default, ornate) · UnifrakturCook (heavier, tighter) · Pirata One (condensed, legible) · Grenze Gotisch (modern, easier to read) · MedievalSharp (hand-cut) · Metal Mania (spiky metal-band) |
| Classical / serif | Cinzel (roman capitals) · Cinzel Decorative (with flourishes) · Playfair Display (editorial serif) · Cormorant Garamond (light, elegant, small — size it up) · Alfa Slab One (heavy slab) |
| Condensed / poster | Bebas Neue (tall condensed caps) · Anton (heavier, wider) · Oswald (condensed with lowercase) · Teko (squared, technical) · Staatliches (poster caps) · Bungee (urban signage, very heavy) |
| Themed | Orbitron (sci-fi) · Russo One (industrial, motorsport) · Rye (western) · Special Elite (distressed typewriter) |
Bundled UI fonts
Section titled “Bundled UI fonts”| Group | Families |
|---|---|
| Condensed — the shipped look | Rajdhani (default, squared, compact) · Barlow Condensed (neutral, great small) · Oswald · Saira Condensed · Fira Sans Condensed (very readable) · Archivo Narrow · Roboto Condensed · Teko (numbers yes, prose no) |
| Neutral — widest and calmest | Inter (built for screens) · Roboto · Open Sans · Noto Sans (widest character coverage — pick this for non-Latin names) · Work Sans · IBM Plex Sans · Titillium Web |
| Character | Montserrat (geometric, wide) · Poppins (round, soft) · Kanit (condensed, angled) · Chakra Petch (angular, cyberpunk) · Exo 2 (rounded techno) |
Any family works in either slot; the split is a recommendation.
Size of the whole screen — every measurement is relative, so one number moves the
lot. 1.0 is shipped, 1.15 is noticeably bigger, 0.9 fits more on. Clamped
to 0.6–2.0.
displayFallback / uiFallback
Section titled “displayFallback / uiFallback”What to fall back to while a font loads, or if its file has been deleted out of
html/fonts/. Leave these alone unless you have pruned that folder.
Custom fonts
Section titled “Custom fonts”- Put the file in
html/fonts/— not a subfolder..woff2is much the smallest;.woff,.ttfand.otfalso work and are already served. - Describe it in
Config.Theme.fonts.custom. - Name it in
displayFontoruiFont, exactly as you wrotefamily. restart nuggs_multicharacter.
custom = { { family = "Gotham Nights", file = "gotham-nights.woff2", weight = "100 900" }, { family = "Server Sans", file = "server-sans-regular.woff2", weight = "400" }, { family = "Server Sans", file = "server-sans-bold.woff2", weight = "700" },},family is a name you choose — it need not match the file name. Keep it to
letters, numbers, spaces, dots and dashes.
weight is which CSS weights that file covers. The screen asks for 400, 600 and
700, so one file serving all three should say "100 900". One file per weight
means one entry per file.
Check you may ship it. Every bundled font is SIL Open Font License or Apache 2.0. A font you bought usually cannot be redistributed, and
html/fonts/sends a copy to every player who connects.
Colours
Section titled “Colours”Six base colours drive the entire screen. Set one hex and the whole family built on it — borders, glows, gradients, and the text printed on top — is recalculated.
| Colour | What it drives |
|---|---|
accent |
The colour of the screen. Borders, headings, the crest, buttons, the glow on the selected character |
premium |
Membership / VIP |
danger |
Delete and disconnect |
background |
The darkest shade. Panels, sidebar and vignette are this lifted by a set amount, so it decides whether the screen reads warm, cold or coloured black |
text |
The brightest text. Muted and dim are drained versions |
success |
The ONLINE dot on the server status row |
preset picks a ready-made set from Config.ThemePresets; anything in colors is
laid on top, so preset + one override is normal. Hex only — anything else is
ignored and the shipped colour kept.
colors.tokens
Section titled “colors.tokens”Sets one derived shade by name and leaves the rest of its family alone. Use it when a generated shade is not quite right.
| Family | Token names |
|---|---|
| Accent | accentBright accent1 accent2 accent3 accent4 accentDeep accentLine accentLineStrong accentInk — accent3 is the accent hex; accentInk is the dark text printed on an accent-filled button |
| Premium | premium1 premium2 premium3 premium4 premiumInk — premium2 is the premium hex |
| Danger | danger1 … danger5 — danger2 is the danger hex; 3–5 are the DELETE gradient, darkest last |
| Success | success |
| Surfaces | bg0 … bg7 — bg0 is the background hex and is darkest, bg7 the lightest panel shade |
| Text | text textSoft textFaint muted dim — text is the text hex |
layout
Section titled “layout”Two widths, for when the sidebar or creator panel is cramped by a long server name
or a translated locale. Accepts rem, px, vw or vh.
Presets
Section titled “Presets”Config.ThemePresets — each entry is a colors table under a name, and may also
carry a tokens table. Anything a preset leaves out keeps the shipped colour.
Copy one, rename it, and it is yours.
| Preset | Look |
|---|---|
gold |
The shipped look. Warm black and old gilt |
ice |
Cold steel and ice blue |
crimson |
Blood and ash — gang and MC servers |
emerald |
Money green over near-black |
neon |
Neon violet on cold black — cyberpunk, nightclub |
mono |
Silver on charcoal, no colour at all |
