Sid Meier's Civilization VI

Sid Meier's Civilization VI

Got Lakes (Various Worlds) Map Script
 Denna tråd har blivit fäst, så den är troligtvis viktig
Scrum Lord  [utvecklare] 25 okt, 2020 @ 19:05
Got Lakes versus Base Game
Intro

You might be wondering, having glanced at the mod description for Got Lakes, what exactly are the "various map utility fixes" included in this map script? This post answers that question by listing all of the features and fixes that Got Lakes has compared to the base game (Civ VI Vanilla/R&F/GS).

I grouped these features and fixes into separate sections, one for each map generation step. Then I sorted the sections into roughly same order in which Got Lakes runs the steps to generate a map.

Each section may contain additions, adjustments, or fixes:
  • Additions are new features that the base game simply does not have or support.
  • Adjustments are changes to the base game's behavior, usually to address balance issues.
  • Fixes resolve base game defects, ranging from minor inconveniences to map generation failure and even CTD.


This reference is for Got Lakes v37.1.


Map Initialization: Size and World Wrap

Additions:
  • Added an option to control world wrap. Can randomize this in single-player mode.
  • Reduces map size when cropping icy poles from a globe map (Climate Wrap = Globe, Icy Poles = Cropped).


Land and Sea

Additions:
  • Added four "Landmasses" options to choose from 24 different ways of generating land and to allow randomizing which landmass is chosen in various ways, like shuffling a deck of cards.
    • Some of these use regular fractals like the base game, while others use fractals filtered in different ways, random island formations from Civ V, random paths, fractals divided by random paths, and good-old-fashioned trigonometry (ovals, circles) with fractal bays for detailed coasts.
    • The following landmasses were designed from scratch: Bagels, Noodles, Numerous Continents, Clusters, Megacluster, Mini-Donuts, Inverted Donut, Inverted Extras, Hex, Maze, Snake
  • Added an Extras option to choose from 8 different ways of adding extra islands/lakes, including no islands/lakes.
    • Includes Chains (a thicker variant of island formations from Civ V), Clusters (fractal lands divided by random paths), Mini Donuts (circles/slices with fractal bays), sprinkles (fractal), Tectonic (driven by the mountain generator), Tectonic and Chains, and Everything.
  • Expanded Sea Level option to include Very Low, Very High, and Random Low-High.
  • Added a Circumnavigation option to control whether Got Lakes enforces naval east-west circumnavigation, and which method to use. Can choose to add channels at the map edges, or random meandering east-west paths, or both types of channels.
  • Added a Connected Lands option to toggle connecting continents/islands with random channels.
  • Added a Connected Seas option to toggle connecting all bodies of salt water with random channels.
  • Added a Turn Seas into Lakes option to toggle turning salt water oceans and seas into fresh lakes.

Fixes:
  • Improved responsiveness to Sea Level for Island Plates landmass.
  • Fixed some off-by-one bugs in fractal-land generation that resulted in awkward one-tile islands and potential map-generator instability.


Mountains and Hills

Additions:
  • Added a Mountains option to choose from 7 different ways of generating mountains.
    • Includes Tectonic Plates (similar to the base game), Fractal Ranges (snaky ranges based on Civ V Highlands), Scattered Crags (small clumps inspired by Civ V Highlands, but redesigned for better responsiveness to adjustment options), Clustered Highlands (big clumps based on Civ V Highlands), Uncanny Valleys (designed from scratch), Winding Canyons (designed from scratch), and Everything (runs all of the other mountain generators through fractal filters).
  • Added a Mountain Clumps option to choose whether to hollow-out mountain clumps, carve mazes, or leave mountain clumps alone. Randomizable.
  • Replaced World Age option with Mountain Level and Hill Level options, each of which range from Very Low to Very High levels and provide Random Low-High in addition to Random.
  • Hill Level defaults to "Same as Mountain Level" so that both Mountains and Hills can still be controlled by a single option (Mountain Level), just like the base game.
  • Added a Thin Mountain Clump Edges option to toggle thinner edges when hollowing out mountain clumps.
  • Added a No Coastal Mountains option to revert to base game behavior with respect to coastal mountains.
  • Added a No Hills option to prevent non-wonder hills from spawning.
  • Added a No Mountains option to prevent non-wonder, non-volcano mountains from spawning.
  • All mountain patterns also generate trenches, which only appear when Tectonic Extras are included in the Inverted Extras landmass.

Adjustments:
  • Adds coastal mountains by default for extra randomness / more interesting maps.
  • Randomizes input flags for mountain fractals so that mountain fractals are less predictable.

