Terrain workflow: Iterative improvements of generated terrain

Hi there,

we’re currently working on the terrain for our game’s first map (targeting a modern-age environment, so including streets, cities, parking lots etc.). As a starting point, we have the level designer’s basic layout for how the map should look like - big geometric features like mountains or lakes, rough shorelines, major points of interest (villages etc.) and connections between them.

Starting from this baseline, we would now like to generate a detailed terrain, obviously with as little manual effort as possible. Still, we want to be able to manually tweak certain things like flatten an area, or apply a specific texture to it. We also need precise control over street layout inside cities.

We are currently experimenting with various assets (MapMagic, GAIA, EasyRoads, …) looking for a workflow to use our rough guideline to get a generated terrain that still allows us adjust it manually where required. We often run into hard cuts here, e.g. “You need to make sure that the terrain generation is done and you’re happy with it before baking in any roads, because they will be gone if you regenerate”. This obviously makes iterative work on the map very hard. What is your workflow to combine automatic and manual work on terrains? Bonus points for an integrated solution for roads / streets in- and outside of cities.

Thanks!
Daerst

Some addition to terrain tools could be some mask to prevent changing some places with objects like roads or houses if a new terrain generation is needed.

Anyway, if your re generate your whole terrain after you started manually adding places and roads something is wrong with your methodology.
When you start manual work is because you’re happy with the terrain global look, you should not start detailing until the general terrain shape is ok. Once the global shape is ok you can still manually tweak some terrain parts without needing another full terrain generation.

Imagine Uncharted 4 level designer starting blocking the outdoor , and after lot of hours of manual work and detailing, he decides to change the whole level design lol
Until all texturing, roads, houses and all details would be generated proceduraly by tools like last game Ghost Recon; they can’t afford to do another full level detailing pass. They first work a lot on the general shape of the level before considering doing manual work.

Take a look at 34:10 how it would work with procedural tools

https://www.youtube.com/watch?v=kzthHcbG9IM

Thanks for your reply, the video looks like it could provide some very valuable insights!

Of course I’m not looking to change the whole terrain later on, but all we have for now on paper is a draft of the high-level map layout. We created a rough heightmap from this and would now like to start working in details in the north-western corner, including manual tweaks, placement of foliage and geometry. Still, the south-eastern corner might still be changed. So far, we have not found a workflow that facilitates these iterative improvements.

Gaia or Terrain Composer 2 allow you to work on an existing terrain and modify only the part you want with new height map stamps you drag on parts you need to modify.

This is a really interesting topic and improving the workflow for generating large worlds with terrains, roads and buildings was the main source of inspiration for CityGen3D, which is a scene generation tool I’m working on.

So I’ll be interested to hear people’s thoughts on this too, as its something I’m essentially trying to help with.

The approach I’m taking in CityGen is to make everything data driven. So you change your scene by changing rules and conditions and have Unity generate your actual world for you.
In other words, the data that defines your scene and the scene itself are two distinct parts and the iterative process occurs from changing the input (via a UI) and not with the scene itself.
So as a designer, you can play around with different data sets and inputs and not worry about the actual scene geometry which can be rebuilt at any time autoatically from your data.

For example, if you had a road a mile long in your scene and suddenly decided it should be a six lane highway, this could be a real pain if you had to re-adjust your terrain and road geometry manually.
With CityGen, the idea is that you would just click the road on a map, change lanes to “6” and have it rebuild the scene for you.

Same with different biomes. What if the beach was a swamp, or the meadow was actually a pond? Instead of manually making those adjustments, changing textures and placing vegetation, you define what each biome should look like via a UI, and simply select it for particluar areas of the map via a drop-down.

Initially I’m using real world data as the input, but the idea is that you would be able to design your own map from scratch within Unity eventually. So you could draw your own road networks in 2D to create your own fictional city.

Another advantage of this data driven approach is that when you get round to implementing AI (such as road traffic), you already have a data set to use that doesn’t have to be defined over the top of your geometry.

CityGen is still work-in-progress ( [RELEASED] CityGen3D | Procedural city generation from map data ), so I’m very interested to hear about people’s current workflow headaches when building big cities & landscapes, and how they would like to see them get fixed.