If we count id Software’s game Quake as the beginning of real-time 3D games, then it can be said that the C programming language is the foundation of modern game design. The original Quake engine was written in C, using an interpreted C-like script language called “QuakeC” for game logic. By the time Doom 3 was in development, id Software had moved over to the C++ programming language, which adds object-oriented features. C++ today remains the foundation of most game engines and performance-intensive code libraries. For example, Unreal Engine now uses C++ exclusively. Unity3D provides a programming framework through the C# programming language, allowing the developer to access the engine’s internals, which are written in C++. Leadwerks Game Engine (my product) provides access to a single API using both C++ and Lua, allowing the developer to write performance-intensive code in C++, while light game logic can be easily scripted in Lua.
For someone starting out in the game industry with the intention of eventually getting a job working for a major studio, what is the best path to learning what you need to know? This article was written in an attempt to quantitatively answer that question.
A sample of all programmer job ads on GamaSutra was taken on July 14th, 2016. Each ad was searched for the terms “C++”, C#”, “Java” or “JS”, and “Lua”. If the term was found, the language was considered a requirement, for the purposes of this analysis.
Of the 46 job listings sampled, 39 (85%) required C++ experience, 15 (33%) required C#, eight (17%) required Java or JavaScript, and just four (9%) required Lua. The results show that C++ is by far the most sought-out skill employers look for when hiring programmers. A game developer who knows C++ has more than twice as many job opportunities as a C# programmer. This analysis also shows that although Lua is great for learning, it would be difficult to make a career out of it without additional C++ experience.
You can download an Excel file containing the raw data used for this analysis here.