Smart Map

Want the ability to generate random maps?! Then this is the mod for you. Though you should be patient, it takes time to generate a map....


Do not refresh or leave this page!

File Description

Want the ability to generate random maps?! Then this is the mod for you.

Though you should be patient, it takes time to generate a map.

Be patient. This script is slower than many of the default scripts. A large map takes about 30 seconds to generate on my 1.8ghz pentium-M laptop. Huge takes close to a minute. Pangea is the slowest to generate, picking fair start locations on a pangea takes a lot longer.

Read More

ReadMe file describing how to use SmartMap, and its various features.

SmartMap has two related discussion threads.  

1) How to use
2) Options
3) Thanks
4) Version History

1) How to use
	Extract the to your CivIv install directory's PublicMaps
	folder.  Start the game, and select Single Player followed by Custom Game.
	On the option titled 'Map:' select SmartMap as the map.  Set other options
	to your liking (I suggest trying all the defaults first!), and Launch!

	A common error is to extract to civdir\PublicMaps\SmartMap\  You 
	want to just have civdir\PublicMaps\

	Be patient.  This script is slower than many of the default scripts.  A large
	map takes about 30 seconds to generate on my 1.8ghz pentium-M laptop.  Huge
	takes close to a minute.  Pangea is the slowest to generate, picking fair
	start locations on a pangea takes a lot longer.

