Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GMAS 1.3 #106

Open
wants to merge 41 commits into
base: main
Choose a base branch
from
Open

GMAS 1.3 #106

wants to merge 41 commits into from

Conversation

reznok
Copy link
Owner

@reznok reznok commented Feb 24, 2025

Todo: Figure out what actually all got added... it's a lot

  • Server Auth Effects/Events
  • QueuedOperations
  • A ton of bug fixing
  • More

petegilb and others added 30 commits June 17, 2024 12:10
Merge pull request #82 from reznok/dev
* Ensure Unbound attributes are replicated properly at startup.

* Additional guards on unbinding filtered tag delegates for gameplay element mapping.

* Ensure Unbound attributes are replicated properly at startup.

* Ensure the garbage check on gameplay element maps works in 5.3 and earlier.
* Ensure Unbound attributes are replicated properly at startup.

* virtualize lifecycle function so that AbilityEffect can be subclassed

* remove extra whitespace

---------

Co-authored-by: Rachel Blackman <[email protected]>
Co-authored-by: utf8 <[email protected]>
* Add UPROPERTY Categories to allow compilation as engine plugin.

* Adding Method CancelAbility, allowing ending an ability without triggering EndAbilityEvent.
Internally, FinishEndAbility Method as also been added and ensure logics (see GAS termination of an ability)

* Moving Activation tag requirement check before instantiation of the ability.

* Added Activity Blocked by ActiveAbility

* Fixing crash in HandleTaskHeartBeat.

* Change behavior for attribute ChangeCallback

- Callback OnAttributeChanged is now also called on SP/AP
- Callback is now also called when the value is affected outside for whatever reason (like by SetAttributeValueByTag)
- Support Replay
- SetAttributeValueByTag now also re-caculate the value.

Signed-off-by: Eric Rajot <[email protected]>

* BL-279 Clean before merge
- Removed Log message
- Removed irrelevant bounding

Signed-off-by: Eric Rajot <[email protected]>

* BL-279 Bug fixing and improvement for rep notify

* BL-279 Fixing Attribute notification

* BL-279 Adding Byte data type to Set Target for DW GMC Ability

* Improvement for tags, added duration

* BL-232 Progress

* BL-232 Initial work on External Effect/Ability Pending and Tag application

* BL-232 Working state.

* BL-232 Refactor and cleaning, handled now by Instanced Struct

* BL-232 Progress of the day

* Fixing a bug in remove effect.

They are now removing by specifique ID when outer removed, to ensure the list rest coherent client <-> server

* BL-232 Fixing removing effect

* BL-232 bug fixing in effect

* Bug fixing, adding accessor

* BL-232 Fix effect remove itself even is another instance is running

* Added getter

* Stability
- Fixed name space for SetTargetDataFloat,
- Fixed EEffectType of GMCAbilityEffect sharing same name than playfab
- Fixed wait for input key release with suggestion of Nas
- GetAbilityMapData now return a const ref.

For compability, you probably want to add to core redirect those lines :
```
+EnumRedirects=(OldName="/Script/GMCAbilitySystem.EEffectType",NewName="/Script/GMCAbilitySystem.EGMASEffectType")
+EnumRedirects=(OldName="/Script/GMCAbilitySystem.EEffectState",NewName="/Script/GMCAbilitySystem.EGMASEffectState")
```

* Adding possibility for effect to end an active ability

* Changing Ability Blocking way.

They are now internally stored. An Ability store itself what ability it will block, instead of other ability who will block him.

This allow to modify during execution this behavior.
For example, you may be want to stop an ability activation only during X time in your ability execution.

* Adding a nicer way to end ability

* BL-225 Grenade 100%

* Fix clang error

* Adding Attribute Dynamic Condition to effect.

* Fix crash when an active effect has been destroyed

* Module upload

* GMC Update

* Addition of levitation actor

* Crash fix

* GMC Fix for starting abilities,
Fix for stamina,
Fix for crash,
Adding speed for orb,
Adding plugin for metahuman hairs.

* Update for log

* Fix for GetActiveEffect ?

* Typo fix

* couple of misc fixes from rebasing deep worlds fork

