Generating Forest

Hello,

I’m trying to generate a realistic forest for a RTS like game. But I would need some tip about how to do it.

My guess is that I need to use Perlin Noise as it seems to do pretty much what I want to do. The problem is that I don’t understand how to pass from a function like the one showed in this thread (Perlin Noise by DzzD) to a sort of array[][] containing value to indicate where to place my trees.

u can calculate position of each next tree by algorithm like this:
void placeTree() {
x = random.nextDouble()*mapWidth;
y = random.nextDouble()*mapHeight;
double dist = distanceTillTheClosestTree()
if (dist < minDist) {
placeTree();
} else if (random.nextDouble()*k > dist) {
placeTree();
}
}

Perlin noise is the generally a good way to place trees. Often, they increase the contrast of the noise image by picking a threshold value. All points above that are moved to 1 and all below are at 0. Alternatively you can go more detailed and pick a couple of thresholds to create bands. Within each of these bands you have a tree density and you place trees to fill up the density.

One way of doing that is by splitting up the map into a grid maybe large enough to hold 3-5 trees max. Then when randomly placing trees in a band, you figure out approximately how many trees go in each grid, and use random() to place them within the grid. This should give you a more even density in the band while giving the appearance of randomness.

There might be smarter tree placement algorithms though.