Gamasutra is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
July 29, 2021
arrowPress Releases







If you enjoy reading this site, you might also want to check out these UBM Tech sites:


 

Slow disc loads

by David McClurg on 12/18/09 11:54:00 am   Featured Blogs

7 comments Share on Twitter    RSS

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.

 

Fun factor takes a hit after 10 seconds of waiting for the game to start.  Long load times also occur when you die or when you take turns in a hot-seat multi-player game.

Here are two reasons why even top games take a long time to load data.

1) Some Assembly Required

This happens when the data we load off the disc is not ready to use.  In this case, either after or while we load it, we have to parse it, allocate memory, and construct things.  For example, a game I worked on had a read-only SQLITE database.  Queries on that database caused thousands of small allocations and multiple disc reads to occur.  Argh!  Please don't tell me we are parsing XML at run time!

The solution is to cook our data in the build pipeline into a "memory ready" format..  This also makes it easy to put the data loading on a background thread because the loader is simple (just read it into memory).

2.  52 Pickup

Another problem is when the game has thousands of files on the disc and loads them on demand in a haphazard way.  When the disc light flashes like crazy I call that the "washing machine".  It usually means the read head is constantly seeking to the next file to read. 

Windows does that alot.  Games should not.  Ideally, we want to load data together in sets and make sure the order we load them is the order they are on the disc.  Or even better, bundle them together, compress them, and load them with a single disc read in a background thread.

Streaming games are pretty much forced to do this.  They have a data set for each room or area and only keep the current and adjacent rooms loaded in memory at same time.  Audio files are almost always bundled into "banks".  I just don't understand why we don't do this consistently for all game data.

 


Related Jobs

Sucker Punch Productions
Sucker Punch Productions — Bellevue, Washington, United States
[07.28.21]

AI Systems Designer
Xbox Graphics
Xbox Graphics — Redmond, Washington, United States
[07.28.21]

Senior Software Engineer: Performance Tooling
Xbox Graphics
Xbox Graphics — Redmond, Washington, United States
[07.28.21]

Senior Software Engineer: GPU Compilers
Mountaintop Studios
Mountaintop Studios — San Francisco, California, United States
[07.27.21]

Data Engineer





Loading Comments

loader image