Most of the work this time went into improving the Audio System. The audio system up to this point had been rather basic. I always had bigger plans for the audio system before doing the first release of the game engine. Now has been the time to do so.
I never liked to manually place audio zones to simulate different environments often requiring lengthy pre-production steps to calculate audio data. This approach is slow, cumbersome and especially fights against agile game developing. For me it is important to be able to modify content on the fly as I work on it with little friction. Present time game engines are just poor at this task. So the main goal for the audio system had been:
- Does not require pre-production computation
- Does not required manually placing audio zones
- Automatically modifies audio parameters as the environment changes
- Does not require proprietary middle-ware or frameworks
- Does not depend on GPU, OpenCL or these new RT chips to produce a basic result.
Out of all these conditions the new created Audio System arouse. The system only runs on CPU and does use a ray-tracing based approach to simulate audio in a dynamic way. This leaves OpenCL or other hardware acceleration as bonus options to improve the accuracy and performance of the results.
Physically plausible sound has been one part of the changes. It is now also possible to use layer masks for microphones, speakers and components. This allows now to fine tune which speaker can be hear by microphones and which components affect sound between the two. This opens up a lot of possibilities for game mechanics with no extra work.
I've also created a Demo Audio Test Application to show-case the different scenarios I wanted to get working. This test application will be available as Drag[en]gine Game Project for download and learning once the game engine is released. The video below shows the demo application with all the test rooms (so it is maybe a bit lenghty).
These texture properties have been added for use with the Audio System:
Besides working on the Audio System I've also put in place the Behavior Elements. This had been another component which I wanted to be present in the game engine before the first release.
Basically the behavior elements are based on the existing Scenery Elements system the Epsylon game project is build upon. While this is a powerful and flexible system it requires still a considerable amount of scripting to achieve all the results. The behavior elements add a layer that allows to compose behaviors to do fast, reusable and dynamic game development even for complex projects which is just a pain to do with other game engines.
Since underneath the behavior elements are just composed elements they retain all the power of them but expose their power with little amount of scripting (and reusable on top of it).
I'm not going to add more text here. The system is described on the Wiki and I'll add more documentation for it as time goes by.
With the Audio System and Behavior Elements out of the way there are now only 2 topics left before the first release can be done. We are getting closer to the best part.
In the mean time... don't get your ass bitten :D