Dynamically stream terrain height map

Is there a tutorial or any information that explains how to dynamically stream geotiffs and use them to create terrain?

Assuming I had a locally stored geotiff, could Lumberyard create its terrain using it? Do I have to transform the geotiff into another format to make it work?

I don’t think it’s in the system by default. You might need to make a small modification to the engine to get a paging system rolling. Luckily it won’t be too hard to do. The hard part would be having the editor load in the terrain cells for editing.

thank you! any idea where to start or what terms to look up?

yeah some ideas and orientation would be very helpfull, i am highly interested in this topîc too .

i want to make a flight sim like game, so the 4K limit is not enough for me …

This is also something that I would be interested in

Me too, is there no system planned, where say you can load in a tiled terrain setup from geo control 2 or such ( or even make your own )?

If not I think its going to be very hard for LY to compete with unrealengine 4, which I"m using currently btw.

If we can do it manually, is there any info out there on now to proceed ?


Is there any update ?

This engine wont’ cut it for those of us who need very large streamed worlds.

There are options but they aren’t real pretty and certainly not immersive at all.



no news on this guys ?

otherwise any idea on how to implement this would be great .

Hi Amazon,

Is it ‘still true’, that streaming doesn’t work in latest Lumberyard engine ?

If not,are there plans to intergrate some from of streaming ?


Hello Everyone,

This is currently not possible to do with Lumberyard. But keep the feature requests coming, we are working hard to make Lumberyard the best it can be!

NOBODY from Amazon even cares, and NOBODY at Amazon cares about our “feature requests” and we have requested this same exact feature for 5+ years already (since before Amazon even purchase a CryEngine license) and this exact same feature was requested on the Crytek forums dating all the way back to 2008 (and earlier) era on the original Crytek forums. This request seems to have “fallen upon deaf ears” and even with Chris Roberts “deep pockets” and “big money” (from crowdfunding/kickstarter) we could never seem to get anyone at Crytek to do this or make it work in CryEngine (same 3.8.1 fork as current Lumberyard). So the chances of this happening are ZERO.

Only Sean Tracy (from Crytek) who now works for Chris Roberts (CIG/Star Citizen) has managed to get this to work (for Star Citizen) using a heavily modified CryEngine / Lumberyard fork.

Crytek attempted this (for Star Citizen / CIG) but from what I heard they had failed miserably, and Chris Roberts eventually had to hire his own developers (original Crytek engineers) and I believe Sean Tracy (from Crytek) was able to get this working (for Star Citizen / CIG) and was hired by CIG to get this done.

Unfortunately NONE of this was ever shared with Crytek or any Amazon Lumberyard developers (from what I understand) so as of the past 9+ years, despite this being one of the most COMMONLY ASKED questions, the answer is Amazon is NOT LISTENING and Amazon just doesn’t care.

It doesn’t seem likely that anyone working for Amazon could do this, so your chances of seeing this happen is pretty much ZERO. You would need to abandon Lumberyard and go over to EPIC GAMES UNREAL ENGINE (UE4) and use Unreal Engine. This solution is not ideal, but it’s currently the only option (as of right now).

It seems extremely unlikely that Amazon will ever add this feature, and the only chance you have is using Unreal Engine 4.

Amazon Lumberyard has been a “dead end” for over 6+ years now, and Amazon Lumberyard developer support is the absolute worst in the industry and there is such a huge “disconnect” between developers and the community that Amazon developers just don’t care what we ask for, what we want or what we need.

Your only hope is to use Unreal Engine.


and here:

You’ll probably NEVER see this feature added to Lumberyard, because the Amazon developers just TRULY DON’T CARE about Lumberyard users, and you have a better chance of getting struck by lightning a million times in a row (or winning the lotto a few hundred times in a row) then getting ANYONE from Amazon to actually LISTEN TO THE COMMUNITY, and implement our feature requests.

This feature request has “fallen upon deaf ears” for over 6+ years now at Amazon Lumberyard, and over 15+ years over at Crytek.

