In other languages: Deutsch Português, Brasil Русский Українська 简体中文

Map generator: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
No edit summary
(30 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{Languages}}
{{Languages}}
World generation is, in short, a number of settings which define what the world will look like once generated. This can dramatically alter gameplay- a new player is advised to start with the default settings before deciding to change their world.
[[File:Default_123456789.png|thumb|right|An example how the world generator might create a new map: Default settings with map seed 123456789]]
World generation is the procedure by which the in game landscape is generated. In short: a number of settings, editable at the start of a new world, define what that world will look like. This can dramatically alter gameplay a new player is advised to start with the default settings before deciding to change their world.
__TOC__{{Clear}}
== Map generation presets ==
[[File:MapGeneratorOverview.png|thumb|right|400px|Overview of the map generation screen]]
A preset may be chosen instead of manually configuring the generation.
=== Default ===
Normal settings.


==How it works==
All terrain and resource settings set to regular/normal/medium.
: [[File:MapGeneratorOverview.png]]
A more technical explanation of world generation mechanics is that the map generator generates most parts of the world with an algorithm named "Perlin Noise". In short, it works a bit like the waves in the sea.


[[File:Water-ocean-waves-sea-high-resolution-pictures.jpg|thumb|left|300px]]
==== Advanced settings ====
All settings are set to their defaults:


{| class="wikitable"
|-
! Pollution                !! Default !!Evolution  !! Default
|-
| Absorbed per damaged tree || 500    ||Enabled          || Yes
|-                                   
| Diffusion ratio          || 2%      ||Time factor      || 0.00000400
|-
| Dissipation rate          || 1      ||Destroy factor  || 0.00200000
|-
| Enabled                  || Yes    ||Pollution factor || 0.00001500
|-
| Minimum damage to trees  || 3500
|-
|}


{| class="wikitable"
|-
! Enemy expansion                  !! Default !!Recipes/Technology      !! Default
|-                                           
| Enabled                          || Yes    ||Recipe difficulty          || Normal
|-                                           
| Maximum expansion distance      || 7      ||Technology difficulty      || Normal
|-                                           
| Minimum group size              || 5      ||Technology price multiplier || 1
|-
| Maximum group size              || 20
|-
| Minimum cooldown (Minutes)      || 4
|-
| Maximum cooldown (Minutes)      || 60
|-
|}


Everything above a defined level defines the existing (or non-existing) features of some type of terrain.
=== Rich resources ===
Resources patches have a larger richness, so you don't have to expand far.


Difference from default: Resources have very good richness instead of regular.


The player should also know that the map is not generated at game start. Only the parts they see are generated, everything else is not. The map will be generated gradually as the player explores more terrain. See below for more technical details.
=== Marathon ===
Recipes and technologies are more expensive.


<br clear=all>
Difference from default: Expensive recipes and technology, technology price multiplier 4.


===The top row===
=== Death world ===
====Frequency====
Biters are more dangerous and evolve faster.
This is '''not''', how frequent ore, coal, oil etc. is, instead determining the number of individual deposits the player will encounter.


This defines the wavelength of the wave-generators used by the Perlin Noise algorithm above, but not the total size of all the waves.
Difference from default: Very high frequency and size enemy bases, small starting area, enemy evolution time factor and pollution factor are both set to 0.00002.


What this means is that frequency doesn't modify the amount of resources on a tile, instead modifying the area of each deposit. If the player decreases frequency then each of the deposits has less resources in total (because it covers less area), but per tile of a deposit there will be the same number of resources.
=== Death world marathon ===
Additionally, changing frequency doesn't affect the average amount of resources in a limited map, only their distribution.
Recipes and technologies are expensive and biters are dangerous and plentiful. Only select this if you are a Factorio veteran.


''High frequency'': For Terrain segmentation it means: Many different types of terrain, forest, desert and swamp could be within 10 tiles or less. Recommended for players interested in the different biomes of the world.
Combines "Marathon" and "Death world".
For resources: Patches of resources are very common but frequently small and wear out quickly. Recommended for players who are willing to constantly reset equipment in exchange for a constant supply of resources.


''Low frequency'': For Terrain segmentation it means: Big landscapes, vast areas typically only with forests. Recommended for players who want to consistently experience what they have near their spawn point.
=== Rail world ===
For resources: Resource patches are fairly rare but almost always very large and rich in resources. Recommended for players who don't want to move equipment often or who prefer to explore the world.
Resource patches are large and spread far apart, to encourage train systems. Biters won't create any new bases or re-expand into cleared territory.


In short: Low terrain segmentation means large areas with same terrain. High terrain segmentation is the opposite, the terrain changing nature often. Typically huge forests vs. lots of small woods.
Difference from default: Coal, copper ore, iron ore, and stone are set to very low frequency and big size instead of normal/medium. Uranium ore and crude oil are set to low frequency and high size. Water has a very low frequency and a big size. The evolution time factor is set to 0.000002 and enemy expansion is disabled.


This also causes enemy bases to appear more often using the same distribution rules as ores and biomes- however, this can lead to rapid [[enemy]] expansion due to the much higher number of nest clusters.
== Manual configuration ==
=== Basic settings ===
==== Peaceful mode ====
The [[enemies]] don't begin fights, only responding if the player hits them. Additionally, when a map is in peaceful mode, the enemies will not [[Enemies#Expansions|expand]].


====Size====
==== Enable replay ====
This defines the size of generated ore patches and water through defining "levels."
: ''{{Main|Replay system}}''
Record all the actions that the player(s) perform during the game, so that they can later be played back as essentially a timelapse of the save file.


It increases the average diameter of ore patches and lakes, allowing one to adjust the size of both of these.
==== Map-width and -height ====
If the player limits the width and/or height they may generate maps with finite resources and area. Another option is to make the world infinite in only one axis, this is commonly referred to as a ''ribbon world''.


It's as simple as it seems- Small size would mean small ore patches and water masses, large means large ore patches and water masses. Note that this is effected by frequency, though it is presumably able to increase the total ore and water of the world where frequency simply re-balances it.
==== Map seed ====


Finally, this causes enemy bases to spawn larger, though bases created through the "natural process" of expansion are going to adhere to different rules.
This is the starting value for the random number generator that Factorio uses for generating the world based on the generation settings. Know that 'random number' is really a misnomer in Factorio and on computers in general, as they aren't really random, instead being calculated with complicated algorithms that require a seed as starting value (For more detail, see  http://en.wikipedia.org/wiki/Random_seed).


====Richness====
So even with the same map-exchange string but a different seed maps can change dramatically, or appear very similar. It's up to chance. In order to get a true copy of a world, giving the map exchange string and allowing the string to fill out the seed is important.
This defines the actual content of each generated ore patch, oil field, and [[Enemies]]' base drops, through changing the "height" of the wave.


Note that with bases this does not make them more difficult, but rather increases the [[Alien artifact]] yield.
==== Map exchange string ====


===The left column===
A map exchange string generally looks like this:
* Terrain segmentation: How often the terrain changes between biomes. This can include water, so beware of lower settings as they can limit world size artificially.
* Water: How water is generated on each map. Be warned that, since water is currently impassible except over lighter regions of water, this can potentially create very small or hard to navigate maps.
* Copper, Stone, Coal, Crude oil: Resources required to progress in the game. See above for more detailed explanations about each of these change.
* Enemy bases: How many and how large starting bases are. Note that new bases are created over time, making low enemy base counts somewhat less significant.


===Starting area===
  >>>eNpjYBBg0GdgYGBm5mFJzk/MYWZm4UrOLyhILdLNL0plZmTmTC4q
This is a value defining a special area around the central coordinates of the map which will have different ore frequency, etc. from the rest of the map. Generally, this results in at least one confirmed ore source, always results in a water source, and always removes biter nests from spawning for an area around spawn. The settings of this area usually guarantee better starting conditions, although conditions may vary- the player may spawn completely isolated from the rest of the world!
  TUnVzc/MYWFmZktJLU4tKmEGqkrJBNNcqXmpuZW6SYnFqUAea3pRYnE
  xkMGRWZSfBzKBEai0ODEvBSRZXJKfB1TFyFpSlJoKUsVdWpSYl1maC7
  aKhZmBMcvcibmhRY4BhP/XMxj8/w/CQNYFoBNBGORSBkagAAywJudkp
  qUxMCg4gjAjI2O1yDr3h1VT7Bkh8noOUMYHqEjEbqjIg1YoI2I1lNFx
  GMpwmA9j1MMY/Q6MxmDw2R7BgNhVAjQZagmHA4IBkWwBSTIy9r7duuD
  7sQt2jH9Wfrzkm5Rgz5gpG+orUPreDijJDtTAyAQnZs0EgZ0wHzDAzH
  xgD5W6ac949gwIvLFnZAXpEAERDhZA4oA3MHgE+ICsBT1AQkGGAeY0O
  5gxIg6MaWDwDeaTxzDGZXt0f6g4MNqADJcDESdABNhCuMsYocxIB4iE
  JEIWqNWIAdn6FITnTsJsPIxkNZobVGBuMHHA4gU0ERWkgOcC2ZMCJ14
  wwx0BDMEL7DAeMG6ZGRDgg/3WD0/SAKZ2kr0=<<<


The player may choose to make this area small or remove it entirely, however, this is not recommended as this opens the possibility of spawning in an impossible situation, or even in a biter nest.
The map exchange string can be used to share all map generation settings between different players. The player can paste the string (using {{Keybinding|ctrl|V}}) into the map exchange string field and the game will set the generation settings to the settings saved in the string, resulting in a complete copy of the map when generated.


It is generally a good idea for the player to explore a bit outside this area before they begin to build. While this area will almost always appear very fertile, it's possible that map generation will have made a situation where it is impossible to beat the game.
The map exchange string can be retrieved from save files by going into the load game screen, selecting the desired map, clicking the Map Exchange String button in the lower left corner and copying the string from the window that pops up.


===Peaceful mode===
For a technical description of the map exchange string, see [[map exchange string format]].
The [[Enemies]] don't begin fights, only responding if the player hits them. This can be also switched on during the game- look into [[Console#Useful_commands_.28cheats.29|Console commands]].


===Map-width and -height===
=== Resource and terrain settings ===
If the player limits the width and/or height they may generate maps with finite resources and area. This is recommended for multiplayer servers running on weaker machines or players seeking extra challenge.
==== Frequency ====


===Map seed / Map Exchange String===
For resources, frequency determines the frequency of ore/oil patches. The higher the frequency, the more patches can be found in a given area. Although the ore patches are of a smaller size, a higher frequency still results in more ore tiles being generated.


