How to create and manage a UWorld?

I have looked over many similar questions, the most helpful was probably [ this one] (https://answers.unrealengine.com/questions/758130/view.html)
and I have seen it work here

Unfortunately after many days and crashes I think I have to ask some smarter people here and hope someone from Epic could share some knowledge on the subject.

I am new/intermediate when it comes to UE4 C++, but 
so far I have managed to successfully (I think?) create a world and spawn an actor inside it.

and

The results:   
 
The world gets created and the actor spawns

330441-worldactorspawned.jpg

I can even look at it in the outliner:

330442-outlinerworking.jpg

The Problems

The spawned actor has physics enabled, but it doesn’t move and the actor does not receive any Tick() calls.
I hoped that calling RegisterAllActorTickFunctions(true, true) would take care of that, but it didn’t. (Turns out Actor probably calls it anyways when it’s spawned)

Also, I reached the point at which Stopping Play now causes a crash probably because of me being stupid somewhere and not properly getting rid of the world and context…

I dug through tons of code, downloaded 26 Gb of debug symbols to see what is happening, probably read all of World.h/.cpp 3 times (probably not enough), bits of GameEngine.h/.cpp, Actor.h/.cpp and loads of documentation pages about Actor lifetime to get to this point, but I think I reached my limit.

I think I am doing something completely wrong here, am I going in the right way?
Why is the Tick() not getting called on the actor (yes i have a print string on it and it’s connected)?
Is this how one would go about making multiple UWorlds and how should switching actors between them work?

**The reason for all of this: **

I had an idea for a multiplayer game that requires large distances, but I quickly found that the limitation is the physics engine because of floating point precision at larger distances.
Rendering is not an issue as clients can locally shift the world origin once they pass some distance from it.
The server however can not just shift the whole world as players can be anywhere.
The solution I came up with is to divide the one UWorld into many - each would cover a different area, some areas could always be there while others could be spawned on demand.
Players/clients would be moving from sector to sector on the server while locally only having their one world and everything they can see replicated - one of the limitations mentioned is replication, I thought to hook up secondary worlds to the main world NetDriver causing both worlds to “overlap” and replicate on the same connections effectively “merging” them which is exactly what I wanted - no matter which world the player would be, he would get replicaton data from them all, the only thing left would be to remove actors from different distant worlds from replicating.

Yes this is quite a complex idea, probably not going to do it in a week/month/year, but I have some spare time and like to learn/code and would really like to get to know the engine more than just sticking with blueprints and “basic” C++.
If there is a different way of having lets say an area of 100x100 km without multiple worlds or scaling things down a lot and risking them going straight through eachother - I would like to know that way.

That being said I really hope someone from Epic that knows these parts of the engine gets to see this and could give me/us some details, also I noticed that they made a survey around the making the documentation better, so maybe they could add this to the list of “To be documented”.

Also, English is not my first language, sorry for any typos/mistakes.

2 Likes

Same Problem Same Question

Got a notification and remembered I posted this.
I don’t know why you are looking for this but for me - I am waiting for UE5 and it’s LWC - Large World Coordinates as it will solve my problem with having not enough space and I won’t have to bother with dividing into multiple worlds.
Also multiplayer will probably owrk out of the box with UE5 because if you were to try the multi world approach then you would have to make multiplayer yourself as Unreal only replicates the one main UWorld.
Here is the link to the new thread:

Judging by what i have seen Zak Middleton do on github and what he said is happening - it is coming.
If you follow the new thread then you migh see that there was event a mention on the main UE5 page but it was taken down for the time being as it’s probably months away still

would be nice to see. but what i do know from some testing is that floating point precision isnt the only issue. at around 107km away from server world origin the server stops movement replication and actor creation.

it still isnt enough for larger space games.

i need it to seamlessly travel between two maps that have their own skylight system.
and since the map is pre-rendered on entry things get messy if they are in the same level (or part of a sublevel system like world composition).
ive been working on a workaround for over a year. thats the only solution.
would look something like what ive done in the past

I didn’t get to trying to replicate that far but if they are planning on that 64 bit coordinate system then the replication part should hopefully be fixed as well as it would make no sense to make a space capable coordinate system and not make it playable in multiplayer.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.