Landscape Settings? (16kmx16km, with World Composition, no Origin Shifting)

Hey Guys,

i need to create a 16kmx16km world.

The maximum size of one landscape actor is 8kmx8km, so i have to create multiple landscape actors.

The World Composition is perfect for creating a larger landscape.

I have read the guides and viewed a few tutorials, but i am still unsure what settings to take.

The guides and the tutorials all have shown pictures with the same settings:

Section Size: 127x127 quads

Sections per Component: 1x1

Number of Components: 8x8

Overall Resolution: 1017x1017

To create a 16kmx16km landscape with these settings, i have to create 256 tiles.

I think 1kmx1km per tile is quite good, but before i use these settings, i want to ask you:

What settings are best for creating a 16kmx16km landscape?

I also consider to run the finished project on nintendo switch.

It will probably be playable in 3-4 years, so i think, it will be done for the next “nintendo switch”.

16kmx16km is big, i know. The first playable version will use mountains and water as placeholder tiles.
I also think, that in a few years more level designers will proceed with extending the world simultaneously.
So the settings should be user-friendly for simultaneous level designing.

I hope, you can help me with my landscape settings.

Best regards :slight_smile:

I’m not sure you can create something that size without origin shifting; I seem to recall the maximum world size without origin shifting being only 10km or so.

Why are you wanting to avoid origin shifting…?

Hi TomShirk,

The hard coded MAX_WORLD is 10km in all directions, so theoretically i have 20kmx20km. I would like to avoid Origin Shifting cause of the Multiplayer Feature.

Well, there’s a way to turn off the maximum ALLOWED landscape size by turning off world bounds on world settings. But that doesn’t change the mathematical limitations created by single-precision floating points that dictated that 10km size. It’s why other engines (are we allowed to mention them by name in here?) share the same limitation and why Chris Roberts’ crew had to rewrite theirs to use double-precision for Star Citizen.

There was another question I saw in here just earlier today; I was trying to find it for you but I’m coming up empty handed, I’m afraid; but there’s a tickbox on the world settings to turn off world bounds which will let you make the landscape as big as the max value of a float allows. But again, it won’t, I’m sure, produce super happy results, and you’ll have to figure out how to get the skybox to behave at the edges.

Hi TomShirk,
first we have to clarify what the max world size is. I am not really familiar with the reasons of the size limitations.

When i “google” for max world size, i e.g. get this:

https://gamedev.stackexchange.com/questions/150698/how-can-i-implement-almost-infinitely-large-maps-in-unreal-engine-4

I have often read about a maximum size of 20kmx20km.
And i like the consideration of having tiles of the power of two.

You say that the max size is 10km. I could work with a landscape of 8kmx8km with world composition. And excluding Origin Shifting so that i can implement a multiplayer solution within the support range of the unreal engine.

Here is the official guide about world composition:

https://docs.unrealengine.com/en-us/Engine/LevelStreaming/WorldBrowser

There you can see the rules when using world compositions. Origin Shifting is possible but not in conjunction with multiplayer.

I also do not know the meaning of world bounds. The only thing i know is getting world bounds or bounds in common using for calculations within blueprints.

For me it is just important to create a working landscape and use world composition for simultaneous level designing (see world composition guide).
And before i begin, i thought it might be a good idea to ask in the answer hub about the best landscape settings.

Today i have played with float values. Just created an actor bp and created a float variable and tried different values.

I was shocked about the the bad precision of float variables.

I will work with an 8kmx8km landscape. Even that will not be precise to 100% at the borders. I just hope, Epic Games will change floats internally to double precision during the next years.

Question; why don’t you try using origin shifting, but develop a custom server solution to act as a go-between for players to translate their positions?

There are solutions out there; this problem is as old as 3D gaming, and I’m sure you’re not the first to encounter it on UE4. You might also check the plug-ins section of the marketplace.

I’ve heard of solutions for large-world (origin shifting) multiplayer games; might want to look at MMO solutions for UE4. Even if you’re not making an MMO, there may be ways to adapt their solutions to YOUR needs.

Does your team have any programmers? You can also dig into the engine code and make them double-precision yourself. Granted, you’re rewriting a lot of the engine at that point, and there’d be hours of optimizing you’d have to do.

Maybe start here:

https://forums.unrealengine.com/development-discussion/content-creation/23324-large-scale-map-and-multiplayer

This is from my own docs i made when looking at this:

Valid tile sizes for importing as World Composition from something like world machine

2017x2017 - for 4x4

2033x2033 - for 8x8 tiles

2041x2041 - for 16x16 tiles

single tile res:

8129 - for 8x8 tiles

16352 - for 16x16 tiles

This is the documentation you want:

I think you will have to just build a bunch of tests in what ever you are using to create the world and import it and figure what is best.

Let me also take a quick moment to discuss some of the other stuff too.
From testing i found that when your actor gets about 1.5km away from the origin you will start seeing issues, like socket locations in animations being wildly off and jittery. The only way around this is to shift your origin. - cool.
One thing to take into consideration when you shift your origin this affects everything you have to design your code around this, its pretty easy just keep it in mind every time you send a vector to the server and then back to a pawn, there is a small translation you need to do on each end.
Materials are another one, that doesn’t get mentioned much, if you use absolute world position for things in materials, this will change when the origin shifts. So you want to reduce the use of any absolute world position calls in your materials, a lot of the time you can replace these with a location relative to the object (so it wont shift), or you need to find a solution to pump an offset into those materials every time you shift the origin.

You have quiet the journey ahead, have fun! :slight_smile:

Currently we are in Preproduction, so we are only 3 Guys. A Concept designer and a “Feature Designer”. i am the only Allrounder Programmer, so i have to set the rules of the project.

Now i have an idea. I will work with World Composition without Origin Shifting. When Prepoduction is done and we are working on the project, i can still implement a new multiplayer solution with origin shifting. I think this could work.

So lets talk about the settings of the tiles. Is 1017x1017 ok for a tile?
Shall i use Sections per Component: 1x1? 2x2 would do extra streaming within a tile, so i think 1x1 is fine. I think its also good to have the possibility to stream manually.
Section Size? 127x127 is average between default and max.
Number of Components 8x8? Shall i go higher?

I already was concerned that the bad precision will take effect very early. I will use Origin Shifting from the beginning. I think it could be a big problem to handle Shifting after developing a lot of calculation stuff.

I also decided to create landscape parts with 1kmx1km. I think this is a good size for level designers.

When we are reviewing the default settings of a landscape, we get an overall resolution of 505x505.

So now i have to decide what to increase.

Number of Components 16x16 will give us a res of 1009x1009. This means 256 components and 256 draw calls. Thats too much cause the world will have many close details.

Section Size 127x127 quads or Sections per Component 2x2 ???
Well, increasing quads will give us just more vertices. 4 Sections per Component will give us more LOD. To be honest i dont know what to take, so i just trust the tutorials and increase the quads.

Increasing the quads will result in an overall res of 1017x1017.
@gozu: Is this res working with world machine?

Ok, i have tested World Machine. Via Custom you can export heightmaps in any resolutions, so now everything is clear. Thanks for all who have helped me with my decisions.

I hope it all comes together the way your team is hoping!

Great work guys, this looks well researched! Anychance you all might be able to help me here?