Geo Realism: Discussion on a new SDK based map generator

Some map scripts already do a basic plate tectonics simulation. The perfect world and perfect mongoose scripts, for example. Also the tectonics map script that comes with the game.

These also include basic climate simulations that make rain shadow effects from peaks and such. They are not highly realistic, just better than a purely random map generated with an algorithm that takes none of this into account.

Anyhow, as a starting point you could use the plate tectonics simulation from one of those scripts.

Thanks for the info. I have used one of these scripts in the past but I cannot remember which one. I found it...lacking. It was to a minor degree the limited realism but to a much larger degree that the maps were very uninteresting and blocky looking. This was probably because it is difficult to do serious geography simulations in using a map script. Plus there was a lack of variety in land shapes/count.

The advantage of this engine is that it will allow you to use any script as a starting point. I am not saying that the resulting map will end up exactly as described by the selected generator (because tectonics will change the land substantially after millions upon millions of years), but it will look more like the configuration you want than not.

The tectonics simulator is a long time coming though. I will release the climate part of the georealism engine first. Then we will see about the tectonics simulator.
 
My thought was that starting with one of those maps instead of a random map, you'd at least get things like mountain ranges instead of a random smatterings of peaks. A basic tectonics simulation being better than no tectonics simulation.
 
My thought was that starting with one of those maps instead of a random map, you'd at least get things like mountain ranges instead of a random smatterings of peaks. A basic tectonics simulation being better than no tectonics simulation.

That may help for the short run (early versions). In the long run though, It won't matter. Here is why.

The map generator does not assign an altitude to land. So even with the climate generator, altitudes will have to be assigned (somewhat randomly, based on plot type). For the tectonics simulator, the entire map will be wiped clean of all data except for the fact that there is land. Land and their area assignment will help determine where plate boundaries are. Starting elevations will be loosely based on plot type but only in a very general sense. In other word, the maximum elevation for starting lands will only be a couple hundred meters. So while hills may be scattered, no mountains will exist.

THEN the simulator will start, creating mountains where collisions occur (on the non-subducting plate). Plate divisions and joining will randomly occur. After many rounds through this and after simulating erosion as well, we will get a resulting landscape with a decent number of mountain ranges where they should be, hills surrounding them, and more hillls existing where old mountain ranges have been eroded down.
 
I will eventually need some volunteers to help me test the algorithms I develop. Since I am developing the algorithm outside of the game in a self-made testing environment, I will need people to download this environment, load world builder saves and run the simulations to see the results. Call it "algorithm beta testing."

This needs to be done because to save time, I have it load a particular map automatically and use that map to develop. However, I need lots of maps tested for feedback. Particularly since I don't use all the different types of map generators.

Would people be willing to help with this? If so, I can create a separate thread when I am ready where people can download the program (requires .NET 4.0) and post their resulting maps, providing feedback. The environment has the ability to export the resulting map to jpg, png, and bmp files (though I would recommend not using the bmp option since they can be very large in file size).
 
That may help for the short run (early versions). In the long run though, It won't matter. Here is why.

The map generator does not assign an altitude to land.
Internally the map generators tend to use height values but unfortunately they are not stored in the plots. Probably not that hard to add that to the map scripts though.
 
I will eventually need some volunteers to help me test the algorithms I develop. Since I am developing the algorithm outside of the game in a self-made testing environment, I will need people to download this environment, load world builder saves and run the simulations to see the results. Call it "algorithm beta testing."

This needs to be done because to save time, I have it load a particular map automatically and use that map to develop. However, I need lots of maps tested for feedback. Particularly since I don't use all the different types of map generators.

Would people be willing to help with this? If so, I can create a separate thread when I am ready where people can download the program (requires .NET 4.0) and post their resulting maps, providing feedback. The environment has the ability to export the resulting map to jpg, png, and bmp files (though I would recommend not using the bmp option since they can be very large in file size).

Great to see you PrimeMover! I think you can explore some great ideas here.

I am just a beginner apprentice, but I have a good bit of problem solving and programming experience, and I would love to volunteer to start helping you.
I'm not intimidated by hard challenges and interesting modeling dynamics is sort of my other hobby, and I'm also familiar with editing the maps a little, so if you are willing to show me, I'm probably a good choice as one of your volunteers.
 
I probably have a setup that's close to being ready for being a volunteer you're looking for but my time is already spread VERY thin so I was desperately hoping someone else would step up to the plate. If you really need me, I'd never let you go without the help you need of course... I'm 100% in support of your project here!
 
I think the solution to a lot of our challenges in C2C is to find a way to work through each other, so we are free to keep moving even with challenges. Have a stumbling block?, seek some solution brainstorming. Some things just need time to be worked out. Let's find a way together.

C2C is more than just a strategic game, a mod to Civ IV, or a redefinition of Civilization itself.
It is a living, breathing exploration of history and what it can become. The GeoRealism map generator is a great step to extending Caveman2Comos and seeing what can all create together, and it deserves to get finished. Let's see what we all can do to help PrimeMover get this moving, and earn his help in return. I can't wait to see what this Dream Team can come up with next!

Let's become pioneers.

I am excited to see what this will become!!
 
Great to see you PrimeMover! I think you can explore some great ideas here.

I am just a beginner apprentice, but I have a good bit of problem solving and programming experience, and I would love to volunteer to start helping you.
I'm not intimidated by hard challenges and interesting modeling dynamics is sort of my other hobby, and I'm also familiar with editing the maps a little, so if you are willing to show me, I'm probably a good choice as one of your volunteers.

