This post has been de-listed
It is no longer included in search results and normal feeds (front page, hot posts, subreddit posts, etc). It remains visible only via the author's post history.
An algorithm called Perlin Noise plays a large role in Minecraft's terrain generation. It's used in its 2D form to map out the heights for hills/mountains, an in its 3D form to carve out caves and overhangs. But Perlin Noise is an older algorithm that is very artifact-prone. More specifically, it tends to align all of its features to the cardinal axes and to the diagonals. Now it's been proposed before to replace the Perlin Noise with Ken Perlin's newer Simplex Noise algorithm in order to resolve these artifacts, but the patent-encumberment issues with the 3D variant of the Simplex Noise algorithm (needed for caves and overhangs) get in the way of that. But the good news is that I've recently developed a new algorithm called OpenSimplex Noise that's designed to serve as an alternative to the artifact-prone Perlin Noise, as well as to the patent-encumbered Simplex Noise, and I'd more than welcome the algorithm's use in Minecraft. (very very late edit: Turns out the patent for simplex noise only applies if it's used for texture synthesis -- but maybe the patent stuff is still be a turn-off for the minecraft devs?)
Link to blog post #1: http://uniblock.tumblr.com/post/97868843242/noise
Link to blog post #2: http://uniblock.tumblr.com/post/99279694832/2d-and-4d-noise-too
Link to noise code: https://gist.github.com/KdotJPG/b1270127455a94ac5d19
To better visualize the differences, take a look at this demonstration (larger version of pic from blog post). It compares 2D Slices of 3D Perlin Noise (top) and OpenSimplex Noise (bottom).
- The first column is the raw noise texture.
- The second column is white where the values are greater than zero, and black where they are below. Picture the white areas as land, and the black areas as ocean.
- The third column is black where the values are close to zero. Picture this as a slice through the cave network at a given Y level. Notice the lack of variety in directions that the caves go in Perlin Noise compared to OpenSimplex.
- The fourth column is taken with the third coordinate equal to 0.5 instead of 0. In Perlin Noise, slices between integer values appear significantly different from slices at integer values of the third coordinate. The result of this is arbitrary fluctuations in cave character directly dependent on Y level, and arbitrary bias for overhangs to "top off" in certain ways at similar Y levels.
Exploring various regions of the worlds of Minecraft, the artifacts of Perlin Noise tend to rear their heads fairly often, reducing the variety of terrain shape by way of predictable angles and directions: http://imgur.com/a/gsxww
Comparison of island groups generated using Perlin Noise and OpenSimplex Noise: http://imgur.com/a/hT1sG
Yes it's a block game, but I think terrain generation would be more interesting if features on the macro scale didn't exhibit these directional artifacts. Terrain generation is great as it is, but we have a new opportunity for further improvement that we did not have before with OpenSimplex Noise.
What do you guys think?
Subreddit
Post Details
- Posted
- 10 years ago
- Reddit URL
- View post on reddit.com
- External URL
- reddit.com/r/Minecraft/c...