
Diablo clone
Tech Stack
- C++
- DirectX 11
- UI
- Tools
Overview
Spite: Equilibrium was the 5th game I worked on at TGA. The project was split in two, with the first one being pre-production and the second being actual production.
During the 4 week long pre-production, we programmers started developing our custom BOB engine and were working with other disciplines to establish all the content pipelines.
During the 10 week long production my main contributions were developing the program that serializes our .bob files and developing our cutom UI Designer “Klikkipaja”. I also worked on general UI-polish during the last weeks.
Klikkipaja
During pre-production, when deciding what we wanted to implement in our engine, we discussed how we would handle UI with our artists. They understandably didn’t want to manually build all UI in JSON files, so me and Elias Öström started working on Klikkipaja. This started with us adding sprite support in our graphics engine as it didn’t have it yet.
After sprite-support was added we first tried to use The Game Engine (TGA:s custom game engine) as a base for Klikkipaja, but it proved to be quite difficult because of mismatches between BOB and TGE. Because of this we instead decided to use BOB itself as a base for the program, even though it required a lot of time to essentially remove all game aspects of BOB and convert it to more of a Modelviewer architecture. After pre-production we were finally done with a MVP of Klikkipaja, enabling our main UI artist Emilia Georgieva to finally start using it.
Over time we added more features such as custom shader overrides, hover and click sprites, and hitbox resizing for buttons.
Serialization
I worked together with Elias Öström to develop and maintain our serialization program that converts the FBXes in our game into custom binary files (.bob). We did this to enable us to make our level-loading multithreaded, decreasing load times and enabling our level designers to not think (as) much on performance.
UI Polish
Death fade in/out
Unlocked ability popup
Load screen and level name popup
Screenspace enemy healthbars