 |
|  |
 |
|
Paul Crocker
|
|
Slidell, LA, USA
Jul 1999 time: 05:13
|
|
Hi all,
At Marks' suggestion, I've volunteered to pick up on the map generator model. Since I've been unable to reach Gregor to get his version, I've worked up a fairly simple model of my own. My background is in cartography and natural resources, so I'll try to use that to our benefit where possible. Following is a brief outline of what the model will do. I'm still working on the (pseudo)code for the working model; since I program in "ESRI Avenue" (also object oriented) and not Java (yet) it is not a "true" code, but it shouldn't be too tough to translate it later into something that will actually run. Please note that this is still really rough, but I wanted to get something posted to get some comments before I get too involved in hashing out the details.
The basic idea is to simulate plate tectonics as closely as we can without taking up a huge amount of processing time (simple, eh?).
This model starts off by creating a supercontinent, then fault lines are arbitrarily defined by splitting the supercontinent up into x plates. 25% of these plates (we can tinker with the ratio as needed) are labeled as "sea" plates, while the rest are labled as "land plates". The purpose of the sea plates is to create seaside mountain ranges (eg Chile) when the sea plates ram into the land plates 
Next, the plates are moved around a bit, forming mountain ranges where they collide. A primitive climate model is used to determine the positions of deserts and vegetation distributions. Finally rivers, resources, and initial starting positions for the civs are selected based on certain criteria for locations (FE you wouldn't stick a tribe on a mountain top - usually!)
I know that a lot of people liked the idea of setting the sea level later to create undersea trenches, etc. That would require a Digital Elevation Model (DEM) or something similar to it for that type of model to work. I have quite a bit of experience using DEM's for hydrological analysis in the real world, and so haven't ruled out developing a model like that as well...I just put it off for the sake of time now, since it would be considerably more complicated. Any suggestions, gripes, etc are welcome! I'll link the actual "code" on my own site when I get it written up. Have at it! 
I. Build Land Mass
A. Create Supercontinent
i. Select centroid
ii. Randomly build cells around centroid
B. Create Faults
i. Select landmass centroids
ii. Build landmasses about centroids
iii. Randomly designate sea plates (4:1 ratio of land plates to sea plates)
C. Move Landmasses
i. Select random direction move each landmass
ii. Move landmasses
iii. Change terrain as landmasses collide
D. Finalize Landmass positions
i. After n iterations, end movement
ii. Remove sea plates (they’re underwater anyway)
II. Climate Zones
A. 4 primary jet streams
i. Divide the map into 8 lateral bands (at equator, and halfway between the poles)
ii. Assign E-W and W-E alternately to each band
B. Delineate climate zones
i. Assign polar/boreal regions (bands 1,8)
ii. Assign temperate regions (bands 2,3 and 6,7)
iii. Assign tropical regions (bands 4,5)
III. Vegetation, Rivers, Resources, Tribes
A. Distribute vegetation
i. From “starting” edge (depends on wind direction) move pointer across map
ii. Assign vegetation according to terrain at pointer and according to 2 squares upwind)
iii. Move pointer to next square
iv. Iterate until band is vegetated
v. Move to next band and repeat
vi. “Average” out terrain at climate bounaries to avoid extreme transitions
B. Place rivers and lakes
i. Randomly place lakes and seas (within climate limits)
ii. Randomly select headwaters (50% of lakes will have a HW)
iii. Trace rivers from HW to sea according to terrain
C. Distribute resources
i. Randomly assign resource x,y coords
ii. Allocate resource at random coords according to terrain and veg at location
D. Distribute starting tribes?
i. Randomly assign tribe locations based on min distance from other tribes and veg/terrain limits
------------------
Paul
|
|
|  |
 |
|
Keli
|
|
Reykjavik
Aug 1999 time: 05:13
|
|
Hi Paul,
you model looks very good.
Only got couple of comments,
a) Are mountains only created when landmasses collide?
b) Wouldn't it be better to place rivers first and then decided placement of tribes?
Keli
PS: I'm at work, thus the new profile, couldn't remember my password :-)
[This message has been edited by Keli (edited August 18, 1999).]
|
|
|  |
 |
