Jump to content

Generating the world


Stroam

Recommended Posts

I've looked into worldgen from time to time changing my opinions as I went. I've now changed m mind yet again.

I've wanted world wrapping where if one goes off one side of the map they come back on another. I wanted this to limit spread of players, make world generation easier, and balance out travel distances such that someone at the center of the map didn't have and advantage over others. Then I looked at the technical hurdles and decided that both north to south wrapping and east to west wrapping was not worth the time spent on the technical hurdles that happened at the corners.

So I decided just east to west wrapping was fine and that the north pole and south pole could just go on forever. Then I studied the rationals behind flat earthers and other fantasy maps with a world edge. I thought about the gains to the gameplay of playing on such maps. I made the following list for what I was looking for.

  • A variety of climates so as to provide enough diversity for player enjoyment
  • Some sort of game logic that determines placement of the climates that players can understand.
  • A map where the center is not an advantage.
  • Resources tend to be clumped and not near each other to encourage diversity and trade.
  • Encourages a variety of travel methods

After all my research and considerations I came upon the notion that we don't need world wrap to make the center not an advantage. As obvious as it may sound, it took me a long time to come to the conclusion that by making the center a place one would not want to make a base it solves the issue without world wrap.

This idea brought me back to the eyeball planet. There's several issues with the eyeball planet but it does tick all the items in the list which is why I think it's a good candidate. Just need to solve some of it's issues first.

First issue is which should the hot or cold end be the center. If you look at several fantasy maps with edges, many of them have the outside being very cold. This makes sense for a couple of reasons but really we only need the most basic. If you place something hot on the ground you instinctively know the closer you get the more you feel the warmth. 

Then comes the issue of on an eye ball world the sun is always in the same place in the sky. This creates two issues. The light level is always constant in an area, and it means no season. To fix one part of this, just like the earth has a tilt the eyeball planet needs to wobble. The wobble causes changes in temperature and therefore weather and seasons. For the day night cycle we'll have to get more creative.

If you've ever been to a point on the earth where it feels like the earth wobbles like the far north, during the summer the sun goes up in the sky and then behind the horizon but it never gets dark. At midnight it's like morning or evening when the sun is out of sight but you can still see light coming over the horizon. Conversely, during the winter it barely peaks over the horizon before going back down into darkness. 

Lets look at this from a gameplay perspective. It means at the edge of the map it'll be perpetual darkness and at the center it'll always be day. In between the closer you are to the center the ratio of day to night will skew more in favor of the day and the further from the center the more it'll skew to the dark. This can actually play to the games advantage by allowing the player to choose how often they want to deal with the dark.

 

Edited by Stroam
Link to comment
Share on other sites

How would the climate rings be laid out?

Starting with the center and moving out it'd be:

  • Poisonous acid lake
  • Hot desert
  • Hot semi-arid
  • Savanna
  • Mediterranean
  • Tropical
  • Oceanic
  • Humid continental climate
  • Subartic
  • Tundra
  • Ice cap
  • Dry Ice edge

Some of these would have sharper transitions, regional variants, some might be missing or might not get added. It would be based on game play and game assets. If two regions don't look very different and play the same they might be combined or if there's enough conflict to justify more climates that would get split. Remember VS doesn't have climates in the since that MC does but has a range of attributes that determines what grows and spawns. 

Link to comment
Share on other sites

Couldn't the sun/days just work normally on the eyeball planet just for the sake of gameplay? It just wouldn't be realistic, but so is turning the earth into an eyeball planet :P I also don't really see the gameplay benefit of the eyeball earth compared to the current repeating climates, other than that it's more finite. A finite world could also archived by just lowering the world size and widening the climate ring, the map would only visibly cut off at the poles and the sides.

Other than that, I enjoy the idea of a wrapping donut-shaped world a bit more, it doesn't suffer from the corner problem and just needs tileable noise, like any wrapping world would.

Link to comment
Share on other sites

I have no idea how world generation works. I have a somewhat more in death knowledge of server administration and what used to work for TFC servers. 
What I think would work either for single player or for multiplayer is a highly configurable world generating tool. 
Like a group of settings on a screen on world creation for single player or a config file for the server.
The basic concept is to allow for this choices.
First and foremost, limited world size. No one, and I mean no one needs 600,000 x 600,000 blocks world size. 
We can have a server with 100 players in a world size of 30,000 x 60,000, but if someone disagree, that is where the config comes to help, so everyone can create a world the size they want.
Now the second choice is about the climate, Should the world have an equator in the middle, and go cold both ways? South and North? or have the equator at the bottom of the map and go cold towards North.
These 2 choices would go a long way for any server admin, but a single player would have fun in creating very small worlds, worlds that would have all the climate biomes to change on just 1000 blocks for example.
The third thing needed is to be able to choose land/water proportion, so we can generate a world with a bunch of small islands, or huge continents, again choice. 
Other than that, is just a question of having Salt water Oceans, lakes, Rivers and streams.

