1.3(2024.02.17)
This is the final update for UE5.4, with versions beyond 1.3 being developed in UE5.5.
Numerous updates are reflected in the sample project; here, I shall highlight some of the principal modifications.
Combat Flow
- New Feature: The
AttackResultProcessornow supports WorldContext, allowing for the use of additional nodes (such as SpawnActor) within Blueprints.
Collision Detection System
- The collision detection instance no longer utilizes GameplayEventData as TraceInformation and has been supplanted by Set/GetTraceSource and Set/GetAttackRequest.
- An AsyncAction_CollisionTrace has been provided for ease of use.
Bullet System Enhancements
- Fixed: Hit events are now correctly synchronized.
- Improved: Trace information for bullets is now contained within the bullet definition, supporting multiple traces linked to a single bullet.
- Enhanced: Bullets can now be configured to either penetrate characters or the environment.
- Refined: The bullet system has been further optimized to support penetration and allow for the generation of bullets upon impact (chain effect).
Content Improvements
- TargetingPresets related to weapons will now filter out weapon type Actors.
- The Posture (torso) attribute has been removed from the demonstration content due to its overly specific ties to gameplay mechanics: users can still execute perfect defenses or parries, but the resulting outcomes can be defined independently.
- The movement control logic within DemoCombatCore has been decoupled into a distinct, simplified movement system. This facilitates reuse across different projects without redundant development while providing a clearer integration method for any movement system within the combat framework.
- Fixes have been applied to ensure that weapon animation layers link/unlink correctly under certain conditions.
Collision Detection System
- The usage of TargetingSourceContext has been standardized.
- Trace Instance uses the TargetingSystem for target acquisition. The contents of the TargetingSourceContext are as follows:
- SourceActor refers to the Owner of the PrimitiveComponent associated with the Trace; for instance, if the Trace primitive is tied to a weapon Mesh, the SourceActor would be the weapon itself; for Trafe primitive being a bullet's Shape component, the SourceActor would be the bullet actor.
- InstigatorActor: All Trace instances are created and managed by the CollisionSystem component, making the Owner of the CollisionSystem component the InstigatorActor.
LockOn System
The LockIndicator component has been enhanced, allowing for the definition of multiple Indicators. When a character is locked onto a target, a WidgetComponent will be automatically created and associated with the UI. By default, only the LockOn UI and the character's health bar UI will be displayed when locked onto a target.
In essence, this component offers a convenient method for dynamically creating a series of world UIs on a locked target.
Faction System
GCS_CombatTeamAgentComponent can optionally set team id on pawn's controller(Only when controller implements GenericTeamAgentInterface) .
Migration Guide
Open your project’s DefaultGameplayTags.ini and add the following Tag redirections under [/Script/GameplayTags.GameplayTagsSettings]:
1[/Script/GameplayTags.GameplayTagsSettings]2+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Tailsman",NewTagName="GIS.Item.Tailsman")3+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon",NewTagName="GIS.Item.Weapon")4+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Axe",NewTagName="GIS.Item.Weapon.Axe")5+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.BowAndArrow",NewTagName="GIS.Item.Weapon.Bow")6+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.GreatSword",NewTagName="GIS.Item.Weapon.GreatSword")7+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Hammer",NewTagName="GIS.Item.Weapon.Hammer")8+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Pistol",NewTagName="GIS.Item.Weapon.Pistol")9+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Sword",NewTagName="GIS.Item.Weapon.Sword")10+GameplayTagRedirects=(OldTagName="GIS.Item.Type.Skill",NewTagName="GIS.Item.Skill")11+GameplayTagRedirects=(OldTagName="GIS.Item.Type.Potion",NewTagName="GIS.Item.Consumable")12+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type",NewTagName="GIS.Item")13+GameplayTagRedirects=(OldTagName="GIS.Item.Type",NewTagName="GIS.Item")14Beginning with version 1.3, GCS_AbilitySystemGlobalsmust be utilized; you may refer to the DefaultGame.ini in the sample project:15[/Script/GameplayAbilities.AbilitySystemGlobals]16+GlobalAttributeSetDefaultsTableNames="/Game/GenericGame/CombatSystem/Extras/DataTables/CT_GCS_DefaultStats"/Script/Engine.CurveTable'/Game/GenericGame/CombatSystem/Extras/DataTables/CT_GCS_DefaultStats.CT_GCS_DefaultStats'17AbilitySystemGlobalsClassName="/Script/GenericCombatSystem.GCS_AbilitySystemGlobals"18+GameplayCueNotifyPaths=/Game/GenericGame/CombatSystem/Extras/Cues19;AbilitySystemGlobalsClassName="/Script/GenericGameplayAbilities.GGA_AbilitySystemGlobals"20PredictTargetGameplayEffects=true21bUseDebugTargetFromHud=true
