Unreal Engine C++ gameplay prototype focused on rebuilding and demonstrating core action-game systems: character input, projectile attacks, interaction targeting, damage response, health state, and effect/audio feedback.
This repository is positioned as structured Unreal C++ practice and portfolio proof. It is not presented as a shipped commercial title; the value is in showing how the gameplay pieces are organized, extended, and explained.
This project is useful evidence for:
- Unreal C++ gameplay programming fundamentals
- Component-based health and damage flow
- Projectile inheritance and attack dispatch
- Player interaction detection using overlaps, view direction, and interfaces
- Enhanced Input setup for movement, look, jump, and multiple attacks
- Gameplay feedback through animation, Niagara effects, and audio
- Debug visualization for interaction reasoning
ARogueCharacter owns player movement, camera setup, input bindings, attack triggers, delayed projectile spawning, damage handling, and death response.
Key ideas:
- Enhanced Input actions are bound in
SetupPlayerInputComponent. - Primary, secondary, and tertiary attacks share one delayed projectile-spawn path.
- Attack animation, casting effect, and sound are triggered before projectile spawn.
- Damage routes into the action system component instead of directly mutating character state.
URogueActionSystemComponent stores a small attribute set and exposes health changes through a multicast delegate.
Key ideas:
- Health changes are clamped to a max value.
- State changes broadcast
OnHealthChangedonly when health actually changes. - Character death behavior subscribes to the component event instead of polling health.
ARogueProjectile provides shared projectile setup through a sphere collision component and projectile movement component.
Specialized projectiles build on that base:
- Magic projectile applies point damage and spawns impact feedback.
- Black hole and teleport projectile classes extend the attack vocabulary.
- Collision behavior is separated from character input code.
URogueInteractionComponent scans nearby interactable actors, scores candidates by camera-facing direction, and stores the best target for interaction.
Key ideas:
- Uses overlap queries on a custom interaction channel.
- Chooses the most forward-facing interactable using a dot product.
- Uses debug shapes/text to visualize candidate selection.
- Calls
IRogueInteractionInterfaceso interactable actors stay decoupled from the player component.
AExplodingBarrel demonstrates a damage-triggered world actor:
- Starts warning feedback when damaged.
- Uses a timer before detonation.
- Applies radial damage and radial force.
- Spawns explosion Niagara/audio feedback.
| Area | Files |
|---|---|
| Character/input/attacks | Source/ActionRoguelike/Player/RogueCharacter.* |
| Health/action component | Source/ActionRoguelike/ActionSystem/RogueActionSystemComponent.* |
| Interaction targeting | Source/ActionRoguelike/Player/RogueInteractionComponent.* |
| Interaction interface | Source/ActionRoguelike/Core/RogueInteractionInterface.* |
| Projectile base/classes | Source/ActionRoguelike/Projectiles/* |
| World damage actor | Source/ActionRoguelike/World/ExplodingBarrel.* |
| Game mode/types | Source/ActionRoguelike/Core/*, Source/ActionRoguelike/RogueGameTypes.h |
- Install Unreal Engine
5.7or the closest compatible version available locally. - Clone the repository.
- Open
ActionRoguelike.uproject. - Let Unreal regenerate IDE project files if prompted.
- Open the main gameplay map in
Content/and press Play.
If the engine version changes, regenerate project files from the .uproject before building C++.
- Rename lingering
Rougefile/class typos toRogueafter verifying Blueprint references. - Add clearer null guards around input/component binding paths.
- Move repeated attack setup into a smaller helper or data-driven attack definition.
- Add screenshot/video proof of attacks, interaction selection, and barrel detonation.
- Add an architecture note explaining ownership of character state, damage events, and gameplay feedback.
- Add a focused debug overlay or console commands for validating health, damage, and interaction state.
I can use this project to discuss:
- How input maps to gameplay actions in Unreal.
- Why health changes are routed through a component and delegate.
- How projectile inheritance reduces duplicate attack code.
- How interaction targeting can be debugged visually.
- How to separate character responsibilities from world actor behavior.
- How I would refactor a prototype into a stronger production-ready system.
Active rebuild project. The current goal is to turn it into a clear, inspectable Unreal C++ proof piece with screenshots, a small vertical slice video, and one deeper architecture write-up.