Load Times: What's "Acceptable" and Improving Times

Hi

My game (2D) currently has a load time of 20seconds when entering the game.
At the moment, if the player wants to replay the game after game end, I simply reload the game scene.

My questions are:

  1. Is the above technique the best method? I really don’t want the player to be waiting 20seconds between games. But, it does make it a lot easier to do than resetting everything (I’m not being lazy! Just looking for the most efficient technique).

  2. What do you perceive to be an ‘acceptable’ load time for a game. Acceptable being the time a player will wait until quitting with frustration!

Thanks for any advice

For a mobile game…less than 10 seconds. Long load times are the kiss of death for me playing a quick session waiting in line or other.

Not sure why your initial load time is 20 secs for a 2D game, other than loading a lot of assets? I have a loadresources() I call that just pre-caches everything a level needs, then when I die/restart I just load the scene again and do a load game call to set any player data that was saved along the way. Reloads on death are pretty much instant. Initial game loads are 4-5 secs.

I just create a function called ResetAll. I think you can work out what it does. The user doesn’t even see a delay at all.

I do have a load of assets I guess - pools of enemies, pickups, ammo and the like. How does loadresources() function exactly and why does that make it faster?

I don’t think it is any faster. I just load less stuff? Are your textures compressed? Are you loading the bare minimum you need for your start level? Can you move any of it to load between levels 1 and 2, etc?

Don’t be confused with my naming loadresources() and Resources.Load(). I just named it similarly :slight_smile: I just use one game scene and it just has 3-4 game objects, and I should just make those prefabs, too, and instantiate it all at load time. In my level setup script I just load all the resources (prefabs, sounds, etc) I will need and assign references and have a function that spawns everything in a level (ground, backgrounds, enemies, etc etc).

Reading this I think my core issue is that when entering the game scene (which is a different scene to the game hub), it’s preloading the majority of assets (I use PoolManager to do this). I recall a while back i preloaded these assets in the game hub (scene 1) so that the majority of the load occurred on start up of the game, and elected not to destroy these assets when moving to the game scene, but i had issues with resetting the values of these in poolmanager - i’ll have to reinvestigate what those issues were.

All my textures are compressed and share atlases - i think at most i have 5 atlases 1024x1024 in size for each.

However, I get the feeling that I have a fair bit of ‘clean up’ work to do now in the way that the game functions, including a loadresources style of function as you mention, and the pre-loading of assets at start up. Was hoping to avoid it! :frowning: Thanks for your chat on this.

StoneFish, I’d be curious if you get a solution for this. I too use PoolManager with about 120 different prefabs, and our load time on the iPhone is around 15 seconds (too long IMO). We also have a lot of audio. On the iPad it’s only about 2 seconds, but on the phone it’s murder. Please post back if you figure things out!

You absolutely do want to use PoolManager, don’t even think about instantiating things if you want to support older phones (3GS etc). Major hiccups whenever you instantiate things, I’ve seen it firsthand.

One thing you might want to do is to load in a very small scene to call before you call your major scene. Have that scene display a graphic for the button layout, tutorial, or maybe a mission objective. Something to look at for 20 seconds is a lot better than 20 seconds of a frozen screen or black load screen. When we first were building our game we had it go from the main menu right into the game. It took about 10 seconds to go from scene to scene but then we just made a simple black scene with nothing in it other than it saying loading(our update has a lot more fansy features in the load sceen). So our load time went from 10 seconds down to like 6-7 but it tricks the player into thinking there not waiting as long if they get off that inital screen quickly into a loading screen.