In a similar vein to The Blurries, stuttering, or hitching (as it is commonly known in the first person shooter communities) is another topic of interest and frustration amongst Flight Simulator users.
Stuttering is similar to the blurries, in that the blurries are commonly caused by a lack of time during the frame to get some other work done, but with stutters the problem is that the work has to be
performed in the particular frame (or series of frames), so the frame rate drops and the visual aspects of the simulation “stutter”.
So what's going on?
I'll assume for the purposes of this post that the computer is up to the job with reasonable performance and that you're not running an Instant Messenger client, email, web browser or any other application
on the system that periodically may hit the network, perform some CPU intensive task or just lock the machine for a while.
I'll also assume the machine is free of spyware and viruses and that it is setup optimally. Personally I recommend taking a look at Autoruns from Sysinternals to make sure the machine isn't also running a bunch of stuff “helpfully” installed by other applications.
OK, so we've got a clean, fast machine and we're still getting stutters. What's causing them?
Flight Simulator does as much as possible to make sure that stutters do not occur, or that the impact is as small as possible. Our performance test suite of machine runs multiple flights and
scenarios on a wide variety of machines, tracking frame rate and variation in that frame rate. Stutters get caught by this and we aim to mitigate them.
A lot of work that can cause stutters, such as all loading of data from disk, are moved to a separate thread where they happen asynchronously. We perform tasks on fibers (as described in The Blurries), balance texture loading to the hardware, and generally try to do the right thing.
But, we're human, and the application is dynamic (especially with users adding in add-ons), so we miss some stuff.
Some things that can be happening:
- Fiber jobs running too long and busting through their allocated time slice. Remember, this is cooperative multitasking - they have to play nice.
- We upload textures to the hardware once per frame and limit the amount of data we'll transfer based on the performance characteristics of the machine. The limit may be wrong, or boosted too high by users aiming to mitigate The Blurries.
- Something just took too long to run… This is the problem one and difficult to nail down.
And time for a mea culpa of behalf of the team. Remember that I said that all disk access was performed asynchronously? Well, that is true except for one case in FS9 - audio.
When we need to play a sound, that sound is loaded there and then. If it's huge, then it could cause a stutter - such as when your wheels hit the runway upon landing and we want to play the wheel noise audio… Ooops. Sorry.
What can you do about it? Well, the short answer is “ask Flight Simulator to do less”. I know that might sound flippant, but things like rapidly changing views, pushing too many textures on a machine with low bus speed and/or restricted video memory, and generally overloading the application will cause issues.
As for the audio issue? Well, you might delete the touchdown sound from the aircraft's sound config file (I can hear screams from the aircraft designers now…) or reduce it's size.
With that out of the way, and in conclusion, it's important to recognize that we hate the problem as much as you do.
But it's also important to realize that we model the entire planet. It's just not possible for us to load up an entire “level” and have it sit resident in system memory. It's also not possible for us to preload all needed textures into video memory.
Even when a lot of games perform this shortcut, you'll still see them stutter with lots of explosions and other stuff going on. It's a hard problem.
Having said that, even though the problem is, by definition, practically impossible to solve with finite resources, we do treat it seriously and work hard to mitigate it.
Reducing stutters is as important to us as having a high frame rate.
Perhaps more so.