How would you detect when your game is FULLY loaded?

I read the marked solution, waiting 4 seconds? what a good solution
unless you want me to scroll for every single comment which isn’t very time efficient…
Also i edited my answer on the second comment

I was referring more to my own post since someone already pointed out Loaded/IsLoaded as well as received a reply regarding using that for attempting to resolve OP’s issue.

There’s a search bar and not too many large posts here. It helps a whole lot more to read some of the discussion just so you can see what has and hasn’t been tried yet.

2 Likes

Actually you are right, when i first looked at this i didn’t find any direct answer and the comment marked as solution was no good so i searched on another threads and when i found out the answer and after testing it on my own game and making sure it worked without any trouble i thought of sharing a direct comment code i used cuz it may help others in future, i didn’t realize that other comments mentioned similar steps since most wasn’t really that direct

I will try to be extra careful in future, thanks!

That is better than your previous answer. However, if you would mix it with a little ContentProvider’s RequestQueueSize it would be more efficient. And to make the UX better, add the amount of minimum instances to load that when crossed will show you a skip loading button or it will just close the loading screen automatically altogether and let the other non-important assets load in the background.

This is personally my opinion of what’s the best way to make an efficient and user-friendly loading screen. Let me know if you got better ideas! :grinning:

1 Like

Use this:

local ContProvider = game:GetService(“ContentProvider”)

while ContProvider.RequestQueueSize > 0 do
	print("loading...")
end

and this

Players_OBJ = game:GetService("Players")
Players_OBJ.PlayerAdded:Connect(function(The_Player)
	The_Player.CharacterAdded:Connect(function(Character)
		The_Player_3D = The_Player.Character or The_Player.CharacterAdded:wait()
	while The_Player.HasAppearanceLoaded == false do
		print("loading...")
	end
	if The_Player.HasAppearanceLoaded == true then
		print("fully loaded!!")
	end
end)

also you can detect when the player’s orb has gone

while task.wait() do
			if Character:FindFirstChild("ForceField") then
				print("Orb's there...")
				wait(0.1)
			else
				print("Orb's gone...")
				break
			end
		end
2 Likes

I truly have the same question.

You can try this maybe:

game.Loaded:Wait()
print("The game has loaded succesfully! :)")
1 Like

Hello, just ran into this …
As long as you’re using a LocalScript, this worked perfectly for me.

wait(5) 
if not game:IsLoaded() then
    game.Loaded:Wait()
end
wait(1)

Pretty sure you don’t even need the wait() commands before and after
I’m using them as padding for script timing, so a fast load isn’t too fast for my timed intro.

3 Likes

Update … This works for the most part. But you will still need the waits to fine tune it.
Fully loaded and completed last screen update are not the same thing … (I guess)
This seems to get you right up to fully loaded, just need the wait time to complete
the last screen update/objects update.

This answer was way over a hundred times more straight forward than the answers given.

1 Like

Which is why it’s such a bad solution. You can’t do anything until absolutely everything is loaded.
(2 years later, its for new readers)

1 Like

This post is 5 years old and has already been solved, just let it die.

2 Likes