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 .
* 1 History
* 2 Disciplines
* 2.1 Game engine programmer
* 3 Platforms * 4 Education * 5 Salary * 6 Job security * 7 Languages and tools * 8 See also * 9 Notes * 10 References * 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 power.
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
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
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.
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 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. 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
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 linear algebra .
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
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 are significantly simpler to implement.
This programmer writes code that allows players to compete or
cooperate, connected via a
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 template message )
GAME TOOLS PROGRAMMER
The tools programmer can assist the development of a game by writing
custom tools for it.
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 endeavour.
This programmer must be familiar with both the original and target
operating systems and languages (for example, converting a game
originally written in
The technology programmer is more likely to be found in larger development studios with specific departments dedicated solely to R">
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 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 $127,900 annually.
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
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 devices.
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.
As games have grown in size and complexity, middleware is becoming
increasingly popular within the industry.
Other tools are also essential to game developers: 2D and 3D packages
(for example Blender ,
See also: Game development tool and Tools from game programming
* ^ 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, 2008.
* ^ 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.
* ^ "The
* Bates, Bob (2004). Game Design (2nd ed.). Thomson Course Technology. ISBN 1-59200-493-8 . * 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 .