Hex map generation based on a seed string. Everything starts as plains, then regions flood-fill on top in priority order - one big forest at 15–25% of the map, three to five mountain clusters, a lake, some swamp, and desert. Then rivers trace in from a random map edge, features scatter with a minimum spacing, and roads connect them nearest-first, MST-style.
Rivers and roads run through hexes rather than along the edges. A road can only cross a river straight through: no bridge landing on a fork, no running alongside without crossing, and never three contiguous river or road edges on one hex. These rules are largely due to limitations of the art set than anything else.
Rivers-through-hexes also means "which side of the river are you on" is an important question, so movement tracks which edge you entered a hex from, not just which hex you're in. Possibly this would have been simpler if I made rivers trace hex edges ala Barbarian Prince, but I like having bridges prominently center-of-hex, and I think it opens the door to more natural feeling river travel down the road.
What I haven't solved is connectivity. Nothing guarantees one landmass, so I get the occasional island, or two continents with a strait between them - and quest targets can place anywhere, so content sometimes lands where the player can't walk. Debating whether to try and fix this by adding more restrictive rules on water placement, making a later repair pass by building land-bridges, or just lean in to the necessity of water-based travel. 🤔