Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Riverheim Config
Server-synchronized world-generation controls for Gurebu-Riverheim 1.2.x: world, rivers, lakes, biomes, landmass, mountains and terrain. Preview them in the AtlasBuilder UI.
| Date uploaded | 2 weeks ago |
| Version | 3.0.0 |
| Download link | Wackah-Riverheim_Config-3.0.0.zip |
| Downloads | 14 |
| Dependency string | Wackah-Riverheim_Config-3.0.0 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.
Preferred version: 5.4.2202Gurebu-Riverheim
A comprehensive world generation overhaul that adds larger continents, forking rivers, epic mountains, lakes and many other features.
Preferred version: 1.3.1README
Riverheim Config
Server-synchronized world-generation controls for Gurebu-Riverheim 1.2.x.
Riverheim itself has no player-facing options. This companion mod adds a config file for the parts of Riverheim's world generation that are safe to turn: world size and depths, rivers, lakes, biome placement and amounts, biome bands, landmass shape, mountains, river features, sub-biomes and terrain feel. Settings are applied at Riverheim's ConfigManager.GetConfig entry point, immediately before a world is generated.
Preview before you commit: every setting here is the same setting, with the same name and default, as in the Riverheim AtlasBuilder UI, a launcher for Gurebu's Riverheim AtlasBuilder. Draw maps of your seed with your settings, then Export config writes the config file for your server.
Controls
Every default is Riverheim 1.2.1's own value, and a setting left at its default is not written at all, so an untouched config generates stock Riverheim worlds even if a Riverheim update changes a default. The full list with defaults, ranges and descriptions is in SETTINGS.md; the config file carries the same descriptions.
- 1. World: world radius, tile spacing, sea floor depth, ocean biome depth, mountain height, starting area radius
- 2. Rivers: origin density and land-neighbour requirement, width formula, pruning, meanders
- 3. Lakes: budget and terrain-affinity settings
- 4. Biomes: placement bias for Meadows, Black Forest, Swamp, Plains and Mistlands
- 5. Biome Amounts: how much contested land each biome takes, now including Marsh and the lowland Black Forest variant from Riverheim 1.1.1
- 6. Biome Bands: how far from spawn Meadows fades out, where Swamp and Plains start and end, and where Mistlands starts (percent of the way to the world edge)
- 7. Landmass: how land clumps into continents or scatters into islands, the swirl, the central harbor, small-island removal, coastal trimming
- 8. Mountains: how much high ground becomes Mountain, how rejected mountains are cut down, minimum mountain size, selection randomness
- 9. River Features: channels through landmasses, the rainfall pattern that feeds rivers, how notable river sources, confluences and bends are
- 10. Sub-biomes: Mistglade rate and patch size, marsh and swamp base height, lowland Black Forest shaping
- 11. Terrain: cliffs, terracing, flatland amount, land slope, erosion, Meadows and Plains shaping
Every setting is enforced and synchronized by the server through ServerSync.
Bigger or smaller worlds: keep WorldRadius at 10500 and use Expand World Size stretching (this mod fixes Riverheim's forests, vegetation and forest-bound locations in stretched worlds, which were missing beyond about 10 km; tested in game with Expand World Size 1.45.0 at stretch 1.5) (Stretch world = Stretch biomes, and EWS World radius + World edge size = 10500 x stretch). Changing WorldRadius scales the biome bands but not the poles, the landmass swirl or the rainfall pattern, so it distorts the layout. One thing no mod setting can change: Valheim's terrain and vegetation shaders draw snow on everything more than about 8,000 m north of the centre, whatever the stretch, so in a stretched world the normal land between there and the Deep North looks snow-covered. It is only the look: biomes, weather, vegetation and locations are correct.
Installation
- Install
denikson-BepInExPack_Valheim5.4.2202 or newer. - Install
Gurebu-Riverheim1.2.x on the server and every client. - Install this mod on the server and every client.
- Start once to create
BepInEx/config/com.valheim.riverheim.config.cfg, then edit that file on the server, or write it with the AtlasBuilder UI's Export config.
Changing settings without restarting: the mod notices when the config file is saved, on a server or a client, and uses the new values for the next world that is created or loaded. A world that is already running keeps its terrain until it is loaded again. In single player you can also edit every setting from inside the game with a configuration manager (the F1 menu, for example Azu's UnOfficial ConfigManager); it shows each setting's description and allowed range. On a server, the server's file wins: it is sent to every player who joins.
Important
- Riverheim terrain generation must match between server and clients. Keep Riverheim and this mod at identical versions across the group.
- Changes apply whenever Riverheim generates terrain, to every world. Treat a configuration change as a new-world decision; do not change it for an established world without a tested backup. (Riverheim stores only its preset name and version in a world, not these values, so the mod cannot keep per-world settings yet. See
docs/preset-handler-notes.mdin the repository.) - Config files from Riverheim Config 2.0.0 keep working; the new sections are added with their defaults.
ForestWeight's default moved from 261 to 258.5 because Riverheim 1.1.1 gave 2.5 of it to the new lowland Black Forest variant; a 2.0.0 file that still says 261 will now force 261. - AtlasBuilder 1.0.0 bundles a Riverheim from before 1.1.1. The AtlasBuilder UI's Installed Riverheim choice draws with your own Riverheim instead, so its previews match the game, including the lowland Black Forest settings (
ForestLowlandsWeight,ForestLowlandsShaping*); with its Bundled choice those settings do nothing. - This mod only exposes settings that map to real Riverheim 1.2 configuration fields, and each one was checked to visibly change a map of a test seed drawn by Riverheim 1.2.1 itself (run inside AtlasBuilder). Descriptions say what the field does as far as it is understood; the AtlasBuilder UI is the way to see what a value does to your seed.
- Some values make Riverheim throw an error instead of generating a world, so the mod refuses them:
RainfallMinimumat exactly 0 (the lowest allowed value is 0.001),MinWidthbelow 2 (at 0 Riverheim runs out of memory; the lowest allowed value is 3), and aWorldRadiusfrom 7800 to 9000 m, where the world edge runs into the Ashlands and Deep North belts (the mod keeps Riverheim's own radius and logs why). The descriptions say so. What the game shows when that happens was not tested; AtlasBuilder aborts.
Troubleshooting
- Check
BepInEx/LogOutput.logforRiverheim configuration patch appliedandApplied Riverheim config. - If the log says
ConfigManager.GetConfig was not found, Riverheim 1.2.x is not installed or an incompatible build is loaded. - If it lists settings that were not applied, do not generate a production world; the upstream configuration layout has changed and this companion needs an update.
- A warning
This Riverheim build has no field for: ...means an older Riverheim is installed; those settings are left out.
Build and test
dotnet msbuild src\RiverheimConfigTest.csproj -t:Rebuild -p:Configuration=Release
dotnet build tests\RiverheimConfig.Tests -c Release
dotnet tests\RiverheimConfig.Tests\bin\Release\net8.0\rhconfig-test.dll check Gurebu-Riverheim\Riverheim.dll
.\tests\Run-AtlasTests.ps1
tests/README.md describes the checks: every field path against the real Riverheim.dll, and AtlasBuilder renders proving that stock values reproduce --preset Default byte for byte and that every setting changes the map. The renders run the installed Riverheim 1.2.1 inside AtlasBuilder (which needs a Valheim install with BepInEx; -Engine Bundled uses AtlasBuilder's own older Riverheim instead). Run ./package.ps1 after a successful build to create the Thunderstore archive.
CHANGELOG
Riverheim Config - Changelog
[3.1.1] - 2026-11-08
Works with Riverheim 1.3.1, which now creates its worlds through Gurebu's Worldhalla. Riverheim 1.2.x still works.
- All 101 settings were checked against Riverheim 1.3.1: every one still reaches its field, and every default is unchanged. Seed 400 with the BEST preset draws a pixel-identical map to Riverheim 1.2.1.
- Tested in game with Riverheim 1.3.1 and Worldhalla 1.0.0: the settings apply to new worlds, and Worldhalla's New World preview already shows them.
- The Expand World Size fix (forests, vegetation and forest-bound locations in stretched worlds) works again on Riverheim 1.3. Riverheim 1.3 removed the call it used to recognise a Riverheim world, so on 1.3 it had only logged a warning and done nothing. Not yet retested in game with Expand World Size.
- The Thunderstore dependency is now Gurebu-Riverheim 1.3.1.
- Generation is unchanged, so 3.1.1 plays alongside 3.0.x and 3.1.0.
[3.1.0] - 2026-11-03
New settings
24 more of Riverheim's own values can now be changed (101 settings in all). Each one was rendered with Riverheim 1.2.1 at both ends of a wide range on seeds 400, 1337 and 2024, and its range stops where Riverheim fails or needs much more memory. Left at its default, a new setting changes nothing: stock worlds stay byte-identical.
| Section | Setting | Range | What it does |
|---|---|---|---|
| Lakes | LakeSize | 0 - 300 m | How far lakes grow from their starting points; at 300 neighbouring lakes join into large inland waters |
| Lakes | LakeSizeVariability | 0 - 3 | How much lake size varies from place to place |
| Lakes | LakeMinCoastDistance | 0 - 2000 m | How far from the sea lakes may form; higher values push them inland |
| Landmass | CoastalTrimVariance | 0 - 2 | How unevenly the coast is trimmed; higher values make ragged coasts and more small islands |
| Landmass | SwirlWarp | 0 - 2 | How strongly the swirl arms' edges are distorted; higher values break the land into more, smaller islands |
| Mountains | MountainPeakRate | 0 - 1 | How many mountain tops get a rock spire or a rounded peak |
| Mountains | MountainSpireMinHeight, MountainSpireMaxHeight | 0 - 200 m | Height range of those rock spires |
| River features | SourcePondChance | 0 - 1 | Chance of a small pond at a river's source |
| Terrain | HillRate | 0 - 1 | How many small rounded hills Meadows, Black Forest and Plains get |
| Terrain | ShorePlateauRate, ShorePlateauMinHeight | 0 - 1, 0 - 100 m | Raised plateaus with a steep side on land next to water |
| Terrain | RiverBankMaxHeight | 0 - 200 | How deep river banks are carved; at 0 most rivers are gone |
| Terrain | RiverBankSmoothness | 0.5 - 30 | How softly river banks blend in; at 30 rivers become broad, flooded valleys |
| Terrain | MistlandsRoughness | 0 - 400 | Height of the Mistlands' jagged hills and gullies |
| Terrain | SwampPathDepth | -40 - 20 | Height of the raised paths through swamps; at 20 the swamp is almost dry |
| Biome patch sizes (new) | MeadowsPatchSize, ForestPatchSize, SwampPatchSize, PlainsPatchSize, MistlandsPatchSize, MarshPatchSize | see SETTINGS.md | The size each biome's patches aim for. Smaller patches also mean more of that biome: Swamp at 100 has about 70% more land in about 10 times as many patches |
| Forests (new) | ForestPatternSize | 50 - 2000 m | Size of the pattern that sets how densely land is wooded |
| Forests (new) | MeadowsRiversideTrees | -1 - 1 | Forest along Meadows riverbanks; negative keeps them open |
- CoastalTrimVariance and SwirlWarp reshape the land across the whole world: any change gives a different map for the same seed.
- RiverBankMaxHeight stops at 200: higher values change almost nothing on the map but need much more memory (500: about 4 times the default). RiverBankSmoothness 0 makes Riverheim fail, so it starts at 0.5.
- The patch sizes stop above 0: at 0 Riverheim drops the size target altogether, which does not behave like a very small or a very large value.
- SourcePondChance, the mountain spires and the hills are small features: on AtlasBuilder maps they show only in close-ups.
- Looked at and left out: river source crags, Plains riverside trees and the upper height limit of shore plateaus changed the map too little to see or describe.
Safer ranges
Every setting's minimum and maximum was rendered with Riverheim 1.2.1 on several seeds, then the values in between where the map jumped. Ten settings had ends where Riverheim cannot generate the world (or needs absurd memory); their ranges now stop at the last value that worked on every seed tested. BepInEx clamps an old out-of-range value to the new limit.
| Setting | Was | Now | Why |
|---|---|---|---|
| WorldRadius | 1000 - 100000 | 4000 - 100000 | 2500 fails |
| TileSpacing | 10 - 1000 | 10 - 150 | 200 fails on some seeds |
| SeaFloorDepth | -1000 - 1000 | -1000 - 0 | anything above 0 fails |
| MountainHeight | -1000 - 1000 | 0 - 200 | -100 and 300 fail |
| MeanderPeriod | 0 - 100 | 0.5 - 100 | 0 fails |
| SmallIslandSizeThreshold | 0 - 100000 | 0 - 4000 | 6000 fails on some seeds |
| CoastalTrimDistance | 0 - 10000 | 0 - 1000 | 2000 fails |
| ChannelWidth | 0 - 10000 | 0 - 500 | 1500 needs about 15 GB of memory to generate |
| LandSlope | 0 - 100 | 0.2 - 100 | 0.1 fails on some seeds |
| PlainsShapingIntensity | 0 - 100 | 0 - 6 | 10 fails |
- Combinations can still fail even when each value is in range (very deep sea floor with very low land slope fails most often). Try a new combination in the AtlasBuilder UI first.
FlatlandThresholdnow warns that above about 0.35 flatland erases mountain ground: at 0.4 the Mountain biome, and its silver, is almost gone.
Presets, remade
The presets are now grouped by land shape (classic, continents, islands, rings, spirals, wild), each with a preview map of seed 400 in the README and in presets/previews. Every recommended preset was generated on 13 seeds (every progression biome on every seed) and, new in this release, created as a real world on 3 seeds on a dedicated server to check that Valheim's own placement rules find room for Moder's altar, Hildir's cave and camp, the Bog Witch and every other key location.
That check found problems in presets that had shipped:
- Highlands (3.0.1) left no room for Moder's altar on one of three seeds and only 2-4 places for Hildir's cave: its many small mountains stay low (the highest about 215-240 m; the altar needs 150-500 m and nearly flat ground). Rebuilt: steeper land with Riverheim's normal mountain sizes. Its mountains now reach 370-750 m, it has about 40% more Mountain than stock, and 36-63 places for the altar.
- Archipelago (3.0.1) had no room for Hildir's camp on two of three seeds: the only Meadows was on the start island, and her camp needs flat Meadows 3-8 km out. It now has about twice the Meadows (37-96 places).
- Stardust (3.0.1, wild) has almost no Mountain on most seeds and no room for Moder's altar or Hildir's cave. Moved to
presets/archive. - Settings that make mountains low (a mountain height of 25 with a low mountain threshold, used by many river and lake worlds in the world gallery) cost Moder's altar and Hildir's cave. The river and lake presets here use steeper "highland" ground instead, which keeps both.
New recommended presets: Whirlpool (the five-armed spiral our own server runs, with rock-terraced river banks), Pinwheel, Pinwheel Rivers, Hurricane Lakes, Horseshoe Lakes, Great Eye, Lake Ring, Great Lakes, Heartland and Tidy Biomes (the last two from a search for bigger, less scattered biome patches). Great Rivers and Inland Sea moved up from wild. New wild preset: Horseshoe Waterways, a river web you can sail most of the way across.
Wild presets in the README now say what their catch is (The Alps: little Meadows; Meadow Empire: no room for the Bog Witch; Atoll: few places for several key locations on some seeds). The other wild presets carry a line saying they were not checked for boss and trader locations.
Retired to presets/archive (still there to copy): Drowned World, Dry Lands, Fine Detail, Lakelands, Misty Realm, River Kingdom, Round Continents, Spiral Galaxy and Stardust. Most looked almost like stock on the map, or another preset now does the same job better.
Also in this release:
- Fixed Gentle Lowlands: it had no Mountain biome at all (its flatland amount, 0.45, flattened every mountain away). Now 0.3, with Riverheim's own mountain settings.
- Deep Forest has a little more Meadows, so every seed has a gentle start (at least 5% of the land).
- 16 new wild presets from a second, harder search of 364 worlds: Half Moon, Horseshoe, Caldera, Hurricane, Purple Haze, Lagoon Country, Green Maze, Candyland, Ringed World, Swamp Lace, Noodle Isles, Golden Heart, The Shoals, Serpent, Golden Spiral and Fortress. Each generates on seeds 400, 1337 and 2024; several are deliberately hard to play.
[3.0.1] - 2026-10-25
- Recommended presets: 8 gentle and 9 wild ones are listed in the README, and 13 wild presets are new in
presets/wild(Great Rivers, Inland Sea, Grand Harbor, Atoll, Canyonlands, The Alps, Meadow Empire, Stardust, Shard Sea, Twin Coil, Island Chains, Shattered, Biome Chaos). Each generated on seeds 400 and 1337 with Riverheim 1.2.1. - Corrected the upgrade notes: the previous release was 1.0.4, not 2.0.0.
- Plays with 3.0.0: world generation is unchanged, so 3.0.0 and 3.0.1 players and servers can mix.
[3.0.0] - 2026-10-24
The first release since 1.0.4. It includes the never-released 2.0.0 rewrite for Riverheim 1.1 below.
For Gurebu-Riverheim 1.2.x, with many more controls
- Dependency moved to
Gurebu-Riverheim-1.2.1. Riverheim 1.1.0 to 1.2.1 kept every field this mod writes; 1.1.1's lowland Black Forest variant is now covered too. - Defaults now mean "leave Riverheim's value alone." A setting at its default is not written, so an untouched config generates stock Riverheim worlds even after Riverheim changes a default, and Riverheim's per-version defaults (which it pins in each world since 1.2.0) stay in control.
ForestWeightdefault corrected from 261 to 258.5 (Riverheim 1.1.1 moved 2.5 to the lowland variant). NewMarshWeight(5.5) andForestLowlandsWeight(2.5) in5. Biome Amounts.- New sections:
7. Landmass(land cohesion and distance weighting, swirl arms/twist/start radius, harbor radius and circularity, small-island removal, coastal trim, island merge threshold),8. Mountains(biome threshold, cut-down ratio, minimum patch size, selection randomness, area score, edge trim),9. River Features(channel width and meander, rainfall pattern size/variability/minimum/basin contribution, source/confluence/bend features),10. Sub-biomes(Mistglade rate and patch size, marsh and swamp base height, lowland Black Forest shaping),11. Terrain(cliff intensity and terrace height, terracing step, flatland amount, land slope, erosion rate, Meadows and Plains shaping intensity). - Every setting now has a range (BepInEx clamps values outside it) and a plain-language description; the full table is in
SETTINGS.md. - Fixed: config changes while the game or server ran threw
MissingFieldException: ZRoutedRpc.Everybodyand were not sent to connected players (the bundled ServerSync was built for an older Valheim). ServerSync is updated to v1.20 and now compiled intoRiverheimConfigTest.dll, so the package no longer shipsServerSync.dlland another mod's outdated copy can no longer take its place. If you installed by hand, delete the oldServerSync.dllthis mod put inBepInEx/plugins. - Fixed for Expand World Size stretching: in stretched Riverheim worlds, trees, grass and forest-bound locations were missing beyond about 10 km (the Deep North stayed bare) and forests did not line up with the terrain anywhere. EWS stretches the coordinates Riverheim's biome and height lookups receive, but not the forest lookup, which Riverheim also answers from its own map. With EWS installed, this mod now stretches that lookup too (only in Riverheim worlds, only when EWS's Stretch world is not 1). Tested in game with EWS 1.45.0 at stretch 1.5: vegetation, the Deep North and locations beyond 10 km are back. Still unfixable from a mod: Valheim's shaders draw snow on everything more than about 8,000 m north, so stretched worlds look snow-covered between there and the Deep North (looks only; gameplay is correct).
- No settings for the Ashlands and Deep North belts yet. Riverheim can move them, but the game keeps its Deep North snow, cold and weather and its Ashlands lava and boiling sea at a fixed 8000 m, so moved belts put Deep North weather on Black Forest (tested in game). They may return once the mod moves the game's side too.
- The config file is watched: saving it while the game or server runs reloads it, and the new values apply to the next world created or loaded. Together with the ranges, this makes in-game configuration managers (F1) a convenient way to try settings in single player.
- The settings table (
RiverheimSettings.cs) is shared verbatim with the Riverheim AtlasBuilder UI launcher, which compiles it into its AtlasBuilder hook and builds its fields from the exportedsettings.json. Mod and launcher can no longer drift apart. - New
tests/: a DLL check that every path resolves and every default equals Riverheim's own value, and an AtlasBuilder harness that runs the installed Riverheim 1.2.1 inside AtlasBuilder and proves that stock values render byte-identical to--preset Default, that each of the 82 settings visibly changes the map, and thatpresets/BEST.cfgstill renders as before. - Settings for the lowland Black Forest variant are skipped with a warning on Riverheim builds that lack the field (including the Riverheim bundled in AtlasBuilder 1.0.0, so the AtlasBuilder UI's previews ignore them for now).
- Some values make Riverheim throw instead of generating a world, and the mod now refuses them:
RainfallMinimumat exactly 0 (its minimum is now 0.001),MinWidthbelow 2 (0 runs Riverheim out of memory after minutes; its minimum is now 3) and aWorldRadiusfrom 7800 to 9000 m, where the world edge runs into the polar belts (Riverheim's own radius is kept and the log says why). The descriptions warn about both.
Migration
- Config files from 1.0.x do not carry over: 1.0.x was made for Riverheim 0.12, whose settings no longer exist. Old entries stay in the file and do nothing.
- As before, these settings apply to every world Riverheim generates while the mod is installed, so a changed config changes existing worlds. See
docs/preset-handler-notes.mdfor why per-world settings are not possible with Riverheim 1.2.1.
[2.0.0] - not released (included in 3.0.0)
Breaking: rebuilt for Gurebu-Riverheim 1.1.x
- Replaced the removed Riverheim 0.12
DefaultConfigpatches with a patch of Riverheim 1.1'sConfigManager.GetConfiggeneration entry point. - Updated the dependency from
Riverheim_Dev-Riverheim-0.12.0toGurebu-Riverheim-1.1.0. - Rebuilt the configuration around actual Riverheim 1.1 fields: world, river origins/width/pruning/meanders, lake budget/affinity, and biome placement biases.
- Removed obsolete 0.12-only settings rather than allowing a config file to report success while silently doing nothing.
- Added explicit startup and field-layout failures to prevent false "all patches applied" reporting.
- Every default now matches Riverheim 1.1 exactly, so an untouched config generates stock Riverheim worlds (river
WidthOffset-6,MinWidth14.5,MaxWidthDifference2.2). - Split the single ocean setting into
SeaFloorDepth(default -40, the world edge and trench floor) andOceanBiomeDepth(default -20, how deep water must be to count as Ocean). The oldOceanDepthset both. - Added
StartingAreaRadius, a5. Biome Amountssection (how much contested land each biome takes) and a6. Biome Bandssection (where Swamp, Plains and Mistlands appear and how far Meadows reaches, as percent of the way from spawn to the world edge).
Migration
- This is not compatible with Riverheim Config 1.x or Riverheim 0.12.
- Version 2 writes new sections. Legacy 1.x entries remain in existing config files but are ignored.
- Back up worlds and configure before generating terrain; every client and the server must use the same Riverheim and Riverheim Config versions.
[1.0.4] - 2025-10-21
🎉 MAJOR UPDATE: Complete Biome Control System
Added - Ocean & Landmass Control
- OceanDepth - Control continent size vs ocean coverage
-20= Vanilla (standard continents)-25= More ocean (smaller continents, archipelago)-15= Less ocean (larger continents, Pangaea)- Range: -40 to -5
- MountainHeight - Control mountain biome threshold
40= Vanilla (standard mountains)35= More mountains (lower threshold)45= Fewer mountains (higher threshold)- Range: 30 to 55
Added - Complete Biome Configuration for ALL Biomes
Meadows (3 parameters)
FixedBias- Base competitiveness (default: 0)EnableRiverBonus- Toggle river preference (default: true)RiverBonus- River proximity bonus (default: 15)
Black Forest (1 parameter)
FixedBias- Base competitiveness (default: -5)
Swamp (9 parameters) - FULLY CONFIGURABLE
FixedBias- Base competitiveness (default: 8, recommended: -2)RiverBonus_AtRiver- Bonus at rivers (default: -25, recommended: +25)RiverBonus_Near140m- Bonus near rivers (default: -15, recommended: +15)RiverBonus_EndDistance- River influence range (default: 170m, recommended: 300m)CoastalPenalty- Coastal penalty (default: -90, recommended: -40)CoastalPenalty_EndDistance- Coastal range (default: 300m, recommended: 200m)TravelDistance_Start- Min spawn distance (default: 1350m, recommended: 800m)TravelDistance_Peak- Full strength distance (default: 2200m, recommended: 1500m)TravelDistance_End- Max spawn distance (default: 7000m, recommended: 8000m)
Plains (3 parameters)
FixedBias- Base competitiveness (default: 5, recommended: 0)TravelDistance_Start- Min spawn distance (default: 2800m)TravelDistance_End- Max spawn distance (default: 7200m)
Mistlands (3 parameters)
FixedBias- Base competitiveness (default: 0)TravelDistance_Start- Min spawn distance (default: 5500m)TravelDistance_Peak- Full strength distance (default: 6500m)
Key Features
✅ "Rivers End at Swamps" - Implemented community suggestion!
- Swamps now PREFER rivers instead of avoiding them
- Reversing river bias creates natural swamp clusters at river mouths
✅ Easy Biome Balancing
- Adjust any biome's frequency with simple FixedBias values
- Control spawn distances for progression tuning
- Enable/disable biome preferences
✅ Ocean/Continent Control
- Create archipelago worlds (many small islands)
- Create Pangaea worlds (one large continent)
- Fine-tune land/ocean ratio
✅ Full Logging
- All changes logged for debugging
- Shows vanilla → modified values
- Easy troubleshooting
Changed
- Updated version to 1.0.4
- Updated MinimumRequiredVersion to 1.0.4
- Reorganized config sections (section 8 = Ocean/Landmass, section 9 = Biomes)
- Enhanced logging output with all biome values
Documentation
- Created
com.valheim.riverheim.config.cfg- Complete config template with recommended values - Updated
biome_analysis_and_fixes.md- Technical analysis - Updated
BIOME_CONFIG_GUIDE.md- User guide - Updated
SWAMP_FIX_QUICK_REFERENCE.txt- Quick reference card - Updated
CHANGELOG_BIOMES.md- Detailed biome changes
[1.0.2] - Previous Version
Added - Swamp Biome Configuration (Initial)
- Basic swamp biome parameters
- River distance bias controls
- Coastal and travel distance settings
Added - Plains Biome Configuration
- Plains FixedBias control
[1.0.0] - Initial Release
Added - River & Lake Configuration
- River spawning controls (density, variability, recovery)
- River size controls (width scale, power, offset)
- River filtering (Strahler order, min width, catchment)
- River appearance (meander, depth, bank steepness)
- River valleys (offset, magnitude, exponent)
- Lake controls (threshold, noise scale, contributions)
- World size controls (radius, tile spacing)
Features
- ServerSync integration for multiplayer
- Harmony patching of Riverheim internals
- Comprehensive logging
- Config file generation
Migration Guide: 1.0.2 → 1.0.4
Automatic Migration
Your existing config will automatically gain new sections. Default values match vanilla behavior.
Recommended Actions
-
Fix Underrepresented Swamps
[9. Biomes - Swamp] FixedBias = -2 RiverBonus_AtRiver = 25 RiverBonus_Near140m = 15 RiverBonus_EndDistance = 300 CoastalPenalty = -40 CoastalPenalty_EndDistance = 200 TravelDistance_Start = 800 TravelDistance_Peak = 1500 TravelDistance_End = 8000 -
Balance Plains (Optional)
[9. Biomes - Plains] FixedBias = 0 -
Create Archipelago World (Optional)
[8. Ocean & Landmass] OceanDepth = -30 -
Create Pangaea World (Optional)
[8. Ocean & Landmass] OceanDepth = -10
Breaking Changes
- None! All new features use vanilla defaults
Community Requests Fulfilled
✅ "Rivers end at swamps"
"a little bit more Swamps would be nice, feels like the most under-represented area. One thing I thought would have been a nice way to include more swamp biome would be to have most rivers end at a swamp"
Implemented in 1.0.4:
- Swamps now get +25 bonus near rivers (was -25 penalty)
- Swamps naturally cluster at river mouths
- 2-3x more swamps overall with recommended settings
✅ "Easy way to edit any/all biomes"
Implemented in 1.0.4:
- All 5 major biomes now configurable
- Simple FixedBias values for frequency control
- Distance-based spawn controls
- River/coastal preference toggles
✅ "Ocean levels / more or less continent"
Implemented in 1.0.4:
- OceanDepth parameter controls land/ocean ratio
- Create archipelagos or Pangaea worlds
- MountainHeight for mountain frequency
Technical Details
Version 1.0.4 Changes
New Config Parameters: 19
- Ocean/Landmass: 2
- Meadows: 3
- Black Forest: 1
- Swamp: 9 (expanded from basic implementation)
- Plains: 3 (expanded from 1)
- Mistlands: 3
Total Config Parameters: 60+
Code Changes:
- Added ocean depth patching
- Added mountain height patching
- Added Meadows biome patching
- Added Black Forest biome patching
- Expanded Plains biome patching (travel distances)
- Added Mistlands biome patching
- Enhanced logging for all biomes
- Conditional logging (only show changed values)
Patching Strategy:
- Uses Harmony reflection to modify Riverheim's internal config
- Patches
BiomeCalculationConfig.OceanDepth - Patches
CommonConfig.MountainHeight - Patches individual
BiomeConfigstructs for each biome - Reconstructs
StaticArray<Rfloat2>for distance-based biases
Known Issues
None Currently
Compatibility
- ✅ Riverheim 0.12.0+
- ✅ BepInEx 5.4.x
- ✅ Valheim 0.217.x+
- ⚠️ May conflict with other biome mods
- ⚠️ May conflict with ExpandWorldSize mod (use WorldRadius instead)
Future Plans
Potential 1.0.5 Features
- Ashlands biome configuration
- Deep North biome configuration
- Height bias controls for all biomes
- Roughness bias controls
- Biome noise scale adjustments
- Preset system (Archipelago, Pangaea, Swamp World, etc.)
- In-game config UI
Community Requests
Have a suggestion? Open an issue or discussion!
Credits
- Riverheim Mod - Original terrain generator by gurebu
- BepInEx - Modding framework
- Harmony - Runtime patching library
- ServerSync - Config synchronization
- Community - Feature requests and testing
Support
Getting Help
- Check
BIOME_CONFIG_GUIDE.mdfor detailed parameter explanations - Check
SWAMP_FIX_QUICK_REFERENCE.txtfor quick fixes - Check BepInEx logs for error messages
- Verify you created a NEW world (changes don't apply to existing worlds)
Reporting Issues
Include:
- Riverheim Config version
- Riverheim version
- BepInEx log file
- Config file
- Description of issue
License
Same as Riverheim mod - check original mod page for details.