I recently did some work in generating rivers in a 2d game. Revisiting this work to create an exhumed river channel, I decided it might be fun to revisit how to generate it to make the channel look more realistic. Instead of using a drunken walker, this is a more expensive but interesting map generator:

  • Start by generating 2d simplex noise where
  • less <0.6 is floor
  • rest is walls
  • Generate terminal lines at each map exit (north, south, east, west). Shuffle those lines and randomly choose a start and end location for the river based on two of those lines.
    • Later you can add another line with terminal point to allow a split river channel
  • Using a* pathfinding, acquire the most optimal point between the terminal points. Fill the path with water while allowing the water to spill outwards randomly if the terrain allows it.
  • Turn all area too far away from water to wall
  • turn water into special dirt (exhumed river channel)
  • carve out area around water and set all non-special dirt to regular dirt in this area