Game programmer
Encyclopedia
A game programmer is a software engineer
Software engineer
A software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips, work.- Overview :...

, programmer
Programmer
A programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to...

, or computer scientist
Computer scientist
A computer scientist is a scientist who has acquired knowledge of computer science, the study of the theoretical foundations of information and computation and their application in computer systems....

 who primarily develops codebase
Codebase
The term codebase, or code base, is used in software development to mean the whole collection of source code used to build a particular application or component. Typically, the codebase includes only human-written source code files, and not, e.g., source code files generated by other tools or...

 for video games or related software, such as game development tool
Game development tool
A game development tool is a specialized software application that assists or facilitates the making of a computer or video game. Some tasks handled by tools include the conversion of assets into formats required by the game, level editing and script compilation.Almost all game development tools...

s. Game programming
Game programming
Game programming, a subset of game development, is the programming of computer, console or arcade games. Though often engaged in by professional game programmers, many novices may program games as a hobby...

 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 design
Game design, a subset of game development, is the process of designing the content and rules of a game in the pre-production stage and design of gameplay, environment, storyline, and characters during production stage. The term is also used to describe both the game design embodied in a game as...

.

History

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 computer
Computer
A computer is a programmable machine designed to sequentially and automatically carry out a sequence of arithmetic or logical operations. The particular sequence of operations can be changed readily, allowing the computer to solve more than one kind of problem...

s 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 power.

Later, as specialized arcade
Arcade game
An arcade game is a coin-operated entertainment machine, usually installed in public businesses such as restaurants, bars, and amusement arcades. Most arcade games are video games, pinball machines, electro-mechanical games, redemption games, and merchandisers...

 hardware
Hardware
Hardware is a general term for equipment such as keys, locks, hinges, latches, handles, wire, chains, plumbing supplies, tools, utensils, cutlery and machine parts. Household hardware is typically sold in hardware stores....

 and home systems
Home computer
Home computers were a class of microcomputers entering the market in 1977, and becoming increasingly common during the 1980s. They were marketed to consumers as affordable and accessible computers that, for the first time, were intended for the use of a single nontechnical user...

 became more powerful, game developers could develop deeper storylines and could include such features as high-resolution and full color graphics, physics
Physics
Physics is a natural science that involves the study of matter and its motion through spacetime, along with related concepts such as energy and force. More broadly, it is the general analysis of nature, conducted in order to understand how the universe behaves.Physics is one of the oldest academic...

, advanced artificial intelligence
Artificial intelligence
Artificial intelligence is the intelligence of machines and the branch of computer science that aims to create it. AI textbooks define the field as "the study and design of intelligent agents" where an intelligent agent is a system that perceives its environment and takes actions that maximize its...

 and digital sound. Technology has advanced to such a great degree that contemporary games usually boast 3D graphics
3D computer graphics
3D computer graphics are graphics that use a three-dimensional representation of geometric data that is stored in the computer for the purposes of performing calculations and rendering 2D images...

 and full motion video
Full motion video
Full motion video based games are video games that rely upon pre-recorded TV-quality movie or animation rather than sprites, vectors, or 3D models to display action in the game. In the early 1990s a diverse set of games utilized this format...

 using assets developed by professional graphic artists. Nowadays, the derogatory term "programmer art
Programmer art
Programmer Art refers to temporary graphics added by the software developer to test functionality. When creating the artwork, speed is a priority and aesthetics are secondary . In fact, programmer art might be intentionally bad. This draws attention to the fact that the artwork is only a...

" has come to imply the kind of bright colors and blocky design that was typical of early computer games.

The desire for adding more depth and assets to games necessitated a division of labor. Initially, art production was relegated to fulltime artists
Game artist
A game artist is an artist who creates art for one or more types of games. Game artists are responsible for all of the aspects of game development that call for visual art...

. Next game programming
Game programming
Game programming, a subset of game development, is the programming of computer, console or arcade games. Though often engaged in by professional game programmers, many novices may program games as a hobby...

 became a separate discipline from game design
