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.
![](https://www.google.com/images/icons/product/drive-32.png)
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
![](https://www.google.com/images/icons/product/drive-32.png)
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
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:
Your actions cost more stamina (the penalty is completely offset when you have at least 20 focus);
Longer delay before your stamina starts regenerating;
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
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