The release of APB’s hardware specs last week reminded me of something I’ve been meaning to write about for a while: memory limits. APB’s limits (2GB minimum, 4GB recommended) was the most interesting part of the spec throughout development for me. 2GB was always a hard upper limit, because we absolutely have to run on 32-bit operating systems (more on that later). But 2GB was challenging, because APB is unavoidably memory-hungry, thanks to its customisation system. We’ve always aimed for 100-ish characters in an action district, each with their own unique character and vehicle. The customisation is such a cool feature of the game that we obviously want those assets to be high quality. Now 100 unique, high-quality characters and vehicles have an inherent memory overhead, and it doesn’t help that we have to generate them at runtime in the background of an action game, precluding the most CPU-intensive asset compression and optimisation techniques.
We also made the decision to stick to 32-bit XP for most of our development cycle. It was probably a very good idea in forcing us to keep memory under control throughout, but it also meant we were constantly bumping up against the limit, in contrast to other hardware specs where we were able to develop on high-end hardware and leave optimisation for the minimum spec to near the end.
Ditching 32-bit is not an option, yet
At some point, a game is going to make a 64-bit OS part of its minimum spec. But when? 64-bit hardware is old news; Core 2 Duo dates back to 2006 and Athlon 64 back to 2003. It’s the operating system that’s holding us back. Take a look at the Steam Hardware Survey – at the time of writing, they have:
- 34% using 32-bit XP
- 25% using 64-bit Win7
- 15% using 32-bit Vista
- 11% using 32-bit Win7
- 7% using 64-bit Vista
Operating systems are by far the oldest component of people’s machines: on the GPU front, the most popular models are from 2006-2008, and on the CPU side, while the stats are less explicit, nearly 75% of users are on multicore systems (assuming that “physical CPUs” means not counting hyperthreading as 2), which implies they’re at most 4 years old (ish). My take on this is that:
- Most people have machines that are up to about 3 years old, and have not changed their CPU since buying
- A fair number of people have upgraded their system to a newer GPU
- A large number of people chose to stick with XP over Vista
The failure of Vista is particularly apparent in these stats. Firstly, being perceived as worse than XP, people avoided upgrading and in fact actively downgraded on new PCs where they could. Secondly, by having terrible driver problems in its 64-bit edition early on, most retailers installed the 32-bit edition. Vista ended up not so much transitioning the world to 64-bit as taking the teething problems on the chin. The good news is that those driver problems got resolved over Vista’s lifetime, and Windows 7 has mostly been installed in 64-bit form.
Clearly, you’d be insane as a business to ship a game as 64-bit only, today. But it looks likely that Windows 7 will be dominating in 2 or 3 years’ time, and maybe, just maybe, we’ll see a pure 64-bit game around then. The potential stumbling block is the 11% above on 32-bit Windows 7. This is pretty worrying. Are these people who’ve installed Windows 7 but have an old 32-bit CPU? Or a netbook running a 32-bit Atom? Upgraded themselves and made the wrong choice at install time? Stupid retailers? If we end up with 30-40% of the market needlessly running 32-bit Windows 7 on 64-bit hardware in a few years time, that would be a great shame.
As a final note, these stats are for reasonably hard-core gamers; the Unity hardware survey gives a sobering summary of a more casual market. There’s no end in sight for 32-bit apps there!
Memory usage through the ages
Let’s look at all of this from a different angle now: when might game developers want to be purely 64-bit? When will games need to use more than 2GB of memory? I put together a quick script to suck all the hardware specs from this site, and graphed them over time. Unfortunately, these are recommended specs – I couldn’t find a good source of minimum spec data (if you know one, please leave a comment). I’ve highlighted a few random favourites, games that pushed the state of the art when they were released – and I’ve also highlighted the games that broke new ground and recommended more memory than anything before them:
Unsurprisingly, those state-of-the-art games tend to be at the forefront of requiring more memory than anything before. These are the games that are confident enough in their quality to demand that gamers upgrade their PCs! You may be wondering why I highlighted Battlefield 2 as the first game to recommend 1GB of memory, as there are a few data points to the left. Those data points make an interesting sequence: Second Life, Everquest 2, City of Heroes, Guild Wars, and World of Warcraft. I didn’t highlight them because it’s not clear whether the data is for their current recommended spec, or the spec on their original release dates. Whatever the case, that was quite a golden age for online game releases!
I can’t wait to see the first breathtaking, groundbreaking game that says “I demand 64 bits; I’m worth it”.