Spite: knight of odin
Project Details
14 weeks, half time, completed in December 2022
13 people (5 programmers, 5 artists, 3 level designers)
Created with our custom engine based on The Game Assembly's in-house engine TGE
C++
3rd Party Libraries: DirectX 11, FMOD, Nlohmann Json, ImGui
6th Game project at The Game Assembly
Contribution Highlights
State/scene handling
Implemented a state stack that can update and/or render several states as layers.
Easy to go between states without them knowing of each other.
Can render states behind the newest. Used for the pause menu when the game renders in the background.
Animations are living in game while game is paused.Each state will always run it's entire loop to it's end.
This is to ensure that there is no interruptions in the code that could create unexpected behavior.
Cached States
This system was designed to easily swap between levels and user interfaces that didn't require reload.
This gave us faster load times & an easy way to handle checkpoints.
The loading of levels was handled by another programmer.
*The video is from an early stage of development running in debug mode and without threading loading hence the slower loading times. The scenes that you see in main menu and credits were cut due to a request of our designers wanting the game to look more minimalistic. Functionality remains in the engine.*
observer design pattern
Implemented a post master and made sure that only active states are receptive of messages.
Made an automated system to remove observers so anyone working with system does not have to explicitly handle it, whilst keeping the functionaly to use it manually.
Any class that would use this pattern would inherit from the Observer class.
PostMaster is also known as Listener/Observer system to enable communication between any systems, UI in this example.
user interface system
Built in-editor tools for Design to move around and save position using JSON.
Unique canvas for each scene, ensuring modularity
Assets are cached while in-game settings is reset upon death or new game
Responsible for sound options & resolution handling
Built as a factory to easily reuse for the next coming project BLOOM
Player HUD Features
Abillity to activate player abilites using mouse click.
Independent system, can be disconnected simply by not receiving calls from player.
Out of mana, cooldown, visual refelection of current active attacks, highlights on activation, tooltips rendered last to ensure readability.
Animated elements such as Health & Mana.
unity HLSL shader conversion
Converted shaders that were written in the Unity API by our artist into to our custom engine.
Since the Unity shader API differs from the standard HLSL language, we had to rewrite these to integrate them.
With this pipeline our artists had more creative freedom.
The VFX system itself was written by Christoffer Röster on my team. A skilled programmer & considerate teamplayer who I can highly recommend.
Code Above
Code to the left
Checkpoints
Check point handling, reintegrating the player correctly into the game world on death.
Level Transition
Backend handling of scene transitions.
Implementing video
Video playback in-game & the input handling that followed.
Debug Tools
Basic player controller with keyboard input & free cam and roam the world.