

INTRODUCTION
Omen to Empath is a 3D third-person action adventure RPG. The game combines exciting melee combat and interesting boss encounters. This project shares the story of an unsung hero who must venture through a portal to restore his town back to its previous glory.
You play a town knight who seeks to restore the lives of the villagers who perished overnight in a storm. The Temple of Empath which has been closed for centuries has finally reopened. You will embark on an exciting journey through purgatory-like places and encounter challenging bosses. The fate of the village is in your hands.


PROJECT GOALS
Create a game in Unreal that explores different aspects of an RPG such as a health bar, stamina bar, upgrades, interactive NPCs, and world-building.
Explore melee combat design and unique boss encounters.
Make an interactive level with functioning and purpose-driven rooms.
Create a functioning Shopkeeper and in-game currency.

GAMEPLAY
Role: Gameplay design, programmer, lighting, animation, sound design, dialog script
Platform: Windows
Engine: Unreal Engine 4.27
Tools: UE4, Synty Packs
Duration: 1 year​​, completed in 2024
Dialogue editor: Megan Rodriguez
Voice actors:
-
Knight: Michael Vilches
-
Slime: Inkyun (Twitch)
-
Duck: FGCDraft (Twitch)
-
​Boulder: EmptyWasher (Twitch)

GAME FEATURES
The original purpose of this project was to gain a better understanding of setting up and blending animations. Upon achieving skills in implementing animations, I made the decision to move forward and explore different elements of an RPG. This included various key features such as:​
​
Gameplay Mechanics | Interactive Elements | User Interface | World-Building |
---|---|---|---|
Health and stamina system | Interactive level design | UI design | EQS events |
Player and AI combat | Interactable NPCs | Tutorial | AI behavior trees |
Boss encounters | Merchant inventory | Currency | Landscaping |
Loot drops | Foliage | ||
Consumables | Narrative design |
SHOPKEEPER




The primary purpose of the Shopkeeper is to sell player upgrades and access to a bonus level. Additionally, it gives a reason to collect and work towards unlocking those upgrades, thereby giving the in-game currency meaning and offering slaying monsters/bosses a meaningful reward. The secondary purpose of the Shopkeeper is to support world-building.
​
Scripts used to create the functionality of the Shopkeeper:
-
Data Table & Data Structure
-
UI widgets and clickable Widgets
-
Set input mode only on UI with mouse
-
Inventory
PLAYER COMBAT


I sourced from souls-like inspirations for player combat regarding quad-directional rolling, blocking, and stamina/health management by the use of potions. I consider this approach to gameplay to be intense, engaging, and strategic, aligning closely with one of the core pillars of the game.
​
Scripts used to create the functionality of the Player Combat:
-
Animation blueprints & Blendspaces
-
Multiple keys simultaneously pressed to roll in different directions
-
Tab-targeting
-
Player inventory
-
Blocking
-
Health & Stamina
INTERACTABLE NPCS




Interactive NPCs were a key part of my design to bring the game's story to life and help players feel more engaged in the world.
I created a modular NPC where all dialogue and text can be altered from the viewport. This allowed the NPC to be placed in the world and for their text and voice lines to be swapped out without necessitating opening up their code. The dialogue and sound move to the next line as the player presses the interact key. To achieve this, I shared a common integer starting at -1 that rises every time it's called.
​
Scripts used to create the functionality of the Interactable NPCs:
-
Interactable interface
-
Voice lines & Text function
-
Giving quests
-
Starting events
BOSSES

This is the first boss the player encounters in level 2

This is the boss tree for the Knight, he has a move to branch, phase 1 attacks(Normal Attacks) and phase 2 (Desperate Attacks).

Duck Behavior tree the paths the AI follows.

This is the first boss the player encounters in level 2
Boss encounters are designed to provide players with a sense of achievement upon defeating them while offering a deeper insight into the game's story and world.
The game contains 3 enemy AI behavior trees. The first behavior tree has a patrol route with combat on sight, the second has direct melee combat, and the third has melee combat in range with two attack phases.
​
Scripts used to create the functionality of the Interactable NPCs:
​
-
Behavior trees
-
EQS
-
Enum states
-
AI controller
-
Using events in the level


WHAT I LEARNED
Developing an NPC interaction system that could display text and play sound in a specific sequence with a single keystroke was a challenging task. After spending approximately seven hours debugging and refining the logic, I achieved the desired outcome, albeit with one remaining bug. The issue arose from the way Unreal Engine 4.27 handles sound playback in relation to my function's setup. The final word in the sound queue wouldn't align perfectly with the closure of the text dialogue, leading to a mismatch where the audio either played awkwardly or cut off prematurely. To address this, I implemented a creative workaround: adding a short voice line at the end, humorously timed with a "QUACK" sound, followed by the duck exploding for comedic effect. This not only resolved the timing issue but also added an unexpected and whimsical element to the game, enhancing the overall experience in a way I hadn't initially planned.