I used Game Maker to construct a 3D terrain using Perlin Noise. Since I wanted to create an island, I set the noise function to return a value between 0 and 128. Then I checked each point and subtracted 128 from points at the edge of the map, and added 128 to the middle of the map, with linear interpolation in between. Then I change every value below 0 to 0 and called it water. It looks good for making an island with a single point in the middle, but they all look pretty much like this:

enter image description here

I was wondering if there was a way to get more variation in the terrain just by changing how I use the perlin noise function, or if it would just be simpler to extend my "forced mountain" strategy, maybe by randomly moving the position of the peak, or adding more peaks.

I would like to be able to create a large island with many areas of varied terrain. I want to pre-generate everything and break it up into chunks. The two issues I'm having so far is that the map looks boring, and it looks like making an island as large as I'd like would take up humongous amounts of disk space, but that's a different issue.

  • 1
    \$\begingroup\$ A simple way is to square or increase your perlin noise by some power, this will make more defined peaks and troughs. Also setting the heights between the water and the water+... to sand would add nice beaches which create more variation. \$\endgroup\$
    – Shaun Wild
    Commented Jun 28, 2016 at 14:04
  • \$\begingroup\$ The coloration is just to show height differences, actual biomes would be implemented later using moisture and temperature noise maps. I'll give squaring the noise a try. \$\endgroup\$
    – user137
    Commented Jun 28, 2016 at 14:48
  • \$\begingroup\$ Okay, post the results :P \$\endgroup\$
    – Shaun Wild
    Commented Jun 28, 2016 at 14:58
  • 1
    \$\begingroup\$ @ShaunWild You were right about more defined peaks! I may have put the exponent in the wrong part of the program. I need to go to bed now. I'll try again later. \$\endgroup\$
    – user137
    Commented Jun 28, 2016 at 15:19
  • 1
    \$\begingroup\$ Raising to a power can help; I also find that using a second perlin noise value adds a lot for variety. My notes \$\endgroup\$
    – amitp
    Commented Jun 28, 2016 at 16:59


You must log in to answer this question.

Browse other questions tagged .