Friday, 4 February 2011

10 Tips for the lonely programmer

On the original version of Swords & Soldiers for the Wii, I was the only full-time programmer in a team of 7 developers. On average, there was also 1 programming intern around, but still, this means that the number of programmers was really low. Especially if you consider that this was our first console game!

When working in such a situation, you really need to think smartly about what you make and what you don't make, and plan your entire programming routine around this.

I think about these kinds of problems a lot, so for a presentation at the Festival of Games in April 2010, I boiled my ideas down to these 10 tips for the lonely programmer. Obviously, this is no rocket science, but I think these guidelines may help young gamedev companies and student projects.

It's better to get it working quickly and then add stuff, than to get stuck with more than you can chew. Especially since everyone overestimates his own coding speed.

For example, do not try to tweak the walking speed yourself. Make sure a designer can do this.

Emphasis on the word minimal. Make sure to create something so that levels can be designed and such, but also make sure to not waste half your project making more fancy tools than necessary. Notepad is a perfectly fine level editor.

Keep your code clean at all time, even close to deadlines. Once code becomes a mess, everything you add will also be a mess.

The more bugs and crashes your game already contains, the more difficult it is to see whether what you just added is broken. You will need to fix those bugs at some point anyway, so just do it righ away and keep your game stable.

No need to compete with Uncharted 3. Don't spend your time optimising for the ultimate performance. Instead, focus on making the game good and accept that maybe some computers won't be able to run it.

There are a lot of rules about good programming on the internet. Many of them are a lot of work and not necessary for a small project. For example, it is totally okay to not build your own memory manager and it is no problem to do lots of dynamic allocations in run-time. Just do what works for you.

This is not for student projects, but for start-ups. Interns love to work for real games. Don't feel ashamed if you let an intern create some awesome tools for your project.

Say "No" to almost every idea you hear, especially closer to deadlines. To keep the game concept simple, you will have to protect it from getting bloated. If there is time left, you can always add stuff later.

Game designers and artists depend on your work, so be sure to involve them in why you choose to build some things instead of others. Ask them simple questions, like this one: "I don't have time for option A, but either B or C can be done. Which do you want?" Involving them makes them less frustrated at hearing "no" so often. Otherwise you may end up like this:

Feel free to print these 10 tegeltjeswijsheden and hang them on your wall, and refer to them at all times.

Also, feel free to tell me these are all incredibly obvious. ^-^

PS. For those who expected dating tips after reading the title: that is not part of my field of expertise, so you will have to look elsewhere for that... ;)