The word to remember here is Choice, Choice and Choice. Let the player decide what kind of world he/she 

Link to comment
Share on other sites

11 hours ago, tony Liberatto said:

 Now the second choice is about the climate, Should the world have an equator in the middle, and go cold both ways? South and North? or have the equator at the bottom of the map and go cold towards North.
 These 2 choices would go a long way for any server admin, but a single player would have fun in creating very small worlds, worlds that would have all the climate biomes to change on just 1000 blocks for example.

I think the way it's done right now, with repeating a north-south pattern covers both variants if the width of the climate bands and the world were configurable and also allowing for more than two poles.

11 hours ago, tony Liberatto said:

The third thing needed is to be able to choose land/water proportion, so we can generate a world with a bunch of small islands, or huge continents, again choice. 
Other than that, is just a question of having Salt water Oceans, lakes, Rivers and streams.

Oceans are something currently not possible in VS (without exploiting the system by creating hundreds of ocean landforms), because all landforms have the same size and changing that seems to be really complicated. I have an idea on how to allow oceans without it and a whole bunch more things, but it's most probably even more complicated.

Link to comment
Share on other sites

Ya I don't really see the point of an eyeball planet either.  And I agree that east-west wrapping is just fine.  No need for north-south.  My biggest beef is the lack of oceans - I try not to harp on it too much, but given the topic this seems like a place for it.  I don't see oceans as wasted space at all, but as a good boundary.     To me, the world gen as it is is overwhelming.  The world is infinite in all directions, effectively.  So I cannot 'finish' exploring in any direction.   This is an exhausting notion, and aggravating because it means that in any given direction I could maybe explore just a bit farther and find that one great ruin, or better landform.  The world is infinite, and yet without order, it becomes to me - in a macro sense - chaotic and potentially the same in all directions.  I think this is not optimal.

When I was in my last year of high school, I took an 'architecture class, which was basically really just meant to be learning the drafting software.   The teacher mainly taught physical education, so he knew nothing about the software, so he basically just told us 'make whatever you want'.   He gave us a project without boundaries, and the result of having no boundaries means that you have no basis in which to anchor.  Projects were dull and pedestrian.  It was high school of course.   But still, what I realized later in my college courses is that boundaries and unique conditions are what make projects interesting.   They're what defines them and gives them character.  I think the same is true of world generation.

I think that having oceans would add good boundaries to the game.  A player can reach an ocean, and then 'check off' that direction in their mind, and focus in another direction.   Rather than constantly forever having the choice at any given moment to continue in a direction endlessly, or switch directions, knowing that that direction is endless as well.  A player can establish in their mind a 'map' of their home.  A map with boundaries.  I think it is easier for a player to 'take ownership' of an area when it has well defined boundaries, as opposed to being just a part of an endless fabric. 

Moreover, I think that having oceans would allow us to have mountain ranges that make sense, and with mountains and oceans, you can have rivers and valleys.  I think the verisimilitude of the world would be greatly advanced by this.  I can't claim to know much at all about world gen, but from perusing online discussions it does seem like you need a defined 'continental areas to get this sort of thing.   So I support this general arrangement, along the lines of what Tony says.  Though specifically I would suggest 32,768 block square.  Which is 1024 chunks.  This allows a chunk-level bitmap to govern heights across the entire region, as well as mapping oceans, land, and mountains.  I think that's all you need to then start drawing rivers on that ~1mb image.  Once the rivers are drawn, the 'normal' world-gen then takes place around them, but is always (or at least mostly) 'stapled' to the rivers.   This way you don't have to worry about nonsensical elevation changes, because the rivers govern the elevation in their chunks.  From what I've read, it's doable, it's just a matter of how much area you want in your zone.   A 32k square is a lot of space - much more than TFC2 had for each 'island', and I think you could create a great diversity of landforms in that area.  Anything from archipelagos to Continents.   As long as each zone is guarantee to have *some* land, I think you could avoid the vast ocean deserts of TFC.

Moreover, you could start to organize the minerals.   You could have the top sedimentary layer tend to be thicker the closer you get to the ocean.   So if a player wants coal or other sediementary resources, perhaps explore more towards the ocean.   If you want ores found in igneous/metamorphic, head inland towards the mountains perhaps.   If you want to settle in a swamp, then the coasts will be your better bet.  If you want a mountain home, and you start on a coast, then you could know to head perpendicular to that coast, or perhaps follow a river inland. 

So ya, that's my dream in terms of world gen.

Link to comment
Share on other sites

