Video game programmer

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.

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.

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.

Historically, this title usually belonged to a programmer who developed specialized blitter algorithms and clever optimizations for 2D graphics.

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.

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

This programmer may implement strategy tables, tweak input code, or adjust other factors that alter the game.

In early video games, gameplay programmers would write code to create all the content in the game—if the player was supposed to shoot a particular enemy, and a red key was supposed to appear along with some text on the screen, then this functionality was all written as part of the core program in C or assembly language by a gameplay programmer.

Input programming, while usually not a job title, or even a full-time position on a particular game project, is still an important task.

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.

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.

Game development Tools often contain features such as script compilation, importing or converting art assets, and level editing.

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.

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.

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.

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.

Also, general game development principles such as 3D graphics programming concepts, sound engineering and user 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 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").

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.

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.

Almost all PC games also use either the DirectX, OpenGL APIs or some wrapper library to interface with hardware devices.

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.

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.

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

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