---------

Signed-off-by: Eric Rajot <[email protected]>
Co-authored-by: Eric Rajot <[email protected]>
fix: Remove super call for SetTargetDataGameplayTag
Same patch that went into main #96
* Beginnings of general queue implementation

* Further work on bound queues.

* Convert abilities over to using the new bound operations queue.

* Refactor to generalize ability queue processing

* Convert effects to bound queue

* Refactor and cleanup

* A little more refactoring

* Support server-auth effects queued via GMC moves.

Note that this requires adding an SV_PreRemoteMoveExecution to your movement component, and calling into GMAS's PreRemoteMove call in that.

* Ensure that Queue-via-GMC effects work in standalone as well.

* Queue rework and cleanup finished!

* Last few tweaks to the queue setup.

* Further queue refactor and cleanup.

New queue types (ClientAuth, PredictedQueued) added.

* Add effect handles, so that PredictedQueued works right.

* Small cleanup on effect handle expiry.

* Correct desync for server-auth queue.

* Ensure we don't use the same ID if queuing two server-auth things in the same frame.

* Fix for Reznok's two-effects-in-one-frame issue.

* Correct issue with 2+ PredictedQueued operations in one tick, or 3+ ServerAuth queued.

* Fix off-by-one on server auth effect tick

* Fix a task ticking bug when multiple tasks happened in a row

* Fix:Add SourceComponent references to effect applications

* Add a bool to EffectData to preserve multiple instances of granted tags

---------

Co-authored-by: Rachel Blackman <[email protected]>
Co-authored-by: Rachel Blackman <[email protected]>
* Add UPROPERTY Categories to allow compilation as engine plugin.

* Adding Method CancelAbility, allowing ending an ability without triggering EndAbilityEvent.
Internally, FinishEndAbility Method as also been added and ensure logics (see GAS termination of an ability)

* Moving Activation tag requirement check before instantiation of the ability.

* Added pre-check function for ability, allowing to have some basic test and allow to cancel an ability if they fail,
Overridable in C++ or in Blueprint.

* Adding Precheck and Cancelling by tag

- Adding PreCheck function allowing to test logic on the start of an ability
- Adding Cancelling ability by tag.

* Added Activity Blocked by ActiveAbility

* Fixing crash in HandleTaskHeartBeat.

* Change behavior for attribute ChangeCallback

- Callback OnAttributeChanged is now also called on SP
- Callback is now also called when the value is affected outside for whatever reason (like by SetAttributeValueByTag)
- Support Replay
- SetAttributeValueByTag now also re-caculate the value.

Signed-off-by: Eric Rajot <[email protected]>

* Change behavior for attribute ChangeCallback

- Callback OnAttributeChanged is now also called on SP/AP
- Callback is now also called when the value is affected outside for whatever reason (like by SetAttributeValueByTag)
- Support Replay
- SetAttributeValueByTag now also re-caculate the value.

Signed-off-by: Eric Rajot <[email protected]>

* BL-279 Clean before merge
- Removed Log message
- Removed irrelevant bounding

Signed-off-by: Eric Rajot <[email protected]>

* BL-279 Bug fixing and improvement for rep notify

* BL-279 Fixing Attribute notification

* BL-279 Adding Byte data type to Set Target for DW GMC Ability

* Improvement for tags, added duration

* BL-232 Progress

* BL-232 Initial work on External Effect/Ability Pending and Tag application

* BL-232 Working state.

* BL-232 Refactor and cleaning, handled now by Instanced Struct

* BL-232 Progress of the day

* Fixing a bug in remove effect.

They are now removing by specifique ID when outer removed, to ensure the list rest coherent client <-> server

* BL-232 Fixing removing effect

* BL-232 bug fixing in effect

* Bug fixing, adding accessor

* BL-232 Fix effect remove itself even is another instance is running

* Added getter

* Fixed name space for SetTargetDataFloat, Fixed EEffectType of GMCAbilityEffect sharing same name than playfab, Fixed wait for input key release with suggestion of Nas

