Gameplay Design
This page showcases the work I did on projects where I held the role of a Gameplay Designer.
Third-Person
Melee Combat
Pirates!
Dread Anchor is a 3D Third-Person Melee Combat Pirate Game where you play as the undead pirate Captain Blackfish, a humanoid orca who wields a massive anchor. You made a deal with Davy Jones to temporarily rise up and get revenge on your mutinous crew. Wield your deadly anchor to deliver powerful crushing blows, hurl it to hook enemies, and guard against their savage attacks.
Project Overview
GAMEPLAY DESIGNER | Designing and implementing features, creating and balancing combat encounters.
LEVEL DESIGNER | Defining gameplay metrics, blocking out gameplay spaces, designing moment-to-moment player experience.
PROGRAMMER/TECHNICAL DESIGNER | Feature implementation, tool creation, systems design, bug fixing and optimization.
My Roles
Accomplishments - Gameplay Design
Handled GDD Documentation
Early in the project we reached the point where we wanted to validate our design, and based on that design I decided to learn how to use UE’s Gameplay Ability System to prove out our gameplay.
Over the duration of two months I learned the system and used it to create our core gameplay mechanics using both Blueprints and C++.
Some of those core mechanics include:
2 Player Attacks
Low Damage Sweeping Melee Attack Combo
High Damage Overhead Melee Attack
3 Enemy Attacks
Close Range Melee “Bite” Attack
Long Range Projectile “Pistol” Attack
Medium Range Melee “Ram” Attack
Hit Reactions
Player Power Up State
Gameplay Prototyping with UE’s Gameplay Ability System (GAS)
Early in the project we reached the point where we wanted to validate our design, and based on that design I decided to learn how to use UE’s Gameplay Ability System to prove out our gameplay.
Over the duration of two months I learned the system and used it to create our core gameplay mechanics using both Blueprints and C++.
Some of those core mechanics include:
2 Player Attacks
Low Damage Sweeping Melee Attack Combo
High Damage Overhead Melee Attack
3 Enemy Attacks
Close Range Melee “Bite” Attack
Long Range Projectile “Pistol” Attack
Medium Range Melee “Ram” Attack
Hit Reactions
Player Power Up State
Implemented Gameplay Mechanics Using Blueprints and C++
After prototyping with GAS and determining that it was overkill for the scope of our project I instead implemented our mechanics without GAS.
I programmed the following gameplay mechanics using both Blueprints and C++
3 Player Abilities
3 Hit Anchor Melee Attack Combo
Anchor Throw Attack
Anchor Block
3 Enemy Abilities
Melee “Bite” Attack
Long Range Projectile “Cannon” Attack
3 Hit “Bite” Attack Combo
Hit Reactions
Created Enemy AI Behavior with UE’s State Trees
We wanted the player to feel that they are fighting a crew of pirates, and so we needed enemies of different types to sell the “hierarchy” of a crew.
Deciding to use UE’s State Trees over Behavior Trees was a tough decision, I sought advice from many industry mentors and from their feedback I gathered that State Trees could be the better choice in the long run.
Learning this system was a tough given the limited online resources due to how recently the system had come out at the time. Despite this I managed to learn enough to create a modular set up to create 3 enemy behavior types:
Lemon Shark - Melee “Popcorn” Enemy
Melee Bite Attack
Great White Shark - Ranged Enemy
Projectile Cannon Attack
Hammerhead Shark - Melee “Tank” Enemy
3 Hit Melee Bite Attack Combo
Used UE’s ABP State Machine for Character Abilities
Given the genre and camera of this game it was very important that the characters never be doing anything other than what the animation was doing.
Working alongside a programming collaborator we discerned that we could use the State Machine inside UE’s Anim Instance blueprint to drive the logic for what characters can or can’t do.
This framework allowed us to have easy control over the transitions between actions for the characters.
For example, on the player’s input calls we’d use the “Request Transition” function to try and switch to the defined state. Depending on the current state the character is in would determine if they are allowed to enter that state.
Created Hit Box Trace Component for Melee Attacks
Part of the combat feel we wanted to go for with the anchor was powerful, impactful hits. Trying to achieve that with a generic trace in front of the character wasn’t selling it as well as we wanted.
So I created an Actor Component that integrated with the damage system to store the functionality for Starting and Stopping an Box Overlap Trace.
Using an Anim Notify State inside the attack Animation Montages I defined active frames where the traces were drawn in path following the defined transforms.
For the anchor, this meant traces being drawn following the path of the anchor swing during the attack. This immensely helped sell the feeling of the anchor impacts especially in large groups of enemies as they would sequentially get hit.
Created HUD Elements using UE’s Common UI
As part of the overall framework using UE’s Common UI to build all the UI in our game I had to use it to create the HUD elements as well.
This way it works seamlessly with the rest of the UI elements most notably when switching game states such as pausing or when the player dies.
Common UI brings a lot of extra functionality to boost the quality of a projects UI as well as handles common frustrations developers deal with while working with UI.
A great example is that it handles the deactivation of any active UI elements when another is activated, preventing any strange overlay issues.
I dove into Epic’s Lyra project sample, reverse engineering how they used this system to set up their UI framework. Much of it was quite advanced and deemed overkill for a project of our scope so for the most part was taking inspiration for the basic set up and simplifying it.