PROGRAMMERS Printer Page

Job Roles

Guidance and Advice

Submission Guidelines



OVERVIEW
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 have 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. 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 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 where 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 much 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 or 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 “Visual Studio Express” - the free version of the popular Microsoft C++ development environment. This is essentially a slimmed down version of the same package used in virtually all game development studios, and learning how it works and getting used to using it is a big step towards making yourself a desirable employee.

C++ may be a bit harder to get to grips with than Basic, but it’s what the vast majority of games are written in at the moment so it’s time well spent. See the Guidance section for some more pointers to useful web sites, books and other free software.

For more information on Visual Studio Express check out: http://msdn.microsoft.com/vstudio/express/visualc

Back to Top



JOB ROLES
The days when top selling games were born from the blood, sweat and tears of a lone programmer in their bedroom are long gone. Video games are now a multi-billion dollar industry and the effort required to create them has skyrocketed, replacing our single heroic coder with an army of developers.

Within this army there are many disciplines for a programmer to master; some become essential generalists while others enjoy specialising in one specific area. This section gives you a rundown on the different animals you may encounter:

Lead Programmer
Game Programmer
A.I. Programmer
Special Effects Programmer
Audio Programmer
Engine Programmer
Toolchain Programmer


Bear in mind however that virtually all programmers cross over between areas to some degree or other; being flexible and open to new challenges is essential if you want to be a success in the industry.

Lead Programmer

Responsibilities
Everything! The lead programmer is ultimately responsible for all aspects of programming required to complete the game. Usually a highly experienced game programmer, they will work on a huge variety of different things during the development lifecycle adding their insight and assistance to the other programming staff.

In addition to physical programming, Leads will also spend significant time on more managerial issues such as task prioritisation, scheduling and delegation, team organisation and personnel management. The actual split between programming and management depends largely upon the structure of the company in question, but in most circumstances this position does involve management skills.

What you'll need to know

  • Everything: being ultimately responsible means that regardless of the problem, it's your job to get it fixed.
  • User interface skills
  • Artificial Intelligence
  • Sound and music playback
  • Performance profiling and optimisation strategies
  • 3D maths, rendering and shaders
  • File formats, data formats
  • Task prioritisation and delegation
  • Interpersonal and communication skills

This is a pretty broad brief, but being where the buck stops means being able to deal with almost any situation. Working out how to accomplish the impossible within tight time constraints is a day to day task for a Lead Programmer, so make sure you enjoy a challenge before stepping up.

Back to Job Roles
Back to Top

Game Programmer

Responsibilities
A general game 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 – frequently the Lead Programmer - and will be expected to complete all manner of tasks with a minimum of fuss, or suggest and implement suitable alternatives.

What you'll need to know

  • Strong C++ coding skills and data structures
  • Ability to rapidly familiarise yourself with existing code
  • 3D maths and at least basic rendering
  • Optimisation strategies
  • File manipulation

