Hey everyone. I’ve been looking around for more information on tiled landscapes, but the questions I have haven’t really been answered anywhere, so I thought I’d open up a discussion where i could post my results or get some hints.
My goal is to create a very big, tiled world with a reasonably good polygon density. Some recent improvements like Virtual Texturing are nifty and we’re going to make full use of them in an attempt to make some persistent runtime texture changes to the landscape.
The challenges are:
- Generating and exporting
- Importing into UE
- Effectively texturing the landscape using generated maps like flow and normals
- Managing it in the editor and in-game.
Generating and exporting
Generating and exporting is pretty easy. If you’re on World Machine Pro you can just make a tiled world build. The first thing I established is that it creates the tiles from within the extents of the previewed landscape, so what you see is what you’re going to get. That confusing tiled world view inside WM means nothing.
If you don’t have World Machine Pro I also wrote a photoshop script to slice up an existing single image. If you’re exporting as .r16 format (and you should be) then you want to go to “Open As…” and in the dropdown select Photoshop Raw. From there set it to 1 channel, 16 bits, IBM-PC byte order. Everything else you can leave as-is. Then run the script (it’s in another thread, I’ll link it later).
Ultimately I chose to generate a 16kx16k landscape divided into 64x64 253x253 pixel tiles. I assume this is around 20km squared. This is about one polygon for every 120 units of world space, which isn’t actually too bad for detail scale, but we may want to go even more detailed if everything works out. All I did for the landscape was an Advanced Perlin Noise so it’d generate and export quickly. That still took five minutes and it generated over 3000 tiles. Then I had to do it again because I hadn’t told it where I wanted it to save them.
Importing
Importing into UE isn’t so bad either, but it’ll really pay to have your materials and weight layer files sorted out in advance. Reimporting really big worlds is tedious.
Texturing
I’ll come back to this one after I finish with importing.
Managing the landscape
This is where most of my questions lie. How many tiles should we try to load at once? How many tiles should we have at all? Can we display imposters in the place of levels not streamed in yet My earlier attempts resulted in a lot of sitting around staring at UE while things either loaded or messed up. I want things to go wrong so I can solve them, so rather than start with a small tiled world we’re going to start with a colossal one.
It turns out all the answers are right here: Let's make an MMO in UE4 - Part 8 (HUGE Fast Landscapes) - YouTube
You can easily set up level streaming distances and LOD proxies for the streaming level.