Quick overview / Comparison table:Detailed description
Lets start with Cyrstal Space. Crystal space is a very large GDK (game developer kit) library with many features. Its purpose is mainly the creation of 3d games, but it includes networking functionality, sound, and entity management. It's is has been under development for a very long time, and it is a very large open source project, so the API may look a bit intimidating since it has many, many, many functions and classes aviable for it's many features. Thankfully, next to the doxygen documentation, and the manual, there are also many tutorials aviable. But I still wouldn't recommend it for beginners. One popular game using crystal space is planeshift
, a mmorpg, fully functional and playable, with a large community, eventhough still under continious development. Crystal Space currently runs on GNU/Linux, general Unix, Windows, Windows NT, and MacOS/X. Crystal space is licensed under LGPL.
Planeshift, a CrystalSpace3d game.
Then there is SDL. With SDL (Simple DirectMedia Layer) you can create both 2d and 3d games, though 2d games are probably a greater focus, since the 3d support is provided through raw OpenGL commands. SDL also has advanced input support, it will handle a joystick on many platforms for example. SDL also comes with cross platform sound and networking support (Through SDLNet, which is aviable as a separate library)
-"SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. The code contains support for AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, and OS/2, but these are not officially supported." SDL also provides support to write cross platform multi-threaded applications. SDL is licensed under GNU LGPL, they also have an alternative commercial license.
Irrlicht3D is not really a game engine. Irrlicht is a 3D engine. Meaning that you will find sound and networking support lacking. It does however have input support for keyboard, mouse and joystick. What makes Irrlicht so special is that it's very activly developed and has a very nice object oriented c++ API. It's really a joy to work with. On top of that it has a very rich feature set, and supports a wide range of 3d model formats. The author has also recently made a level-editor
that will save it's levels under the .irr file format. You can still import quake3 maps or other models, but the editor (which is fully optional) makes life a bit easyer. The editor also has a lightmap generator, that will create beautiful lighting in your 3d levels by lighting the textures instead of adding 3d lights, which saves the GPU allot of work. Irrlicht also comes with an XML parser which is also aviable as a separate library.
Irrlicht runs on Windows (including 64b), Linux and MacOS. More platforms have been planned, and some people have gotten it to run on xbox. Next to all the 3D stuff, Irrlicht can also draw 2d primitives, and pixels, and it has easy functions to create a GUI in your game. Irrlicht is free to download, you are freely allowed to distribute your game, even commercially, without ever paying a penny to Niko
Dungeon Tech, Irrlicht game
Our own SpaceDuck,
showing off some of the GUI capabilities.
eg: Transparent windows and controls.
Allegro is another cross platform, open source GDK, running on DOS, Unix (Linux, FreeBSD, Irix, Solaris, Darwin), Windows, QNX, BeOS and MacOS X. Allegro started out being very similar to SDL, but from there they have taken it to a higher level. Allegro now has a higher-level API (though low level functions are still aviable) and even supports 3D. Just like SDL it also handles threads,timers,sound,networking,player input, etc,... In addition to all that, Allegro also has GUI support just like Irrlicht does. It's 3D support however, while more advanced than SDL by providing a number of helper functions, it comes nowhere near Irrlicht, and still remains mostly pure GL programming. So Allegro remains mainly 2d in my book. Allegro is "gift-ware", meaning you can do anything you want with it, even distrubute a commercial game. Another drawback (at least for me) is that it's a C API, and not a C++ API. Though I'm sure somewhere on the net there must be a C++ified version of a frustrated OO-enthousiast.
A collection of allegro games running on BeOS.
Ogre3D is another one in the league of Irrlicht, meaning that it's not a game engine but rather a 3D engine. Just like Irrlicht is has a good C++ API (though I prefer Irrlicht's). The separation of several of it's features into modules makes it slightly more complicated to use that Irrlicht. Also Irrlicht is more actively developed. And last time I checked, Ogre didn't have any functions for easily creating a GUI like Irrlicht does. It is however a very capable 3d engine, and there have been a number of commercial games released using this engine.
Heretic Kingdoms: Reluctant Hero, an upcomming RPG
Next is Game Maker. Unlike all the above, Game Maker isn't an API or library for any programing language, it is a completely separate program, capable of compiling it's own games to executable format. Game maker has it's own scripting language, which is a little bit special because you can use both C-style syntax or Delphi-style syntax. (Game maker was made in Delphi) Game maker is also more aimed to people new at game development, and it is used in the university the author teaches at, to familiarize students with game development concepts. As an alternative to it's scripting language, it also provides a drag-drop approach for people that aren't very familiar to programming yet. You can create objects, and drag events and actions onto them, all with the mouse. If you're like me and don't like this type of approach, you can still code everything using only the scripting language, which has a very rich function set. And if you STILL aren't satisfied with the aviable function set in the scripting language, you can add your own commands! Game maker allows you to create plugins to export your own functions. Someone once created an Irrlicht plugin for game maker, allowing you to use the engine from the game maker scripting language. However, now this has been deprecated, since game maker now has it's own 3d support. Game maker started out mainly as a 2d engine, focusing on tile-based games. Now it has far outgrown that initial design. That's all praise and glory, but there is one superdupergreat majour drawback:
It's windows-only. Aaaaaaargh!
And on top of that, it is closed source. There is a free crippleware version aviable, but the license to the full version isn't very expensive. With the payware license you are free to distribute your games commercially. It can compile the games to their own .exe files, you can change the default icon and loading screen, so that's a plus.
Doomed - Someone actually made a doom-'clone' with gamemaker.
Then, there is Sphere. Sphere is allot like Game Maker, a separate program, but the main difference is, is that it's strictly script-only. It does have a sprite and level editor built in, but all logic is done through scripting. The scripting language itself is actually Java. It's very good to create 2d games with, there's no 3d support, though I remember someone made a small simple 3d engine with it, using purely 2d functions (it was VERY slow
). It's quite fun to code in, and can create some neat 2d games. It hasn't been as active as it once was, it seems to have been abandoned almost, the old website is gone and is replaced by some simple black-on-white info, but still downloadable nontheless. Also, when you release games with it, they aren't compiled into their own exe file, you distribute the sphere exe, and have your game as a 'startup' file. Nontheless, I had my fun with it back in the days of old
Migget Chainsaw Hands - Sphere game.
CDX is yet another 2d C++ library, just like Allegro and SDL. Only this one is not cross platform. It is released under the artistic license. It runs on most windows platforms (I don't know about 64bit though). It has a very nice API, and is a pleasure to use. However, it hasn't been updated since 2003, and the main website, cdxlib.com doesn't exist anymore. It's only aviable through sourceforge. Compared to SDL it's allot more higher level, and easyer to use.
Blender3d is mostly known as a 3D modelling suite like 3D studio max, lightwave, or maya. Blender is allot more however. Blender also has a video editor, and... a game engine. This is a fully capable 3d game engine, able to compile the game to it's own executable, be it on windows or linux or any other platform blender runs on. Blender uses python as scripting language, but there is also a drag-drop kind of system. It includes physics and collision detection and all that good stuff, so no need to worry about having to code that. This makes it usefull not only for games but for physics simulations with your 3d models. Blender itself takes a bit to get used to, and then so does the game engine. Blender is free, and released under GNU GPL.
Brawler chapter two - blender game
Quest3D is a visual programming environment. It represents objects as diagrams, and the entire program is made by connecting these diagrams, kinda like one huge UML. Personally I don't like this approach, but people that aren't into programming might find it interesting. It's not easy however. It's quite advanced. But it makes some very nice results! Cool shader effects etc. Drawbacks: closed source, not cross platform, expensive
(around $1000) You can also make web-embedded stuff with this btw.
8 - Quest3D game under development
Adventure game studio is a program you can use to create your old lucasarts-style or sierra style adventure games with. Ever played Larry, Monkey Island, Kings Quest, Police Quest or Space Quest? These are the kind of games you can create with this. It has it's own scripting language, level editor, and dialogue editor. It's really quite nice. I can't think of a better tool for the job if you want to create an adventure game! AGS is freeware.