Description

In KismetArrayLibrary.h, functions that modify the array property call MARK_PROPERTY_DIRTY(Stack.Object, ArrayProperty). Because these calls use the stack object and not the property's owner, modifying the property from a different actor results in the mark dirty function being called with that actor, not the property's owner. This can result in assertions failing in the push model manager.
This doesn't seem to occur for other types of replicated blueprint properties, as the "mark dirty" node injection done in FKCHandler_VariableSet::Transform appears to avoid this issue.

Steps to Reproduce

With Net.IsPushModelEnabled=true and Net.MakeBpPropertiesPushModel=true, create two replicated actors, with the first one having a public, replicated array property. From the second actor's blueprint graph, modify the first actor's replicated array.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-186111 in the post.

1
Login to Vote

Backlogged
ComponentUE - Gameplay
Affects Versions5.2
CreatedMay 17, 2023
UpdatedJun 13, 2023