← Back to projects
games · 2024 · Completed

Boss Lab

Unreal Engine 5C++
Boss Lab — Video Thumbnail

Project Overview

Boss Lab is about battling a modifiable boss in cycles where the player has power over the abilities and behaviors the boss has. Using an equipment system, players can add or remove attachments on the boss before each encounter, altering how the fight will play out. Each time the player defeats the boss, they will receive temporary perks resulting from the attachments they selected for the boss. Additionally, the player will acquire experience they can spend on permanent upgrades like stat boosts and increase the available attachments pool.

Role: Gameplay Engineer, Systems Designer

Team: 4 (2 developers, 1 project manager, 1 artist)

Game Engine: Unreal Engine 5

Programming Language: C++

Technologies: Adobe Photoshop, GitHub, Rider, Notion

Platform: PC

Date: 2023 – 2024

Boss AI

I developed the game's boss AI using Unreal Engine's Behavior Tree system. To make the AI adaptable, I created a modular approach where each attack was handled by a sub-behavior tree. These were stored in data assets and dynamically added to the boss based on the player's choices before the fight. The main behavior tree selected actions based on player proximity and a probability system that adjusted based on frequency of use. The system supports adding new behaviors without manual integration.

Mod System

I implemented the Mod system, which allows players to equip the boss with additional behaviors and stats before fights. The mods are stored as Data Assets, saved across encounters, and applied to the boss at the start of each fight by the boss manager system.

Here are the mods I developed:

  • Behavior Mods: Add a behavior to the boss with an associated probability for selection.
  • Basic Stats Mods: Increase the boss's health and damage.
  • Shooting Stats Mods: Introduce variations to the boss's ranged weapons.

Shooting System

I implemented the shooting system used by both the player and the boss. This system is an Actor Component that can be added to any actor, requiring only a designated shooting point. The component uses Shooting Attack Data (a data asset) that defines:

  • Projectile Reference: The blueprint used for the projectile.
  • Settings: Duration, number of shots, speed, additive flags.
  • Damage Info: Amount, type, special states like parry or invincibility.
  • Pattern Type: Patterned or directional firing logic.
  • Modifiers: AOE, homing, ricochet, accuracy, deflection, etc.
Shooting Attack Data

Additional Responsibilities

  • Technical documentation: Documented all features I worked on for maintainability.
  • Asset creation: Created VFX, UI, shaders, sound effects, and a custom font.