top of page
GENRE

Open-World Action-Adventure

2024 – Present

ECHOES
OF
ARGORA

01 Overview

Echoes of Argora is a gritty and grounded third-person, open-world Action-Adventure game focused on exploration, combat and finding your place in a world that is slowly falling apart.

The project originally started as a solo project, where I built the game and its core systems myself. It has since grown into a team project with other developers helping bring the world of Argora to life.

"From the ashes of Ragnarok, a new world emerged. A world that was once filled with hope and beauty, but after the tragic death of all but one of its young gods, something dark has slowly begun to spread."

You play as Azure, a warrior from the edge of the known world who must venture into the wilds and forgotten parts of Argora to find the source of the spreading evil. Along the way, he begins to uncover the truth about Argora, its gods and the strange abilities he possesses.

 

Upscalepng.png

Team Size

FOCUS

MY CONTRIBUTION

MY ROLE

GAME ENGINE

4 + External Collaborators

  • Gameplay

  • Systems

  • AI

  • Gameplay & Combat Systems

  • Enemy AI

  • NPC & World Systems

  • Technical Systems & Tools

  • Level & World Design

UE-Icon-2023-White.png

Technical Designer

Game Director

02 Gameplay & Combat

I designed and implemented the core player and combat systems with a focus on reactive combat. I wanted enemies to demand the player's attention during fights, where the player needs to read what the enemy is doing and react to it. This can mean knowing when to attack, when to parry or dodge, and when it's better to reposition.

I also didn't want the player to rely too much on stats to become better at combat. Instead, a big part of getting better comes from learning how enemies behave and understanding how to use the player's different abilities against them.

Demonstrating the core combat loop in isolated development environments.

02.1 Attack & Combo System

The combat system allows the player to use both light and heavy attacks. The player may choose to combine both together during a combo. I chose to do it this way since it prevents the player from getting locked into a set attack chain, so the player can follow up a light attack with a heavy one, or do the opposite. It gives the player some freedom to change their attacks depending on what the enemy is doing.

Combo Input Routing

Player input is cached when player attacks and routed into the next valid step of the attack chain

Chained Attack Selection

Called by 'Combo Input Routing' to determine and set the next attack

Demonstrating light and heavy attack combos in an isolated development environment.

02.2 Defensive Systems

The player has a few different ways to defend against attacks, depending on the situation. Blocking is the safest option, but it comes at the cost of stamina. The player can also parry an attack, which doesn't cost any stamina but requires much better timing.

Dodging is another option and can be used to completely avoid an attack or simply get into a better position. A successful dodge also gives the player a short opportunity to counterattack, rewarding the player for timing the dodge correctly.

BLOCK

Reliable defense​

  • Costs stamina

  • Low execution requirement

PARRY

Timing-based defense

  • No stamina cost

  • Rewards skilled play

DODGE

Avoidance & repositioning

  • Creates counterattack window

  • Maintains mobility

Demonstrating parrying, blocking and dodging in an isolated development environment.

02.3 Combat Feedback & Feel

Apart from the underlying combat mechanics, I use animations, camera behavior, VFX, audio and timing to make attacks feel more impactful and easier to read. I like to think of these as layers. By themselves they don't do a lot, but together they form an entire delicious cake.

Some of these layers are very subtle, but together they help the player understand what is happening while also giving the combat a heavier and more grounded feel.

HIT FEEDBACK

Hit reactions, VFX, audio, camera feedback (post process effects & shakes).

ATTACK ANTICIPATION

Time dilation, VFX, and audio.

FINISHERS

Majority of enemies can be executed if their health has passed a defined value.

image.png

03 Enemy AI

I designed and implemented the enemy AI with the goal of creating encounters that are easy to read but can still feel dynamic. I didn't want enemies to simply attack whenever they get the chance. Instead, enemies share the same base AI architecture which handles things such as attacking, positioning and how aggressive they should be.

Each enemy still makes its own decisions, but also needs to respond to what is happening in the rest of the encounter.

03.1 Group Combat & Positioning

One problem I wanted to avoid with group encounters was having every enemy surround and attack the player at the same time. To solve this I created an attack token system together with EQS-based positioning. The player owns a limited amount of attack tokens which enemies can request when they want to attack.

If an enemy gets a token, it uses EQS to find a good position around the player before attacking. Enemies that don't get a token don't just stand around and wait. They continue being active in the encounter and strafe around the player until they get another opportunity to attack.

I also wanted individual enemies to be able to break these rules. Some enemies may steal an attack token from another enemy, while more aggressive enemies can ignore the token system completely. This helps break up the normal rhythm of an encounter and keeps the player on their toes.

Ranged enemies use slightly different positioning rules. They put more focus on maintaining line of sight and staying somewhere the player can see them. This reduces situations where the player gets attacked by an enemy they couldn't reasonably keep track of.

Demonstrating enemy AI positioning in group in an isolated development environment.

03.2 Combat Decision-Making

All enemies are built from the same base enemy Blueprint, AI Controller and Behavior Tree. These contain the basic functionality that every enemy needs and give me a common foundation to build new enemies from.

The AI Controller and base enemy Blueprint handle things such as targets and combat states, while the Behavior Tree handles combat decisions, positioning, passive behavior and interruptions. Individual enemies can then build on top of this foundation with their own attacks, behaviors and combat logic.

image_edited.jpg

The base behavior tree that all enemies inherit.

image_edited.png

A simplified overview of the base AI flow from target detection to attack execution.

04 NPC & World System

With Argora being an open world with multiple villages and towns, I wanted NPCs to feel like they actually live in the world. Because of this, I put a lot of focus into creating a reusable NPC framework that could handle many different types of characters.

NPCs can follow routines, talk and interact with each other, follow or escort the player during quests, and react to things happening around them. Different NPC types can then add their own behavior on top of the base system when needed.

I also created a dynamic road navigation system which allows NPCs to find their way through the world using the existing road network. This means I don't have to manually create every route an NPC might need to take.

04.1 NPC Architecture & States

I built the NPC framework around a shared state-based system. This allows different types of NPCs to use the same basic functionality while still being able to add their own behavior when needed.

The base Behavior Tree acts as the main state responder. It checks what state the NPC is currently in and then sends them into a smaller Sub-Tree that handles the actual behavior for that state.

I chose to separate the system this way instead of putting everything into one massive Behavior Tree. Things such as routines, combat, dialogue and awareness can have their own logic, while still being controlled by the same base NPC system.

Full BP_Npc_Base blueprint class

bottom of page