Skip to main content

Species

Species is a group of similar individuals.

While biomes and sub-biomes are groupings of species, species themselves are groupings of spawn-able assets (meshes, blueprints, FXs, lights, decals etc).

In Forest biome you might have species such as:

  • Trees
  • Bushes
  • Forest floor

Those might be even more specific like:

  • Large trees
  • Medium trees

Or even:

  • Conifer
  • Poplar etc.

Growth

Spacing decides how close the two neighboring instances of the same species will be spawned. Depending on the growth mask output, the instances may spawn more sparsly as well.

Growth Mask is a material mask that controls how densely species spawn. When the Growth Mask outputs a value of 1.0 in some region, the species spawns with the highest density (equal to Spacing). When the Growth Mask outputs a value of 0.0 the species doesn't spawn at all.

SpeciesGrowthPanel

Priority

The priority mechanism resolves "collisions" between various species.

Species with a higher Priority grow "over" lower priority species. If a species has Priority Radius larger than 0.0 then it will remove lower priority instances of other species within that radius.

SpeciesPriority

Assets

Species can spawn anything that has an Actor Factory. Typically that's everything you can drag-and-drop from the Content Browser onto the level.

note

Spawning thousands of blueprints is not recommended, because it's hard to work with so many actors in the level.

Static Meshes spawn as instances. Instances are setup using Species Instances Settings.

You can also spawn blueprints as instances by extracting mesh component from a blueprint class.

Drag and Drop

You can quickly add multiple assets by dragging and dropping selected assets or species from the content browser onto a group or a group array. When dragging over a species, it will copy all the assets within it, along with their parameters, into one group.

Instances Settings

image

Used to control settings of spawned assets.

Instance Component Template

This property allows for changing/tweaking the instance component used for spawning meshes.

Very important settings that you set here are shadows, Desired Max Draw Distance and collisions.

Instance Group Size Multiplier

The biomes generate as separate components, but you can group spawned instances from multiple tiles together.

This may affect the performance of your world.

Bigger groups render more efficiently while smaller groups load in smaller chunks during streaming. So the choice is between rendering performance, memory usage and potential streaming hitches.

As bigger groups spawn into a single actor this also effects how development of the map works as only one developer can check-out/lock an actor in the source control.

There's no one size fits all to this setting.

Instances best practices

  • Disable shadows whenever you can.
  • Enable physics only on assets that need collisions. Disable it for all the grass, bushes, small rocks. Having to many objects with collisions streamed-in leads to hitches.
  • Always set Desired Max Draw Distance. Set it to a distance from which you shouldn't see the species anyway. It's one of the most important settings! It can do wonders for optimization.
  • Use Density Scaling on objects that can gradually disappear with distance.
    1. Set Instance Start Cull Distance to when assets should start disappearing
    2. Set Instance End Cull Distance to when assets stop being visible
    3. Set Desired Max Draw Distance to just a bit more than Instance End Cull Distance.

Asset Groups

A species may have its assets split into multiple groups.

Groups allow you to spawn different set of assets depending on the Asset Group mask output.

Groups Example

You could have Trees species that contains groups such as:

  • Large Trees,
  • Medium Trees
  • and Small Trees.

You could then use a mask to spawn smaller trees on the edges of the trees growth regions.

Asset Group Mask

Asset Group material mask should output values between 0 to 1. Created Asset Groups are spaced evenly between 0 and 1 based on how many groups you have.

Meaning that if you have only 1 asset group. Then it doesn't matter what value your mask outputs.

If you have 2 asset groups the values below 0.5(1/2) select the first asset group and values higher than 0.5 select the second asset group.

Mask < 0.5Mask > 0.5
first groupsecond group

If you have 3 groups the values below 0.333 (1/3) select the first group, values between 0.333 and 0.666(2/3) select the second group and values higher than 0.666 select the third group

Mask < 0.3330.333 < Mask < 0.666Mask > 0.666
First GroupSecond GroupThird Group

Asset Probability

Each asset in an asset group has an Asset Probability which tells how often you want this asset to spawn compared to other assets in the same species.

info

If you have only 2 assets, with spawn probability of 1.0 and 0.5, it has the same meaning as two assets with probability of 0.666 and 0.333. The probabilities don't need to sum to one.

Simply give higher values to assets that you want to spawn more often and lower values to the ones you want to see less.

Runtime/Offline Spawning

There are two mechanisms for spawning objects - Offline and Runtime.

  • Offline Spawning places instances during the generation process in the Editor.
  • Runtime Spawning places instances dynamically in game/editor, around the camera.

You can choose which mechanism to use for each species using the Runtime Spawning property in Instances Settings or you can set this property to Auto.

RuntimeSelectionImage

Offline Spawning

Offline spawning allows for more optimization techniques such as HLODs. That's the mode you want to use for objects like trees or big rocks.

Runtime Spawning

Runtime Spawning allows for spawning dense objects like grass or small rocks. It allows you to spawn instances more densly as you only store some of them in the memory/disk at any given time. That's the mode you want to use on species like grass or a lot of small rocks.

When using runtime spawning Desired Max Draw Distance setting inside Instance Component Template decides when instances should spawn.

If that setting is missing Instance End Cull Distance is used. If that is missing some default fallback value will be chosen.

Setting this value too high will lead to performance problems. You should set it as low as possible in your scenario.

Both modes work with streaming, but Runtime Spawning streams-in and out the spawner actors and then generates instances near the camera.

Offline Spawning relies only on streaming. With correct streaming setup you could achieve a similar memory (RAM) usage with Runtime and Offline spawning, but disk usage would be much higher in the Offline case.

If you're still unsure which mode to use leave species in Auto mode

Transforms

You configure transforms that are applied to your instances in the Transforms properties.

Here you can select how landscape affects the instances' rotation, apply offsets and randomness to instances' transforms.

You can control the scale of the instances procedurally, by using a using a Scale Mask material.

SpeciesTransformsImage

Rotation Mask

The rotation mask allows you to procedurally set spawned instances' rotation. This rotation will be applied on top of the other rotation you specify, like Random Rotation.

Values in this mask represent full-circle rotation. So the value of 1 means full circle and the value of 0.5 will mean 180 degrees. This value range was chosen instead of full degrees to allow easier control through masks and noise.

ConicalRotationMask

Species Templates

When creating species, a list of template options is provided to you as a starting point. If you wish, you can also include your own templates by adding a folder where you keep your templates in the project settings.

Any species can be used as a template without any additional work.

Configuring Templates Directory

Open Project Settings and go to the Errant Biomes section inside of the Plugins Category.

RuntimeSelectionImage

Inside the Templates Category, there is a Project Templates Directories array where you can add directories that will be scanned for species to be used as a template.

RuntimeSelectionImage

Add a directory where you wish to store templates.

RuntimeSelectionImage

Place species you wish to use as a template in the previously configured directory.

RuntimeSelectionImage

Now every time you create a new species, you will be provided with templates you put in that directory

RuntimeSelectionImage

Runtime Scalability

You can control density scaling(how densely are instances spawned) of runtime spawned species by either grass or foliage scalability settings.

You choose it per species in instances settings Runtime Density Scaling property.

runtime density scaling property

tip

Already spawned instances aren’t respawned when CVars change. To force regeneration and view your changes, you can use the biomes.rt.Reset command.