World Generation

For discussion on the most 'core' concepts and ideas for the first version of the SOTE project. This is for absolutely necessary mechanics and ideas that form the backbone of the game.
Post Reply
GamesvonJames
Posts: 8
Joined: Wed Jun 28, 2017 4:51 am

World Generation

Post by GamesvonJames » Fri Dec 29, 2017 7:47 am

So, first off I'm sure you guys have a lot of this thought out already. But I'm just going to layout how I would set up the world generation for a game like SotE. And, one thing to remember, this is coming from someone who has zero coding experience or knowledge, so don't be afraid to shoot some of these ideas down because they are difficult or impossible to code, or just not worth simulating. I'm hoping that this can start some good conversation on the development of the game!

Ok, so first, for simplicity's sake we need to set out some constants and limits. Some of these can be represented in game, others are just things that we assume are there and don't need to even be represented in code at all.

So, the world which this simulation will take place on should always have a 24 hour earthlike day. This just gives us a base measuring point for time. I don't think a year, or one orbit of this planets star, should be identical to Earth, I think it should be able to vary some. Something between 100 and 600 days per year, and that number can be chosen randomly. The planet should be earthlike in both composition and atmosphere. This keeps the game simple and doesn't need to be represented in game, just something that you should know. The size of the planet depends on game performance obviously. I am not sure on any technical aspects of the simulation, but I think there should be some variation in planet size during world gen. This would obviously help provide a nice randomization factor.

This is kind of a sidetrack. What is the gameplay area going to look like? Is it going to be a flat projection like EU4? Or a sphere, similar to Rimworld's world? I'm going to assume a sphere, because I feel like I read that somewhere. So that is how I'll base the rest of my explanation.

Anyway, back to the world. For another simplicity option, let's just assume that the planet orbits a sunlike star and is in the relative middle of its habitable zone, like Earth. These aren't things that need to be represented at all, just things that are known by the devs. Next thing would be to give it a pole, some tilt, and a wobble. This will help to determine how seasons and climate work on the planet. I think an angle for the tilt of the pole should be anywhere between 0 and 30-45 degrees (Earth is at roughly 23 degrees). This combined with a wobble will determine the severity and length of seasons.

The angle of the polar tilt determines your base climate zones and seasons. If you have zero tilt, you have a static planet that has no seasons and temperature generally gets colder as you move away from the equator. If you have a 10 degree tilt, you have a colder part of the year and a warmer part of the year. The more angle you add, the more noticeable it gets. If we go all the way up to 45 degrees we would get winters that are much colder, and darker, than the summers.

The next thing to add would be a wobble to the polar tilt. This would provide a change in seasons. So, for example, Earth has a wobble in its polar axis that takes something like 44000 years to complete one wobble. For this, lets set that as zero change in season. So, this would mean that your seasons would never change over the course of an entire game, which I assume would be at least a couple thousand years on average. Now, lets say that we want to have a planet that, if it had no wobble, has a 20 degree polar tilt. Now lets add a wobble that takes 200 years to complete, and moves 15 degrees in each direction from the polar tilt. So, instead of just staying at 20 degrees, every 100 years it would change between 5 degrees and 35 degrees. Which would cause seasons to change in severity, which I think would be an interesting mechanic. This is a mechanic that might be too hard to implement. Or could possibly be implemented in a later version of the game. For now, you might just want to randomize the polar tilt in order to provide some variation in seasons.

So now that we have a sphere, that is tilted on an axis and is orbiting a star, we can add detail to its surface. The first thing we would probably need to do is create tectonic plates and oceanic ridges. (This is where I think my ideas will start to get less realistic, and someone else may very well have a much better plan.) I have no idea if it is possible or not code wise, but my first thought would be to just randomly shatter the planet into large groups of tiles. Then you add the directions of the very slow movement. Not sure how the program should decide what direction a plate moves, that is something I'll have to think more on. The next thing you would need to do is randomize a highest point and a sea level. (At this point, you would need to randomly generate a heightmap of some sort, not sure on what to do here either.) Obviously anything below the sea level doesn't need to have much more detail since it is underwater and during the course of a game that would not change. Anything between the highest point and sea level becomes land. Then you have the program pull up the tectonic plates and see where any plates meet that are on land. The code, not sure how you would do this, then determines the type of plate boundary. You have convergent, where one plate goes under another. Divergent, where two plates move away from each other. Transform, where two plates move parallel to each other. Mountains and volcanoes tend to form near convergent boundaries, so this would provide the program with where its highest points should be. Or, if a convergent boundary is below sea level, you would have islands. Divergent are where your oceanic ridges and rift valleys form. If it is below sea level it would be an oceanic ridge. Now, I'm not sure what impact these ridges have, other than just showing us where two plates move away from each other. So documenting these, and really anything underwater, for players to see isn't probably necessary. Transform boundaries, don't really do much for land generation, so they probably don't have any real application during world gen.

