Coming soon - Get a detailed view of why an account is flagged as spam!
view details

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.

129
OpenSimplex Noise for Terrain Generation instead of Perlin Noise (x-post from /r/minecraftsuggestions)
Post Body

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?

Author
Account Strength
90%
Account Age
10 years
Verified Email
Yes
Verified Flair
No
Total Karma
4,425
Link Karma
2,593
Comment Karma
1,656
Profile updated: 4 days ago
Posts updated: 7 months ago
:blaze:

Subreddit

Post Details

We try to extract some basic information from the post title. This is not always successful or accurate, please use your best judgement and compare these values to the post title and body for confirmation.
Posted
10 years ago