* Stability
- Fixed name space for SetTargetDataFloat,
- Fixed EEffectType of GMCAbilityEffect sharing same name than playfab
- Fixed wait for input key release with suggestion of Nas
- GetAbilityMapData now return a const ref.

For compability, you probably want to add to core redirect those lines :
```
+EnumRedirects=(OldName="/Script/GMCAbilitySystem.EEffectType",NewName="/Script/GMCAbilitySystem.EGMASEffectType")
+EnumRedirects=(OldName="/Script/GMCAbilitySystem.EEffectState",NewName="/Script/GMCAbilitySystem.EGMASEffectState")
```

* Adding possibility for effect to end an active ability

* Changing Ability Blocking way.

They are now internally stored. An Ability store itself what ability it will block, instead of other ability who will block him.

This allow to modify during execution this behavior.
For example, you may be want to stop an ability activation only during X time in your ability execution.

* Adding a nicer way to end ability

* BL-225 Grenade 100%

* Fix clang error

* Adding Attribute Dynamic Condition to effect.

* Fix crash when an active effect has been destroyed

* Module upload

* GMC Update

* Addition of levitation actor

* Crash fix

* GMC Fix for starting abilities,
Fix for stamina,
Fix for crash,
Adding speed for orb,
Adding plugin for metahuman hairs.

* Update for log

* Fix for GetActiveEffect ?

* Typo fix

* Removing unecessary log

* Beginnings of general queue implementation

* Further work on bound queues.

* Convert abilities over to using the new bound operations queue.

* Refactor to generalize ability queue processing

* Convert effects to bound queue

* Refactor and cleanup

* A little more refactoring

* Support server-auth effects queued via GMC moves.

Note that this requires adding an SV_PreRemoteMoveExecution to your movement component, and calling into GMAS's PreRemoteMove call in that.

* Ensure that Queue-via-GMC effects work in standalone as well.

* Queue rework and cleanup finished!

* Last few tweaks to the queue setup.

* Further queue refactor and cleanup.

New queue types (ClientAuth, PredictedQueued) added.

* Add effect handles, so that PredictedQueued works right.

* Small cleanup on effect handle expiry.

* Correct desync for server-auth queue.

* Fix crash BL-SERVER-B

* Ensure we don't use the same ID if queuing two server-auth things in the same frame.

* Fix for Reznok's two-effects-in-one-frame issue.

* Correct issue with 2+ PredictedQueued operations in one tick, or 3+ ServerAuth queued.

* BL-453 Adding application must have tag.

* Fix for server compile

* BL-453 - Fixing AbilityData unset from ability instanciation

* Add Todo.

* - Allowing Predicted effect in Ancilary tick.

* [TO TEST] Moving tick of Actives Effect from Ancilarity to Predicted. Should fix the chain rollback with attribute

* Fixing Crash

* Re-added BL-453 Commit : fix for AbilitytData input activation tag missing from ability instanciation

* Fixing crash in ability task data

* Added EnsureMsfgIf to easier catch miss effect for users. TODO: Add effect tag.

* BL-527 : Fixing nested tag removal in active tag.
Issue reported as #98 in Reznok branch (#98)

--------------------------------------------

Issue was GetActiveEffectByTag() was looking also for depth in tag hierarchy. Fixed by adding an optional argument (bMatchExact), this argument has been set by default to true, and can mess with project who are calling this function if they are excepting in depht.

Not ideal for retrocompability, but i prefere to enforce a good practice over the time.

---------

Signed-off-by: Eric Rajot <[email protected]>
Co-authored-by: Younes Meziane <[email protected]>
Co-authored-by: Rachel Blackman <[email protected]>
Co-authored-by: Rachel Blackman <[email protected]>
* Display selected actor's GMAS data in debugger

* Add methods to add/remove starting effects
Server Auth Events! They're like server auth effects, but for events!


* fix: merge conflict goofs

* Remove unnecessary header includes

* Keep StructUtils depdendency for older version support
e.g :
Before -> Ability.Item as blocked tag would not block Ability.Item.Use, Ability.Item.Consume but only Ability.Item
Now -> Ability.Item as blocked tag would block Ability.Item.Use, Ability.Item.Consume and Ability.Item
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants