Thursday, February 19, 2015

dw Engine Update One

We have Fire Shield! Normal shield! Bridges! Running on water! Rain! Particle effects! Cool stuff! Basically, The engine is ready for it's inevitable one/two zone demo. The first video is a bit older, and sucks for being offscreen. Linux version. The other is more recent, from the android build. The capture is choppy though, so you'll have to take my word for it when I say the framerate is good.



So, the engine has evolved by leaps and bounds since the last hackish screenshot on the previous post. Player physics were ported to C++ but remained functionally the same, only some bug fixes were applied, particularly when rolling and pushing. Now we have a much-needed BVH, less boilerplate code in level object components, and small misc optimizations all around. The Android version runs at 60fps solid most of time (Moto X 2013) even with reflections and fancy stuff. It drops frames when there are lots of objects on screen though, particularly when rings scatter. If one prizes accurate Genesis emulation, that is a feature! (I'm kidding of course, more optimizations are needed)

The BVH is of the hierarchical circles type, implemented as two classes in native code and performs well enough, activating/deactivating graph leaves by emitting signals. Essential for decent performance on android. Zones can be of arbitrary size now, within floating-point precision limitations. I did not see the need for anything more complex such as AABBs.

There is a thread in Sonic United about the project. More timely updates are to be found there, for the interested parties. I shall work on releasing a demo (with an original zone) in my spare time, I just hope there is enough time to present it at SAGE 2015. Zomg spriting is hard! Not sure if there are two acts this year like last year, so, fingers crossed.