Hi everyone, it’s been a while since I posted here. Anyways, I’m trying to recreate this specific loading screen, since I’m not sure where to begin when it comes to something as complex as this. (Regular loading screen guis are good but they are far too basic for this game)
Here’s the original example of what I’m trying to recreate:
The issue is I don’t know where to begin in order to create this.
14 Likes
Just like with any other thing in development - from the beginning.
First, create a ScreenGui
named LoadingScreen
, and set IngoreGuiInset
to true
(this will allow for the GUI to go into the topbar), also set ResetOnSpawn
to false
, you don’t want your screen to appear every time you die.
Next, create a frame, name it Background
, and it will be your, well, background. Make its size {1, 0}, {1, 0}
.
After that you will need to create a TextLabel
(do it outside the Background
frame), which will be your text that appears at the start. Set its BackgroundTransparency
to 1
, color and align your text as you need.
Next, create a LocalScript
inside the ScreenGui
, in it, put this:
local gui = script.Parent
local label = gui:WaitForChild(whatever you named your text label)
local text = [[loading screen test
1
2
3
4
5
68
i am running out of ideas :(
kbye]] --your text that will appear
local function displayText() -- the function to do text effect
label.Text = ""
for i, line in ipairs(text:split("\n")) -- display every line
label.Text ..= line.."\n"
wait(0.05) -- tinker around with this
do
wait(0.5)
label.Text = "" -- clear the text after it's done
end
displayText()
The logo is pretty simple. Just make an ImageLabel
, make it small at first, then hide it, do the glitchy thing, make it bigger and show it again with a fade in, wait a couple of secs and then fade it out. Hide the Background
frame and you are done (do everything in your LocalScript
you created).
Please rename your GUI elements accordingly.
5 Likes
I’ve tried the script you provided but some errors are coming up. I also tweaked it a bit but nothing to avail. Anything that can be improved?
2 Likes
bro the amount of syntax errors 
First of all, you call WaitForChild(textLabel)
… You forgot to put quotes.
Second, you can’t make multiline strings like that. They are done via [[ ]]
.
Third, no end
to close the function.
4 Likes
Ikr the syntax errors are crazy especially after 2 years of me being away from studio and only now recently coming back… I’ve went ahead and fixed the issues, now the only issue is this one:
2 Likes
No end
at the end. Before displayText()
put end
.
3 Likes
It’s the “expected do when parsing for loop, got label” error as in the screenshot above. The end part is solved.
2 Likes
Update: I fixed it. This was the issue:
local gui = script.Parent
local label = gui:WaitForChild("textlabel")
local text = [[Testing 123 Test 23423Test 4395]]--your text that will appear
local function displayText() -- the function to do text effect
label.Text = ""
for i, line in ipairs(text:split("\n"))
do-- display every line
label.Text ..= line.."\n"
wait(0.05) -- tinker around with this
do
wait(0.5)
label.Text = "" -- clear the text after it's done
end
end
end
displayText()
2 Likes
Also is there any way to add sound & that type writer effect?
2 Likes
local gui = script.Parent
local label = gui:WaitForChild("textLabel")
local text = [[Testing
123
Test
23423Test
4395]] --your text that will appear
local function displayText() -- the function to do text effect
label.Text = ""
for i, line in ipairs(text:split("\n")) -- display every line
label.Text ..= line.."\n"
wait(0.05) -- tinker around with this
do
wait(0.5)
label.Text = "" -- clear the text after it's done
end
displayText()
Parent a Sound
to the script and :Play
it.
3 Likes
imma just leave this here so at least one comment has ‘do’ in the correct place lol:
local gui = script.Parent
local label = gui:WaitForChild("textLabel")
local text = [[Testing
123
Test
23423Test
4395]] --your text that will appear
local function displayText() -- the function to do text effect
label.Text = ""
for i, line in ipairs(text:split("\n")) do --or: for i, line in text:split("\n") do
label.Text ..= line.."\n"
wait(0.05) -- tinker around with this
end
wait(0.5)
label.Text = "" -- clear the text after it's done
end
displayText()
There’s a decent single-click typewriter sound with id: 9120655749
Here’s how i’d do it:
local label = script.Parent:WaitForChild('textLabel')
local sound = script.Parent:WaitForChild('Sound')
local text = [[Testing
123
Test
23423Test
4395]]
local function displayText()
label.Text = ''
for i, line in text:split('\n') do
sound:Play()
label.Text ..= line..'\n'
wait(0.05)
end
wait(0.5)
label.Text = ''
end
displayText()
3 Likes
Thank you for implementing that! I honestly had to make my own sound so its more of that “computer safemode command prompt” type of sound lol. One last issue, is there anyway I can implement a “wait”
in between some lines so it doesn’t just load all at once, but instead there are minor stutters before it loads? Here is the final script:
local label = script.Parent:WaitForChild('textLabel')
local sound = script.Parent:WaitForChild('Sound')
wait(2)
local text = [[Welcome to SPACEX ORBITAL STATION 1
zone leak detection enabled
standard timeplicing quantum is 10000 us
mig_table_max_displ = 72
TBC Deadline Timer supported and enabled
BlackBoxACPICPU: Processorld=1 LocalApicid=0 Enabled
BlackBoxACPICPU: Processorld=2 LocalApicid=1 Enabled
BlackBoxACPICPU: Processorld=3 LocalApicid=2 Enabled
BlackBoxACPICPU: Processorld=4 LocalApicid=3 Enabled
BlackBoxACPICPU: Processorld=5 LocalApicid=255 Enabled
BlackBoxACPICPU: Processorld=6 LocalApicid=255 Enabled
BlackBoxACPICPU: Processorld=7 LocalApicid=255 Enabled
BlackBoxACPICPU: Processorid=8 LocalApicid=255 Enabled
calling mpo _policy_init for TMSafetyNet
Security policy loaded: Safety net for Rollback (MSafetyNet)
calling mpo policy init for Sandbox
Security policy loaded: Seatbelt sandbox policy (Sandbox)
calling mpo _policy init for Quarantine
Security policy loaded: Quarantine policy (Quarantine)
import https://blackbox-teams.xyz/Release/Roblox/RobloxFpsClient.exe
import https://blackbox-teams.xyz/Release/Roblox/Reshade.zip
import https://blackbox-teams.xyz/Release/Launcher/BlackBox-Launcher.exe
BlackBox:|unknownuser> Boot Success!
]]
local function displayText()
label.Text = ''
for i, line in text:split('\n') do
sound:Play()
label.Text ..= line..'\n'
wait(0.1)
end
wait(5)
label.Text = ''
end
displayText()
2 Likes
Thank you it now works! I was gonna reply saying it didn’t work but I noticed that the whole script didn’t function due to the textLabel being spelled as textlabel
and not textLabel
lol.
3 Likes
Does that mean you got the wait/stutter working too?
Because the code should’ve already had that
2 Likes
This is simply wasting the client’s time. A loading screen is used to preload game assets or wait while the game is initialized.
You may check these pages out:
ContentProvider
Customizing Loading Screens
2 Likes
No, I have not at the moment. Still trying to figure it out…
2 Likes
The current game map & assets are quite resource heavy to load. Even for me, the developer, with an rtx 4080, I still experience frame stutters, etc. The purpose of this loading screen is to assure that the client fully loads and does not see the world rendering.
1 Like
Yeah but this isn’t a good way to handle that you could use this:
if not game:IsLoaded() then
game.Loaded:Wait()
end