top of page
Search

Horizon Zero dawn open world environment generation - Research and notes

  • Writer: Soleil D'or
    Soleil D'or
  • Jan 5, 2025
  • 12 min read

I am currently working on a project to use the new PCG (procedural content generation) framework, which was added to Unreal engine 5.2 to create a too to procedurally generate (somewhat) realistic environments, inspired by Horizon Zero dawn.


For this project I of course had to start with doing quite a lot of research to understand both how Horizon Zero dawn structured the generation, biome transitions and level design of its environments, but also how nature is in the real world, to use both as references to understand how to create realistic open-world environments.


Research question

Through this research, I hope to understand what considerations developers held while creating the environments of HZD to hold the same consideration when creating my own tool. I hope to understand how their procedural tools worked and what important features were part of it. My research question is as follow: “How did Horizon Zero Dawn create distinct biomes that blend seamlessly both with each other and with other hand-placed content, to deliver a cohesive player experience?”. I have divided this research question into 3 other sub-questions, as seen on the diagram below. I believe that answering each of those individual sub-questions will give me a strong understanding of the different aspects and features that go into creating a procedural environment tool.

Glossary

-   HZD = Stands for Horizon Zero Dawn, as it is quite a lengthy name and is used very frequently throughout my research I decided to only use initials to be more efficient

-   Ecotopes = An ecological habitat on the scale of individual organisms sharing space. Could also be referred to as a Biome.

-    POI = stands for “point of interest” and refers to a hand-crafted area that will be of interest to the player, whether it has loot or story/questlines significance.

-    Hero assets = Hero assets are used to anchor the feeling and visual identity and used as “main” pieces of content that set the pace. Other assets will try to follow the hero asset.


How do the biomes blend and transition naturally ?


Introduction

I wish to investigate biome transitions in order to improve the procedural generation of my tool, so that it would be capable of creating more natural environments and blend the biomes in a way that looks and feels natural to the player. Horizon zero dawn has a large range of biomes and I have never really felt like they were out of place because of how seamless most of the transitions were done from one biome to the next.


Data

HZD uses mainly ground material gradients and different types of grass to create the biome transitions. This allows for a more subtle and gradual transitions in areas with no trees.

As seen on the right image above, the fern/brown grass transitions to a more white/snowy grass the higher it goes.


I have also noticed that most assets have alternative “snowy” models, which help create more realistic transitions to colder, snowy biomes. Like for example the two trees shown to the left. They are the same asset but one is covered in snow. This is something that is repeated for rock assets, or even others like broken tree trunks. This allows to extend a certain biome into the snowy area and slowly transitioning it. It is also more realistic.

 

 

 

The longer I have spent investigating those biome transitions, the more I realized that all of them were not as smooth, some transitions are actually very abrupt as seen on the images below:

The separation is very clear and is made even more visible as those two biomes have very contrasting color palettes and flora. Players can very easily see the separation between the two as a line on the ground. This clear case of transition however also highlights something else: we can see that the undergrowth vegetation stops almost a meter before the actual end of the biome, there are also ne trees on the border either. The flora slowly transitions to only green grass before finally transitioning into the new desert biome.


After realizing how abrupt biome transitions could be, it prompted me to wonder how come, as a player, I never noticed it before (despite having played through the game multiple times)? Which led me to see the “techniques” HZD uses to help poor biome transitions not stand out to players:

Making use of roads, cliffs, rivers, and other gameplay spaces/elements allows the developers to “hide” those biome transitions by redirecting player attention and focus on the gameplay spaces they have overlaid on top.


From the beginning of the game, players are trained to see the landscape and analyze it in terms of playspaces as they traverse the world of HZD. Paths and roads are often the safest points as there are rarely any machines on them, rivers are difficult to traverse because players will have to swim, rendering them vulnerable as they cannot fight, and cliffs completely stops players from going further because of the threat of fall damage. Because of those considerations, players look at their environments in terms of play spaces rather than biomes. The nature around them ends up becoming more of a backdrop and therefore they are a lot less susceptible to paying any attention to rough biome transitions as they are so wrapped up in the game loop and the traversal of said environment.


Conclusion

In conclusion, Horizon’s biome transitions are quite rough and unnatural in most places but players hardly ever notice them because of some clever tricks the level designers used that relied on overlaying gameplay spaces and elements on top of the transitions. Those gameplay spaces takes the attention of the player away from the biome transition and lets it sit more as a background visual.


take-aways

