Unity Summer of Code: Terrain Erosion Tools
I recently submitted a proposal for the Unity Summer of Code program, and was fortunate enough to have my project accepted! My mentor for the project over the next six weeks will be Aras Pranckevičius, the lead graphics programmer at Unity Technologies.
My proposal was to create a set of erosion tools for the Unity Editor to assist users in creating realistic looking terrain directly within the editor, rather than relying on external tools, and simply – for the sake of convenience. My belief here is that for successful and playable level design it is vital to work with the terrain within the context of the game itself – as a landscape that may look fantastic in a third party application may not be very conducive to the gameplay it is intended for.
As a brief overview of the project, here is the abstract and list of key features from my submission. I have until the end of this week to define the exact scope of work for the project, so this feature list may change slightly. Furthermore, Aras has mentioned to me the possibility of having this terrain erosion toolset built into the Unity Editor, so a significant part of my focus on this project will be optimising the code and ensuring that the tools I create are highly intuitive and user friendly.
I’ll post more information both here on my blog and on the Unity Forums as the project progresses.
Erosion tools for realistic terrain generation within the Unity Editor
Abstract: The aim of this project is to provide Unity artists and level designers with a set of intuitive and simple-to-use tools which they can use to create realistic terrain directly within the Unity Editor by adding the effects of natural erosion to terrain objects.
These tools will include a set of ‘wizard’ style filters which will perform erosion on the entire terrain object and a set of brushes which allow the user to erode a smaller section of the terrain with a greater degree of control. Both the erosion filters and brushes will include a selection of different erosion types which can be applied to the terrain object, including thermal, hydraulic, tidal, glacial and wind erosion.
In creating these tools, particular attention will be given to the kind of landforms that create good gameplay and how natural erosion can help to achieve this. For example, a heavily hydraulically eroded terrain will have large areas of flat land, broken up by steep impassable areas, which is vastly more playable and interesting from a level design perspective than a continuous jagged terrain.
An additional tool will be included with the project which will allow users to texture a terrain object by automatically generating splatmaps based on the height and slope of the terrain.
1. Two types of erosion tools: Filters which affect the whole terrain object; and Brushes which affect part of the terrain object and can be applied with a greater degree of control.
2. Various filters and brushes to represent the effects of the four agents of erosion (ice, water, wind and gravity) on terrain objects:
Thermal – Smoothes and flattens inclines in the terrain
Hydraulic – Steepens inclines in the terrain and further smoothes and flattens other areas. Various quality levels:
a. Full hydraulic simulation with sediment map [Filter only]
b. Optimised [Filter or brush]
Tidal – Creates beaches at sea level
Glacial – Carves U-shaped valleys originating from high altitude areas and moving downhill [Filter only]
Wind – Creates windswept, desert-style dunes
3. A filter for smoothing the entire terrain
4. A tool for automatically texturing terrain objects based on height and slope (e.g. snow on mountain tops, rock textures on very steep areas
5. All tools will be designed to be intuitive and optimised and will be well documented and supported
6. An undo tool (A ‘nice to have’ feature – if the editor can support saved buffers of previous terrain heightmaps)