Release Notes

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 AttackResultProcessor now 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).

Demonstration 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/Cues
19;AbilitySystemGlobalsClassName="/Script/GenericGameplayAbilities.GGA_AbilitySystemGlobals"
20PredictTargetGameplayEffects=true
21bUseDebugTargetFromHud=true

1.2(2024.11.21)

BigChange

I have moved the code module "Generic Effects System" and "Generic Camera System" into my free plugin:Generic Game System(Free)

Combat System doesn't depend on these two modules at code level, And provided content will rely on these 2 modules, So make sure to install GenericGameSystem either from Fab or discord(If fab version is not up to date.).

Collision Trace System

New: CollisionTraceDefinition - The CollisionSystem component can be configured with default collision detection instances.

New: You can listen to changes in the activation state of any collision trace instance through the CollisionSystem: TraceInstanceStateChanged.

New: Create collision trace instances from collision trace definitions.

Improvement: Support for manual/automatic initialization of the collision system component.

Weapon System

New: Weapons support multiple collision trace instances bound to a single Mesh/Primitive, distinguished by SocketPrefix.

New: Weapon Hit supports playing ContextEffects for interaction with the physical environment.

Deprecated: The original configurations starting with Trace on weapons have been removed.

Change: OnTraceHit has been changed to OnAnyTraceHit. OnTraceStateChanged has been changed to OnAnyTraceStateChanged.

Targeting System

Change: TP_GCS_Trace_WeaponSockets can scan any object, not just pawns, allowing hits to the physical environment.

Bullet System

Fix: When bullets respawn from pool, ensure that the corresponding visual assets are properly reset.

Fix: Properly replicate hit events for clients.

Ability System

Improvement: Enhanced the logic for Dodge abilities, making manual correction of character orientation optional. Added more types of error checks.

Improvement: WeaponFire has been fixed in multiplayer mode to only spawn bullets on the server and use the correct Bullet LineTrace Task to obtain the target data.

Multiplayer System

Improvement: Improved the initialization logic of the CombatCore component to prevent errors in multiplayer scenarios.

Improvement: AbilityTask_CollisionTrace adds an optional bAdjustAnimTickOption. If checked, it temporarily sets the skeletal mesh anim tick mode to AlwaysTickPoseAndRefreshBones in Dedicated Server mode, ensuring that combat logic dependent on animations works correctly during melee-based combat.

Reference Content

Improvement: Adjusted the Motion Warping notification for free animations to allow changes to player input during attacks.

New: AirAttack supports combos.

Development Experience

New: Combat system project settings allow global disabling of faction checks for easier testing of friendly fire without adjusting team IDs individually.

New: GetMainCharacterMeshComponent allows querying the Mesh component without directly casting to the Character class.