NEO HEROES
Game Summary
A hack & slash experience with support for up to 4 players, where the goal is to have the most points once 5 randomly selected rooms have been cleared. Features two playable classes, two enemy types, 6 different room-layouts and 3 different music tracks.
ROLE
AI, Gameplay & Systems Programmer
JOB DESCRIPTION
The second group project at PSQ. I was in charge of making the AI & fixing their navmeshes, setting up the combat-system, making the camera, setting up systems for multiplayer like respawning, joining, player colors and the score system.
GENRE
Third-person hack & slash
YEAR & PLATFORM
2022 for PlayStation4 & PC
ENGINE & LANGUAGE
Unity, C#
TECH TAGS
AI, Camera, Combat, systems, Game Feel
DOWNLOAD LINK
Enemy AI
Enemies
There are two enemy-types in Neo Heroes: chargers and boombots. Both of these enemies are driven by Finite State Machines and have increased health depending on the amount of active players. Enemies use the score system to select a target whenever a player walks into their detection range, making it harder for higher scoring players.
Before attacking, enemies flash white and display an icon to give players a chance to dodge
Gameplay
Hitboxes
Attacks in Neo Heroes rely on the characters having one or multiple "Attack-Tracers", a light-weight GameObject with a collider. By having the AttackTracers be their own object, it becomes easy to allow different types of hitboxes for different attacks. AttackTracers deal damage to entities that have not already been damaged by the current attack and use layers to optimize collision detection. Attacks can also inflict knockback and use animation events to enable/disable the tracers.
Camera
The camera can follow any number of targets, with the multi-target focus being achieved by focusing on the midpoint between the furthest two players, weighted with all players' distances and directions from that point, up to a limit. This makes the camera focus in the direction with most players, while not completely ignoring someone going off on their own. The camera always stops before bringing someone out of frame.
The lighting looks weird because of the gif color sampling
Game Feel
Controller Rumble
Setting the motorspeeds of a gamepad is what causes it to rumble and we had varying durations & strengths for different events, which were customizable in the editor. Stronger rumbles override weaker rumbles, both in duration and strength.
The makeshift rumble debugger shows the cause and strength of the rumble
Systems
Multiplayer Support
Implementing multiplayer was made pretty simple thanks to Unity's input system and the fact that we knew ahead of time to design our systems for it. By pairing an input device with a struct containing an index, chosen color and chosen class (crusader/lancer), we could easily bind each player to a slot in the score system and UI, with easy access to specific players' controllers for rumbling purposes.
Score System
Designed to make players compete for first place, the score system rewards points when enemies are killed and gives double points when dealing the killing blow if someone else did a majority of the damage. Boombots are rarer and give more points than chargers. Dying will only lose you a few points, since you can't gain any while dead.