|
Paul Crocker
|
|
Slidell, LA, USA
Jul 1999 time: 05:13
|
|
Mark: Sorry about the confusion...I had originally planned on having 4 later bands to simulate the circular motion of the weather patterns and transvergence zones. I later decided that 8 zones better represents the pattern than 4, since we're trying to simulate circular phenomena that occurs on a sphere on a flat map! phew! So the the short answer after a long response is that there will be 8 zones, fairly equally distributed (4 on each side of the equator).
I really like the idea for distributing starting civs on a point basis, since it allows for the handicapping of expert players.
Keli: Thanks for the input! I had actually thought about volcanoes, the other major contributor to mountain ranges, when I was brainstorming but I forgot to include that into the model. I definitely will, since they do affect major portions of fault areas. Since we're identifying fault areas, this gives us the potential for including natural disasters in the sim (eg earthquakes and volcanoes in addition to weather related disasters based on the climate model). Disaster-prone areas could be identified at the start and given a value based on the likelihood of each disaster ocurring. Disasters could then be randomly triggered based on the potentials calculated at the start. Any thoughts on this, anyone?
To answer your second question, Keli, I think the model already determines river courses prior to civ site selection - the poor formatting of the outline (no identations) just makes it a little less intuitive. In any case, the rivers should definitely be carved out first. Probably even before vegetation selection, since you CAN have rivers running through the desert with lush vegetation in the immediate valley (eg the Nile).
|
|
|  |
 |
