top of page
  • LinkedIn

Rhythm Action Game

Skills Developed

Main Roles

  • Unity C#

  • Feature Documentation

  • QA Testing

  • Professional Communication

  • Data-driven Programming

  • Technical Designer

Overview

We were given a choice between developing our own game concept or interpreting a brief provided by an external client. We saw the client brief as an opportunity to gain invaluable work experience before graduating university.

Working with the Client

Feedback was gathered through biweekly meetings, centered around updating the client with our progress and next steps. Furthermore, meetings had to be held outside of university time to accommodate our client’s distant time zones in Vancouver and Hong Kong.

In these meetings, we were encouraged to show professionalism and be willing to concede ideas and features if they could not fit into the client's vision. I was critical to this process, as my work prototyping features was presented to the clients and subsequently critiqued.

Project Management

For this project, we made use of Jira to track our tasks. We maintained a clear nomenclature, using epics to mark significant jobs with individual tasks to streamline production.

Screenshot 2025-06-17 222324.png

Global Game Jam 2025

The Global Game Jam was used as a testing bed before we committed to developing the game further. We experimented with a top-down perspective, and an attack system where you collect projectiles spawned by your partner: BAWDIE. After completing the jam, we decided a third person perspective and more traditional firing system would be simpler to iterate on for the scope of our project.

ItchBackground.jpg
Screenshot2.jpg
Screenshot1.jpg

Data-Driven Design

To accelerate testing and development of new features, we made features using Unity’s scriptable object system. This let less programming oriented members of the team balance game systems without needing to know how the code worked.

Screenshot 2025-06-17 222837.png
Screenshot 2025-06-17 222900.png

Combat Tracks

The player defends themselves by chanelling music into damaging projectiles. By attacking on time with the song, the player will channel bursts and pellets towards their enemies.

The tempo is managed by a metronome function that ticks in time with the current
track’s bpm and time signature. The tracks are data driven and can be controlled within a scriptable object in the Unity Editor. From tempo to energy cost and maximum range, each attack can be tuned to feel unique in the game.
Each track has its own damage type, which deals increased damage to specific enemies.

Enemies

Enemies in the game follow a state machine that can change between idle, hunting and searching depending on the circumstance.
Enemy behaviour is data driven and tweakable in the editor, containing settings for detection ranges and options to change the projectile that an enemy shoots at the player.

yellow.png
blue.png
red.png
Screenshot 2025-06-17 223124.png
FlowchartEnemyAI.png

Encounters

Player progression is driven by the encounter system. When the player enters an encounter, enemies are spawned and desired code is called through Unity’s event system.
Reinforcements are summoned gradually and the player is rewarded for surviving with ammo pickups and health. If the player dies at an encounter, they will be respawned just before the encounter with all of their unlocked tracks.

Quality Assurance

During the project, we maintained a QA document detailing the progress on new features and bugs that needed addressing.

Screenshot 2025-06-17 223439.png
bottom of page