Fixes:
  • Scans the map for areas surrounded by mountains and creates random mountain passes until all areas are reachable.


Shallow Water and Oceans

Additions:
  • Added a Coastal Expansion option to control the balance of shallow water versus deep water. Capable of removing all excess coast or turning all ocean tiles into shallow water.
  • Added an Isolated Coasts option to toggle isolation of lands that are sufficiently separated by ocean.
  • Additional sources of shallow water: Tectonic Extras, donut filling.


Lakes

Additions:
  • Added a Lake Level option to control the number of fresh water lakes added to the map after adding landmass and extra islands/lakes.
  • Added a No Additional Lakes option to prevent additional fresh lakes after generating the landmass.
  • Enabled lakes adjacent to plots that have rivers for increased randomness.


Rivers

Additions:
  • Added a Rivers option to choose from 5 different ways to generate rivers.
    • Includes Simple (emulates the base game), and four other patterns that I designed which are capable of branching into complex systems.
  • Added a River Level option to control the number and length of rivers added to the map.
  • Added a No Rivers option to prevent rivers from spawning.

Adjustments:
  • Increased the "standard" number of land tiles adjacent to a river from roughly 15-30% of total land to roughly 40-45% of total land; fewer/smaller dry regions on the map => more good spots for cities => more cities => feels like a bigger map, but with less risk of causing the game to crash than playing on a larger-than-huge map size.
  • Added RNG to plot elevation calculations so that river flows are more detailed / less predictable.
  • Rivers no longer avoid deserts because that makes Egypt sad. Also allows adding rivers before generating terrain and features.
  • Reduced elevation of mountains for river flows so that rivers can flow through mountain ranges to reach areas that are nearly surrounded by mountains.

Fixes:
  • Added precise intersection testing to allow rivers to flow closer to each other without stopping.
  • All rivers are generated mouth-to-source (upstream) to avoid river-generation failure--avoids failed rivers that result in excessive dry spots on the map (and makes the river code easier to maintain).
  • Rivers can branch and flow around obstacles for increased coverage of the map and better responsiveness to River Level. Also allows for distinct river patterns such as Branchy and Snaky.
  • Rivers can flow into fresh lakes in order to add fresh water access to dry areas that have lakes preventing rivers from reaching the coast.
  • Rivers can randomly spawn fresh lakes in order to add fresh-water access to completely dry parts of the map.


Terrain/Features for Climates

Additions:
  • Added a Climate Wrap option to control the location/existence of poles (Azimuthal, Globe, or Region). Can also set to Random Globe/Region or Random.
  • Added a Climate option to choose from 5 distinct temperature ranges (known as climates) ranging from Snowball to Sandstorm. Includes a Standard climate that is similar to the base game. Can also choose Random Ice Age to Greenhouse or Random.
  • Added a Biome option to choose from 4 distinct balances of rainfall-controlled features (known as biomes). Includes a Standard biome that is similar to the base game.
  • Added a Sunlight option to control the whether poles are both cold (Standard), one-hot-one-cold (Tilted Axis), or both hot (Two Suns).
  • Added an Icy Poles option to control whether to include or exclude the coldest regions of the map.
  • Expanded Temperature option to include Very Cold, Very Hot, and Random Low-High. Stacks with Climate.
  • Added a Desert Level option to directly control desert frequency and desert latitude bands. Stacks with Temperature.
  • Added a Tundra Level option to directly control the thickness of the tundra latitude bands. Stacks with Temperature.
  • Expanded Rainfall option to include Very Dry, Very Wet, and Random Dry-Wet. Stacks with Biome.
  • Added a Climate Granularity option to control the granularity of all climate fractals (affects clump sizes of all land terrains and rainfall-controlled features)
  • Added a Grass/Plains mix option to control the balance of grassland and plains.
  • Added a Forest/Jungles mix option to control the balance of forests and jungles.
  • Added a Biodiversity option to control various terrain/feature combos via levels of diversity. Defaults to "Climate Based" so that players can ignore this option while still allowing automatic balance changes for extreme climates.
  • Added a Circumnavigation option which can cut random paths through ice and prevent ice from touching coastal land.
  • Added a Connected Seas option which prevents ice from touching coastal land in addition to connecting all saltwater seas.
  • Added a No Coastal Ice option to prevent ice from touching coastal land.
  • Added the following options to disable terrain types: No Desert, No Grass, No Plains, No Snow, and No Tundra; enabling all of these will randomly remove 1-3 terrain types.
  • Added the following options to disable terrain/feature combos: No Desert Forests, No Desert Jungles, No Desert Oases, No Grass Jungles, No Plains Marsh, No Snow Forests, No Snow Oases, No Tundra Forests.
  • Added the following options to disable non-wonder features: No Floodplains, No Forests, No Ice, No Jungles, No Marsh, No Reefs.

