Spite - Shadow of the Spider Lily

Spite - Shadow of the Spider Lily is an isometric Action-RPG inspired by Diablo 3. It was made in our own engine dubbed "Penugine" after a penguin mascot from an earlier game project from some of our members.
We spent four weeks building our engine before getting properly started working on the actual game.
Scope: ten weeks at twenty hours per week.
GIFs are generally clickable to view a higher detail mp4 file.
As mentioned, before beginning work on Spite, we had to create an engine to work with. While all groups had the option of borrowing and modifying TGA's engine, we chose to build one from scratch, while using our previous projects as reference to save time where possible.
My first task involved setting up a basic graphics rendering system along with a window to render in, which I worked on along with another group member during the first day. After we had some basic rendering functions in place, I handled a few smaller tasks such as transferring our maths library to the engine, and modifying our Unity loader class from previous projects to work with our new file structure.
With basic rendering in place, I started working on implementing sprites. While the implementation took a bit longer than expected due to some mistakes with rendering order and camera angles in our graphics engine, I was soon able to start working on different UI elements to be used in Spite.

The sprite system separates sprites into data (the texture used for the sprite) and an instance of a sprite (position, size, etc.), which enables batching them for particle effects and similar purposes.
With sprites in place I could also implement text in our engine. Although it ended up not being widely used in this project in favour of using sprites for e.g. tooltips and settings options, the possibility to render text was there fairly early on in the project.

In the above image the "mana" orb is also a sprite with a custom shader and noise map applied to it. Each sprite data can be assigned a custom shader and, if necessary, a file path to load a separate texture to be used for noise.


As more UI assets were finished my main time spent on Spite involved working on UI in our project, i.e. the HUD, menus, and any associated functions.
This also involved getting more familiar with Windows functions for purposes such as changing the resolution or replacing the hardware cursor with a custom icon file. To ensure that sprites, buttons, and text were being positioned correctly I had to make sure each UI object was updated properly when the resolution changed. For this project we thankfully only had to work with three separate resolutions, all in 16:9 ratio.

With all of the necessary functions in place and as more UI assets were finalised, most of my remaining time on the project was spent trying to make the UI look and feel better, integrate sounds from our soundbank (Penugine uses Wwise for audio), and fixing any issues or oversights with e.g. resolution changes or gameplay mechanics.

