Determining whether level instances have finished loading in their objects

I am using a procedural dungeon system to create levels in my fps rougelike student project game. The dungeon does all the generation using only data and once it has found a valid configuration it instances in levels using the “load level instance” node. Despite being very brute force/reject and retry based the generation system runs in less than a second. The instancing itself however is lasting between and 10 and 40 seconds depending on the size of the dungeon (10 is closer to what we’d use) and this is only going up as we add more assets to our rooms.

During this time we have to pause the game or freeze the player until this is done, masking with a loading screen, or else sub 20 framerates, extreme stutter, and missing geometry will interfere with the game.

However, I’m not sure how to determine when we are done loading. Currently it’s just based on a delay, but different hardware will respond differently so we would either have to massively overcompensate with a long delay which will be well in excess of what is necessary on most machines, or risk allowing some users to spawn into a broken game by keeping it shorter.

Is there a way to tell if the game has finished loading the level instances? I would prefer a blueprint only solution but do not mind using c++.

Hello, I was trying to solve this same problem, and after searching the internet for answers I couldn’t find any solutions either.

But then while tinkering around in my project, I stumbled upon this:

Which solved my problem perfectly. Each time the event is called I can increment a counter, and once it reaches the expected number of levels I know all levels are loaded. Hopefully this helps with yours too!