top of page

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.

CameraFollow.gif

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.

ControllerRumble.gif

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.

MultiGamepad

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.

PointValues.png
bottom of page