December 05, 2004
The state of the art
So I think everyone will agree that the primary language is C or C++. C++ has probably taken the lead these days. The majority of programmers in the industry are, I think, using C or C++ as their exclusive imperative language for game code. There is a little more diversity when it comes to tools. In particular, I have noticed increased use of C#.
We see the most variety when it comes to non-imperative languages, most commonly schema languages. These are XML or other structured text files that describe the format of the game data structures. They are used to help the game code bind to it's data, whether loaded from a file or pulled over a network or whatever. They are also frequently used to specify how the data should be presented to designers in their level editing tool and to drive the level editing tool when it saves the data. These languages are usually proprietary languages designed specifically for use with a particular engine.
Many teams have some kind of special purpose state machine language, usually some kind of proprietary structured text syntax. It is also common to code state machines directly in C or C++.
A lot of teams allow technical designers to customize game behavior using some kind of scripting language like Lua or Python or a graphical waypoint or flow-chart language. In most cases this is entirely the domain of the designer. The programmers do not use the design language, unless they are responsible for dealing with C++ / design language bindings.
Schema languages are also sometimes used to automatically generate bindings between scripting languages and C++.
I will add to this page as I gain a better overall understanding of the languages we currently use.