Spite Absolution

Spite Absolution is a hack-and-slash action role-playing game created by Cyber Sloth in our in-house game engine Lucky Engine. It is heavily influenced by our reference game Diablo III and leads you through haunted chambers to reclaim a stolen artifact. On your way through the tombs, you gain the remaining powers of your fallen brothers and sisters who lost their lives during the very same mission on which you have been sent.

  • Hack-and-slash action RPG
  • 14 weeks half time
  • Our own Lucky Engine using DirectX 11
  • Using entity component system EnTT

For this project, I decided to take on some challenges. I signed up to handle the level exporting and loading the levels into the game. I also volunteered to work with the creation and pipeline for particles (this would later turn into me working on a particle editor). At the beginning of the project, I code mined my old state stack from my previous game project Vertebrave and Akuma. This system, together with its interface made for an easy-to-work with scene handling system (going between menus to in-game and so on). To read more about it, you may press here.

Level Exporting and Loading

I worked closely with the level designers to decide which level editor we would want to work with and what the workflow would potentially look like. We decided on using Unity as a level editor and I started looking at the structure of the export scripts. With some help from my teammates, I decided that creating an ExportObject-script for every model to export would allow the level designers to control what will be exported from the levels. I created an editor script for Unity so that the level designers could, with an easy click, export their levels in the form of Json-files to their chosen directory.

In the engine, I created a LevelLoader-class that would handle and break down the loading of different objects (navmeshes, models, lights, particle systems, enemy placements and so on). I made this class a subscriber so that it could subscribe to receive certain messages from a PostMaster-class. If another developer would want to load another scene, they may use a predefined macro called CHANGE_LEVEL_SCENE_NAME() and enter the level's name as an argument. I made this macro so that it would be as easy as possible to load levels without having to create a LevelChangeMessage and enter that into a Message by hand.

Particle editor

I was excited to develop a tool for the technical artists to be able to use directly in our engine. I approached them and had a very thorough discussion about their expectations. The first iteration allowed the user to change the texture of the particle, the particles' speed, color, size, emission rate, gravity, if the particles were to be moving in their local space or in world space and some more. It was proven that this was enough for the technical artists to feel allowed to create multiple really cool and creative particle systems and combinations of particle systems. For example, here you can see technical artists Kim Johnsson testing out a god ray effect in the engine.

Under Specialisation/Particle editor I write more about the particle tool.