A key requirement is to be able to work easily with other people's code. If you aren't specifically writing the engine or A.I. (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.

Back to Job Roles
Back to Top

A.I. Programmer

Responsibilities
Adding "intelligence" to a game, whether this means working on the game from the start, developing the A.I. 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 A.I. programmer makes the CPU appear to play intelligently while having their code consume the minimum amount of frame time.

What you'll need to know
As Artificial Intelligence can vary so wildly in its definition, here's a range of things that you may be required to know or at least will benefit from:

  • Psychology
  • State machines and message passing
  • Physics (to understand how the A.I. players interact with their environment)
  • Routing and navigation algorithms – very important this one
  • Optimisation strategies
  • Graph and network theory
  • Neural networks and genetic algorithms

In this industry, A.I. can frequently be a misnomer - there are few games out there that use neural networks or genetic algorithms, simply because they can be hard to implement effectively against a tight schedule and can also be difficult to debug.

In many cases, game A.I. consists of some fairly simple state machines combined with hard coded knowledge about the game world and behaviours. It’s layering and combining these fairly simply techniques in interesting ways that makes the game come to life and fools the player into thinking there is more going on than there really is – an absolute cornerstone in all aspects of game programming.

While it is true that the graphical capabilities of modern game hardware continue to improve at an amazing rate, the general purpose processors are lagging behind; A.I. code needs to be written carefully with a constant eye on performance to make sure it doesn’t end up bringing the game to its knees.

Back to Job Roles
Back to Top

Special Effects Programmer

Responsibilities
In a nutshell, adding the polish to the game. Special effects can go a long way to making the visuals of a game live up to the gameplay, be they particle effects for fire, smoke and explosions or full screen post processing effects for depth of field or shadows. The Special Effects programmer will usually work closely with art staff to develop materials, shaders and textures that work in concert to produce visually stunning spot and continuous effects. Special Effects programmers frequently spend hours fine tuning a single routine to get the best possible performance and look out of it.

What you'll need to know

  • 3D maths
  • Vertex and pixel shader programming
  • High Dynamic Range rendering
  • Depth of field
  • Optimisation techniques
  • Floating point textures and render targets
  • Physics for particle behaviour
  • Colour blending theory

Special effects programming is becoming more and more GPU-centric so the stronger your skills and the more experience you have in programming graphics hardware, the better your chances of success in this area.

Back to Job Roles
Back to Top

Audio Programmer

Responsibilities
The audio programmer is responsible for the processing, storage and playback of sound effects and music in the game. Frequently working for both the game team directly and the tools department, they are key in making sure the game sounds as good as it looks and plays. Working closely with the audio production department, the audio programmer can be responsible for development of the audio component of the company’s toolchain in addition to the playback and mixing routines in the engine.

The advent of more powerful game hardware has opened up many new avenues for audio programming, with surround sound and physically modelled audio joining the established requirement for software DSP algorithms.

What you'll need to know

  • Music and wave theory
  • Audio packages and file formats
  • PCM, ADPC, MP3 formats and derivatives
  • Fourier transform theory and practice
  • Frequency analysis
  • Digital Signal Processing
  • Channel mixing
  • Sample rate conversions
  • User Interface design
  • Windows programming
  • Physics for audio transmission and reflection
  • Optimisation strategies

Quality audio programmers are a valuable commodity in the games industry, so if this is an area that appeals to you, you can be assured of work for many years to come.

Back to Job Roles
Back to Top

Engine Programmer

Responsibilities
Making the game tick – the engine programmer works on the core technology upon which all the other systems depend. Background file loading, running the world node graph, debugging menus and viewers and profiling routines are just some of the essential responsibilities of any game engine.

With mounting commercial pressures to increase the re-use of software development effort, the engine programmer will often find themselves working in a central “Technology Team” on a common game engine shared between multiple game development projects. Such engines are frequently cross-platform to maximise their utility, so the engine programmer often ends up with experience on many hardware platforms.

What you'll need to know

  • Very strong C++ skills
  • Parallel software design and scheduling
  • Optimisation strategies
  • Efficient data structures
  • General graphics including shaders
  • General sound
  • API design
  • Good communication skills
  • Experience of as many hardware platforms as possible

As you can see here, the engine programmer has to cover a lot of ground. Frequently they are highly experienced coders with many years of games development behind them, giving them the breadth of vision necessary to design and implement such critical systems.

Back to Job Roles
Back to Top

Toolchain Programmer

Responsibilities
Responsible for the development of all manner of tools and utilities to make game development tasks easier and more efficient. Either working directly with a game team or employed as part of a centralised shared “Technology Team”, the toolchain programmer is key to smoothing out the bumpy road stretching ahead of every game development project. Although heavyweight commercial packages such as Maya, Softimage or 3DS Max are used extensively, there is always a need for bespoke tools to process game data and enable the content creators to undertake tasks so specific to the game that they cannot be accomplished in any other way.

Working closely with the content creators, the toolchain programmer must be open to frequent and frank constructive criticism as the tools go through revision after revision to give the ‘customers’ exactly what they need.

What you'll need to know

  • Very strong C++ or C# skills
  • Windows application development
  • Some knowledge of PHP, HTML, XML and SQL
  • Networked systems
  • Efficient and flexible data structures
  • API design
  • User interface design
  • Good communication and presentation skills

Long thought of as the poor sibling of ‘proper’ game development, in the last few years the industry has woken up to the realisation that the quality of toolchain development has a massive and direct impact on the quality of the final game produced. If your tools are late and sloppy, then your game will miss deadlines and the quality will suffer, while slick tools with well-designed interfaces and proper documentation and training will help ensure the content creators can make the game really shine.

Back to Job Roles
Back to Top



GUIDANCE & ADVICE
To get you started on your game development career, here we present some ideas for websites, books and freely downloadable software that may be of help.

Please note that this information is intended purely to give you some pointers to get you started, inclusion of any entry does not imply any connection to or endorsement from Blitz Games for the product, website or resource.

Websites
As with most things on the internet, there are more game development websites than you can shake a stick at. Put “Game Development” into your favourite search engine and click away. To get you started we list here just a few:

Books
A sector of programming long ignored, there has recently been an explosion of publications about all aspects of game programming. Searching your favourite online bookstore will turn up literally hundreds of titles; we list here just a few that you might like to consider:

  • Game Programming Gems series
  • GPU Gems series
  • Shader X series
  • A.I. Game Programming Wisdom series
  • Game Physics
  • 3D Math Primer for Graphics and Game Development
  • Game Coding: Complete

Free Software
While the commercial software used in professional game development is often expensive, there are a selection of free alternatives you can download and start using right now. Here we present a few options:

  • Microsoft Visual Studio Express
    Slimmed-down version of Microsoft’s premier development environment used extensively throughout the games industry. Learning to write in C++ with Visual Studio will stand you in good stead for your career.
  • Microsoft DirectX 9 SDK
    Software Development Kit for the DirectX libraries essential to any game development for PC platforms. Extensive documentation and samples for this ubiquitous cutting edge SDK make it an excellent resource.
  • Autodesk Maya Personal Learning Edition
    Free version of the heavyweight Maya modelling, animation and rendering package, ideal for creating resources for game development.
  • Eclipse IDE
    Cross-platform IDE for software development from ‘www.eclipse.org’

Back to Guidance & Advice
Back to Top


SUBMISSION GUIDELINES
So you reckon you have what it takes to be a star in the games industry? You’ve trained up your skills and plotted out your career path so it’s time to apply to some companies and get yourself noticed: but how do you do that?

Blindly sending out your CV to a bunch of companies or agencies is a sure-fire way to get yourself lost in the morass, so here we provide a few pointers to help you stand out from the crowd and make your application the successful one.

The CV
The first thing to do is understand that no matter how special you think you are, unless you put in some effort to get yourself noticed your CV is going to look a lot like the other hundreds that pass through the recruitment departments of successful game studios.

With so many to process, the time available to read and digest any particular one and especially look at demos is finite, so you’ve got to make it as painless as possible. Most companies will favour direct applications over agency ones simply because it saves them money not having to pay an agency fee; so choose your companies and take the time to apply to each direct.

Take advice on the presentation of your CV – there is plenty out there on the internet – and make it neat, tidy, relevant to your application and especially concise. You do not want to make a prospective employer wade through six pages of swimming certificates to get to your degree course.

Make sure you clearly state what vacancy you are applying for, when you are available for interview, what salary region you will accept (don’t be shy) and put all your key skills and experience front and centre. Most employers don’t care if you enjoy reading and long walks in the country, but they certainly do care if you have already written four games all by yourself.

The Demo
More important to many employers even than your hard-earned degree, we cannot stress strongly enough how important the subject matter is and the quality and quantity of your demo material. Many people graduate each year but it’s impossible to get a feel from two sides of A4 as to how good a programmer is and especially whether they have that spark, that ‘X-Factor’ that makes you want to employ them. If you spend time on nothing else, spend it on your demo.

The best demos of course are ones that are relevant to the vacancy to which you are applying. If you want to work on a game team then submit some playable games you have written – they don’t need to be cutting edge in every aspect, but they do need to show that you have the ability and imagination to put together a functioning game with sufficient attention to detail to make it fun and as slick as possible.

Alternatively, if you want to be a special effects programmer your demo should show a range of vertex and pixel shader based effects – if you can make it into a game of some sort then even better; there are only so many spinning cubes an employer wants to see.

We strongly suggest that once you think your demo is finished, take the time to step back and look at it as objectively as possible; then add any more features you can think of or iron out any clunky bits you find. Then do it again.

Coursework
It can be tempting to use your final year coursework as your demo; after all, you have spent good time on it and it probably represents your skills reasonably well. Before you do this, however, bear in mind that many other people from your course are likely to be in a similar situation – once your favourite employer has seen twenty copies of a near-identical demo, how favourably do you think they are going to look at yours?

It’s much better to make the time to write something new and original that really shows off what you can do; we guarantee it will be looked at with far more interest.

What to supply
Game developers are busy people and the time they have to devote to your application is finite, so you have to make it as easy for them as possible. If you are able to supply a CD or DVD with your demo on it, make it auto-run a web page giving your personal details and a brief description of what you are presenting, along with screenshots.

Make the executables run-able directly from the disc – don’t require them to be installed on a local hard drive – and put them in the root directory of the disc with clear and meaningful names so they are easy to find. Make instructions short and concise and put them on screen while the demo is running – don’t require the employer to hunt for a read-me file.

Ensure the disc contains all the DLLs required for your demo to run (such as DirectX or OpenGL utility libraries), try running it on someone else’s PC if possible as a sanity check. If your demo doesn’t run first time, an employer is probably not going to spend the time trying to work out why.

Putting videos of your demos on the disc can be useful in case the demo doesn’t run for some reason, then at least your work can be seen.

If possible also make your demos available on the internet in case your disc goes missing; keep them as small as possible and compress them into zip or rar files to make them quick and painless to download. Make sure you put the URL to the website on your CV!

In Summary
The most important things to remember are:

  • Your demo is at least as important as your CV
  • Put as much effort in to is as humanly possible
  • Make it relevant to the position you are applying for
  • Make it original, inventive and fun (this is the games industry after all)
  • Make it easy to run and test it on various PCs
  • Make instructions clear and on-screen

Good luck!

Back to Submission Guidelines
Back to Top