Game design
Game design, a subset of game development, is the process of designing the content and rules of a game in the pre-production stage and design of gameplay, environment, storyline, and characters during production stage. The term is also used to describe both the game design embodied in a game as...

. Now, only some games, such as the puzzle game Bejeweled
Bejeweled
Bejeweled is a puzzle game by PopCap Games, first developed for browsers in 2001. Three follow-ups to this game have been released. More than 75 million copies of Bejeweled have been sold, and the game has been downloaded more than 500 million times....

, are simple enough to require just one fulltime programmer. Despite this division, however, most game developers (artists, programmers and even producers
Game producer
A video game producer is the person in charge of overseeing development of a video game.The earliest documented use of the term producer in games was by Trip Hawkins, who established the position when he founded Electronic Arts in 1982...

) have some say in the final design of contemporary games.

Disciplines

A contemporary computer game may include advanced physics, artificial intelligence, 3D graphics, digitized sound, an original musical score, complex strategy and may use several input devices (such as mice, keyboard
Computer keyboard
In computing, a keyboard is a typewriter-style keyboard, which uses an arrangement of buttons or keys, to act as mechanical levers or electronic switches...

s, gamepad
Gamepad
A gamepad , is a type of game controller held in two hands, where the digits are used to provide input. Gamepads generally feature a set of action buttons handled with the right thumb and a direction controller handled with the left...

s and joystick
Joystick
A joystick is an input device consisting of a stick that pivots on a base and reports its angle or direction to the device it is controlling. Joysticks, also known as 'control columns', are the principal control in the cockpit of many civilian and military aircraft, either as a center stick or...

s) and may be playable against other people via the Internet
Internet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...

 or over a LAN
Län
Län and lääni refer to the administrative divisions used in Sweden and previously in Finland. The provinces of Finland were abolished on January 1, 2010....

. 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
Game programming
Game programming, a subset of game development, is the programming of computer, console or arcade games. Though often engaged in by professional game programmers, many novices may program games as a hobby...

, 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.

Physics engine programmer

A game's physics programmer is dedicated to developing the physics
Physics
Physics is a natural science that involves the study of matter and its motion through spacetime, along with related concepts such as energy and force. More broadly, it is the general analysis of nature, conducted in order to understand how the universe behaves.Physics is one of the oldest academic...

 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 viscosity
Viscosity
Viscosity is a measure of the resistance of a fluid which is being deformed by either shear or tensile stress. In everyday terms , viscosity is "thickness" or "internal friction". Thus, water is "thin", having a lower viscosity, while honey is "thick", having a higher viscosity...

.

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
Inverse kinematics
Inverse kinematics is a subdomain of kinematics, which is of particular interest in robotics and computer animation. In contrast to forward kinematics, which calculates the position of a body after a series of motions, inverse kinematics calculates the motions necessary to achieve a desired...

 and other motions attributed to game characters, but increasingly these motions are assigned via motion capture
Motion capture
Motion capture, motion tracking, or mocap are terms used to describe the process of recording movement and translating that movement on to a digital model. It is used in military, entertainment, sports, and medical applications, and for validation of computer vision and robotics...

 libraries so as not to overload the CPU
Central processing unit
The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...

 with complex calculations.

For a role-playing game
Role-playing game
A role-playing game is a game in which players assume the roles of characters in a fictional setting. Players take responsibility for acting out these roles within a narrative, either through literal acting, or through a process of structured decision-making or character development...

 such as World of Warcraft
World of Warcraft
World of Warcraft is a massively multiplayer online role-playing game by Blizzard Entertainment. It is the fourth released game set in the fantasy Warcraft universe, which was first introduced by Warcraft: Orcs & Humans in 1994...

, only one physics programmer may be needed. For a complex combat game such as Battlefield 1942
Battlefield 1942
Battlefield 1942 is a 3D World War II first-person shooter computer game developed by Swedish company Digital Illusions CE and published by Electronic Arts for Microsoft Windows and Apple Macintosh . The game can be played in singleplayer mode against the computer game AI or in multiplayer mode...

