Pixars Brave

Game Developer Jobs


Overview of the role of a Video Game Developer
Intro
Getting Started
Games Programmer
Lead Programmer
AI Programmer
Engine Programmer
Tools Programmer

Intro

To come and work in the games industry as a programmer you really, really have to be into games. Just thinking that this is more exciting than going and working on databases or in accounting isn't enough motivation. Too many people have been lured by the false image of young programmers with fast sports cars, and been predictably disappointed. Sure, it can happen, but that shouldn't be your reason for wanting to write games. If you're talented and committed then financial rewards will come, but don't expect to walk into a job earning enormous money with no experience! If you're not interested in playing games, then are you really going to do a good job at writing them?

How long have you been programming? If you're on a course at college or university, do you still program as a hobby? Doing a bit of games programming as a hobby is a step in the right direction. There are lots of resources on the net to help programmers get to grips with Windows and DirectX, and that's a good education in itself.

Chances are you're not going to write anything that'll change the world of gaming as we know it, but that doesn't matter. Write a version of your favourite old arcade game - retro-gaming is hip now and they're generally not too complex to put together. If you can make it play like the original then you'll have coped with the same sort of programming tasks that the original developer did. If you've done a good job, then you have the perfect demo as a foot in the door for interview.

Unfortunately, most programming courses and books don't actually teach you to write tight, efficient code. Sure, the principal of programming and structure gets through, but with no respect for the memory and time constraints that plague the games programmer. There's a huge difference between coding a business application on a PC or mainframe, and writing a game for a console.

Games programming demands the impossible every day, and there's only one way to do this: CHEAT! Now this kind of spoils the magic, so those who don't want to know the score should look away now.

Looking back at video games of the past, there is very little in the way of realism: frogs crossing busy highways, aliens invading earth, American-Italian plumbers leaping over obstacles. But hang on a minute, today's most popular games are just the same, only more so!

And it's the "more so" that's the key. Now, all these games are in 3D, and boast "proper" interaction, "proper" physics and so on. It's all nonsense of course, modelling all these things properly, the hard way, takes way too much time to do, and more importantly more processor power than today's games consoles have. This is when the cheating begins.

So let's consider the notion of a character jumping. At this point we should start doing some really scary mathematical physics equations, probably using some of the laws of motion along the way, perhaps taking into account friction, aerodynamics, wind, gravity, and the weight of the frankly implausible cartoon character trying to jump. However, applied maths and physics is way too much like doing a simulation - this is games, and we haven't got time for that.

Simplify the process, and fool the player into thinking that all the complex stuff is going on, even when it isn't. At the very simplest level, when you want to make your character jump to the right, you're expecting them to follow a predictable, repeatable arc. OK, perhaps if you get a power-up or something you can jump double the height, and double the distance, but it's all pretty deterministic.

In the world of computer games programming, there are a million and one cheats, tricks and clever ways to get around things, and you'll find that you learn something every day - this industry grows and changes so rapidly that you just don't get time to rest on your laurels. The machines you're working on and, more importantly, the machines you're programming FOR, are changing all the time and you can't afford to get left behind.

You also need to be creative, sometimes painfully so - the idea that programmers are dull, unimaginative types couldn't be more wrong. If it needs doing, and nobody else has done it yet, you could find yourself inadvertently pioneering some new area in whatever-technology.

All of this may sound terribly depressing, but the last thing you should do is dive into an industry (particularly this one) half-cocked. There are, of course, great amounts of fun to be had - even when you're up until 5:30am coding a text parser. The feeling of having created something that other people enjoy, and actually playing your game at the end of it just can't be beaten. On top of this, the ability to turn up to work in a t-shirt and listen to music while drinking cola is a definite bonus. So, if you think you're up to it - the effort, the dedication, the fun and the late nights, read on...

Getting Started

A really good way to get started in programming is to check out a package called Blitz Basic. When people such as Blitz founders the Oliver twins were getting started in the early 80s it was possible to teach themselves programming on the machines that were available at the time, such as the Spectrum, the Amiga, the BBC Micro, etc.

Since then it's become a bit tougher because you can't do anything with a PS2 or an Xbox except play games. There's no access to the operating system and no simple programming language to learn.

Which is where Blitz Basic comes in. It's a good easy-to-learn entry level programming tool that covers both 2D and 3D (depending on which version you buy) and is available to run on most PCs at a pretty low cost. It'll give you a good introduction intro programming and will arm you to be able to move on an tackle C++.

Check out www.BlitzBasic.com

Games Programmer
Possible Responsibilities

A general programmer can literally be responsible for anything from text-parsing to texture mapping, tools code to AI, it is not unusual for one person to span a whole range of jobs. Therefore, the more you know (or can turn your hand to) the better. If you feel that you have a good grasp of a whole range of topics, this could be the job for you.