Adjustments:
  • Replaces the base game's temperature variation fractal and latitude threshold system with interpolated fractals and min/max latitude ranges to create gradual transitions between latitude bands.
  • Treats both grassland and plains as "temperate" terrains to improve playability across various climates and temperatures.
  • Slightly increased frequency of grassland (instead of plains) on hills to improve fertility of hilly regions.
  • Slightly increased frequency of plains (instead of grassland) on flat land to improve productivity of flat regions.
  • Uses a variety of fractal filters to make formations of forests, jungles, marsh, etc. more interesting than mere blobs/clumps.
  • Enables ice in fresh lakes.
  • Prevents ice in front of river mouths.
  • Allows jungles on grassland by default.
  • Allows marsh on plains by default.
  • Allows jungles and/or forests on desert for certain maps.
  • Allows forests and/or oases on snow for certain maps.
  • River Level adjusts frequency of oases, but only to balance-out frequency of deserts that can have oases (more rivers means fewer potential spots for oases).
  • Frozen terrain is slightly warmer when adjacent to rivers.
  • Uses an interpolated fractal to place ice in addition to the base game's interpolated white noise ending with top/bottom rows of solid ice. Results in ice-flow mazes that are interesting to explore.
  • Uses latitude interpolation to determine ice loss (for GS ice-melt events) for fractal and white-noise ice (for more realistic-looking loss of ice)
  • Uses white noise (per-tile RNG) to determine ice loss for top/bottom rows of ice (for simplicity).

Fixes:
  • All features for climates are fractal-based just like Civ V; the base game uses per-tile RNG (creates incoherent white noise patterns) and adjacency-checks for clumping/throttling (subject to directional biases due to iterating over plots in SW-NE order); using fractals instead solves both of these problems AND allows for granularity control AND allows interpolation of said fractals over latitude band ranges.
  • Scans the map for areas surrounded by ice and creates random ice passes until all areas are reachable.


Continent Stamping
Additions:
  • Added a custom continent stamper for supporting maps that have no mountains and no water; besides this edge case, Got Lakes uses the base game's continent stamper.

Volcanic Terrain/Features

Additions:
  • Added a Geothermal Fissure Level option to control the frequency of geothermal fissures.
  • Added a Volcano Level option to control the frequency of volcanoes. Defaults to "Same as Mountain Level" so that mountains and volcanoes can both be controlled by a single option (Mountain Level), just like the base game.
  • Volcano Level can also be set to "Same as Hill Level".
  • Added a No Geothermal Fissures option to prevent non-wonder geothermal fissures from spawning.
  • Added a No Volcanoes option to prevent non-wonder volcanoes from spawning.

Adjustments:
  • Doubled the "standard" number of geothermal fissures.
  • Doubled the "standard" number of volcanoes.

Fixes:
  • Volcano placement respects the No Coastal Mountains option, so that disabling coastal mountains will also prevent coastal volcanoes.
  • Avoids adding volcanoes on map edges to prevent walls of volcanoes from cutting-off parts of the map.
  • Volcano placement no longer places hills or non-volcano mountains; improves responsiveness to Mountain/Hill Level.


Natural Wonders

Additions:
  • Added a Circumnavigation option which can prevent impassable natural wonders from blocking naval chokepoints.
  • Added a Connected Seas option which prevents impassable natural wonders from blocking naval chokepoints.

Adjustments:
  • Turns salt-lake wonders such as The Dead Sea and Lake Retbah into fresh lakes by default. This is overrideable by setting RECALC_AREAS_AFTER_NATURAL_WONDERS to false in GotLakes.lua.

Fixes:
  • Natural wonders that have Lua overrides for custom placement no longer cause the map generator to crash for maps that do not wrap east-west. Unfortunately, this means that Got Lakes must explicitly support such wonders in order for them to appear on the map. Got Lakes currently supports all natural wonders from the base game and from Terra Mirabilis.
  • Added tie breakers to sorting to avoid descyncs in multiplayer games.
  • Natural Wonders can no longer spawn on tiles that are completely surrounded by impassable terrain.
  • Improved lua logging of natural wonder placement


Cliffs

Adjustments:
  • Enables cliffs next to fresh lakes.

