fractal/multi-scale mapgernator
- Casimir
- Member
- Posts: 1206
- Joined: Fri Aug 03, 2012 16:59
- GitHub: CasimirKaPazi
fractal/multi-scale mapgernator
Look at those Multi Scale Turing Patterns.
The interesting thing on this is that it produces large patterns and a great variety in those patterns, you have order and chaos.
When you look at a minetest map it seems very random. You have small patches that have nothing much to do with those next by. There are lakes but no oceans, mountains but no alps, some flat areas but no great plains. I think, with a multi scale mapgenerator you will have all of those and really mindblowing maps that look much more realistic that have more structure. Just try to imagine it.
The interesting thing on this is that it produces large patterns and a great variety in those patterns, you have order and chaos.
When you look at a minetest map it seems very random. You have small patches that have nothing much to do with those next by. There are lakes but no oceans, mountains but no alps, some flat areas but no great plains. I think, with a multi scale mapgenerator you will have all of those and really mindblowing maps that look much more realistic that have more structure. Just try to imagine it.
- Phitherek_
- Member
- Posts: 112
- Joined: Thu Aug 23, 2012 16:17
- Location: Kraków
- Contact:
Ingame map generation control.
Much like how other games let the player move sliders and bars to control map generations, the future of maps also needs to allow the players this ability.
Sliders:
Smooth------------Rough
Low Mountains--------------------Ridiculous Mountains (Altitude)
Something here--------------------Something there
Checks:
Terrain Types(Snow, Desert, Oceans, Rivers, etc)
Etc
Much like how other games let the player move sliders and bars to control map generations, the future of maps also needs to allow the players this ability.
Sliders:
Smooth------------Rough
Low Mountains--------------------Ridiculous Mountains (Altitude)
Something here--------------------Something there
Checks:
Terrain Types(Snow, Desert, Oceans, Rivers, etc)
Etc
- PilzAdam
- Member
- Posts: 4026
- Joined: Fri Jul 20, 2012 16:19
- GitHub: PilzAdam
- IRC: PilzAdam
- Location: Germany
That would be the "nec plus ultra"!NakedFury wrote:Ingame map generation control.
Much like how other games let the player move sliders and bars to control map generations, the future of maps also needs to allow the players this ability.
Sliders:
Smooth------------Rough
Low Mountains--------------------Ridiculous Mountains (Altitude)
Something here--------------------Something there
Checks:
Terrain Types(Snow, Desert, Oceans, Rivers, etc)
Etc
-
- Member
- Posts: 160
- Joined: Tue Sep 18, 2012 22:11
i dont think that those patterns would be the right choice, especaly as im not shure if a continous generation of landscape would be possible.
i do think the perlin-noise needs some fine-tuning (or, as mentioned some cool system like biomes but it would not be as easy as that as we have a f*ng gigantic map and it would be great to have some sky- or cave biomes.
that task actualy sounds quite interesting, im thinking about trying it myself…
i do think the perlin-noise needs some fine-tuning (or, as mentioned some cool system like biomes but it would not be as easy as that as we have a f*ng gigantic map and it would be great to have some sky- or cave biomes.
that task actualy sounds quite interesting, im thinking about trying it myself…
Gr8 b8, m8. I rel8, str8 appreci8, and congratul8. I r8 this b8 an 8/8. Plz no h8, I'm str8 ir8. Cr8 more, can't w8. We should convers8, I won't ber8, my number is 8888888, ask for N8. No calls l8 or out of st8. If on a d8, ask K8 to loc8. Even with a full pl8, I always have time to communic8 so don't hesit8.
- Casimir
- Member
- Posts: 1206
- Joined: Fri Aug 03, 2012 16:59
- GitHub: CasimirKaPazi
I admit, the video was a bad example, so it lead to some misunderstanding. What I wanted to show was the fractal-like behaviour. A Turing machine and perlin noise are two different things.
What I wanted to say is that with fractal (perlin) noise, the terrain would look more natural.
On wikipedia there are two pictures. One of perlin noise,
https://upload.wikimedia.org/wikipedia/ ... _noise.jpg
and one of fractal noise.
https://upload.wikimedia.org/wikipedia/ ... Perlin.png
Now take a look at a minetest map, it looks just like the first one (because it is generated this way). Now imagine that the picture represents the hight of the map, with white the highest points, black the deepest. You can't get high mountains this way, because there would be a lot of high mountains and no "normal" terrain left. You could scale it up, but then the terrain would be smooth and boring.
The second picture looks more like nature. In this one there are high mountains, but the terrain is still textured and interesting, no matter how deep you zoom in.
What I wanted to say is that with fractal (perlin) noise, the terrain would look more natural.
On wikipedia there are two pictures. One of perlin noise,
https://upload.wikimedia.org/wikipedia/ ... _noise.jpg
and one of fractal noise.
https://upload.wikimedia.org/wikipedia/ ... Perlin.png
Now take a look at a minetest map, it looks just like the first one (because it is generated this way). Now imagine that the picture represents the hight of the map, with white the highest points, black the deepest. You can't get high mountains this way, because there would be a lot of high mountains and no "normal" terrain left. You could scale it up, but then the terrain would be smooth and boring.
The second picture looks more like nature. In this one there are high mountains, but the terrain is still textured and interesting, no matter how deep you zoom in.
Last edited by Casimir on Thu Sep 20, 2012 11:22, edited 1 time in total.
-
- Member
- Posts: 51
- Joined: Sun Mar 11, 2012 22:06
And flat land check!NakedFury wrote:Ingame map generation control.
Much like how other games let the player move sliders and bars to control map generations, the future of maps also needs to allow the players this ability.
Sliders:
Smooth------------Rough
Low Mountains--------------------Ridiculous Mountains (Altitude)
Something here--------------------Something there
Checks:
Terrain Types(Snow, Desert, Oceans, Rivers, etc)
Etc
- Casimir
- Member
- Posts: 1206
- Joined: Fri Aug 03, 2012 16:59
- GitHub: CasimirKaPazi
Found something in C++:
https://github.com/memo/msalibs/tree/ma ... Perlin/src
The person who made it says this includes perlin and fractal noise.
I don't know much about programming, and I don't have the time, but if anyone things it would be a good idea to include it, then try it. I'm very curious what the worlds would look like.
(I can't stop thinking of it, every time I reach the top of a mountain just 42 blocks high.)
https://github.com/memo/msalibs/tree/ma ... Perlin/src
The person who made it says this includes perlin and fractal noise.
I don't know much about programming, and I don't have the time, but if anyone things it would be a good idea to include it, then try it. I'm very curious what the worlds would look like.
(I can't stop thinking of it, every time I reach the top of a mountain just 42 blocks high.)
Last edited by Casimir on Tue Dec 18, 2012 21:23, edited 1 time in total.
NakedFury wrote:Ingame map generation control.
Much like how other games let the player move sliders and bars to control map generations, the future of maps also needs to allow the players this ability.
Sliders:
Smooth------------Rough
Low Mountains--------------------Ridiculous Mountains (Altitude)
Something here--------------------Something there
Checks:
Terrain Types(Snow, Desert, Oceans, Rivers, etc)
Etc
+100500 it will be awesome - flat world with big hills for creative!
Sorry for my bad English, please help me learn it - correct my worst mistakes
- Casimir
- Member
- Posts: 1206
- Joined: Fri Aug 03, 2012 16:59
- GitHub: CasimirKaPazi
Let's talk about this again.
The problem with perlin noise is that it has a scale. You can create a quite nice terrain with it. But it has some limits.
Here you see a perlin noise terrain. Now imagine increasing the maximum hight/the amplitude. You would have steep cliffs all over, but no plain parts. When you scale it up in the other directions you would have a very smooth terrain with no detail, only big structures.
One alternative is fractal noise, but this has it's own problems.
On the first sight it looks much more like real terrain. And scaling up is no problem, you always have enough detail. But there are two issues:
- There is to much detail. In reality there are not only high and rough mountains but flat and smooth plains too.
- It is generated by using several noised on different scales that are added together. Which means that you need more calculation.
Now I came up with two ideas. First one solves the first issue, second one is not producing a real fractal noise, but is better than plain perlin.
I tried to illustrate the fist one here. On the left there is perlin noise, middle is fractal noise, right is my idea.
The middle fractal noise is done by making the first perlin at one scale, the second at half the scale, third at 1/4 scale and so on. Then they are added together with a+b/2+c/4+d/8 and so on. This looks good, but in the game you only have up and downs, no plains.
So the right noise is done like the one above, but the noises are not added completely. Instead they are multiplied with another noise to define where they are added. Imagine a big sheet of paper. You can add rocks, gravel and sand on top of it, mix it all and you have normal fractal noise. Now take the paper and add the rocks according to some perlin noise, so somewhere there are more, on other places there are less, the same for gravel and sand. You then will have some areas with plain white paper, some with rocks and sand and some with only rocks and so on. So you have much more variety. And that is what we want. And this is what is done at the right picture.
It still needs a lot if fine-tuning. But it might be a function like this:
a +(c*(d/2-1))/2 +(e*(f/2-1))/3 +(g*(h/2-1))/4 +(i*(j/2-1))/5
Keep in mind that with every iteration the scale gets smaller. (The x/2-1 thing is only to reduce the influence and make the result look better, it is not necessary)
You can try it using gimp, some layers, masks and the noise-render.
As you can see in the function the number of noises needed is now double the times than the original fractal noise.
Here comes the second idea.
This shows a sinus curve (blue). When you take the y-values and do y^2-2 you will get a second curve that is one scale smaller but stays within the same values (-2 to +2 is what we get from the perlin noise), but is one scale smaller (red). Doing it again gives another scale smaller (yellow) and so on (green). When you now add them together you will get a resulting curve that has fractal properties. When using the same method on perlin noise you will have very cheep fractal noise by only generating one perlin noise. But there is a problem with this, it is no more as random as before, it has a certain look you will recognise.
Here we can combine the first and the second idea. We use two perlin noises, create some "sub-noises" with the describes methode and add them together with the formula above.
It could look like this:
a1 +(a2*(b1/2-1))/2 +(a3*(b2/2-1))/3 +(a4*(b3/2-1))/4 +(a5*(b4/2-1))/5
While a1 is the first perlin noise, a2 is a1^2-2, a3 is a2^2-2, the same for b.
I know that fractal noise like this is totally changing the mapgen of minetest. And the worlds will be awesome and mindblowing. I tried it using paramats Land Up with only two iterations on a big scale. And the world it generates is absolute fantastic.
edit: picture fixed
The problem with perlin noise is that it has a scale. You can create a quite nice terrain with it. But it has some limits.
Here you see a perlin noise terrain. Now imagine increasing the maximum hight/the amplitude. You would have steep cliffs all over, but no plain parts. When you scale it up in the other directions you would have a very smooth terrain with no detail, only big structures.
One alternative is fractal noise, but this has it's own problems.
On the first sight it looks much more like real terrain. And scaling up is no problem, you always have enough detail. But there are two issues:
- There is to much detail. In reality there are not only high and rough mountains but flat and smooth plains too.
- It is generated by using several noised on different scales that are added together. Which means that you need more calculation.
Now I came up with two ideas. First one solves the first issue, second one is not producing a real fractal noise, but is better than plain perlin.
I tried to illustrate the fist one here. On the left there is perlin noise, middle is fractal noise, right is my idea.
The middle fractal noise is done by making the first perlin at one scale, the second at half the scale, third at 1/4 scale and so on. Then they are added together with a+b/2+c/4+d/8 and so on. This looks good, but in the game you only have up and downs, no plains.
So the right noise is done like the one above, but the noises are not added completely. Instead they are multiplied with another noise to define where they are added. Imagine a big sheet of paper. You can add rocks, gravel and sand on top of it, mix it all and you have normal fractal noise. Now take the paper and add the rocks according to some perlin noise, so somewhere there are more, on other places there are less, the same for gravel and sand. You then will have some areas with plain white paper, some with rocks and sand and some with only rocks and so on. So you have much more variety. And that is what we want. And this is what is done at the right picture.
It still needs a lot if fine-tuning. But it might be a function like this:
a +(c*(d/2-1))/2 +(e*(f/2-1))/3 +(g*(h/2-1))/4 +(i*(j/2-1))/5
Keep in mind that with every iteration the scale gets smaller. (The x/2-1 thing is only to reduce the influence and make the result look better, it is not necessary)
You can try it using gimp, some layers, masks and the noise-render.
As you can see in the function the number of noises needed is now double the times than the original fractal noise.
Here comes the second idea.
This shows a sinus curve (blue). When you take the y-values and do y^2-2 you will get a second curve that is one scale smaller but stays within the same values (-2 to +2 is what we get from the perlin noise), but is one scale smaller (red). Doing it again gives another scale smaller (yellow) and so on (green). When you now add them together you will get a resulting curve that has fractal properties. When using the same method on perlin noise you will have very cheep fractal noise by only generating one perlin noise. But there is a problem with this, it is no more as random as before, it has a certain look you will recognise.
Here we can combine the first and the second idea. We use two perlin noises, create some "sub-noises" with the describes methode and add them together with the formula above.
It could look like this:
a1 +(a2*(b1/2-1))/2 +(a3*(b2/2-1))/3 +(a4*(b3/2-1))/4 +(a5*(b4/2-1))/5
While a1 is the first perlin noise, a2 is a1^2-2, a3 is a2^2-2, the same for b.
I know that fractal noise like this is totally changing the mapgen of minetest. And the worlds will be awesome and mindblowing. I tried it using paramats Land Up with only two iterations on a big scale. And the world it generates is absolute fantastic.
edit: picture fixed
Last edited by Casimir on Mon Jan 28, 2013 01:51, edited 1 time in total.
idea: scale and amplitude depends on distancse from center -
on spawn point terrain like current, but walk 10-20km and enjoy Great mountains, oceans and big caves
..and very strong mobs too 8-)
on spawn point terrain like current, but walk 10-20km and enjoy Great mountains, oceans and big caves
..and very strong mobs too 8-)
Last edited by proller on Mon Jan 28, 2013 22:56, edited 1 time in total.
Needs more variation in height and size for the mountains, but otherwise, EPIC
My Essential Server Modpack: ServerExtended
Maintainer of the Minitest Game
[0.4.6-git] SunriseTest Minecraft-Like Hardcore Server
My Kindle broke... Online time will drop significantly.
Maintainer of the Minitest Game
[0.4.6-git] SunriseTest Minecraft-Like Hardcore Server
My Kindle broke... Online time will drop significantly.
-
- Member
- Posts: 647
- Joined: Thu Feb 21, 2013 23:54
Most CGI "fractal noise" is just the combination of multiple noise functions (e.g. Perlin or simplex noise) with different amplitudes and frequencies/wavelengths. Note that you could certainly also use a secondary long-wavelength noise function to control the blending, reducing the amplitude of high-frequency terms over large stretches in order to create smoother regions.
Who is online
Users browsing this forum: No registered users and 6 guests