I probably have a setup that's close to being ready for being a volunteer you're looking for but my time is already spread VERY thin so I was desperately hoping someone else would step up to the plate. If you really need me, I'd never let you go without the help you need of course... I'm 100% in support of your project here!

Actually, volunteering for this won't take too much time. The hardest part about it is downloading and installing .NET. After that, it is simply doing the following steps.

1. Download the zip containing the executable and unzip

2. Export a map in the (Beyond the Sword) worldbuilder.

3. Run the CivGeographyLab executable and go to File=>Open

4. It will automatically go to your BtS Worldbuilder folder.
attachment.php


5. Pick any worldbuilder save and open it.

6. Select one of the views.
attachment.php


7. Go to File=>Export Bitmap and then select the file type (don't use bmp for files you will upload).
attachment.php


8. Save the file from the dialog. (If you select jpg file, you will have another screen that allows you to select the quality of the picture. The higher the quality, the larger the file).

9. Upload the picture.

Repeat steps 2-9 (or 3-9 if you already have a bunch of wb saves of different worlds) as often as necessary or possible. (Just a couple would be fine if a bunch of people volunteered).

All in all, less that 5 min to get a picture (depends on how long it takes for BtS to load and start on your computer), and less than 5 min to post in this thread.
 

Attachments

  • Image0a.png
    Image0a.png
    95 KB · Views: 474
  • Image1.png
    Image1.png
    5.3 KB · Views: 437
  • Image2.png
    Image2.png
    5.3 KB · Views: 448
I am willing to do this. I just discovered I even have .Net 4.0 or higher on my machine. I could not find it listed anywhere so tried to install it :D.
 
I will appreciate it when the time comes. When I am ready for tests I may start a separate thread for it.
 
I'll try to find some time... you should run this up against SO's many maps he's made in WB over the years!

He might be a great source then!
 
I'm getting everything set up to help immediately.
Downloading .net and the correct python.
Glad to flex and be helpful.
 
FYI
I am a little disappointed that it looks like this simulation is going to be a time consuming process. I am nearly finished the first tiny step of simply dividing up the waters into oceans etc... and it is already adding 20 seconds to the time it takes. (See this thread for the discussion about the need for doing this). Of course that is on the gigantic map. Just be prepared for a 2+ minute additional wait when all is said and done on larger maps.
 
I think I have NET installed so I could give it a try as well. You mentioned some formulas couple of pages back, if you point me to the paper I could have look and see if I can make head or tail out of them.
 
I think I have NET installed so I could give it a try as well. You mentioned some formulas couple of pages back, if you point me to the paper I could have look and see if I can make head or tail out of them.

I appreciate your interest in helping. First... some basic articles that explain the parameters involved

Here is a basic "lesson" that explains the parameters (not hardcore math at all... just helps you understand the basics). The only basic that I don't see in here is longwave cooling that occurs at night at a high rate and during the day too... but incoming is more than outgoing during the day so not as big of a deal.

Basic lesson

This article explains radiative cooling but not in the context of a fully working temperature calculation model.

This article presents a good, easy to understand model but it relies on too many factors that are measured and not calculated. The problem with this is that every map in Civ IV is different so I cannot rely on measured values since they would be different on a randomized map.


The complex stuff that actually gives equations (which I cannot interpret because I don't know calculus that well) can be found in a few locations. But here is where you start:This is the main article entitled 'Energy Balance Climate Models' is the one that is referenced by other articles and has been recommended to me more than once. But somewhere between pp 96-98 I get completely lost in the math. (It has been a while since I have looked at the article).

Other articles I was tempted to post exist but most focus on one parameter in the calculation rather than present a general approach. So if this isn't enough I can give you more but that 1981
 
FYI
I am a little disappointed that it looks like this simulation is going to be a time consuming process. I am nearly finished the first tiny step of simply dividing up the waters into oceans etc... and it is already adding 20 seconds to the time it takes. (See this thread for the discussion about the need for doing this). Of course that is on the gigantic map. Just be prepared for a 2+ minute additional wait when all is said and done on larger maps.

Folks I need some quick feedback if you are involved with the dll and memory management.

I have figured out a way to significantly (possibly even drastically) cut algorithm time but it will require the use of a considerable amount of memory. However that memory use is only temporary. The (tens of thousands of) structures used to speed up searches required by the algorithm will be freed once the algorithm is done.

Is this feasible? The things to keep in mind is how much memory is currently used by the mod and whether or not the dynamic allocation will cause too much memory fragmentation.
 
IIRC most memory is used later in the game when there are lots of units in play and very little at the start. This means I would expect you to have plenty of memory to use al long as it is released correctly for later use.
 
Folks I need some quick feedback if you are involved with the dll and memory management.

I have figured out a way to significantly (possibly even drastically) cut algorithm time but it will require the use of a considerable amount of memory. However that memory use is only temporary. The (tens of thousands of) structures used to speed up searches required by the algorithm will be freed once the algorithm is done.

Is this feasible? The things to keep in mind is how much memory is currently used by the mod and whether or not the dynamic allocation will cause too much memory fragmentation.

Depends on the context of the temporary allocation and its total size. If you mean wholy within some method call, then (apart from multi-threaded parts of the code maybe) it should be ok if it's not TOO large (a few tens of megabytes will be ok in general, but once you stray into hundreds it's likely to have an impact). If you mean over some longer time period, during which significant other processing occurs (say a turn duration before it gets freed) it may be more likely to cause problems, since your allocations, even though temporary are likely to increase hap fragmentation. If that is the case then you might want to use a private heap for the objects concerned, and free the entire heap when done.

Can you provide more information about what it is that you're optimizing, that you wish to use large temporary allocation within.
 
Back
Top Bottom