The ONLY hope that we had, was when Chris Roberts announced that he was going to start a kickstarter (crowdfunding) campaign, and promised to keep things open, and allow the game to be modded, and we all got excited and everyone contributed to the kickstarter, and then absolutely NOTHING came of this, and it seems that Star Citizen / CIG / Chris Roberts never contributed anything back to Crytek (or Amazon Lumberyard) and we still don’t have this feature in Lumberyard (and I’m not sure whether Crytek ever got it working in CryEngine 5.8.

As far as I know, Unreal Engine is your only hope.

If you are waiting for Amazon to do something for your, then you’re definitely in the WRONG PLACE, because based on my experiences (and the experiences of everyone else) the answer is always the same.

Amazon is “working hard” to COMPLETELY IGNORE your feature requests, and during the past 6+ years, NOTHING WE SAY and NOTHING THAT WE ASK FOR will EVER be added to Lumberyard, because Amazon just doesn’t care. #Truth

Amazon Lumberyard Developers have NEVER CARED and NEVER WILL. Nothing has changed in 6+ years.

If you are expecting something to “suddenly change” today, this month, this year, or next year, or during the next 6+ years, it just won’t happen. Amazon Lumberyard Dev Team just doesn’t care about what we have asked for (for years and years) as developers. You’ll never find “large world support” in Lumberyard (during our lifetime).

You would think that something as simple as this would have been added 4+ years ago to Lumberyard, but it never seems to even make their “features request” list, and NOBODY at Amazon even cares about what we ask for (as developers).

The Amazon “solution” is to tell you to go find $200M to $300M dollars and have a large development team (like Chris Roberts’ and CIG / Star Citizen) and then go hire Sean Tracy (from Crytek) to implement this feature for you. (after blowing $200-$300M of your own money).

You can “hold your breath” and wait for someone from Amazon Lumberyard Dev Team to respond, but every single time, they always say “screw off” (in a nice way) and/or “Amazon just doesn’t care”.

That’s the same responses that I received for the past 6+ years, and I believe HeadClot has mentioned these same things over at Crytek’s forums (dating all the way back to least 2008 era maybe?) with no real response from Crytek, and it’s been a feature request for well over 12+ years already, and it doesn’t seem likely that it will ever get added or implemented.

Unreal Engine is your only hope.

Lumberyard doesn’t seem to care about it’s developers, and their “solution” always seems to be the same “do it yourself” and we have no tutorials, no guidance, and “go hire your own development team” and dump $200+ Million into the custom development of CryEngine 3.8.1 (Lumberyard) and hope that the next release of Lumberyard doesn’t break/destroy everything you have done, and you’ll be completely on your own (just like Chris Roberts / CIG/ Star Citizen with no hopes of getting updates or support from the Lumberyard team or Lumberyard devs.

Unreal Engine is your only hope…

and here:

If you disable world origin shifting by switching off “Enable World Origin Rebasing” (flag/checkmark) in World Settings in Unreal Engine.

Also be sure to check/flag/checkmark “Enable World Composition” in Unreal Engine (this is most important) and also turn off/uncheck “Enable World Origin Rebasing”.


Once you do this, you’ll see a Levels Hierarchy (in the Levels window). To open this window, click on the “Windows” menu and then select “Levels”.

The entries in the Levels window represent your World hierarchy.


The level with its name in blue text is the current level. Currently loaded levels will have their names listed in white text, while levels that are unloaded have grayed-out text/names.

To load a level in the world composition, just double-click its name. Using drag-and-drop, you can establish relationships between individual levels. Child levels store position relative to the parent level, so when you change the parent level’s position all child levels will recalculate their position accordingly.

In the Levels window, you can lock and save levels, as well as open the Level Blueprint for each level, with buttons to the right of the level name.

Levels Composition

When Enable World Composition is on, there is a button to open World Composition at the top of the Levels window.


Here, you can see the layout of your world.


By default, all levels are assigned to an Uncategorized layer. Layers hold information about streaming distances, so levels assigned to a particular layer will inherit that streaming distance. Levels assigned to a layer with streaming distance disabled will be excluded from distance streaming, and can instead be controlled using Blueprints.

You can create new layers by clicking the + button to the right of the existing layer names. Each level can only be assigned to one layer at a time.

Layers cannot be deleted or edited, so if you would like to change streaming distance settings, create a new layer with your desired settings and assign levels to it. Layers which have no assigned levels will be deleted automatically the next time you open a level.

You can filter your levels by layer by clicking on the layer name above the minimap. You can toggle multiple layers by using Control+Mouse Click . When there are no layers toggled on, no filtering is performed.


Each level except the persistent level has an image and position in the world, which are displayed in the minimap. The image of the level is updated every time content in the level is changed. This map allows you to preview your world from the top and arrange the position of levels by dragging them. When dragging levels, they will snap to the edges of other levels. Holding the Control key will cause the level movement to use the Level Editor’s snapping settings. Note that level position is stored as integer coordinates, so for exact matching of adjacent level tiles, your levels must have integer bounds sizes.

Levels based on Landscape Actors have snapping based on the base landscape component size. This is done to enable seamless editing between Landscape Actors in different levels.

All Landscape Actors will have transformations disabled in the Editor Viewport to ensure that the landscape cannot be moved by an arbitrary amount and lose its ability to be aligned with other landscape levels.

The first time a level is loaded in World Composition, a new Level Bounds Actor is automatically created in the level. The Level Bounds Actor is used to calculate the size of the level.

By default, the Level Bounds Actor automatically resizes to include all Actors found in the level. However, some Actors, like skyboxes, can have very large bounding boxes, which will result in overly large level tiles in the world minimap. If you have Actors like this that you do not want to include in the level bounds calculations, you can disable automatic level bounds calculations and set a fixed size for the Level Bounds Actor.


Currently, Realtime must be enabled in the viewports for the Level Bounds Actor to function.

The minimap has a yellow square indicating the safe edit area. The safe edit area’s size is equal to the WORLD_MAX constant in the engine. Levels outside of this area will be hidden automatically, and their level images will reflect this. World Composition tries to keep levels you are working on close to the Editor world origin. This feature is called “focusing” and may shift the current world origin to a new position if you begin editing a level outside of the safe edit area. Shifted levels still preserve their Actors’ original transformations when they are saved, so saving a level that is currently shifted will not change the Actors’ absolute positions.

UI Key

Number Status Bar Description
1 Layers Click on a layer name to toggle filtering by that layer, or click on the + to create a new layer.
2 WORLD_MAX Bar indicating the scale of the WORLD_MAX constant.
3 World Origin Current position of the world origin.
4 Current Level Name of the current level.
5 Mouse Cursor Position Current world position of the mouse cursor.
6 Marquee Selection Size of the marquee selection box in the world units.
7 World Size Size of the world, calculated as the sum of all level bounding boxes.

Level Details

To see the details for any level in the Level window, select it and then click on the magnifying glass icon in the toolbar. This will summon the Level Details window, where you can also swap between available levels’ information with a dropdown menu.


Tile Settings

Setting Description
Package Name Package name of the selected level. This information is read-only.
Parent Package Name Package name of the parent level. If the level has specified a parent, its position becomes relative to the parent level.
Position Level offset from the zero world origin, stored as an integer 2D vector. All Actors in the level will be shifted by this value when the level is added to the world (becomes visible), and shifted back when the level is removed from the world (hidden).
Absolute Position Absolute position of the level. This is the same as Position when the level has no parent. This information is read-only.
Z Order Defines Z sorting order of the level tile in the minimap. This can be useful when there are several overlapping tiles and you want to sort them in a specific order.

LOD Settings

Each level in the world composition can have up to 4 LOD streaming levels. LOD streaming levels are similar to mesh LOD. Depending on streaming distance settings streaming level will be replaced with corresponding LOD level. LOD levels automatically discovered by World Composition using pattern [Package name]_LOD#. Where number should be from 1 to 4. LOD levels can be created manually or with automatic LOD map generator.

Setting Description
Num LOD Number of LOD levels for selected level.
Generate Generates simplified version of an original level to merge Static Mesh Actors found in the level into one simplified proxy mesh. Landscape Actors will be converted to Static Meshes using highest landscape LOD. In general, a level with landscape, an Actor, and a bunch of Static Mesh Actors will result in LOD level which contain 2 simplified Static Mesh Actors. This operation will overwrite previous LOD level if it exists on the disk.
Distance Distance relative to original level streaming distance. For example, if original level has streaming distance = 1000, and LOD1 level has distance 1500, then LOD1 level will be visible at [1000…2500] range and original at [0…1000] range.
Details percentage Percent of details to preserve when reducing original meshes.

World Origin Shifting

The World Composition editor supports shifting of the world origin by some arbitrary amount. Shifting the world origin results in adding an offset vector to all registered Actors in the world. Each Actor has an ApplyWorldOffset function which can be overridden in the child classes to do additional things. In case you have created a new AActor derived class and store absolute position values in it, you have to override ApplyWorldOffset function to make it work correctly with world origin changes and shift your absolute values in it. Rendering and physics primitives will be shifted in parallel to Actors in game thread.

Big Worlds and Multiplayer

Right now world origin shifting is not supported in the multiplayer games. Here are two solutions that can be implemented for your specific needs:

  1. Implement your own server solution. MMO licensees mostly do this.
  2. Implement some layer between clients and unreal dedicated servers which will transform shifted absolute positions from the clients and route them to the right dedicated server, which only holds part of the world where client is.

However if you disable world origin, shifting you can run a tiled world with a dedicated server. Dedicated servers will load all distance dependent levels, and each connected client will work as usual loading only level that satisfy streaming distance settings. A server holds a list of visible levels for each client and filters Actor replication by this list.

Creating Landscape Levels

Right-clicking on a level tile to summon the context menu which has a Landscape Actor inside will bring an option for adding adjacent levels with landscape proxy Actors in them. This requires the adjacent levels landscapes have size equal to source Landscape size.

Tiled Landscape Import

In the Levels panel toolbar you can find an option for importing tiled landscape. Tiled landscapes are created from a tiled heightmap, where each heightmap tile will represent a level with a landscape Actor in it. Tiled heightmaps/weightmaps can be exported from an application like World Machine. Adjacent heightmaps tiles should share border vertices (“Share edge vertices” in World Machine). And, each tile resolution should follow the recommendations from this page Creating Landscapes .


Setting Description
Select Heightmap Tiles… Allows you to select multiple heightmap tiles you want to import.
Flip Tile Y Coordinate Whether tiles should be imported with Y coordinate flipped. This option should be turned on when importing tiles created in World Machine.
Tile Coordinates Offset Offset in tiles from origin. If set to zero, tile with coordinates x0_y0 will be created at world origin.
Import Configuration Generates all possible landscape configurations depending on resolution of selected tiles.
Landscape Scale How much to scale the tiled landscape by.
Material Material to use. When a material has be chosen, you will be able to assign weightmap tiles for each landscape layer found in the material and how each layer is blended.

When you have imported a tiled landscape, you can reimport heightmaps and weightmaps for selected levels using the right-click context menu on the minimap.

World Composition User Guide can be found here:

More information about Big Worlds and Multiplayer can be found here: