---
# System prepended metadata

title: 'Milestone 2: Terrain Variations'

---


Develop software package for defining in-game procedural Biomes.

Biome consists of:

* a Procedural Terrain Graph
* associated MicroSplat Terrain material

Software architecture must be open for defining further features, (but not included in the Milestone 2):

* Vegetation
* Procedural Fog Areas
* Soundscapes
* Weather Particle Effects

### Biome Asset

Create a type of [*ScriptableObject*](https://docs.unity3d.com/Manual/class-ScriptableObject.html) asset for Unity Engine to define a Biome.

Such Asset, when created will host a TerrainGraph sub-asset, making it available to use with Vista Terrains.

In addition to the TerrainGraph sub-asset, it will define a set of serialized fields.

Fields will be defined as following:

* Biome Name - Name of the Biome, making Biome more readable for the Developers.
* MicroSplat Material.

Any additional Prefabs, configurations associated with the Biome will also be referenced in the Biome Asset.

To create a Biome Asset there must be a Context Menu "Assets -> Create -> Biome Asset".

There will be an Inspector button to create a MicroSplat material if none was provided.

Note that MicroSplat properties might be overriden by the Biome, so there is a restriction of one Material per Biome.

### Editor Tools for Biome Authoring

By clicking the "Edit" button in BiomeAsset Inspector, will open pre-defined set of scenes:

* TerrainEditingScene - this scene will be populated with a default terrain grid
* VistaManagers - this scene is reused as common hub for all things related to Vista and third-party integrations

The Biome will be loaded in the **TerrainEditingScene**.

We can reuse the same Runtime API internally for creating Terrains in Editor.

![](https://hackmd.io/_uploads/BJOWPl_j3.png)

### Runtime Biome Loading

#### Vista Integrations

To facilitate the Vista third-party integration process, we will store VistaManager and ProceduralAsset along with all required third-party integration script setups in a separate Scene.

This Scene will be loaded Additively and used for runtime creation of any Biome.

#### API

The `ITerrainGenerationContext` interface must be extended to accept said Biome Assets for generation.

```csharp
interface ITerrainGenerationContext { 
	/// <summary>  
	/// Add Biome to the terrain generation context.  
	/// </summary>  
	/// <param name="biome">Biome Asset.</param>  
	ITerrainGenerationContext AddBiome(BiomeAsset biome);
}
```

### Prototype Biomes

Produce a list of prototype biomes:

• Desert https://gamepedia.cursecdn.com/zelda_gamepedia_en/thumb/a/af/BotW_Gerudo_Desert.png/1200px-BotW_Gerudo_Desert.png
• Mountainous https://static1.thegamerimages.com/wordpress/wp-content/uploads/2022/03/Best-Mountains-In-Video-Games-Feature-Image.jpg
• Ocean (Islands) https://www.tourhero.com/en/magazine/wp-content/uploads/2020/12/Exploring_Tsushima_The_Real_World_of_Ghost_of_Tsushima.jpg
• Temperate (Rolling Hills) https://static.wikia.nocookie.net/ninokuni/images/2/27/NNK_Screenshot_3.jpg/revision/latest?cb=20120724185416
• Glacial https://miro.medium.com/v2/resize:fit:1200/1*xpRqkqFuUngAIG8uIlCeZw.jpeg
• Lunar https://cdn.mos.cms.futurecdn.net/xe2iSVqkSEHykUkyAVsPFg-1200-80.png
• Volcanic https://i.redd.it/e0yxx5mvaxo51.jpg

Each Biome must visually resemble the thing it would represent in similar game worlds.

Each Biome must have a walkable space of at least 60% of total above-sea coverage. As defined by a standard 1.8m height, 0.5 diameter Agent.

The Contractor is allowed to use third-party assets, such as Textures, Stamps and Models to enhance visual experience.

The Contractor is allowed to use compatible third-party assets such as Visual Effects, Fog Packages to demonstrate integration possibilities of the provided Biome software package.

The Contractor is required to list all used third-party assets along with links to where they could be purchased.


## Documentation

Provide documentation for the Biome Asset:

* How to create Biome Asset.
* How to load Biome Asset at runtime and generate Terrains.
* How to work with the VistaManager and define third-party Integrations.

Provide documentation for Authoring a Biome:

* How to open biome for editing
* Notes on persisting changes made to Biome
* How to preview changes in the Biome
* How to define and use a MicroSplat material for the Biome.

Provide Examples for:

* Loading Biome from prototype list at runtime with a default first-person Character Controller

## Budgets

* Biome Asset - $100
* Runtime Biome Loading - $150
* Editor Tools for Biome Authoring - $130
* Each completed Prototype Biome - $80. (together $560)
* Total $940
