There is an abundance of individuals who are very intrigued by the gaming industry. There are a number of schools accredited to helping you become the next best thing when someone plugs in their home console. Want a piece of the action? I give to you, because it's always better to give :), a segment containing information on the key roles incorporated in game design such as: Game Programmer, Game Designer, Level Designer, Game Producer, Game Artist and Game Tester. So go get yourself a cup of coffee, and relax...you may be a while.
We'll start off this series with one of the most important aspects in design; The Game Programmer, also called a Software Engineer. There are many types and levels of the Game Programmer:
- Game Physics Programmer
- AI Programmer (Artificial Intelligence)
- Graphics Programmer
- Sound Programmer
- Gameplay Programmer
- Scripter
- UI Programmer (User Interface)
- Input Programmer
- Network Programmer
- Game Tools Programmer
- Porting Programmer
- Technology Programmer
- Generalist
- Lead Game Programmer
GAME PHYSICS PROGRAMMER
In general, a physics programmer, develops the physics that the game will employ. Typically, a game will only simulate a few aspects of real-world physics. For example, a space game may need simulated gravity, but would not have any need for simulating water viscosity.Since processing cycles are always at a premium, physics programmers may employ "shortcuts" that are simple computer processes, but look and act "good enough" for the game in question. Sometimes, a specific subset of situations is specified and the physical outcome of such situations are stored in a record of some sort and are never computed at runtime at all.
Some physics programmers may even delve into the difficult tasks of inverse kinematics (type of motion planning, posing) and other motions attributed to game characters, but increasingly these motions are assigned via motion capture libraries so as not to overload the CPU with complex calculations.
For a role-playing game, only one physics programmer may be needed. For a complex combat game, teams of several physics programmers may be required.
AI PROGRAMMER (Artificial Intelligence)
The AI Programmer will basically develop the brain for the game being developed. They develop the logic that he game will use to carry out a number of actions such as , strategy and enemy actions. Some strategy games or role playing games may use AI heavily, while others, like for instance, puzzle games may only rely on AI moderately. Challenging and sophisticated aspect of game development and is growing rapidly.GRAPHICS PROGRAMMER
Title applied to programmers who specialize in developing and modifying complex 3D graphic renderers.A graphics programmer must have excellent knowledge on advanced mathematical concepts such as Vector, Matrix, Quaternions, and Linear Algebra.
Programmers in this area can usually demand higher wages and are a scarce commodity. They can cover computer games as well as games for PS, NIntendo, Wii, DS and Xbox.
SOUND PROGRAMMER
Not always a separate discipline, sound programming has been a mainstay of game programming since the days of Pong. Most games make use of audio, and many have a full musical score. Computer audio games eschew graphics altogether and use sound as their primary feedback mechanism.
Many games use advanced techniques such as 3D positional sound, making audio programming a non-trivial matter. With these games, one or two programmers may dedicate all their time to building and refining the game's sound engine, and sound programmers may be trained or have a formal background in digital signal processing.
Scripting tools are often created and/or maintained by sound programmers for use by sound designers. These tools allow designers to associate sounds with characters, actions, objects and events while also assigning music or atmospheric sounds for game environments (levels or areas) and setting environmental variables such as reverberation.
GAMEPLAY PROGRAMMER
Though all programmers add to the content and experience that a game provides, a gameplay programmer focuses more on a game's strategy and the "feel" of a game. This is usually not a separate discipline, as what this programmer does usually differs from game to game, and they will inevitably be involved with more specialized areas of the game's development such as graphics or sound.
This programmer may implement strategy tables, tweak input code, or adjust other factors that alter the game. Many of these aspects may be altered by programmers who specialize in these areas, however (for example, strategy tables may be implemented by AI programmers).
SCRIPTER
In early computer games, gameplay programmers would write code to create all the content in the game—if the player was supposed to shoot a particular enemy, and a red key was supposed to appear along with some text on the screen, then this functionality was all written as part of the core program in C or assembly language by a gameplay programmer.More often today the core game engine is usually separated from gameplay programming. This has several development advantages. The game engine deals with graphics rendering, sound, physics and so on while a scripting language deals with things like cinematic events, enemy behavior and game objectives. Large game projects can have a team of scripters to implement these sorts of game content.
Scripters usually are also game designers. It is often easier to find a qualified game designer who can be taught a script language as opposed to finding a qualified game designer who has mastered C++.
UI PROGRAMMER (USER INTERFACE)
This programmer specializes in programming user interfaces (UIs) for games. Though some games have custom user interfaces, this programmer is more likely to develop a library that can be used across multiple projects. Most UIs look 2D, though contemporary UIs usually use the same 3D technology as the rest of the game so some knowledge of 3D math and systems is helpful for this role. Advanced UI systems may allow scripting and special effects, such as transparency, animation or particle effects for the controls.INPUT PROGRAMMER
Input programming, while usually not a job title, or even a full-time position on a particular game project, is still an important task. This programmer writes the code specifying how input devices such as a keyboard, mouse or joystick affect the game. These routines are typically developed early in production and are continually tweaked during development. Normally, one programmer does not need to dedicate his entire time to developing these systems. A first person shooter such as Quake may need a very complex and low latency input system, while the needs of a turn-based strategy game such as Heroes of Might and Magic are much lower.NETWORK PROGRAMMER
This programmer writes code that allows players to compete against each other (or play together) connected via a LAN or the Internet (or in rarer cases, directly connected via modem). Programmers implementing this feature of a game can spend all their time on this one task. Network programming is one of the most challenging game programming roles. These programmers have to deal with network latency, packet compression, and dropped or interrupted connections. Though this type of programming can consume the entire development process, network programming is often put off until the last few months of development, adding additional difficulties to this role. GAME TOOLS PROGRAMMER
One of the less recognized members of the development team, the tools programmer can make game development heaven or unbearably difficult. Tools are used on almost every game for tasks such as scripting, importing or converting art, modifying behaviors or building levels. Some tools, such as an IDE, 3D graphics modeling software and Photoshop are COTS products, but many tools are specific to the game and are custom programmed.It is the tools programmer's job to write the tools that handle these game-specific tasks. Some tools will be included with the game, but most will not. Most tools evolve with the game and can easily consume all of several programmers' time. Well written and fairly bug-free tools make everyone's development tasks easier. Poorly written or poorly documented ones can seriously hamper development and jeopardize the project. Due to time constraints, however, many tools are not carefully implemented.
PORTING PROGRAMMER
Porting a game from one platform to another has always been an important activity for game developers. Some programmers specialize in this activity, converting code from one operating system to work on another. Sometimes, the programmer is responsible for making the application work not for just one operating system, but on a variety of devices, such as mobile phones. Often, however, "porting" can involve re-writing the entire game from scratch as proprietary languages, tools or hardware make converting source code a fruitless endeavor.This programmer must be familiar with both the original and target operating systems and languages (for example, converting a game originally written in C++ to Java), convert assets, such as artwork and sounds or rewrite code for low memory phones. This programmer may also have to side-step buggy language implementations, some with little documentation, refactor code, oversee multiple branches of code, rewrite code to scale for wide variety of screen sizes and implement special operator guidelines. They may also have to fix bugs that were not discovered in the original release of a game.
TECHNOLOGY PROGRAMMER
The technology programmer is more likely to be found in larger development studios with specific departments dedicated solely to R&D. Unlike other members of the programming team, the technology programmer usually isn't tied to a specific project or type of development for an extended length of time, and they will typically report directly to a CTO or department head rather than a game producer. As the job title implies, this position is extremely demanding from a technical perspective and requires intimate knowledge of the target platform hardware. Tasks cover a broad range of subjects including the practical implementation of algorithms described in research papers, very low-level assembly optimization and the ability to solve challenging issues pertaining to memory requirements and caching issues during the latter stages of a project. There is considerable amount of cross-over between this position and some of the others, particularly the graphics programmer.GENERALIST
In smaller teams, one or more programmers will often be described as 'Generalists' who will take on the various other roles as needed. Generalists are often engaged in the task of tracking down bugs and determining which subsystem expertise is required to fix them.LEAD GAME PROGRAMMER
The lead programmer is ultimately in charge of all programming for the game. It is their job to make sure the various submodules of the game are being implemented properly and to keep track of development from a programming standpoint. A person in this role usually transitions from other aspects of game programming to this role after several years of experience. Despite the title, this person usually has less time for writing code than other programmers on the project as they are required to attend meetings and interface with the client or other leads on the game. However, the lead programmer is still expected to program at least some of the time and is also expected to be knowledgeable in most technical areas of the game. There is often considerable common ground in the role of technical director and lead programmer, such that the jobs are often covered by one person.LIST OF SOME RENOWNED GAME PROGAMMERS:
- Michael Abrash: prolific author of optimized graphic routines
- Scott Adams, developer of early games for CP/M and MS-DOS
- Ed Boon co-creator of the Mortal Kombat franchise
- David Braben: co-creator of Elite.
- Danielle Bunten Berry: developer of several early groundbreaking games, such as M.U.L.E. and The Seven Cities of Gold
- John Carmack: programmer of many groundbreaking 3D games such as Wolfenstein 3D, the Doom series and the Quake series
- Will Crowther was the originator of Colossal Cave Adventure
- Richard Garriott (a.k.a. Lord British): developer of the Ultima series among others
- Jordan Mechner: developer of several games with groundbreaking animation, such as Karateka and the Prince of Persia series
- Sid Meier: developer of numerous successful series, such as Civilization, Pirates! and Railroad Tycoon, among others
- Alan Miller: co-founder of the first independent console game publisher and programmer of several early Atari 2600 games
- Robyn and Rand Miller, owners of Cyan Worlds, designers of Myst, Riven, and other games
- Jeff Minter: founder of Llamasoft
- Peter Molyneux: designer and programmer of Fable, Black & White, their sequels and Theme Park
- Chris Sawyer: programmer and designer of Transport Tycoon series and Roller Coaster Tycoon
- Ken Silverman: creator of the Build Engine used first by Duke Nukem 3D and later by many other games. Ken created his first 3D engine around the same time Carmack created the Doom engine.
- Tim Sweeney: creator of the Unreal Engine and ZZT
- Anne Westfall: programmer of all versions of home computer era game Archon
- Don Woods was co-author of Colossal Cave Adventure
- Will Wright: programmer turned designer of most Sim- games including SimCity, The Sims and Spore







