Game programming is a subset of game development as developing a complete game may require multiple other things. It is nothing but the software development of video games. It requires substantial skill in software engineering as well as specialisation in one or more of the areas like simulation, computer graphics, artificial intelligence, audio programming, and input. For the global multiplayer online games, you need additional knowledge and skills of network programming and database programming. Game development is considered as a special skill and is always in demand.
Even if there are special game designers, the programmers also often contribute to the design, as do game artists. The individuals in non-lead positions also contribute to the game. Game designers are freelance web designers with a different skill set, and they need to have a complete overview of the game rather than just programming languages.
The game developers often follow the game design document provided to them by designers. As the game development progresses, the design document keeps getting updated as per the programming limitations. Many times new features get added and the design keeps changing. The new trends in game design are related to Virtual Reality and Artificial Intelligence.
Game development languages
Once the game’s base design is final, you need to decide the programming language. The choice depends on the capabilities of a particular language for game development and the developer’s proficiency in that language. The available APIs also play an important role in the language selection.
For personal computers, the language may be little more than just a matter of preference. Language bindings with popular libraries like SDL and Allegro are given preference as it makes developer’s job easier. The most popular game development languages for desktop games are C, C++, and Java. However, freelance web developers (or game developers) may look for features like interfacing with the operating system, and resilience to reverse engineering for online video games. Many games are not written in one language exclusively and may combine two or more languages along with the use of different tools.
High-level scripting languages are embedded extensions to the underlying game written in a compiled programming language. As an example, Lua is a very popular choice, as its API is in ANSI C and the language gets embedded in other applications.
Console Game Development
For consoles, the support of the target platform is usually most important. Earlier, the video games for consoles were written mostly in assembly language due to limited resources regarding both storage and processing speed. Now, you have multiple options available for game development on consoles. Nintendo, Microsoft, and Sony all have differing SDKs for their Wii U, Xbox One, and PlayStation 4 consoles respectively.
Microsoft’s Xbox and Sony’s PlayStation are the two big players in this business. For PlayStation, there’s a mobile developer line called PlayStation Mobile, and it uses Mono, so most of the time the C# is used. For the traditional PlayStation game development, C++ is still the leader.
The large games in this industry are developed in C++, with C and Assembly for low-level modules. Graphics is available through Cg/HLSL – shader video processor code within OpenGL or DirectX frameworks. The small console games on XBox Live Arcade, or Windows may use C#, Java, or VB, with or without shader code depending on how intensive or custom the graphics is required for your game.
APIs and Libraries
A key decision in game programming is about the use of APIs and libraries to use. Some libraries can handle specific tasks like sound processing, input, and graphics rendering. Some can also handle some AI tasks such as pathfinding. There are entire game engines available to handle most of the tasks of game programming and only require you to code the game logic.
The libraries for PlayStation development may or may not be available for Microsoft Windows and vice versa. However, there are many frameworks available to ease cross-platform development, so programmers can program a game in a base language and can implement the same on several platforms, such as the Wii, PlayStation 3, Xbox 360, PSP and Microsoft Windows. These frameworks, libraries, and APIS have made the game development easier than the olden days of system programming.
Old is Gold!
The C# and C++ both being variations of the C programming language, they stay in high demand. Microsoft is working on enhancing C#, and this language stays the primary choice of developers for developing applications and games on Windows desktop. There are predictions of C# leaving PHP and Java behind because of its rising popularity. The C# programmers are desirable as they are considered to be full stack developers. The C++ has a major part in the games development industry as well as it remains a part of big software projects. The age old, stable and mature languages are still the big players in the Game development market.
The iOS games for Apple devices are usually developed in Objective-C, although it is possible to write them in C++ code also. Android games are usually Java. The Web and Facebook games in the browser are either Flash (Action Script), or they mostly use HTML5 and AJAX.
For Server-side, there is usually some relational database where the player and game data gets stored and updated, and corresponding languages for data processing is normally SQL. For desktop game development, C# and C++ are still leading along with some new players.
If you like playing computer or mobile games and have a keen interest in understanding the design behind them and developing such games, it can be a fantastic career as a freelance designer or game developer. You need to adapt as much as skills required in game development with a strong hold of one the base languages, and you can be a ‘star’ performer in the Games market.