5 hours ago, redram said:

 Moreover, I think that having oceans would allow us to have mountain ranges that make sense, and with mountains and oceans, you can have rivers and valleys.  I think the verisimilitude of the world would be greatly advanced by this.  I can't claim to know much at all about world gen, but from perusing online discussions it does seem like you need a defined 'continental areas to get this sort of thing.   So I support this general arrangement, along the lines of what Tony says.  Though specifically I would suggest 32,768 block square.  Which is 1024 chunks This allows a chunk-level bitmap to govern heights across the entire region, as well as mapping oceans, land, and mountains.  I think that's all you need to then start drawing rivers on that ~1mb image.  Once the rivers are drawn, the 'normal' world-gen then takes place around them, but is always (or at least mostly) 'stapled' to the rivers.   This way you don't have to worry about nonsensical elevation changes, because the rivers govern the elevation in their chunks.  From what I've read, it's doable, it's just a matter of how much area you want in your zone.   A 32k square is a lot of space - much more than TFC2 had for each 'island', and I think you could create a great diversity of landforms in that area.  Anything from archipelagos to Continents.   As long as each zone is guarantee to have *some* land, I think you could avoid the vast ocean deserts of TFC.

Generating a world with ocean borders is actually rather easy to implement, but there are some problems with the heightmap part. Having the heightmap either greatly limits the landfroms elevation changes or makes the heightmap useless, as 255 blocks world height don't allow for great variation.

I think a much larger overhaul would be needed, involving changing the way chunks and chunk-loading works, which would be certainly be incompatible with the current worlds or at least require a decent effort to fix: Have chunk heights vary. Not just the blocks in the chunks, but the actual chunks, or chunk columns to be exact. This would allow for highlands, kilometers above sea-level, and oceans, kilometers below sea level, without needing to change the landform system, the 3d-noise system, in any way.

To make the system work one additional feature is required: Infinite depth and height. Chunks below or above the chunk column would not need to be generated with the columns, since they are not dependent on the landforms. They are just empty chunks above and stone/ore/cave filled chunks below and are generated when the player is close enough to them. Infinite world height/depth would also sound cool for the marketing and is really something people expect with cubic chunks.

Link to comment
Share on other sites

On 8/17/2019 at 5:09 AM, Erik said:

Generating a world with ocean borders is actually rather easy to implement, but there are some problems with the heightmap part. Having the heightmap either greatly limits the landfroms elevation changes or makes the heightmap useless, as 255 blocks world height don't allow for great variation.

The heightmap in my example is primarily for establishing oceans-mountain-river relationships, and giving rivers direction.  It would - for the reason you mention - need to be limited in it's max height.  Perhaps to 80% of world height or something.   And it would be a uniform smooth slope, unless occasional jumps for waterfalls were necessary/possible.  The landform heights would essentially be added on top.  That would hopefully leave room at the 'top' for mountain-like stuff to happen.  So your chunk map might have an elevation of 160 at one chunk, but then the landform noise on top is what adds the interesting detail, perhaps adding up to 50 additional blocks of variation in height.  That's be total 210 blocks at the example point (160+50).   Even at the max chunk map height of 200 (for a 250 world height), 50 in variation would be safe (though not allow for trees, so there'd perhaps need to be a 'tree line' elevation).  It'd take some consideration and condition, but I think it's doable.

This would probably have an effect on the max continent size you'd want.  If sea level is 110 and the max elevation of the chunk map is 200, then you've got 90 height gain max from ocean to mountains.  90x32 gives about 2900 individual blocks of 'run', if elevation decrease by 1 at every chunk.  So a max continental 'diameter' of about 5800 blocks.  Which is a lot, but far short of 32k.  Which may be alright though; it'd allow for large oceans and bays and lakes internal to the continental box of 32k square, which would help break things up so the 32k box is not as obvious.   Of course if there could be areas where the elevation doesn't decrease at every chunk, that'd help extend the width of the continent.

The chunk column stuff would be great of course, but I imagine would be an incredible amount of engine overhaul?

Edited by redram
Link to comment
Share on other sites

4 hours ago, redram said:

Even at the max chunk map height of 200 (for a 250 world height), 50 in variation would be safe (though not allow for trees, so there'd perhaps need to be a 'tree line' elevation).  It'd take some consideration and condition, but I think it's doable.

50 blocks seems like an acceptable range, if the landforms get updated to it. But some things, like the big open caverns created by landforms below the surface wouldn't be possible, as landforms would only be possible to edit the upper fifty blocks. Landforms being able to fill out all the remaining area would ofc make the whole system irrelevant, because it would make oceans impossible again.

5 hours ago, redram said:

The chunk column stuff would be great of course, but I imagine would be an incredible amount of engine overhaul?

Probably. The terrain generation would require minimal changes, but a whole new terrain generator for the stuff below the column would need to be added. Chunk loading would require an extension or replacement to have 3D chunk loading. The terrain saving structure may also be needed to be overhauled. And the lightning engine would need some changes. The good thing is that chunks are already cubic, so it wouldn't be a total redesign, but it would probably still take a month.

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.