Check out our course "Create a Game Like Zelda with HTML5" here!

The best language is the language that serves best the platform you're developing on. Most platforms, however, offer several choices of languages and then the best one among them can be considered the one that servers best the game you're developing.



Big console games are developed in C++, with C and Assembly for low-level engine modules. Graphics is supplemented with Cg/HLSL - shader videoprocessor code within OpenGL or DirectX frameworks.

Big Windows game development is about the same.

Small console games on XBox Live Arcade or Windows can also be developed in C#, Java, or VB, with or without shader code depending how intensive or custom the graphics is for your game.

iOS games for iPhone/iPad/iPod are usually developed in Objective C, although it is possible to write C++ code (if you're willing to jump through hoops and dislike Objective C that much).

Android games are usually Java. Or C++ if you're willing to go native and solve cros--device compatibility issues. Shader code for graphics is done in OpenGL (or variations of).

Other mobile platforms are either C++, Java, or some custom language framework.

Web and Facebook games in the browser are either Flash (Action Script) or increasingly HTML5 and/or AJAX (HTML and JavaScript, with or without WebGL or SVG if you need more complex or 3D graphics).

Games that require a server component have the backend usually developed in C/C++, or increasingly in PHP, C#, or Java for faster iteration at the expense of performance. Many times it can be a mix of these with critical components ported to C/C++. There is a trend in experimenting with other languages server side as well, like JavaScript, Ruby, Python. These are, however, niche cases so far.

Server-side there is usually a some sort of relational database where player and game data is stored and updated, and corresponding languages for data processing are SQL or variations and dialects of, depending on the DB package. There are cases of non-relational DB packages, but these are rare.

Tangent cases for programming languages are all sorts of format/markup/structure pseudo-languages used for storing, processing and sending data over the net, like XML or JSON. These are not quite programming languages, but you will need knowledge of them as well.

With all the above said, however, there are many exceptions if you are using a commercial "middleware" engine that comes with its own programming or scripting language. It can be completely custom and proprietary (Unreal), variations on existing languages (Unity's JavaScript or C#) or others with Lua or similar scripting languages.

Using an engine like Unity offers the possibility to write your game entirely in C# or JavaScript (more like Microsoft's JScript) and run almost without any changes on the PC, Web, iOS and Android devices, as well as PlayStation3 and XBox360. Be aware, however, that this is a trade of performance, memory footprint and deep customization for rapid development.

All in all, I am sure I have missed some languages and platforms. If you're just entering the programming realm and this question is about what programming language to learn - then it's really not that important which one you pick. Once you learn a couple languages and get good at it, the rest of them are pretty much all the same conceptually, just with variations in syntax.

What is critical, though, is to learn the platform you want to develop on - its limitations and strengths. Most of the time, given a good execution, it's the smart use of the platform that differentiates successful bestsellers from the games that sink.

Check out our course "Create a Game Like Zelda with HTML5" here!