A loading screen for FiveM where the player drives down a neon highway at night while the game loads. It's free and the code is open to edit.
nCore Development · intelnpc.com · Resource: ncore_ilikeglow_loading · Version: see fxmanifest.lua
What it is#
The road, the towers, the lamps and the gates are a real 3D scene. The gates and the buildings light up as the progress rises, and at 100% there's a finale with a speed surge and a title. In front of it sit the server name, a progress bar, the status chip, tips, rules, news and staff.
It needs no framework, no database and no other resource. No music ships with it, you add your own tracks.
Features#
The highway scene#
- A real-time WebGL 2 scene: striped sun, sky and stars, a road with glowing lane dashes, a neon median and edge lines, and lamp light pools.
- Three rows of towers on each side with flickering windows and neon signs, 29 street lamps per side, 7 neon gates over the road and 6 sweeping searchlights.
- Traffic in both lanes with head lights one way and tail lights the other, plus light streaks.
- Bloom glow, with a cheap fake glow when bloom is off.
- The progress raises the speed, lights up the buildings and gates and widens the view.
- The music reacts: beats add speed and glow. With no music, a soft pulse keeps the scene alive.
- Finale at 100%: a forward surge, a flash, every gate lit, "Connection established" and a large "Entering the city" title.
scene.finale: falseleaves it out. - Four quality levels: minimal, low, medium and high.
scene.qualitytakes'auto'(the default),'low','medium'or'high'. Auto starts integrated graphics and CPUs with 2 threads or fewer on medium, other GPUs on high and software rendering on minimal, then steps down when frames get slow. The Scene settings table has the numbers per level and the other keys. - While the rules gate is open, the scene drops to half resolution and at most 30 fps.
- Without WebGL 2, if the scene fails, or if it hasn't started after 15 seconds, a 2D fallback takes over: a retro sun, a moving grid road and particles.
scene.enabled: falsegives everyone the 2D version. - The scene pauses while the window is hidden and shuts down after the fade out.
- Over a background video or image the scene fades out, or stays as a light overlay (
scene.withMedia). - With reduced motion on in the system, the speed is cut and the flashes are off.
Look#
- Theme colors: 23 colors drive the interface and the scene.
- Background video with an ordered source list and fallbacks, or an image slideshow. Both are off by default. A video is a file in
assets/videoor a direct .mp4 or .webm link, andassets/video/README.txtexplains the formats. - Logo beside, above or in place of the title, or a neon hexagon monogram with the first letter.
- Pre-title, title, subtitle and footer. Leave the title empty and it shows the server name with color codes removed.
- Pattern overlay, scrim, vignette, film grain, corner brackets and rising particles, each with a switch.
Status, progress and tips#
- A status chip with the Online label and dot, players against slots and ping.
- A progress bar with stage ticks, a glowing spark and "Stage nn / total" with 7 stage names. It moves by itself up to 90% until the game reports progress, then follows it.
- The game's own log lines show under the bar for a moment.
- Rotating tips with F-keys and /commands drawn as key caps.
- A welcome line with the FiveM name. On QBox, QBCore or ESX it switches to the character name when the framework's playerLoaded event arrives, but that event usually comes after the loading screen has closed, so most players still see their FiveM name.
playerNamein the config only sets the name in the browser preview.
Music#
- Your own .mp3 or .ogg tracks with previous, play/pause, next, a volume slider with mute, a popup track list and the elapsed time.
- Shuffle, loop and autoplay. The first click or key press starts the music if the browser blocks it.
- A spectrum visualizer (4 to 48 bars, 5 by default) and a waveform line, with a synthetic fallback. If any track is a link starting with http, https or //, the visualizer always uses the synthetic signal.
- The volume is remembered for the next join.
Info panel and rules gate#
- A side panel with a tab rail for Rules, News and Staff. News only shows when there is news, by default 8 entries.
- Staff cards with avatar letter, name, role and a badge. Social buttons with icons.
- The rules gate is off by default. Set
setr ilg:rulesGate 1to hold the screen until the player accepts. Options: scroll to the end, a Decline button that disconnects with a reason in your language, a dimmed background, once per version (ilg:rulesVersion) or every join (ilg:rulesMode always). - If another resource closes the loading screen while the gate is open, the same panel opens again above the game.
- Acceptances go to
data/rules_accepted.jsonwith the identifier, version, time and player name. That is personal data. The gate runs in the client script, so it works as a prompt and the server doesn't enforce it.
Live news and tips#
data/news.jsonanddata/tips.json, or JSON links (ilg:newsUrl,ilg:tipsUrl) refreshed everyilg:contentRefreshMinutes(5 by default).data/README.txtshows the file format.SetNewsandSetTipslet other resources push content. Pushed content comes first, then the links, then the files.- Up to 12 news entries and 30 tips, plain text only. If a link fails, the content that is already loaded stays.
Connecting#
- At connect the server hands over the player's name, count, slots, server name, the newest 4 news and 10 tips, so the first frame has data. Ping arrives a moment later. This needs a FiveM build with
deferrals.handover. - It works next to queue, whitelist, allowlist and anticheat resources, and next to
monitor,vmenuandeasyadmin. Detection is by resource name. When one of them runs, the data rides on that resource's connect deferral and this one doesn't take its own.ilg:useDeferralsforces it either way, and the server console prints the mode when the first player connects. - When the player's session starts, the screen fades out over 0.7 seconds and the music goes quiet with it. With the rules gate on, it waits for the answer first.
Languages and tools#
- 10 languages: English, Hungarian, German, French, Italian, Spanish, Brazilian Portuguese, Polish, Czech and Dutch. Copy
locales/en.jsonto add yours. demo.htmlplays a scripted take of the screen in your browser, about 51 seconds, with 6 color presets, language and speed options and hotkeys. See Browser demo.- The optional dev dock (
devDock) adds a Replay button. Each part of the screen starts on its own, so a failing part only logs and disables itself. - Fonts, icons and the 3D library ship inside the resource. The screen makes no outside request unless you set a video, image or music link.
Commands, exports and events#
| Name | Side | What it does |
|---|---|---|
ilg_reload |
Server console or ACE command.ilg_reload |
Re-reads the data files, fetches the links, prints the counts |
ilg_rules_reset <all or me or server id or identifier> |
Server console or ACE command.ilg_rules_reset |
Clears saved acceptances so the gate asks again |
IsLoadingScreenDone() |
Client export | True once the screen and the gate are done |
ncore_ilikeglow_loading:finished |
Client event | Fires once when the screen is done |
SetNews(list), SetTips(list) |
Server exports | Also the local events ncore_ilikeglow_loading:setNews and :setTips |
-- client
if exports.ncore_ilikeglow_loading:IsLoadingScreenDone() then
-- the screen is gone and the rules gate is answered
end
AddEventHandler('ncore_ilikeglow_loading:finished', function()
-- fires once, when the screen is done
end)
-- server: returns true when at least one entry was usable
exports.ncore_ilikeglow_loading:SetNews({
{ title = 'Winter update', date = '2026-07-24', tag = 'Update', body = { 'Two new legal jobs at the docks.' } }
})
exports.ncore_ilikeglow_loading:SetTips({ 'Press F1 to open your phone.' })Pushed lists replace the links and the files until you push again. Push an empty list and the links or the files are used again.
Requirements#
- A player PC and browser with WebGL 2 for the 3D scene. Others get the 2D fallback.
- Nothing else. QBox, QBCore and ESX are optional, for the character name, and even with them the welcome line usually shows the FiveM name.
- Instant first-frame data needs a FiveM build with
deferrals.handover.
Config files#
config.jsfor the scene, theme, media, music, panels and gate look.locales/*.jsonfor all texts.data/news.jsonanddata/tips.json(seedata/README.txt).server.cfgconvars, see below.
Install steps are in INSTALLATION.md.
Convars#
Set them with setr above ensure ncore_ilikeglow_loading.
| Convar | Default | What it does |
|---|---|---|
ilg:rulesGate |
0 |
1 turns the rules gate on |
ilg:rulesVersion |
1 |
Change it and everyone is asked again |
ilg:rulesMode |
version |
always asks on every join |
ilg:newsUrl |
empty | JSON link for the news. A document with news and tips keys fills both lists when ilg:tipsUrl is empty |
ilg:tipsUrl |
empty | JSON link for the tips |
ilg:contentRefreshMinutes |
5 |
Minutes between reloads of the files and the links. 0 loads them once at start |
ilg:useDeferrals |
auto |
1 always takes the connect deferral, 0 turns the connect handover off. auto takes it only when none of the resources named under Connecting is running |
The files in data/ are also read again when a player connects, so a saved change shows up for the next one.
Scene settings#
All under scene in config.js.
| Key | Default | What it does |
|---|---|---|
enabled |
true |
false uses the 2D version for everyone |
quality |
'auto' |
'low', 'medium' or 'high' fixes the level. Only auto steps down by itself |
maxFps |
60 |
Frame cap, 15 to 240 |
renderScale |
1 |
0.25 to 1, lowers the resolution further |
bloom |
on | enabled, strength, radius and threshold of the glow |
speed |
1 |
Driving speed, 0 to 4 |
reactToMusic, reactToProgress |
true |
Beats and progress move the scene |
withMedia |
'off' |
'overlay' keeps the scene over a video or image at overlayOpacity (0.6) |
finale |
true |
The surge and the title at 100% |
fov, sway |
62, 1 |
Field of view (40 to 100) and camera sway (0 to 3) |
traffic, streaks |
1, 1 |
Amount of cars and light streaks, 0 to 2 |
searchlights |
true |
The sweeping beams |
| Level | Pixels at most | Frame cap | Searchlights |
|---|---|---|---|
| minimal | about 1024 x 576 | 24 fps | 3 |
| low | about 1280 x 720 | 30 fps | 4 |
| medium | about 1600 x 900 | maxFps |
6 |
| high | about 2560 x 1440 | maxFps |
6 |
No level renders above the window size. Minimal is only used by auto mode. Lower levels also draw fewer light streaks.
Browser demo#
Double-click demo.html and the screen opens in your desktop browser, straight from the folder. It reads your config.js and plays the tracks in music.tracks. Opened from disk the visualizer follows the built-in signal, in game it follows the real spectrum. Players never download the demo files.
Add options after demo.html?, joined with &, for example demo.html?theme=sunset&clean=1.
| Option | What it does |
|---|---|
theme= |
glow, sunset, ultraviolet, arctic, toxic or inferno. The presets only exist in the demo. To use one on the server, copy its colors from demo/demo.js into theme in config.js |
lang= |
One of the 10 language codes |
speed= |
0.25 to 4, timeline speed |
loop=1 |
Restart after every take |
gate=0 |
Leave the rules gate out |
clean=1 |
Hide every demo element, for recording |
Hotkeys: H help, Space pause, R restart the take, 1 to 9 jump the progress to 10 to 90%, 0 finish loading and play the finale, G show the rules gate, A scroll the gate and accept, T next tab, P playlist, M music, F fade out, C next color preset, L push a game log line, N push extra news.
FAQ and troubleshooting#
| Problem | What to check |
|---|---|
| Players see the flat 2D road | Their PC or browser has no WebGL 2, or the scene failed. F8 shows 3D scene unavailable with the reason. |
| The scene is slow on some PCs | Leave scene.quality on 'auto', it steps down by itself. Lower scene.maxFps or scene.renderScale, or set scene.bloom.enabled to false. |
| No music plays | music.tracks is empty in the shipped config. Put .mp3 or .ogg files in assets/audio and list them, as a path or as { title, src }. Other formats are not packed by the manifest. If the browser blocked autoplay, the first click or key press starts it. |
| The video doesn't show | Open F8. video source failed names the file and the media error code, and video timed out means no data came for 6 seconds. assets/video/README.txt has the ffmpeg lines to convert it to .webm. |
| The 3D road is gone after I added a video | That's the default. Set scene.withMedia: 'overlay' to keep it over the video. |
| How do I change the server name | Set brand.title in config.js. Leave it null or empty and the screen shows sv_projectName (or sv_hostname) without the color codes. The other texts are in locales/<lang>.json. |
My changes in locales/*.json don't show in demo.html |
The demo reads the copy in demo/locales.js. In game the files in locales are used. Texts you set in config.js show in both. |
| The player count is 0 in the browser | The browser preview uses status.playersCurrent, playersMax and ping from config.js. In game the server sends the live numbers. |
| The screen doesn't close | It closes when the player's session starts. With the rules gate on it waits for Accept. Make sure no other loading screen resource is running. |
| The welcome line shows the FiveM name | That's expected most of the time. The character name from QBox, QBCore or ESX only arrives if the character loads before the screen closes. |
| The rules gate doesn't show | Check setr ilg:rulesGate 1. A player is asked once per ilg:rulesVersion, so use ilg_rules_reset all in the server console, or ilg_rules_reset me in game with the ACE, to see it again. |
| News or tips don't change | The server console prints a line when data/news.json or data/tips.json isn't valid JSON and when a link fails. Pushed content wins over the link, and the link wins over the files. ilg_reload reads everything again. |
Support#
Support is on intelnpc.com and I reply within 72 hours. New versions are announced on intelnpc.com.
nCore ILikeGlow Loading is made by nCore Development. It is not approved, sponsored or endorsed by Rockstar Games.
