-
-
Notifications
You must be signed in to change notification settings - Fork 21
Network Optimization (BoundQueue Refactor) #133
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
base: dev
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bugbot free trial expires on August 25, 2025
Learn more in the Cursor dashboard.
| } | ||
|
|
||
| return true; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| // Show client-side data | ||
| if (AbilityComponent) | ||
| { | ||
| if (DataPack.NBActiveEffectData != AbilityComponent->ActiveEffectIDs.Num()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Incorrect Cached Operations Incoherency Check
The Gameplay Debugger's "Cached Operations" display incorrectly checks for data incoherency. It compares DataPack.NBActiveEffectData with AbilityComponent->ActiveEffectIDs.Num() instead of DataPack.NBCachedOperationPayloads with AbilityComponent->BoundQueueV2.OperationPayloads.Num(). This leads to inaccurate incoherency detection for cached operations.
| UE_LOG(LogGMCAbilitySystem, Error, TEXT("No Abilities Granted for InputTag: %s"), *InputTag.ToString()); | ||
| return false; | ||
| } | ||
| bool bFirstAbilityActivatesDuringMovementTick = GrantedAbilities[0]->GetDefaultObject<UGMCAbility>()->bActivateOnMovementTick; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Null Pointer in Ability Activation
Null pointer dereference in UGMC_AbilitySystemComponent::TryActivateAbilitiesByInputTag. The code accesses GrantedAbilities[0] and calls GetDefaultObject() without validating that GrantedAbilities[0] is a valid class pointer. Although the array's size is checked, individual elements are not, which can lead to a crash if GetGrantedAbilitiesByTag returns null class pointers.
| { | ||
| return QueuedAbilityOperations.NumMatching(AbilityTag, EGMASBoundQueueOperationType::Activate); | ||
| return 0; | ||
| // return QueuedAbilityOperations.NumMatching(AbilityTag, EGMASBoundQueueOperationType::Activate); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR is being reviewed by Cursor Bugbot
Details
You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
| } | ||
| else | ||
| { | ||
| BoundQueueV2.QueueServerOperation(OperationID); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: bPreventConcurrentActivation parameter is completely ignored
The QueueAbility function accepts a bPreventConcurrentActivation parameter but never uses it. The old implementation had logic to prevent concurrent activation of abilities, but this was removed during the refactor without being reimplemented, allowing duplicate ability activations that were previously blocked.
Note
Refactors networking to new BoundQueueV2 with cached client/server operations and acks, switches effect replication to IDs, updates debugger, and enables Niagara.
GMASBoundQueuewith newFGMASBoundQueueV2pipeline bound via GMC (OperationData, caching, client/server queues, grace-period force, acks).GMASBoundQueueV2_Operations(ability activation, acknowledge, apply/remove effect, add impulse, set actor location, custom event).ProcessOperation,ServerProcessOperation,ServerProcessAcknowledgedOperation, payload caching/expiration, and ancillary/prediction integration.ActiveEffectsDatatoActiveEffectIDswithOnRep_ActiveEffectIDs; update cleanup and ID reservation/validation.TryActivateAbilitiesByInputTagnow returnsbooland supportsbForce;QueueAbilityqueuesFGMASBoundQueueV2AbilityActivationOperation.ActiveEffectIDsand show cached operation payload count.RPCOnServerOperationAdded; handlerOnServerOperationForced.Niagaraplugin in.uplugin.GMASBoundQueuefiles/usages.Written by Cursor Bugbot for commit 58e9d6b. This will update automatically on new commits. Configure here.