Minecraft Blogs / Article

Realistic Terrain Concept: Start with Water!

  • 1,334 views, 4 today
  • 3
  • 1
  • 3
_Shako's Avatar _Shako
Level 56 : Grandmaster Architect
163
Being a lover of hills and mountains, and a resident of a real-life mountain range (Appalachian mountains in the U.S.), the way that Minecraft generates these terrain patterns is a constant source of frustration for me. Methods for creating better/more realistic terrain are talked about often, and I have suggested my own ideas before, because the way Minecraft handles terrain, especially mountains, is lackluster at best.

Default mountains are easily walked around and ignored. They're boring. There's little reason to climb and explore them. We try to get better mountains by creating a world with custom terrain and modifying the terrain generation to produce higher, larger mountains. However, this generation still isn't realistic, because the way Minecraft divides land, using rounded fractals, produces rounded, splotchy areas that are either flat or a hill. This produces generally cone-shaped mountains and large, round valleys. It also ignores the patterns of water flow and drainage towards the ocean, which in real life, is the #1 thing that defines the shape of terrain, low or high.

Realistic Terrain Concept: Start with Water!
The most realistic terrain that can currently be automatically generated in Minecraft. The mountains are more impressive, but still cone-shaped and often stumpy.

MCEdit is not the greatest solution either, because it doesn't build the terrain automatically from a seed, instead requiring us to manually edit the terrain. It's also a rather buggy application that runs extremely slow on many computers and is often barely usable.

In real life, all land is shaped so that all water drains to the ocean or a large lake from anywhere on the continent. Therefore, I devised a possible alternate method of automatic terrain generation that draws the watershed patterns first and then draws the hills and valleys according to the water.

Diagrams of how real-life terrain is shaped around water drainage
These are all in the State of West Virginia, United States, where I live. Maps are by Google, arrows are drawn by me.

Along the Eastern Continental Divide of North America (purple line), between the Atlantic Ocean and Gulf of Mexico
Realistic Terrain Concept: Start with Water!

Medium-sized mountains and hills
Realistic Terrain Concept: Start with Water!

Rolling farmland, with a mountain nearby


So, how would such a terrain generator function?

I thought about this for a long time, and this is the first concept I created:
- new Minecraft world begins with biomes laid out, but the vertical terrain shape (hills/mountains) and rivers not generated yet; biomes would be deliberately placed with warmer biomes closer to the ocean, flatter biomes further inland, and hillier, mountainous biomes towards the center of the land mass
- generator then determines the continental divides by drawing lines across the centers of land masses
- hierarchy of rivers, creeks, streams, etc. then generates by first generating the largest rivers, then dividing their watersheds and adding their next level of tributaries, then dividing those watersheds and adding a third level of tributaries, etc. The resulting waterway patterns on a map should resemble veins in a leaf
- hills and mountains are then formed along the watershed divisions and according to the specific biome's height. Additionally, the average height of both peaks and valleys would increase with proximity to a continental divide, so the highest peaks (around 220 blocks high) would be the continental divides

Rivers and other waterways would generate with slope, always sloping the water down towards the ocean. Actual water flow would be ignored, with source blocks mainly used, and flowing water only used where the river's block elevation changes. Larger rivers would slope very little and only rise maybe 10 or 20 blocks across their course, while the smaller waterways would be more vertical, draining from further up in the mountains.

The sizes of the valleys that rivers sit in would correspond to the rivers' sizes. The largest rivers (30-40 blocks across) would have very wide valleys, maybe 200 blocks across, while the smallest streams (maybe 5-6 blocks across) would have the narrowest hollows, with only a couple blocks of flat riverside.

I have made a few diagrams to visually describe some of the terrain generation I devised. In these diagrams, I used a hierarchy of three different waterways: Rivers, Creeks and Runs.

Diagrams of my first concept

Starting out by generating the biomes but with no verticality yet (it's all flat) and no rivers


Next, determining the locations of continental divides


Next, adding the largest rivers. They can be much twistier/curvier than this.


Then, locating the divisions between those rivers' watersheds




Creeks added


Dividing lines between creek watersheds determined


Runs added.

Then, I questioned whether it would be necessary for the terrain generator to determine the locations of watershed lines, or even continental divides, at all. It may be more efficient to simply code a series of rules about how waterways should be shaped and how they can connect to each other. These rules could be along the lines of:
- Waterways must initially generate with a low end at another water feature of a larger size, and must not be connected to any other water feature at any point
- The higher end of a waterway that is more than a couple blocks wide must then continue upwards with a smaller waterway, so there will not be any wide rivers abruptly ending.
- Waterway slope/steepness corresponds to width, with wider rivers being flatter. The steepness of smaller waterways depends on the biome.
- Terrain is formed according to these waterways, with the land always reaching a higher elevation than the adjacent waterway.

I have tried coding Java and I crashed and burned, so I do not know the feasibility of this being programmed as a mod, but I know that if it is feasible, it will be hard. If I ever do improve my Java skills and become familiar with Minecraft terrain generation, I will attempt to turn this into an actual mod. If not, I hope this article will inspire another modder to overhaul Minecraft's current fractal-based generation in favor of a less splotchy pattern.
Tags

Create an account or sign in to comment.

1
07/10/2018 5:09 am
Level 43 : Master Elf
-Endergirl-
-Endergirl-'s Avatar
Thank you for the insight!
This seems really interesting and I might use it for future maps!
1
07/10/2018 1:34 pm
Level 56 : Grandmaster Architect
_Shako
_Shako's Avatar
You're welcome, and I'm glad I have provided a useful idea!
1
07/10/2018 3:36 pm
Level 43 : Master Elf
-Endergirl-
-Endergirl-'s Avatar
^u^
Planet Minecraft

Website

© 2010 - 2024
www.planetminecraft.com

Welcome