Source-level reference implementation for UE5 gameplay architecture: GAS-driven combat, data-driven ability features, StateTree AI, hit detection, and animation integration.
- Gameplay showcase: https://youtu.be/5qjmtIKK5Vc
- Playable build: https://ilchul1.itch.io/ashen-vow
This is the self-authored C++ source release of a UE5 single-player action RPG portfolio project. It is intended to make the gameplay architecture inspectable and reusable as a reference.
It is not a standalone runnable or playable game project. The C++ modules have been verified to build with a compatible UE5 setup, but the original game requires the intentionally omitted assets, maps, Blueprints, DataAssets, and third-party plugins.
Author: Jung Yo Han (@ilchul1)
Start with:
Source/UE5ActionRPG/AbilitySystem/Abilities/PTGameplayAbility.*Source/UE5ActionRPG/AbilitySystem/Abilities/PTMontageGameplayAbility.*Source/UE5ActionRPG/AbilitySystem/Abilities/PTCombatGameplayAbility.*Source/UE5ActionRPG/AbilitySystem/Abilities/PTGameplayAbility_ComboAttack.*
The ability hierarchy separates common lifecycle handling, montage execution, and combat-specific orchestration so that player and AI-controlled actors can share combat rules.
Start with:
Source/UE5ActionRPG/AbilitySystem/AbilityFeatures/PTAbilityActionData.hSource/UE5ActionRPG/AbilitySystem/AbilityFeatures/PTAbilityFeature.*Source/UE5ActionRPG/AbilitySystem/AbilityFeatures/PTAbilityFeature_GEApplication.*
Combat actions are composed from FInstancedStruct features rather than a separate C++ class for every attack variation.
Start with:
Source/UE5ActionRPG/Combat/Trace/PTAttackTraceComponent.*Source/UE5ActionRPG/Combat/Trace/PTAttackTraceTypes.hSource/UE5ActionRPG/AbilitySystem/Effect/PTGameplayEffectContext.*
The trace component uses post-physics sweep interpolation for fast weapon movement, favors mesh hits when possible, and falls back safely to collision shapes.
Start with:
Source/UE5ActionRPG/AI/PTAIConfig.*Source/UE5ActionRPG/AI/Tasks/PTStateTreeTask_SelectAbility.*Source/UE5ActionRPG/AI/Tasks/PTStateTreeTask_TriggerAbility.*Source/UE5ActionRPG/AI/TriggerDecisions/PTTriggerAbilityDecision.*Source/UE5ActionRPG/Subsystem/PTAttackTokenSubsystem.*
Ability selection, execution timing, and multi-enemy attack coordination are deliberately separated into configurable systems.
Start with:
Source/UE5ActionRPG/Animation/Components/PTMotionMatchingProxyComponent.*Source/UE5ActionRPG/Animation/DataAssets/PTMotionMatchingConfig.*Source/UE5ActionRPG/Interfaces/PTMotionMatchingProxyProvider.*Source/UE5ActionRPG/Character/Hero/PTPlayer.*
The proxy resolves Ability System gameplay tags into one active state per configured motion-matching sync group. The data asset defines group tags, priority order, and fallback states; PoseSearch databases, Choosers, and animation assets are intentionally excluded from this source release.
The public source was last verified with Unreal Engine 5.8 on Windows. A compatible C++ Unreal Engine installation is required to compile the modules; the excluded assets and plugins are required to run the original game.
The original project uses Gameplay Ability System, StateTree, PoseSearch, Motion Warping, Enhanced Input, Niagara, and MVVM-related engine modules.
The original project also used third-party plugins that are not included here. See NOTICE.md before attempting to reuse or build any part of this code.
The private project used an optional SkinnedDecalComponent integration for character-surface decals. Its source, content, and module dependency are intentionally absent from this repository. Accordingly, UE5ACTIONRPG_WITH_SKINNED_DECALS is set to 0 in UE5ActionRPG.Build.cs:
UPTDecalManagerComponentkeeps its gameplay-facing API and the original integration code for review.- The third-party implementation is compiled out, so decal spawn and clear calls are no-ops in this public source release.
- This removes that plugin as a C++ build blocker; it does not make the repository playable, because project assets and Blueprint content remain excluded.
The source-only release deliberately excludes the EQS and Blueprint assets used by some optional systems. They therefore degrade safely rather than assert at startup:
- Pressure-slot allocation stays unavailable until
UPTAISettings.PressureSlot.SlotQueryis configured with an EQS asset. - Item-drop spawning is a no-op until
UPTCombatSettings.DroppedItemClassis configured with a dropped-item class.
These systems can be configured with compatible assets in a local project; their missing assets do not affect C++ compilation or the rest of the source review.
- Included: self-authored C++ source, target files, project descriptor, and minimal configuration for code context.
- Currently excluded: all original project assets, maps, Blueprints, DataAssets, third-party plugins, engine code, packaged binaries, cache files, local browser exports, and the private repository history.
This repository is currently a source-release portfolio. The following is an intended direction, not a delivery schedule or product commitment.
- Build a minimal editor-playable sample that demonstrates representative C++ gameplay systems in Unreal Editor.
- Add only the maps, Blueprints, DataAssets,
.uassetfiles, and configuration needed to exercise representative combat, AI, and animation flows. - Replace private-project dependencies with public-sample equivalents; the goal is to demonstrate the architecture, not to recreate the original game.
- Public sample assets will be self-authored, CC0, or Unreal Engine Examples/Template content only after their source-redistribution terms have been confirmed.
- Marketplace, Fab, Quixel, Paragon, and private-project assets will remain excluded from public source control.
- Any non-authored asset included in a future sample will have its source and license documented separately and will not be covered by this repository's MIT License.
- Evaluate extracting independently useful systems into self-contained Unreal Engine plugins after the public sample validates their dependencies.
- Initial candidates include the GAS ability and data-driven feature framework, StateTree combat AI and attack-token coordination, and the weapon hit-trace and reaction pipeline.
- Any plugin release will require an independently reproducible sample, documented dependencies, confirmed redistribution rights, and a sustainable maintenance scope.
Unless otherwise noted, the self-authored source code, configuration, project descriptor, and documentation in this repository are available under the MIT License.
The MIT License applies only to material owned by this repository's author. It does not grant rights to Unreal Engine, Epic Games content, Marketplace/Fab/Quixel content, third-party plugins, or any omitted project assets.