My recent post about Linux and video games has gotten quite a few hits, so while I was on a three hour flight today I thought it would useful to later put together a list of free and open source game engines that you and others could use to build said games. Upon landing, I cleverly did a web search and found that Wikipedia has an extensive list of game engines. It could change tomorrow, so grab it quickly!
So I won’t do the list as there is no further need, but let me interpret the table headings in the Wikipedia article for you:
Primary programming language means the language in which the game engine itself is created. Unless you plan to change the engine, you don’t need proficiency in that language, though you may need to compile and link the engine for your platform. Those engines written in C may be older or optimized for speed, those in C++ somewhat newer, those in C# likely started life on Windows and would need Mono for other platforms, and those that use Python might not be the fastest in the world unless they also use components written in the other languages I just mentioned.
Bindings means the programming languages from which you can call the facilities provided by the game engines. So though Crystal Space is written in C++, it can also additionally be called from software written in Python, Perl, and Java, for example. If nothing is mentioned here, it means you would do best to just use the engine in software written in the same language as the engine. Note, though, that engines written in C can probably be called from C++ programs.
Cross platform means it works on more than one platform. It does not mean it works on all platforms. Check carefully if it works on Linux.
SDL is the Simple DirectMedia Layer which, further according to Wikipedia:
Simple DirectMedia Layer (SDL) is a cross-platform, free and open source software multimedia library written in C that presents a simple interface to various platforms’ graphics, sound, and input devices.
Some cross-platform libraries give you basic functionality but take a rather “least common denominator” approach. Look at samples of games using the libraries to ensure that all the bells and whistles you need are present and the games can look modern and professionally designed.
Finally, scripting refers to the programming languages you can use to extend the functionality of your game without changing either the gaming engine or your core code. For example, World of Warcraft uses Lua to allow players to create and build addons that provide better game maps, inventory bags, health meters, and so on. Badly constructed scripting interfaces can open up your game to security intrusions, while well designed ones can really enhance the game experience. Also see my older blog entry on embedded programming languages.