top of page
Ninja Quest Text.png
Role:

-System Designer

-Blueprint Programmer

-Level Design

-UI/UX Designer

-Sound Design

-Music

Ninja Quest is a 2D action platformer with an emphasis on old school platforming with an arena combat system. You play as a ninja whose identity is unknown and is on a solo self-discovery quest.

 

Ninja Quest is a solo passion project developed alongside my other work, built in Unreal Engine 5.3. The project serves as a focused space to explore and refine systems design, UI/UX, and gameplay programming through iterative development.

Timeline:

May 2024 - January 2026

Engine:

Unreal Engine 5.3

Object-Oriented Character System

The character system is built around a parent character class that handles shared functionality such as damage, hitstun, event interactions, and animation integration. From this foundation, character types are defined through an enum-based structure and extended into player, enemy, and NPC classes.

Enemy design is further modularized through layered child templates, including a base enemy class with standardized behaviors (health, death handling, UI integration) and a boss template that introduces specialized UI and pre-fight interactions. This structure allows all enemies to inherit consistent functionality while supporting unique behaviors when needed.

Enemy variations (such as basic, tank, and speed types) reuse the same core behavior while adjusting key variables like health, damage, movement speed, and visual presentation, enabling efficient content creation without duplicating logic.

NQ Parent Child Class.png

2D Animation System (PaperZD)

To overcome limitations in Unreal’s default 2D animation system and streamline animation workflow, I used a free plugin called Paper ZD. PaperZD enables a workflow similar to Unreal’s 3D animation system, including animation blueprints, state machines, and animation notifies for 2D characters. This allowed for more advanced control over animation logic, including locomotion systems, animation transitions, and more.

Sprites were created using Aseprite and imported via JSON sprite sheets, significantly reducing manual setup time. Paper ZD's animation sources were used to organize and manage all animation data per character, including multi-directional animations within a single asset. Paper ZD's animation notifies were used to drive gameplay systems such as combat timing, enabling precise control over combo transitions and hitbox activation directly within animation frames. 

Similar to a 3D character workflow, animation logic is handled through a PaperZD animation blueprint that is attached to the character via an animation component.

Animation Blueprint.png

UI/UX

I designed a stylized and readable UI that supports health, menus, and combat feedback while keeping players focused on platforming and action. The interface prioritizes clarity and responsiveness, ensuring that information is easily understood without interrupting gameplay flow.

 

The UI is built using a modular nested widget structure, where core elements such as the HUD, health bar, and dialogue system are composed into a unified layout. This approach improves organization and allows for reusable components across multiple UI contexts. Custom UI buttons were implemented to support both controller and keyboard input, including button focus states and navigation. Interactive elements such as control menus were designed using reusable button components, allowing for flexible customization of text, visuals, and animated transitions.

To maintain a cohesive visual style, animated 2D sprites were integrated directly into widgets using material-based animation techniques, enabling controllable playback within the UI. The overworld menu is also structured as a nested widget system, with each level select implemented as an interactive button, reinforcing consistency across the interface.

UI Blueprint.png

Movement

Movement is a core focus in Ninja Quest, as responsive and readable controls are essential to the 2D platforming experience. The system was designed to reflect the feel of classic platformers such as Super Mario Bros. and Mega Man, emphasizing precision, control, and player forgiveness.

Using Unreal Engine 5.3’s character movement system, I fine-tuned key variables to achieve a more grounded and responsive feel. Gravity was increased to reduce floatiness, with jump velocity adjusted accordingly to maintain satisfying jump height. Variable jump height was implemented through input hold timing, allowing for both short and long jumps based on player input. Air control and lateral movement were adjusted to give players greater control while airborne, aligning with the responsiveness expected in classic platformers.

 

To further support player accuracy and reduce frustration, coyote time was implemented, allowing jumps to register shortly after leaving a platform and improving overall forgiveness during precise platforming sequences.

Movement Values.png

Arena System

The arena combat system is a core gameplay structure in Ninja Quest, designed as a modular framework that can be applied across a variety of combat scenarios. Early encounters start easy, but later levels challenge the player’s mastery of movement and combat mechanics.

 

A base arena actor class (that's placed in the levels) defines encounter data and configuration, while a dedicated arena battle actor manages combat flow and progression. This blueprint actor tracks enemy counts and player state to determine encounter outcomes, such as victory or defeat.

Arena System Flowchart.png
bottom of page