Riverheim Config
Server-synchronized world-generation controls for Gurebu-Riverheim 1.3 (with Worldhalla) and 1.2: world, rivers, lakes, biomes, landmass, mountains and terrain. Preview them in the AtlasBuilder UI.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.
