Today's topic is about modules. Modules are the main enhancement of the upcoming version 0.5.1. With modules everyone can extend the engine without having the alter the original sources of the engine. This means that people can add other physics- or sound engines, but also complete packages like an RPG pack that adds common RPG features (e.g. inventory, quest system, etc.) to the games using it. As you can see, modules open up a whole new world for third party developers, while at the same time keeping the engine as lean as possible.
The reason I implemented the new module system is for the content of the games you are creating. Loading content should become easier and more platform independent. To achieve this, a new content manager has been implemented. It uses content modules to load in content from file. These content modules inform the manager what content it can load and then allows us to easily load any type of content with almost the same expression:
Entity* pentity = contentmanager.load<Entity>("objects/mainchar");
This code makes use of templates and a common file format for all content. Each type of content writes a header containing information what module wrote it and the content data itself. I nearly finished the module for the effect files and working hard on an entity module. After I have finished the major content modules, a new version 0.5.1 might be released.
During an attempt to port the code to the Windows Phone 8 platform, I still faced some incompatibility problems. In the previous version I managed to reduce the number of external libraries making it easier for me port the code. Among the remaining problems is the socket layer. On Windows desktop systems I use the WinSock2 library. Alas, this library is not supported on Windows Runtime (RT) based systems, including tablets and phones. So, one thing to refactor is the network layer. But with the new modules system, discussed earlier, an WP8 and RT release is again getting closer!