, teams of several physics programmers may be required.
See also: dynamical simulation
Dynamical simulation
Dynamical simulation, in computational physics, is the simulation of systems of objects that are free to move, usually in three dimensions according to Newton's laws of dynamics, or approximations thereto...


Graphics engine programmer

Historically, this title usually belonged to a programmer who developed specialized blitter algorithms
Bit blit
Bit BLIT is a computer graphics operation in which several bitmaps are combined into one using a raster operator....

 and clever optimizations for 2D graphics
2D computer graphics
2D computer graphics is the computer-based generation of digital images—mostly from two-dimensional models and by techniques specific to them...

. 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, PDA
Personal digital assistant
A personal digital assistant , also known as a palmtop computer, or personal data assistant, is a mobile device that functions as a personal information manager. Current PDAs often have the ability to connect to the Internet...

s and handheld game console
Handheld game console
A handheld game console is a lightweight, portable electronic device with a built-in screen, game controls and speakers. Handheld game consoles are run on machines of small size allowing people to carry them and play them at any time or place...

s.

A 3D graphics programmer must have a firm grasp of advanced mathematical concepts such as vector and matrix math, quaternion
Quaternion
In mathematics, the quaternions are a number system that extends the complex numbers. They were first described by Irish mathematician Sir William Rowan Hamilton in 1843 and applied to mechanics in three-dimensional space...

s and linear algebra
Linear algebra
Linear algebra is a branch of mathematics that studies vector spaces, also called linear spaces, along with linear functions that input one vector and output another. Such functions are called linear maps and can be represented by matrices if a basis is given. Thus matrix theory is often...

.

Programmers specializing in this area of game development
Game development
Game development is the software development process by which a video game is developed. Development is undertaken by a game developer, which may range from a single person to a large business. Mainstream games are normally funded by a publisher and take several years to develop. Indie games can...

 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
Video game console
A video game console is an interactive entertainment computer or customized computer system that produces a video display signal which can be used with a display device to display a video game...

 such as the PlayStation 3
PlayStation 3
The is the third home video game console produced by Sony Computer Entertainment and the successor to the PlayStation 2 as part of the PlayStation series. The PlayStation 3 competes with Microsoft's Xbox 360 and Nintendo's Wii as part of the seventh generation of video game consoles...

, Nintendo DS
Nintendo DS
The is a portable game console produced by Nintendo, first released on November 21, 2004. A distinctive feature of the system is the presence of two separate LCD screens, the lower of which is a touchscreen, encompassed within a clamshell design, similar to the Game Boy Advance SP...

, PSP
PlayStation Portable
The is a handheld game console manufactured and marketed by Sony Corporation Development of the console was announced during E3 2003, and it was unveiled on , 2004, at a Sony press conference before E3 2004...

, Wii
Wii
The Wii is a home video game console released by Nintendo on November 19, 2006. As a seventh-generation console, the Wii primarily competes with Microsoft's Xbox 360 and Sony's PlayStation 3. Nintendo states that its console targets a broader demographic than that of the two others...

 and the Xbox 360
Xbox 360
The Xbox 360 is the second video game console produced by Microsoft and the successor to the Xbox. The Xbox 360 competes with Sony's PlayStation 3 and Nintendo's Wii as part of the seventh generation of video game consoles...

.

Artificial intelligence programmer

An AI programmer develops the logic of the game 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
Pathfinding
Pathfinding generally refers to the plotting, by a computer application, of the shortest route between two points. It is a more practical variant on solving mazes...

, 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 game
Strategy game
A strategy game or strategic game is a game in which the players' uncoerced, and often autonomous decision-making skills have a high significance in determining the outcome...

s like Civilization III
Civilization III
Sid Meier's Civilization III, commonly shortened to Civ III or Civ 3, is the third installment of the Sid Meier's Civilization turn-based strategy computer game series. It was preceded by Civilization II and followed by Civilization IV. The game offers very sophisticated gameplay in terms of both...

