We recommend using the Thunderstore Mod Manager or an alternative for installing mods
This mod allows adding new biomes and changing most of the world generation.
Last updated | a week ago |
Total downloads | 891 |
Total rating | 2 |
Categories | Misc Server-side Client-side |
Dependency string | JereKuusela-Expand_World-1.3.0 |
Dependants | 5 other mods depend on this mod |
BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.
Preferred version: 5.4.1901This mod allows adding new biomes and changing most of the world generation.
Always back up your world before making any changes!
Install on all clients and on the server (modding guide).
For example you can create entirely flat worlds with only Meadows for building. Or group up colder biomes up north while more warmer biomes end up in the other side. Or just have a world with terrain shapes no one has ever seen before.
The mod supports live reloading when changing the configuration (either with Configuration manager or by saving the config file). This can lead to weird behavior so after playing with the settings it's recommended to make a fresh world.
Note: Pay extra attention when loading old worlds. Certain configurations can cause alter the terrain significantly and destroy your buildings.
This mod can be used only on the server. However only following files can be configured:
expand_events.yaml
: Fields enabled, duration, nearBaseOnly, biome, requiredGlobalKeys, notRequiredGlobalKeys, pauseIfNoPlayerInArea, random.expand_locations.yaml
: Only normally available or disabled prefabs can be used.expand_vegetation.yaml
: All fields.expand_world.cfg
: Only setting Location multiplier.When doing this, enable Server only
on the config to remove version check.
expand_biomes.yaml
. If this makes no sense then you can most likely skip this step.expand_biomes.yaml
by 255 (range changed from 0-255 to 0.0-1.0). If you haven't changed biomes then you can just delete file to regenerate it. Old values still work so this step can be skipped.expand_biomes.yaml
.The size can be increased by changing the World radius
and World edge size
settings. The total size is sum of these (default is 10000 + 500 = 10500 meters). Usually there is no need to change the edge size.
The world can be stretched with Stretch world
setting. This can be used to keep the same world but islands and oceans are just bigger. This will also make biomes bigger which can be further tweaked with Stretch biomes
setting (for example using 0.5 biome stretch with 2 world stretch).
The amount of locations (like boss altars) can be changed with Locations
setting. This can significantly increase the initial world generation time (especially when the game fails to place most locations). If changing this on existing worlds, use genloc
command to distribute unplaced locations.
Note: 2x world radius means 4x world area. So for 20000 radius you would need 4x locations and for 40000 radius you would need 16x locations.
Note: If the game fails to place the spawn altar (for example if no Meadows), then it is forcefully placed at the middle of the map. With bad luck, this can be underwater.
The minimap size must be manually changed because there are two different settings. Both of the settings increase the minimap size but have a different drawback. Minimap size
significantly increases the minimap generation time while Minimap pixel size
makes the minimap less detailed.
Recommended settings:
Example generation times:
Note: The minimap is generated on the background. This is indicated by a small Loading
text on the upper right corner.
Note: Changing Minimap size
resets explored areas.
For the altitude, there are two types of settings: * altitude delta
and * altitude multiplier
. The multiplier multiplies the distance to the water level (by default at 30 meters). So increasing the multiplier will make water more deeper and other terrain higher. The delta directly affects the altitude. For example positive values will make the underwater terrain more shallow.
The formula is: water level + (altitude - water level) * multiplier + delta
.
For the total altitude there are three layers:
Amount of forest can be changed with Forest multiplier
.
The layout of the world is pre-determined, and each world is just a snapshot of it. The world can be manually moved in this layout with Offset X
(to west) and Offset Y
(to south) settings.
Each biome adds some height variation on top of the base altitude. This can be controlled with Height variation seed
setting.
This mod provides additional configuration files (.yaml) that can be used to change most world generation related data.
These files are generated automatically to the config/expand_world
folder when loading a world (unless they already exist).
Each file can be disabled from the main .cfg file to improve compatibility and performance (less network usage and processing when joining the server).
All files with the same start will be loaded. For example both expand_biomes.yaml
and expand_biomes_custom.yaml
would get loaded to biomes.
The file expand_biomes.yaml
sets available biomes and their configuration.
You can add up to 22 new biomes (on top of the 9 default ones).
1.0
): Changes how quickly the terrain altitude affects the map color. Increasing the value can be useful for low altitude biomes to show the altitude differences better. Lowering the value can be useful for high altitude biomes to reduce amount of white color (from mountain altitudes). Negative value can be useful for underwater biomes to show the map color (normally all underwater areas get blueish color).The file expand_world.yaml
sets the biome distribution.
Each entry in the file adds a new rule. When determing the biome, the rules are checked one by one from the top until a valid rule is found. This means the order of entries is especially important for this file.
1000
meters): Maximum terrain height relative to the water level.-1000
meters): Minimum terrain height relative to the water level.1.0
of world radius): Maximum distance from the world center.0.0
of world radius): Minimum distance from the world center.0.0
of world angle): Start of the circle sector.1.0
of world angle): End of the circle sector.0.0
of world radius): Moves the distance center point away from the world center.0.0
of world radius): Moves the distance center point away from the world center.1.0
of total area): How much of the valid area is randomly filled with this biome.1.0
): Same as the Stretch biomes
setting but applied just to a single entry. Multiplies the size of biome areas (average total area stays the same).
): Overrides the random outcome of amount
. By default derived from the world seed.true
): Applies "wiggle" to the minDistance
.true
): Applies "wiggle" to the maxSector
and minSector
."Wiggle" adds a sin wave pattern to the distance/sector borders for less artifical biome transitions. The strength can be globally configured in the main .cfg file.
Sectors start at the south and increase towards clock-wise direction. So that:
Note: Of course any number is valid for sectors. Like from 0.37 to 0.62.
Note: The world edge is always ocean. This is currently hardcoded.
The file expand_environments.yaml
sets the available weathers.
false
): The first default environment is loaded at the game start up. No need to set this true unless removing from the Clear environment.false
): If true, is considered to be raining.false
): If true, causes the freezing debuff.false
): If true, causes the freezing at night.false
): If true, causes the cold debuff.false
): If true, causes the cold at night.false
): If true, causes constant darkness.0.0
): The minimum wind strength.1.0
): The maximum wind strength.0.0
): ???.0.3
): ???.0.01
): ???.1.2
): ???.0
): ???.60
): ???.Note: As you can see, lots of values have unknown meaning. Probably better to look at the existing environments for inspiration.
The file expand_clutter.yaml
sets the small visual objects.
true
): Quick way to disable this entry.80
): Amount of clutter.false
): Way of rendering or something. Might cause errors if changed.true
): Only on uncleared terrain.false
): Only on cleared terrain.1.0
): Minimum scale for instanced clutter.1.0
): Maximum scale for instanced clutter.10
degrees): Maximum terrain angle.-1000
meters): Minimum terrain altitude.1000
meters): Maximum terrain altitude.false
): Placed at water level instead of terrain.false
): Rotates with the terrain angle.0
meters): Moves the clutter randomly up/down.0
meters): Minimum water depth (if different from max).0
meters): Maximum water depth (if different from min).false
): Only in forests.0
): Minimum forest value (if only in forests).0
): Maximum forest value (if only in forests).0
): Scale when calculating the fractal value.0
): Offset when calculating the fractal value.0
): Minimum fractal value.1
): Maximum fractal value.The file expand_locations.yaml
sets the available locations and their placement.
See the wiki for more info.
Locations are pregenerated at world generation. You must use genloc
command to redistribute them on unexplored areas after making any changes. For already explored aresa, you need to use Upgrade World mod.
true
): Quick way to disable this entry.0.0
of world radius): Minimum distance from the world center. Values higher than 1.0 are considered meters and are automatically scaled with the world radius.1.0
of world radius): Maximum distance from the world center. Values higher than 1.0 are considered meters and are automatically scaled with the world radius.0
): Minimum altitude.1000
): Maximum altitude.false
): Generated first with more attempts.false
): Generating is attempted at world center, with gradually moving towards the world edge.false
): When placed, all other unplaced locations are removed. Guaranteed maximum of one instance.minDistanceFromSimilar
.0
meters): Minimum distance between the same location, or locations in the group
if given.false
): Location icon is always shown.false
): Location icon is only shown when the location instance is actually placed.false
): Randomly rotates the location (unaffected by world seed).false
): Rotates based on the terrain angle. For example for locations at mountain sides.false
): Placed at the water level instead of the terrain.0
meters): Minimum nearby terrain height difference.10
meters): Maximum nearby terrain height difference.false
): Only in forests.0
): Minimum forest value (if only in forests).0
): Maximum forest value (if only in forests).The file expand_vegetations.yaml
sets the generated objects.
Changes only apply to unexplored areas. Upgrade World mod can be used to reset areas.
false
): Quick way to disable this entry.1
): Minimum amount (of groups) to be placed.1
): Maximum amount (of groups) to be placed. If less than 1, has only a chance to appear.false
): ???.1
): Minimum scale.1
): Maximum scale.0
degrees): Random rotation.0.0
): Chance to set rotation based on terrain angle.true
): Requires clear ground.0
meters): Minimum terrain altitude.1000
meters): Maximum terrain altitude.0
meters): Minimum ocean depth.0
meters): Maximum ocean depth.0
degrees): Minimum terrain angle.90
degrees): Maximum terrain angle.0
meters): Radius for terrain delta limits.0
meters): Minimum terrain height change.10
meters): Maximum terrain height change.false
): Placed at the water level instead of the terrain.0
meters): Placed above the ground.1
): Minimum amount to be placed at the same time.1
): Maximum amount to be placed at the same time.false
): Only in forests.0
): Minimum forest value (if only in forests).0
): Maximum forest value (if only in forests).The file expand_spawns.yaml
sets the spawned creatures.
See the wiki for more info.
false
): Quick way to disable this entry.100
%): Chance to spawn when attempted.1
): Minimum creature level.1
): Maximum creature level.-1000
meters): Minimum terrain altitude.1000
meters): Maximum terrain altitude.true
): Enabled during the day time.true
): Enabled during the night time.10
meters): Distance to suppress similar spawns.40
meters): Minimum distance from every player.80
meters): Maximum distance from any player.1
): Minimum amount spawned at the same time.1
): Maximum amount spawned at the same time.3
meters): Radius when spawning multiple objects.0
degrees): Minimum terrain angle.35
degrees): Maximum terrain angle.true
): Enabled in forests.true
): Enabled outside forests.0
meters): Minimum ocean depth.0
meters): Maximum ocean depth.false
): Spawned creatures are more aggressive.0.5
meters): Spawns above the ground.0
meters): Distance from the world center to enable higher creature levels. This is not scaled with the world size.The file expand_events.yaml
sets the boss and random events.
See the wiki for more info.
false
): Quick way to disable this entry.60
seconds): How long the event lasts.true
): Only triggers when near 3 player base items.true
): The event timer pauses if no player in the area.true
): The event can happen randomly (unlike boss events which happen when near a boss).Water settings are in the main expand_world.cfg
file.
Water level can be changed with Water level
setting. This is currently experimental and probably causes some glitches.
Similarly wave size can be changed with Wave multiplier
setting. With the Wave only height
setting causing slightly different behavior. This is also experimental.
Lakes are needed to generate rivers. The code searches for points with enough water and then merges them to lake objects. Use command find_lakes
to show their positions on the map.
Note: Lake object is an abstract concept, not a real thing. So the settings only affect river generation.
Settings to find lakes:
128
meters): How often a point is checked for lakes (meters). Increase to find more smaller lakes.-20
meters): How deep the point must be to be considered a lake. Increase to find more shallow lakes.800
meters): How big area is merged to a single lake. Decrease to get more lakes.Rivers are generated between lakes. So generally increasing the amount of lakes also increases the amount of rivers.
However the lakes must have terrain higher than Lake point depth
between them. So increase that value removes some of the rivers.
Settings to place rivers:
2000
meters): Lakes within this distance get a river between them. Increase to place more and longer rivers.5000
meters): Fallback. Lakes without a river do a longer search and place one river to a random lake. Increase to enable very long rivers without increasing the total amount that much.50
meters): The river is not valid if this terrain altitude is found between the lakes.128
meters): How often the river altitude is checked. Both River max altitude
and Lake point depth
.Rivers have params:
100
): For each river, the maximum width is randomly selected between this and River minimum width
.60
): For each river, the minimum width is randomly selected between this and selected maximum width. So the average width is closer to the River minimum width
than the River maximum width
.15
): How wide the curves are.20
): How often the river changes direction.Streams are generated by trying to find random points within an altitude range.
3000
): How many times the code tries to place a stream. This is NOT scaled with the world radius.100
): How many times the code tries to find a suitable start and end point.-4
meters): Minimum terrain height for stream starts.1
meter): Maximum terrain height for stream starts.6
meters): Minimum terrain height for stream ends.14
meters): Maximum terrain height for stream ends.Streams have params:
20
): For each river, the maximum width is randomly selected between this and Stream minimum width
.20
): For each river, the minimum width is randomly selected between this and selected maximum width. So the average width is closer to the Stream minimum width
than the Stream maximum width
.80
meters): Minimum length for streams.299
meters): Maximum length for streams.15
): How wide the curves are.20
): How often the stream changes direction.expand_locations.yaml
.prefab
, for example to XMasTree (check wiki for ids).expand_events.yaml
.spawns
field from another entry like army_eikthyr.expand_biomes.yaml
.biome
, add name
and add terrain
.expand_world.yaml
.Example:
Copy-paste ashlands entry and change:
Copy-paste plains entry and change the top one:
v1.3
v1.2
expand_biomes.yaml
to be from 0.0 to 1.0 (instead of from 0 to 255). Regenerate the file or fix colors manually.
Altitude multiplier
multiplying biome specific Altitude delta
. If you have used both, multiply the biome specific delta in the yaml file.paint
to the expand_biomes.yaml
to set the default terrain paint.mapColorMultiplier
to the expand_biomes.yaml
to allow tweaking the height color.stretch
to the expand_world.yaml
to stretch individual biomes.v1.1
v1.0
Thanks for Azumatt for creating the mod icon!
Thanks for blaxxun for creating the server sync!
Thanks for redseiko for the asynchronous minimap generating!
Please note that the install buttons only work if you have compatible client software installed, such as the Thunderstore Mod Manager. Otherwise use the zip download links instead.
Upload date | Version number | Downloads | Download link | |
---|---|---|---|---|
2022-8-7 | 1.3.0 | 106 | Version 1.3.0 | Install |
2022-7-31 | 1.2.0 | 160 | Version 1.2.0 | Install |
2022-7-14 | 1.1.0 | 315 | Version 1.1.0 | Install |
2022-6-30 | 1.0.0 | 310 | Version 1.0.0 | Install |