The concept of a “server owned actor” does not exist - not in those docs and not in UE4. I have ELI5’d this over and over in as many ways as possible.
I think you don’t understand how Replicate Movement works. You’re constantly saying certain setups wont work with Replicates Movement when they absolutely do. It’s extremely basic and I don’t know where your misunderstanding stems from:
There is a struct in EngineTypes.h called FRepMovement that contains LinearVelocity, AngularVelocity, Location, Rotation, and a few other things. If bReplicatesMovement is true, the corresponding settings are compressed and packed into FRepMovement in the function AActor::GatherCurrentMovement() and then replicated to clients with an AActor::OnRep_ReplicatedMovement().
/** Used for replication of our RootComponent's position and velocity */
UPROPERTY(EditDefaultsOnly, ReplicatedUsing=OnRep_ReplicatedMovement, Category=Replication, AdvancedDisplay)
struct FRepMovement ReplicatedMovement;
When the ReplicatedMovement variable (struct) changes, it replicates it to all clients, who then apply the result.
As such - any client can collide with an object that is replicating movement and the server will determine the result and propagate to all relevant clients.
The problems with this is that there is no interpolation, so it snaps. It also doesn’t use any form of client-side prediction for the player that touches an object which allows it to desync constantly.
The overall problem then is that it gets corrected a lot, doesn’t factor in player latency, and teleports when corrected. No one owns the object.
Your plugin does not solve any of these issues. The store page is false - it’s not a matter of elaborating, saying that it’s a replacement for replicates movement is a lie - even if you want to believe otherwise, at this point, there’s little justification. It doesn’t have anything to do with it. I don’t care about a $5 refund - using the plugin was a waste of time and it’s misleading to other users, that’s the real issue at hand.