Large map / big world / vast terrain

I’m wondering what Rocket will support in terms of map scale / terrain / world size, for long draw distances?

Thank you :slight_smile:

same as UDK, but now you can have infinite worlds (not just marketing term it’s for real now).

Infinite worlds are possible due to player centered coordiante system (or whatever it’s called). In essence it just center world origin around player, instead of fixed point in space. There unfortunetly no more info about it in Rocket documentation, so I guess they are still working on this features, since it was confirmed on UDN site (there is post somewhere in rocket Q&A).

other things as far as I know stay pretty much same. You still need to cleverly plan on using Culling volumes and layout streaming.

When I think about it there could be made some improvments to system like:

  1. Layer streaming (diffrent layers can be set to have diffrent streaming properties, directly on layer properties)

  2. Automatic distance culling based on object size ratio (you would probably still need to place cull volumes for optimization, but this would help).

  3. Auto LOD generation for last lod (it would generate sprite data, that is placed instead of geometry on last lod). This probably can be done by hand, but Hand made sprites won’t face camera automatically.

  4. Instanced mesh support for everything, not just foliage and inside Blueprints (I dunno why it is not set this way, technical limitations ?).

if I understood it correctly it’s not really centered around player, it only allows for “offsetting coordinate system’s origin” to a new point (which could indeed be player). to me this brings a question: if I move all across playable space and re-center coordinate system to my player, what happens to all stuff that are now sitting out of newly-defined playable area?

if I got this all correct this only allows you to have “virtually” unlimited worlds, where virtually means unlimited world is only playable around player. this doesn’t sound too bad but two big limitations come to mind: 1) you probably need to destroy or at least ‘freeze’ or stream-unload everything out of player’s playable area when coordinate system changes, and 2) since in a MP game all data must be handled by servers, you wouldn’t be able to have 2 players that get so far from eachother.

of course I might have understood whole concept wrong so it’d be great to get some clarification.

as for extra improvements for it all, I’d add a few of my own:

  1. allow more polygon-dense landscapes.
    I made a landscape with max
    allowed size and polygon density,
    stretched it out to fill level’s
    playable area (10x10 km? or is it 5
    with new default scale?), and
    ended up with some pretty huge
    polygons (ie. a vertex every 2x
    height of my character). I know I could add more landscapes, but I’d get a horrible and unworkable seam (unless ‘smooth’ tool works in two landscapes at same time), and still that would require me to crop my heightmaps into multiple chunks upon importing them
  2. make some clarifications as to what would
    happen with actors that pertain to a
    streaming level and move somewhere
    else, far from its streamed level -
    potentially making them disappear if
    near player when player goes
    so far as to unload their streamed
    level. example: an NPC companion.
  3. make some clarifications as to level streaming + multiplayer :slight_smile:

and Lukasz: I thought number 2) of your requests was available in UDK using a cull volume with multiple cull sizes pre-defined. I remember using it and it behaves much like what you’re describing. check it out, isn’t that what you mean?

and as for your number 4) don’t instanced meshes lack support for collision? or is that some other technical limitation of its own from Foliage?

Hi,

Infinite worlds.

We are working on feature that will support world origin shifting.
Basically each level has integer coordinates which represents level position in world. ULevel object acts as a parent for each actor inside that level, so all actors locations are relative to Level position. When engine decides that current absolute camera position is far from world origin - all visible levels shift theirs position closer to zero origin.

Shifting operation takes several seconds now, mainly because we have to recreate physics state for each actor. Fortunately NVidia will add support for physics scene shifting in next PhysX SDK release, so with that world origin shifting will take much less time.
Now world shifting works and we mainly focusing on tools for composing big worlds.

And yes, world shifting generally is not suitable for server side in a MP game. For handling big worlds on server side we need a different approach.

Hope that helps,

-Dmitriy

thanks for info Dmitriy.

I’m sure I’d never need a world in a multiplayer game that’s larger than playable area. and IMO, hardly anyone would probably need it.

but even for somewhat large game worlds in multiplayer some sort of optimization would be needed and I don’t think level streaming would be enough (if multiple players far from each other server would need to stream all of players’ current areas - not ideal). so as you say a different approach is needed. I’m curious as to if this is something you’ll be looking to address in future :slight_smile:

also still wondering about allowing more polygon-dense landscape. I mentioned this before:
I know I could add more landscapes, but I’d get a horrible and unworkable seam (unless ‘smooth’ tool works in two landscapes at same time)

and now I tried it inside Rocket. I can confirm that none of Landscape Paint Tools work across different landscapes, so putting two landscapes side by side creates a nasty unworkable seam.

Hi Oscar,

It’s intended that all connected terrain is a single Landscape. You can move parts of a single landscape to different streaming levels, while it continues to behave as a single continuous object in editing tools. That is purpose of “Move to Level” tool landscape. If you create a new sublevel, make it current and then use Move to Level tool, a LandscapeProxy actor will be created in sublevel and components you choose will be moved to sublevel.

Using this scheme combined with Add Component tool, you can make landscape as large and (depending on scale you start with) as dense as you want. only consideration is performance given amount of landscape you want to have visible or loaded at one time. You can control this by controlling which streaming levels you have loaded.

We are currently working on a tool called World Browser which will make this kind of setup easier to create and manage.

Cheers
Jack

oh I didn’t know I could add more components to a landscape created with maximum possible sized/density settings. I’ll have to try that!

I just hope it still likes importing heightmaps being fit to “new size”

thanks!

It’s best to re-export heightmap before reimporting (right-click menu) if you’ve added or deleted components.

ok I just tried to make my landscape bigger from what ‘create landscape’ menu offers as a maximum.

some background: maximum size/density landscape that can be done is Section size: 255x255 Quads, Sections per component: 1x1 section, Number of Components: 32, Overall Resolution: 8161x8161. This results in Total Components: 1024. If DrawScale is set to 64x64x64 then landscape fills whole playable area. but polygons are huge. here’s how it looks:

for a landscape to look good but still spanning whole playable area, I’d say twice as much density would make it. I know, that would mean 4096 components but this is assuming I’d do some heavy LOD and streaming.

manually adding components for this purpose seems cumbersome and uneasy. adding components can only be done 1 by 1, so if I have 1024 components and I want 4096 components, I’ll spend all month clicking and waiting.

so that’s why I’m : could we create higher-density landscapes?

thanks again

New Landscape limits to component counts are not fixed numbers, they’re just there to prevent users creating millions of components and then wondering why things are slow.

World Browser tool that’s in development has ability to add entire streaming level worth of components in a single click, which is best way to do what you want.

I’ll also add a TTP item to make Add Component tool more easily add large numbers of components when using a NxN sized brush.

I’ll just wait for next version then. thanks!

  1. Dunno I don’t know. That’s why I have asked.
  2. Yes it’s possible with volume. I just wanted that first culling pass, was default on map, without any volume involved.

thanks for your help chaps, your insights are really useful

What does that mean for approaching design of these large worlds?

what if i have 4 large heightmaps that I would like to make into one section of my world? are you saying there is going to be a way to fuse them together and stream them in?

Knowing current state of editor and having insight into where its heading, what way should we be approaching designing our levels so that transition into newer features will be easiest/less time consuming?

can someone ask dmitry what they would imagine to be solution for large worlds server side?

Hey neopangaia,

This is an Archived post from our beta users, put here for reference, and may no longer be current. If you have a question regarding this content, feel free to open a new question on AnswerHub and community can answer it there.

Thanks!