Root Framework – a game library written for the creation of 2D games

Hey all! I wrote a game framework for the creation of 2D games. It’s written on top of LWJGL for OpenGL bindings (meaning it’s super fast!). Here’s a link the Github repository (https://github.com/root-software/root-framework), if anyone is interested in helping me out, or you want to try it out. Here’s a quick example of a platformer I scratched up in 20 – 30 minutes, it uses modern OpenGL for rendering – but in this gif it may be laggy, since, well, it is a gif.

http://www.ludumdare.com/compo/wp-content/uploads/2014/06/example.gif

Ok, but why?

Browsed the source code briefly and was pleasently supprised to find loads of helpfull documentation and comments :smiley:

It would be cool to see some example code that shows off the features of the game engine/library/framework in the original post.

I wrote the framework since I Slick2D is pretty much dead, and I liked the library quite a lot, after searching for a better alternative - people recommended LibGDX. I used it, I kind of liked it, but it’s a very bulky library. So I wrote this framework as a more lightweight, minimal version of LibGDX.

There are a few examples in the example folder in the project, but I will eventually write a full project with it to see how things go. At the moment, it’s not really complete to the point that I can create a full game with it (in my opinion anyway).

I’ve been working on a high-performance 2D desktop game engine/framework for quite a long time now called oGame (v2 now), also because I’ve found Slick2D to be pretty much dead and LibGDX to just focus too much on being very multiplatform, sacrificing performance and ease of development for having multiple backends and a bit overgeneralizing things across platforms.

Your engine seems to be really nicely written and also quite well documented (which is a rare quality among engines these days sadly :frowning: ) so who knows, maybe one time when I get sick of optimizing mine I will start using and forking yours. :wink:

A few minor issues I found while just browsing through the source code: You seem to provide a nice layer of abstraction and a relatively high-level OpenGL access (that GL class is over 2000 lines, lulz) but you still don’t make the use of OpenGL any easier. You should implement high-level objects like FrameBuffer and such. Also, your GUI components are lacking, no font support and the sound features are limited. Instead of just providing a SpriteBatch that renders textures you should probably try to provide a simple entity framework with a batch that truly is capable of batching objects (organizing them by their shader and texture so the engine minimizes the use of graphics calls).
There are some minor OGL mistakes too, like calling [icode]GL.glEnable(getTarget());[/icode] in your texture class constructor (you should only enable texture targets when you use the fixed pipeline, since programmable pipeline you don’t have to/shouldn’t do that).
Might sound nitpicky with some of my points but really all I want is to provide constructive criticism so you can improve the engine. :slight_smile:

I suppose my post is a bit of a misnomer, the framework isn’t actually finished yet, so there are still tons of features to add!

We’re currently working on font rendering, improving the old gui hierarchy (which was pretty much omitted after porting to OpenGL).

Anyway, thanks again, and I’ll be fixing those errors you pointed out soon! :slight_smile: