Want To Be A Games Programmer?

Information about Careers in New Media

Moderators: Moderator, Global Moderator

Post Reply
Tami
Administrator
Administrator
Posts: 10892
Joined: Sun Apr 25, 2004 1:05 pm

Want To Be A Games Programmer?

Post by Tami »

Getting a Programmer job, in the Games Industry

This guide has been produced by one of UK's leading developers - Codemasters, and provides invaluable, first hand advice on how you can best position yourself for getting a job programming video games, assuming that this is what you want to do for a living.

It assumes that you are still at school or college level, and maybe deciding what courses to take, and what qualifications and other skills you will need. Note that some of this information is specifically relevant to Codemasters, and may not be relevant for other companies. It's also fairly UK-centric, as I cannot speak for working in other countries.


So how do I start then?

If you want to be a programmer in the Video Game industry it's essential to have a love of programming & a love of video games- this is a difficult business to work in, and you will be expected to put a huge amount of effort in. Without a passion for video games, you won't cut the mustard! This, more than anything else, is what will make a difference - a love of games and programming, and a determination to succeed. If you have these things, then you're more than half way there.

To start with, I'll state the obvious and say "Learn to program" - it doesn't matter which programming language you choose, but it's important to learn the concepts. Programming concepts are generic across various programming languages. If you have never programmed at all before, try starting with BASIC. This is a simple beginners language, and will give you a grounding in many of the concepts involved in programming. PASCAL is also an easy beginners language, which is still commonly taught in many computer science courses. Once you have some experience, then Java, C, and C++ are also good languages to learn.

Learn about computer hardware - this will help you a lot. Knowing the fundamentals of how a CPU or graphics card works, will help you immensely. Again, computer hardware differs from PC to PC, and console to console, but many of the same fundamental concepts apply. Memory, registers, DMA, stacks, buffers, you'll find them on every computing platform. There are many internet sites and books which can give you a grounding in how computer hardware works.

The internet is a brilliant resource for learning about games programming, and there are many web-sites dedicated to the specifics of programming games. Use these as resources for learning about the many aspects of programming games.


What kind of programming languages should I learn?

C & C++ are the most popular languages in the games industry. Why? Because they are fast, powerful, and low level enough for you to do most anything you need to do, but also high level enough to not have to write a massive amount of code to do it. Unlike some languages, C/C++ is available on almost every operating system and is quite easy to port between them. This means that you could program something in C, and your 'source code' can be compiled to produce different .exes which run on PC, PlayStation, XBox, and so on. In other words, you don't worry about the hardware specifics of the platforms you run on, the compiler takes the source code, and compiles to the CPU format of the machine you are running on.

There is one more language that is good to know in the games industry and that is Assembly (ASM). Assembly language is the language of the machines microprocessor, or CPU. For PCs, this is generally Intel assembly language (known as x86). However, consoles tend to use different varieties of CPU (e.g. PS2 has a MIPS CPU, Nintendo GameCube has a PowerPC CPU, and XBox, has a Pentium III CPU).
Assembly language is the lowest level you can program at, and gives you maximum control of the CPU, allowing you to write the fastest possible code. Nowadays, most of the code (99%) in games is written in C or C++, but very occasionally in very speed critical sections, assembly code is used, and so this is a useful skill to have. It's a different style of programming to high level languages, and it is more difficult, but once you have learnt one CPU assembly language, the skills are easily transferable to other CPU assembly languages.

It can also be helpful to learn scripting languages such as Perl or Python. Scripting is useful because they are very high level languages, which often enable you to write tools quickly & easily. (e.g. Writing data converters is often simpler using a high-level language).

One last thing - although it can't harm to learn other languages, Java is not generally used in games programming, as it is too slow. Focus on C & C++.

So what hardware & software do I need to get started?

Buy yourself a decent PC, with a decent graphics card & sound card, and a good size hard-drive. It doesn't have to be top of the range, but you don't want an old dinosaur either! A second hand PC is ideal, you can have yourself a decent machine for a few hundred pounds. I would strongly recommend getting online, as the internet is a massively useful resource, and will rapidly accelerate your learning.

You should use a Windows operating system, for development, as most companies are based on Microsoft's OS. If you want to experiment with other systems (e.g. Mac, Linux), then that's fine, but it won't make a difference on your CV. (For the majority of companies, I should add - some developers are Mac or Linux based, but these are in the minority).

