I've been doing my grad school work on this, so here's the best starting point:
You'll get the basics: where height data comes from, how to use Godot's surface tool yada yada, how to have all this happen in a separate thread, and how to enable collision on it. He does one make one mistake where he computes height for a single square six times, 3 for each triangle that makes the square. If you pause and think about it you'll realize you don't need to compute it six times, just four.
Going from there: you'll want to make bigger chunks than he does in the tutorial and play around with adding more layers of noise and mixing them to different effect. For rivers I suggest employing perhaps your first layer of noise as abs(noiseVal)
. The absolute value, depending on if you inverse it or not, can make nice rivers or ridges. Your rivers in this method will be, however, like as in minecraft, flat.