This is a pretty good article for Plate Tectonics.
http://csmgeo.csm.jmu.edu/geollab/vageo ... lates.html

So, at this point I hope anyone reading this is still staying on track and I haven't lost everyone. I'm going to keep going with things I think are important to finishing the generation of the world, but I just want to state that if anyone thinks this is too detailed, or not able to be coded I apologize.

Anyway, the next thing this planet needs is some sort of basic weather system to help determine general climate zones. First thing to help with this would be some sort of prevailing wind setup. Now, considering we don't have any other real planetary weather system to judge, I think we should just keep with Earths basic wind direction system. At this point this planet's tropics will be determined. Each line of tropic is determined by the polar tilt of the planet. Let's take Earth for example, with Earth's 23 degree polar tilt the tropics go to 23 degrees north and south of the equator. So at this point we add the prevailing winds. North and south of the tropics you have winds that prevail to east from the west. From the tropics to the equator you have the opposite and flowing towards the equator. This ends up giving basic ideas for where plains, deserts and other climate zones will end up being.

At this point, I need to start doing a bit more research on climate zones and how they develop. That will probably be another big post in this topic. Anyways, I'm hoping this gets some good conversations going and helps you guys with the coding. I wish I had any knowledge of coding so that I could help get this going.
Last edited by GamesvonJames on Tue Jan 02, 2018 8:22 am, edited 1 time in total.

Chease
Posts: 20
Joined: Wed Jul 12, 2017 2:54 pm

Re: World Generation

Post by Chease » Fri Dec 29, 2017 10:43 am

Very interesting thoughts.
What I would like to add would be the factor of moons. Different amouts of moons would have different effects on the plane. The different sizes would habe a different pull and would also have different lunar cicles to influence the weather.
I would say we should look at what no moon would change to see if that is a possibility and up to how many we want to go to have a good ranomized chance. I belive this would also influence the amount of tilt the planet has and could maybe even pull the planet for drastic weather changes if they maybe all close to alligne.
But what more moons would also mean would be less asteroids falling on the planet so if we want to moddel that we would need to change the value depending on the amount and size of the moons.
Then do we want to differentiate between low and high tide and are those values even important?
I could see use of this: Lets take the EUIV values as an example. You would have an Island that would get +20% Siegedefense, but on low tide you can get by foot to the land so the boni would be reduced to 10% on low tide. Depenting on how we implement the tides and how long the cicle for the tides are we could either just take the average value of low and high tide or we take the exact time into account for those things but i belive the first would be better for the speed we are going for.

Demiansky
Posts: 50
Joined: Thu Jun 22, 2017 4:03 pm

Re: World Generation

Post by Demiansky » Fri Dec 29, 2017 12:17 pm

Italian, great input on climate factors, polar tilt, tropics location, etc. Initially, our earlier models will be simpler (so we'll start with conditions similar to Earth's when it comes to polar tilt, tropics locations, etc) and build out the model once we have some of the other higher up core mechanics in place.

We also are in fact using a sphere, and the very first step is going to be creating tectonic plates. This is essential for generating some good elevation data, and the assigning of the plate part isn't necessarily too difficult. In fact, even generating the the elevation wouldn't necessarily be too difficult based on plate convergence (directionality might not be hard either). What does get a little tricky is generating "old mountains" vs "new mountains." So for instance, the Appalachians are in the middle of the North American plate but were once on the edge 500 million years ago. However, they gradually got pushed to the middle and were slowly weathered down.

Anyway, one important thing to sort out that isn't mentioned is wind current patterns, which we'll need to determine in a large part local moisture. One thing that would be especially helpful to us is if you can edit the beginning of this topic and add in resources we can refer to as we model. It'll be a little while longer before we get to climate factors, so having something concise to refer to would be very helpful!

