Parallax scrolling and 3D objects

The first success: I combined the IndieLib tutorials for parallax scrolling with the 3D mesh tutorial:


The cube rendered in the scene is a simple object I exported from Blender. Currently I can move the cube left and right with the cursor keys.

How to stay motivated

Cliffski’s Blog has some nice tips to keep in mind.

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.