Aaron Isara's Portfolio

Ronin
Summary
Ronin is a fast-paced rogue-like that leverages detailed art and sound design to make the player feel like a legendary sword master. This was a collaboration with 14 other students that I co-led for UCLA ACM Studio's 2022 SRS Unity game development projects over 20 weeks.
My responsibilities included:
Establishing major milestones and managing weekly tasks using a pseudo-agile framework
Architecting game systems
Implementing elements of combat and movement

Reducing Complexity
Building a game as a team of amateurs who don't have a whole lot of time
A Simpler Stat System
The sheer volume of character combat metrics (ex. energy level, is stunned, parry state, etc.) in the initial vision for Ronin pushed me to search for fancy, AAA-worthy solutions to manage its complexity. However, fast-approaching deadlines led me to cut the scope and rearchitect the game around a minimalistic health points component called HealthStat:
Flat damaging and death detection sufficiently supports core gameplay
Simplicity and similarity to scripts used in previous projects reduces team learning time
Straightforward interface reduced complexity of integrating into project

Root Motion
Originally, all character movement was performed by scripts. However, the complex motion required to space Ronin’s combination sword slashes made animation-driven movement (root motion) a more attractive option, not only for slashes, but for many other forms of movement like walking and rolling.
Reduces code complexity at the cost of losing control over movement since our team had no dedicated animators
Keeps animations in sync with actual movements, ensuring characters in the game feel realistic

More From Less
Finding ways to reuse assets and generate more content
Attack Scripts
To reduce the time the team needed to test combat mechanics, I implemented all damaging abilities in the game from 2 simple attack behaviors called BasicMeleeMove and BossStomp.
BasicMeleeMove uses animated colliders on a character’s limbs to generate melee attacks like Ronin’s slashes and the Monk’s punches
BossStomp creates a damaging field that knocks Ronin to the floor and is used in the Ghost’s explosion and (of course) the Boss’s stomp
Each instance is customized with different damage values and auditory/visual effects to make them feel different
Wave System
Due to time constraints, my co-lead and I decided to reduce the scope of the project to a single level. I wrote a script called WaveManager to squeeze the most out of this one floor and convert it into a multi-stage experience that would give the game a sense of progression:
Each “stage” specified by list of references to enemy spawners on map, each generating one unit at the start of a wave
End of wave detected by death of last unit spawned
Notifies external systems about key moments in the player’s journey through the game (such as defeating Wave 2 or reaching the boss wave)