en-loading is the screen players see while they connect. It is styled as a field terminal: the EndCore mark and wordmark ("Apocalyptic Survival"), a progress bar with status text, a typed boot-log console, rotating survival tips ("Field Notes") and looping background music that fades in over 4 seconds at 35% volume.
Progress follows the game's own loading events. When the game has finished loading, the screen stays up showing "Locating survivors" until character selection is ready, so players never see an empty world.
At a glance
| Depends on | Nothing. The resource has no Lua |
| Manifest | loadscreen 'html/index.html', loadscreen_manual_shutdown 'yes' |
| Closed by | en-multicharacter |
| Database tables | None |
| Config files | None; edit html/app.js |
How it works
loadProgressevents set the bar fromloadFraction.- Each loadscreen phase event moves the bar to a fixed percentage and adds a console line (see
PHASESbelow). initFunctionInvokingmaps its index and count into the 45-90% range.onLogLineonly surfaces "Mounting ..." resource lines in the console.- 450 ms after
endInitFunction, the bar goes to 100% with "Locating survivors". - If the browser blocks autoplay, the music retries on the next load message or a click.
The page is fully self-contained. It cannot use en-ui, because it runs before any resource UI is mounted.
Who closes it
Because the manifest sets loadscreen_manual_shutdown 'yes', the screen only closes when a script asks. en-multicharacter calls ShutdownLoadingScreen() and ShutdownLoadingScreenNui() once the character roster is on screen.
If you replace en-multicharacter, your selector must call both ShutdownLoadingScreen() and ShutdownLoadingScreenNui(), or players stay on the loading screen forever.
Configuration
There is no config file. Edit these values in html/app.js:
| Constant | Default | What it does |
|---|---|---|
FIELD_NOTES | 14 tip strings | Rotating survival tips |
PHASES | see below | Loadscreen event to { pct, text, log } |
INIT_LABELS | MAP, BEFORE_MAP_LOADED, AFTER_MAP_LOADED, SESSION_INIT | Status labels for init phases |
MUSIC_VOLUME | 0.35 | Music volume |
FADE_MS | 4000 | Music fade-in time |
Default PHASES percentages:
| Event | Progress |
|---|---|
startInitFunction | 5% |
startDataFileEntries | 15% |
performMapLoadFunction | 35% |
startInitFunctionOrder | 45% |
endInitFunction | 92% |
Adding your own tips:
// html/app.js
const FIELD_NOTES = [
'Noise carries. Suppressed weapons keep hordes away.',
'Safe zones end every chase. Run for the checkpoint.',
'Radiation builds up slowly. Leave hot zones before your Geiger counter screams.',
];Rebranding
- Replace
html/encore.mp3to change the music. - Replace
html/endcore.svgto change the mark. - The build number in the top rail is the
#buildelement inhtml/index.html(currently1.1.0).
en-loading has no exports, commands, events or state bags.