V: VR FPS Shooting Game

A scalable VR FPS framework built with UE5, leveraging design patterns and component-based architecture for enhanced maintainability.

2023.09 ~ 2024.05
3 people AI system programmer

Overview

This project is a VR FPS shooting game developed using Unreal Engine 5. Rather than simply implementing features, the focus was on adhering to Object-Oriented Programming (OOP) principles to reduce the coupling of complex combat systems. By actively utilizing Observer, Facade, and Component patterns, I established a stable damage system and AI decision-making structure capable of handling environments where dozens of allies and enemies coexist.

Project Demo
Project Demo

Tech Stack

CategoryTechnologies
Game EngineUnreal Engine 5 (UE5)
AI ArchitectureBehavior Tree, AI Controller
Design PatternsObserver, Facade, Component Pattern
PlatformWindows (VR Support)
LanguageBlueprint

Key Features

1. Pattern-Based Flexible Entity Management

  • Event-Driven Design via Observer Pattern: Handled health changes and death states without hard-coded references. When damage occurs, events are broadcasted to allow UI updates, animations, and sound effects to react independently.
  • Interface Integration via Facade Pattern: Encapsulated complex internal logics such as attacking, health checks, and team identification into a single interface. This allows external systems to access data easily without knowing the detailed implementation of the entities.
image 1
Figure 1. Damage System UML
image 2
Figure 2. Damage System Flow

2. Modular Component-Based Damage System

  • Plug-and-Play Structure: Decoupled damage processing logic into independent components. This allows the damage system to be easily ported to any object—such as players, NPCs, or destructible structures—simply by attaching the component.
  • Projectile-Based Collision Detection: Bound projectile collision events to calculate accurate hit points and called the TakeDamage function to perform reliable physical calculations.

3. Hierarchical Behavior Tree AI

  • Tactical Decision Making: Implemented decision-making logic for both allied and enemy AI using Behavior Trees (BT). Managed states hierarchically from target detection to range-based transitions.
  • Dynamic Distance Control: Designed organic tactical behavior where AI approaches while firing if the target is beyond IdleRange, and performs aiming and stationary fire once within range.
Behavior Tree Graph
Fig 3. Common Base Behavior Tree Structure

Technical Challenges & Solutions

1. Resolving Tight Coupling Between Objects

  • Issue: Observed a phenomenon where modifying one unit’s code caused cascading errors due to strong dependencies.
  • Solution: Introduced the Facade pattern to abstract core unit functions and utilized the Component pattern to build features modularly, removing direct dependencies between classes.
  • Result: Secured high scalability, allowing the addition of new units or special features without modifying existing code.

2. Optimizing Large-Scale AI in VR

  • Issue: Needed to prevent performance degradation caused by multiple NPCs executing Behavior Trees simultaneously.
  • Solution: Optimized AI by adjusting the update cycles of sensing logic and managing AI Controller operations asynchronously. Implemented a distance-based tick system to differentiate update frequencies based on proximity to the player.

Results

  • Exhibited and demonstrated at the 2024 Busan-Gyeongnam Game Exhibition (Build 051).
  • Exhibited and demonstrated at the 2023 G-STAR competition.
image 1
image 2

Back