video game programmer part of a series on thevideo game industry activitiesjobs video game design game design game art design game development game developer game modification game producer game programming game programmer game publisher game studies game testing game journalism level design development game ai game design interaction design game programming level design video game art video game design video game graphics video game music types adult game casual game indie game nongame interactive art interactive movie nonviolent video game serious game advergame art game edugame exergame topics digital rights management drm outsourcing software license enduser license agreement eula video game preservation related video game history of video games lists list of indie game developers list of video game developers list of video game industry people list of video game publishers list of video game websites vte 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 history 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 mid1980s 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 highresolution 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 fulltime artists next game programming became a separate discipline from game design now only some games such as the puzzle game bejeweled are simple enough to require just one fulltime programmer despite this division however most game developers artists programmers and even producers have some say in the final design of contemporary games disciplines 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 programmers 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 games physics programmer is dedicated to developing the physics a game will employ typically a game will only simulate a few aspects of realworld 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 roleplaying 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 required 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 some games such as strategy games like civilization iii or roleplaying 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 by lionhead studios black white features a unique ai approach to a user controlled creature who uses learning to model behaviors during gameplay sound programmer not always a separate discipline sound programming has been a mainstay of game programming since the days of pong most games make use of audio and many have a full musical score computer audio games eschew graphics altogether and use sound as their primary feedback mechanism many games use advanced techniques such as 3d positional sound making audio programming a nontrivial matter with these games one or two programmers may dedicate all their time to building and refining the games 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 gameplay programmer though all programmers add to the content and experience that a game provides a gameplay programmer focuses more on a games strategy implementation of the games 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 games 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 video games gameplay programmers would write code to create all the content in the gameif the player was supposed to shoot a particular enemy and a red key was supposed to appear along with some text on the screen then this functionality was all written as part of the core program in c or assembly language by a gameplay programmer more often today the core game engine is usually separated from gameplay programming this has several development advantages the game engine deals with graphics rendering sound physics and so on while a scripting language deals with things like cinematic events enemy behavior and game objectives large game projects can have a team of scripters to implement these sorts of game content scripters usually are also game designers it is often easier to find a qualified game designer who can be taught a script language as opposed to finding a qualified game designer who has mastered c ui programmer this programmer specializes in programming user interfaces uis for games though some games have custom user interfaces this programmer is more likely to develop a library that can be used across multiple projects most uis look 2d though contemporary uis usually use the same 3d technology as the rest of the game so some knowledge of 3d math and systems is helpful for this role advanced ui systems may allow scripting and special effects such as transparency animation or particle effects for the controls input programmer 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 fulltime 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 realtime motioncontrolled 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 mousedriven turnbased strategy game such as heroes of might and magic are significantly simpler to implement network programmer 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 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 programmer porting a game from one platform to another has always been an important activity for game developers some programmers specialize in this activity converting code from one operating system to work on another sometimes the programmer is responsible for making the application work not for just one operating system but on a variety of devices such as mobile phones often however porting can involve rewriting 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 c to java convert assets such as artwork and sounds or rewrite code for low memory phones this programmer may also have to sidestep buggy language implementations some with little documentation refactor code oversee multiple branches of code rewrite code to scale for wide variety of screen sizes and implement special operator guidelines they may also have to fix bugs that were not discovered in the original release of a game technology programmer the technology programmer is more likely to be found in larger development studios with specific departments dedicated solely to rd unlike other members of the programming team the technology programmer usually isnt 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 lowlevel 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 crossover 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 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 programmers title might be playstation 3 3d graphics programmer some disciplines such as ai are transferable to various platforms and neednt 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 education 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 bachelors 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 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 in the united states indicate that the average salary for a game programmer is usd95300 annually the least experienced programmers with less than 3 years of experience make an average annual salary of over 72000 the most experienced programmers with more than 6 years of experience make an average annual salary of over 124000 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 127900 annually job security 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 thirdparty developers the most common type of video game developers depend upon a steady influx of funds from the video game publisher if a milestone or deadline is not met or for a host of other reasons like the game is cancelled funds may become short and the developer may be forced to retrench employees or declare bankruptcy and go out of business game programmers who work for large publishers are somewhat insulated from these circumstances but even the large game publishers can go out of business as when hasbro interactive was sold to infogrames and several projects were cancelled or when the 3do company went bankrupt in 2003 and ceased all operations some game programmers resumes consist of short stints lasting no more than a year as they 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 performancecritical 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 highlevel 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 crossplatform 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 javascript are popular development tools for browserbased 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 experience see also game development tool and tools from game programming list of notable game programmers code monkeys an animated show about game programmers programmer game design notes bates bob 2004 game design 2nd ed thomson course technology isbn1592004938 moore michael e novak jeannie 2010 game industry career guide delmar cengage learning isbn142837647x evans richard 2002 rabin steve ed ai game programming wisdom charles river media isbn1584500778 game industry veteran tom slopers advice on game programming the programmer at eurocom 