Are games the most complex / impressive applications?

Air traffic control systems are fault tolerant, safety critical, high availability, and distributed. There is no downtime ever, the system must run 24 hours a day, 365 days a year, even during system upgrades. There isn't really anything that is terribly computationally complex (no AI for example, because you want the system to be predictable), but from a system standpoint there isn't much else that has to run at that level. Even space mission software only needs to run as long as the mission does.


Games certainly cover a very wide breadth of computing technology, from hardware optimizations to databases, AI, advanced maths, you name it.

It's hard to establish a benchmark for complexity, I'm not sure if any actually exists. If you think about it, things that are trivial to us today were really hard problems to solve just a handful of years ago, so complexity is a moving target and we're all building on top of it.

If we had to analyse what is involved in just reading your question, the vastness of the problems to solve are staggering: imagine the complexity of the software that were used to manufacture the electronic components for your machine, my machine and all the other machines in between.
Imagine the amount of complexity involved in getting computers to pass around information to each-other reliably.
Imagine what it took for the OS to manage all this hardware, for the browsers to evolve to the point where they can display complex layout information on screen...
All this is staggering to me.

You could point to a particularly complex application, but if you think about it, there is probably always another one that looks simple enough on the surface but can be viewed as even more complex when you take everything into account.


I've worked a bit on the code for one of NASA's sattelite ground stations. The system's job is to electronically keep track of, and control all of NASA's satellites. It might not sound like much, but if a system crashes while you are in the middle of commanding a satellite, you can send billions of taxpayer dollars spinning into the sun. So the fault-tolerance and redundancy built into that setup would make Blizzard jealous. IIRC, there were somewhere in the neighborhood of 50 servers, the more important of which have a hot spare ready to take over in less than a second if the primary fails. Each one of those systems in turn has a redundant pair of systems ready to take over if both fail. I have yet to see any game as complicated (or impressive, in its own way) as that.

Each one of those ground stations interact with each other in realtime (both electronically, and via human interactions), along with all the sattelites themselves of course, and the shuttle when its up there, and various ground terminals that process orbital data, and could thus be considered mere parts an even larger and more complex system, which NASA calls TDRSS. Here's a very conceptual diagram I found online:

alt text
(source: nasa.gov)

The "White Sands Complex" is physically located in far southern New Mexico, near Los Cruces. As you can see inside its block, there are three entire ground terminals like the one I described, all networked together and to the the sattelites. Plus there are two more remote ones (I'm not sure where they are).


Short answer: No.

Long answer: Games actually aren't all that complicated. It depends on what you're talking about when you say "games" but the two contenders for most complex games would be 3D games and online games (particularly massively online games).

The complication in 3D games comes from taking a model of a world and rendering it in 3D and to have it behave in a "realistic" (within the rules of the world) way. Creating a visual and auditory environment from that isn't actually that hard. It's pretty much all linear algebra and is a mature field of computer science.

The real trick comes in making that process performant in real-time. Over the years game programmers have had to make a LOT of tradeoffs between realism and performance (eg if you can make a performance algorithm that'll generate realistic looking trees that's actually worth a lot of money). So games have naturally gotten better (visually) over the years as computing and graphics power has increased.

Now some game programmers have made real innovations in this field that have (rightly) earnt them a lot of money. John Carmack (id Software: Doom and Quake) and Tim Sweeney (Unreal) spring to mind.

The real cost however in making games is the content. Just go look at the credits for a modern FPS (first person shooter) game and you'll typically see as little as 6 programmers but there'll be 30-50+ artists. Content isn't complex (from a software point of view). It's just time consuming.

As for online games, I remember when Everquest came out and people raved about how hard it was. Bzzzt, wrong. For those (like myself) who were familiar with the development of MUDs (mutli-user dungeons) through the 90s (and possibly 80s), architecturally an Everquest server wasn't that complicated.

Same goes for World of Warcraft or any of these other games.

If you want to talk about complex, how about the Windows XP operating system these things run on which has an estimated 40 million lines of code? God knows how many Vista has. Or what about the Linux kernel?

Now in government, the military and the private sector you'll find other applications that have literally thousands of man years invested in them.