top of page

PROJECT CYBERSTRYKE

Cyberstryke is a Final Year Project made in Unreal Engine 4 for PC. It is considered my last hurrah before I graduated from my Game Development course. This page will log all of my work from my Research Methodology (Pre-production) to my Final Year Project (Production).
Brief Information About Cyberstryke
Cyberstryke is an arena gladiator fight game that features the use of multiple weapons, 80's synth wave themed graphics, punchy music and awesome weapons' martial arts animation.
Cyberstryke Trailer
Disclaimer: The video is created for educational purposes. Any copyright infringement is unintentional.
Latest Cyberstryke stories
Team
The Team
JADΛX


J
A

D
Λ
X
Jonathan
Raymond Nunis


Lead
Artist
Work Scope
-
3D Modeller
-
Texture Artist


Artist
Work Scope
-
3D Animator
-
2D Artist
Augustine
Chen
Dania
Kamrul Ariffin


Programmer
Work Scope
-
UI/UX Programmer
-
Technical Arts
-
Gameplay Programmer

Programmer &
Team Lead

Work Scope
-
Documentations
-
Gameplay Programmer
(VK)
Ong Vie Keat
(Xynan)
Lee Choon Meng


AI
Programmer
Work Scope
-
Documentations
-
Gameplay Programmer
-
AI Programmer
-
Optimizations
Our Mentors

Hilmy Abdul Rahim

Shern Chong
Research methodology
Research Methodology
COMPETANT & BELIEVABLE SCRIPTED AI IN VIDEO GAMES
Research Objective
To make a competent and believable combat AI in video games.
Research Questions
-
What qualities does an AI need to have to be classified as a good AI?
-
Can a rule-based AI be made such that it seems believable to players?
-
Can a rule-based AI be made such that it can adapt to player’s play style?
Research Results
-
A good AI has some special qualities when compared to simple and basic AI (Performance, Efficiency, Predictability).
-
A rule-based AI is believable to players in terms of human-like behaviour.
-
A rule-based AI is capable and flexible to adapt to player’s play style.
MY AI Implementation
My AI Implementation
Planning AI Architecture
Variables -> Sensing -> Processing -> Acting -> Reward or Punishment
-
Variables

The main variables:
Aggression Counter
The variable that determines how often the AI attacks. The higher the value, the more likely it will attack.
Defensive Counter
The variable that determines how often the AI blocks, dodges and counter-attacks. The higher the value, the more likely it will commit the mentioned actions.
Attack Interest
The resultant value that calculated based on Aggression Counter, Defensive Counter, health leads that will determine the next Aggression Counter.
Defense Interest
The resultant value that calculated based on a randomised percentage that runs every frame.
-
Sensing

The Damage and Attack Mechanics are also part of the sensing process of the logic of the AI because they interact directly to the attack and defense interest.
-
Processing
BTS_UpdateAILocation
The behaviour tree service that is essential for the AI to execute any action from movement to attacks and defences. This class will determine whether the AI is too far, too near or in an optimum distance with the player in order to execute further actions.
BTT_CalculateAttackInterestBP
The behaviour tree task that is needed to calculate the attack interest that determines the AI's will of attack. The behaviour tree task will return an FVector(attackInterest, lightAttackAmount, heavyAttackAmount).
Formulae:
Defensive AI



Aggressive AI



BTT_CalculateDefenseInterest
The behaviour tree task that is needed to calculate defense interest that controls the AI's defensive manoeuvres such as dodging, blocking and counter-attacking. The behaviour tree task will return a float number.

-
Acting
BTS_InstinctReaction
The behaviour tree service that is needed for executing the fast response of AI's defensive manoeuvres. It constantly updates the state between AI and player to check the need of execution.
There are 3 types of dashes the AI can perform:
• Forward Dash
The forward dash function is similar to what the player is using.
• Strafe Dash
The strafe dash will use most of the logic in the forward dash, but the only difference is the movement input is added to the character’s right vector instead of the forward vector. Strafe Dash is further explained in BTS_StrafeDash.
• Dash Out of Corner
Dash Out of Corner will be further explained by at BTS_CheckBackRaycast.
InitiateCounterAttack()
A function that is in the CyberstrykeAICharacter class that will initiate the counter-attack sequence with a proc chance of 50% of defensive interest.
BTT_AttackExecution
The behaviour tree task that is needed to execute the attack. An attack sequence will proc after the attack interest is smaller than the aggression counter. It is programmed to cater to 3 situations: Light Attack Only, Heavy Attack Only, and Light to Heavy Combos.
BTS_StrafeDash
The behaviour tree service that will force the AI to dodge an incoming attack from the player sideways if the AI has recently been hit more than 2 times.
BTT_CalculateStrafeLeftRight
The behaviour tree task that is necessary for the AI's strafe around the player's feature.


BTT_CheckBackRaycast
The behaviour tree task that is needed for the AI to check whether it is cornered by the player. If it is, it will dash ouf of the position.
The logic behind the raycasts

-
Reward or Punishment
-
If successfully hit the player, the aggression counter will increment by 0.015 as a reward to encourage the AI to be more aggressive, the more it hits the player.
-
The AI will also be rewarded an increment of 0.015 to defensive counter every time it gets hit by the player successfully to encourage it to block or evade incoming attacks.
-
The punishment mechanic is removed because it would make the AI perform worse in the fight.
For more information about the project, here is the link to my thesis.
bottom of page