
Play as a metal-head wizard, forged in the mosh pits of hell.
Your scrolls are your song sheets, and your spell deck is the set list!
Role: Technical Designer
Team Size: 12
Platform: PC
Engine: Unity
Time: 11 Weeks
This project was developed as a part of Manchester Metropolitan University’s simulated studio module in which our tutors acted as studio heads, used Jira to manage the project. I worked as a Technical Designer and my main contributions to Hellcaster were the enemies (both in terms of mechanics and implementing their visuals), the conductor system, and the final boss fight.
Enemies
I used Unity’s NavMesh as the base for the enemy pathfinding, as it is simple and would work well for the kind of flat, dungeon-like levels found in Hellcaster.
Then I used a scriptable object for enemy data, which would be used by a script that all enemies ran off of. This meant that creating new enemies was as simple as creating a new ‘enemy data’ scriptable object and customising how it would work (does it walk or fly, is it ranged or melee, health, damage, etc). This system allowed anybody on the team to experiment with new enemy types without needing to code anything at all!
A short video showcasing the 3 core enemy types I created for the demo
I also applied all the enemy models, textures, and animations, syncing them up with the enemy’s actions and spending quite a lot of time bug-fixing them so they looked and played right.
There are two ways that enemies spawn in Hellcaster, the most common is where a pre-set list of enemies and their positions are spawned when the player walks into a room, and the other is the wave spawning system that stores multiple waves of enemies and spawn points. The following videos show how these systems work in-editor:
Conductor System
The conductor system is a core part of Hellcaster as it is part rhythm game. My conductor takes the BPM you enter for the current song playing, and makes sure it is synced up to when the song started playing. It is then used by many different scripts in the game to check whether the current frame is on beat (or half and quarter beats). This is mostly seen with the player’s spellcasting being judged against the beat, and when enemies fire on beat, but is also used for lighting in levels to help the player get a feel for the ryhthm.
Boss Fight
The final boss fight of our vertical slice was my last job, and the goal was to get as much done for it as I could before our deadline. Our level designer came up with some ideas for its attack patterns and designed the level. I then took this and developed all of the attacks, movement, and phases using a state machine that controlls it all. This was a new system for me as I haven’t worked on these kinds of enemies before, so it was lots of fun to learn how best to create it in an industry-standard way. I created custom animations for the boss’s unique attacks, which helped to sell the feel of it, and even made an intro cutscene, including some of our real-life green screen footage to bring it all together, even though it was not 100% complete.
And here is some earlier in-development of what the boss fight looked like while creating it’s mechanics.
My best piece of work would definitely be the enemies, as it encompassed lots of different features in all the different ways enemies could work. I spent lots of time getting them to feel right and even more time ironing out all the bugs that would keep cropping up when they were put into different scenarios in our varied levels.
Trailer