我们在使用IRIS进行网络同步时,出现了以下问题:
- DS 上所有客户端都断开链接。
- 断开期间,服务端对象的属性发生变化,并调用过MarkPropertyDirty相关。
- 客户端重连,但是客户端没有收到这段断线期间更新后的属性值。
// If we no longer have any valid connections we can skip part of the update.
const bool bUpdateConnectionSpecifics = Impl->ShouldUpdateForConnections();
bUpdateConnectionSpecifics为false,会导致之后的CallPreSendUpdate等不执行,也就不会将属性值更新到IRIS的ReplicatedObjectStateBuffer里。
客户端重连时,使用的是ReplicatedObjectStateBuffer,而不是重新从UObject当前属性值全量复制,所以会导致客户端的值有问题。
我们想知道,或者官方有没有计划更新
- 可以由项目自己控制bAllowMinimalUpdateIfNoConnections的变量,或者其它方式来控制ShouldUpdateForConnections的返回值,这样我们可以自己选择何时修改来规避这个问题。
- 有官方推荐或者后续更新,保证所有客户端在断线期间,重连后可以下发最新值?而不是忽略了断线期间的MarkPropertyDirty。
[Attachment Removed]