; Map Seed:
Frequency modifies the area of each deposit and the number of deposits. If resource frequency is increased, each of the deposits is smaller and has less resources in total (because it covers less area) and deposits are very common. If resource frequency is decreased, the deposits are larger but more rare.
: Random number generator seed
; Map Exchange String
: All settings for the map creation (Map Seed, settings for resources, settings for size, etc.)


====Map Seed====
Terrain, including enemy bases and trees, is affected in the same way: The higher the frequency, the more terrain "blobs"/nest clusters/forests can be found in a given area, while their sizes decrease with higher frequency.
This is the starting value for the random number generator that Factorio uses for generating the world. Know that 'random number' is really a misnomer in Factorio and on computers in general, as they aren't really random, instead being calculated with complicated algorithms that require a seed as startng value (For more detail, see  http://en.wikipedia.org/wiki/Random_seed).


So even with the same map-exchange string but a different seed maps can change dramatically, or appear very similar. It's up to chance.
Cliffs are affected in a similar way: The higher the frequency, the more cliffs can be found. However, the overall cliff area size increases with higher frequency, while the cliff "lines" are broken up more often, meaning that higher frequencies result in many big cliff blobs composed of short cliff "lines".


====Map Exchange String====
==== Size ====
A string generally looks like so:
For resources, the size setting adjusts the size of generated ore/oil patches.
>>>AAALABAABgADAwYAAAAEAAAAY29hbAMDAgoAAABjb3BwZXItb3Jl
AwMCCQAAAGNydWRlLW9pbAMDAgoAAABlbmVteS1iYXNlAwMCCAAAAGl
yb24tb3JlAwMCBQAAAHN0b25lAwMCORcrDUQ7AACMCwAAAAAAAAAAAA
ADAFR8w0Q=<<<


There is a thread for exchanging new strings: http://www.factorioforums.com/forum/viewtopic.php?f=36&t=5807
It's as simple as it seems — Small size would means small ore/oil patches, large means large ore/oil patches, thus increasing the resource count in a given area. Note that ore/oil patch size is also affected by frequency.