Level design is connected to biome transitions and in order to create smoother transitions I should always aim to have some sort of gameplay space overlaid on top of the gradient from one biome to another. This isn’t really something that I can implement in my tool, but rather use in my demo level if I have the time. So horizon’s tool doesn’t seem to have a particular way of handling biome transitions, except when it comes to transitioning to a snowy biome. I have seen that a lot of assets have a snowy variation, allowing to create a transition to a colder biome with the landscape elevation. This is going to depend on the asset packs I get my hands on, but it could be nice to give biomes the ability to change based on the elevation, having snowy variations of some of the assets, the higher we go.


Sources

All in-game screenshots taken by me using the in-game photo mode.


‌Horizon Zero Dawn Interactive Map | Map Genie. (n.d.). Mapgenie.io.


 

How does the environment adapt to paths and rivers?


Introduction

I wish to investigate how the environment adapts to paths and rivers as this is something that I hope to implement in my tool. I am curious to see how, especially rivers find their place in a biome, and how to make them as realistic as possible. I expect paths to be more simple but I still want to research what kinds of considerations I should have when making my path tool to get it as close as HZD’s system as possible.


Data

Rivers are more complex as it depends on the biome to some extent, but most of the observations are consistent:

River banks are often very rocky, sometimes made exclusively of rocks, as if the river had carved through the boulders and made its own path. This is something that is also very accurate to real-life rivers, which are formed through eroding the landscape overtime. Through this process, some larger boulders and rocks are detached and carried by the current which is why there are also a lot of loose rocks in and around rivers. (see National Geographic. (2023) for more) While the look of rivers is very accurate, their placement and structure on the map are not as realistic. In Horizon, most rivers (not all of them) start in the snowy mountains and eventually flows back to the ocean, but there are no deltas, the lake placements are also not geologically accurate and lastly the rivers sometimes form very unrealistic shapes or split in opposite directions, which seems to be done more for gameplay considerations rather than trying to create realistic environments.


In addition to rocky banks, rivers also house their own ecosystem, very specific plants will populate river banks like reeds for example. There are multiple types of plants that will slowly transition from upland plants, to fully submerged ones, as shown on the diagram to the left. HZD shows some consideration of that, but in a much more simplified version than what is described in the diagram to the left.



Paths on the other hand are pretty straight forward, they really are simply marked by the lack of vegetation and grass. Sometimes they also have a different material than the environment around them but most often than not it is the same. Which has also led me to realize that ground materials are usually some sort of dirt, rather than a grassy/mossy material, which makes paths look a lot more natural.

Paths seem to have varied width and “consistencies”. Lower consistencies mean that the edges of the path are less clearly defined and the width varies as such (as seen below).

Larger ‘main’ paths also indent the landscape to really show how frequently they have been used (see left-most image), this is a good way to add environmental storytelling to something as simple as a path.

Some paths also feature some rocks or branches on top to add more texture to them instead of just having the flat ground material. Moreover, paths seem to create an indentation in the landscape, which can also show how much they have been used as each person walking on it displaces a little bit of dirt, which overtime leads to having the path dig into the terrain a little bit.


Conclusion

In conclusion, the appearance of rivers as well as where and how they flow originate from how they were created and how they slowly eroded and sculpted the landscape overtime, their banks are often quite rocky and house their own distinct ecosystem and plants. Paths on the other hand seem quite straight forward, they are marked by a lack of vegetation, and vary in width, consistency, and depth, often simply exposing the ground material and featuring very little details (pebbles, branches..etc).


take-aways

There are a lot of parameters to take into consideration to make realistic rivers, from how rocky its banks can be, what plants grows next to it, where it flows, where it starts and ends… etc which will also vary depending on the biome in which it is. This means rivers will be a lot more complex to implement and probably should be only considered a (big) stretch goal. There really is a lot more that goes into the river system than I thought.

Paths on the other hand seem quite simple to implement and will be incorporated the same way in every environment, some worldbuilding can also be added to a path by tweaking its width, depth, and consistency to show that it might have been used more or less. Paths should also not require a special ground material and they simply expose the material of the surrounding biome.


Sources



How are the forest biomes structured ?


Introduction

I wish to investigate how forest biomes are structured to understand how to make them look in my tool, what kind of plants there are, how many different types, how dense are they, how are trees…. Etc. My tool aims to create realistic environments, and as such I need to study real environments as well, so I will be trying to also use real-life forests and ecotopes as a reference. As a reference point for this research I will be using the basic forest biome in horizon, which is commonly found all over the early-game areas (see image below).

Data

