As anticipated in my previous post, I’m going to post a status update on Shade the last week of every month, so here the first update of the series.
Just in case you haven’t read my previous post yet, Shade is a cross-platform framework for 2D games which will be the core technology of all my next mobile and desktop games.
During this first month of development I tried to focus on design and usability of the framework, which basically means I spent about 1/3 of my time refactoring code and in few cases redoing things from scratch.
The core concept of Shade is the modular architecture, so ideally users should be able to use only the modules they really need for their project. Obviously some modules depends on some others, but I’m trying to keep this reasonable.
The modules I created so far are (in order of creation):
Core is the main module which defines an application and offers basic functionalities needed by other modules.
Debug is the module which should provide functionalities for debugging and logging, but at the moment it’s not much more than few prints disabled when building in release.
Events is the module which propagates system events and offers support for handling and dispatching system and application events.
Rendering is the module which handles the rendering and the one which, not surprisingly, received most of my attentions this month and I also created a specific test application for it.
Besides the basic objects and functions you would expect from a simple rendering module, it offers good support and integration with texture atlases, which are something always good to have when aiming for performance.
Text can be considered an extension of rendering as it allows to handle fonts and to create text. At the moment it supports fonts supported by FreeType and bitmap fonts created from FT fonts. A test application has been created for this module too.
The text rendering support is still pretty basic as it only handles simple, single line labels of text, but for now this should be enough to start working on other modules which need text.
Utilities is a module which will contain generic utilities which don’t fit any other module, but which can always be useful for gamedev. For now the only object contained is the one which handles the constant frame-rate of the application.
Last week I started to work on a new module which will handle graphics and user interaction from a higher level than rendering and events, something that’s similar to the AS3 display package. As everything is still in a design/pre-alpha phase I will introduce this with the next status update.
I’ve also spent some time making sure the library and the tests were truly cross-platform and creating the Android projects needed to build and run the tests on an Android device.
Probably most of the next month will be spent working on the new display module and on anything that it could need. I may also start to work on the iOS projects, but that depends on how things go with the other tasks.