You should also get the DirectX Software Development Kit (or SDK for short). This is Microsoft's game programming API (Application Programming Interface). See www.microsoft.com/directx for the latest version. You can download this for free. DirectX comes with the all libraries and documentation you will need to start programming games on your PC. There are also lots of excellent tutorials. The tutorials are a very useful starting point, for writing your own code.

OpenGL is another 3D API, which is also commonly used in games development. (For example, id software of Doom & Quake fame, use OpenGL). This is also available for free (www.opengl.org), and is another useful weapon in your canon of programming skills!

OpenGL and DirectX have a similar purpose in life. i.e. To enable programmers to use the 3D Graphics hardware in their PCs, whilst not having to worry about which specific graphics card is plugged in. Learning either of these APIs will look very good on your CV, and even better if you learn both!


Which compiler should I use?

If you only buy one piece of development software, you should get hold of Microsoft's Visual Studio. Visual Studio.NET is the latest version, and you should get hold of this if you can. You can buy this from Amazon.

If you are tight for cash, you can always download a free Borland compiler without the visual interface (DOS prompt compiler) or search the Internet for a free IDE (Integrated Development Environment) compiler such as Dev-C++ (www.bloodshed.net).

If you don't use a windows operating system there are dozens of other free compilers out there.

Another compiler option is gcc, the Gnu C Compiler. This is an open source compiler, which has compilers for many many platforms.


Academic skills

If you do not have any previous experience in the videogames industry, then most UK employers will require you to have a degree in a subject which contains some aspect of Computer Science. Codemasters only employs graduates who have a 2:1 degree, or a 1st. (Or an equivalent qualification if you live outside the UK). If you are serious about programming videogames for a living, then you really do need a degree, with a good deal of computer science background. Other courses are also becoming more in demand, such as Maths & Physics, because these are useful skills which can be applied when writing video games.

Other skills

Maths skills are very useful in programming, as this will be required when doing 3D programming. A very good knowledge of vectors and matrices are essential, because they are necessary for 3D. Even if you don't end up doing the 3D stuff, it's useful stuff to know.

I've never written a video game in my life! How do I start?

If you've never written a game before, you should start simple. Pick a simple, but favourite 2D game of yours (like Space Invaders, PacMan, Tetris, etc), and try to write your own version, using either OpenGL or DirectX. Although you will eventually want to develop your own ideas, you should accept that by imitating another game, you will be able to get your game programming skills off the ground. (Much like people generally to learn to play music by playing other composer's music, before they started composing their own!).

Try and complete the game, and add in all of the elements you would expect to see in a professional version of such a game. e.g. Sound effects, Music, Hi-Score tables, multi-player modes, no bugs in it (harder than you may think!) and so on. This will show you that there are many aspects to creating a polished product, and it will give you an insight into the huge amount of work which goes into making fully fledged professional products. The amount of effort which goes into the non-core aspects of the game, is often as much as the game itself.

Once you have made a couple of games in this way, you can start to flex your creative muscles, and start developing your own game ideas. However, you should try to get a few 2D games under your belt before you start to deal with 3D.

Even better, if you do manage to finish your own game to a high standard, this is an ideal showcase to show to potential future employers - any finished game is a big feather in your cap, and will impress an interviewer.


I want to make 3D games. How do I go about doing this?

I would strongly recommend that you write several 2D games, before embarking upon 3D. You need to walk before you can run, and although 3D seems much more exciting and glamorous than 2D, if you don't have your basic game programming skills completely sorted when attempting to do 3D programming, you will end up getting stuck. So try not to rush into 3D - it can get complicated. Beyond this, 3D programming is heavily based on linear algebra. You need to brush up on vectors and matrices, and know these like the back of your hand.

Then I'd suggest reading the documentation, and looking at the example code for either DirectX or OpenGL. There are basic examples, and you should use these as your starting point for learning about 3D. Everyone's first 3D demo is a cube spinning around in the middle of the screen. If you can do this, you have 3D programming cracked J From this point on, it's just a huge learning process - read as much as you can and build up your skills. It's useful to build up a library of functions, useful bits of code which you can re-use time and time again.


What does an employer look for?

