Desync

Project Summary

Description

Desync is a side-scroll action game set in a cyberpunk world with a 2D/3D hybrid visual. Use your fighter instinct to predict and counter your opponents' attacks. Punch, kick, juggle, backstab... Fight until justice is served.

Game Engine: Unreal Engine 4.

Project Duration: 6 months.

Desync is my solo project and the winner of Game Mechanics Design at Spring Show 2022. I was responsible for designing and scripting camera system, boss abilities, enemy abilities, player combos, player controller, enemy controllers, countering system, and juggle system using Unreal blueprints. I also scripted AI behavior trees, tutorials, cutscenes, dialogues, and UI. All levels were designed and built by me. Disclaimer: I did not make all the SFX, VFX, 2D, and 3D assets. I listed all credits at the bottom of the page.

Game_TianzhiShen_Desync.mp4

Trailer

Backstory

Desync takes place in a cyberpunk world. The rapid development of cybernetic augmentation divides society. You play as Four, the code name of our protagonist. An anti-cybernetics terrorist group murdered his family because they supported cybernetic augmentation. After the death of his family, Four joined the terrorist group. He intends to work his way up in the organization as an assassin and find out who killed his family.

Screenshots

Walkthrough

Desync Walkthrough.mkv

Project Development

Combat System

The core of the combat is about countering enemies' actions. I categorized actions into five types: Light attack, heavy attack, ranged attack, special attack, and blocking. To give players an obvious tell, I create a UI that displays enemies' next action type on top of their heads. Additionally, enemies' sprites flash right before their attacks.


Relation between each action

Players can also dodge. Dodging right before an attack is called the perfect dodge.

One issue I run into is the fear of people spamming light attacks when they see enemies using heavy attacks. My solution is the dodge attack. Players can only perform a dodge attack after a perfect dodge. This approach requires players to have better timing and makes dodging more useful. Nier: Automata gives me a lot of inspiration for the design of the dodge attack.

Dodge attack counters heavy attack

Dodge attack in Nier: Automata
(Developed by PlatinumGames and published by Square Enix)

Blocking counters light attack

Melee attack event. Since UE4 doesn't have 2D animation event triggers, I use Delay to time any hit events. To sell the impression of hitting a target, stronger attacks have .2s of Hit Stop.

"What about the special attack and the ranged attack? They seem to have no interaction with the rest." Well, yes and no.

Part of the project requirement was to have a ranged attack. The ranged attack is like the "side dish" that adds flavor but is not overpowering the "main dish" (a.k.a melee). I could not replace it with one of the main trios or somehow make it counter or be countered by one of the other actions. How do you use your fist to counter a ranged attack from a distance? You cannot. That's why I separated the ranged attack from the rest.

To make the ranged attack have a place in the game and not forgotten, I added a new type of attack called the special attack. Special attacks are powerful attacks that can only be countered by ranged attacks. Special attacks are not spammable. Enemies' special attacks have a very long cooldown; for players, special attacks require focus, which I'll explain in the next section.

"So the combat is all about countering. Does that mean I have to wait for enemies to make their moves every single time?" Observing and waiting for your foe's next move feels natural in games with a 3D perspective (since your movement isn't locked to a single axis), like Dark Souls, but it doesn't work well for a sidescroller. To solve this, I designed the Focus and Guard system.

Focus

All your actions can interrupt enemies as long as you hit them first. So why bother countering? To protect players and encourage them to play in an intended way, I added the Focus system. Every successful attack increases your focus bar. Focus starts reducing when you are out of combat. Successful counter rewards bonus focus. Focus is not only a necessary resource for using your special attacks (all special attacks drain your Focus), but it also reduces the stamina cost of all actions. The color of the focus gauge gives a simple visual indication of how much Focus you currently have (green, focus >= 20; blue, focus >= 30; purple, focus >= 60).

Focus Gauge is at the bottom of the screen.

Stamina Gauge is the yellow bar right above the Focus Gauge.

Guard

Focus alone isn't enough to prevent button-mashing. There are certain enemies in the game that has Guard. Guard gives enemies damage resistance and prevents interruption. The only way to remove Guard is by countering their actions. Guard appears as a shield symbol above the health bar. The health bar lights up when Guard is active. Upon removal, the enemy regains his Guard after x seconds. The usage of Guard enemies needs to be sparing to prevent them from slowing down the combat too much.

Breaking the Guard

Backstab

As an assassin, players can backstab an unaware enemy. Backstab does a large amount of damage that can usually instantly kill weaker enemies.

Stamina & Stun

