WIKIBOOKS
DISPONIBILI
?????????

ART
- Great Painters
BUSINESS&LAW
- Accounting
- Fundamentals of Law
- Marketing
- Shorthand
CARS
- Concept Cars
GAMES&SPORT
- Videogames
- The World of Sports

COMPUTER TECHNOLOGY
- Blogs
- Free Software
- Google
- My Computer

- PHP Language and Applications
- Wikipedia
- Windows Vista

EDUCATION
- Education
LITERATURE
- Masterpieces of English Literature
LINGUISTICS
- American English

- English Dictionaries
- The English Language

MEDICINE
- Medical Emergencies
- The Theory of Memory
MUSIC&DANCE
- The Beatles
- Dances
- Microphones
- Musical Notation
- Music Instruments
SCIENCE
- Batteries
- Nanotechnology
LIFESTYLE
- Cosmetics
- Diets
- Vegetarianism and Veganism
TRADITIONS
- Christmas Traditions
NATURE
- Animals

- Fruits And Vegetables



ARTICLES IN THE BOOK

  1. Action game
  2. Advergaming
  3. Arcade machine
  4. Artificial intelligence
  5. Atari Games
  6. Atari Lynx
  7. Audio game
  8. Board games
  9. Browser game
  10. Casual game
  11. Christian video games
  12. Comparison of handheld gaming consoles
  13. Computer and video games
  14. Computer animation
  15. Computer-assisted role-playing game
  16. Computer graphics
  17. Computer role-playing game
  18. Console game
  19. Dr. Mario
  20. Famicom
  21. First person shooter
  22. Game
  23. Game balance
  24. Game Boy
  25. Game Boy Advance
  26. Game Boy Color
  27. Game Boy line
  28. Game Boy Micro
  29. Game classification
  30. Game controller
  31. Game design
  32. Game designer
  33. Game developer
  34. Game Developer Magazine
  35. Game development
  36. Game development tool
  37. Game mechanic
  38. Gameplay
  39. Game programmer
  40. Game programming
  41. Gamer
  42. Game server browser
  43. Game studies
  44. Gaming convention
  45. Golden Age of Arcade Games
  46. Handheld game console
  47. History of computer and video games
  48. History of video game consoles
  49. History of video games
  50. Hotseat
  51. Internet gaming
  52. Joystick
  53. LAN gaming center
  54. List of books about computer and video games
  55. List of commercial failures in computer and video gaming
  56. List of gaming topics
  57. Mobile game
  58. Multiplayer game
  59. N-Gage
  60. Nintendo 64
  61. Nintendo DS
  62. Nintendo GameCube
  63. Personal computer game
  64. Pinball
  65. Play-by-mail game
  66. Play-by-post game
  67. PlayStation 3
  68. PlayStation Portable
  69. Pong
  70. Programming game
  71. Puzzle computer game
  72. Real-time strategy
  73. Sega Dreamcast
  74. Sega Saturn
  75. Serious game
  76. Simulation game
  77. Single player
  78. Sony PlayStation
  79. Stealth-based game
  80. Strategy game
  81. Strategy guide
  82. Super Nintendo Entertainment System
  83. Synthespian
  84. Tabletop role-playing game
  85. Teamspeak
  86. Tetris
  87. Tokyo Game Show
  88. Video game center
  89. Video game console
  90. Video game crash of 1983
  91. Video game industry
  92. Video game publisher
  93. Wargame
  94. Wii
  95. Xbox 360

 



VIDEO & COMPUTER GAMES
This article is from:
http://en.wikipedia.org/wiki/Game_programmer

All text is available under the terms of the GNU Free Documentation License: http://en.wikipedia.org/wiki/Wikipedia:Text_of_the_GNU_Free_Documentation_License 

Game programmer

From Wikipedia, the free encyclopedia

 

A game programmer is a software engineer who primarily develops computer or video games or related software (such as game development tools). Game programming has many specialized disciplines; practitioners of any may regard themselves as "game programmers". A game programmer should not be confused with a game designer; many designers are also programmers, but not all are, and it is rare for one person to serve both roles in modern professional games.

History

The Apple II series was a popular game platform during the home computer era.  Despite being outperformed by later systems, it remained popular until the early 1990s.
The Apple II series was a popular game platform during the 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.

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 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, 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 programmer's 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 physics programmer

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. 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 Might and Magic, only one physics programmer may be needed. For a complex combat game such as Battlefield 1942 or The Legend of Zelda: Ocarina of Time, teams of several physics programmers may be required.

See also: dynamical simulation

Artificial intelligence programmer

Advanced artificial intelligence (AI) such as that found in Civilization III takes significant programming staff to develop.
Advanced artificial intelligence (AI) such as that found in Civilization III takes significant programming staff to develop.

An AI programmer develops the logic the game uses to carry out a large number of actions. 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. According to Game Developer Magazine, many contemporary games dedicate sixty percent of their programming staff to AI.

Game AI programming should not be confused with academic AI programming and research: game programming has little use for developments in this area of study. Although both areas do borrow from each other from time to time, they are usually considered distinct disciplines.

Some games, such as strategy games like Civilization III or role-playing 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.

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

A 3D graphics programmer must have a firm grasp on advanced mathematical concepts such as vector and matrix math, quaternions and linear algebra.

Programmers specializing in this area of game development 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 such as the PlayStation 3, Wii and the Xbox 360.

