Some thoughts on FSX performance

Microsoft Flight Simulator X (hereinafter referred to on this blog as FSX – my fingers are tired already) was released in 2006. That’s an age in software terms. If you follow these things, you’ll be aware that there won’t be another version of FS any time soon, since Microsoft let most of the developers go and closed Aces Studio, the division that housed them. Notwithstanding the general tendency to deprecate all that is more than six months old in the software business, FSX is certainly no longer state-of-the-art.

And yet – do you know anyone who owns a PC that could run FSX, sliders maxed, at 30fps anywhere in the simulated world, maybe with third party scenary loaded up? Like hell you do. Because it can’t be done. FSX will choke on even the fastest machine you can find if the amount of detail on the screen is large enough. It’s not your graphics card that’s the problem; FSX won’t use the full power of modern cards, even with DX10 ‘preview mode’ turned on. Your graphics card is almost certainly fast enough. All spending more will get you is the ability to turn on higher anti-alias levels.

No, FSX is CPU-bound. It wants to do more in a second than the fastest processor you can buy – Core i7 included – can manage on a single thread. Despite some recent updates in SP2 to put those few bits of behaviour that can easily be made asynchronous within the existing architecture on separate threads, the vast majority of the code that runs in FSX runs on a single thread and hence cannot use more than one core of your super-fast multi-core machine.

In practical terms, this means you’ll never manage to max FSX out.  Unless Intel or AMD changes its mind, invents some serious new technology and pushes its processors reliably to 7Ghz, it’s just not going to happen. You can tweak and play all you like, and certainly you’ll see improvements and changes and this can be loads of fun on its own, but you’re not going to get to land in a fully-detailed replica of New York with a full traffic pattern at 30fps. If you’ve managed this feat, I’d love to hear how you did it.

This somewhat depressing state of affairs is why a number of cockpit builders are sticking with FS2004, nearly 6 years after it was released. True, it’s not quite as spankingly gorgeous as FSX in the visuals department, but it’s still pretty, there are plenty of add-ons still available for it, and it runs flat-out on modern hardware. What’s not to like?

Why is this the case? Why is FSX so more demanding than, say, Crysis, that notorious system-killer of yesteryear? Not being an expert in games programming I can’t give you a detailed technical explanation, but a few answers spring to mind. Most games feature a much more limited field of view and operation than FSX, where the visual territory may stretch out for many imaginary miles. ‘Beyond the horizon’ in Crysis is most likely just a texture. FSX has to deal with a bucketload of 3D objects (in dense scenery areas, many more than your average FPS), run the flight model for your plane and the AI traffic, run convincing simulations of instruments and glass cockpit panels, and is not using the GPU for most of these calculations.

The FS team was notorious (in a good way) for reading the crystal ball of Intel and AMD and figuring out how powerful PCs would get within the peak lifetime of each version. Then they coded it to max out on hardware that would be state-of-the-art a year or so after it came out. This let them put many whizzy features in, but earned them scorn at release-time when simmers found their current hardware just wasn’t up to the job. The problem is, they anticipated – as did most at the time – that processor speeds would keep getting faster, past the 4GHz mark and beyond to 5GHz territory. They bet the farm that a single thread would be able to do significantly more than it could in 2004 by 2007. And they were wrong. By the time they realised they were wrong, they were way too late to do anything about it for FSX. As I understand it (which I admit is far from perfectly) they were planning to do a big-bang rewrite for FS11, and this may well have progressed some way when Aces was canned, but will likely never see the light of day on the PC platform.

You could undoubtedly re-write FS from the ground up to be inherently multi-threaded, and take advantage of all that power going to waste. Imagine each AI aircraft, each major piece of the landscape, the weather systems as separate threads, coordinating in real-time to make it all happen. It’s certainly possible. If you’re a programmer, you’ll probably recoil from the idea of all that concurrency, and with good reason: it would be decidedly non-trivial to do, let alone debug. Maybe someone will do it anyway. I hear rumours that one of the major FS add-on vendors is considering building a new sim from the ground up, but it’s an expensive prospect for a market which – while certainly not tiny – is not entirely mainstream. We live in hope.

One thing that does help, perversely, is adding more PCs. With FSUIPC and WideFS you can create a synchronised network of computers running FSX concurrently. If the PC connected to your main display is doing nothing but showing the front view, there’s a whole load of CPU time saved not rendering instrument panels and other views. Each main view has its own PC, the instrument panel screens have their own PCs (maybe one per two screens) and then add a couple more to run all the USB-connected peripherals. The sum single-threaded CPU power available from this network is much higher than from the fastest single PC running FSX on one thread. The flight experience in a home cockpit context should be better in performance terms, as well as realism terms, than the best single PC setup.

Meanwhile, Austin Meyer’s excellent X-Plane continues to improve by leaps and bounds. I’m no expert on its technology or architecture, but it certainly doesn’t seem to be butting up against the same limits that FSX did. Sadly, however, it’s seemingly not really ‘open’ enough for cockpit-building purposes; so far, at least. XPUIPC and WideXPlane can’t be that far away.

It’s going to be a fun few years.