Daniel Acevedo

*This page and its content is under construction.*

UE5 Top Down Game

Gameplay Programmer
View Source Code

Puzzle Switches

Used C++ and Blueprints to implement multiple puzzles utilizing a custom C++ class UPuzzleComponent. When the output is active, it sends the output to the OutputActor, in this case a puzzle light indicating if the puzzle is solved or not.

  • OR - Activates as long as any of the inputs are true
  • AND - Activates only when all inputs are true
  • SEQUENCE - Activates when inputs are activated in a specific order
  • CUSTOM - A Timer puzzle, where all inputs must be activated within a time limit

Flaming Swing Puzzle

Created a UFireComponent in C++ to spread fire between objects. UFireComponent tracks whether the object is on fire or not. It has a sphere collision that generates overlap events. If an "on-fire" component overlaps with another UFireComponent, the fire spreads.


Physics-Based Puzzle

A custom physics-based puzzle. The player must move crates onto pressure plates. One crate requires an additional puzzle piece and platform (Level Sequence) to "unlock" it. Once all 3 pressure plates are activated, the burning boulder is released, rolling down and spreading its fire to light the torch, finally unlocking the door.


Dash Abiltiy and Damage/Death

Using Unreal Engine's Gameplay Ability System (GAS), I implemented a player Dash ability in GA_Dash. I used gameplay tags Ability.Dash to prevent ability overlap and Buff.Invulnerable.IFrame so the player is invulnerable for part of the dash. For the dash itself, I made an AnimMontage. The ability logic is handled in Blueprints and the ability granting and activation is handled in C++.

Damage and Death mechanics were also implemented using GAS, in GA_Death and gameplay tags Debuff.Immobile.Dead and Debuff.Burning. The gameplay debugger shows the player has Ability.Dash when dashing, Debuff.Burning when on fire, and Debuff.Immobile.Dead when dead.


Enemy AI and Stealth

Setup an AI character using Behavior Trees. The AI uses a Line Trace Check to "see the player". If chasing, the AI will dash to close the distance if the player is far away. When the player enters the Stealth Trigger, the AI loses sight and begins patrolling.

The asterisk on the screen indicates the current threat level (from highest to lowest: Purple, Red, Yellow, Blue, Green). By default, the threat level is Red. If the character is moving, the threat level increases by one tier. If the character is crouching, the threat level decreases by one tier. If the character is in the stealth trigger, the threat level decreases by one for each stealth trigger they are inside of. When the player crouches inside the stealth area, the AI loses sight of the player.