A 3D graphics programmer may also specialize in a subset of 3D graphics programming, such as pixel shaders or vertex shaders.

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 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 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===your really stupid if you wan to know what this is

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 monster, and a red key was supposed to appear along with some text on the screen, then this functionality was all written in C or assembly language by a gameplay programmer.

These days, large game projects have a team of scripters to implement this sort of game content. Scripters usually are also game designers, and it is easier to find and employ a qualified game designer who can be taught a script language, as opposed to the difficulty of finding a qualified game designer who has mastered C++ on the target platform.

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.
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 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 first person shooter such as Quake may need a very complex and low latency input system, while the needs of a turn-based strategy game such as Heroes of Might and Magic are much lower.

Network programmer

This programmer writes code that allows players to compete against each other (or play together) connected via a LAN or the Internet (or in rarer cases, directly connected via modem). Programmers implementing this feature of a game can spend all their time on this one task. Network programming is one of the most challenging game programming roles. These programmers have to deal with network latency, packet compression, and dropped or interrupted connections. Though this type of programming can consume the entire development process, network programming is, unfortunately, often put off until the last few months of development, adding additional difficulties to this role.

Game tools programmer

One of the less recognized members of the development team, the tools programmer can make game development heaven or unbearably difficult. 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, 3D graphics modeling software and Photoshop are COTS 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, most tools are not carefully implemented.

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 re-writing the entire game from scratch as proprietary languages, tools or hardware make converting source code a fruitless endeavor.

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

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

The PlayStation 2 is one of the platforms for which a game programmer may specialize.  It is rare to "specialize" in more than one platform, but programmers who specialize in portable disciplines such as AI may find their experience is transferrable to several platforms.
The PlayStation 2 is one of the platforms for which a game programmer may specialize. It is rare to "specialize" in more than one platform, but programmers who specialize in portable disciplines such as AI may find their experience is transferrable to several platforms.

Most game programmers specialize on one platform or another. For example, a programmer can specialize on the Xbox 360, PlayStation 3, Wii, Apple Mac OS X Leopard, or Microsoft Windows Vista. 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 2 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 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 should offer a well-rounded education that includes all the fundamentals of software engineering.

Compensation

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. However, most game programmers feel it is worth the sacrifice for the fun and casual working environments.

Generally, lead programmers are the most well compensated, though some 3D graphics programmers may challenge or surpass their salaries.

A controversial subject in the game industry recently has been the issue of unpaid overtime, particularly as highlighted by an anonymous blog entry by ea_spouse[1], who described some of the darker aspects of working in the industry: at some companies, "crunch time" (a period where programmers will often work around the clock to finish a project) has become the expected norm through the whole development cycle. This is not true of all companies however, and many game studios provide excellent working environments and conditions.

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.

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

Microsoft Visual Studio is one of the tools (an IDE) that game programmers may use to build games for Windows or the Xbox.
Microsoft Visual Studio is one of the tools (an IDE) that game programmers may use to build games for Windows or the Xbox.

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 or OpenGL APIs (or SDL) to interface with hardware devices. Xbox games use an API similar to DirectX.

Various script languages are also used for the generation of content such as artwork 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 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 is used for many web browser based games because it is cross-platform, does not usually require installation by the user, and does not pose security risks, as may a downloaded executable program. Java is also the dominant language for mobile phone based games. Macromedia Flash is also a popular development tool for browser-based games (there is some debate as to whether Flash actually constitutes a "language," but it is a popular web-based game development medium).

As games have grown in size and complexity, middleware 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 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, PC to PS2 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 Photoshop, Maya and 3D Studio Max) enable artists to produce cutting edge art and animations; source control systems keep precious code safe, secure and optimise merging; and IDEs with debuggers (such as Visual Studio or CodeWarrior) make writing code and tracking down bugs a less painful experience.

See also: Game development tool and Tools from game programming

Notable game programmers

A few game programmers have garnered renown among game developers and game players alike.

  • Michael Abrash: prolific author of optimized graphic routines
  • David Braben: co-creator of Elite
  • Danielle Bunten Berry: developer of several early groundbreaking games, such as M.U.L.E. and The Seven Cities of Gold
  • John Carmack: programmer of many groundbreaking 3D games such as Wolfenstein 3D, the Doom series and the Quake series
  • Richard Garriott (a.k.a. Lord British): developer of the Ultima series among others
  • Jordan Mechner: developer of several games with groundbreaking animation, such as Karateka and the Prince of Persia series
  • Sid Meier: developer of numerous successful series, such as Civilization, Pirates! and Railroad Tycoon, among others
  • Alan Miller: co-founder of the first independent console game publisher and programmer of several early Atari 2600 games
  • Jeff Minter: founder of Llamasoft
  • Chris Sawyer: programmer and designer of Transport Tycoon series and Roller Coaster Tycoon
  • Ken Silverman: creator of the Build engine, used to develop many popular games
  • Tim Sweeney: creator of the Unreal Engine
  • Anne Westfall: programmer of all versions of home computer era game Archon
  • Will Wright: programmer turned designer of most Sim- games including SimCity, The Sims and the forthcoming Spore

See also

  • List of programmers
  • List of game programmers

External links

  • Gamasutra, Game Developer Magazine's sister site
  • Game Developers Conference, a yearly event
  • Game Programming Wiki
  • International Game Developers association
  • Game Programming Q&A from ArenaNet
  • The Giant List of Classic Game Programmers
  • One ex-game programmer's experience in the game development industry

Game programming sites

  • Gamedev.net, a popular game programming site
  • DevMaster.net, another popular game development site
Retrieved from "http://en.wikipedia.org/wiki/Game_programmer"