Version 1.5
New Features
Added SourceObject for collision detection instances. When using multiple weapons simultaneously, and each weapon creates a TraceInstance with the same Tag, you can use SourceObject to mark the actual source of the TraceInstance.
Game Effect Context Refactoring
Thanks to the introduction of GGA's GameplayEffectContextPayload system, which allows Blueprint/C++ users to add any custom data to the GameplayEffectContext without handling manual serialization. GCS_GameplayEffectContext has been deprecated in favor of GGA's GGA_GameplayEffectContext.
Data previously passed through GCS_GameplayEffectContext has now been migrated to GCS_ContextPayload_Combat and is carried as one of the Payloads in GGA_GameplayEffectContext.
This improvement makes GCS more modular. If C++ needs to customize the GameplayEffectContext, it no longer requires modifying existing code but can be expanded through ContextPayload.
The upper-level API for Blueprint remains unchanged, while C++ may need to be updated to the latest API.
Bullet System Refactoring (Delay to 1.6)
To further enhance the usability and flexibility of the bullet system in online games, version 1.5 introduces BulletSystemComponent to manage all bullet requests related to a single Actor.
BulletInstance is no longer synchronized over the network as an Actor, but is synchronized by BulletSystem for all bullet requests. Each client has its own version of the bullet.
Attribute System Refactoring
In previous versions, a small number of attributes were used to implement multiple types of damage and mitigation. This time, the combat damage and damage mitigation system has been simplified to two attributes: Damage and DamageNegation. At the same time, the generality of the attribute system has been further expanded, allowing you to add various damage types such as health damage/mitigation, status damage/mitigation, critical damage/mitigation, etc., without modifying the code.
Please refer to the provided supporting project to understand how attributes are designed and modified at runtime.
Equipment System Refactoring (delay to 1.6)
The Demo_WeaponManager in the supporting project will be refactored into Demo_EquipmentManager, demonstrating in a simple way how to equip and dynamically modify attributes, combat actions, etc.
Collision Tracking System
Completely rewritten collision detection system (Breaking Change):
The current GCS collision detection system is a data-driven, multi-threaded, high-performance collision detection system. Unfortunately, the API of this system has changed, and the examples in the supporting project have been updated to the latest API. For existing projects, you will need to change some API calls to upgrade to the new version.
- The UObject-based CollisionTraceInstance has been deprecated.
- CollisionSystemComponent is now CollisionTraceSystemComponent, and its parent is ActorComponent instead of PawnComponent, further expanding its use.
- Supports stable frame rates and distance-based collision detection.
- Allows you to define various dynamic collision shapes in a very flexible manner.
- The main body is still configured through CollisionTraceDefinition.
Weapon System Improvements
- Weapons can now implement ToggleTrail to respond to the activation of the Trail.
- The activation of the Trail is no longer coupled with the Trace, but is controlled separately through animation notifications (
ANS_GCS_ToggleWeaponTrail). - The default weapon implementation can now support both Niagara and Cascade particle systems as weapon trails.
Migration:You can batch select your attack Montage, right-click -> Scripted Asset Actions -> GCS -> Sync Trail For Attack Trace. This script will automatically addANS_GCS_AttackTrace (melee attack request) notifications to the relevant locations, automatically addingANS_GCS_ToggleWeaponTrail notifications, which are the default way to toggle weapon trails.
Combo System
A new data-driven combo system has been added, allowing you to freely combine different abilities into various combos through DataTable, and you can also assign different combo tables for each weapon.
The original implementation was more about dynamically changing moves at the Action level of a single Ability. This time, the functionality greatly reduces the complexity of input layer and Action layer configurations and further improves the flexibility of GCS.
The supporting project has adopted a brand new Combo system for reference, documentation TODO.
Skill System Improvements
Introduced damage prediction and separated the logic and presentation of HitReaction.
- GA_GCS_HitReaction_Additive and GA_GCS_HitReaction_IK have been deprecated, and now only GA_GCS_HitReaction_Normal is needed.
- GA_GCS_HitReaction_Normal uses RootMotionSource combined with AttackDefinition's KnockDistance for hit displacement.
- GA_GCS_BlockHit_Normal works with AttackDefinition's KnockDistance and customizes displacement effects based on its own logic.
- GA_GCS_HoldAttack has been changed to GA_GCS_SkillAttack_Charged and redesigned.
Miscellaneous
- AttackDefinition and BulletDefinition have added an InstancedStruct field named Extension, allowing Blueprint/C++ users to use fields defined by custom structures without modifying plugin code. The original UserSettings is no longer recommended.
Functional Skill Improvements
- The MotionWarping feature now supports specifying displacement thresholds on animation notifications, applying root motion displacement only when the target is within this range.
GameplayTags Organization
In this update, some GameplayTags have been redirected for better organization and management.
Reasons:
- Trace introduces secondary classifications, such as weapon and body. For example, a long spear may have weapon Trace that includes the spear tip and body, allowing differentiation using Trace.Tip and Trace.Default. If the Tip hits, additional damage can be added.
- InputTag.XXX has been moved under GIPS.InputTag.XXX, alongside GIPS.Input and GIPS.InputBuffer. I aim to avoid top-level classifications as much as possible (I have OCD).
You do not need to take any action; the Tags provided in the supporting project already include the Tags redirection.
