Spite - Order of Chaos
Spite was the first game we made during our second year.
After using Unity and Tga2D during our first year it was time to make our own game engine from scratch.
We had 14 weeks half time to make a game engine and a game. A tough task, which I'm proud to say we accomplished
Project Duration: 14 weeks, 50 %
Team size: 16
Genre: Hack-and-Slash action game
Gameplay and Feedback
Player Movement and Abilities
The player had many abilities such as a leap attack and a spin attack. I implemented movement and attack length and range for some of these abilities. Variables such as duration and range were configurable via ImGui to facilitate iteration.
VFX (Vignette, Fog, Flickering)
For extra feedback and atmosphere I added a vignette on death, fog rendering and flickering of our point light that simulated candles. I also added a hit effect on enemies which made fighting much more satisfying.
For extra feedback and gamefeel I added camera shake on player damage and a zoom out effect during the final boss battle.
Hit effect, leap attack, spin attack
Mouse picking against colliders
Together with Aron Jönsson I implented an event driven input system to minimize the need of polling. Objects subscribe to events and receive a signal when an input is triggered.
I implemented a simple collision system that was sufficient for this game since it used a navmesh for all actor movement.
I implemented mouse picking againts the ground and our colliders. A ray was constructed based on mouse placement and the player camera frustum. This was used in concert with ray vs. plane / ray vs. collider intersections tests.
I implemented an animation system that uses FBX sdk precomputed bone transforms. It can handle blending between animation states for a configurable amount of time and one-shot and looping animations.
For performance reasons we needed culling. I implemented a sphere based frustum culling system that greatly reduced the number of rendered meshes each frame.
I implemented a sprite rendering system with Aron Jönsson that was used for our UI and HUD elements.
I added shadows from spotlights on our meshes
Cooperation and using other programmers systems
The benefit of agile development, the importance of being willing to kill your darlings
Writing a game engine is difficult, it requires constant upkeep and testing