or role-playing games such as The Elder Scrolls IV: Oblivion
The Elder Scrolls IV: Oblivion
The Elder Scrolls IV: Oblivion is a single-player action role-playing video game developed by Bethesda Game Studios and published by Bethesda Softworks and the Take-Two Interactive subsidiary 2K Games...

, use AI heavily, while others, such as puzzle games, use it sparingly or not at all. Many game developers have created entire languages
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

 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
Mod (computer gaming)
Mod or modification is a term generally applied to personal computer games , especially first-person shooters, role-playing games and real-time strategy games. Mods are made by the general public or a developer, and can be entirely new games in themselves, but mods are not standalone software and...

.

The AI technology used in games programming
Game artificial intelligence
Game artificial intelligence refers to techniques used in computer and video games to produce the illusion of intelligence in the behavior of non-player characters . The techniques used typically draw upon existing methods from the field of artificial intelligence...

 should not be confused with academic AI
Artificial intelligence
Artificial intelligence is the intelligence of machines and the branch of computer science that aims to create it. AI textbooks define the field as "the study and design of intelligent agents" where an intelligent agent is a system that perceives its environment and takes actions that maximize its...

 programming and research. Although both areas do borrow from each other, they are usually considered distinct disciplines. However this is not always true. For example, the 2001 game by Lionhead Studios
Lionhead Studios
Lionhead Studios is a British computer game development company led by industry veteran Peter Molyneux, and acquired by Microsoft Game Studios in April 2006. Lionhead started as a breakaway from the developer Bullfrog, which was also founded by Molyneux. Lionhead's first game was Black & White, a...

 Black & White features a unique AI approach to a user controlled creature who uses learning to model behaviours during game-play. In recent years, more effort has been directed towards intervening promising fields of AI research and game AI programming.

Sound programmer

Not always a separate discipline, sound programming has been a mainstay of game programming since the days of Pong
Pong
Pong is one of the earliest arcade video games, and is a tennis sports game featuring simple two-dimensional graphics. While other arcade video games such as Computer Space came before it, Pong was one of the first video games to reach mainstream popularity...

. Most games make use of audio, and many have a full musical score. Computer audio game
Audio game
An audio game is an electronic game played on a device such as a personal computer. It is similar to a video game save that the only feedback device is audible rather than visual....

s eschew graphics altogether and use sound as their primary feedback mechanism.

Many games use advanced techniques such as 3D positional sound
Surround sound
Surround sound encompasses a range of techniques such as for enriching the sound reproduction quality of an audio source with audio channels reproduced via additional, discrete speakers. Surround sound is characterized by a listener location or sweet spot where the audio effects work best, and...

, 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
Digital signal processing
Digital signal processing is concerned with the representation of discrete time signals by a sequence of numbers or symbols and the processing of these signals. Digital signal processing and analog signal processing are subfields of 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, 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).

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
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

 or assembly language
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...

 by a gameplay programmer.

More often today the core game engine
Game engine
A game engine is a system designed for the creation and development of video games. There are many game engines that are designed to work on video game consoles and personal computers...

 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
Scripting language
A scripting language, script language, or extension language is a programming language that allows control of one or more applications. "Scripts" are distinct from the core code of the application, as they are usually written in a different language and are often created or at least modified by the...

 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++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

.

UI programmer

This programmer specializes in programming user interface
User interface
The user interface, in the industrial design field of human–machine interaction, is the space where interaction between humans and machines occurs. The goal of interaction between a human and a machine at the user interface is effective operation and control of the machine, and feedback from the...

