Ignifuga Game Engine

Got a product that uses libRocket? Post info here

Ignifuga Game Engine

Postby gabomdq on Wed Aug 29, 2012 12:20 pm

Hey everyone! I've integrated libRocket with my Python/Cython/SDL2 based engine, so far it runs nicely under Windows/Linux/OS X/Android and iOS. You can find more information about the engine at http://ignifuga.org

You may also be interested in the glue code that goes into binding libRocket with SDL2. I had to add a couple of functions to SDL2 (which will soon be added to the official repository) SDL_GL_BindTexture and SDL_GL_UnbindTexture, which allows you to use SDL2 for everything Rocket needs in terms of integration (user input, file system and rendering). The code is hosted on Bitbucket, all of it is located in the RocketGlue* files in here: https://bitbucket.org/gabomdq/ignifuga/src/6a0c9559b50a/src/backends/sdl

Due to the way Ignifuga is compiled (basically a big static binary that holds the Python interpreter and the user code, using the Python build files which are oriented to a shallow module structure) I had to fork Rocket (https://github.com/gabomdq/libRocket) to change slightly the include paths it uses in some places (for example, where only "DataWrapper.h" was included, I changed it to something like "Rocket/Core/Python/DataWrapper.h"), and fix a few minor bugs that came up during the compilation for the different platforms. Overall it took a couple of weeks to integrate which I think considering the very ad hoc build system I'm using speaks greatly of the design and versatility of Rocket.

Finally, for those interested in more behind the scenes details, my engine is entity/component based, so I've created a RocketComponent which wraps a Rocket Document, and I'm further integrating it by inserting a reference to a global "parent" variable in each document's Python context, which allows the Rocket Document to call methods from Ignifuga's component, thus making the interaction between both worlds much more interesting.
Posts: 3
Joined: Wed Aug 29, 2012 12:07 pm

Return to Products using libRocket