# Terrain Generation - Advanced [closed]

I need to generate terrain. Easy enough you might say, but I need to create Biomes if you will(Can't link of another name) lakes. Trees and on a height map.

So I have really no idea how to use a height map or even perlin noise. If you could help me out. I need 3D and 2D help. If you could explain the math behind it, really help me understand this for good.

• A comment on generating biomes: it's a huge topic, one that could fill a book, so I'd treat it as a separate question. The simplest ones only look at altitude and proximity to water, but you can take it as far as simulating water cycles (to find out where the rivers are), ocean and air currents, seasons, and interactions with terrain, not to mention effects based on biology. May 21, 2013 at 4:00
• I'll post the canonical link for this type of question: Polygonal Map Generation by Amit Patel. This is about 2D (top-down) terrain, but the same ideas should also be a great starting point for 3D terrain. May 21, 2013 at 4:11
• -1. There's no actual question here. May 22, 2013 at 5:44

Can I just suggest that you absolutely forget about biomes if you can't make and use height-maps yet.

Step by step is the way to go.

A +---+---+ B
|\..|\..|
|.\.|.\.|
|..\|..\|
+---+---+      Y
|\..|\..|      |
|.\.|.\.|      |
|..\|..\|      |
C +---+---+ D    ---------x


imagine the +'s as the vertices of your mesh. Simply randomize the height of the corner verts (A,B,C,D), then average the mid-verts between these, with a little randomness as well. Keep doing this foreach mid-vert until all your verts are positioned in the z direction. You'll end up with a fairly natural looking terrain. There are all sorts of ways in which you can modify your height algorithm, using various noise and smoothing methods.

There's not really any math behind generating a simple terrain mesh. Not until you look at more complex methods, when you're after more interesting results. But you have to be comfortable with generating height maps first.

I agree with the people in the comments. It's very hard to do these kinds of things. I recommend looking into Perlin Noise more before you attempt anything. Another thing is to look into Simplex Noise, but I'd start with Perlin Noise, just classier :).

Hope this gets you started. Good luck!