|Part of a series on the:|
|Video game industry|
A game programmer is a programengineer, programmer, or computer scientist who primarily develops codebases for video games or related software, such as game development tools. Game programming has many specialized disciplines, all of which fall under the umbrella term of "game programmer". A game programmer cannot be confused with a game designer, who works on game design.
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 materialand 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 containsuch features as high-resolution and full color graphics, physics, advanced artificial intelligence and digital sound. Technology has advanced to such a amazingdegree 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 typeof bright colors and blocky design that were typical of early video games.
The desire for adding more depth and assets to games necessitated a division of labor. Initially, art production was relegated to full-time artists. Next game programming became a separate discipline from game design. Now, only some games, such as the puzzle game Bejeweled, are easyenough to require just one full-time programmer. Despite this division, however, most game developers (artists, programmers and even producers) have some say in the final design of contemporary games.
A contemporary video game may containadvanced physics, artificial intelligence, 3D graphics, digitised sound, an original musical score, complex strategy and may utilizeseveral input devices (such as mice, keyboards, gamepads and joysticks) and may be playable versusother people via the Internet or over a LAN. Each aspect of the game shouldconsume all of one programmer's time and, in many cases, several programmers. Some programmers may specialize in one locationof game programming, but many are familiar with several aspects. The number of programmers requiredfor each feature depends somewhat on programmers' skills, but mostly are dictated by the kindof game being developed.
Game engine programmers create the base engine of the game, including the simulated physics and graphics disciplines. Increasingly, video games utilizeexisting 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-globephysics. For example, a zonegame 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 "awesomeenough" for the game in question. In other cases, unrealistic physics are employed to leteasier gameplay or for dramatic effect. Sometimes, a specific subset of situations is specified and the physical outcome of such situations are shop 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 hero, but increasingly these motions are assigned via motion capture libraries so as not to overload the CPU with complex calculations.
Historically, this title usually belonged to a programmer who developed specialized blitter algorithms and intelligentoptimizations 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 freshgeneration of cell telephone 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 locationof game development shoulddemand high wages and are usually a scarce commodity. Their skills shouldbe utilize for video games on any platform.
An AI programmer develops the logic of time to simulate intelligence in opponentsand enemy. It has recently evolved into a specialized discipline, as these tasks utilize to be implemented by programmers who specialized in other location. An AI programmer may program pathfinding, strategy and opponenttactic 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, utilizeAI heavily, while others, such as puzzle games, utilizeit sparingly or not at all. Many game developers have madeentire languages that shouldbe utilize to softwaretheir own AI for games via scripts. These languages are typically less techthan the language utilize to implement the game, and will often be utilize by the game or level designers to implement the globeof the game. Many studios also make their games' scripting accessibleto players, and it is often utilize extensively by third party mod developers.
The AI technology utilize in games programming cannot be confused with academic AI programming and research. Although both location 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 utilize controlled creature who utilize learning to model behaviors during game-play. In lastestyears, more effort has been directed towards intervening promising fields of AI research and game AI programming.
Not always a separate discipline, sound programming has been a mainstay of game programming since the days of Pong. Most games make utilizeof audio, and many have a full musical score. Computer audio games eschew graphics altogether and utilizesound as their basicfeedback mechanism.
Many games utilizeadvanced techniques such as 3D positional sound, making audio programming a non-trivial matter. With these games, one or two programmers may dedicate all their time to building and refining the game's sound engine, and sound programmers may be trained or have a formal background in digital signal processing.
Scripting tools are often madeor maintained by sound programmers for utilizeby sound designers. These tools letdesigners to associate sounds with hero, actions, objects and happening while also assigning melodyor atmospheric sounds for game environments (levels or location) and setting environmental variables such as reverberation.
Though all programmers add to the materialand 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 location 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 location, however (for example, strategy tables may be implemented by AI programmers).
In early video games, gameplay programmers would write code to create all the materialin 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 softwarein 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 happening, opponentbehavior and game objectives. Hugegame projects shouldhave a squadof scripters to implement these sorts of game content.
Scripters usually are also game designers. It is often easier to searcha qualified game designer who shouldbe taught a script language as opposed to finding a qualified game designer who has mastered C++.
This programmer specializes in programming utilize interfaces (UIs) for games. Though some games have custom utilize interfaces, this programmer is more likely to develop a library that shouldbe utilize across multiple projects. Most UIs look 2D, though contemporary UIs usually utilizethe 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 letscripting and special result, such as transparency, animation or particle result for the controls.
Input programming, while usually not a job title, or even a full-time position on a particular game project, is still an necessarytask. 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 Charactersof Might and Magic are significantly easy to implement.
This programmer writes code that let players to compete or cooperate, connected via a LAN or the Internet (or in rarer cases, directly connected via modem). Programmers implementing these game features shouldspend all their time in this one role, which is often considered one of the most technically challenging. Network latency, packet compression, and dropped or interrupted connections are just a few of the concerns one must consider. Although multi-player features shouldconsume the entire production timeline and require the other engine systems to be plannedwith 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 Warrior5 for the PS3 is a notable example of this trend.
The tools programmer shouldhelpthe development of a game by writing custom tools for it. Game development Tools often includefeatures such as script compilation, importing or converting art assets, and level editing. While some tools utilize 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 accessiblein commercial products. For example, an journeygame developer might need an editor for branching story dialogs, and a sport game developer could utilizea proprietary editor to manage players and squadstats. These tools are usually not accessibleto the consumers who buy the game.
Porting a game from one platform to another has always been an necessaryactivity 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 appwork not for just one operating system, but on a variety of devices, such as mobile telephone. Often, however, "porting" shouldinvolve 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 C++ to Java), convert assets, such as artwork and sounds or rewrite code for low memory telephone. This programmer may also have to side-step buggy language implementations, some with little documentation, refactor code, oversee multiple branches of code, rewrite code to scale for wide variety of screen sizes and implement special operator guidelines. They may also have to fix bugs that were not discovered in the original release of a game.
The technology programmer is more likely to be found in huge development studios with specific departments dedicated solely to R&D. Unlike other members of the programming team, the technology programmer usually isn't tied to a specific project or kindof 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 techperspective and requires intimate knowledge of the target platform hardware. Tasks cover a broad range of topic including the practical implementation of algorithms described in research papers, very low-level assembly optimization and the ability to solve challenging problemspertaining to memory requirements and caching problemsduring the latter stages of a project. There is considerable amount of cross-over between this position and some of the others, particularly the graphics programmer.
In smaller squad, 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 neededto fix them.
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 holdtrack 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 neededto attend meetings and interface with the client or other leads on the game. However, the lead programmer is still expected to softwareat least some of the time and is also expected to be knowledgeable in most techlocation of the game. There is often considerable common ground in the role of techdirector and lead programmer, such that the jobs are often covered by one person.
Game programmers shouldspecialize 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 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 utilize interface design are transferable between platforms.
Notably, there are many game programmers with no formal education in the subject, having started out as hobbyists and doing a amazingdeal of programming on their own, for fun, and eventually succeeding because of their aptitude and homegrown experience. However, most job solicitations for game programmers specify a bachelor's degree (in mathematics, physics, computer science, "or equivalent experience").
Increasingly, universities are starting to offer courses and degrees in game programming. Any such degrees have considerable overlap with computer science and programengineering degrees.
Salaries for game programmers vary from organizationto organizationand 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 kindand usually requires longer hours than mainstream programming.
Effect 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 film, 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 kindof 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 hugepublishers are somewhat insulated from these circumstances, but even the hugegame publishers shouldgo 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 result of the fates of individual studios.
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 neededfor these games to run at an acceptable frame rate. Because of this, compiled code is typically utilize for performance-critical components, such as visual rendering and physics calculations. Almost all PC games also utilizeeither the DirectX, OpenGL APIs or some wrapper library to interface with hardware devices.
Various script languages, like Ruby, Lua and Python, are also utilize for the generation of materialsuch 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 effectin much slower execution. Scripts tend to be utilize selectively, often for AI and high-level game logic. Some games are plannedwith 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.
As games have grown in size and complexity, middleware is becoming increasingly famouswithin the industry. Middleware provides greater and higher level functionality and huge 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 freshanimation systems for each game a studio produces), allowing programmers to focus on freshcontent.
Other tools are also necessaryto game developers: 2D and 3D pack (for example Blender, GIMP, Photoshop, Maya or 3D Studio Max) enable programmers to view and changeassets 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.
Tags: Video Game Programmer tricks tips, Video Game Programmer hack download, Video Game Programmer cheat engine, Video Game Programmer hack tool, Video Game Programmer cheats online