You are not just getting Focus with each hit. Your attacks increase your target's stun gauge. Note that enemies can do the same thing to you as well. Once the bar is full, the character is stunned and unable to do anything for 5 seconds (duration varies, some enemies have longer or shorter duration). Stunned enemies are vulnerable to attacks and cannot regain Guard while stunned. Additionally, you can backstab a stunned enemy.

The yellow bar beneath the enemy's HP bar is the stun gauge. The enemy's stun gauge has a red highlight, meaning she is stunned.

I liked the Ki system in Nioh, but I didn't want to recreate the same system from my game. So I took a different and easier approach to let players "regain" stamina. Focus reduces stamina cost, which you can think it as regaining some of the used stamina. I couldn't make stamina reduction too high, or no one would bother using special attacks. So I made an unconventional choice: allowed stamina to go below 0, which gave players more stamina to attack. But there are a few drawbacks when stamina is below zero:

  1. Your actions cost more stamina (the penalty is completely offset when you have at least 20 focus);

  2. Longer delay before your stamina starts regenerating;

  3. The stamina regeneration rate is slightly reduced.

Additionally, once stamina reaches -100, your character is instantly stunned.


Without any modification, you start regenerating stamina 0.2s after your last melee attack. Since the ranged attack costs no stamina and does not prevent stamina regeneration, you can insert a ranged attack in-between your melee combos; another way players can do to recover lost stamina.

Special Attack & Juggle

Focus reduces stamina cost. Awesome. But why would I ever bother using an attack that reduces my focus? Because special attacks have an important functionality (besides doing a crapload of damage): keep enemies in the air. Some attacks can start the juggling process, like your block counter and the dodge attack. Continuously hitting the enemies will keep them in the air longer. However, light attacks, heavy attacks, and ranged attacks can only maintain their altitude for so long. So once in a while, you need to use a special attack to kick them up a little.

While in the air, enemies cannot recover from stun. Keeping stunned foes from touching the ground is a powerful technique to defeat tough enemies. Mastery of the focus, stamina, and juggling system is what separates great players from good players.

Design Documents

Enemy Spec

Combat Diagram

Combat Design_TShen

Game Design Doc

AttackEnemyMatrixProgression

Progression

Style Guide

Ability Skill Calculator

Skill Sheet

Credit

2D Assets

River City Girls - by Wayforward

Cozy Interior Asset Pack - by Shubibubi

Residential Area Tileset - by Craftpix.net

Simple Free Pixel art styled UI pack - by Jakub Varga

3D Assets

POLYGON City - by synty studios

POLYGON Sci-Fi City - by synty studios

What Remains of Edith Finch - by Giant Sparrow

SuperGrid Starter pack - by ZeOrb

Music

Katana Zero ost - from Askiisoft. Composed by LudoWic, Bill Kiley, justin stander

SFX

37 Hits/Punches - by Independent.nu

Beep Warning - by SamsterBirdies

Bloodborne OST - by Fromsoftware Inc. Composed by Tsukasa Saitoh, Hideyuki Eto, Nobuyoshi Suzuki, Shoi Miyazawa, Takashi Onodera, Yuka Kitamura

Button-05 - by JarredGibb

Car Drive Away - by Soundmary

Change Weapon Sound - by Knova

Concrete footsteps - by Patchytherat

CounterStrike OST - by Valve Corporation

Crate Break 2 - by Kevinkace

Error - by Blood PixelHero

Explosion 001 - by Cydon

Footsteps, Puddles, B - by InspectorJ

Hatch Seal - by Paul368

Huge Cinematic Explosion - by Musicace17

Light Rain- by Babuababua

Metal Gear Solid OST- by Konami

Metal Hit - by Caquet

Metal Warehouse Door Opened With Chains - by MichelleGrobler

Pick Up Item - by Triqy Studio

Police Siren - by Sofialomba

Police Radio 02 - by D.jones

Sekiro Shadows Die Twice OST - by Fromsoftware Inc. Composed by Hideyuki Eto, Kouta Hoshino, Shoi Miyazawa, Takashi Onodera, Tsukasa Saitoh, Tai Tomisawa

Shoot 1 HZA - by Hz37

Shopping Cart Metal Rattle Push Ext - by Kyles

Small Blowtorch 2x 4sec - by Rar2k

Souken - by Zankou1

Swish - bamboo stick weapon swhoshes- by Iwan Gabovitch

Wooden Box BreakingS ound Effects - by Gronnie

VFX

2D Explosion Animation - By Sinestesia

68 2D Sprite Effects Collection - by Crunchpix

Pixel Art Effect_FX002 - by NYKNCK

POLYGON Sci-Fi City - by Synty Studios

Realistic Starter VFX Pack Vol 2 - by FX Cat

Smoke Builder - by W3 studios