A game programmer is a software engineer, programmer, or computer
scientist who primarily develops codebases for video games or related
software, such as game development tools.
Game programming has many
specialized disciplines, all of which fall under the umbrella term of
"game programmer". A game programmer should not be confused with
a game designer, who works on game design.
Game engine programmer
Physics engine programmer
2.1.2 Graphics engine programmer
Artificial intelligence programmer
2.3 Sound programmer
2.4 Gameplay programmer
2.6 UI programmer
2.7 Input programmer
2.8 Network programmer
2.9 Game tools programmer
2.11 Technology programmer
2.13 Lead game programmer
6 Job security
7 Languages and tools
8 See also
11 External links
The Apple II series was a popular video game platform during the early
home computer era. Despite being outperformed by later systems, it
remained popular until the early 1990s.
In the early days of video games (from the early 1970s to mid-1980s),
a game programmer also took on the job of a designer and artist. This
was generally because the abilities of early computers were so limited
that having specialized personnel for each function was unnecessary.
Game concepts were generally light and games were only meant to be
played for a few minutes at a time, but more importantly, art content
and variations in gameplay were constrained by computers' limited
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. Nowadays, the derogatory term
"programmer art" has come to imply the kind of bright colors and
blocky design that were typical of early video games.
The desire for adding more depth and assets to games necessitated a
division of labor. Initially, art production was relegated to
full-time 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 full-time programmer.
Despite this division, however, most game developers (artists,
programmers and even producers) have some say in the final design of
A contemporary video game may include advanced physics, artificial
intelligence, 3D graphics, digitised sound, an original musical score,
complex strategy and may use several input devices (such as mice,
keyboards, gamepads and joysticks) and may be playable against other
people via the
Internet or over a LAN. Each aspect of the game can
consume all of one programmer's time and, in many cases, several
programmers. Some programmers may specialize in one area of game
programming, but many are familiar with several aspects. The number of
programmers needed for each feature depends somewhat on programmers'
skills, but mostly are dictated by the type of game being developed.
Game engine programmer
Game engine programmers create the base engine of the game, including
the simulated physics and graphics disciplines. Increasingly, video
games use existing game engines, either commercial, open source or
free. They are often customized for a particular game, and these
programmers handle these modifications.
Physics engine programmer
A game's physics programmer is dedicated to developing the physics a
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
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. In other cases,
unrealistic physics are employed to allow easier gameplay or for
dramatic effect. 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 World of Warcraft, only one physics
programmer may be needed. For a complex combat game such as
Battlefield 1942, teams of several physics programmers may be
Graphics engine programmer
Historically, this title usually belonged to a programmer who
developed specialized blitter algorithms and clever optimizations for
2D graphics. Today, however, it is almost exclusively applied to
programmers who specialize in developing and modifying complex 3D
graphic renderers. Some 2D graphics skills have just recently become
useful again, though, for developing games for the new generation of
cell phones and handheld game consoles.
A 3D graphics programmer must have a firm grasp of advanced
mathematical concepts such as vector and matrix math, quaternions and
Skilled programmers specializing in this area of game development can
demand high wages and are usually a scarce commodity.
Their skills can be used for video games on any platform.
Artificial intelligence programmer
An AI programmer develops the logic of time to simulate intelligence
in enemies and opponents. It has recently evolved into a
specialized discipline, as these tasks used to be implemented by
programmers who specialized in other areas. An AI programmer may
program pathfinding, strategy and enemy tactic systems. This is one of
the most challenging aspects of game programming and its
sophistication is developing rapidly. Contemporary games dedicate
approximately 10 to 20 percent of their programming staff to AI.
Some games, such as strategy games like
Civilization III or
role-playing video games such as The Elder Scrolls IV: Oblivion, 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.
The AI technology used in games programming should not be confused
with academic AI programming and research. Although both areas do
borrow from each other, they are usually considered distinct
disciplines, though there are exceptions. For example, the 2001 game
Lionhead Studios Black & White features a unique AI approach to
a user controlled creature who uses learning to model behaviors during
game-play. In recent years, more effort has been directed towards
intervening promising fields of AI research and game AI
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
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 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.
Though all programmers add to the content and experience that a game
provides, a gameplay programmer focuses more on a game's strategy,
implementation of the game's mechanics and logic, 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).
In early video 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++.
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.
The joystick was the primary input device for 1980s era games. Now
game programmers must account for a wide range of input devices, but
the joystick today is supported in relatively few games, though still
dominant for flight simulators.
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 real-time
motion-controlled game utilizing devices such as the
Wii Remote or
Kinect may need a very complex and low latency input system, while the
HID requirements of a mouse-driven turn-based strategy game such as
Heroes of Might and Magic
Heroes of Might and Magic are significantly simpler to implement.
This programmer writes code that allows players to compete or
cooperate, connected via a
LAN or the
Internet (or in rarer cases,
directly connected via modem). Programmers implementing these game
features can spend all their time in this one role, which is often
considered one of the most technically challenging. Network latency,
packet compression, and dropped or interrupted connections are just a
few of the concerns one must consider. Although multi-player features
can consume the entire production timeline and require the other
engine systems to be designed with networking in mind, network systems
are often put off until the last few months of development, adding
additional difficulties to this role. Some titles have had their
online features (often considered lower priority than the core
gameplay) cut months away from release due to concerns such as lack of
management, design forethought, or scalability.
Virtua Fighter 5
Virtua Fighter 5 for
the PS3 is a notable example of this trend.
This section's tone or style may not reflect the encyclopedic tone
used on. See's guide to writing better articles
for suggestions. (November 2012) (Learn how and when to remove this
Game tools programmer
The tools programmer can assist the development of a game by
writing custom tools for it.
Game development Tools are often contain
features such as script compilation, importing or converting art
assets, and level editing. While some tools used may be COTS products
such as an IDE or a graphics editor, tools programmers create tools
with specific functions tailored to a specific game which are not
available in commercial products. For example an adventure game
developer might need an editor for branching story dialogs, and a
sport game developer could use a proprietary editor to manage players
and team stats. These tools are usually not available to the consumers
who buy the game.
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
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.
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.
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.
Game programmers can specialize on one platform or another, such as
Wii U or Windows. So, in addition to specializing in one game
programming discipline, a programmer may also specialize in
development on a certain platform. Therefore, one game programmer's
title might be "
PlayStation 3 3D Graphics Programmer." Some
disciplines, such as AI, are transferable to various platforms and
needn't be tailored to one system or another. Also, general game
development principles such as 3D graphics programming concepts, sound
engineering and user interface design are naturally transferable
Notably, there are many game programmers with no formal education in
the subject, having started out as hobbyists and doing a great deal of
programming on their own, for fun, and eventually succeeding because
of their aptitude and homegrown experience. However, most job
solicitations for game programmers specify a bachelor's degree (in
mathematics, physics, computer science, "or equivalent experience").
Increasingly, universities are starting to offer courses and degrees
in game programming. Any such degrees have considerable overlap with
computer science and software engineering degrees.
Salaries for game programmers vary from company to company and country
to country. In general, however, pay for game programming is generally
about the same for comparable jobs in the business sector. This is
despite the fact that game programming is some of the most difficult
of any type and usually requires longer hours than mainstream
Results of a 2010 survey in the United States indicate that the
average salary for a game programmer is USD$95,300 annually. The least
experienced programmers, with less than 3 years of experience, make an
average annual salary of over $72,000. The most experienced
programmers, with more than 6 years of experience, make an average
annual salary of over $124,000.
Generally, lead programmers are the most well compensated, though some
3D graphics programmers may challenge or surpass their salaries.
According to the same survey above, lead programmers on average earn
Though sales of video games rival other forms of entertainment such as
movies, the video game industry is extremely volatile. Game
programmers are not insulated from this instability as their employers
experience financial difficulty.
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
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 are 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.
Languages and tools
This section does not cite any sources. Please help improve this
section by adding citations to reliable sources. Unsourced material
may be challenged and removed. (May 2009) (Learn how and when to
remove this template message)
Most commercial computer and video games are written primarily in C++,
C, and some assembly language. Many games, especially those with
complex interactive gameplay mechanics, tax hardware to its limit. As
such, highly optimized code is required for these games to run at an
acceptable frame rate. Because of this, compiled code is typically
used for performance-critical components, such as visual rendering and
physics calculations. Almost all PC games also use either the DirectX,
OpenGL APIs or some wrapper library to interface with hardware
Various script languages, like Ruby, Lua and Python, are also used for
the generation of content such as gameplay and especially AI. Scripts
are generally parsed at load time (when the game or level is loaded
into main memory) and then executed at runtime (via logic branches or
other such mechanisms). They are generally not executed by an
interpreter, which would result in much slower execution. Scripts tend
to be used selectively, often for AI and high-level game logic. Some
games are designed with high dependency on scripts and some scripts
are compiled to binary format before game execution. 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
poses fewer security risks, compared to a downloaded executable
program. Java is also a popular language for mobile phone based games.
Adobe Flash, which uses the
ActionScript language, and
popular development tools for browser-based games.
As games have grown in size and complexity, middleware is becoming
increasingly popular within 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,
Microsoft Windows to PS4
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 Blender, GIMP, Photoshop, Maya or 3D Studio Max) enable
programmers to view and modify assets generated by artists or other
production personnel. Source control systems keep source code safe,
secure and optimize merging. IDEs with debuggers (such as Visual
Studio) make writing code and tracking down bugs a less painful
Game development tool and Tools from game programming
List of notable game programmers
Code Monkeys, an animated show about game programmers
^ Bates 2004, pp. 165-171
^ Moore, Novak 2010, pp. 78-84
^ Moore, Novak 2010, pp. 74-75
^ Moore, Novak 2010, p. 79
^ Moore, Novak 2010, p. 80
^ Moore, Novak 2010, pp. 80-81
^ "Number of Dedicated AI Programmers on A Game Development Team".
AIGameDev. February 26, 2008. Archived from the original on June 7,
^ Evans 2002, Chapter 11.2: Varieties of Learning, pp.567-578
^ "IEEE Symposium on Computational Intelligence and Games". Retrieved
26 March 2010.
^ "Artificial Intelligence and Games Research Network". Archived from
the original on 26 September 2009. Retrieved 26 March 2010.
University of Alberta GAMES Group". Retrieved 26 March
^ Epstein, Susan L. "Games & Puzzles". AITopics. Archived from the
original on 1 May 2010. Retrieved 26 March 2010.
^ Moore, Novak 2010, p. 83
^ Moore, Novak 2010, p. 81
^ Moore, Novak 2010, p. 82
^ TVG: AM2:
Virtua Fighter 5
Virtua Fighter 5 PS3 Could Be Updated For Online News
Archived January 18, 2008, at the Wayback Machine.
^ Moore, Novak 2010, p. 78
^ Top Gaming Studios, Schools & Salaries, Big FIsh Games, July
^ Fleming, Jeffrey (April 2010). "9th Annual Salary Survey". Game
Developer. United Business Media. 17 (4): 8.
Bates, Bob (2004). Game Design (2nd ed.). Thomson Course Technology.
Moore, Michael E.; Novak, Jeannie (2010). Game Industry Career Guide.
Delmar: Cengage Learning. ISBN 1-4283-7647-X.
Evans, Richard (2002). Rabin, Steve, ed. AI Game Programming Wisdom.
Charles River Media. ISBN 1-58450-077-8.
Game industry veteran Tom Sloper's advice on game programming