Sponsored By

Featured Blog | This community-written post highlights the best of what the game industry has to offer. Read more like it on the Game Developer Blogs.

Coding "To The Metal" is a dangerous ideal.

Let's start this new console generation by ditching our bad habits and learning to love high level API's.

Simon Roth

May 22, 2013

4 Min Read

Edit: It seems a lot of people have really taken this light hearted jab the wrong way, and quite a few others need to perhaps actually read the words that I have written.

This article is not a technical discussion, but one of a business point. People are losing money and shipping games late. Platform specific code is expensive and often thrown away. There will never be another console requiring the amount of fine tuning as the PS3 did. Pushing the limits of hardware is important, but it is an ideal. Something that we should reconsider when we are in an industry of constant layoffs, crippling budgets and failed projects.

The new console generation has reared its ugly, ugly head and the misinformation has come out swinging. Any moment now a "veteran developer" will wander out into the blinding light of the PR storm and start to make bizarre comments about how games development would be far better if we were closer to the metal of the console. If only they had more direct hardware access and less API's choking their creativity.

They mean well, but the excitement of the moment has left them dazzled and confused. The grunts in the trenches, the people actually making games, do not want this.

I am not a clever man. I am however, a pragmatist. And, I am tired of this silly fetishization of doing shit the hard way.

I can see the attraction, the raw speed of blitting to a hardware framebuffer, the power and convenience of direct memory access, it's carnal, sexy, badass. But it doesn’t ship games.

Low level code is worthless..

Firstly, it's a maintenance nightmare. People working on the code will require an acute knowledge of the target platform. That's not something we have time for anymore. Nobody has time for that anymore. Not AAA nor indie. Specific hardware expertise is hard to find and is, more often than not, expensive. Learning to work with a unique machine, especially towards the end of it's cycle is demoralizing for lots of developers. (Anyone who has put their back out recently whilst trying to throw a PS3 dev kit through a window knows what I'm talking about) Some will rise to the challenge, but nobody who likes sunshine or fresh air.

My second, and perhaps more important point is that it locks you to the hardware. Even the laziest beatnik indie outfits are multiplatform nowadays, code has to be portable. Really portable. Even a project built for a single specific platform can find itself deployed on an entirely different architecture at a moment's notice. Opportunities come and go fast, if you can't deploy a vertical slice within a week, you might find yourself out of the game.

Maia Game

Every Maia milestone lands on 2-4 platforms.

In my opinion, Direct hardware access is a bug. It's not the nineties any more and you shouldn't be able to accidentally brick a machine with a few junk pointers. I don't trust my drivers, but I trust them more than a bunch of overworked developers in their thirtieth consecutive week of crunch.

Moreover, it is so often just a security hole waiting to happen. Modern day gamers, be they on phones, tablets, Windows, Linux or even the smelliest of consoles, will have passwords, personal data, perhaps even credit card information on their machines. Software can never be fully bulletproof, and security comes at a price: We need to start planning for more layers of abstraction, with higher latencies and overheads.

If you have time to spare, or programming resources to allocate, you should be working on your tool set. The largest cost in games development this generation will be artist time. Sit down with your artists and ensure they have the tools they need to do their jobs to the best of their abilities. Your audience probably wont care that you got a 2% performance increase with some nasty low level hacking, but they definitely will care if your game ships half a decade late because of the development hell you're heading towards.

I've found that when you accept that squeezing blood from transistors is bad programming, and bad business, you focus on the more important things. Last week I shipped an early alpha of Maia to backers and am currently deploying our latest milestone to three platforms simultaneously. The API's I use to do this are are slow, bloated, have terribly latency and have an abysmal memory footprint.

And I fucking luv 'em.

Maia Alpha 0.25

Maia Alpha 0.25

Read more about:

Featured Blogs

About the Author(s)

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like