How Hard Would It Be To Make Randomly Generated Terrain With This Engine?

Please bear with me, I’m completely new to game design and this is my first post on this forum. So here’s my story.
A bit ago, I was thinking: “Exploration is pretty much my favorite thing to do in any open-world game. Wouldn’t it be great if there was a game that randomly generated a massive hyper-realistic world, and just let you explore it?” Hyper-realistic is the key word here; as an avid hiker, the landscape in most games has left me completely disappointed by their lack of realism. (Things like a small valley with a stream at the bottom, right next to a large valley with no stream. Or even a stream at the top of a hill. That type of stuff just doesn’t happen in nature). So I decided I should take a shot at making it myself.
Thinking through the potential challenges, I concluded that the most challenging aspect would be the terrain generation. To make the landscape as realistic and believable as possible, I would want to mimic naturally occurring geologic processes as best I could in the game. I figured simulating tectonic motion pushing up mountains would be out of the question (though certainly correct me if I’m wrong), but randomly generating a mountain range and then simulating erosion on it might be doable.
My question is, would this even be possible on this engine? I’m assuming I’d have to learn C++ and do some coding, but to what extent? Would it happen to be easier on another common engine like Unity or CryEngine? Would I have to make my own game engine from scratch?
Something else I would like to implement is a topographic map that fills out as you explore, and would let you write on it to name geographical features you find in your world. I’m guessing the easiest way to do this would be to generate the map at the same time as the terrain, and simply unmask it as you move. I have the same questions about this feature as the terrain generation. How hard would it be to implement? Would it even be possible? What would be the best way of making it?
I’m not some 14 year-old that wants to make a game because “How hard could it be?” only to get frustrated when they find they are going to have to learn something and dedicate a significant amount of time. I know this isn’t going to be easy by any stretch of the imagination, especially as a first project, but I am an extremely good and fast learner, and have plenty of time on my hands. I don’t need to or expect to make any money off this game, so there is absolutely no deadline. In the worst case scenario, I can always work on another game idea I have, which is much more ‘standard’ and doesn’t have any super-crazy-ambitious elements, to gain experience.
Thank you for taking your time to read this wall of text. Sorry if I’ve made any mistakes or posted this in the wrong part of the forum, just let me know and I’ll try and correct it.

You’re likely looking for the Procedural Mesh component, which can be used to create meshes at runtime.

Using the simplest approach you create a grid of landscape height data, use ProceduralMesh to build the mesh at runtime (one vertex per height measurement, joined together with triangles), and then add it to an actor in your level.

You could write a simple version of this using Blueprint, but for a more complete version you’re talking about the performance and complexity would likely be too much for it and then you’d be looking into C++ for performance- or really going for high-performance and incorporating OpenCL/CUDA to offload the processing to the GPU, treating the terrain heightmap as a texture and erosion as a repeated image processing effect.

When you have this much the creation of the terrain (Tectonical simulation etc) ceases to be a UE4 question and moves into the realm of data processing, you’re likely to learn a lot doing this.

On the UE4 side you’ll be looking into optimisations such as splitting your terrain into tiles so you’re not drawing the entire world at once, outputting meshes at different resolution so you have a a lower-res proxy for collision detection, saving your tiles to disk to cache them, and embedding extra info (Rock? Grass? Sand? Water depth?) into the mesh or support textures to make things look better.

In any case it’s a challenge, but I think it’s a fun one, and wish you luck with it.

How long do you want to spend doing this type of thing? It’s going to take years to do to get it to a high quality level, if you think about games that have really high quality environments it takes a ton of work and experience, much less games that are procedurally generated.