Curse of Archibald
Project Details
Engine: TGE (my school's rendering framework using C++ and Directx 11), modified by us.
Duration: 14 weeks, 50 %, completed in December 2022.
Team: 5 programmers, 5 artists, 3 level designers.
Genre: Hack-and-slash.
Inspiration: Diablo 3.
Contribution Highlights
Collision System
I implemented a collision system that could handle AABB, OBB, sphere, ray, plane and point collisions.
Frustum Culling
I added a frustum variable to the cameras that updated once every frame. This worked for both perspective and orthographic cameras (the shadow map camera was orthographic). Then checked collisions with the meshes bounding spheres that I moved to world space. This increased our performance by a good amount.
VFX
This was the first project I created VFX for and it was a lot of fun. It's not often we get the time to polish and juice things, but on this game we hade about 1-2 weeks for it. I think that is one of the most fun phases in a project.
While making these I played around with some noise and tried out some techniques like depth fade and uv distortion.
For the prop fade I hade to move the objects from the Deferred rendering pass to the forward rendering pass, with a custom shader using the same PBR lightning. I made the OBB collider for this, so the level designers could rotate the props however the needed and still get the props to start fading as expected. I then created documentation for the level designers on how to use the prop fade.
Ability Queueing
While working on the player I felt the need to queue abilities and actions, to make the gameplay smoother.
Animation Interpolation
Adding to the school's render framework's AnimationPlayer class. I made a wrapper component that interpolates an array of animations together with a smoothstep math function. This made the movement and gameplay look a lot smoother.
I also made functionality for additive blending. This was only used for when the player and enemies takes damage, so you don't have to stop the current animation. Hopefully we will get more use of it in our upcoming fps game.