子非鱼 Untitled Fish Game [Programming Section]

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. 

Keywords: 3D, Action, Hack-And-Slash, Cooking, Role-Playing


My Work as Programmer

https://muckery.itch.io/zifeiyu 

Player Character Movement & Combat

Implemented, tested, and troubleshoot the first person movement and combat mechanic with Unreal Engine Blueprint.

Blueprint: Adjusting Player Posture

A blueprint that gradually rotates the player's lower-body in accordance to the change of posture and facing direction of the upper-body.

Blueprint: Throwing & Altering Throwing Weapons

Blueprint: Auto Attack & Crouch-sliding

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. 

Landwalker AI 

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.

BP_RandomAttack_Walker: selects and sets either Kicking or Slapping status to the Landwalker character

Spitter AI 

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. 

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. 

Fatty AI 

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.

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.

Animation Blueprint: Player Upperbody 

data from the player character is referenced in the event graph of the upperbody animation blueprint

Animation Blueprint: Enemies

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.

Blueprint Interface: Dealing Damage

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

Blueprint Interface: Taking Damage

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. 

Recipe

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 

Spices & Temperature

when affected by spices, the value of spices will be stored as pairs in SpiceRegister_Value and SpiceRegister_Name