Week 30 Update

by ⚡ Shockk on 2020-02-11

Welcome back to another Corporeality weekly update! This week, we’ve made strides of progress in various areas and I can’t wait to tell you all about it.

Audio Bug Fix

Starting out small, we fixed a bug in the asset pipeline that was causing 24-bit waveforms to be incorrectly processed and produce garbage data. We’ve now fixed this and audio works properly.

Performance Improvements & Bug Fixes

It’s kind of a meme to say it at this point, but we’ve honestly implemented loads of performance improvements and bug fixes since last week.

In particular, we’ve focused on optimizing some of the render loop code and we’ve managed to reduce CPU usage by around 20%. We’ve also identified a bunch of optimizations we can make in the coming weeks that’ll drop performance almost by another 40%! This is huge as it should allow us to do more on older hardware.

Object Lifetimes

Here’s the big one. This week, inspiration hit and we were able to finish expanding object lifetimes to allow for the deletion of objects managed by a timer.

Long story short, this means we can now fire missiles and have them die if they hit something, whilst also dying automagically after 2 seconds. There’s still a bit of minor work remaining on this but for the most part it works really well! I’m also still planning on writing up a technical post explaining how exactly the lifetimes work in our engine, once all the work is finally complete.

Next Steps

This coming week, the main thing we’re going to look into is adding support for two weapons controlled by the left and right mouse buttons. This should be pretty easy but we need to figure out what the other weapon should be. We’ll probably move the missiles weapon to the right mouse button as a secondary weapon and then make the primary weapon be a beam-based weapon.

On the side, we’ll likely look into some of the additional performance improvements mentioned above, as well as continuing with the effort to improve the asset pipeline to the point where we can more easily support shaders for both Vulkan and OpenGL simultaneously.

On the side of the side, we’ll also (slowly) begin moving types over from the main engine library to the separate core library. This is going to be an ongoing low-priority effort so we probably won’t be providing many updates on it until it’s complete.

All in all, this week has been really productive and we’re hoping to make the next week just as productive. Thanks again for sticking with us on our continuing journey, and, until next week, näkemiin!

⚡ Shockk, Lead Programmer