Role: Creative Director
Team Size: 14
Time: January 2019 – May 2019
Engine: Unreal Engine 4.21.2
Reaver is a third-person action brawler. In a dystopian far future, the Yellow Skulls gang has taken over the Steiger Consolidated Arms facility with their overwhelming numbers. Their plan: to use it to conquer the city of Black Ridge. Take on the role of Reaver, an experimental and highly powerful cyber suit tasked with a simple mission. Search and destroy. Players fight through hordes of enemies with melee and ranged combat assisted by a jet pack for high mobility. Weapons in Reaver have limited ammo and durability which players must manage as they engage the Yellow Skulls overwhelming numbers. As players fight, they build up fury to unleash to quickly dispatch their foes. When the Reaver is low on health, executing enemies quickly replenish its health, allowing them to keep fighting.
- Create and maintain a strong vision for Reaver as a fast-paced, third-person brawler in a cyberpunk setting.
- Design and prototyped player jetpack movement and dodging mechanics along with the invincibility frames, energy drain, and recovery tied to it.
- Design and prototype combat systems that allow for players to wield a ranged and melee weapon in each hand. This allows for players to swiftly change tactics in battle without losing momentum.
- Collaborate with programmers to further refine melee combat to a buffer-based system that could chain into different moves based on the current state of the combo. For example, three light attacks followed by a heavy result in a stomp that knocks back and stuns nearby enemies.
- Design, prototype, and iterate finisher mechanics and systems which lock a player and their target into an animation that restores health upon completion.
- Design melee and ranged AI archetype behaviors along with three variants for each archetype with their own additional behaviors such as dodging and using combos.
- Design and prototype level progression system where doors lock when a player enters a room and unlock once all enemies have been dispatched.
- Design, prototype, implement, and iterate upon the game’s 3 levels, encounters, and objectives.
- Balance passes on all aspects of the game to maintain a fast pace with challenging combat.
- Collaborate with animators to create, implement and adjust combat animations, audio, and animation notifications.
- Collaborate with 3 programmers implementing and polishing AI, combat, and systems.
- Ensure the player experience fulfills the vision of a fast-paced, cyberpunk brawler.
- Perform playtests to gather feedback to be broken down into actionable data to improve the game’s quality.
- Coordinate with the development team to create, assign, and complete tasks.
- Facilitate communication between design, art, tech, and narrative teams.
- Create and maintain thorough design documentation in the form of a GDD and ASG.
Skills Gained or Improved
- Deeper understanding of animation tools in Unreal. In particular how to retarget animations from one skeleton to another and break up single animations into sections to be called as needed. For example, breaking the player out of a melee attack to play a stagger or knockback animation.
- Improved understanding of UE4 Blueprints. Used these to prototype all jetpack related mechanics, early melee and shooting combat, and finishers.
- Improved understanding of UE4 sequencer and how it connects with blueprints. This was used primarily with the initial iterations of the finisher mechanic. When players performed a finisher a sequence would play, giving them a cinematic look at how they ended their enemies.
- Learned the drastic difference in performance and capabilities between Blueprint and C++ Programming. I started to study C++ as a result of this.
- Learned how to design melee combat. Timing of animations, when and how long an attack will deal damage for, how to chain attacks together, transitioning between different moves, etc.
- Improved Balancing skills. Spreadsheets are an excellent starting point for any balance decisions but ultimately playtesting shows how well they ultimately perform.
- Improved AI design skills and learned about UE4’s blackboard behavior trees. This was improved by creating melee enemies that didn’t all attack the player at once and tried to dance around them, avoid their attacks, and used varying combos.
- Improved Debugging techniques. We a nasty bug that came up with melee where players could deal damage on tick while cutting through their target and ruin the balance of the game. After adding several notifies and debug logs, we discovered if players broke a melee weapon and picked up another during the middle of a swing, the weapon in hand never told itself to stop dealing damage. It was a quick fix to tell weapons to default themselves to off when picked up, but it took a while to catch.
- Improved design documentation skills. I was able to become far more concise and clearer with documentation, reducing the size of our GDD by half.
- Improved scope management. Whenever I do anything, I want to go big which has caused some problems in the past. In this project, I managed this by still designing big but highlighting what were the core, essential parts of the game and which were stretch goals.
- Improved communication skills. Prior to this project communication was kept facing to face meetings, messages over discord and calls. During this project, I learned the importance of follow up communications to document and confirm what was discussed to minimize confusion.
- Improved conflict resolution skills. It’s important to get people to step back, take a deep breath, and look at the bigger picture.
- Designing, prototyping and implementing the finisher system’s several iterations. In its original state, we thought to use a cinematic approach to finish off enemies. Minor issues aside, this took situational awareness away from the player in the heat of battle. So, we switched to giving the player full control of the camera during finishers so they can plan their next move.
- Designing and implementing melee combat. Being my first time building such a system there was a lot of research to be done on how exactly to implement one of these systems. From deciding how we will register melee hits to how many targets can a swing hit and how do we make sure the player actually hits what they wanted to. This took a lot of coordinating with our animation and programming teams, but we came up with a good system. We use the collision of melee weapons to register impacts, add valid targets to a list to make sure nothing is damaged or plays an impact sound more than once. Lastly, we allow the player to turn slightly during swings so they can stay on target.
- Designing levels with level streaming in mind for the first time. This was my first time touching such a system and initially caused a lot of hilarious bugs like enemies loading before the geometry and ultimately falling through the world. After a day or so building levels with level streaming, I had my layers down to a science and could throw up a level, complete with encounters, lighting, and narrative within a day and get to testing.
- Delegating tasks with an abundance of designers. We had 5 designers including myself, and that’s a lot for a small project. After discussing with the other designers their strengths, weaknesses, and skills I delegated the tasks as follows: 2 for narrative design, one of which would handle voice over scripts and recordings. 1 on audio design, whether that be sourcing or editing sounds. And lastly one on level design. Meanwhile, I focused on combat, AI, and Systems while overseeing the other designers and helping when and where needed in all other fields.
- Conflicts within the team involving roles, responsibilities, and deliverables. This resulted in unnecessary delays for the project which other team members had to make up for. The problems were ultimately resolved, and the project came out on time.
- Working with cel-shading for the first time. Going into this I thought cel-shading would be easy to work with since the textures are super light, but there’s a lot of other considerations involved when looking at how the shader interacted with our assets. For example, if a room was too large it would begin to fade into a black void and that doesn’t look good. Another issue was the way lighting played with the shader and emissives in particular. If we set up our lights the wrong way, we could have blinding emissives in a room that simultaneously did not look lit at all. With several adjustments to our shader and learning how it reacted to various settings, we achieved the cel-shaded look we were aiming for.