When you send a potential employer your CV, they will look at your technical abilities - your strength and experience in the relevant programming languages, relevant development software, API experience (preferably DirectX and/or OpenGL), the various techniques you know. Codemasters applicants are expected to have a 2:1 degree in a computer science related degree (or equivalent qualification if you're not British), if they have not had a proven track record in games development already.

If this is all good, you will be invited for an interview. The interviewer will firstly check to see if you are technically aware, as you claim on your CV. However, if you have been invited for an interview, it's pretty much taken for granted that you have the right technical skills. The interview is about finding more about you as a person, and to find if you have the other skills and qualities that employers are looking for.

Employers look for people who are good team players, and good at communicating. A bad programmer will work alone, without integrating into the rest of the team (and that includes everyone - designers, artists, testers, the management, and so on). Such a programmer will not remain at a company for long. Communication skills are massively under-rated by applicants when it comes to interviews, and interviewees who are confident, communicate clearly, and can demonstrate that they work well within a team, always stand out. Games programming is such a huge field, that people need to be constantly asking questions, and finding out the right information to be able to do the best job they can.

An employer will also determine your passion for games. Many times, I have interviewed excellent people in many respects, but simply rejected them after having interview them, simply because they don't really care about games - not the right attitude!

Other skills employers will look for are time management skills, and your ability to handle pressure. Deadlines are often tight, and frequent, and if you can demonstrate an ability to produce quality work, on time, this will be a big plus in your favour.

Another skill particularly relevant to programmers, is your ability to write good clean code. If it's messy don't bother showing it, even though it may contain a technically brilliant, super-optimised bit of code! Remember that since you are working in a team, other people will be reading your code, in order to understand what it does, and will often have to change it. Don't fool yourself that you will be the only person working with your code. If you are serious about learning such skills, a very good book to read is "Code Complete" by Steve McConnell, from Microsoft Press. (It's available from Amazon - Buy it now!).

I am always impressed by enthusiasm - if people come across as genuinely yearning to make the best games in the world, and show the enthusiasm to put in lots of hard work, and learning, this always impresses me highly. Sound excited and interested to work in the game industry and especially at the company you are applying for. Don't let them know that you have been bouncing your resume all over the place. They want to know that you want to work there. Do some research on the company you are interviewing at. This means playing their games, learning about their history and possibly talking to someone who works there about their experience working for the company. If you go the extra mile to find information about the company it shows that you are selective in whom you work for.

As you can see, technical ability is only half the battle - you need other more 'human' qualities, if you are to be successful as a professional VideoGame programmer.


What kind of salary should I expect?

Well, don't expect to become rich programming games for a living! If money is your motivation, get a job programming databases - you'll work fewer hours, get paid much more, and be the most boring person at a party! Graduate programmers can expect a starting salary of around £20,000 in the UK.

As you progress through the programming ranks of a company, you can expect the salary to rise. If you have the ambition to become a lead programmer, leads can make up to £50,000 in some companies, although this is exceptional. If you wish to progress further in the career ladder, you will have to move to management, where salaries get even higher!
Many companies have bonus schemes, and share schemes, though this varies from place to place.


How long does it take to make a game?

Depending on the game the time to complete it can be varied. Some games are as short as 6 months or as long as 4 years. If you are making a sequel to a game it could be just 6 months to a year because you already have the base completed and you only need to add a few more features, levels and art. The average development time for a game is about 2 years.


Useful links

Here are links to some very good games programming sites. They cater for all levels, from beginner tutorials through to expert. There are many more of course, but these should get you started.

www.gametutorials.com
www.flipcode.com
www.gamedev.net

And remember, www.google.com is always your friend!


Conclusion

No matter what your level of ability right now, we've hopefully given you some useful pointers on how to get your foot on the ladder of the videogames industry. If you relish hard work and a challenge, and you are able to learn, then there's nothing stopping you from getting a job as a real videogames programmer.

It's hugely satisfying to see a game, on which you have worked so hard, getting rave reviews, and hit the number one spot in the charts. It makes all the effort worthwhile.

[url=\"http://www.gamesanimal.com/career.php?artid=1060\"]source[/url]
Image

[color=\"#41211C\"]It takes years to build up trust and only seconds to destroy it

[/color]
Post Reply

Return to “Careers”