Video game programming
Game programming, a subset of game development, is the software development of video games. Game programming requires substantial skill in software engineering and computer programming in a given language, as well as specialization in one or more of the following areas: simulation, computer graphics, artificial intelligence, physics, audio programming, and input. For multiplayer games, knowledge of network programming is required (the resultant code, in addition to its performance characteristics, is commonly referred to as the game's netcode by players and programmers alike). In some genres, e.g. fighting games, advanced network programming is often demanded, as the netcode and its properties (e.g. latency) are considered by players and critics to be some of the most important metrics of the game's quality. For massively multiplayer online games (MMOGs), even further knowledge of database programming and advanced networking programming are required. Though often engaged in by professional game programmers, there is a thriving scene of independent developers who lack a relationship with a publishing company.
This article is about programming video games. For a broader overview of the subject, see video game development.Hobbyists[edit]
The only platforms widely available for hobbyists to program are consumer operating systems, such as Android, iOS, Windows, Mac, Linux, etc. This is because development on game consoles requires special development systems that cost thousands of dollars. Often these must be obtained from the console manufacturer and are only sold or leased to professional game development studios. However, Microsoft used to distribute a game development framework, XNA, which runs on both Microsoft Windows and Xbox 360. XNA was discontinued, but other projects like MonoGame and SharpDX are trying to allow the same access for game coding. Lately, Android is the most popular hobbyist platform of choice for mobile developers.[20] Some hobbyists also develop homebrew games, especially for handheld systems or modded consoles.
Some software engineering students program games as exercises for learning a programming language or operating system.
Some hobbyists may use software packages that help with game development, such as Adobe Animate, Unity, Android Studio, pygame, Adventure Game Studio, Roblox Studio, GameMaker Studio, Godot, Unreal Engine, Pixel Game Maker MV, or Construct.