DESCRIPTION
ONAR is a 3D fighting game inspired by classic PS1-era fighters, built in Unity. It's designed to be pick-up-and-play while introducing mechanics that reward strong defence and timing.
At the core of the game is the Depth Block system: correctly predicting direction and blocking builds a Depth Meter, which accumulates attack damage and converts defensive play into offensive potential. Tournament mode adds a belt-based progression system where higher ranks amplify damage output when paired with Depth Meter progress.
ROLE
I was the lead programmer on a three-person core team, working closely with the director/designer and animator. I was responsible for much of the game's programming, including combat mechanics, character behaviour, AI, UI and the systems supporting its different game modes.
KEY CONTRIBUTIONS
- Developed the core combat mechanics, including character movement, hitboxes, blocking, attack handling and input timing.
- Built a data-driven combat system using C# dictionaries and CSV files to store character movesets, attack properties and input requirements.
-Implemented input buffering and move recognition to translate controller inputs into attacks and combos.
-Programmed opponent AI with attack routines, evasion and proximity-based behaviour, including the ability to recognise repeated player moves and adjust its responses.
-Worked closely with the animator to integrate character animations with movement, attacks and hit reactions, setting up animation state machines and blend trees and resolving animation-related issues.
-Implemented match systems covering scoring, timers, ring-outs and round transitions, alongside the logic needed to manage different gameplay states.
-Developed tournament, story and tutorial modes, including character-specific dialogue loaded from localisation tables and a belt-based rank progression system.
-Created the game's HUD and menus, including a data-driven command list that loads moves directly from character movesets and adjusts its layout based on player position.
-Added audio and UI feedback for gameplay and menus, including character sounds, ambient audio and cues to make interactions clearer to players.
-Managed the game's Steam builds throughout development, investigating bugs, fixing edge cases and ensuring new features worked correctly alongside existing systems.
-Contributed to gameplay design and balancing, regularly testing and adjusting mechanics with the rest of the team.
CHALLENGES
ONAR was my first full game and the biggest Unity project I'd taken on at that point, so it was a huge learning experience.
Fighting games are particularly demanding when it comes to timing and responsiveness. Even small changes to combat logic could affect animations, AI behaviour or how characters reacted to inputs. The game also evolved considerably during development, including a transition from earlier points-based prototypes to the health-based combat system used in the final release.
A lot of the challenge came from keeping these interconnected systems working together, particularly as new mechanics and game modes were introduced. There was plenty of trial and error, debugging and playtesting involved, but it was incredibly rewarding to see everything gradually come together and eventually release on Steam.
TECHNICAL
Engine & Language:- Unity, C#
Combat Architecture:- Data-driven movesets, input buffering, move recognition, state machines and AI behaviour
Data Handling:- CSV-based configuration, C# dictionaries and localisation tables
Animation & UI:- Animation state machines, blend trees, dynamic UI and gameplay feedback
Release:- Steam builds, debugging, testing and ongoing maintenance
SCREENSHOTS
TRAILER