How to keep replicated actors from falling through streaming levels

I’m using a dedicated server with World Composition with client side level streaming and I’m trying to figure out how to keep replicating actors from falling through the landscape on load.

Issue Example:
A replicated vehicle pawn is spawned on the server (I’ve put in logs to confirm the car’s location is correct and its just sitting there). When a client joins the server, the server replicates correctly to the client and spawns the vehicle at the correct location. The issue is that i think physics calculations are ran on both server and client, but the client doesnt have its landscape loaded yet so the car falls. I’m assuming because the vehicle never moves on the server it never replicates and syncs up the clients falling car.

Has anyone had this issue and solved it in a clean global way for all actors that have gravity?

That wont work if an actor has moved. I could spawn a car on top of a static mesh, but if a player has driven that car to the woods, the car will fall on load for a newly joining player. My current solution is ugly but working. Anytime a streaming level loads the server sends that client all the locations of actors that are replicating with gravity enabled. This works, but its heavy on bandwidth. I still feel like their is a better way to do it.

You need to add a ground plane or collision in the persistent level to prevent things from falling through when loading and and unloading levels. Or make sure there is a ground plane / collision inside each level.

In http://worldofpursuits.com/ The open world is persistent and players can leave their cars on a dedicated server. So a player can leave an actor ANYWHERE in the open world and in any streaming level. So placing a mesh underneath wont work. That’s a terrible hack that level devs could easily forget, and more development maintenance.

For those that are newbies to replication: The issue is that the engine wont replicate locations of non moving actors except 1 time. So if a car is at 0 velocity(idle and not moving), when the player loads in, the server tells the player its at say 100,100,100 transform. Then the problem is when the players computer sets the location of the vehicle before the level is loaded. The players PC sets the vehicle to 100,100,100, then the vehicle starts to fall forever. Its now dysnced. The vehicle is still in the parking lot on the server, but on the client its falling forever. Then the steaming level loads and the car still falls below it forever. Because the vehicle is at 0 velocity on the server, it’ll never update the client again with a new world transform (unless something moves it on server).

What I did was start replicating the vehicles location manually when velocity hit 0. I created a 1 sec timer to do it instead of spamming in tick for better performance. So when velocity hits 0, start replicating location manually. When its moving again, just turn off the timer and let UE4 take back over.