User avatar
gutza1
Posts: 20
Joined: Fri Jun 23, 2017 1:12 pm

Re: World Generation

Post by gutza1 » Fri Dec 29, 2017 3:08 pm

Hmm. Causing variations in world size would introduce a new headache: different gravitational constants for the planet, which would affect biology and technology. Unless, of course, we handwave it by saying that the density of the core varies instead of the gravity.

User avatar
David Buunk
Posts: 78
Joined: Thu Jun 22, 2017 4:46 pm
Location: Netherlands

Re: World Generation

Post by David Buunk » Fri Dec 29, 2017 4:26 pm

Firstly, I fully agree with Demian.

Second, a wildly varying axis of planetary rotation has issues. It greatly reduces climate stability, and thereby the chances of advanced lifeforms evolving. It would also mean no (large) moon, and thus no tides, with all the inhibitory effects on sea to land evolution. That being said, these parameters (length of day, year, axial tilt, moons, would be fun to mess around with, but it's very top hat beaver.
Programming SotE.

GamesvonJames
Posts: 8
Joined: Wed Jun 28, 2017 4:51 am

Re: World Generation

Post by GamesvonJames » Sun Dec 31, 2017 5:14 am

Demiansky wrote:
Fri Dec 29, 2017 12:17 pm
Italian, great input on climate factors, polar tilt, tropics location, etc. Initially, our earlier models will be simpler (so we'll start with conditions similar to Earth's when it comes to polar tilt, tropics locations, etc) and build out the model once we have some of the other higher up core mechanics in place.

We also are in fact using a sphere, and the very first step is going to be creating tectonic plates. This is essential for generating some good elevation data, and the assigning of the plate part isn't necessarily too difficult. In fact, even generating the the elevation wouldn't necessarily be too difficult based on plate convergence (directionality might not be hard either). What does get a little tricky is generating "old mountains" vs "new mountains." So for instance, the Appalachians are in the middle of the North American plate but were once on the edge 500 million years ago. However, they gradually got pushed to the middle and were slowly weathered down.

Anyway, one important thing to sort out that isn't mentioned is wind current patterns, which we'll need to determine in a large part local moisture. One thing that would be especially helpful to us is if you can edit the beginning of this topic and add in resources we can refer to as we model. It'll be a little while longer before we get to climate factors, so having something concise to refer to would be very helpful!
Just getting back to this tonight. The tectonic plates are going to be interesting in how you set them up. Since I know basically nothing about coding I had no ability to even attempt to get more specific with tectonic plates. Also, I'm not that knowledgeable the subject of tectonics. The old mountains vs new mountains issue will be interesting. Simulating the erosion over time in older mountains will be interesting, I guess for a lack of better terms. I'm not sure what will need to be done at all in order to get the program to simulate the movement and interactions between tectonic plates, but I'm looking forward to what you guys do with it! :D

I mentioned wind currents a little bit in my post. One thing that I think should be kept in the SotE model is the prevailing winds of Earth. This would give you some information on how moisture moves in the atmosphere. Another thing that this would affect, as from my research it influences it on Earth, would be the Ocean currents. Ocean currents tend to be directly influenced by prevailing winds and are contained by continents. North of the equator they move clockwise, south of the equator they move counter-clockwise.

What exactly were you wanting me to add to the topic? A list that has some basic mechanics that are in the post? Let me know and I will edit it.

When I respond to you guys I am going to try and keep it color coded, just to make it easier for us all to read if these discussions get deeper.

GamesvonJames
Posts: 8
Joined: Wed Jun 28, 2017 4:51 am

Re: World Generation

Post by GamesvonJames » Sun Dec 31, 2017 5:30 am

gutza1 wrote:
Fri Dec 29, 2017 3:08 pm
Hmm. Causing variations in world size would introduce a new headache: different gravitational constants for the planet, which would affect biology and technology. Unless, of course, we handwave it by saying that the density of the core varies instead of the gravity.
I guess I wasn't thinking that the simulation would actually be taking into effect the different changes in gravity surface size would indicate for the sphere. I was thinking just for a pure gameplay aspect, that if you could change the size of the surface it would provide a somewhat different gameplay style. Smaller worlds could be quicker simulations and larger worlds could end up having multiple smaller regions that evolve at different speeds.
David Buunk wrote:
Fri Dec 29, 2017 4:26 pm
Firstly, I fully agree with Demian.

Second, a wildly varying axis of planetary rotation has issues. It greatly reduces climate stability, and thereby the chances of advanced lifeforms evolving. It would also mean no (large) moon, and thus no tides, with all the inhibitory effects on sea to land evolution. That being said, these parameters (length of day, year, axial tilt, moons, would be fun to mess around with, but it's very top hat beaver.

Length of year, changes to seasons, and axial tilt are all things that I really didn't intend to have a direct impact on the outcome of life coming to be on the planet. I mainly stated these things as they could provide different gameplay options. In my opinion the basic nature of the climate in any of the worlds generated by this program should be earthlike, even if that would go away from being a true simulation. Moons are another topic that I hadn't really thought about. For all intents and purposes it should probably stay at one for now.

Basically my thoughts on it are, that the program should generate a earthlike planet using whatever tectonics system you guys develop. Then it can tilt the planet and slow its orbit. But all the basics of Earth should still be there. It can support life, the seasons might be a bit crazy, but hopefully the life that we set on the surface can adapt to it. I'm rereading this and I feel like I am not getting my exact point across that I am trying to get. If I can get that point set into a few sentences I will post it here.

Demiansky
Posts: 50
Joined: Thu Jun 22, 2017 4:03 pm

Re: World Generation

Post by Demiansky » Sun Dec 31, 2017 2:00 pm

GamesvonJames wrote:
Sun Dec 31, 2017 5:14 am
Demiansky wrote:
Fri Dec 29, 2017 12:17 pm
Italian, great input on climate factors, polar tilt, tropics location, etc. Initially, our earlier models will be simpler (so we'll start with conditions similar to Earth's when it comes to polar tilt, tropics locations, etc) and build out the model once we have some of the other higher up core mechanics in place.

We also are in fact using a sphere, and the very first step is going to be creating tectonic plates. This is essential for generating some good elevation data, and the assigning of the plate part isn't necessarily too difficult. In fact, even generating the the elevation wouldn't necessarily be too difficult based on plate convergence (directionality might not be hard either). What does get a little tricky is generating "old mountains" vs "new mountains." So for instance, the Appalachians are in the middle of the North American plate but were once on the edge 500 million years ago. However, they gradually got pushed to the middle and were slowly weathered down.

Anyway, one important thing to sort out that isn't mentioned is wind current patterns, which we'll need to determine in a large part local moisture. One thing that would be especially helpful to us is if you can edit the beginning of this topic and add in resources we can refer to as we model. It'll be a little while longer before we get to climate factors, so having something concise to refer to would be very helpful!
Just getting back to this tonight. The tectonic plates are going to be interesting in how you set them up. Since I know basically nothing about coding I had no ability to even attempt to get more specific with tectonic plates. Also, I'm not that knowledgeable the subject of tectonics. The old mountains vs new mountains issue will be interesting. Simulating the erosion over time in older mountains will be interesting, I guess for a lack of better terms. I'm not sure what will need to be done at all in order to get the program to simulate the movement and interactions between tectonic plates, but I'm looking forward to what you guys do with it! :D

I mentioned wind currents a little bit in my post. One thing that I think should be kept in the SotE model is the prevailing winds of Earth. This would give you some information on how moisture moves in the atmosphere. Another thing that this would affect, as from my research it influences it on Earth, would be the Ocean currents. Ocean currents tend to be directly influenced by prevailing winds and are contained by continents. North of the equator they move clockwise, south of the equator they move counter-clockwise.

What exactly were you wanting me to add to the topic? A list that has some basic mechanics that are in the post? Let me know and I will edit it.

When I respond to you guys I am going to try and keep it color coded, just to make it easier for us all to read if these discussions get deeper.
So I was requesting that your perhaps provide us to scholarly resources so that we can bone up on these subjects. Could be as simple as some good summaries on the internet of these principles or (even better) some audio books so I can bone up while I'm at work.

GamesvonJames
Posts: 8
Joined: Wed Jun 28, 2017 4:51 am

Re: World Generation

Post by GamesvonJames » Sun Dec 31, 2017 4:18 pm

Ahh, will do. I'll look into it later today.

GamesvonJames
Posts: 8
Joined: Wed Jun 28, 2017 4:51 am

Re: World Generation

Post by GamesvonJames » Tue Jan 02, 2018 8:23 am

Will post links in main post as I find them.

Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests