I'm trying to create a simple RPG in the classic Final Fantasy style where the player wanders around a world having menu-based encounters. I want the world to be 3D, but I'm not aiming at anything like Skyrim with its realistic-looking world. I don't even want to try to fool the players into thinking I lovingly hand-crafted meshes for each area. On the contrary, I want meshes that are simple and procedurally generated so I can design the world in broad terms without having to model every detail of the terrain by hand. To be clear, the world is not going to be procedurally generated; that will be hand-crafted along the the encounters and story of the game. What needs to be procedurally generated are the meshes that are rendered to represent the world to the player, because the resources are not available to generate a whole world of meshes by hand.
My only real requirements for the world are the things that would be expected of the usual RPG. It should have vertical cliffs to block the player's movement, along with cave entrances in some of the cliffs. There's no need actually carve a cave into the cliff mesh; it can simply be a symbolic entrance that takes the player to another scene. The game should also have impassible forests which are like cliffs but rendered as a solid wall of trees. It should have deserts and swamps to cause the player to move more slowly, and roads to cause the player to move more quickly. It should have buildings to trigger menu-driven events, but the buildings can be as simple as cubes with tasteful textures. None of these elements needs to be rendered in great detail, but it is important that there be enough variety to allow the player to recognize a place that has been seen before.
I'm prepared to accept that the world may need to be created on a regular grid. Of the many tutorials that I have looked at, the Catlike Coding tutorial for doing Hex Maps in Unity is by far the best. It goes from the simplest of hex grids all the way to creating worlds with mountains, roads, and rivers. I cannot express how helpful it has been, though it is not a perfect fit for my needs. For one thing, there are no hexes in the design document of my game. It seems that the whole project could be simplified by using squares instead of hexes, but either way I'd want to try to minimize the appearance of the grid. It occurs to me that I might create a height map within each square to allow for detailed hills and valleys as opposed to the rigidly defined plateaus of the tutorial's hex map. Even so, it's hard to disguise the grid nature of the world, and it's hard to give a place distinctive look when it is confined to a rigid grid.
I love the idea of spline-based roads and rivers, but unfortunately it seems difficult to combine them into a height map terrain. It seems that 3D spline roads work best when they are somehow floating in space, akin to the F-Zero games. Here is a Youtube tutorial going into detail on how to create such floating spline roads:
" rel="external">Unite 2015 - A coder's guide to spline-based procedural geometry. Here is an article I found discussing the combination of vector-based features with height map terrain: Real-time rendering and editing of vector-based terrains. The title is fascinating because it suggests that the article would be excellent for my needs. Another such evocative title is: Automating the Construction of Large-Scale Virtual Worlds. Unfortunately I don't have the full text of that one. Looking deeper into this, it seems that putting spline roads onto height map terrain is actually one of the great problems for the ages. All the solutions I can find are quite elaborate, and this is intended to be a simple game, not a display of technical wizardry.The difficulty of using spline roads on height map terrain suggests the possibility of using spline roads without height maps. Nothing in the design document particularly requires hills, though it's hard to imagine how places in the game world can have distinctive looks if the whole world is perfectly horizontal.
I have also considered doing an entirely voxel-based world akin to Minecraft. It might use Marching Cubes to smooth off the corners. That would be an entirely different can of worms.
There are so many options available and all of them seem either difficult or low-quality. On top of all the rest, in order to have a large world I have to consider how to divide the world into chunks.
It would be wonderful if someone who knows how to make games would point me in the right direction. This is not my first 3D game, but I have never attempted anything on this scale before. I'm prepared to put effort into this game, but I don't want to waste effort doing it the hard way when all my requirements are so modest. Up to now I've been using Unity for my attempts, so Unity-based recommendations are especially welcome.