| PROGRAMMERS |
| 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 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 JOB ROLES 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 involves management skills. What you'll need to know
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. Game Programmer 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
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. A.I. Programmer What you'll need to know
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. Special Effects Programmer What you'll need to know
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. Audio Programmer 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
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. Engine Programmer 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
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. Toolchain Programmer 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
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. GUIDANCE & ADVICE 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
Books
Free Software Microsoft Visual Studio Express Microsoft DirectX 9 SDK Autodesk Maya Personal Learning Edition Eclipse IDE SUBMISSION GUIDELINES 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 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 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’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 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
Good luck! |