Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I use X-Plane for my question but it also concerns probably every other flight-simulator or simulation game in general. When developing a plugin what bothers me most is the startup-time of the application to test my plugin functionality so I was wondering how I can improve the startup speed of the simulator.

First I removed all additional scenery and reduced the loaded files to a minimum which gave me a startup time of 34 seconds which is quite fast already. To improve the time even further I thought it would make sense to run the whole application from memory and I installed ubuntu 64-bit and created a 2GB tempfs filesystem in memory (ram-disk).

When starting x-plane from this memory file system it still takes 30 seconds. Can anyone explain what the application does during startup which needs so much processing time?

I assume that the graphic bitmaps for the object and the environment are compressed on disk and therefore they have to be decompressed in memory first before they can be used in opengl. This would explain the time spent on startup.

If it is true that the bitmaps need to be decompressed first would it be possible to improve the time by using multiple cores? If the application is multithreaded and there are four cores would the time be divided by four or does this processing happen on the GPU?

Any explanation which helps me to better understand the startup-process of a computer game is really appreciated because I'm interested in improving the overall performance of the system and therefore I need a better understanding of the bottlenecks (RAM, CPU, GPU, Disks (SSD/Raid), OS, libraries, ...).

share|improve this question
add comment

1 Answer

What you need to do is use a profiler to analyze where the time is going. All games are different and there's no generic answer to what they might do during startup other than loading data off disc and preparing it for use.

However some common ways to optimize startup time are:

  1. Organize the data on disc into a single big file, that contains everything you want to load in the order you load it (or as close as possible if the data that's loaded varies). This minimizes the number of seeks required which can add up quickly when you're loading lots of small files. This is less important when you're repeatedly loading the same game though as the O/S disc cache should optimize this for you.

  2. Move CPU work from game startup to a data preprocessing tool. That means what you're loading off disc will then require minimal CPU work to get it ready for use. Concentrate on the most time consuming data to load first (based on the profiler results).

share|improve this answer
    
While what you say for point 1 is true in the general case, in this specific case he's running from a ram disk so I doubt seek time is a significant factor. Either its doing a lot of processing on the data it loads, or its doing something dumb (e.g. stalling the main thread with a blocking network operation), as you say a profiler is the best way to find out what's happening. –  BpHinch Jun 27 '12 at 15:45
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.