Understory/forest floor – There is sparse grass on the forest bed, it does not fully cover everything and is quite ‘patchy’, some areas of the forest do not have ANY grass, players can just see the ground material which serves to add detail, there are a few patches of small plants covering some ground however (see second image). In terms of other small vegetation there is many fern variations and other types of small plants. There are also a bunch of patches of tall grass for the player to hide in, which are spread around in varying size. There are a few small trees and saplings dotted around, they are very sparse. There are a few taller trees, which are in-game resources for players to harvest for sticks.


Trees – I have found 3 main types of trees in the HZD biome, there are “hero trees” which are larger and more detailed and used to set the tone of a biome (The emergent layer), there are secondary trees which are just regular, medium sized trees to fill the space (canopy), and lastly there are smaller, younger trees which are often at the edge of the biome to ease the transition. 

The notion of Hero trees refers to the emergent layer, while the canopy layer is more of the ‘regular’ trees, this creates a forest profile of varying height and density.


Forests are horizontally structured into a mosaic of different canopy densities and gaps. Because light is limited within most forest systems, variation in foliage density plays important roles in regeneration and understory development.” (Forest structure: A key to the Ecosystem, Spies, 1998)


I think this sketch I made illustrates the previous quote, that basically, grass patches exist on the forest floor where gaps are in the canopy. Light is an important resource in a forest and often the trees will block most of it. This is why when there is a gap, which allows sunlight to reach the forest floor, a patch of grass and undergrowth will develop.


Miscellaneous – Some added details on the ground of the forests are, broken tree trunks, branches, leaves, small rocks… etc being placed on the ground to add realism and make this biome feel more real and living.  Through my research I actually learned that dead trees seem to have a very important part of the forest ecosystem and is tied with the history of disturbances a forest has lived.

Surprisingly, in HZD there does not seem to be bigger rocks being part of the generation, it seems like bigger rocks (ones large enough for players to take cover behind them or mantle over) are not part of the same tool, they are either hand-placed, or part of the terrain generation tool, as highlighted in the GDC talk demonstration (GPU-Based Run-Time Procedural Placement in Horizon: Zero Dawn, n.d.).

Each biome is very different to the other based on the ecotope, research should be done for each individual biome someone aims to recreate. Some biomes may have a lot less or more undergrowth or more or less variation in the flora. A single biome might also change based on the terrain, if there is a river nearby, based on how high it is, if there is a beach…etc Those are things to watch out for and where additional research will be needed to ensure higher levels of fidelity. A good rule of thumb when it comes to biomes is that the drier the climate is, the less trees and large flora there is, it becomes only sparse grass or small shrubs.


Conclusion

While every biome and ecotopes are different from one another, most of them share similar structure with the emergent layer, canopy layer, and undergrowth layers. Some biomes have a large variety of plants and trees to make up a biome, while some others rely on only a few plants to make up the ecotope. A general rule however is that the vertical structure of forests are quite important and often offers a lot of horizontal canopy density variation


take-aways

I should have visual reference or study individual biomes that I aim to recreate to ensure that I replicate them properly, there is more variation that you might think! Most forests also have a surprising low amount of grass on the floor, the ground material is a lot more exposed than you might think, it is therefore crucial to get the right material. It is important also to no forget about miscellaneous assets like broken branches, leaves, rocks…etc because they add a lot of realism to the scene. So in terms of my tool, I made a mind map on the right that breaks down the different components that I would need to generate in order to make a realistic forest. They are split into two categories, being trees and undergrowth. It is important to have a varied canopy height, some trees should be bigger than others. The undergrowth should be spawned in patched and clearings. The undergrowth is also constituted of a variety of different plants and grasses. I think it will be difficult for me to have as much variety in terms of the trees because it would require me to install many different asset packs, but I should structure my tool in a way that would allow for that, if I had the right assets.


Sources

Forest Canopy - an overview | ScienceDirect Topics. (n.d.). Www.sciencedirect.com. Retrieved October 4, 2023, from https://www.sciencedirect.com/topics/agricultural-and-biological-sciences/forest-canopy

Heather J. Johnson. (2023, May 16). Rainforest | National Geographic Society. Education.nationalgeographic.org; National Geographic Society. https://education.nationalgeographic.org/resource/rain-forest/

Spies, T. A. (1998). Forest structure: A key to the Ecosystem [Review of Forest structure: A key to the Ecosystem]. 72(2), 34–39. Washington State University Press. https://andrewsforest.oregonstate.edu/sites/default/files/lter/pubs/pdf/pub2564.pdf

GPU-Based Run-Time Procedural Placement in Horizon: Zero Dawn. (n.d.). Www.youtube.com. Retrieved January 12, 2024, from https://youtu.be/ToCozpl1sYY?t=1092



Extra resource I found interesting but did not use:



 
 
 

Comments


bottom of page