top of page
Project Ghost SS2.png

Project Ghost is an action RPG game with stealth elements. This  project is currently in development, so stay tuned for more information

Gameplay Preview

Platform | PC

Playtime | TBD

Engine | Unreal Engine 5.2

Download  | Coming Soon

Duration | Dec 2023 - Ongoing

Team Size | 6

Roles | Combat Designer

Project Ghost SS2.png
Responsibilities
  • Led the tech team, managing tasks and guiding the overall gameplay design of the game.

  • Designed and implemented attacks and combos.

  • Worked on tuning combat to be engaging and fun.

  • Worked on bug-fixing and playtesting the game's mechanics.

  • Merged work made by different people in the team.

The Combat Component

The combat component is an actor component that handles most of the combat functionality in the game. This modular component can be added to any actor, and that should automatically enable said actor to be a playable character.  The component holds the combat functionality and animations. Those can be changed in each actor in the editor to quickly change the attacks, weapons and movement options without needing extra code. This means that, if you want to create extra playable characters, as long as you put the combat component, and then add the animations you want the second character to have, the new actor should automatically be playable as a second character. This is the core of the combat system, and where all the magic works.

CombatComponent.png
The Combo System

I had the responsibility of designing and implementing the combat mechanics in the game. So, let's talk about the combo system.

The player has access to two main type of melee attacks in this game, light attacks and heavy attacks. light attacks are faster, but less damaging, while heavy attacks are slower and deal more damage. The player can't chain a medium attack into a light attack, however, a heavy into a medium will result in a sword throw. Sword throws can then link into finishers by pressing heavy attack, or can link into more light attacks by pressing the light attack button.

Combo Examples
L -> L -> L -> L

This is the full light attack combo. quick and good for non committal engages.

H -> H -> H -> H

This is the full heavy attack combo. slow but deadly, good for punishes.

H-> L -> H

A quick, low committal burst of damage. Good for small fights

H -> H -> L -> H

A heavy hitting combo with a large area coverage. It is very committal so use caution

H -> H -> H -> L -> H

A heavy hitting combo that will advance the character forwards. It is very committal so use caution

Enemy Hit Detection

The enemies have different collision boxes attached to each limb. These collisions handle the damaged animations, damage multiplier, hitstun, and where the visual effects will play.

Enemy.png
HitEventFull.png

You might ask why use collisions over the physics asset? By using collisions, we're allowed to have high precision hit detection at any size and shape without affecting anything else. The way the collision is handled, is that the capsule handles the floor and actor collision, while each hurtbox only handles collisions with arrows. As for melee collisions, both capsule and hurtboxes handle it. However, most of it's parameters, like attack direction, are handled by the attack itself. This way we can have both a precise way to track arrows without affecting any physics and a way to track melee collision

Damage Application

Instead of doing the usual damage application where one actor damages the other. In sunken heart, one actor sends a damage message through an interface to another. Then the damaged actor inflicts self damage based on the information passed from the damaging actor.

HitEvent.png

This allows for more parameters to be passed on damage events. It can pass the location, name, damage, and type of hit, for example. This was used to add different properties for attacks, and also facilitated to implement the different and precise hit reactions for each enemy.

This project is still being worked on, so more updates will come soon

bottom of page