Skip to content

Configuration

The config.json sections that control branding, panel toggles, loading timings, text, background and music.

On this page6

Branding

KeyWhat it does
ServerNameThe full-screen title in act one of the intro
LogoUrlUsed for the intro logo reveal and the logo on the finished screen. Must be a URL the client can reach. Blank skips both
LogoSizeHeight of the centre logo in vh. Does not affect the intro reveal
ThemeColorHex accent colour. Tints nav labels, panel borders, the progress bar and key caps

ThemeColor also drives text colour, so keep it light. A dark value makes the interface unreadable against the black backdrop.

Toggles

KeyWhat it does
EnableIntroMaster switch for the opening overture
EnableIntroTextAct one, the full-screen ServerName
EnableIntroLogoAct two, the logo reveal. Also needs a non-empty Branding.LogoUrl
EnableMusicThe music player
EnableNewsThe news nav entry and panel
EnableKeybindsThe keybinds nav entry and panel
EnableStaffThe staff nav entry and panel
EnableGalleryThe gallery nav entry and panel
EnableSocialsThe social icon row
EnableDiscordContextThe Discord profile badge

The two act flags only matter while EnableIntro is true.

Loading

Read by client/main.lua only. Each value must be a number of 0 or more.

KeyWhat it does
MinDisplayMsHow long the screen stays up. The screen is dismissed once the session has started and this has elapsed
FadeOutMsLength of the fade to black on the way out
ReadyGraceMsSettle time after the session starts
SafetyTimeoutMsHard cap. The screen always dies by this point
Intro acts playingCap applied
Text and logo16000
Text only11000
Logo only9000
Neither3000

The cap only ever lowers the value. An explicit shutdown request from another resource bypasses MinDisplayMs entirely.

Locales

KeyWhat it does
NavKeybindsNav label for the keybinds panel
NavStaffNav label for the staff panel
NavNewsNav label for the news panel
NavGalleryNav label for the gallery panel
KeybindsHeadingHeading inside the keybinds panel
StaffHeadingHeading inside the staff panel
LatestUpdatesHeading inside the news panel
CapturedMomentsHeading inside the gallery panel

The four panel headings render with the first word emphasised, split at the first space. Keep all eight short or they will crowd the panel on smaller viewports.

Background

KeyWhat it does
Type"gallery" for an image rotation, "video" for a looping clip. Any other value renders no background
VideoUrlUsed when Type is "video"
GalleryIntervalMilliseconds each image is held before the next fades in
ImagesUsed when Type is "gallery"

A single image renders as a static backdrop. In video mode a YouTube link plays through YouTube's iframe player; any other URL must be something the embedded browser can decode, such as an H.264 MP4.

json
"Background": {
    "Type": "gallery",
    "GalleryInterval": 5000,
    "Images": [
        "https://your-cdn.com/bg1.png",
        "https://your-cdn.com/bg2.png"
    ]
}

Nothing here is bundled. Every image, clip and logo is fetched over the network by a client that is still connecting, so host them on a CDN and keep file sizes modest. A background that has not arrived is a black screen.

Music

KeyWhat it does
PlaylistArray of { "Title", "Url" }. Tracks play in order and wrap round
VolumeStarting volume, 0 to 1
MutedByDefaultStarts muted. The track still runs

Url must be a direct link to an audio file, such as an .mp3 on a CDN.

json
"Music": {
    "Playlist": [
        { "Title": "Track Name", "Url": "https://your-cdn.com/track.mp3" }
    ],
    "Volume": 0.25,
    "MutedByDefault": false
}

Volume is read with a falsy check, so 0 is treated as unset and becomes 0.3. Use MutedByDefault, or a small value such as 0.05, to start quiet.

Extra ConfigurationThe content arrays in config.json, handing the shutdown to your framework.