The goal from the outset was to create terrain that was genuinely interesting. The inspiration is that different places in the world have different terrains with evocative differences not only in colour palette (so to say), but also in the altitudes of terrain.
It began with a frustration of the mountains in something like Planet Zoo, which are mostly flat, singular, and always far away from the coastline. Instead, I wanted mountain-ranges and rocky coastlines, and flat inner-country mesas, like those of Spain.
How to do that? I made a post specifically about it here. I will make specific posts about the other terrains too, in time.
Working on it, it turned into Greece instead, since submerged mountain-ranges made great islands. So this is Greece:
Note that some parts are quite flat while others are much more chaotic and fragmented.
And it just continued from there. I made, in total, nine different terrains, each with unique terrain and colour-palette. That is, they are not just colour-swaps. For instance, Morocco trades mountains for sand dunes:
Florida has the same focus on islands as Greece, but the islands are much flatter, and the terrain is much more muted:
I ended up making nine unique terrains. This allowed me to do a 3x3 grid of terrain types. One dimension is humidity - from humid Florida, over balanced Greece to arid Morocco. The other dimension is temperature. All three above are designated as "hot" biomes. Cold biomes have snow, modelled on Scandinavia, and temperate biomes are modelled on central Europe.
This is the Netherlands, neither hot or cold, arid or humid, but right in the centre. Here I implemented fields, as you can see in their all-too glitchy current state. Both towns and farms are, er, more work-in-progress than the terrain, for certain. The current method is run-time, that is, every pixel must be generated independently of its neighbours, which makes civilisation pretty difficult.
Anyway, Netherlands. Generally flat terrain with the occasional hills. More importantly, it has rivers! The piece of water that intersects all the way through would go on to the next tile and so on, creating long diagonal rivers across the country - canals as they probably would be in the case of the Netherlands.
As arid as Morocco, but not as warm, Madrid has the occasional mountains and long, dry swaths of land. Some parts might have snow-tipped mountains, but not all.
Finland as seen above is temperate and humid. It is always difficult to tell, since any terrain might be part of the coastline, but the water above is not actually the sea, but lakes! Unique to Finland, some semi-round areas are made into lakes. Apart from that, it is more forested than other areas. As with the other temperate climates, the colours are more muted.
Norway is the intermediate cold biome. In some parts, all is covered in snow, other parts, only the mountains. The terrain, paradoxically, is only slightly modified from regular Perlin noise, meaning that mountains stay away from the coasts, and the terrain has a general ∩-shape. Norway has the brightest water.
Sibir is a more arid version of Norway. Mountains are rarer but taller. The terrain overall is quite tall. Trees are dark gray and the colours range from moss-yellow by the coastline to dark mountains.
Finally, Antarctica. It is a giant ice-sheet, a glacier, what were you expecting? But still, it is not just white. It is dyed purple and blue, and has some characteristic-if-hard-to-see chasms. In full 3D, it might be just as interesting to explore as other terrains, but when seen from a distance, of course it should be boring. It is Antarctica, after all.
And then, you can blend all these regions together using two Perlin noise gradients of temperature and humidity to create terrains!
I don't know if this is any good. The problem is that at some point, too much detail is just too much. Each terrain was made to be interesting in itself, both when zoomed in and zoomed out. But this might be too far zoomed out. If you were playing Minecraft and took five hours trekking from one end of the world to the other, this might be perfect. But here - this is just a bit too much.
Still, let me give some bits and pieces of the above picture. Click for full-size images!
Evaluation
There are three directions to take this project. One would be to fix up the town generation, switch it to be post-hoc. This would make it easy to create roads and civilisations, and see if this can be used to make interesting maps. Here, I tried to cram all nine biomes into one map, but that probably is not necessary. You could have one continent with just two or three of them.
Another would be to just focus on the terrains. Perhaps adding a few more. The world has a lot more to offer. I want to explore the whole colour palette: make autumnal forests, volcanoes and onyx, dense rainforests, and some other terrain I can create a plausible explanation for being blue. Perhaps some fantasy terrains, like flesh-like corruption, ancient civilisations and symbols etched in the ground.
A third would be to take this algorithm and put it into my Minecraft-clone. Or maybe start over on that project. Create a game to actually use this terrain for something. I've done a bit of thinking, and this method probably would be good to make a game with. It is runtime generation, after all. Each pixel can be generated independent of the others.
Perhaps I should wait a couple of weeks after a project before writing an evaluation, because this is much too saccharine.
Openprocessing
The whole project was made in Openprocessing, and is therefore available there for your own perusal, as well as source code if you want inspiration. I might go back and annotate the two important scripts, get_height() and get_col(), as they do all the heavy lifting.
And now, all that is left for me to do is to write seven more posts about specific terrains. Florida is coming up on the 12th, if I do not reschedule. Generating towns is another post I've written, coming up on the 10th. I also want to do a post about how to make interesting colour-palettes, though the main advice will be the same as in The Last Flame.
It began with a frustration of the mountains in something like Planet Zoo, which are mostly flat, singular, and always far away from the coastline. Instead, I wanted mountain-ranges and rocky coastlines, and flat inner-country mesas, like those of Spain.
How to do that? I made a post specifically about it here. I will make specific posts about the other terrains too, in time.
Working on it, it turned into Greece instead, since submerged mountain-ranges made great islands. So this is Greece:
Note that some parts are quite flat while others are much more chaotic and fragmented.
And it just continued from there. I made, in total, nine different terrains, each with unique terrain and colour-palette. That is, they are not just colour-swaps. For instance, Morocco trades mountains for sand dunes:
Florida has the same focus on islands as Greece, but the islands are much flatter, and the terrain is much more muted:
I ended up making nine unique terrains. This allowed me to do a 3x3 grid of terrain types. One dimension is humidity - from humid Florida, over balanced Greece to arid Morocco. The other dimension is temperature. All three above are designated as "hot" biomes. Cold biomes have snow, modelled on Scandinavia, and temperate biomes are modelled on central Europe.
This is the Netherlands, neither hot or cold, arid or humid, but right in the centre. Here I implemented fields, as you can see in their all-too glitchy current state. Both towns and farms are, er, more work-in-progress than the terrain, for certain. The current method is run-time, that is, every pixel must be generated independently of its neighbours, which makes civilisation pretty difficult.
Anyway, Netherlands. Generally flat terrain with the occasional hills. More importantly, it has rivers! The piece of water that intersects all the way through would go on to the next tile and so on, creating long diagonal rivers across the country - canals as they probably would be in the case of the Netherlands.
As arid as Morocco, but not as warm, Madrid has the occasional mountains and long, dry swaths of land. Some parts might have snow-tipped mountains, but not all.
Finland as seen above is temperate and humid. It is always difficult to tell, since any terrain might be part of the coastline, but the water above is not actually the sea, but lakes! Unique to Finland, some semi-round areas are made into lakes. Apart from that, it is more forested than other areas. As with the other temperate climates, the colours are more muted.
Norway is the intermediate cold biome. In some parts, all is covered in snow, other parts, only the mountains. The terrain, paradoxically, is only slightly modified from regular Perlin noise, meaning that mountains stay away from the coasts, and the terrain has a general ∩-shape. Norway has the brightest water.
Sibir is a more arid version of Norway. Mountains are rarer but taller. The terrain overall is quite tall. Trees are dark gray and the colours range from moss-yellow by the coastline to dark mountains.
Finally, Antarctica. It is a giant ice-sheet, a glacier, what were you expecting? But still, it is not just white. It is dyed purple and blue, and has some characteristic-if-hard-to-see chasms. In full 3D, it might be just as interesting to explore as other terrains, but when seen from a distance, of course it should be boring. It is Antarctica, after all.
And then, you can blend all these regions together using two Perlin noise gradients of temperature and humidity to create terrains!
I don't know if this is any good. The problem is that at some point, too much detail is just too much. Each terrain was made to be interesting in itself, both when zoomed in and zoomed out. But this might be too far zoomed out. If you were playing Minecraft and took five hours trekking from one end of the world to the other, this might be perfect. But here - this is just a bit too much.
Still, let me give some bits and pieces of the above picture. Click for full-size images!
Evaluation
There are three directions to take this project. One would be to fix up the town generation, switch it to be post-hoc. This would make it easy to create roads and civilisations, and see if this can be used to make interesting maps. Here, I tried to cram all nine biomes into one map, but that probably is not necessary. You could have one continent with just two or three of them.
Another would be to just focus on the terrains. Perhaps adding a few more. The world has a lot more to offer. I want to explore the whole colour palette: make autumnal forests, volcanoes and onyx, dense rainforests, and some other terrain I can create a plausible explanation for being blue. Perhaps some fantasy terrains, like flesh-like corruption, ancient civilisations and symbols etched in the ground.
A third would be to take this algorithm and put it into my Minecraft-clone. Or maybe start over on that project. Create a game to actually use this terrain for something. I've done a bit of thinking, and this method probably would be good to make a game with. It is runtime generation, after all. Each pixel can be generated independent of the others.
Perhaps I should wait a couple of weeks after a project before writing an evaluation, because this is much too saccharine.
Openprocessing
The whole project was made in Openprocessing, and is therefore available there for your own perusal, as well as source code if you want inspiration. I might go back and annotate the two important scripts, get_height() and get_col(), as they do all the heavy lifting.
And now, all that is left for me to do is to write seven more posts about specific terrains. Florida is coming up on the 12th, if I do not reschedule. Generating towns is another post I've written, coming up on the 10th. I also want to do a post about how to make interesting colour-palettes, though the main advice will be the same as in The Last Flame.
Comments
Post a Comment