Thanks a lot for the great, in-depth reply!
I hope I’m not being too pushy, but I’ve done some more testing and I still can’t quite manage to fix the issue. I tried replicating the Grip Actor / Drop Actor calls and have them use the Force Client Side Movement option. This does indeed seem to make clients able to pickup and drop actors just like the host, albeit with a slight delay and much better syncing afterwards as you mentioned. However, when the client tries to throw the actor it still just drops straight down, whereas the hosts attempts all end up soaring away as you’d expect.
I’m thinking maybe the “Simulate” option for the drop function call might not work as intended for clients in a listen server. Back when we were trying to make our own networked VR gripping system we manually set the items physics to not simulate on grip, and then simulate again on drop. This worked just fine for the host, but just like now it made the clients items simply drop straight down from their hands. It seems to me that maybe the momentum or velocity calculated by the physics engine are simply lost on the client side. I used to suspect this was some weird property we’d accidentally set somewhere, but in my tests now I made a blank VRGrippableStaticMeshActor in which I only set its mesh, had it simulate physics and generate overlap events, so I’m no longer so sure if it’s caused by something we’re doing wrong on our end.
If it’s the case that momentum/velocity is simply lost or never calculated properly on client side, I’m thinking maybe our only option would be to start calculating each hands velocity on tick and passing these values along to the option velocity paramters instead of using the simulate option. Having it be properly simulated by the physics engine would of course be preferable, but as it stands now it seems that just won’t happen properly on our client side for some reason. Which is odd, as I’ve seen it working fine in other projects.
I also tried updating to the newest version of the plugin (We are using the latest 4.19 preview), but in this case the plugin wouldn’t compile. It claimed the “FScopedMeshBoneUpdateOverride” at line 1330 in the VRSimpleCharacterMovementComponent.cpp file was an undeclared identifier.
Finally, wasn’t able to find the part in the exampletemplate where it’s checking for authoritative grips, so my solution was to just RPC all grips and drops as server functions as calling these on the host should have the same effect as calling them on a client. And I’m not quite sure what you meant by this: