Genre: Third-person Shooter
Engine: Catbox
Primary Contributions: Asset Browser Improvements, Exploding Crates, Collision Layers
, Scene Specific Asset Loading

Asset Browser Improvements
In this project I decided to delve into the engine side of things, and decided to ease into the role by starting on something small, and I chose to improve the Asset Browser. In its previous state, all assets were represented by one of two icons, indicating if it was a file or a folder, I felt like this could be improved and decided to implement support for different icons for different file types, in addition to allowing textures to be previewed straight from the Asset Browser. This proved a success, and was my first step into the Engine role.

Exploding Crates
After being allowed to continue working on the engine, I decided to try my hand at helping with the Nvidia PhysX part of things, as I found it interesting and exciting. My first assignment with PhysX was to Implement their AddForceAtPos function into the engine, and it went well! This function was later used for our Pickup Crates, where I made it so that their debris’ launch direction were dependent on where the crates got struck.

Showcase of differing debris angles depending on where the crate was struck.
Standalone showcase of the AddForceAtPos function.

Collision Layers
My biggest contribution to the engine regarding PhysX is my implementation of a layer system for collisions. Our previous collision system became deprecated, and that included our previous collision layer system. I decided to repurpose our old system for PhysX, and eventually managed to create a functioning layer system for both Rigidbodies and Character Controllers with the help of PhysX’s filterdata. I learnt a lot about PhysX’s workings when working on the layer system, and it was an invaluable experience for me.

Showcase of Collision Layer functionality, demonstrated using the camera.

Scene Specific Asset Loading
As a project grows, so does the amount of assets and this slowly but surely increases the engine’s boot-up time. I was given the task to fix this issue, and while daunting, I was set on making it work. It took a lot of trial and error, but I did eventually manage to make the loading process quicker. I did this by making the engine only load the assets that the current scene needs, and then loading the rest in the background. Despite the seeming simplicity of the change, it was much more difficult than I had originally anticipated, but the results speak for themselves.

Showcase of the Load Time of a scene after my implementation of Scene Specific Asset Loading.
Showcase of the Load Time of a scene before my implementation of Scene Specific Asset Loading.