2) Options
	Options are the point of SmartMap.  There are a bunch of them.  I will 
	describe how to use each of them in turn to get just the map you are 
	looking for.

	Map: SmartMap, otherwise you're not using SmartMap!

	Size: Duel, Tiny, Small, Standard, Large, Huge.  SmartMap will use this 
	setting to determine the overall area of the map, unless you choose to override
	the width and height manually, as explained later.  SmartMap picks a random
	width and height that produce the required area, so not all maps will be the
	same shape (if you want to force a specific shape, use the overrides 
	described later).

	Climate: Temperate, Tropical, Arid, Rocky, Cold.  These mean approximately
	what they do in the normal map scripts.  Tropical has less desert and jungle than
	you would get in the normal generator.  If you feel like you get too much tundra
	and snow in temperate, try tropical.  Arid produces a lot of desert.  Rocky means
	an extra boost to hills and mountains.  Cold means more snow and tundra.

	Sealevel: low, medium, high.  This option is used by SmartMap in a unique way.  
	Since SmartMap offers a direct ocean percent control, sealevel is used to control inter
	continental strategy.  In particular:
		Low = all land on the map MIGHT (or might not) be reachable by galley
		Medium = it is very unlikely you will be able to reach another continent by galley,
			but contact between civs on different continents may happen early due to 
			influence borders touching (it is only possible to reach another continent
			occasionally by galley due to a bug in civiv that will rarely allow a galley
			to enter an ocean tile).
		High = guaranteed that you cannot reach another continent by galley, and civ contact
			between different continents will not happen until two near as possible cities
			both reach level 3 culture, or caravel (almost always caravel happens first).
	This option is not guaranteed to be enforced if you select a non-default land style, as 
	explained later.

	Era / Speed: These options are not affected by and do not affect SmartMap.  They are for the
	mod or the game to use.

	Continents: Controls the number of continents generated by the script.  Each option is fairly
	self explanatory.  On low sea level, continents are permitted to merge, so you may receive less
	than the expected number of continents.  You may also receive less than the expected number if 
	the script cannot find enough room (as might happen if you select duel size with 36 continents).
	You may receive more than the expected number if you select a non-default land style, as explained
	later.  If you select 0 continents, you'll get a very archipelago style map.  You may also select
	'single tile isles' if you are playing a mod that prefers maps with only single tiles (such as 
	planetary space based mods).  You can also select various specific land forms, such as earth,
	north america, south america, africa, europe, asia, and australia.

	Terrain: selects a terrain generator.  The terrain generator decides if a given land or hill plot is
	a desert, plains, grass, tundra, or snow.  The oasis and great plains generators are taken from those
	scripts, while standard is just what you normally get on default scripts.  SmartMap is a custom terrain
	generator that knows how to generate terrain for all kinds of map setups.  You can also use this
	setting to exclude certain types of terrain such as desert.  I recommend SmartMap.  There are 
	additional options that will restrict or alter the types of terrain offered as well,
	such as no snow or desert or more grass.

	Features: selects a feature generator.  Features are things like oasis, flood plains, forest, and jungle.
	They go on top of the base terrain to enhance it in some way.  Again, the oasis and great plains options
	are just what you'd expect from those scripts.  Note that you do NOT have to match terrain and feature
	generators.  Oasis terrain with Great Plains features works just fine, as do all other combinations.
	The default SmartMap feature generator generates a few combinations that do not occur in the standard
	scripts, in particular things like floodplains on grass are possible, and oasis will occassionally be seen
	on tundra.  These are things that happen on earth, and so are 'realistic' but some may find undesireable
	because they aren't normal in the sense of the default scripts.  If you are one of these people, there is
	the SmartMap Strict option, which to the best of my knowledge will not generate any combinations not found
	in the default scripts.  I recommend either SmartMap or SmartMap strict.

	Bonuses: selects how bonuses are placed.  You can choose from the standard placement or SmartMap placement.
	SmartMap attempts to be fairer about how resources are placed strategically, and offers control over how many
        resources you get.  There are restricted placement options that place resources more like the standard 
	generator, or which obey additional rules enforced by the standard generator.  I recommend SmartMap Normal.

	Goodies: selects how goody huts are places.  Options are similar to resources, but also includes an option
        to disable goody huts entirely (SmartMap None).  I recommend SmartMap Normal.

	Ocean: determines the percentage of ocean to be used on the map.  Note that selecting low ocean
	levels may result in a map with significantly more useful land area than is typically expected for
	a given size of map, and may cause a gameplay imbalance.  There is a no ocean option which will produce
	lakes but not ocean, and a no lakes, no ocean option which will produce an all-land map.  You may also
	choose from various options that will generate an inland sea or lakes rather than an ocean based map.

	Hills: allows you to specify what percentage of the land area should be coverd in hills.

	Peaks: allows you to specify what percentage of the land area should be coverd in peaks.  The no block
	options will prevent certain situations where a single peak blocks access to a resource.

	Forest/Jungle: allows you to specify if you'd like more or less than the standard amount of forest and
	jungle.  Note that this option only affects the results of the SmartMap feature generator.

	Rivers/Lakes: allows you to specify if you'd like more or less than the standard amount of rivers and
	lakes.  Note that this option only affects the results of the SmartMap feature generator.

	Land Style: this option controls a couple of special features that are that are included to allow for a 
        greater map variety.  First, you can control how round your continents will turn out.  Rounder
	continents have a tendency to be more fair, so very round is the default.  As you transition to somewhat or
	less round, you will get odder continent shapes which various people have requested, or find to be 
	'more realistic'.  Independently, you may also choose a level of fragments.  Fragments are little pieces
	of land added randomly to the map which will appear as archipelagos or odd continent outgrowths, or tiny
	islands.  You can get all sorts of interesting growth patterns with these.  However, since they may be
	placed anywhere, they may violate the sea level guarantees of separation.  They may completely join
	continents, or make them reachable by galley.  Nevertheless, some people wanted this as another way to
	have more varied or realistic maps.  The default for this option is very round, no fragments, which provides
	the most guarantees of fair gameplay, particularly for multiplayer games.  For single player games, you
	may have fun seeing what interesting other types of maps you can get with this option.

	Start Placement: selects how player start positions are determined.  The SmartMap option attempts to do a
	fairer job of placing players based on an analysis of the positions of strategic resources, and is also
	more likely to place your initial settler on a tile with one tile of ocean access so that your capital can
	build ocean buildings.  It also prefers to place start positions on hills, because of the defensive bonus.
	You can also select placement that will prefer inland or coastal starts either just for the human player,
	or for all players.  The 'new world' options will attempt to place all players in the eastern half of the

	Wrap: allows you to specify whether the map wraps around the border in x and/or y.  X wrapping is
	the standard circumnavigatable globe you probably expect, but the other options may provide for
	an entertainingly different gameplay experience.  You can also select central pole with any of the above,
	in which case you will find an additional 'pole' (icy area) in the center of the map.  This is the 
	equivallent of polar projection.

	Override width/height options: these options allow you to force SmartMap to generate a specific size of map
	to your liking.  This can allow you to generate absolutely huge maps beyond the size that your computer
	memory can hold, so be careful with this.   Multiply the width you select by the height you select to get
        the total number of tiles your map will have.

	Override separation:  this option allows you to override the sea level control, and gives you the ability
	to pick a continental separation of your liking.  In particular, this makes it possible to ensure that
	culture boundaries on separate continents will never touch, or to allow continents to come within exactly
	one coastal tile of each other, without having to resort to using fragmented land.

	All options now have an added 'smartmap random pick' option, which will choose among the most commonly
	preferred options on that particular menu.  This is particularly useful for override width and height where
	the normal 'random' option will often return values too large and cause your computer to run out of memory.
