IndieLib developer FAQ

From IndieLib
Jump to: navigation, search

Road Map


This is a Road Map of the intended development of the library,to show what we want to do and where we are.
Points marked with a '+' are completed, points marked with a '-' are not completed (somebody may be working on them).
Because the team is quite small at this moment (2 developers with daily jobs), we may work in features which are to be included in forward releases, to keep pushing forward in the project and be motivated with what work with.

  • Version 0.1:

+ Separation of code and classes to enable having 2 (or more) renderers.
+ Disabling 3d - related functionalities. No 3d is supported till we have a complete support for all other platforms and renderers.
+ Separation of all DirectX and Windows specific types, hiding them in the underlying compilation.
+ Definition of target renderer and target OS at compile time by directives.
+ Definition of project-wide macros for clean cross-compilation.

  • Version 0.2:

+ Implementation of "stub" methods in new OpenGL renderer.
+ OpenGL 1.5 context creation in windows.
+ Implementation of transforms and OpenGL 1.5 renderer setup.
+ Implementation of direct blitting methods of new OpenGL renderer.

  • Version 0.3:

+ Change devilLib for Freeimage (ADDED 17/02/2011) NOTE: Some IND_Image filters are disabled. FreeImage does not support that kind of functionlality. To be implemented by new team members or in version 1.0.
+ Implementation of texturing and image loading for OpenGL 1.5.
+ Implementation of Linux compile version.
+ OpenGL 1.5 context creation in linux.
+ Implementation of "uniform coordinates", so right-handedness or left-handeness of renderer used doesn't matter when creating any data to pass to the renderer.

  • Version 0.4

+ Bug fixing what was found on previous iteration.
+ Support rendering of all object types in OpenGL: IND_Animation, IND_Surface, IND_Font, primitives
+ Window abstraction for all OS. (IND_Window not dependant on any OS-Specific types)
+ Testing projects based in the IndieLib tutorials. Used to verify new ported code, and to verify backwards compatibility with other renders/platforms.
+ Verification of all other 2d-related functionality over Windows and Linux via defined tests (see previous point)
+ Support user ability to define point/pixel scale. Actually is 1/1. (See previous point)

  • RELEASE: Version 0.5:

+ OpenGL 1.5 context creation for OSX.
+ Window creation for OSX.
+ Test project in XCode to use IndieLib as OpenGL renderer.
+ Adding test and samples for OSX
+ Bug fixing for OSX ready functionality in OpenGL 1.5
+ Make binary releases for win32, linux, OSX

  • RELEASE: Version 0.6:

+ OpenGL ES 2.0 context creation for iOS.
+ Window creation for iOS.
+ Test project in XCode to use IndieLib as OpenGL renderer.
+ Adding test and samples for iOS
+ "stub" methods for OpenGL ES renderer.
+ Implementation of transforms and OpenGL ES 2.0 renderer setup.
+ Shader loading API
+ Simple shaders to have rendering working in basic 2d environment
+ True Type Font support

  • Version 0.7:

- Implementation of direct blitting methods of new OpenGL ES 2.0 renderer.
- Texturing for OpenGL ES 2.0.
- Support rendering of all object types in OpenGL ES 2.0: IND_Animation, IND_Surface, IND_Font, primitives
- Touch input abstractions.
- Input testing in iOS (no keyboard, touch).
- Angelcode font support.

  • Version 0.8:

+ Support the Tiled tile editor .tmx file format.
- Support the Spriter 2D animation tool.

  • Version 0.9:

- Bug fixing and optimizations related to shaders in GL.

  • RELEASE:Version 1.0:

- Benchmarks and optimizations for all previous code/features over Windows, Linux and iOS (OpenGL).
- Correction of documentation for new code.

  • Version 1.1:

- Implementation of IND_Image filter features disabled in devilLib to FreeImage porting.
- Implementation of IND_Image support for GrayScale images. Dropped because of devilLib to FreeImage porting.
- Release.

  • Version 1.2:

- 3d functions enabling in library.
- basic 3d functionality for OpenGL 1.5.
- basic 3d functionality for OpenGL ES.

  • Version 1.3:

- Gui support.

  • Version 1.4:

- OpenGL 3.2 support for desktop platforms

  • Version 1.5:

- Particle system + Particle editor.

  • Version 1.6:

- Resource editor: for creating the animations in a visual way, their collision areas, etc.

  • Version 1.7:

- Map editor: for positioning and changing the attributes of that entities.

What is this port about?

This is work trying to continue development of IndieLib, as Javier, the original creator, doesn't have too much time now to continue.
We want to port IndieLib to 2 main sides: Other platforms, OpenGL. This will make it more usable.
In a future, more features could be added, once we finish with the primitive ports.

A centralized Forum thread in regard to the development of the IndieLib crossplatform port can
be found here
If you want to collaborate, don't hesitate to look at the Road Map or the TODO list. If you are up for it,
then cordinate with DarthMike (Lead Dev) to be sure that your patches will accepted into the trunk.


IndieLib crossplatform is based in IndieLib, so it will have the same features. When an official release is created,
users will use it almost the same way the original was.
We've been changing some code conventions and some classes hierarchies are a bit changed,
but this will be reflected in documentation.
This library continues to be C/C++ based.

Target platforms (may be increased): Win32, Linux, iOS, and Mac.
Target renderers: DirectX 9 (Win32), OpenGL 1.5 and OpenGL 3.2 (Linux, Mac), OpenGL ES 2.0 (iOS).


Project GIT:

Code Standard

The indielib project tries to follow the ScummVM Code Formatting Convertions
wherever it is possible and makes sense.
read more about it here:


  • Unit Tests

When the complete Solution is being build (all projects) the unittests located in the "unittest"project are automatically run as the final step.

  • Funtionality Tests

Besides unit tests, a set of 'manual' tests are created, for developer to inspect visually how engine behaves with the same entities configuration in different platforms. Not only static images, but animations and camera transforms are tested
This could be automated in the future by comparing with a set of reference screenshots for every test.

Contributing Patches

Use the 'pull requests' mechanism from GitHub.

Issues list


Wishful thinking

That someone steps forward an incorporates support for the formats generated by the following editors:

  • Tiled Map Editor -> Moved to the 0.8 release. ( take a look at alpha version in Advanced tutorial 5 )
  • Angelfont support - Angelfont is currently supported by a lot of tools, among others Shoebox -> Moved to the 0.7 release. ( work being done in basic tutorial 5 )
  • True Type Font support -> old code supplied by forum user venomjj is currently being adopted into the cross-platform version. ( take a look at Tutorial 17, planned release in Version 0.6 ).

That someone produces tutorials on how to use Indielib with the following:
Note! : It would be for the best if the tutorials are kept in the same "form" as the rest of the tutorials in this wiki.

  • Networking, Client - Server.
  • Box2d
  • Lua

That the developers find the time to:

  • Support Tapatalk in the forum => Done
  • Create a showcase gallery of usercomitted screenshots => Done
  • Move the SVN repository to Git. => Done
  • backup / edit indielib wiki info in github
Personal tools