In the future where fish monsters have conquered the land, the player controls a deranged old fisherman/sushi chef, and slash his way through waves of land-walking fish monsters with his strange weapons/cookwares.
Player Character Movement & Combat
Player Animation State Machine
Enemy AI Scripting
Damage System
Cooking/Looting Mechanics
A blueprint that gradually rotates the player's lower-body in accordance to the change of posture and facing direction of the upper-body.
On/Off boolean values that are referenced by the animation blueprint in order to drive the animation state machine
Enemy AI Scripting
Programmed the behavior patterns of a melee bruiser enemy, ranged shooter enemy, and 3-phased optional mini-boss.
A simple enemy AI that chases the player based on sight data using Unreal Engine's built in perception. When the possessed pawn is in range from the player, it launches an attack by calling BP_RandomAttack_Walker, choosing an attack randomly from the 2 movements.
more about Landwalker: https://sites.google.com/view/zifeiyu/enemies/landwalker?authuser=0#h.mfel7fwltq83
BP_RandomAttack_Walker: selects and sets either Kicking or Slapping status to the Landwalker character
A simple enemy AI that shoots at the player based on sight data using Unreal Engine's built in perception. When the possessed pawn spots the player, it launches a ranged attack by calling Spitter_Attack, which shoots a projectile at the player and alternates to a burst-fire pattern every 4th attack.
more about spitter: https://sites.google.com/view/zifeiyu/enemies/spitter?authuser=0
Spitter_Attack: checks the attack counter, spawns a projectile and sets the counter. Every 4th attack will be a special "heavy attack" that burst-fires multiple projectiles.
An optional mini-boss that begins with following the player around. Once the player hits it and brings the possessed pawn's health down to a certain threshold, the pawn's aggressive phase is activated and will transform into a strong hostile force against the player.
It uses a similar logic to the melee enemy but now calls BP_RandomAttack_Fatty to select a random attack out of the 3 designed attack patterns: charge attack, jump attack, and spin attack.
Once the player has damaged the pawn enough, it reaches the final state. In the final state the enemy will be using the same logic and movement set, but now will be transformed into a more dangerous enemy, with extended range and damage on all the previous attacks.
detailed enemy demo: https://sites.google.com/view/zifeiyu/enemies/fatty?authuser=0
BP_RandomAttack_Fatty: similar logic to the landwalker's random attack function
Character Animation State Machine
Implemented, tested, and troubleshoot the first person movement and combat mechanic with Unreal Engine Blueprint.
data from the player character is referenced in the event graph of the upperbody animation blueprint
Landwalker (melee enemy) animation blueprint (below)
Spitter (ranged enemy) animation blueprint
Fatty (3 phase boss) animation blueprint (below)
Damage System
Developed different damage types that can be inflicted or suffered by players, enemies, and neutral objects. Different characters had different pipelines that processed the damage done to them.
How damage is applied from AnimationSequence -> BP_Player -> BP_Weapon
Sphere trace that applies damage to any damagable actors that enters the hitbox and spawn VFX at the hit location
using Received_NotifyTick to call a damage trace every tick
damage is taken through blueprint interface
Looting/Cooking Mechanics
The nature of the damage inflicted on the enemy influences the variety of items they release upon defeat.
when an enemy is defeated, it will drop items based on the spices, temperature, and moisture of the target. The values of these variables will be passed through a Blueprint Interface to the ItemDrop Actor.
ItemDrop Actor processes the input
when affected by spices, the value of spices will be stored as pairs in SpiceRegister_Value and SpiceRegister_Name