The blog & portfolio of Matthew J. Rogers

Hardware constraints breed software efficiency

October 1, 2008

During a London event pimping the upcoming military/monster/undead bloodbath game Gears of War 2, developer Rod Fergusson from Epic made a remark about the Xbox 360 having reached its graphical limit. Some thought he meant that nothing else could be done with the platform, but what he was really referring to (as clarified later by Epic colleague Cliff Bleszinski) was that developers had to find creative new ways of taking advantage of what the 360 provides, because they’re not going to get any more processing power or memory. Bleszinski cited the Super Nintendo’s life cycle, during which game graphics continually improved despite a series of apparent plateaus.

The point is that a fixed platform, like the Super Nintendo, Xbox 360, and every other console, forces developers to work within their hardware restrictions with no expectation of any flexibility or improvement. While this may be obvious, the contrast between development for game platforms and PCs makes for some interesting observations.

The comments by the Epic developers brought one issue to the forefront: that console developers are way, way more concerned about squeezing every last drop of performance out of their platforms than their PC counterparts. When writing software for a PC, developers know that by the time they release PCs will be even more powerful than what they’re developing on. Time spent optimizing will often get sacrificed on the altar of earlier release dates, because throughout the product’s life cycle PCs will continue to get faster and faster.

The Xbox 360 is 3 years old, and there are still new games coming out (like Gears of War 2, and Far Cry 2) that graphically put earlier titles to shame. It’s the same hardware; nothing has changed except that developers have gotten much better at taking advantage of what’s there. Compare that with a PC from three years ago; software doesn’t get better at running on that old computer, it just gets worse. Not just games, but even mundane stuff like Microsoft Word will get harder and harder to run on that machine as new versions are released. Obviously at some point the hardware has to advance to open up new opportunities for software developers, but the rapid pace of PC technology has, in my opinion, resulted in a vicious circle: out-of-control software bloat causes people to buy faster computers more often than they should have to, which in turn gives software more room to be sloppy. Right now my Mail app is taking 100MB of RAM. What is it doing with all that? Email is just text!

What would it be like if some sort of backward pressure existed in the desktop development industry like it does for console games? I’m not against faster hardware, so I’m not sure what could provide that pressure, but I sure think we could make much better use of our computers if the same devotion was made to efficiency there as it is for game consoles.

Similar posts

4 comments

  • You bring up some good points, and some interesting questions.

    If you look at everything your e-mail client does, you realize that it’s doing a lot more than just text. It basically has to have an HTML rendering engine embedded in it so it can read today’s e-mail’s (who uses text only e-mail’s anyways?). You can also sort the e-mail in any arbitrary field in any folder in a second or two, which I doubt you could do with older e-mail clients. Just look at every feature that your e-mail client has in its options dialog, I’m sure you’re going to be very surprised in how many it has compared to e-mail 5 years ago. And grammar / spelling corrections? Those have only improved in the past decade which adds to a memory footprint.

    Sure, I’m not saying that it has to take as much memory as it is, and I completely agree that if we were in a fixed hardware platform, it would probably be taking up less memory and less CPU power. The problem is, is that the PC market demands new features – not better performance. So when the business folks look at the cost of improving performance vs adding new features, it’s a no brainer to them that they need to add new features.

    You make a good point of PC developers vs game developers, but I’d argue it’s from experience. I’d argue that PC programmers are more experienced in creating software that can adapt to new requirements, and at making the architecture as flexible as possible. For a lot of long-living applications, we have to live with a product that has 10 years of legacy code, so when we write new code, we better be sure that it’s being architected correctly.

  • Logan, I agree that the email client is doing a lot more than just displaying plain text…I admit that was an overly simplistic example. It seems you still understood the point I was trying to make though.

    I’m not slamming PC developers (and in this case, PC = Windows/Mac/Linux, any “normal” computer architecture), I was just pointing out the nature of the business. The priorities of the two camps seem to really differ, and I wanted to raise the question of what it would be like if PC developers were allowed to devote the same amount of effort to efficiency as console devs.

  • Matthew you are absolutely, unequivocally RIGHT!!! I have been yelping this for years. PC’s should be able to do so much more than they do graphically now, but it’s just bogged down by sloppy programming. The only way to get great performance out of a PC game is to play it 2yrs later on a new PC, or spend $2,000 specing out a machine for ‘games’!???

    I have a quadcore Intel PC with and Nvidia 9600 card, but is it great for gaming? More like so so. My XBOX 360 rocks though ;) hehe. So no complains.

    PC for work, XBOX for games!

  • …but you’re right in your general premise. Console developers know that this is ‘IT’ for the next ~5yrs.

    The Xbox 360 will ‘not’ get any faster, neither will the PS3, or the Wii. So they become ‘BETTER’ at maxing out every bit of performance, and yes ‘trickery’ and ‘ingenuity’ to get the systems to run faster.

    Sometimes they pull of tricks that the manufactures didn’t see coming. (I loved this back in the Amiga days with the demoscenes!)

    It’s a difficult argument for a non-programmer to understand. A programmer/coder knows that there are a variety of ways to get to 2 + 2 = 4. A non-programmer thinks it’s 1 problem, 1 solution. A programmer knows that it’s a multi-dimensional problem with several solutions. How fast can I calculate 2 + 2? Will is scale with other calculations if I have to do this a million-times-a-second? Can I cache this result once and just retrieve the rest of the time? etc. Console developers just simply become better and better at this over the years, discarding inefficient methods as they go along. PC developers (And notoriously enough, WinMobile developers) often just take the shortest route.

    STANDARDS are a big part too. You ‘cannot’ almost as a rule, release a game that doesn’t run at 30-60fps on your target console platform. No one will play your sucky game, period, it will fail. So a lot of work is done to make sure the console experience is smooth. PC Games lack the same standards, and even when the standards are self-imposed. It’s the nature of the beast it seems. For those who can remember playing Wing Commander on a 486, it was the same deal back then.

Leave a comment