Pull Request - World Origin Shifting in MP



Unreal Engine 4.14 can’t come soon enough :slight_smile:

I know right!

I am hyped for 4.14 :slight_smile:

Is this done with blueprints only?

Will this be able to handle situations where co-ordinate bounds exist out of WORLD_MAX (10KM from origin) on server . I am asking this because no matter the amount of shifting on client the server would still run on a single co-ordinate system which would be limited to WORLD_MAX.

Does this setup takes care of that?


This is very exciting :smiley:

Happy that this is finally in engine

Where would be a proper place to insert/use these two new nodes in a multiplayer blueprint game?

I’d use them in the player controller. On each tick (or every few seconds) check what the current player camera location is, then measure the distance to the last origin and if the distance is greater than some threshold, rebase local origin onto zero with current position and store that origin location. Rinse and repeat.

Mostly before and after sending coordinate as raw vectors over network.

Any chance of getting an updated example project in here? The current one is full of errors :frowning:

+1 on the updated project if possible?

Will try to do it today later

Project is updated to 4.14 (only config changes). - Google Drive

Good Heavens! That is sooooo sweet. Thanks!

Does it allow to have world bigger than 20km x 20km on server ?
I ask becuase origin shifting shifts origin to the player view location, and on server there is no real player view location, so in theory server would still be limited to the world max.

Yes, WORLD_MAX is still the limit.

Why is that though? What if I disable boundary checking and make say a 200x200km world?
What kind of issues would I be facing?

I’ve noticed that this affects the camera if camera lag is set to on. Is there a better solution to turning it off, setting the new origin location, then turning it back on?

The usual example shown on the forums is jitter, particularly weapon attachments beyond a certain point.
But for large-worlds / space levels, apocalyptic cases of physics totally breaking down isn’t the full picture.

So being interested to know too, I’ve been trying out some tests around 200-500 Km / up to 2000 Km etc.
In short, while there are theoretical limits, the real practical limits or where the true problems start varies.
The first is rendering / break down in depth. Meshes do not render in the right order beyond 100-200 km.
One solution is blending multiple cameras of varying depths, but unlike Unity UE4 doesn’t support this atm.

But if you can work around this then you can make large-world SP / local-split-screen MP space games etc.
Because Physics / Projectiles and Interp movement appears to be quite robust in certain specific scenarios.
Overall, the scale of the ships plus their relative speeds seems to be the significant key factor for accuracy.
Whereas normal scale player-characters & AI with fine movements / precision animations don’t play as well.

Doesn’t unreal have it ? That probabaly would best solution (along with rendering within camera local space).

I know I did some moons (ok sphere’s) a million units out in the sky in Eden and they rendered just fine.