Project Hemorrhage
Semester long combat design project. We created a vampire themed combat system with melee attacks, spells & abilities, enemies, and a boss fight. All featured in a showcase level.
Team of 5 designers & 1 VFX artist.
Created using Unreal Engine 5.
We utilized the Gameplay Ability System (GAS) for certain areas of the project.
We used a great sword animation pack as a starting point
My Contributions
My work was focused on creating vampiric spells / abilities, mainly the Blood Idol ability:
The Blood Idol spawns an Idol which disables the closest enemy for a duration of time.
Enemies can’t move or attack while disabled
The Idol also allows players to preform finishers on disabled enemies with low health for an instant kill.
I created the ability using a combination of GAS and standard blueprints.
I also contributed the following:
Setup GAS for the project overall
Used for key player and enemy values such as Health, Blood (mana), and key ability values (cool downs, mana costs, etc)
Helped balance combat through a hits-to-kill perspective
Design Intention
The broad goals for our abilities were to provide the player with several things:
A way to for players to feel like a powerful vampire & express a power fantasy.
Because the player does not have powerful ranged attack options and is slow moving, abilities allow them to even the playing field against groups of enemies or enemies at range.
The Blood Idol’s intention was to provide straightforward combat utility and strategic choice to the player.
Allowing players the ability to aim where the idol is spawned means they have some control over which enemy is disabled. This gives them different strategic options:
Players can choose to disable ranged enemies or enemies that charge forward in order to pin them down.
Players can disable a single enemy in between encounters in order to perform a finisher & spawn additional blood balls (which can be consumed for health).
Players can quickly place an idol next to them to get an enemy off their back.
Notably, the players can be hit out of the aiming animation but during the casting animation they’re invincible. This adds a minor level of risk to using the idol and encourages players to position themselves thoughtfully before using it. Giving them invincibility during casting ensures the player’s moment of power expression isn’t ruined by being knocked out of the animation.
Implementation Breakdown
The Idol ability logic is broken up into 5 main parts.
The Gameplay Ability
Aiming the reticle, checking for valid spawns, spawning the Idol.
Animations for the player casting, calling SFX & VFX events
Handles any cancelations or interruptions while the player is aiming.
The Blood Idol blueprint
Finding / detecting nearby enemies
Applying the disabled gameplay tag
The main character blueprint
Player input, events for post processing / camera effects
The main character animation graph
Blends the aiming animations with normal locomotion
A data table of GAS attributes
Contains the values for blood (mana) cost, disable duration, cooldown time, and more.
What Worked Well & What I’d do Differently
What worked well:
Splitting the logic between a Gameplay Ability & a spawned actor in the world. This was a separate but still connected flow of logic which was easy to work in.
Setting up FOV and post processing effects for polish. I was able to set these up in two stages, one for aiming (mild effects) and one for casting (full effects). This ensured that even just aiming the ability still gave good feedback to the player.
What I’d do differently:
I really enjoyed getting to grips with GAS for the first time but I felt like I could’ve used it more. Past the early stages of the project, I was mainly working in standard blueprints.
More dedicated playtesting early on. Many players were focused on the general combat and without UI early on many missed using the Idol completely.
Balance combat a bit earlier. While we didn’t run into too many balance issues, by starting that work earlier, we could’ve gotten some more specific iterations done instead of one big pass.
Version 1
The first version was focused on getting the core components setup:
Setting up GAS, creating some key attributes like Idol health, cost, & cooldown length.
Creating a GAS ability for the idol and activating it.
Creating a reticle to aim where the idol will be spawned
Spawning the idol actor itself.
Version 2
The 2nd version focused on the enemy AI logic to disable the enemy.
The GAS ability spawns the Idol which applies a tag to the enemy. Once the tag is applied, the enemy plays an animation while entering a different state in its behavior tree.
The above logic was eventually tied to an Animation Notify so I could time the spawn of the Idol more precisely.
Versions 3 & 4
The 3rd & 4th versions focused on animations for the player during aiming and casting the ability. They also added some early VFX. This video is from the 4th version.
Version 4 (Reticle Logic)
The 4th version also included new reticle logic:
Tracing to the ground for a Nav mesh & checking a collision box to clamp reticle movement to the playable space / ground.
The above also helps determine if the player has picked a valid spawn point (on the Nav mesh and not clipping into anything)
The Nav mesh is used to detect not only if the reticle is on the ground but also to help avoid clipping into objects or walls in addition to a collision box.
Version 5
The 5th version was focused on making the Idol feel cooler / better to use:
Added polish such as post processing FX, FOV changes, and a camera movement.
I adjusted the reticle colors for clarity, making the red for a valid spawn point a deeper red and the white for an invalid spawn to be brighter.
I sped up the casting animation by 25% to give the ability a faster, snappier, and more powerful feeling.
Version 6
The 6th version was focused on sounds:
I wanted to give sounds to the biggest impact moments: the spawning of the idol and disabling of the enemy.
I added some fleshy kind of sounds for the spawn and another similar sound when the idol disables an enemy.
River sounds really sell the volume of blood spinning around and the bell ring fits really thematically / makes the ability a lot more satisfying to use.
I added a bell ring sound on the Idol end as well so players who couldn’t see the idol would know that the enemy was free again.