How do you make a Custom Loading Screen

Hello does anyone know how to make a custom loading screen when teleporting into another game?

I have tried game.ReplicatedFirst:RemoveDefaultLoadingScreen() but then the default screen would still be there for about a second and make it look “unprofessional”. I wonder how games like Entry Point and Egg Hunt 2018 managed to do it.

5 Likes

Make sure your script is in replicatedFirst. Otherwise, local scripts in starterGui or something other than replicatedFirst will load in after. Replicated First scripts are replicated first.

1 Like

I know that, I have already put it in Replicated Storage.

Put it in replicated first. (I hope you meant that and not replicated storage, just checking) Replicated first scripts replicate first, which seems to be your problem.

no I mean I have already put it into ReplicatedFirst

Are you the only player in your game? Finding a server can take a few seconds, so that might be the reason. See if the message says Waiting for Server or Joining Server.

I also tried it in studio.
It still stay there for a second.

Have you tried the actual game or look at the message at the bottom like my previous post mentioned:

I tried it in the actual game too. In fact it took 3 seconds.

Which is my point; Finding and creating a server takes time. With the other games you tested, the servers were already made.

In short; You can not get faster.

It didn’t say waiting for available server.

What did it say? Joining server? If so, it may take time to connect to a server. I feel like you really will not get any faster than this.

I trying to say how do you make it so when you teleport across games there is no default loading screen like Entry point and Egg hunt 2018.

Are you talking about loading into a game or teleporting across places in a universe (game)?

If it’s the first, we discussed it.

If it’s the second, this article has a nice and easy tutorial: Documentation - Roblox Creator Hub

1 Like

This article is out of date, I will follow up with a post on how to do it shortly.

Weird, I thought it was updated. It says a date of Jun 14 2019.

In the Egg Hunt 2018 we placed the ScreenGui which contained our loading screen in ReplicatedFirst. Alongside the GUI we included a LocalScript which handled the logic for our loading screen, this looked something like the following.

local teleportService = game:GetService("TeleportService")
local replicatedFirst = game:GetService("ReplicatedFirst")
local playerService = game:GetService("Players")

local defaultLoadingGui = replicatedFirst:WaitForChild("LoadingGui")
local loadingGui = teleportService:GetArrivingTeleportGui()

if not loadingGui then
    loadingGui = defaultLoadingGui
end

local player = playerService.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

loadingGui.Parent = playerGui 
teleportService:SetTeleportGui(loadingGui)
replicatedFirst:RemoveDefaultLoadingScreen()

If the player teleported into a place, we kept their existing loading screen instead of replacing it with the default one. This may or may not suit your purposes, but it’s easy enough to change.

17 Likes

I found a link to the roblox developer website. It should help with your problem.

Teleport Service Custom Loading Screen

I asked the Developer Forums this exact question yesterday. Here is the thread:

How do Games make Teleportation Immediate and Smooth?

In this situation, you would want to input (in either a Script or LocalScript)

local ScreenGui = --Gui's Path
ScreenGui.Parent = Player.PlayerGui

game:GetService("TeleportService"):SetTeleportGui( Instance ScreenGui )
game:GetService("TeleportService"):Teleport( Instance Player , Game Id )