Video games, like programming languages, have made great strides in the past 50 years. The earliest video games were simple, reflecting the nature of the languages they were written in, the difficulty involved in their creation, and the skills of those who wrote them. As time went on, new programming languages came into existence along with new programming techniques, and more complicated video games became possible. Over the decades, video games evolved from something that only researchers could produce to content that everyday people could make. This was due to the power of computer languages, whose increased sophistication made it simpler for programmers to do more powerful and complicated things. As video games evolved, so did the actual process of making games.
Just about any computer language is useful for making video games, but in every generation, there are some that are much more popular than others. Assembly language was one of the first popular methods of coding video games. For instance, one of the first games to be made, Spacewar! for the DEC PDP-1, was written in assembly language in 1962. Assembly language was also used with early consoles such as the Atari 2600 and the Nintendo Entertainment System. Assembly language is machine-specific, which means that it is tied to a particular machine and is thus not portable to other computer systems, which made it necessary to turn to other, more advanced languages as video games evolved. However, even into the 1980s, these languages were not feasible for making video games, since computers and gaming consoles had small amounts of computer memory. This changed, however, with the advent of personal computers that came with increased amounts of memory for data storage. Personal computers came with memory capacities of 4 kilobytes and beyond, which enabled the systems to use languages like BASIC. In turn, this enabled users to make their own video games on systems like the Apple II, Commodore PET, VIC-20, Commodore 64, Texas Instruments TI-99/4a, and TRS-80. Computer magazines such as Compute! routinely published video game code in machine language and BASIC for the earliest personal computers on the market.
More advanced computers entered the market, such as the Apple IIGS, Atari ST, and Commodore Amiga, with memory capacities starting at 256 kilobytes, which allowed for more sophisticated languages to be used. These languages produced code that often had higher memory requirements, especially for the most advanced games that they produced. The C language became a method of writing video games in the 1980s but did not start to significantly supplant assembly language until the 1990s. C slowly grew in popularity, followed by C++ and C#, which all became useful for making video games over the years. The advent of C brought with it the increased ease of portability, which meant one video game could be more easily recompiled to run on different systems. This saved development time and money. In the late 1990s and 2000s, Java arose as another popular programming language, particularly for Internet-based and mobile games.
As video games became more advanced, they acquired the ability to let gamers add their own modifications. This was facilitated by the emergence of script programming. Script programming involves writing code that the video game itself interprets. This code can do anything from creating new in-game quests to changing the appearance of the game. Game modifications and scripts may also be written by developers into the game itself prior to its release or in subsequently released downloadable content (DLC). Popular languages for writing modification scripts include Lua, Python, Perl, and Lisp. Many of the bigger-budget video games use their own proprietary internal languages for scripting and modifications as well.
The process of programming a video game has become relatively complicated compared to decades past. For smaller games, one person may be able to do the work alone. For larger projects, however, it may be necessary to have many programmers, each of whom specializes in a different aspect of the project. For instance, some programmers may specialize in coding the actual game engine, while others may be needed to work on in-game graphics, non-player character (NPC) artificial intelligence, video game physics, sound engineering, gameplay and user interface design, and other aspects. Still other programmers may work separately on writing custom and proprietary game tools or making the game code easier to recompile for multiple computer systems and game consoles. When it comes to multiplayer games, the project will also need someone who specializes in network programming. Typically, their job is to write and optimize the transmission of game data across networks, whether it's running on a local area network or communicating with other computers on the Internet.
Programming and Video Gaming
Computer Programming Resources