s (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
Computer keyboard
In computing, a keyboard is a typewriter-style keyboard, which uses an arrangement of buttons or keys, to act as mechanical levers or electronic switches...

, 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
Wii Remote
The , also known as the Wiimote, is the primary controller for Nintendo's Wii console. A main feature of the Wii Remote is its motion sensing capability, which allows the user to interact with and manipulate items on screen via gesture recognition and pointing through the use of accelerometer and...

 or Kinect may need a very complex and low latency input system, while the HID
Human interface device
A human interface device or HID is a type of computer device that interacts directly with, and most often takes input from, humans and may deliver output to humans. The term "HID" most commonly refers to the USB-HID specification. The term was coined by Mike Van Flandern of Microsoft when he...

 requirements of a mouse-driven turn-based strategy game such as Heroes of Might and Magic
Heroes of Might and Magic
Heroes of Might and Magic is a series of video games originally created and developed by Jon Van Caneghem through New World Computing. As part of the Might and Magic franchise, the series changed ownership when NWC was acquired by 3DO and again when 3DO closed down and sold the rights to Ubisoft...

are significantly simpler to implement.

Network programmer

This programmer writes code that allows players to compete or cooperate together, connected via a LAN
Län
Län and lääni refer to the administrative divisions used in Sweden and previously in Finland. The provinces of Finland were abolished on January 1, 2010....

 or the Internet
Internet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...

 (or in rarer cases, directly connected via modem
Modem
A modem is a device that modulates an analog carrier signal to encode digital information, and also demodulates such a carrier signal to decode the transmitted information. The goal is to produce a signal that can be transmitted easily and decoded to reproduce the original digital data...

). 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
Lag
Lag is a common word meaning to fail to keep up or to fall behind. In real-time applications, the term is used when the application fails to respond in a timely fashion to inputs...

, 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
is the latest game in Sega's Virtua Fighter series and direct sequel to Virtua Fighter 4: Final Tuned. The original version was released on July 12, 2006 into Japanese arcades and in February 2007 in European arcades...

 for the PS3
PlayStation 3
The is the third home video game console produced by Sony Computer Entertainment and the successor to the PlayStation 2 as part of the PlayStation series. The PlayStation 3 competes with Microsoft's Xbox 360 and Nintendo's Wii as part of the seventh generation of video game consoles...

 is a notable example of this trend.

Game tools programmer

The tools programmer can make game development heaven or unbearably difficult. Tools
Game development tool
A game development tool is a specialized software application that assists or facilitates the making of a computer or video game. Some tasks handled by tools include the conversion of assets into formats required by the game, level editing and script compilation.Almost all game development 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
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

, 3D graphics modelling software and Photoshop are COTS
Commercial off-the-shelf
In the United States, Commercially available Off-The-Shelf is a Federal Acquisition Regulation term defining a nondevelopmental item of supply that is both commercial and sold in substantial quantities in the commercial marketplace, and that can be procured or utilized under government contract...

 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
Porting
In computer science, porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one for which it was originally designed...

 a game from one platform
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

 to another has always been an important activity for game developers. Some programmers specialize in this activity, converting code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 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 phone
Mobile phone
A mobile phone is a device which can make and receive telephone calls over a radio link whilst moving around a wide geographic area. It does so by connecting to a cellular network provided by a mobile network operator...

s. Often, however, "porting" can involve re-writing the entire game from scratch as proprietary languages
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

, tools or hardware make converting source code a fruitless endeavour.

This programmer must be familiar with both the original and target operating systems and languages (for example, converting a game originally written in C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 to Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

), 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
Refactoring
Code refactoring is "disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior", undertaken in order to improve some of the nonfunctional attributes of the software....

, 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
Research and development
The phrase research and development , according to the Organization for Economic Co-operation and Development, refers to "creative work undertaken on a systematic basis in order to increase the stock of knowledge, including knowledge of man, culture and society, and the use of this stock of...

. 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.

Platforms

Game programmers can specialize on one platform or another, such as the Wii
Wii
The Wii is a home video game console released by Nintendo on November 19, 2006. As a seventh-generation console, the Wii primarily competes with Microsoft's Xbox 360 and Sony's PlayStation 3. Nintendo states that its console targets a broader demographic than that of the two others...

 or Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

. 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 between platforms.

Experience needed

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
University
A university is an institution of higher education and research, which grants academic degrees in a variety of subjects. A university is an organisation that provides both undergraduate education and postgraduate education...

 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
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

.

Salary

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 programming.

Results of a 2010 survey indicate that the average salary for a game programmer is USD
United States dollar
The United States dollar , also referred to as the American dollar, is the official currency of the United States of America. It is divided into 100 smaller units called cents or pennies....

$95,300 annually. The least experienced programmers (with less than 3 years experience) generally earn about $74,600, while developers with over six years experience on average earn $125,700.

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 $127,900 annually.

Job security

Though sales of video games rival other forms of entertainment such as movies
Film
A film, also called a movie or motion picture, is a series of still or moving images. It is produced by recording photographic images with cameras, or by creating images using animation techniques or visual effects...

, 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 developer
Video game developer
A video game developer is a software developer that creates video games. A developer may specialize in a certain video game console, such as Nintendo's Wii, Microsoft's Xbox 360, Sony's PlayStation 3, or may develop for a variety of systems, including personal computers.Most developers also...

s, depend upon a steady influx of funds from the video game publisher
Video game publisher
A video game publisher is a company that publishes video games that they have either developed internally or have had developed by a video game developer....

. 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
Bankruptcy
Bankruptcy is a legal status of an insolvent person or an organisation, that is, one that cannot repay the debts owed to creditors. In most jurisdictions bankruptcy is imposed by a court order, often initiated by the debtor....

 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
Hasbro Interactive
Hasbro Interactive was an American video game production and publishing subsidiary of Hasbro, the large game and toy company.Hasbro Interactive was formed late in 1995 in order to compete in the computer and video game arena. Several Hasbro properties, such as Monopoly and Scrabble, had already...

 was sold to Infogrames
Infogrames
Infogrames Entertainment SA was an international French holding company headquartered in Paris, France. It was the owner of Atari, Inc., headquartered in New York City, U.S. and Atari Europe. It was founded in 1983 by Bruno Bonnell and Christophe Sapet using the proceeds from an introductory...

 and several projects were cancelled; or when The 3DO Company
The 3DO Company
The 3DO Company , also known as 3DO , was a video game 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.

Languages and tools

Most commercial computer and video games are written primarily in C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

, C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

, and some assembly language
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...

. 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
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

 is typically used for performance-critical components, such as visual rendering and physics calculations. Almost all PC
IBM PC compatible
IBM PC compatible computers are those generally similar to the original IBM PC, XT, and AT. Such computers used to be referred to as PC clones, or IBM clones since they almost exactly duplicated all the significant features of the PC architecture, facilitated by various manufacturers' ability to...

 games also use either the DirectX
DirectX
Microsoft DirectX is a collection of application programming interfaces for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with Direct, such as Direct3D, DirectDraw, DirectMusic, DirectPlay,...

 or OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

 APIs (or SDL
Simple DirectMedia Layer
Simple DirectMedia Layer is a cross-platform, free and open source multimedia library written in C that presents a simple interface to various platforms' graphics, sound, and input devices....

) to interface with hardware devices.

Various script languages, like KonsolScript
KonsolScript
KonsolScript is a cross-platform scripting language available under Windows and GNU/Linux.It was intentionally developed on 2005 as the scripting language in writing games with KAGE but its interpreter, Quixie, can also be used as common gateway interface for serving web pages.Language design is...

, Lua, and Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

, are also used for the generation of content such as artwork and especially AI. Scripts are generally parsed
Parsing
In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens , to determine its grammatical structure with respect to a given formal grammar...

 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 content design and high-level game logic. Some games are designed with high depedency 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
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 is used for many web browser
Web browser
A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...

 based games because it is cross-platform
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...

, does not usually require installation by the user, and poses fewer security
Secure Computing
Secure Computing Corporation, or SCC, was a public company that developed and sold computer security appliances and hosted services to protect users and data...

 risks, compared to a downloaded executable program. Java is also the dominant language for mobile phone
Mobile phone
A mobile phone is a device which can make and receive telephone calls over a radio link whilst moving around a wide geographic area. It does so by connecting to a cellular network provided by a mobile network operator...

 based games. Adobe Flash
Adobe Flash
Adobe Flash is a multimedia platform used to add animation, video, and interactivity to web pages. Flash is frequently used for advertisements, games and flash animations for broadcast...

 is also a popular development tool for browser-based games using the ActionScript
ActionScript
ActionScript is an object-oriented language originally developed by Macromedia Inc. . It is a dialect of ECMAScript , and is used primarily for the development of websites and software targeting the Adobe Flash Player platform, used on Web pages in the form of...

 language.

As games have grown in size and complexity, middleware
Middleware
Middleware is computer software that connects software components or people and their applications. The software consists of a set of services that allows multiple processes running on one or more machines to interact...

 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
DirectX
Microsoft DirectX is a collection of application programming interfaces for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with Direct, such as Direct3D, DirectDraw, DirectMusic, DirectPlay,...

 and OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

, such as skeletal animation
Skeletal animation
Skeletal animation is a technique in computer animation in which a character is represented in two parts: a surface representation used to draw the character and a hierarchical set of interconnected bones used to animate the mesh...

. 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
PlayStation 2
The PlayStation 2 is a sixth-generation video game console manufactured by Sony as part of the PlayStation series. Its development was announced in March 1999 and it was first released on March 4, 2000, in Japan...

 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
Blender (software)
Blender is a free and open-source 3D computer graphics software product used for creating animated films, visual effects, interactive 3D applications or video games. The current release version is 2.60, and was released on October 19, 2011...

, GIMP
GIMP
GIMP is a free software raster graphics editor. It is primarily employed as an image retouching and editing tool and is freely available in versions tailored for most popular operating systems including Microsoft Windows, Apple Mac OS X, and Linux.In addition to detailed image retouching and...

, Photoshop, Maya
Maya (software)
Autodesk Maya , commonly shortened to Maya, is 3D computer graphics software that runs on Microsoft Windows, Mac OS and Linux, originally developed by Alias Systems Corporation and currently owned and developed by Autodesk, Inc. It is used to create interactive 3D applications, including video...

 or 3D Studio Max
3D Studio Max
Autodesk 3ds Max, formerly 3D Studio MAX, is for making 3D animations. It was developed and produced by Autodesk Media and Entertainment. It has modeling capabilities, a flexible plugin architecture and can be used on the Microsoft Windows platform. It's frequently used by video game developers, TV...

) enable programmers to view and modify assets generated by artists or other production personnel. Source control
Revision control
Revision control, also known as version control and source control , is the management of changes to documents, programs, and other information stored as computer files. It is most commonly used in software development, where a team of people may change the same files...

 systems keep source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 safe, secure and optimize merging. IDE
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...

s with debugger
Debugger
A debugger or debugging tool is a computer program that is used to test and debug other programs . The code to be examined might alternatively be running on an instruction set simulator , a technique that allows great power in its ability to halt when specific conditions are encountered but which...

s (such as Visual Studio) make writing code and tracking down bugs a less painful experience.

See also: Game development tool
Game development tool
A game development tool is a specialized software application that assists or facilitates the making of a computer or video game. Some tasks handled by tools include the conversion of assets into formats required by the game, level editing and script compilation.Almost all game development tools...

 and Tools from game programming
Game programming
Game programming, a subset of game development, is the programming of computer, console or arcade games. Though often engaged in by professional game programmers, many novices may program games as a hobby...


See also

  • List of notable game programmers
  • Code Monkeys
    Code Monkeys
    Code Monkeys is an American animated television program created by Adam de la Peña. Set in the early 1980s, it follows the adventures of fictional video game company GameaVision....

    , an animated show about game programmers
  • Programmer
    Programmer
    A programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK