Finding a suitable game engine

Since I don’t want to build the game entirely from the ground up I have to find a library that fits my needs. Wikipedia has a pretty nice list of game engines, so I started looking there.

Looking through the features, platforms, programming languages and 2D/3D orientation I landed pretty soon at IndieLib a 2.5D engine with entity system, sprite animations, collision detection, bitmap/TTF fonts, parallax scrolling, 3D objects, 2D Cameras, 3D Cameras, timers, alpha blending, shaders, and image filters. Pretty much everything I had on my wishlist, except a particle system. As a nice bonus, it lists Windows, Linux and MacOS as supported operating systems.

The tutorials on the website looked simple enough, so I started to set up visual studio according to the tutorials to try them out myself. I had trouble getting the tutorials to compile, so I sought help in the forum. One of the developers tried to help me and in the course of the discussion two things became clear: First, their wiki needs restructuring … not everything is up to date, there is conflicting information in different parts. Second, in the current state it is not really useful to me.

IndieLib is currently being ported from being Windows only to the advertised multi platform support. The original developer handed the project over to two guys who now work on it, and one of the first things they did was to disable everything related to 3D. According to the original developer the 3D features weren’t used much, so it made the porting a lot easier to push the 3D support back. I was about to look for a different game engine when I found two possible solutions for me.

  1. Use the original, unmodified version of the library
  2. In the forum I found a wrapper for managed code someone had written for the original library, so the library can be used in .NET programming languages.

Both solutions pretty much scrap the multi platform part, but for now I can live with that. I decided to use the wrapper, mainly because my C++ is very rusty, I’m much more firm with C# right now. Also, the roadmap for IndieLib-crossplatform shows that 3D support is planned for version 1.2, with 0.5.1 being the current version, so I can expect that it will take a while until the crossplatform version catches up with the features I want to use. By then I have the option to rewrite the game in C++ if I feel up to. I expect that the 3D models, textures and other graphics as well as sounds will make up most of the work and all this will be reusable.

Motivation

For a while now I had the idea to create my own Jump’n’Run game, in most other parts of the world known as “platformer”. The idea was born out of two things: One, by now there are some absolutely awesome games out there, for example Trine (1&2), Brothers – A tale of two sons, The Cave, Limbo, Giana Sisters – Twisted Dreams, Elemental, to name a few. These games have stunning graphics, sounds, an intensive atmosphere and a love for detail that is just amazing. On the other hand, when I look at the indie games that are currently flooding Steam I just want to scream … there are a lot of new platformer games with good gameplay, physics, effects and ideas but most of them are destroyed by graphics and sounds out of the ’80s from the last century. These games are then sold as “retro style”. I can understand that pixel graphics and simple sounds are a lot easier to make, you save a lot of time and you can do it even when you are not very talented with graphics or sounds. But please … by now it should be possible to find decent sounds and/or someone who has talent in these areas and is willing to help.

So, I decided to try to build my own platformer, with the following feature set:

  • simple 2D gameplay, like Super Mario or Donkey Kong
  • 3D graphics, like Trine
  • particle effects where appropriate
  • reasonable physics

I haven’t decided yet in which direction this will go regarding graphic style, story, etc, I just have same vague ideas. Let’s just see where this will go.