3) Thanks
	I'd like to thank the following people for their contributions:
	Sirian : for answering a number of questions about how map scripts work
	A Silly Goose @ CivFanatics : for early feedback
	lordroy @ CivFanatics : for lots of feedback and screenshots
	Victorvanwavere : suggestion to have a forest/jungle setting & what became land style
	Randle @ CivFanatics : report of getting capital on wrap border
	Silver14 @ Apolyton : report of too many very tall maps when x-wrapping and other early feedback
	alms66 @ Apolyton : also suggested the forest/jungle setting, and other early feedback
	Commander Bello @ Apolyton : manual width/height override and other feedback
	skodkim @ Apolyton : assorted feedback
	battists @ Apolyton : idea for this readme!
	ShallowGrave @ CivFanatics : finding the overrides bug in 8.0
	Sto : helpful discussion and bug finding
	DG : regular feedback and bug reports

4) Version History
# Version History
# 9.0
#     New land layout: earth.  Selecting this will generate the earth, with source data
#       from a blue marble projection.  This is a highly accurate earth layout, with peaks
#       and hills somewhat fuzzed to make for a more playable map.
#     Also added: north america, south america, africa, europe, asia, australia
#     All of the new maps are based on blue marble data, and so are going to be more accurate
#       than they are going to be strategically well designed, and resource placement will
#       be random rather than historically accurate.  The current version will also have
#       generated terrain, but the next version will probably include an option to use
#       terrain sampled from blue marble data.
#     New resource placement options: very many (places a _lot_ of resources), crazy, and 
#       crazy many.  The crazy options place resources on any workable tile.  This makes for
#       a rather different gameplay experience.
#     New terrain placement option: crazy which will place terrains randomly.
#     New feature placement option: crazy which will place features randomly.
#     Protected read / write of the smartmap config file so file errors won't cause a script
#       error, and moved the config file to the user dir, which should help people not playing
#       as admin on windows.
#     Improved odds of generating flood plains in desert river tiles.
#     Changed the grid infos to be compatible with mods with arbitrary number of map sizes, which
#       will make smartmap compatible with mods that have more than the usual number of map sizes.
#       This change also makes SmartMap maps closer to the usual size.
#     Improved speed for calculating the altitude of plots on very land heavy maps.
#     Call the python garbage collector and clean up memory usage to allow larger maps.  I can
#       now generate maps somewhere around 10% larger than before.  I can now generate a map
#       with twice the area of the usual huge, and start it on my 1G computer.
#       Base CivIV = 200M, 280x84, 65% ocean = 500M, 280x84 0% ocean = 700M, that's roughly
#       13K or so per additional land tile allocated by CivIV, so keep that in mind when
#       deciding on your ocean levels.
#     Fixed a bug that tried to place continents too close to the map edges some times.
#     Fixed a bug with regenerate map that occurs if you load a first turn savegame and then
#       immediately try to regenerate it, thanks skovran for the report.
#     Cleaned up code in player placement, improved speed.
#     Added catches to player placement to prevent overlapping starts.  If an
#       overlapping start is somehow generated (a bug reported a couple of times), 
#       it will now fallback to standard placement mode.  I'm unsure how an overlapping start 
#       can ever happen in the first place, but this should really guarantee it is impossible
#       for it to get through and actually place the players that way.
#     Fixed a bug that would sometimes misjudge whether or not to place additional players
#       on a large continent.
#     Improved the way continents are calculated to be more accurate in certain cases around
#       blocking peaks, and improved performance.
# 8.7
#     Added 3 great lakes options (few, normal, many).  This will generate a map with a number
#       of large lakes (large enough to typically have ocean tiles).
#     Edge sea and corner sea were reversed in what they generated, fixed.
#     Corrected the usage of cardinal directions, thanks to Sto for noticing.  This turned out to
#       be harmless, but would show up in the xml error log.
#     Fixed bug with generating inland sea maps, thanks DG for noticing.
#     Corrected minor math error in hill placement that was generating more hills than specified.
#     Corrected disagreement between ocean percentage and size of central sea in such maps.
#     Fixed problem with counting number of available sea resource spots that would place too
#       many sea resources on certain styles of maps.
#     Removed all used of CyPlot.isCoastalLand() because this method doesn't do what you'd expect.
#     Forced central sea maps to keep the central sea away from the poles to prevent splitting
#       the map in two.
#     Speed up altitude calculation by simplifying the search for nearby ocean.
#     Speed up wetness calculation by skipping water tiles.
#     Speed up hash lookups by increasing step size.
#     These speed improvements should knock about 10-20% off the total generation time.
# 8.6
#     Correct the override width/height entries to reflect the 'standard' 
#       width and height numbers (previously this was rough, now it is exact).
#       So these numbers now match what scripts that use the base XML produce.
#     Added extra plains / extra grass options to the terrain options, which
#       will produce more of that type of terrain.
#     Added 'new world' coastal/inland start options, which will place start 
#       positions in the east (as new world) but also favor coastal or inland
#       starts.
#     Added 'no block' peak options.  This forbids peaks from having ocean
#       on both sides either vertically of horizontally.  This prevents certain
#       common cases of resource blocking that some people found annoying.
#       Any such peak is reduced to a hill, as a result you will have less total
#       peaks on your map.
#     Improved performance of land placement in low sea width (removed unneeded checks).
#     Improved performance of land placement in high sea width by spatially
#       hashing the previously placed lands, and reducing the search for conflicting
#       lands to nearby hash entries.  This makes a huge difference on big maps with
#       high sea levels selected (>50% faster).
#     Improved distribution of hills and peaks so that small continents don't get
#       a disproportionate amount of them.
#     Tweaked up likelihood of floodplains slightly.  You may see a bit more desert
#       in temperate maps.  If you don't like desert much you can of course turn it 
#       off or switch to tropical which has much less desert.
#     Improved performance for placing resources on large maps with lots of resources.
#     Overall performance improvements will no generate the most difficult type of map
#       (huge, land heavy, high sea level map with 2 or more continents) in less than
#       a minute on my p4m-1.8ghz.
# 8.5
#     Performance improvements.
#     Improved hill placement for a huge/65ocean/30hills map from 12 seconds to 2.
#     Improved huge/65ocean/many resources from 90 seconds to 30.
# 8.4A
#     Quick Fix for problem with placing players on pangea maps introduced in 8.4
#       (would cause an endless loop, freezing civ iv on pangea and certain other
#        maps where it couldn't decide the best continental distribution of players)
# 8.4 
#     Tweaked resource placement to obey minlatitude and maxlatitude for the stricter
#       resource placement options (SmartMap few, and all clumping options).
#     Tweaked resource rates some more based on forum feedback.
#     Made some other adjustments to the fair resource distribution to simplify it, and
#       to distribute resources a little more evenly in certain cases.  Also improved
#       chances that all expected resources will be placed.
#     Added terrain options to place no desert, no snow, no snow/desert, 
#       no snow/desert/tundra, only plains, or only grass.  If you wan't minimal
#       snow/desert/tundra, play on tropical, and turn jungles to light if necessary.
#     Added 'SmartMap restricted / most restricted' option to resource placement, which 
#       enforces every placement rule I understand, clumps both happy and health resources,
#       and offers fewer (restricted)/much fewer (most restricted) resources in general.
#     Move the version history for prior versions to end of file
#     Added player/all inland/coastal placement options.  Player inland will do its best
#       to give the first player an inland start.  Coastal prefers a coastal start.  All
#       attempts to do the same for all players (less likely to succeed, based on available
#       map positions).
#     Add single tile isles option.  This make for a very wierd game in generic civiv, but
#       was requested by people developing space/planet based variants.
#     Fixed bug in override separation that caused it to behave always as if low sea level
#       was selected instead.
#     Added 'central pole' variation on all wrap options.  This creates an icy pole in the
#       center of the map, as if you were looking down on earth from above the north pole,
#       also known as polar projection.  This now allows you to have 0,1,2,3 poled maps,
#       which you can envision as different ways to unwrap a spherical world onto a flat
#       rectangular map.
#     Fixed a small math error in determining the distance from the pole/equator which
#       became obvious when working with the polar projection maps.  This may cause you
#       to see a little more snow/tundra than previously.
# 8.3
#     Tweak tundra, snow, desert picking process to make more likely on small maps.
#     Add new separation override to allow absolute control of continent separation.
#     More rivers sourced from hills if there are few peaks.
#     Added options for central, edge, and corner sea to the ocean selections to
#       generate that style of map.  Particularly, if you enjoy the 'central sea'
#       map style, you can now generate that with SmartMap.
#     Tweak resource rates to make whales not quite so common, and to address other
#       resource rate comments reported.
#     Place resources in placement order to try to prevent good map positions from
#       being taken by resources placed in wrong order.
#     Added SmartMap New World placement option.  This will prefer to place civs
#       only on continents in the eastern hemisphere.  This option will default
#       to ordinary smartmap placement if there are not at least 2 continents, or if there 
#       is not a continent at least 90% of which is located in the western hemisphere.
# 8.2
#     Add option for 'no ocean' that will place nearly all land.
#       Note: takes longer to generate high land count maps.  Be patient.
#     Add option for 'no ocean, no lakes' that will place all land.
#     Improve the placement performance of smartmap placement on high land count
#       maps by ruling out very low scoring placement positions earlier.
#       This will improve overall map generation performance slightly.
#     Small improvements to forest and lake placement, attempt to cure the
#       rare 'all forest tiles' on normal forest problem (I've never reproduced
#       this, but the chance that any such bug survived should be low.)
#     Added 'smartmap random pick' option to all (smartmap controlled)
#       menus, this makes a choice from among the more typically desirable
#       options, and also stays random the next time you create a map,
#       unlike the standard 'random' option, and even randomly re-picks if you
#       choose to 'regenerate map'.  I highly recommend using this in place of
#       the standard 'random' option.
# 8.1
#     Add Clump Health and Clump Both resource placement options.
#     Clean up land placement code organization a little bit.
#     Force release of spiral search memory, and reduce how far spiral search
#       searches to improve performance.
#     Fix the defaults for override with and height that were causing people
#       to get out of memory errors.
# 8.0
#     Use pickle to store last preferences.
#     Tweaked the adjustment to rivers and lakes so that many rivers will be more
#       noticeable, and few lakes will really cut down the amount of lakes.
#     Fix resource rates for smaller maps.
#     Allow start placement to place settlers on hills as well as flatlands.
#     Weight hills for start placement appropriately to the defensive bonus.
#     Add spiral search feature, this may be of use to other mapmakers, used in
#       my script to assign fragments as belonging to the nearest continent.  Spiral
#       search is the most efficient method of doing a 'find nearest X' on any grid
#       based map, assuming you don't have a list of all X available.
#     On higher river levels, make hills more likely to start rivers.
#     Make rivers a little more common in general.  Make the automatic river for each
#       sufficiently large continent always start from a hill or peak if one is
#       available, or a random tile if no hill or peak is found.
#     Improve river paths by using spiral search to measure distance to nearest ocean
#     Don't flatten peaks on coast, as this can create interesting strategic issues,
#       and also tended to leave far fewer than the expected number of peaks.
#     Fix a bug in the start placement picker that was giving extra scores for the 
#       start plot when it was supposed to be scoring nearby plots.
#     Adjust how fragments are generated, and the number of fragments for few/many,
#       to make maps using smaller numbers of fragments look less chaotic.  Fragments
#       also now sort-of obey the sealevel rules: they are allowed to start anywhere,
#       but can only grow into one neighboring continent, so they are more likely to
#       create an archipelago type of continental extension, rather than so frequently
#       causing continents to merge.
#     New SmartMap Clump Happy resources option which distributes all happiness 
#       resources like the standard generator (in clumps so trade is more likely to be
#       necessary, hence 'clump happy'), but other resources in the smartmap style so
#       that the distribution is fairer.
#     Corrected a small land counting problem that sometimes gave too much land for
#       a given ocean percentage.
#     Added a few new options to the override width and height to allow for generating
#       random ranges of sizes, as a couple of people had requested that.
# 7.2
#     Separate GoodyHut option from Bonuses, and add support for
#       no/low/normal/high rates of goody huts.
#     Add support for low/normal/high levels of resources (with low = 2/3rds
#       and high = 4/3rds normal, same for goody huts).
#     Rearrange all of the options to put the less commonly used ones at the end.
#     Tweak up the default hills % slightly.
#     Tweak up the river rate slightly.
#     Make broad empty plains a little less likely by distributing hills better.
#     Add some extra continent options, 1 per 2 players, 1 per 3, 1 per 4
#       these may be easier for some to think about than picking an exact number.
#     Added continent options 2 per player, 3 per, 4 per.  These are good to use
#       if you're using low sea levels to allow land blobs to merge.
#     Improve the likelyhood that small numbers of continents are well separated.
#     Improve the chance that player start plots will neighbor at least one hill.
#     Added option to adjust the river and lake frequencies.
#     Tweaked the width/height calculation so that super wide maps aren't as likely.
#     Tweaked hills placement to make big empty plains less likely.
#     Improved the resource distribution to get better strategic resource separation.
#     Added no-continents option, which will result in all land being placed in
#       fragments instead (looks suspiciously like 'archipelago').
#     Fixed a bug in the counting of land resulting in fewer peaks than expected.
# 7.1
#     After reading that Atlas can generate 1600x1600 maps (not that civiv can
#       load them) decided to bump up the maximum width/height overrides so
#       that if, in the future, civiv can handle such maps, SmartMap will be
#       ready.  Can now, hypothetically, generate 5000x5000 maps.
#     Also, converted the units to map tiles, since that is probably less confusing
#       for non map-scripters.
#     Bump up the size of duel, tiny, small due to our allowance for more ocean
#       and also because the actual chosen dimensions tend to result in a map with
#       slightly smaller than the expected area.
#         Areas     Duel Tiny Small Standard Large Huge
#         SmartMap: 80   140  220   360      560   860
#         Standard: 60   104  160   273      416   640
#     Make SmartMap strict default for feature generation.
#     Tweak up the default ocean size due to the larger map size.
# 7.0
#     Add new generation option: Land Style.  Land style allows you to opt
#       for less roundish continents, and also to allow for small independent
#       land fragments separate from the main continents.  When land fragments
#       are generated, they may be generated anywhere, and may violate the 
#       sea level strategy guarantees, so use at your own risk.  The less rounded
#       continent options without land fragments will obey the sea level rules,
#       but may be less fair.
#     Based on a report of it being annoying to have your capital placed on
#       the wrap-edge of the minimap, I now rotate the initial land placement
#       to put the minimum number possible of land near the map wrap edge.
#       While this does not guarantee this will not happen, it makes it highly
#       unlikely.
#     Further, made the first player always pick the center most start position
#       if wrap is enabled.  This should make single player games always have
#       the human player start fairly well centered.  This should absolutely
#       guarantee that a single human player will not start with their capital
#       on a map wrap edge.
#     Fixed a couple of places where I did not consider y-wrapping correctly.
#       But I guess no one plays y-wrap (or both wrap), or they'd have surely noticed.
#     Introduce option 'SmartMap Strict' for feature generation.  This will only place
#       floodplains & tundra where the normal scripts would.
#     Made floodplains on anything other than desert less likely, and oasis on tundra
#       less likely for the non-strict feature generator.
#     Enhanced the plot wetness calculator so plot wetness can be factored into more
#       of the generation process.
#     Improved the player placement rules to prefer not to place players initially
#       on a stretch of land reaching into the ocean.
#     Added ReadMeSmartMap.txt
# 6.1
#     Tweak up number of hills for 'many hills'.
# 6.0
#     Improved lake generation system, grows more lakes beyond one plot
#     Numerous terrain relevance improvements.  More desert&snow at high altitudes,
#       less desert near water, etc.
#     Changed continent computation to more accurately determine the large
#       continents, which should as a side effect improve the fair resource
#       distribution.  Removed tiny continents which will never be player
#       starts from the fair resource distribution.
#     Improved tile wetness calculator to consider number of rivers and lakes
#       touched by tile (a tile touched by fresh water on multiple sides is
#       now more likely to shift from desert->plains->grass).
#     Added a river originating at the highest point of each continent, which
#       greatly improves the fairness of river distribution overall
#     Changed forest/jungle options to allow independent choice of forest and
#       jungle coverage (light,normal,heavy independently selectable for each)
#     General code cleanup, reorganization, commenting
#     Ran code through pychecker and cleaned all warnings, pychecker found a
#       couple of legitimate bugs that may have improved the resulting maps.
# 5.1
#     Improvements to fair bonus distribution algorithm.
#     Fixed a typo bug causing python error on undefined edgeprob
#     Tweak desert rate down slightly
# 5.0
#     Work on refining the continent boundaries so water straights are not so
#       obvious when you see the resulting cymap.
#     Rewrite river generation, move it before terrain generation so terrains
#       can consider rivers (allow grasslands and other 'wetter' terrain to be
#       more common around rivers, as well as forests/jungle)
#     Replace the standard river altitude function with one that seems to yeild
#       better river paths
#     Assorted terrain and feature improvements.  Restored possibility of flood
#       plains in desert, and made terrain tend to blob together more rather
#       than appearing so completely random.  Allowed hills to have terrain rather
#       than always defaulting to grass (so desert/hills are now possible).  I can't
#       believe no one complained about that one.
#     Found a major logic error in the player placement algorithm that was unfairly
#       favoring near-lake placements (I has assumed CyPlot.isCoastalLand() was equivalent
#       to asking: can I build a lighthouse?, this turned out not to be true).
#       As a result, initial placement is much more likely to be coastal now, and 
#       this has a nice side effect of improving the average separation of players.
#     Tweaked resource rates a little more based on various feedback.
#     Replace standard lake addition function so we don't get lakes in odd places
#     Futher performance optimization.  The low and medium sea level options are
#       now more than twice as fast, and the high sea level option is about 50%
#       faster.  I can now generate a huge map with low sea level in under a minute.
#     After discovering that the map sizes in great plains are way off, resized my 
#       maps to the following settings:
#                   Duel Tiny Small Standard Large Huge
#         SmartMap: 60   100  180   320      560   1000
#         Standard: 60   104  160   273      416   640
#       This is a bump up for everything except huge, which becomes slightly smaller,
#       and thus hopefully usable by more people.
#     Added related option to override the map width and height.  You can now select
#       your map size fairly precisely, including the ability to pick map sizes that
#       are so large they may cause civiv to have problems.  Up to 256x256 map positions,
#       which would be a 1024x1024 map, with an area of over 1 million (compare to huge at
#       an area of 16 thousand!)  If you are able to generate a map of even 128x128 I'll be
#       shocked.  Nevertheless, the option is there.  So no complaining that I made huge
#       smaller!  Just set your game to huge, then override the size to whatever you want.
#       Or for a bizarre experience, set your map to duel, and override the size to whatever
#       you'd like.  For kicks I generated a 256x8 map, and that was just barely startable
#       with my 1 Gig of memory.  Minimap looks ridiculous.
# 4.2
#     Increase goody hut count slightly, particularly on maps with lots of land
# 4.1
#     Slightly refined smartmap resource placement to make distribution
#       fairer between continents, and not to allow so many duped resources
#       within one city radius
#     Small upward tweak to resource rates
# 4.0
#     Overall performance improvement:
#        Now down to about: 
#        <5 seconds for duel,tiny,small
#        10 seconds for standard,
#        40 seconds for large,
#        ~2 minutes on huge
#        On a 1.8Ghz Pentium-M with 1Gig
#     Optimize land placement speed by remembering all potential growth positions
#       rather than looking for them randomly.
#     Optimized and improved player placement function.  No longer makes certain
#       rare placement errors, and the speed is dramatically better, particularly
#       for continents with a large number of players to be placed (pangea).
#     Optimized bonus placement.  This used to get very slow on large/huge maps due
#       to making a pass through all tiles for each bonus type.  Now makes one pass
#       through all tiles and caches the result.
#     Changed the player option read function to take a string rather than an index
#       to make it clearer in code, and also make it impossible to break when
#       changing the order of options in the list.
#     Land areas are 20,40,90,210,500,1200 (duel,tiny,small,standard,large,huge)
#       Compared to  15,24,48,88 ,154,252 for great plains.
#       Smartmap rounds down calculated width and height,
#       so the areas are not quite as big as they seem,
#       but large and huge are noticeably bigger.  This allows for more flexible
#       use of the ocean coverage option.  Note to firaxis: it would be a better
#       design if in the expansion pack or a patch you passed the expected land
#       area to the grid size function from the current mod!  Then maps could
#       dynamically size themselves to the expected land area and provide fair
#       gameplay regardless of other chosen settings (and be compatible with mods
#       that make use of different sized maps ... no more hardcoding like in
#       great plains)!
#       Note: I can just barely start a huge game with 1Gig memory.  This implies
#       firaxis is using somewhere in the neighborhood of 32k memory per tile.
#       Good grief, what on earth are they storing!
# 3.2
#     Add options for specifying weight of initial jungle/forest cover
#     More performance optimizations
# 3.1 
#     Fix rare issue with placements landing too close together
#     Slight tweaks to placement scoring to value early resources higher
#     Fix issue with placements on separate continents too close together
# 3.0 
#     Re-enable climate selection, which may or may not be honored
#     Restore 36-continent option, accidental deletion
#     Create a better default option for each selector
#     Un-smooth edges near poles
#     Properly handle allowing continents to wrap on wrap axis
#     Performance optimizations by reducing function call counts
#     Custom player placement rules
#     Complete replacement of bonus system
#     Separate out goody hut placement and put in correct order
#     Cleaner debug print messages
# 2.0 
#     Reduce bonus percentage for SmartMap bonus
#     Allow standard bonus distribution as an option
#     Bias width,height towards wrap direction
#     un-straight-edge where continents meet
#     SmartMap terrainGen allows more desert
#     SmartMap featureGen suggests more forest and jungle
#     Support for random ranges in number of continents
# 1.0 
#     Initial version

Read More

Comments on this File

There are no comments yet. Be the first!


50 XP

Registered 11th February 2006

3 Files Uploaded

Share This File
Embed File