Though often engaged in by professional game programmers, there is a thriving scene of independent developers who lack a relationship with a publishing company.
Occasionally the game development process starts with no clear design in mind, but as a series of experiments.
For example, game designer Will Wright began development of The Sims by getting programmers to experiment with several ideas.
Prototypes are developed quickly with very little time for up-front design and mostly act as a proof of concept or to test ideas.
As the game development progresses, the design document changes as programming limitations and new capabilities are discovered and exploited.
The lead is responsible for knowing the status of all facets of the game's programming and for pointing out limitations.
To help artists and level designers with their tasks, programmers may volunteer or be called upon to develop tools and utilities.
[3] Final tasks include "polishing" the game, such as programmers fixing occasional bugs—from minor to catastrophic—that may arise during the last phases of testing.
Depending on circumstances, the publisher may then subject it to its own quality assurance or may begin pressing the game from the gold master.
The patch may take weeks or months to develop, but it's intended to fix most bugs and problems with the game.
Some of these include prototypes and asset conversion tools (programs that change artwork, for example, into the game's custom format).
Game development companies are often very willing to spend thousands of dollars to make sure their programmers are well equipped with the best tools.
A well outfitted programmer may have two to three development systems and multiple monitors dominating their office or cubicle.
[10] However, developers may take into account domain-specific features, such as interfacing with the operating system, and resilience to reverse engineering for online video games.
In the past, video games for consoles were written almost exclusively in assembly due to limited resources in terms of both storage and processing speed.
Lua is a very popular choice, as its API is written in ANSI C and the language is designed to be embedded into other applications.
Since it comes pre-installed on almost eighty percent of Smartphones sold, Android has the second largest user base, and increasing.
Microsoft developed DirectX for game programmers and continues to add features to the API.
The DirectX specification is not controlled by an open arbitration committee and Microsoft is free to add, remove or change features.
The ARB meets periodically to update the standard by adding emerging support for features of the latest 3D hardware.
The situation may change in the future as the OpenGL architecture review board (ARB) has passed control of the specification to the Khronos Group in an attempt to counter the problem.
[18] For development on Microsoft Windows, the various APIs of DirectX may be used for input, sound effects, music, networking and the playback of videos.
For example, games written for DOS and many consoles can dominate and exploit available processing resources without restraint.
This has the disadvantage of (slightly) increased overhead, but the game may run more smoothly and efficiently on hyper-threading or multicore processors and on multiprocessor platforms.
The only platforms widely available for hobbyists to program are consumer operating systems, such as Android, iOS, Windows, Mac, Linux, etc.
Often these must be obtained from the console manufacturer and are only sold or leased to professional game development studios.