Hello all. I’m using Unreal 4.25 and trying to have a vehicle (horse-driven carriage) simulated on the server using physics, and the carriage’s main chassis transform replicated to clients.
I’m well-aware that such direct replication is bandwidth-heavy, but there will be only very few such carts on the map at any given moment of time, and it’s important that they are both physically simulated, and that their transform is correctly replicated to all clients.
The carts are Skeletal Mesh (1 chassis and 4 wheels).
It is a Root Component.
It is set to Replicate, Always Relevant, Replicate Movement, Replicate Movement to autonomous proxy.
I’ve gotten the chassis transform to replicate across two clients, but the blueprint which applies the force to move it - on the server, in the blueprint’s Tick - does not update it’s position at all.
The result is quite bizzare - the clients locally apply a force, in world space, but the strength and point of application of the force is stationary (the carriage’s spawn position) - as it never updates on the server.
If I make the carriage not an independent actor but a child component of the horse - it loses movement replication (and I’ve read that movement replication only works on root nodes). Also, if the carriage is a child component of the horse - it’s position on the server does get updated - but ONLY while the horse is being actively moved. Otherwise the physics appear to freeze on the server - and be simulated locally and independently on clients.
My question: how to get an actor’s physics simulation to ALWAYS tick on the server, and never go to sleep/freeze / go dormant? I’ve already tried all the intuitive things, such as setting Net Dormancy in the Details of such an actor to “Never”. Didn’t find any obvious setting that would indicate that this actor’s physics are to go to sleep under any conditions. Currently using UE 4.25 with PhysX but we’ll be migrating to 4.26 w. Chaos once Chaos is stable.