You will usually work specifically for someone (i.e. be given tasks and deadlines), and will be expected to complete these with a minimum of fuss, or suggest and implement suitable alternatives.

What you'll need to know * How to build and maintain data structures

* How to make use of new technology (hardware and software)
* Basic graphics skills (how to write and use sprites, primitives and preferably simple 3D graphics)
* State machines
* Simple AI
* File manipulation

You should also be able to work easily with other people's code. If you aren't specifically writing the engine, or AI (for example) then you will be picking up another person's work and will be expected to be able to handle this. There isn't much you can do in the way of training for this and it is something that you will certainly pick up on the job.

Lead Programmer
Possible Responsibilities

Everything! The lead programmer will usually not only code a huge variety of different things, but also be involved with planning, delegation team organisation and management. This depends upon the structure of the company in question, but in most circumstances this position involves at least some level of management skills.

What you'll need to know

* Everything: regardless of what the problem is, it's your job to fix it
* Interface skills
* Windows coding (windows themselves, message loops, the game loop, input, output)
* AI
* Engine skills
* File formats, data formats
* How to get people to work
* How to delegate effectively
* How to stay awake for 96 hours, organise your team and still get work done.

This may sound like overkill, but in many situations, the buck stops with the lead programmer. If, for some reason, the game is behind schedule, the ultimate responsibility may well be firmly placed on the shoulders of the Lead Programmer. If there seems to be no way to do something that is required, the Lead must find a solution or alternative. Which is why Lead Programmer is usually the best paid job too!

AI Programmer
Possible Responsibilities

Adding "intelligence" to a game, whether this means working on the game from the start, developing the AI hand-in-hand with the rest of the game, or bolting it on at the end. In some cases, this can be anything but "intelligent" (see below), in other cases, this can be real theory-pushing work. The important thing from the perspective of this industry is that an AI programmer makes the CPU appear to play intelligently.

What you'll need to know

As AI can vary so wildly in its definition, here's a range of things that you may be required to know:

* Psychology
* State Machines
* Physics (to understand how the AI players interact with their environment)
* Routing (a fantastically common AI problem)
* Graph and Network theory
* Neural Network theory
* Genetic Algorithm theory
* How to convert things we do every day into a general routine
(i.e. catching a ball, working out when to attack and when to run)
* A million clever ways to solve a fixed problem in as little CPU time as possible (choose the best weapon, find the nearest powerup, win at chess, walk from A to B avoiding C, etc.)

In this industry, AI can be a misnomer - there are few games that use neural nets, genetic algorithms or agent technology (although there are some, and the technology is slowly becoming more popular). In many cases, game AI consists of some fairly simple state machine style control with some clever but fixed ways to solve a problem, or just throwing the brute force of the CPU at a problem until it goes away. The point here is that "AI" may not mean what you think it means! Nonetheless, as many other aspects of games (particularly in the PC world) are being accelerated away by hardware, the CPU is free for long enough for some really clever AI to be run, making games even more playable and dynamic.

Engine Programmer
Possible Responsibilities

Making the game tick (no pun intended). The engine programmer provides a way for the game to communicate with the outside world. These days, this involves graphics (often 3D) and possibly sound. You would be responsible for constructing the systems that everything in the game (objects, players, enemies, etc) use, exist in and interact with.

What you'll need to know

As AI can vary so wildly in its definition, here's a range of things that you may be required to know:

* Maths
* Physics
* Rasterising
* 3D geometry/transforms
* Collision theory
* Hardware tricks
* Assembler (handy in case anything goes wrong/something needs optimising)

Having a brain the size of a planet is recommended for this job - you really need to specialise - but (and here's the catch) - in a huge range of things. Some of the maths and physics can get really hairy, plus it's getting worse as games get more complicated. Do not expect to have a life!

Tools Programmer
Possible Responsibilities

You will provide the utility and applications programs that the rest of your team/the company will use to put together their games. If something is broken, you will fix it. If someone needs a converter from this to that, you'll be writing it.

What you'll need to know

* How to maintain existing tools
* How to provide compatibility and flexibility between programs, formats and platforms
* How to create new tools to fit a need
* How to liaise with the people who will actually use the tool
* How to survive feature creep the likes of which God has not seen ("Yeah, but wouldn't it be nice if...")

Tools programmers provide a very worthwhile service to the other people at a company, even if they are not directly involved with a single, given game's creation. Flexibility and patience are a must.


Please send any questions or comments to ArenaMaster.

Are you an Artist/Animator? Have your art featured on Animation Arena... Find out how


Copyright 2012 Animation Arena.com All rights reserved.