Fixes:
  • Scans the map for areas surrounded by cliffs and creates random passes through cliffs until all areas are reachable.


Resources

Additions:
  • Added a Scrambled Land Luxuries option to override most rules for where luxuries can be placed on land.

Adjustments:
  • Allows all strategic resources to appear on all non-floodplains terrain types for maps that are mostly represented by only one or two land terrain types.

Fixes:
  • Added tie breakers to sorting to avoid descyncs in multiplayer games.
  • Resource placement uses area scanning info that accounts for the placement of natural wonders, unlike the GS expansion of the base game.


Coastal Lowlands

Additions:
  • Added a Coastal Lowlands option to override placement of lowlands for coastal flooding.
  • Capable of connecting clumps of inland floodable tiles to bodies of water with random paths of lowlands; applies to Deluge, Cataclysm, Head for the Hills, and Everywhere only.
  • Capable of placing lowlands on every non-wonder, non-mountain land tile when set to Everywhere.

Adjustments:
  • Allows lowlands on inland marsh and river tiles by default.
  • Adjusted scoring of potential lowland plots to allow flooding of lakes.
  • The effect of CLIMATE_CHANGE_PERCENT_COASTAL_LOWLANDS global parameter gradually decreases as the values of this option become more "severe"; this helps to space out the number of tiles marked as lowlands so that Deluge, for example, always marks fewer lowlands than Cataclysm.

Fixes:
  • Added tie breaker to sorting to avoid descyncs in multiplayer games.


Starting Plots

Additions:
  • Added a Land Starts option to control whether civs that start on land start on the largest area, are divided among areas like normal, or each start in a separate area. Set to Landmass Based by default so that landmasses can automatically adjust this option.
  • Added a Water Starts option to control whether civs that start in water start on the largest area, are divided among areas like normal, each start in a separate area, or start on land. Set to Landmass Based by default so that landmasses can automatically adjust this option.
  • Added a Minor Starts option to control whether city-states start on the largest area, start regions like normal, each start in a separate area, are divided amon areas like major civs, or start using the same method that is chosen by the Land Starts option.
  • Added a custom start positioner (originally based on Civ V's AssignStartingPlots utility) to support a wide variety of maps as well as Land/Water/Minor start options.

Adjustments:
  • Relaxed constraints on starting major civs and city-states near natural wonders; instead of ignoring such plots entirely, the start positioner now considers such plots as fallbacks in case better plots are not available and factors natural wonders into plot fertility scoring. Gives the start positioner more flexibility in choosing starts; improves support for increased natural wonder spawn; increases start positioner's ability to maximize distance between civs without compromising on start quality.
  • Enforces civilization-specific start biases with the following algorithm (instead of the base game's ineffective tiered round-robin over a handful of bias-agnostic starting locations):
    1. Choose at least N generic regions for N players.
    2. Scan every city-capable plot in every region to determine each player's "interest" in each region based on a sum of tier-weighted start bias plot scores. If a player has no start bias then treat that player as slightly interested in every region.
    3. Use backtracking constraint satisfaction (kind-of like solving a Sudoku puzzle) to maximize the number of players that are at least slightly interested in their assigned region, while also initially assigning regions in order of highest interest.
    4. Choose a location for each region while considering the assigned player's start bias among other things such as fresh water access and distance to other civs. Locations that have a start bias score and are not completely dry take priority over other locations.
  • Improved handling of coastal bias: instead of simply matching a plot's terrain type with coast, Got Lakes measures the size of the surrounding sea/ocean and reduces coastal bias score if the ocean/sea is only a small fraction of the world's water.

Fixes:
  • Avoids placing multiple water-start civs near each other in the water.
  • Allows water-start civs to start in small salt-water seas or even fresh lakes when oceans are not available.
  • Makes up to three attempts to place starts in order to avoid map-generation failure; will fall-back to default placement if the first attempt fails, and then relax constraints completely (starting major civs like city states, for example) if the second attempt fails.
  • Start placement uses area scanning info that accounts for the placement of natural wonders, unlike the GS expansion of the base game.


Miscelleneous

Additions:
  • Added map option defaults and various hard-coded constants near the top of GotLakes.lua as a means of additional tinkering for Lua-savvy players (also helps me with debugging).
  • Added Lua log messages for Got Lakes version, map seed, all options selected, results of random options, land/terrain/feature stats, and start positioner results, in case the player is curious about what kind of map was generated (also helps me with debugging).
Senast ändrad av Scrum Lord; 12 jun, 2024 @ 19:22