first, thanks a ton to getter77.
second, I can't help but plug the FourthAge roguelike which will soon re-enter development (after a semester long break).
My goal over the semester was to do one thing: get some sort of map generation.
Thanks to some tips my lch and a weekend spent reading up on fractal and noise generation algorithms (and the availablity of existing implementations of these things), I've got a foundation for terrain generation which I am close to getting prepped for generating the kinds of maps I want for FourthAge.
I'm using Perlin Noise. It seems like a simple way to model terrain, providing a one-number-per-pixel representation. In its simplest form, the number is mapped to greyscale (higher being whiter and lower black, or vice-versa) and produces these 'plasma cloud' images. The noise can be smoothed, and multiple layers (called octaves) can even be blended together, it can even produce noise in multiple dimensions (1D, 2D, 3D, even 4D for time variable noise in 3D). These values can be mapped to discrete colors, or even objects (for example, a city scape can be made by assigning each number to a particular building, since Perlin noise tends to clump but also can look diluted, you simply place buildings that are likely to be built next to each other together in the range of numbers. This will produce cities with industrial areas, downtowns, suburbs, ect.) It seems like a very simply baseline, and to my understanding is used as base noise in other fractal algorithms.
The only issue I am wrestling with now is understanding base noise and 'permutation' tables. I've read that Perlin Noise takes base noise and applies it to the algorithm. An entire grid of base noise is memory intensive and slow, instead a lookup table (permutation table) is used. I just don't understand the relationship between the length of the table, the values (and repeated values), and what kind of base noise is provided. I understand the table cannot have a value higher than its (length - 1). What about repeated values in the table? I also understand the lookup will 'wrap-around' the table. Does this mean that it goes through cells, assigning each cell a value out of the table until it reaches the end of the table, then starts at the beginning of the table again? Doesn't this make some sort of too obvious pattern in the noise? Does my table need to be as long as the number of cells I have to prevent this? Doesn't this leave me back at the memory problem that lookup tables were originally meant to ameliorate? I just don't know.
Once I've completely grasped these issues, I'll begin working with the implementation and getting some maps out of it. I've already produced some greyscale stuff, but am not moving on until I understand the issues of base noise.
Any experts on the issue feel free to contact me