|
F_Smith
|
|
Austin, Tx 78728
May 1999 time: 05:13
|
|
Hi, Paul:
I'm not sure what Mark is going to say, but I can go this far, I think --
In the 'Space' class (dumb name, but it's early!) there will be a 'Map' class/object. In that 'Map' class there will be a 'generateMap()' method. This method likely will instantiate another class (MapBuilder?), where your model will be coded. Any parameters can be sent to it, of any kind, and anything can be returned -- even another object. Most likely 'generateMap()' will return a 'Location[][]' object. That's a 2-dimensional array of 'Location' objects (we will write those, too, of course). This 'Location[][]' object array will be the functioning worldmap. Locations will be accessed by index #, relating to grid coordinates. I.E. 'worldmap[2][3]' will be the 'Location' object that contains all the vars for map location 2, 3.
I hope this helps. I don't know who will do the coding. I'm pretty busy.
|
|
|  |
 |
|
mca
|
|
Odense, Denmark
Jan 1970 time: 06:13
|
|
Paul:
The outline of your model sounds great.
I'm looking for a limited (in size) corner of the project to work on, so if you have a somewhat detailed algorithm that you think will work, then I can try to implement it in Java.
Martin
|
|
|  |
 |
|
Paul Crocker
|
|
Slidell, LA, USA
Jul 1999 time: 05:13
|
|
I forgot to ask my questions:
What is the size of the map matrix (x,y)?
What land area does each cell represent?
Has anyone come up with final definitions for terrain/vegetation types?
On these last two, several proposals have been bounced around throughout various threads, but I haven't found anything listing the final say on what we'll use.
If terrain/veg types are not defined yet, what number are we limited to? FE in Colonization, forest is broken down into several types (conifer, mixed, deciduous, etc). Forgive me if I didn't get the Colonization types right - it's been ages since I played that game (got boring REALLY quickly - too much micromanagement!)
Should we start a thread listing the "final" parameters for "global" variables? FE cell area, # terrain types, # units, etc. It might make things easier once we start docking modules. Then again I'm not a programmer, so what do I know!
|
|
|  |
 |
|
Mark_Everson
|
 |
Canton, MI
Jan 1970 time: 00:13
|
|
Hi Paul,
I like the new features .
> What is the size of the map matrix (x,y)?
I'm going with 320 by 200 cylindrical right at the moment...
Suggestions welcome.
> What land area does each cell represent?
Approximately 100 kilometers on a side.
The current graphics plan is to have them be "diamonds" with the corners pointing in the compass directions. Like in Civ2...
> Has anyone come up with final definitions for terrain/vegetation types?
No, don't have anything final on this one. I guess just pick the ones you like from the discussions.
> If terrain/veg types are not defined yet, what number are we limited to? FE in Colonization, forest is broken down into several types (conifer, mixed, deciduous, etc). Forgive me if I didn't get the Colonization types right - it's been ages since I played that game (got boring REALLY quickly - too much micromanagement!)
I think we can cope with several kinds of forest / jungle etc. if you think your model can reasonably calculate them. If it turns out to be a fundamental problem we could just redefine them all back to forest.
> Should we start a thread listing the "final" parameters for "global" variables? FE cell area, # terrain types, # units, etc. It might make things easier once we start docking modules. Then again I'm not a programmer, so what do I know!
Well... we Should, but I'm not up to it at the moment. if you would like to take a shot at the terrain types here I'd appreciate it. The military model is far from being reasonably complete, so I think starting to talk about specific units would be premature. These are all going to be read in from an initialization file anyway, so they really don't have to be finalized until fairly late in the project. Obviously, the stuff with graphics will have to be worked out well before then. My best guess is we should just work out the specifics of each model when that model is at the right stage, in the sprirt of OO programming .
On the topic of wearing down of mountain ranges, I may have missed it, but are you going to start with pre-existing mountain ranges on your mega-content? So we can have really old mountain ranges, as well as relatively new ones?
BTW, any chance of getting reasonable mineral deposit locations with your model? I know I'm really stretching, but hey, I've got to try!
Sounds great, I can't wait to see it.
[This message has been edited by Mark_Everson (edited September 06, 1999).]
|
|
|  |
 |
|
alms66
|
|
Louisiana
Oct 1999 time: 23:13
|
|
I noticed that the model lacks some detail in the climate area. For instance you've only included polar temperate, and tropical, but there are more zones than that. You should also include sub-arctic sub-tropical, and divide the temperate zones in both hemispheres into two seperate parts. The reason for dividing the temperate zone is that it is the largest of them and there is much variation from the Polar half compared to the half nearer the equator.
So you bands would be:
arctic (1)
sub-arctic (2)
cool temperate (3)
warm temperate (4)
sub-tropical (5)
tropical (6)
equator ---
tropical (7)
sub-tropical (8)
warm temperate (9)
cool temperate (10)
sub-arctic (11)
arctic (12)
Another thing is the terrain. We need to include polar ice caps. Submarines would be able to travel under them and tanks could roll on them. Ships could wreck due to icebergs near the caps to make sea travel a little more realistic and a little more treacherous. With the polar caps we could include a chance of loosing nearly any military unit due to cold, doubled if you have no supplies, reduced with certain technologies.
[This message has been edited by Toubabo_Koomi (edited November 22, 1999).]
|
|
|  |
 |
|
mca
|
|
Odense, Denmark
Jan 1970 time: 06:13
|
|
Minor progress has been made on the Map Generator. Current status, prototype source code, and screenshots are available at http://danish.visl.ou.dk/~mca/clash/ .
Please note that previously posted links to source code and screenshots are now invalid.
Martin
[This message has been edited by mca (edited November 21, 1999).]
|
|
|  |
 |
|
Paul Crocker
|
|
Slidell, LA, USA
Jul 1999 time: 05:13
|
|
TB: Thanks for the comments - in case I didn't mention it in the posting, the model described there is preliminary (and has already been updated quite a bit from that outline). Don't worry - we'll implement some of your suggestions in the climate model. We're shooting for a compromise between playability and realism, though, so we probably won't be able to do everything. Subs moving under the ice caps FE, unless Mark is interested in working up some kind of cool movement model to incorporate movement over the North Pole on a Mercator projection (not easily done due to the extreme distortion at the poles!)
|
|
|  |
 |
|
alms66
|
|
Louisiana
Oct 1999 time: 23:13
|
|
Paul--
If the layering of graphics is going to be used (which it looks like it is), you could apply the same technique here with a little use of transparent graphics. The polar ice itself would be semi-transparent. The submarine could become semi-transparnt when it submerges, which could be an actual order for the TF. Then when a sub moved "onto" it, it would give the appearance of being underneath the ice. This would also give the appearnce of it being under water when it submerges at sea also.
I don't know if any of you have ever played Call to Power, it sucked , they had two really good things that I did liked.
For one you could take the option of playing on a doughnut world. With that on you could move not only east-west off the map but also north-south, which was very cool, and I think we should eventually include it.
The other was the semi-transparent "Fog of War". I really liked this one because it was cool when you placed a radar station how the fog lifted.
[This message has been edited by Toubabo_Koomi (edited November 22, 1999).]
|
|
|  |
 |
|
Paul Crocker
|
|
Slidell, LA, USA
Jul 1999 time: 05:13
|
|
Toubabo:
Since this really has little to do with graphics, it's a bit OT, but since you asked the question here, I'll answer it here. If you wish to pursue it in more depth, I suggest that we either find a more closely related thread or start a new one 
I think that you may have misunderstood my last posting (I apologize if I was unclear). We can easily display subs under the polar caps - the problem is with the map projection itself and with how we handle the movement of units on that projection. There was a thread that dealt with this back in late August or early September (do a search on "projection" and "Albers" and it should come up). We're using what's basically a Mercator projection. If you're unfamiliar with that term, think of the map you may have seen (often in elementary school) that shows a huge representation of Greenland in proportion to the rest of North America. While this projection is OK for many things, it's terrible for displaying anything near the poles due to the distortion (that increases the closer you get to the poles). The problem we would face is this: picture a sub going over the pole from North America...it crosses the north pole and heads south towards Russia. On our flat map, it would head "up" the map from N. America and pop up further east (or west depending on how you look at it) at the top of the map heading "down" the map. While not impossible, it's an aberration from the normal movement mechanics that Mark is working on. He can probably give you a better answer on whether it's really "doable" or if it's not worth the work involved. As far as using a different projection (like your donut), we've already discussed that topic to death in past threads (you should do a search on those if you really want to pursue this, so as to not repeat anything that we've already discussed). As to your original posting - I'll look into expanding on the temperate zones (I had already given some thought to it, but you just gave me greater incentive to do so) 
Nonetheless - thanks for the comments! Even if we can't implement them, they are still valuable Keep 'em coming.
|
|
|  |
 |
|
johnmcd
|
|
Edinburgh
Oct 1999 time: 05:13
|
|
Paul and MCA:
What a beaut. I just looked at this and the associated web site, I'm amazed. I think the worlds it produce are very authentic looking.
Thats all.
|
|
|  |
 |
|
Henrique Duarte
|
|
Portugal
Jan 2000 time: 05:13
|
|
Hi everybody
I am a geology researcher and my MS (soon to be I hope :-) is in gold and tungsten deposits so I believe I can answer Mark on the reasonable location of resources.
There are plenty of papers on Plate-tectonics, geodynamics vs resources
We can assign a probabilty of a resource existing on a square according to a tectonic classification that we could give to the square:
Is it a recent plate boundary (ocean vs continent, continent vs continent), an old plate boundary, a forebasin etc etc
Then we can give a probability of each resource appearing in each of those types of squares according to known actual relations
here are some of these relations
Copper porphiry deposits (I am not sure whow to spell these) are very comon on recent mountain ranges in ocean-continent boundaries
massive sulphides (tin and coper) on old oceanic basins and recent ocean plates
and this can go on and on - it will only depend on what resources you want.
|
|
|  |
 |
|
Krenske
|
|
Mark,
I think you have covered the basic geological resources, the only extras I can think of are generally quite rare and are probably only good for trade in the modern era (Titanium, Tungsten).
Extra idea 1. Deposit types.
I don't know if it has been mentioned yet but could it be possible to have 3 types of deposit surface, mineable and deep. A surface deposit requires no mine to gain the benefit, rare but immeadiately useful. Mineable is as is currently available in Civ2 requiring a mine. Deep could be a new type where GEOLOGY needs to be learnt before you can detect the deposit. This gives all those Explorer/geologists something to do in the later game. It may be possible to include a special Mine improvement for Deep deposits.
Extra idea 2. Resource Exhaustion.
Many of the deposits around the world that were originally mined have now degraded. The copper and iron deposits in Turkey for example, Aluvial gold in California. Could deposits be given a "life"? This could be hard to implement but may be a nice feature. (To go with the above, many surface deposits could have limited lives, while mineable and deep deposits remain)
Extra Idea 3. Yield/Quality.
Way to many ideas. Variable yields for deposits. A gold mine is not necessarily the same as any other. Maybe the yields could vary by 1.
Feel free to ignore whatever you don't want.
[This message has been edited by Krenske (edited January 19, 2000).]
|
|
|  |
 |
|
Henrique Duarte
|
|
Portugal
Jan 2000 time: 05:13
|
|
I see where you are leading.
I will try to give a complete modelling (as close as possible to the map generator) on surface and depth resources.
we can have one of two approaches
1. Each square will have a basic level of every resource according to geological setting (only when it is clearly a geological stupidity will he assign 0 to any resource, which as Lord Ginai holds true to diamonds (well this one is in fact the worst example because is one of the few resources that is EXTREMLY constrained in geological terms, but the idea is quite true). The resource will be split into deep and shallow also according to geological setting. As mining starts the base level will be reduced accordding to a log function. (resources will go down fast, but it is dificult to achieve total depletion of a resource on the game scale)
2. Just simulate very large deposits - geologic anomalies - in this case it is a bit useless to simulate deep/shallow or depletion issues. Large anomalies are LARGE anomalies.
seeing you
|
|
|  |
 |
|  |
All times are GMT. The time now is 05:13. Apolyton Time is 00:13. |
top of page
|
|
|
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is ON
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|