A game programmer is a software engineer who primarily develops computer or video games or related software (such as game development tools). Game programming has many specialized disciplines; practitioners of any may regard themselves as "game programmers". A game programmer should not be confused with a game designer; many designers are also programmers, but not all are, and it is rare for one person to serve both roles in modern professional games.
Later, as specialized arcade hardware and home systems became more powerful, game developers could develop deeper storylines and could include such features as high-resolution and full color graphics, physics, advanced artificial intelligence and digital sound. Technology has advanced to such a great degree that contemporary games usually boast 3D graphics and full motion video using assets developed by professional graphic artists.
The desire for adding more depth and assets to games necessitated a division of labor. Initially, art production was relegated to fulltime artists. Next game programming became a separate discipline from game design. Now, only some games, such as the puzzle game Bejeweled, are simple enough to require just one fulltime programmer. Despite this division, however, most game developers (artists, programmers and even producers) have some say in the final design of contemporary games.
Since processing cycles are always at a premium, physics programmers may employ "shortcuts" that are computationally inexpensive, 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 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 such as Might and Magic, only one physics programmer may be needed. For a complex combat game such as Battlefield 1942 or Combat Evolved, teams of several physics programmers may be required.
See also: dynamical simulation
Game AI programming should not be confused with academic AI programming and research: game programming has little use for developments in this area of study. Although both areas do borrow from each other from time to time, they are usually considered distinct disciplines.
Some games, such as strategy games like Civilization III or role-playing games such as Neverwinter Nights, use AI heavily, while others, such as puzzle games, use it sparingly or not at all. Many game developers have created entire languages that can be used to program their own AI for games via scripts. These languages are typically less technical than the language used to implement the game, and will often be used by the game or level designers to implement the world of the game. Many studios also make their games' scripting available to players, and it is often used extensively by third party mod developers.
A 3D graphics programmer must have a firm grasp on advanced mathematical concepts such as vector and matrix math, quaternions and linear algebra.
Programmers specializing in this area of game development can demand high wages and are usually a scarce commodity. Their skills can be used for computer games as well as games for game consoles such as the PlayStation 2, GameCube and Xbox.
A 3D graphics programmer may also specialize in a subset of 3D graphics programming, such as pixel shaders or vertex shaders.
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.
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). Since this programmer is something of a "jack of all trades," he is usually paid the least out of all the programming staff and is usually easily replaced. In many cases, the workload of this programmer can be picked up by other members of the programming team, though the work he does is usually appreciated.
These days, large game projects have a team of scripters to implement this sort of game content. Scripters usually are also game designers, and it is easier to find and employ a qualified game designer who can be taught a script language, as opposed to the difficulty of finding a qualified game designer who has mastered C++ on the target platform.
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, most tools can not be carefully implemented.
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.
Increasingly, universities are starting to offer courses and degrees in game programming. Any such degrees should offer a well-rounded education that includes all the fundamentals of software engineering.
Generally, lead programmers are the most well compensated, though some 3D graphics programmers may challenge or surpass their salaries.
A controversial subject in the game industry recently has been the issue of unpaid overtime, particularly as highlighted by an anonymous blog entry by ea_spouse*, who described some of the darker aspects of working in the industry: at some companies, "crunch time" (a period where programmers will often work around the clock to finish a project) has become the expected norm through the whole development cycle. This is not true of all companies however, and many game studios provide excellent working environments and conditions.
Third-party developers, the most common type of video game developers, depend upon a steady influx of funds from the video game publisher. If a milestone or deadline is not met (or for a host of other reasons, like the game is cancelled), funds may become short and the developer may be forced to retrench employees or declare bankruptcy and go out of business. Game programmers who work for large publishers are somewhat insulated from these circumstances, but even the large game publishers can go out of business (as when Hasbro Interactive was sold to Infogrames and several projects were cancelled; or when The 3DO Company went bankrupt in 2003 and ceased all operations). Some game programmers' resumes consist of short stints lasting no more than a year as they're forced to leap from one doomed studio to another. This is why some prefer to consult and are therefore somewhat shielded from the effects of the fates of individual studios.
Various script languages are also used for the generation of content such as artwork and especially AI. Scripts are generally executed by an interpreter, resulting in much slower code execution than compiled C++, C or assembly code. Because of this, scripts tend to be used selectively, often for content design and high-level game logic. Some games are designed with high depedency on scripts; the scripts are compiled to binary format before game execution so they can execute with little degradation compared to native code. In the optimization phase of development, some script functions will often be rewritten in a compiled language.
Java is used for many web browser based games because it is cross-platform, does not usually require installation by the user, and does not pose security risks, as may a downloaded executable program. Java is also the dominant language for mobile phone based games. Macromedia Flash is also a popular development tool for browser-based games (there is some debate as to whether Flash actually constitutes a "language," but it is a popular web-based game development medium).
As games have grown in size and complexity, middleware is becoming increasingly popular with the industry. Middleware provides greater and higher level functionality and larger feature sets than the standard lower level APIs such as DirectX and OpenGL, such as skeletal animation. In addition to providing more complex technologies, some middleware also makes reasonable attempts to be platform independent, making common conversions from, for example, PC to PS2 much easier. Essentially, middleware is aimed at cutting out as much of the redundancy in the development cycle as possible (for example, writing new animation systems for each game a studio produces), allowing programmers to focus on new content.
Other tools are also essential to game developers: 2D and 3D packages (for example Photoshop, Maya and 3D Studio Max) enable artists to produce cutting edge art and animations; source control systems keep precious code safe, secure and optimise merging; and IDEs with debuggers (such as Visual Studio or CodeWarrior) make writing code and tracking down bugs a less painful experience.
See also: Tools from game programming
Computer and video game development | Entertainment occupations | Game programmers
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Game programmer".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world