Skip to main content
edited title
Link
futlib
  • 1.5k
  • 15
  • 20

How to reduce/handle image loading times?

spelled wrong, but changed to a more common word instead
Link
House
  • 73.5k
  • 17
  • 188
  • 276

How to migitatereduce image loading times?

Source Link
futlib
  • 1.5k
  • 15
  • 20

How to migitate image loading times?

I'm working on a 2D game that has very high resolution images (so that things look good on Retina MacBooks and such), and am seeing a noticeable lag caused by image loading.

I notice the strongest lag when I switch to a screen that loads 72 500x600 PNG images - it takes almost a second on a pretty modern system with an SSD. Loading the files from the disk is fairly quick, usually less than one millisecond. But loading the PNGs takes about 5-7 milliseconds each, using libpng.

Now I have two questions:

What are my options for speeding up the loading?

  • Will using sprite sheets help? (My guess is no, since loading times seem to increase with image size).

  • Would it make sense to add pre-downscaled versions of the files and use these on lower resolutions?

Should I load all assets upfront?

My current approach is a bit naive: Each entity loads its own texture as soon as it is instantiated. I can change things a bit to make sure all entities are instantiated upfront where possible, but that seems error prone.

Are there better approaches? I think we'll end up with around 100-200 MB of images, so it might be fine to load them all into memory when the game starts. The best approach I can come up with is to have a huge mapping from image files to image IDs and use the IDs to load images in the code - then I'd know all the image files upfront. Or should I shy away from loading everything upfront if I can speed the loading up until it's unnoticeable again?