PROJECT : EGO
In DevelopmentAn asymmetrical multiplayer Unreal Engine 5 dungeon crawler where a Hero battles through monster- and trap-filled rooms while rival Demon players possess AI Monsters, dungeon traps, and fallen Heroes in real time.
01. Asymmetrical Possession, AI Brain-Swapping & "Proxy Pawn" Traps
-
Unified Possession Interface (
IPossessableInterface): Demon players fire a server-authoritative line trace (Server_AttemptPossession) to possess three distinct actor categories: AI Monsters, static Dungeon Traps, and fallen Hero bodies (blocking self-possession viaPreviousOwnerController). -
The Trap "Proxy Pawn" Pattern (
ATrapBase&ATrapProxyPawn): Because traps are lightweightAActorinstances rather than Pawns, possessing a trap dynamically spawns a transientATrapProxyPawnlinked to the trap, giving the Demon player a dedicated camera and customEnhancedInputbindings to fire traps manually. -
AI-to-Player "Brain Swapping" & Role-Based Visibility:
Possessing an AI Monster pauses its
UBrainComponentBehavior Tree (StopLogic) while the player drives it, and restores control toDefaultAIControlleron eject. Trap possession indicators automatically hide for Hero clients while displaying player-colored materials for Demons.
Testing Area — Possessing Monster
Testing Area — Possessing Trap
02. Decoupled C++ MVVM UI, Retry-Linking & Contextual Menus
-
Inheritance-Based ViewModels (
UCombatHUDViewModel&UHeroHUDViewModel): Built a base ViewModel broadcasting normalized Health/Energy percentages viaUE_MVVM_SET_PROPERTY_VALUE, and extended it intoUHeroHUDViewModelto bind 8+ equipment slot icons and potion stack counts at runtime viaUMVVMSubsystem. -
Contextual Chest Comparison & 3D Shop Camera Blending (
UHeroUIManager&AShop): Interacting with a chest instantiates aUMVVM_ChestViewModel comparing the Hero's current weapon against the chest's weapon and refreshes viaClient_RefreshChestUIafter a server-validated swap. Interacting with the Shop blends the player's camera between physical 3D Weapon and Trinket counters (SetViewTargetWithBlend). -
Asynchronous Cross-Pawn ViewModel Linking (
TryLinkHeroViewModel): Demon and Monster HUDs locate the live Hero and bind to the Hero's ViewModel using a non-blocking0.2sretry timer to safely handle multiplayer actor replication order.
Testing Area — Updating UI while picking up items & Interacting with Chest
03. Polymorphic Status Effect System & Zero-Tick Actor Components
-
6 Zero-Tick Replicated Actor Components (
bCanEverTick = false): Decoupled Health, Energy, Character Stats, Equipment, Status Effects, and UI Management into self-contained C++ Actor Components driven strictly byFTimerManagerhandles and delegates. -
Polymorphic Status Effects (
UIgniteEffect,UPoisonEffect,UBleedEffect,UFrostEffect,USludgeEffect): Built aUStatusEffecthierarchy that scales against targetEffectResistancePercentage. Includes Ignite (which triggers aSphereOverlapActorscheck on expiration to spread fire to nearby characters), Poison (dynamic stack damage scaling), Bleed (% Max HP DoT), and Frost/Sludge (reversible percentage stat debuffs).
Testing Area — Poison Effect from Trap & Sword
04. Data-Driven Designer Workflow, Reflection Enchantments & Loadout Persistence
-
Dynamic
UDataTableTier Scaling &StaticEnumReflection: Weapons and Armor query DataTables dynamically by upgrade tier (Tier_1toStar_Tier) for combo hit multipliers and defense stats. High-tier armor rolls non-duplicate random buffs and usesStaticEnum<ECombatStatType>()reflection to convert enum values into DataTable row lookups automatically. -
PlayerState Loadout Serialization (
FSavedHeroLoadout): Serialized equipped Weapon/Armor classes, tiers, values, and rolled enchantments intoACodeNamePlayerStateso full gear loadouts are reconstructed and re-socketed across deaths and revives.
Engine - Data Tables and Data Management
05. Custom C++ AI Behavior Tree Nodes & Dungeon Room Loop
-
Custom C++ Behavior Tree Service & Tasks (
UBTService_Radar&UBTTask_Patrol): Built a 360-degree radar service in C++ that ticks every0.5swithRandomDeviation = 0.1f(preventing multiple AI agents from evaluating on the exact same frame) alongside waypoint patrol and attack tasks. -
Automated Dungeon Room Progression (
ADungeonRoom): Tracks active room monsters, unlocks the room's Chest and Portal Doors once cleared, and teleports both Hero and Demon players (automatically ejecting Demons from possessed pawns) when transitioning to the next room.
Dungeon — Killing Monster to open Chest & Dungeon Door