We are making a game about manipulating large crowds in dense urban environment with a significant degree of interaction between the two. Anarkia is going to require some muscle from the host platform if we are going to realise the full extent of our ambition for the game. Our intention is to provide the widest possible audience with an experience that will wow, so we have some finely balanced judgements to make.
Two things that need saying right away:
1. This is a game to be played by you on mainstream PC’s available here and now, so we will not be writing off huge sections of our audience purely because they don’t own a supercomputer.
2. No decisions have been made. We are in the process of testing different technical solutions to game design requirement, and will consider a range of hardware as we do so.
Those caveats aside, what are the technical challenges we face?
For one, we aim to create sizeable chunks of living cities in sufficient detail that they retain their authenticity even when you have zoomed in admire the rage-face of your howling anarchists.
This means people will have to move and look like people, even if you won’t appreciate that when ruling your macro-riot from the heavens. Likewise, cars will have to move and burn like cars, and shops look and burn like shops, etc. However, there are numerous existing technical solutions to these problems already: The Mecanim character animation system for animating crowds in Unity4, Level of Detail techniques to keeps things both pretty and fast at different levels of zoom, and various methods of culling unseen geometry which will be very handy when drawing a detailed city environment.
No, the real technical challenge is moving hundreds of people around a complex environment in a manner that is fluid and dynamic, closely mimicking crowd behaviour as we see it in the real world: Hundreds of semi-autonomous people that must perform collision detection calculations between themselves and other people, static environments like walls and active objects like barricades. Once a collision occurs how then do they react to it: Do we have a simple reorient-and-continue parameter or a full physics calculation for every moving object, or perhaps a mix of the two solutions?
Also influencing these high-level games design questions are two further parameters:
1. Internal – How different implementations vary in performance. For example; why does the internal Unity collision detection grind along at three frames per second, when the PhysX alternative bounces off the vsync limit of 60fps? Or, why does the rigid body simulation perform at the vsync limit of 60fps when testing with seven hundred objects, but drop to 15fps at a thousand?
2. External – Hardware factors that determine performance. For example; Why does James six-core desktop show four times the performance of Julles dual-core macbook in one test, but only double the performance advantage in a second test? How much of that difference is down raw hardware factors such as a speed, cores, or SSE instruction set versions, and how much is the result of running one via OpenGL on a Macbook and the other via DirectX on Win7?
So when I say that this is all in play right now I really do mean it.
While those high-level questions are simply going to require the brute force of our programming geniuses mad skillz, and the same might be said for the internal parameters, we do at least have the Steam Hardware survey to help with the external factors.
What is mainstream hardware these days, and what can we safely discount?
40% of people have four physical CPU’s, while 48% have just two. Half the remaining 12% have just one CPU, and the other half a three or more.
18% of people use a display resolution of 1366×768 and a further 7% use 1440×900. Both of these are very typical resolutions for notebook computers.
10% of people use Intel integrated graphics, which is a shame because if it was closer to 25% it might have inferred a strong correlation with screen resolution and the percentage of two CPU computers as cheap notebooks.
That only a tiny fraction of Steam users use a primary display resolution of 1024×576/600 tells me that precious few of those dual-core Intel-integrated GPU PC’s are netbooks. Thank the heavens, for we’re pretty sure that an Intel Atom CPU isn’t going to be able to run the complex crowd calculations Anarkia will require!
We have an old’ish four-core CPU computer that we have done some preliminary testing on (an AMD Phenom II X4-920 if you are interested), and we are absolutely certain that this will be able to run Anarkia. We also have a less common three core available to test on (an AMD X3 450), which I am quietly confident will be up to the task. The focus of our testing is really going to be on those dual-cores CPU’s (presumably many of them are notebooks), to see whether we can realise the full extent of our ambition for the game on this level of hardware.
It is quite possible that high clocked Intel “Core” architecture dual-core CPU’s will be able to run the game just fine, but there is a lot of testing to be done before we can be sure.
We will keep you updated.