Role: Product Owner/Systems Designer
Timeline: August 2024 - May 2025
Platform: PC
Tools: Unreal Engine 5.5
Download: Dual Shadows
Summary
In this 3rd Person action combat hack and slash, you find yourself wanted for the murder of three powerful individuals that control the futuristic city of Dragon’s Rain. Traverse the cities’ districts, confronting those that seek false justice to find and defeat the true culprit. With dynamic gameplay that fuses melee and ranged combat, you’ll also unlock new skills and abilities that encourage strategy as you fight to clear your name and restore balance to the city.
What I did
My role on Dual Shadows at first was Combat Designer, but eventually shifted into full Systems Designer, as well as Product Owner. I made multiple combat systems that eventually led us to our end product, from health costs to dualcast spell systems. Here I'm only going to cover the evolution of the Combat System and why it changed over time into what we have now.
In this version, the player had a parry system that would lead into a kick combo that left enemies stunned. The system revolved around the player going in an out of combat at the right time, as ranged attacks were slower and dealt less damage but allowed for dealing damage from a distance. At this point we received feedback that the parry response was too long and it felt like finishing combos was never satisfying because they were too long, and the ranged form was too powerful. I added a flat heal per attack for ranged, and a flat health cost per attack in melee. Feedback showed that this wasn't engaging and players felt that making melee cost health felt unfair and unmanagable. This lead to the next iteration.
In the second iteration of combat, I adjusted ranged damage to scale with current health and melee damage to scale with missing health. This was to encourage players to switch between forms to ensure maximum output and engagment. Some players took to this well, while others found ranged too scary, or didn't mind lower damage values in melee. Further testing saw melee dealing NO damage at full health, but this only frustrated and confused player.
At this point I also implemented a spell system that allowed the player to heal in ranged, but this ended up being too complicated so it was refactored into the ultimate system
In the final implementation, we strayed away from forcing players to have to balance their health, and instead allowed players to choose whichever form they wanted, but encouraged engaging with their chosen system by adding a yin/yang bar. Increasing one forms bar would have a benefit to the other, and would also have an ultimate form when maxed out. Each ultimate form would last for 10 seconds and grant the player a special ultimate spell. this is the system we chose to move forward with.
Challenges
Health costs : Having health costs was interesting but took a lot of testing, and would have taken even more to get it right. Ultimately making the choice to instead focus on positive reinforcement was a better idea and lead to a better end product.
Balance: Getting players to enjoy both forms in tandem was initially the goal, but like the above we soon realized that making players enjoy both was just as bad as forcing them to play as one or the other. Eventually it just because play what you want how you want, and I think that was for the best.
Boss: Earlier versions of the Phoenix Boss were unclear and not completely thought out. Thanks to the help of fellow classmates in second semester, however, we were able to breath more life and interactivity into the Phoenix, and also add an additional boss.
TAKEAWAYS
Ultimately, this project really helped me understand the value of organization and teamwork. None of this project would have gotten done if it wasn't for everyones participation. I think as a Combat Designer I realized that just because I want it to work doesn't mean I have the time to make it work, and it's best to let go of things to find a better way. Ultimately, the goal is to have a happy player, and making this game really helped me see that.