top of page

Spite: Wrath of Valkyria

Specifications

  • Sixth project

  • Genre: Diablo style Action RPG

  • Made in CatBox engine (in-house team made engine)

  • 15 weeks half speed

My Contributions

  • Enemies

  • Boss

  • QA/Difficulty System

  • Level Designer Enemy Data Tool

Enemies

With Brewmaster done, I leave the UI programming behind, and get to do what I love once again, which is enemy AI and gameplay! The genre was also something that suited me very good, having played Diablo 3 a lot, as well as the previous entries of the series.

The enemies in Spite: Wrath of Valkyria are controlled using a Finite State Machine, just like I used for the player in Cyber Slash. There were three enemy types, and I modeled their behaviour after the reference game Diablo 3, so I put in some randomness in their actions: choosing a random combat state when attacking, waiting a random amount of time between actions, and similar.

Random wait times and durations of the enemy combat states. 

There was also a fourth enemy type, a Champion variety of the basic zombie-like Hollow enemy. The Champion enemy, which had the same states as the Hollow but different data, also had to have some special abilities. I went for two abilities: teleport to a random location in a circular area around the player, and spawn a damage pool in a random location near the player.

Boss

The boss was a different beast compared to the enemies. It used a Finite State Machine, as well, but the boss was static and did not move around the arena. The boss also had three phases, and as such, the states had to be phase-specific.

The concept of the boss also caused us some problems. The boss was a giant snake, that would bite or slam the ground when attacking. Getting the boss attack hitbox to the right location, activating and deactivating it at correct timings was tricky. Thankfully, about half way through the project, the engine programmers managed to get bone parenting to work, so it was just a matter of creating a hitbox that was parented to the mouth bone of the boss, and the collision system took care of the rest.

P6_boss.gif

The boss implementation required quite a bit of collision work. 

QA/Difficulty system

As early as the pre-production phase, I pitched the idea of having game difficulty levels. We were starting to get better at this game making business, so why not dare to add a little extra feature to give the game a little bit more depth and replayability?

With this approved, I built my enemy and boss systems in such a way that it could be possible to easily change the data that controlled their behaviour, attacks and hit points. Essentially, we could have three setups of JSON data, one for each difficulty, so we can tweak them separately.

The only thing that remains then would be having someone playtest and act as a QA, in order to balance the data for the difficulties. I volunteered do this from the start, because I enjoy it and find game balance to be important. Playtesting tends to be a little bit forgotten during these projects, but I find it interesting! A game should not only work good, it also needs to feel good when playing.

P6_diff.jpg

Spite: Wrath of Valkyria had three difficulty levels. 

Level Designer Enemy Data Tool

As a part of the enemy balancing, and the enemy data for other difficulty levels, it made sense to implement some way to easy test and change the enemy data in real time. For the Enemy and Boss components in the engine, I created a small interface in the engine, which made it possible to change data in real time, as well as load and save settings from/to the corresponding JSON file.

Team

We are Stupid Town.

​

Programmers

Filip Nygren, Lars Tallinger, Elin Granath, Henrik Park, Alexander Rosendahl, Markus Hermelin, August Smith, Elric Dagsberg

Level Designers

Vanessa Grundström, Elias Carlsson

Graphical Artists

Martin Åkesson, Albin Bång, Malin Fröjd, David Bohlin, David Axelsson

Animators

Lucas Åsaborn, Emelie Bettoschi, Daniel Nagy

Technical Artists

Tim Lindberg, Per Magnusson, Christopher Nylén

Audio Design

Albin Wrede

bottom of page