The Programmers – Part 3
Today’s victims of answering our programming questions are Alen Ladavac from Croteam (Serious Sam) and Smarty Man Game designer Derek Smart from 3000AD (Battlecruiser Millennium)
How did you start in the gaming business ?
Alen : I moved over from the Amiga demo scene.
Derek : I kinda just dropped in. I was green, clueless and had no idea that you actually got paid for this shit. Once I played a few games and started on my own over ambitious designs, it just kinda took off from there. The only thing that’s changed is that I’m no longer green nor clueless. However, it still amazes me that some bastards actually get paid to do this shit.
What’s first ? The idea for an engine, or the idea of a game ?
Alen : If it only was that simple… It takes a lot of combinations, trials and errors and lot of right decisions at the right times. Software development is always a cyclical process. You start from something and you develop it towards its final result, which usually is not exactly clear in the start.
Derek : For me, the idea comes first. Once you get that squared away, you can figure out the technology aspects. Of course, this can be taken on a case by case basis. e.g. if you are going to do a first person shooter, then you know that you can either develop the engine, or license one, depending on priorities. For my Battlecruiser games, all my technologies are developed from the ground up and I’ve never had to license any engines.
How do you start on programming for a game ?
Alen : From scratch, if you’re lucky, or building upon your previous code, or on someone elses previous code. From my experiences and from what I can gather about the situation in the industry, usually you are not lucky, since you have too little time to start from scratch. And this is not the case only in gamedev, but also in entire software industry. Unfortunately. Anyway, I digress…
Derek : Thats the easy part. You just start with a blank MSVC project and go from there. Of course, you need to have some design doc outline. And if you are working with other people who also have modules that you are working with, you have to ensure that everyone is in the synch. Its like writing a book – you start with a blank page, and start scribbling.
What programming language do you use for making/modifying an engine ?
Alen : C/C++
Derek : It depends. Most third-gen engines are built on C/C++ and only a few are in Assembly. For me, all my third-gen engines are in C++. The core of my AI engine is in a language that I developed from the ground up
What the most difficult part about programming a game ?
Alen : Adding new stuff and changing everything right after you have implemented your perfect new design, which proved to not satisfy the people working on content, since they cannot do all the neat things they want to. And, of course, the fact that they just couldn’t possibly know in advance that they will be wanting all those neat little things. And when you finally manage to adjust the design to the new requirements, the requirements change. And I’m not beeing sarcastic here, it really is the way things are, they will probably never be different, since we hit completely new grounds in each step.
Derek : You don’t ‘program a game’. You program a bunch of modules, either independently or in co-op with others, which then make up a ‘game’. So, the difficult part is not in any one specific area. It can manifest itself in a lot of areas, and sometimes even in the game content (models, sound, specialfx etc).
What do you like most about programming games ?
Alen : Well… dunno. Just like it. Perhaps the fact that it is so hard and that it requires knowledge from so many different areas. A gamedev programmer has to know most technical details from sound and graphics, through AI, network architecture, operating system, the way that the hardware functions etc. It is never boring and you never know enough.
Derek : Seeing a cool idea work. For me, its usually AI. I’ve seen all manner of graphics glitz over the years, having been around for so long; therefore, my interest is in actually seeing the low level stuff come out well
What is the ultimate goal for a programmer ?
Alen : Making a bug-free program that is delivered on time, works with optimum performance, has reasonable resource requirements, is simple to use, easy to maintain… stop me if am becoming boring. There is no one goal, that is why it is so complicated and so interesting. You cannot have everything – so you have to make wise choices.
Derek : It depends on the programmer. For me, its getting the damn game done and not losing your sanity in the interim. The most important aspect is to ensure that the folks in the team can get along with each other long enough to
complement each other co-operatively. One flake in your team, and you’re fucked. No matter how good the bastard is
Any last comments on your job for future game programmers ?
Alen : It doesn’t make sense planning to be a game programmer. When it hits you, you won’t even know.
Derek : Take up farming. Its less stressful. Working with dumb animals is better than dealing with the ones in marketing (or some in a team you’re landed with) who just like to think they’re smart