The last couple of weeks had been marked by reworking the OpenGL Graphic Module to bring it up to OpenGL 3 level. Besides the demo-world got worked one. More about this though later and like always one topic at the time.
OpenGL 3 is the new standard of OpenGL rendering and is marked especially by a tremendous breakage with old traditions. Many projects claim to use OpenGL 3 but in truth they are not. There exists a compatibility profile which makes OpenGL 3 look and feel like the older version. While this is fast to do and gives you news mileage it's a damn lie straight into the face of your watchers. Here this is different. A lot of time has been spend to rework the rendering system and the shaders to be truly OpenGL 3 taking advantage of what it has to offer. This especially means that the current OpenGL module will be only compatible with OpenGL 3 and not below. For this a different module will be made later on. This guarantees proper code and rendering instead of half-baked solutions. Not all shaders are reworked but a large part is. One of the nice effects of this rework process is clearer and faster code.
In the wake of this rework all light sources have been reworked too. This means that all light sources cast now shadows with noise-pcf and work with improved shaders. Also the occlusion culling of lights has been improved to cull invisible lights more aggressive. Since aggressive culling is required to keep a steady framerate additional world occluders have been added which the mapper can place explicitly to block visibility between geometry on a large scale. They are optionally and are not required to be used. With all these added culling facilities the speed is more constant inside complex geometry. More optimizations are being worked on.
In addition render targets as they are used for dynamic skins have been improved to allow different color component counts ( 1 to 4 color components ) as well as different bit count ( 8, 16 and 32 for float rendering ). With this the new holographic computer displays have been implemented for testing purpose. An image can be found in the image gallery as well as in some web directory ( see image comment ).
The demo world has been a topic since a couple of news posts but got delayed by various bugs which had to be fixed first. The demo world serves as a showcase of the possibilities of the game engine as well as a for benchmarking and reference purpose. Reference purpose means so module makers have something to test their modules with as well as game developers having some samples to help them on their way. This demo world constains currently just a few rooms with some demonstration parts inside. More will be added one by one to get a concise representation. The demo video thereof became a bit large ( 105MB and 16 minutes playtime ) so it is unsure if it can be posted ( too large for my video host and ModDB doesn't seem to take it either :( ) . Once it somehow works out it will be available here. Otherwise you can find some images of the demo world including some additional information's by clicking on the overview image below.
Demo-World video ( should work now... hopefully ):
An old rule says that a programmer who doesn't know Smalltalk can never be a true hacker... and this is true. Smalltalk is the mother of all object oriented programming languages and has influenced the existing programming languages in a way like no other language has. Hence I could not resist to make a Scripting Module which allows you to program games using Smalltalk. The modules contains only the barebone right now as a proof of concept but a sample hello-game could be already implemented with it. Adding the rest to make it complete is just a matter of time. This way you have, once all are fully finished, 3 languages at your displosal showing well the flexibility of the game engine: DragonScript, Python and Smalltalk.
IGDE and Epsylon Game related changes
The IGDE obtained some changes so object properties altering the model, skin or rig show in real-time in the editor. This allows to work faster with user created content not covered by the game definition file. Furthermore the Element Classes in the Epsylon Game have been modified to expose model, skin and rig properties. This way a mapper can place objects in the scene from existing game classes and can change the model, skin or rig using a mere text property referencing the user created files in the file system. This makes modding very simple and fast and allows prototyping since new stuff can be tested on the fly with full game code without having to touch code or introducing new object classes.
To deal with the holographic computer shown in the demo world the script classes for computer handling have been improved. Gui Themes ( as they are used on in-game computers ) can now be defined using XML files. Also new properties have been added to computers to allow customize them in a simple way. Furthermore all GUI related Gui Themes ( main menu, in-game menu and many others ) can now be defined and customized using a game-modification XML file. Hence as long as you do not have to alter game mechanics you can mod the game just using a bunch of XML files. This has been done to allow also non-coders to quickly test new ideas, models and maps without having to dive into code.
With the demo world up and kicking we can eventually move on to implement the rest of the features not fully included or coded yet. Upcoming is improving the 2D rendering part. So far this is handled without shaders as this is the oldest code in the engine. Once this is done the shader system receives an overhaul to allow defining more custom skins. Another big work place now will be the renderables. The old code is not as flexible as we want it to be so a little overhaul will be done. As a result dynamic skins will be possible everywhere through the game engine so developers can unleash their full creative potential. Once these graphic parts are done for we can hopefully give the audio system some push. It's still rather juvenile and while working there's room for a lot more. So stay tuned.