// 01
Purpose
The Resonance is my primary long-term project and the one piece of original IP I'm building entirely on my own, outside of any studio work. It's the deliverable I'm treating as my vertical slice — the project meant to carry the most weight when I go after a gameplay programmer role at an action-RPG studio.
The combat identity blends Kingdom Hearts II's combo finishers with Final Fantasy XV's multi-weapon switching (Sword / Gun / Lance), layered under a custom elemental system rooted in West and Central African (Yoruba) cosmology. The player belongs to an organization called The Resonance and carries the title Cipher — someone with the rare, hidden ability to hold every elemental affinity at once, in the same spirit as Clive and the Eikons in Final Fantasy XVI. Some Ciphers have defected to the enemy faction, The Severance; its corrupted-element enemies (Light Wrath, Dark Wrath) are the game's first combat targets.
Underneath the game, everything runs on Unreal's Gameplay Ability System — not off-the-shelf GAS boilerplate, but through a plugin I built from scratch called GASOline. Blueprint carries game-side logic; C++ owns the plugin layer, enemy AI, and the parts of combat that need to hold up as real architecture rather than one-off nodes.
// 02
Implementation
Eight systems make up the current vertical slice — combat feel, GAS-driven health and damage, C++ enemy AI, UI, menu flow, and the dash, potion, and key systems that round out traversal and inventory.
-
Hack-n-Slash Combo Architecture A full sword combo/finisher system blending Kingdom Hearts II-style finishers with Final Fantasy XV's multi-weapon switching. Combos are contact-gated, and mixed-weapon strings yield mixed finishers. Reworked the feel after the combo string read as too gated — the finisher now fires the moment an enemy is present and the string completes, closer to a true hack-n-slash than a rhythm-locked combo.Watch Clip
-
GAS-Driven Damage, Segmented Health Bar Refactored the damage pipeline onto GAS's SetByCaller pattern in place of hardcoded values, then bridged it to a modular segmented health bar — segments hold roughly 100 HP each, new segments appear as max health grows, and the main bar always represents the segment currently draining. Deprecated an older Blueprint health component so GAS is now the single source of truth for both player and enemy health.
-
Perception, Behavior Trees & Per-Variant Attacks Wrote the enemy AI controller in C++ — possession, Behavior Tree execution, and AI Perception with a sight config that writes the player to the blackboard on detection. Paired it with a custom C++ BT decorator (in-attack-range gating) and a BT attack task; each enemy has up to three attack variants — Light, Medium, Heavy — triggered through per-variant gameplay event tags. Patrol routes are settable per enemy directly in the viewport.
View Capture
-
KH3-Style Radial Arc Built as a UMG Material Built the player health readout as a UMG material — an angle mask via Arctangent2 and a ring mask via Length, driven by a fill-amount scalar on a dynamic material instance — designed to extend into a horizontal bar as max HP grows, with Kingdom Hearts III's health UI as the direct reference. Stamina and MP bars share the same player vitals widget.
View Capture
-
Kingdom Hearts Menu, Final Fantasy VII Rebirth Pacing A Kingdom Hearts-style command menu (Attack / Magic / Items / Drive) with working top-level navigation and confirm — Attack routes directly into the combo manager's input handling. The target feel is Final Fantasy VII Rebirth: quick selections with time dilation while choosing rather than a hard pause, with Focus acting as a temporary super-state that boosts attributes.
View Capture
-
Stamina-Gated Traversal A dash tied into the same attribute set that drives health — confirmed in-engine via an on-screen "Is Dash Activated" debug flag firing as the stamina bar in the vitals HUD depletes on activation. Traversal now costs a resource instead of being a free, unlimited dodge.Watch Clip
-
Stackable Potions Through the GAS Pipeline High Health Potions (Uncommon, +20 HP) sit in the same inventory grid as keys and equipment — picked up in the world, stacked, and consumed to restore health through GAS. Built and tested directly in the KHTry project alongside the gameplay effect and item assets driving it (GE_Status_HealHeal, GE_YH_Health, Item_HighPotion).Watch Clip
-
Consumable-Item World Gating A Key item (Rare, "OpenLockedDoors," 3 uses) unlocks gated doors in the world instead of a simple proximity trigger — doors carry separate open/close and lock/unlock interaction prompts, and each use decrements the key's remaining charge in the inventory panel. Traversal is gated behind item collection, not just distance.Watch Clip
// 03
Impact
This is the project where I've had to own the full stack — design, Blueprint, and C++ — with nobody else to hand a system off to. It's also the reason the GASOline plugin exists as its own piece of engineering, not just a folder inside one game.
A1–A3
Enemy AI Milestones Complete
GAS
Full Combat & Health Architecture
3
Attack Variants Per Enemy
C++
Custom Enemy AI Controller
// 04
Media Gallery
First real capture from the vertical slice — combo/finisher combat, the C++ enemy AI, the command menu, the KH3-style vitals HUD, dash/stamina, item-based healing, and key-gated doors — plus a dedicated clip on the elemental Fragment system.
Gameplay Capture
Sword combo, vertical slice test level
Closing distance on an enemy
Item pickup & inventory — FantasySword
Key item — Rare, 3 uses
Approaching enemy AI
KH-style vitals HUD
Command menu
Video Clips
// 05
Takeaway
Building The Resonance means owning the game and the tooling underneath it at the same time. GASOline exists because I wanted the combat architecture to be something I designed on purpose, not something that fell out of trial and error inside one project — which forces a different discipline than working inside someone else's systems: attribute sets, ability sets, and the AI controller all have to hold up as reusable, documented pieces, not just code that happens to work for one enemy or one combo string.
The AI work in particular pushed me further into C++ than any Blueprint-only project has. Writing the perception-to-blackboard pipeline, the BT decorator, and the per-variant attack task in C++ meant thinking in terms of engine-level contracts — behavior tree components, blackboard keys, perception configs — instead of node graphs. That's the direction I want to keep pushing, since it's closer to the day-to-day of the gameplay programmer roles I'm targeting.