An Introduction to Game Programming
From DmWiki
Game programming is an art, and it is a hobby shared by millions of people across the internet. If you are wondering why, read on.
| Table of contents |
What does a game programmer do?
In short, they create the foundation and environment for a game and breathe life into the assets (3D models, images and sounds) that a team of artists create. Here are just a few of the things a game programmer might be responsible for:
- Giving monsters enough intelligence to follow you the whole way across a dungeon with complicated AI
- Making car headlights glare in the dark
- Getting lava to flow properly down hillsides and destroy houses by simulating natural physics
- Make eerie music change tempo when you're being attacked
- Create a landscape that was properly shadowed by overhead clouds, and the hills
Although these tasks sound very exciting, there is a lot of hard work in getting them completed. Most of the work is not cool or exciting. For example:
- Low-level hardware interfaces such as DVD virtual filesystems or controller interfaces.
- Hand optimize instructions to the computer to make them as fast as possible, a tedious and lengthy process (although enjoyed by many 'masochists')
- Searching for a bug, with very little idea of what it even does, never mind where it is or what else is broken. It's like searching for a tennis ball in an overgrown field.
- Writing up design and documentation for a new sub-system
- Filing more bugs for you to later hunt down
- Waking up in a cold sweat because you have a deadline in two weeks
What qualities does a programmer require?
To make it in the field, a programmer must be part engineer and part Sherlock Holmes. They have a thirst for knowledge and technology and most importantly, the power of insight. He or she usually has a strong interest in the Maths (the interesting stuff after beginner algebra), and has a very inquisitive and problem-solving nature. They are the sort of person who got in trouble for taking the VCR apart to see what was inside it.
Programmers, despite the stereotype are highly creative people - to be good in the field it requires creativity to push machines, try things differently and to dream up new ways of solving problems.
Since you've already decided to read this page, you may be this type of person although not yet quite know it. To make games, you will have to do a lot of work and independently teach yourself about a great range of topics.
How is a game programmer different than a general programmer?
In many ways they are very similar: the same basic programming skills are used in both games and in other software. But there are also many differences between them, a game programmer needs more knowledge in the areas of math, arithmetic, physics, graphics and so forth. Because there is no rapid develop method in game developing, so many works must be done. However, game programmers generally have a passion for games (and their own personal projects would naturally be games). Also, game programmers have to work with a much more diverse team - not just other coders, but with designers, artists, sound engineers, and play-testers as well.
There are many types of game programmers. Here is a simple taxonomy of what you may find and areas of specialization that you might want to know about:
- Lead Programmer: The person responsible for making all the sub-engines integrate into the main game engine. He is the glue of the project, makes sure that all programmers are on the same page.
- Engine Programmer (3D): Typically they are referred to as the "wizards" - they make the game look and sound good, and come up with creative ways to push polygons to the screen and provide the ambience.
- Tools Programmer: They build the tools necessary for level design, shader editors, plug-ins, etc... every tool that is necessary to build in-house. While tools programming is perhaps less glamorous then engine programming, it is every bit as important.
- FX Programmer: Responsible for special effects, like pixel and vertex shaders - they polish the game to make it look AAA quality, a bit like doing post-production in a movie.
All programmers need to have a passion for what they do. Most of the time, programming resembles being a plumber: you often have to write "glue code" or wrappers, things that are uncreative and boring. But when you see the final product and realize that you were part of the effort, you will feel a great overwhelming warm feeling!
Where Next?
If you think that game programming is something you want to learn more about, then please read How to get started. Do not expect to make a game in a month. Games often take years to fully realise, even with a full team of experts.
If you don't think programming is for you, but are still interested in creating games, have a look at other ways of making a game
