warpalicious-Procedural_Roads icon

Procedural Roads

Adds procedurally generated roads to your Valheim world.

Last updated 14 hours ago
Total downloads 6697
Total rating 15 
Categories Mods Server-side Client-side World Generation
Dependency string warpalicious-Procedural_Roads-1.4.2
Dependants 18 other packages depend on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2333 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2333
ValheimModding-Jotunn-2.27.1 icon
ValheimModding-Jotunn

Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.

Preferred version: 2.27.1

README

Procedural Roads

Procedural Roads

Generates a network of roads throughout the Valheim world. Increases world generation time.

Features

  • Adds road networks throughout the world.
  • Configurable road amount, width, and pathfinding iterations.
  • Roads are generated per island. The IslandRoadPercentage setting controls what percentage of islands the mod will attempt to generate roads on, starting with the largest islands first.
  • API for mod developers to register their locations for road network connection.
  • Support for custom locations from Expand World Data or other mods.
  • Anonymous analytics to help improve the mod (opt-out available in config).
  • Required on both client and server.

Road generation process

  • Road generation starts after all locations have been placed.
  • First we detect all the islands in the world.
  • Get the users island percentage config, i.e if 50% islands then we select 50% of total islands to give roads.
  • For each selected island, we select generate a road network within the island locations.
  • Within the island, we find locations and build a network of roads between them. Some locations are prioritized over others, such as bosses and dungeons. Some locations are excluded entirely.
  • Once we have locations, pathfind between the locations using A* pathfinding, avoiding rivers, steep slopes, and water.
  • Once road is defined, paint the road as stone path or dirt path. Then smooth each point of the road to fit the surrounding terrain.

Instructions

  • Roads will automatically generate for new worlds.
  • Please make a backup before adding roads to an existing world!
  • To add roads to an existing world, use the road_generate command shown below. You can validate using the road_pins command to see where roads were placed. Then you can use road_clearpins to remove the road_pins on your map.
  • Please note, I have not done extensive testing on how roads impact terrain within or around player builds. Roads could potentially generate directly through an existing build.

Configuration

Setting Default Range Description
RoadWidth 4 2-10 Width of generated roads in meters.
IslandRoadPercentage 50 0-100 Percentage of islands the mod will attempt to generate roads on (largest islands first). Setting this to 100 does not guarantee every island will have roads — see "Why some islands have no roads" below.
PathfindingMaxIterations 10000 1000-100000 Maximum number of iterations for each road segment's pathfinding algorithm. Higher values will generate more roads but increase generation time. Lower values will speed up generation time but cause less roads to generate.
CustomLocations (empty) Comma-separated list of location names to include in road generation. Use this for locations added by Expand World Data or other mods.

Why some islands have no roads

Even with IslandRoadPercentage set to 100, some islands may not receive roads. This setting controls which islands the mod attempts to place roads on, but road generation can still fail for several reasons:

  • Not enough key locations — Roads are built between recognized points of interest (bosses, dungeons, crypts, etc.). If an island has fewer than 2 recognized locations, no road network can be created.
  • Terrain is impassable — The pathfinding algorithm avoids rivers, deep water, steep mountain slopes, and highly variable terrain. If there is no viable path between two locations, that road will not be generated.
  • Pathfinding iteration limit — Complex or long-distance routes may require more iterations than the PathfindingMaxIterations config allows. Try increasing this value if you notice roads failing to generate.
  • Island is too small — Very small landmasses are not detected as islands during the island detection phase.

To improve road coverage, try increasing PathfindingMaxIterations and adding location names to CustomLocations.

Console Commands

All commands require cheats enabled (devcommands).

Command Description
road_generate Generate roads for an existing world. Use after adding mod to an existing save.
road_pins Place map pins at road start points for visualization.
road_islands Detect islands and place pins at their centers. Optional args: [cellSize] [minCells]
road_clearpins Remove all map pins added by ProceduralRoads.
road_debug Show road point info near player position (for troubleshooting terrain issues).

Donations/Tips

I make mods because I enjoy it and want to make Valheim more enjoyable for everyone. If you feel like saying thanks you can tip me here.

My Ko-fi: ko-fi

Source Code

Source code is available on Github.

Github Repository: Procedural Roads