=====Where can I use this string?=====
<!-- A note on documenting bugs here: Normally this is should not be done. However, these bugs have existed for longer than half a year, and are expected to be fixed in 0.17 at the earliest. Since they have a big impact, the behaviour must be documented. So, I am taking the freedom to overrule the style guide in this case. -- [[User:Bilka|Bilka]] ([[User talk:Bilka|talk]]) - <span style="color:#FF0000">Admin</span> 19:30, 6 June 2018 (UTC)
It can be used in the map-generator: there is an extra field where the player can paste this string into. On windows computers, this may be done by selecting a string, right-clicking or pressing Control + C, then put it into the string field for the world generator with Control + V.
-->[https://forums.factorio.com/55178 Due to a bug], enemy bases are currently not affected by the size setting. Their size can only be changed by changing their frequency.


=====Where can I get this string from?=====
The other terrain types, including water and trees, are affected the same way as resources.
In the Load Game dialog select the game whose string you want, then click the Map Exchange String button in the lower left corner. When the string pops up, highlight it with your mouse and press Control-C to copy it. (Command-C on Mac.) You can now paste it in the map generator or send it to a friend.


==Generation==
[https://forums.factorio.com/54664 Due to a bug], the effect of the size setting on cliffs cannot be reliably predicted. Any size setting above small may lead to cliffs spawning in the starting area. Big and very big size seem to always spawn cliffs everywhere, while medium size and below may not spawn any cliffs.
The map generator (world generator) is based on a modified [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise algorithm].
 
A [[Types/AutoplaceSpecification#Noise|more detailed description]] is in the API document.
The following table shows how the frequency and size settings affects the generation of ore patches. For more detail, open the images in a new tab.
 
{| class="wikitable"
|+Generation of iron patches on different frequency and size settings
!Frequency \ Size
!Very small
!Small
!Medium
!Big
!Very big
 
|-
!Very low
|[[File:Iron_freq_very_low_size_very_small.png|frameless|150x150px]]
|[[File:Iron_freq_very_low_size_small.png|frameless|150x150px]]
|[[File:Iron_freq_very_low_size_medium.png|frameless|150x150px]]
|[[File:Iron_freq_very_low_size_big.png|frameless|150x150px]]
|[[File:Iron_freq_very_low_size_very_big.png|frameless|150x150px]]
 
|-
!Low
|[[File:Iron_freq_low_size_very_small.png|frameless|150x150px]]
|[[File:Iron_freq_low_size_small.png|frameless|150x150px]]
|[[File:Iron_freq_low_size_medium.png|frameless|150x150px]]
|[[File:Iron_freq_low_size_big.png|frameless|150x150px]]
|[[File:Iron_freq_low_size_very_big.png|frameless|150x150px]]
 
|-
!Normal
|[[File:Iron_freq_normal_size_very_small.png|frameless|150x150px]]
|[[File:Iron_freq_normal_size_small.png|frameless|150x150px]]
|[[File:Iron_freq_normal_size_medium.png|frameless|150x150px]]
|[[File:Iron_freq_normal_size_big.png|frameless|150x150px]]
|[[File:Iron_freq_normal_size_very_big.png|frameless|150x150px]]
 
|-
!High
|[[File:Iron_freq_high_size_very_small.png|frameless|150x150px]]
|[[File:Iron_freq_high_size_small.png|frameless|150x150px]]
|[[File:Iron_freq_high_size_medium.png|frameless|150x150px]]
|[[File:Iron_freq_high_size_big.png|frameless|150x150px]]
|[[File:Iron_freq_high_size_very_big.png|frameless|150x150px]]
 
|-
!Very high
|[[File:Iron_freq_very_high_size_very_small.png|frameless|150x150px]]
|[[File:Iron_freq_very_high_size_small.png|frameless|150x150px]]
|[[File:Iron_freq_very_high_size_medium.png|frameless|150x150px]]
|[[File:Iron_freq_very_high_size_big.png|frameless|150x150px]]
|[[File:Iron_freq_very_high_size_very_big.png|frameless|150x150px]]
 
|}
 
===== Starting area =====
 
The starting area is a special area around the central coordinates of the map which has different ore, water and enemy generation, from the rest of the map. Generally, this results in at least one confirmed ore source each of [[coal]], [[iron ore]], [[copper ore]], and [[stone]], always results in a water source, and always removes biter nests from spawning for an area around spawn. [[Uranium ore]] and [[crude oil]] should not spawn in the starting area. Cliffs should not spawn in the starting area[https://www.factorio.com/blog/post/fff-219], but due to [https://forums.factorio.com/54664 a bug] they may spawn there. The size of the starting area is adjusted by changing the size setting.
 
{| class="wikitable"
|+World generations on different starting area settings
!Very small
!Small
!Medium
!Big
!Very big
 
|-
|[[File:Starting_area_very_small.png|frameless|150x150px]]
|[[File:Starting_area_small.png|frameless|150x150px]]
|[[File:Starting_area_medium.png|frameless|150x150px]]
|[[File:Starting_area_big.png|frameless|150x150px]]
|[[File:Starting_area_very_big.png|frameless|150x150px]]
|}
 
==== Richness ====
 
This defines the actual content of every ore patch and oil field. The higher the richness, the more ore or oil each resource tile contains. Resource field richness increases by distance.
 
For [[tree]]s, the richness setting changes the density of their leaves. The higher the richness, the higher their leaf density, the more pollution they absorb.[https://forums.factorio.com/viewtopic.php?p=366015#p366015]
 
For enemy bases, the richness setting does not have an effect.[https://www.reddit.com/r/factorio/comments/8pjscm/friday_facts_246_the_gui_update_part_3/e0bttnp/]
 
{| class="wikitable"
|+Resources in ore patches on different richness settings
!Very poor
!Poor
!Regular
!Rich
!Very rich
 
|-
|[[File:Iron_richness_very_poor.png]]
|[[File:Iron_richness_poor.png]]
|[[File:Iron_richness_regular.png]]
|[[File:Iron_richness_good.png]]
|[[File:Iron_richness_very_good.png]]
 
|}
 
=== Advanced settings ===
These settings do not affect world generation, instead they allow to change some constants related to the map in general.
 
==== Pollution ====
These settings allow to enable/disable [[pollution]] and further adjust it when keeping it enabled.
 
{| class="wikitable"
|-
! Setting !! Description
|-
| Diffusion ratio || The amount of pollution diffused into neighboring chunks per second.
|-
| Dissipation rate || Controls how fast pollution dissipates naturally.
|-
| Minimum to damage trees || Any pollution above this amount starts to damage trees.
|-
| Absorbed per damaged tree || The amount of pollution absorbed by a tree when it is damaged by pollution.
|}


From the [http://www.factorioforums.com/forum/viewtopic.php?f=18&t=8016&p=63691#p63561 article which describes the generation]:
==== Evolution ====
: [[File:Factorio-Perlin-Noise.png]]
These settings allow to enable/disable [[evolution]] and further adjust it when keeping it enabled.
Top: Normal settings, Middle: The same, but with higher '''frequency''' (note the same curve, but more condensed shape), Down: Same as top, but higher level = increased '''size'''.


The blue wavy line is an internal noise function, black line is a "level" that is used to determine resource placement, red lines are actual placed resources.
{| class="wikitable"
The high frequency refers mainly to the noise function. Increasing the frequency increases count of resource fields and decreases their size and distance between them.
|-
! Setting !! Description
|-
| Time factor || Controls how fast evolution increases over time.
|-
| Destroy factor || Controls how fast evolution increases due to destroying enemy spawners.
|-
| Pollution factor  || Controls how fast evolution increases due to producing pollution.
|}


This mechanism is used all through the map generation in factorio, with some adjustments. The map generator works tile by tile, so the resources are placed on a tile x if f(x) > 0. The amount of resources on the tile is given by f(x) * richness.
==== Enemy expansion ====
These settings allow to enable/disable [[Enemies#Expansions|enemy expansion]] and further adjust it when keeping it enabled.


==Generating new Chunks==
{| class="wikitable"
A map is endless by default, though its size can be limited by height and width - see above.
|-
! Setting !! Description
|-
| Maximum expansion distance || The maximum distance enemies will look to expand from other enemy bases.
|-
| Minimum group size || The minimum size of an enemy expansion party modified by the current evolution level.
|-
| Maximum group size || The maximum size of an enemy expansion party modified by the current evolution level.
|-
| Minimum cooldown || The minimum time between enemy expansions being sent out.
|-
| Maximum cooldown || The maximum time between enemy expansions being sent out.
|}


Because it is technically endless, the whole map isn't generated from the start. A new [[Chunk]] of map is generated only when needed.
==== Recipes/Technology ====
This setting allows to change the [[Crafting#Recipe difficulties|recipe]]/technology difficulty and multiply the technology cost.


===Generating Invisible Chunks (Fog of War)===
Currently, setting the technology difficulty does not have an effect in vanilla.


Around the visible chunks a perimeter of three chunks wide range of invisible chunks are generated (not for the limited parts).
== Mechanics ==
=== Resource and terrain generation ===
The map generator (world generator) is based on a modified [http://en.wikipedia.org/wiki/Perlin_noise Perlin noise algorithm].
A [http://lua-api.factorio.com/latest/Concepts.html#AutoplaceSpecification more detailed description] can be found in the API documentation.
 
From the [https://forums.factorio.com/viewtopic.php?f=18&t=8016&p=63691#p63561 article which describes the generation]:
: [[File:Factorio-Perlin-Noise.png]]
Top: Normal settings, Middle: The same, but with higher '''frequency''' (note the same curve, but more condensed shape), Down: Same as top, but higher level = increased '''size'''.


Invisible chunks are also generated if you produce very much pollution; the games generates so much (invisible) chunks as it needs to spread the pollution into the area.
The blue wavy line is an internal noise function, black line is a "level" that is used to determine resource placement, red lines are actual placed resources. The high frequency refers mainly to the noise function. Increasing the frequency increases count of resource fields and decreases their size and distance between them. This mechanism is used all through the map generation in factorio, with some adjustments. The map generator works tile by tile, so the resources are placed on a tile x if f(x) > 0. The amount of resources on the tile is given by f(x) * richness.


Reason: This is for the natives, so that they can attack you from places, that you cannot see yet. This is also know as "fog of war".
=== Chunks ===


===Charting (Make Invisible Chunks Visible on Map)===
A map is endless by default, though its size can be limited by height and width — see above. Because it is technically endless, the whole map is not generated from the start. Instead, a new [[chunk]] of the map is generated only when needed, similar to other procedurally generated world games.


As long as a chunk is invisible the part of the players map keeps black. This changes, when a chunk is '''[[Radar#Charting|charted]]''', which means when it is "touched" by radar. Either the players internal radar, which is always available, or the '''[[Radar]]''' entity. When a visible chunk is generated there might be also invisible generated.
==== Invisible chunks (fog of war) ====


An invisible chunk is eventually not made visible, even if you are so close, that you are able to see it in the character view (a black fog of war). This is, because of the above rule: a chunk is made visible, if it is touched by radar. Not character visibility. The players radar (or any radar) needs to be in range of that chunk to make it visible.
Outside of the visible chunk area, an invisible area of about 3 chunks wide is generated as a preloading mechanism. Enemies may be located inside these invisible chunks and can attack the player from there, while [[artillery turret]]s and [[artillery wagon|wagon]]s may automatically shoot enemy bases in these chunks if they are within their automatic range. Invisible chunks are also generated if pollution is generated heavily; the game generates (invisible) chunks as it needs to spread the pollution into the area.


===Limited Maps===
==== Charting (removing fog of war) ====


The player can limit the map size ('''limited width and height'''). Note that the player can also limit only the width or only the height, so they may generate "stripes" of land. For example, one could generate a map only 20 tiles high, but endless long!
As long as a chunk is invisible, the part of the players map stays black. This changes when a chunk is [[Radar#Charting|charted]], which means when it is "touched" by a radar. This can be either the player's internal radar, which is always available and continually charts chunks around the player, or the [[radar]] entity. If a far-away and thus ungenerated chunk is charted, it will be generated, together with the above-mentioned invisible 3 chunk radius of map around it.


A map is not bigger than this, there are also no invisible chunks generated beyond that limits.
==== Maximum map size and used memory ====


Everything around the map-limits '''is considered water'''. The player can place a [[Pump]] at the edge of such a map and it will suck water out of nothing.
The map size is limited to 2,000 x 2,000 kilometers; internally, this is a square 2,000,000 tiles on a side, with an area of 4,000,000,000,000 (4 trillion) square tiles (assuming 1 tile = 1 meter on a side yields 2,000 x 2,000 km = 4 million square km). In real-world terms, this is between the sizes of India and Australia (or about 40% the area of the United States, or over 10 times the area of Germany). It would take around 200 [[game-second|game-minutes]] (ca 3.3 hours real time) to reach that border from the center when riding a [[locomotive|train]] fueled with [[rocket fuel|rocket]] or [[nuclear fuel]]. This makes the world essentially endless for practical purposes.


===For Explorers===
Because chunks are only generated in and close around the area revealed by radar, it is possible to reach that border without overloading your computer, as the size of the map in computer memory is dependent only on chunks actually generated. If only a narrow stripe of land is explored to far away, this remains manageable.


If the player arrives at the current visible borders the needed chunks are generated. It generally makes no difference '''when''' these chunks are generated. Note, that if you go for example east, that for every generated chunk a perimeter of 3 more chunks are generated. That means a lot of work for the CPU. The map generation runs in "background" so it is possible, that the player "overruns" the map generator, if he drives very, very fast.
The generated chunks are fully mapped and stored in the player's RAM, which is the practical limiting factor of exploration.
<!-- COMMENT (invisible): This last paragraph could have an example. I'm sure it's not cut-and-dried, but some ballpark figure for basic orientation like "if you have less than X GB of memory, you will have problems running maps where more than Y tiles on a side is explored". I never ran into the problem so I don't know the numbers. - Misacek01 -->


=== Maximum Map Size and used Memory===
== History ==


The map size is limited to 2000 x 2000 kilometers (a quadrat with 2,000,000 tiles side-length, an area of 4,000,000,000,000 quadrat-tiles). This is between the size of India and Australia. It would take around 240 [[game-second|game-minutes]] (=4 hours) by train to reach that border from the center. So we can speak here from "endless".
{{History|0.16.0|
* Added cliffs.
* New terrains and new terrain generation.
* Trees can now be configured in the generate-map GUI.
* Terrain can be configured in the generate map GUI.
* Biters scale less with distance and there are generally less biters.
* No uranium as a starting resource also no uranium is ever generated near the starting area, you need to go look for it.
}}


Because only chunks are generated around the area, that is revealed by radar, it is with current computers possible to reach that border. This is, because the needed memory size of the map is limited only by the generated number of chunks in the game. Which is not so much, if you allocate just a small stripe of land.
{{History|0.15.0|
* Extended map generator settings to include an advanced section.
* Added map generator presets.
* The map seed is used to generate unique maps instead of just shifting the starting position.
}}


The generated chunks are mapped and stored in the player's RAM, that is the limiting factor.
{{History|0.13.7|
* Map size is now limited to 2000 km by 2000 km with a black bar rather than crashing when reaching this distance.
}}


==== Maps bigger than the active available RAM?====
{{History|0.13.0|
* Map generator algorithm changed, further resource field now have greater richness.
}}


Maps don't need to be stored completely in active RAM. Because in case of very large maps it is quite uncertain, that a chunk changes over time, there is currently not the need to keep all chunks in RAM; for example players reported games, which need 12 GB of RAM, but they had only 8, the remaining 4 GB had been swapped out to disk. It takes then of course long to load or save such a game, but it is possible to play those games without performance issue. ([https://forums.factorio.com/viewtopic.php?f=5&t=29566 How to store 4 trillion square tiles of map in just 8 GB RAM])
== See also ==


==See also==
* [https://forums.factorio.com/viewtopic.php?f=6&t=7924&p=63517#p63517 Some technical info]
* [http://www.factorioforums.com/forum/viewtopic.php?f=5&t=7331 The Map Generator hates your guts, or dude where is my coal?]
* [https://forums.factorio.com/viewtopic.php?f=6&t=8624&p=69156#p69156 Temperature based biome-model] (how trees are placed)
* [http://www.factorioforums.com/forum/viewtopic.php?f=6&t=7924&p=63517#p63517 Some technical info]
* [http://www.factorioforums.com/forum/viewtopic.php?f=6&t=8624&p=69156#p69156 Temperature based biome-model] (how trees are placed)
* [http://www.factorioforums.com/forum/viewtopic.php?f=6&t=1593 Thread about definition of map map exchange string/seed]
* [http://www.factorioforums.com/forum/viewtopic.php?f=5&t=6447&p=50336#p50318 Definition of string and seed]

Revision as of 16:56, 9 March 2019

An example how the world generator might create a new map: Default settings with map seed 123456789

World generation is the procedure by which the in game landscape is generated. In short: a number of settings, editable at the start of a new world, define what that world will look like. This can dramatically alter gameplay — a new player is advised to start with the default settings before deciding to change their world.

Map generation presets

Overview of the map generation screen

A preset may be chosen instead of manually configuring the generation.

Default

Normal settings.

All terrain and resource settings set to regular/normal/medium.

Advanced settings

All settings are set to their defaults:

Pollution Default Evolution Default
Absorbed per damaged tree 500 Enabled Yes
Diffusion ratio 2% Time factor 0.00000400
Dissipation rate 1 Destroy factor 0.00200000
Enabled Yes Pollution factor 0.00001500
Minimum damage to trees 3500
Enemy expansion Default Recipes/Technology Default
Enabled Yes Recipe difficulty Normal
Maximum expansion distance 7 Technology difficulty Normal
Minimum group size 5 Technology price multiplier 1
Maximum group size 20
Minimum cooldown (Minutes) 4
Maximum cooldown (Minutes) 60

Rich resources

Resources patches have a larger richness, so you don't have to expand far.

Difference from default: Resources have very good richness instead of regular.

Marathon

Recipes and technologies are more expensive.

Difference from default: Expensive recipes and technology, technology price multiplier 4.

Death world

Biters are more dangerous and evolve faster.

Difference from default: Very high frequency and size enemy bases, small starting area, enemy evolution time factor and pollution factor are both set to 0.00002.

Death world marathon

Recipes and technologies are expensive and biters are dangerous and plentiful. Only select this if you are a Factorio veteran.

Combines "Marathon" and "Death world".

Rail world

Resource patches are large and spread far apart, to encourage train systems. Biters won't create any new bases or re-expand into cleared territory.

Difference from default: Coal, copper ore, iron ore, and stone are set to very low frequency and big size instead of normal/medium. Uranium ore and crude oil are set to low frequency and high size. Water has a very low frequency and a big size. The evolution time factor is set to 0.000002 and enemy expansion is disabled.

Manual configuration

Basic settings

Peaceful mode

The enemies don't begin fights, only responding if the player hits them. Additionally, when a map is in peaceful mode, the enemies will not expand.

Enable replay

Main article: Replay system

Record all the actions that the player(s) perform during the game, so that they can later be played back as essentially a timelapse of the save file.

Map-width and -height

If the player limits the width and/or height they may generate maps with finite resources and area. Another option is to make the world infinite in only one axis, this is commonly referred to as a ribbon world.

Map seed

This is the starting value for the random number generator that Factorio uses for generating the world based on the generation settings. Know that 'random number' is really a misnomer in Factorio and on computers in general, as they aren't really random, instead being calculated with complicated algorithms that require a seed as starting value (For more detail, see http://en.wikipedia.org/wiki/Random_seed).

So even with the same map-exchange string but a different seed maps can change dramatically, or appear very similar. It's up to chance. In order to get a true copy of a world, giving the map exchange string and allowing the string to fill out the seed is important.

Map exchange string

A map exchange string generally looks like this:

  >>>eNpjYBBg0GdgYGBm5mFJzk/MYWZm4UrOLyhILdLNL0plZmTmTC4q
  TUnVzc/MYWFmZktJLU4tKmEGqkrJBNNcqXmpuZW6SYnFqUAea3pRYnE
  xkMGRWZSfBzKBEai0ODEvBSRZXJKfB1TFyFpSlJoKUsVdWpSYl1maC7
  aKhZmBMcvcibmhRY4BhP/XMxj8/w/CQNYFoBNBGORSBkagAAywJudkp
  qUxMCg4gjAjI2O1yDr3h1VT7Bkh8noOUMYHqEjEbqjIg1YoI2I1lNFx
  GMpwmA9j1MMY/Q6MxmDw2R7BgNhVAjQZagmHA4IBkWwBSTIy9r7duuD
  7sQt2jH9Wfrzkm5Rgz5gpG+orUPreDijJDtTAyAQnZs0EgZ0wHzDAzH
  xgD5W6ac949gwIvLFnZAXpEAERDhZA4oA3MHgE+ICsBT1AQkGGAeY0O
  5gxIg6MaWDwDeaTxzDGZXt0f6g4MNqADJcDESdABNhCuMsYocxIB4iE
  JEIWqNWIAdn6FITnTsJsPIxkNZobVGBuMHHA4gU0ERWkgOcC2ZMCJ14
  wwx0BDMEL7DAeMG6ZGRDgg/3WD0/SAKZ2kr0=<<<

The map exchange string can be used to share all map generation settings between different players. The player can paste the string (using CTRL + V) into the map exchange string field and the game will set the generation settings to the settings saved in the string, resulting in a complete copy of the map when generated.

The map exchange string can be retrieved from save files by going into the load game screen, selecting the desired map, clicking the Map Exchange String button in the lower left corner and copying the string from the window that pops up.

For a technical description of the map exchange string, see map exchange string format.

Resource and terrain settings

Frequency

For resources, frequency determines the frequency of ore/oil patches. The higher the frequency, the more patches can be found in a given area. Although the ore patches are of a smaller size, a higher frequency still results in more ore tiles being generated.

Frequency modifies the area of each deposit and the number of deposits. If resource frequency is increased, each of the deposits is smaller and has less resources in total (because it covers less area) and deposits are very common. If resource frequency is decreased, the deposits are larger but more rare.

Terrain, including enemy bases and trees, is affected in the same way: The higher the frequency, the more terrain "blobs"/nest clusters/forests can be found in a given area, while their sizes decrease with higher frequency.

Cliffs are affected in a similar way: The higher the frequency, the more cliffs can be found. However, the overall cliff area size increases with higher frequency, while the cliff "lines" are broken up more often, meaning that higher frequencies result in many big cliff blobs composed of short cliff "lines".

Size

For resources, the size setting adjusts the size of generated ore/oil patches.

It's as simple as it seems — Small size would means small ore/oil patches, large means large ore/oil patches, thus increasing the resource count in a given area. Note that ore/oil patch size is also affected by frequency.

Due to a bug, enemy bases are currently not affected by the size setting. Their size can only be changed by changing their frequency.

The other terrain types, including water and trees, are affected the same way as resources.

Due to a bug, the effect of the size setting on cliffs cannot be reliably predicted. Any size setting above small may lead to cliffs spawning in the starting area. Big and very big size seem to always spawn cliffs everywhere, while medium size and below may not spawn any cliffs.

The following table shows how the frequency and size settings affects the generation of ore patches. For more detail, open the images in a new tab.

Generation of iron patches on different frequency and size settings
Frequency \ Size Very small Small Medium Big Very big
Very low Iron freq very low size very small.png Iron freq very low size small.png Iron freq very low size medium.png Iron freq very low size big.png Iron freq very low size very big.png
Low Iron freq low size very small.png Iron freq low size small.png Iron freq low size medium.png Iron freq low size big.png Iron freq low size very big.png
Normal Iron freq normal size very small.png Iron freq normal size small.png Iron freq normal size medium.png Iron freq normal size big.png Iron freq normal size very big.png
High Iron freq high size very small.png Iron freq high size small.png Iron freq high size medium.png Iron freq high size big.png Iron freq high size very big.png
Very high Iron freq very high size very small.png Iron freq very high size small.png Iron freq very high size medium.png Iron freq very high size big.png Iron freq very high size very big.png
Starting area

The starting area is a special area around the central coordinates of the map which has different ore, water and enemy generation, from the rest of the map. Generally, this results in at least one confirmed ore source each of coal, iron ore, copper ore, and stone, always results in a water source, and always removes biter nests from spawning for an area around spawn. Uranium ore and crude oil should not spawn in the starting area. Cliffs should not spawn in the starting area[1], but due to a bug they may spawn there. The size of the starting area is adjusted by changing the size setting.

World generations on different starting area settings
Very small Small Medium Big Very big
Starting area very small.png Starting area small.png Starting area medium.png Starting area big.png Starting area very big.png

Richness

This defines the actual content of every ore patch and oil field. The higher the richness, the more ore or oil each resource tile contains. Resource field richness increases by distance.

For trees, the richness setting changes the density of their leaves. The higher the richness, the higher their leaf density, the more pollution they absorb.[2]

For enemy bases, the richness setting does not have an effect.[3]

Resources in ore patches on different richness settings
Very poor Poor Regular Rich Very rich
Iron richness very poor.png Iron richness poor.png Iron richness regular.png Iron richness good.png Iron richness very good.png

Advanced settings

These settings do not affect world generation, instead they allow to change some constants related to the map in general.

Pollution

These settings allow to enable/disable pollution and further adjust it when keeping it enabled.

Setting Description
Diffusion ratio The amount of pollution diffused into neighboring chunks per second.
Dissipation rate Controls how fast pollution dissipates naturally.
Minimum to damage trees Any pollution above this amount starts to damage trees.
Absorbed per damaged tree The amount of pollution absorbed by a tree when it is damaged by pollution.

Evolution

These settings allow to enable/disable evolution and further adjust it when keeping it enabled.

Setting Description
Time factor Controls how fast evolution increases over time.
Destroy factor Controls how fast evolution increases due to destroying enemy spawners.
Pollution factor Controls how fast evolution increases due to producing pollution.

Enemy expansion

These settings allow to enable/disable enemy expansion and further adjust it when keeping it enabled.

Setting Description
Maximum expansion distance The maximum distance enemies will look to expand from other enemy bases.
Minimum group size The minimum size of an enemy expansion party modified by the current evolution level.
Maximum group size The maximum size of an enemy expansion party modified by the current evolution level.
Minimum cooldown The minimum time between enemy expansions being sent out.
Maximum cooldown The maximum time between enemy expansions being sent out.

Recipes/Technology

This setting allows to change the recipe/technology difficulty and multiply the technology cost.

Currently, setting the technology difficulty does not have an effect in vanilla.

Mechanics

Resource and terrain generation

The map generator (world generator) is based on a modified Perlin noise algorithm. A more detailed description can be found in the API documentation.

From the article which describes the generation:

Factorio-Perlin-Noise.png

Top: Normal settings, Middle: The same, but with higher frequency (note the same curve, but more condensed shape), Down: Same as top, but higher level = increased size.

The blue wavy line is an internal noise function, black line is a "level" that is used to determine resource placement, red lines are actual placed resources. The high frequency refers mainly to the noise function. Increasing the frequency increases count of resource fields and decreases their size and distance between them. This mechanism is used all through the map generation in factorio, with some adjustments. The map generator works tile by tile, so the resources are placed on a tile x if f(x) > 0. The amount of resources on the tile is given by f(x) * richness.

Chunks

A map is endless by default, though its size can be limited by height and width — see above. Because it is technically endless, the whole map is not generated from the start. Instead, a new chunk of the map is generated only when needed, similar to other procedurally generated world games.

Invisible chunks (fog of war)

Outside of the visible chunk area, an invisible area of about 3 chunks wide is generated as a preloading mechanism. Enemies may be located inside these invisible chunks and can attack the player from there, while artillery turrets and wagons may automatically shoot enemy bases in these chunks if they are within their automatic range. Invisible chunks are also generated if pollution is generated heavily; the game generates (invisible) chunks as it needs to spread the pollution into the area.

Charting (removing fog of war)

As long as a chunk is invisible, the part of the players map stays black. This changes when a chunk is charted, which means when it is "touched" by a radar. This can be either the player's internal radar, which is always available and continually charts chunks around the player, or the radar entity. If a far-away and thus ungenerated chunk is charted, it will be generated, together with the above-mentioned invisible 3 chunk radius of map around it.

Maximum map size and used memory

The map size is limited to 2,000 x 2,000 kilometers; internally, this is a square 2,000,000 tiles on a side, with an area of 4,000,000,000,000 (4 trillion) square tiles (assuming 1 tile = 1 meter on a side yields 2,000 x 2,000 km = 4 million square km). In real-world terms, this is between the sizes of India and Australia (or about 40% the area of the United States, or over 10 times the area of Germany). It would take around 200 game-minutes (ca 3.3 hours real time) to reach that border from the center when riding a train fueled with rocket or nuclear fuel. This makes the world essentially endless for practical purposes.

Because chunks are only generated in and close around the area revealed by radar, it is possible to reach that border without overloading your computer, as the size of the map in computer memory is dependent only on chunks actually generated. If only a narrow stripe of land is explored to far away, this remains manageable.

The generated chunks are fully mapped and stored in the player's RAM, which is the practical limiting factor of exploration.

History

  • 0.16.0:
    • Added cliffs.
    • New terrains and new terrain generation.
    • Trees can now be configured in the generate-map GUI.
    • Terrain can be configured in the generate map GUI.
    • Biters scale less with distance and there are generally less biters.
    • No uranium as a starting resource also no uranium is ever generated near the starting area, you need to go look for it.
  • 0.15.0:
    • Extended map generator settings to include an advanced section.
    • Added map generator presets.
    • The map seed is used to generate unique maps instead of just shifting the starting position.
  • 0.13.7:
    • Map size is now limited to 2000 km by 2000 km with a black bar rather than crashing when reaching this distance.
  • 0.13.0:
    • Map generator algorithm changed, further resource field now have greater richness.

See also