is deemed complete, it is said to have "gone gold" and is shipped off to the publisher. Depending on circumstances, the publisher may then subject it to its own quality assurance or may begin pressing the game from the gold master. Maintenance Once a game ships, the maintenance phase for the video game begins. Programmers wait for a period to get as many bug reports as possible. Once the developer thinks they've obtained enough feedback, the programmers start working on a patch. The patch may take weeks or months to develop, but it's intended to fix most bugs and problems with the game. Occasionally a patch may include extra features or content or may even alter gameplay. Duration Most modern games take from one to three years to complete. The length of development depends on a number of factors, but programming is required throughout all phases of development except the very early stages of game design. Tools Like other software, game development programs are generated from source code to the actual program (called the executable) by a compiler. Source code can be developed with almost any text editor, but many professional game programmers use a full integrated development environment. Once again, which IDE one uses depends on the target platform. In addition to IDEs, many game development companies create custom tools developed to be used in-house. Some of these include prototypes and asset conversion tools (programs that change artwork, for example, into the game's custom format). Some custom tools may even be delivered with the game, such as a level editor. 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. Programming languages Once the game's initial design has been agreed upon, the development language must be decided upon. The choice depends upon many factors, such as language familiarity of the programming staff, target platforms, the execution speed requirements and the language of any game engines, APIs or libraries being used. For personal computers, the language selected may be little more than a matter of preference. Language bindings for popular libraries such as SDL and Allegro are widespread, and the performance gap between idiomatic code written in modern compiled languages is negligible. The most popular languages are