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
Line 5: Line 5:
: [[File:MapGeneratorOverview.png]]
: [[File:MapGeneratorOverview.png]]
Basically you need to know, that the map generator generates most parts of the world with an algorithm, called "Perlin Noise". See below for details. You just need to know, that it works a bit like the waves in the sea.
Basically you need to know, that the map generator generates most parts of the world with an algorithm, called "Perlin Noise". See below for details. You just need to know, that it works a bit like the waves in the sea.
[[File:Water-ocean-waves-sea-high-resolution-pictures.jpg|thumb|300px]]
 
[[File:Water-ocean-waves-sea-high-resolution-pictures.jpg|thumb|left|300px]]
 
 


Everything above a defined level, defines the existing (or non-existing) of some type of terrain.
Everything above a defined level, defines the existing (or non-existing) of some type of terrain.


You also need to know, that the map is not generated at game start. Only the parts you see are generated, everything else is not. The map will be generated, when you explore more terrain. See below for more technical details.
You also need to know, that the map is not generated at game start. Only the parts you see are generated, everything else is not. The map will be generated, when you explore more terrain. See below for more technical details.
<br clear=all>


===The top row===
===The top row===
Line 16: Line 22:


This defines - to keep in this picture - the wavelength of the wave-generators.
This defines - to keep in this picture - the wavelength of the wave-generators.
Frequency doesn't modify the amount of resources on a tile. If you increase frequency then each of the deposists has less resources in total (because it covers less area), but per tile of a deposit there will be the same number of resources.
Also changing frequency doesn't affect the average ammount of resources in a (large) map, only their distribution.


''High frequency'': For Terrain segmentation it means: Many different types of terrain, forest, dessert and swamp could be within 10 tiles or less. For resources: Many, but very small patches of resources.
''High frequency'': For Terrain segmentation it means: Many different types of terrain, forest, dessert and swamp could be within 10 tiles or less. For resources: Many, but very small patches of resources.
Line 24: Line 33:


====Size====
====Size====
This defines the "level": Everything above that defined level, defines the existing (or non-existing) of some type of terrain.
This defines the "level" (see below!): Everything above that defined level, defines the existing (or non-existing) of some type of terrain.


That means, that the same shaped wave, could look completely different, if you shift this level up and down, but in the end you increase or decrease the average diameter of an ore-patch, of lakes.
That means, that the same shaped wave, could look completely different, if you shift this level up and down, but in the end you increase or decrease the average diameter of an ore-patch, of lakes.
Line 36: Line 45:


===The left column===
===The left column===
* Terrain segmentation: How often the terrain changes. There are some different types of terrain.
* Terrain segmentation: How often the terrain changes. There are some different types of terrain. This depends also the water.
* Water: How big the lakes get. They can be really big, can take you an hour or more to surround by car. This influences also the chance, to be fully surrounded by water.
* Water: How big the lakes get. They can be really big, can take you an hour or more to surround by car. This influences also the chance, to be fully surrounded by water!
* Copper, Stone, Coal, Crude oil: Needed resources.
* Copper, Stone, Coal, Crude oil: Needed resources. See above about Frequency, size and richness.
* Enemy bases: How many and how big could the starting enemy bases. Note, that the enemies develop and build new villages during the game.
* Enemy bases: How many and how big could the starting enemy bases. Note, that the enemies develop and build new villages during the game.


===Starting area===
===Starting area===
This is special, cause it defines a special area around the central coordinates, which is also generated by the map-generator, but with a bit different settings, that might guarantee better starting-conditions.  
This is special, cause it defines a special area around the central coordinates, which is also generated by the map-generator, but with a bit different settings, that might (!) guarantee better starting-conditions.  


Note, that if you set "size" here very low or none, the map generator can generate maps, that are impossible to survive, or land on a small island, or on a big island, and many more issues.
Note, that if you set "size" here very low or none, the map generator can generate maps, that are impossible to survive. You might start on a very small island, or on a big island without resources, or in the middle of a biter nest and many more issues.


It is generally a good idea, that you discover a bit around your starting position, before you begin to use a map.
It is generally a good idea, that you discover a bit around your starting position, before you begin to use a map. It is not a bug, that the map generator can generate maps, that are useless.


===Peaceful mode===
===Peaceful mode===
Line 52: Line 61:


===Map-width and -height===
===Map-width and -height===
Normally the maps in Factorio have no limits. They are only limited by the size of your computers memory. Which is quite big. If a tile is one square meter, and you have 8 GiB free memory you can discover an area about the size of the state of Lichtenstein. :) (quite raw estimation!)
If you limit the width and/or height you can generate maps with limited width and height. See below "Generating when exploring".


But you can also generate maps with limited width and height.
===Map seed / Map Exchange String===


Note, that you can also limit only the width or only the height, so you can generate "stripes" of land. There are players, that love to play maps with a height of only 20 tiles or less.
Seed and exchange string work hand in hand: Both together enables to give away a good map without the need to save/load a complete map.


Note also, that everything around the map-limits is just water. You can place a [[Pump]] at the edge of a map and it will suck water out of nothing.
; Map Seed
 
: Random number generator seed
===Map seed / Map Exchange String===
; Map Exchange String
Map Seed: random number generator seed
: All settings for the map creation (Map Seed, settings for resources, settings for size, etc.)
 
Map Exchange String: All settings for the map creation (Map Seed, settings for resources, settings for size, etc.)


====Map Seed====
====Map Seed====
This is the starting value for the random number generator, that Factorio uses for anything in the game (Random number in Factorio and on computers in generally aren't really random, they are calculated with complicated algorithmns
This is the starting value for the random number generator, that Factorio uses for anything in the game. (Random number in Factorio and on computers in generally aren't really random, they are calculated with complicated algorithmns, that need a seed as startng value, see http://en.wikipedia.org/wiki/Random_seed).


So even with the same map-exchange string, but different map seed the map could look quite differently.
So even with the same map-exchange string, but different map seed the map could look quite differently.
Line 89: Line 96:
From the [http://www.factorioforums.com/forum/viewtopic.php?f=18&t=8016&p=63691#p63561 article, which describes the generation]:
From the [http://www.factorioforums.com/forum/viewtopic.php?f=18&t=8016&p=63691#p63561 article, which describes the generation]:
: [[File:Factorio-Perlin-Noise.png]]
: [[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'''.
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 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.
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.


Line 96: Line 104:


==Generating when exploring==
==Generating when exploring==
The map is normally endless (if not defined with limits). However the whole map isn't generated from start. A new [[Chunk]] of map is generated, when explored. This means you come to the current visible borders and then the needed chunks are generated. Or you placed some [[Radar]].
A map is normally endless (if not other defined with limits, see above!).
 
Because of that, the whole map isn't generated from start. A new [[Chunk]] of map is generated only, when explored. This means you come to the current visible borders and then the needed chunks are generated. It makes no difference, if you discover that, or if it is discovered by [[Radar]] or the game (silently) discovers some (hidden) chunks for some biter village.
 
Normally the maps in Factorio have no limits. They are only limited by the size of your computers memory. Which is quite big. If a tile is one square meter, and you have 8 GiB free memory you can discover an area about the size of the state of Lichtenstein. :) (quite raw estimation!)
 
But you can also generate maps with limited width and height. Note, that you can also limit only the width or only the height, so you can generate "stripes" of land. There are players, that love to play maps with a height of only 20 tiles or less.
 
Note also, that everything around the map-limits (end of world) is just water. You can place a [[Pump]] at the edge of a map and it will suck water out of nothing.
 


==See also==
==See also==

Revision as of 18:35, 12 April 2015

Many players have problems to understand the Map Generator. This is a try to explain the basic function. But it must be also said, that a complete rework/rewrite or whatever is on the devs todo-list, but will take some more time. So the players must live with that, how it works, and if you understand the principle it is really not that bad.

How it works

MapGeneratorOverview.png

Basically you need to know, that the map generator generates most parts of the world with an algorithm, called "Perlin Noise". See below for details. You just need to know, that it works a bit like the waves in the sea.


Everything above a defined level, defines the existing (or non-existing) of some type of terrain.


You also need to know, that the map is not generated at game start. Only the parts you see are generated, everything else is not. The map will be generated, when you explore more terrain. See below for more technical details.


The top row

Frequency

This is not, how frequent ore, coal, oil etc. is.

This defines - to keep in this picture - the wavelength of the wave-generators.

Frequency doesn't modify the amount of resources on a tile. If you increase frequency then each of the deposists has less resources in total (because it covers less area), but per tile of a deposit there will be the same number of resources. Also changing frequency doesn't affect the average ammount of resources in a (large) map, only their distribution.

High frequency: For Terrain segmentation it means: Many different types of terrain, forest, dessert and swamp could be within 10 tiles or less. For resources: Many, but very small patches of resources.

Low frequency: For Terrain segmentation it means: Big landscapes, vast areas only with forests. For resources: Not many, but if you found one very big patches of resources.

In short: Low terrain segmentation means large areas with same terrain. High segmentation is the contrary, the terrain changes nature often. Typically huge forests vs. lots of small woods.

Size

This defines the "level" (see below!): Everything above that defined level, defines the existing (or non-existing) of some type of terrain.

That means, that the same shaped wave, could look completely different, if you shift this level up and down, but in the end you increase or decrease the average diameter of an ore-patch, of lakes.

With small size you get small ore-patches, with big size you get big ore patches. It is a bit dependent on the frequency, of course.

Richness

This defines the average wave-height. A high wave means: Much resources per Tile.

If you put this to high for Enemy bases, you get as result for killing a "rich" Enemies#Spawners much more Alien artifacts.

The left column

  • Terrain segmentation: How often the terrain changes. There are some different types of terrain. This depends also the water.
  • Water: How big the lakes get. They can be really big, can take you an hour or more to surround by car. This influences also the chance, to be fully surrounded by water!
  • Copper, Stone, Coal, Crude oil: Needed resources. See above about Frequency, size and richness.
  • Enemy bases: How many and how big could the starting enemy bases. Note, that the enemies develop and build new villages during the game.

Starting area

This is special, cause it defines a special area around the central coordinates, which is also generated by the map-generator, but with a bit different settings, that might (!) guarantee better starting-conditions.

Note, that if you set "size" here very low or none, the map generator can generate maps, that are impossible to survive. You might start on a very small island, or on a big island without resources, or in the middle of a biter nest and many more issues.

It is generally a good idea, that you discover a bit around your starting position, before you begin to use a map. It is not a bug, that the map generator can generate maps, that are useless.

Peaceful mode

The Enemies don't begin to fight, only if you hit them. This can be also switched on during the game, look into Console commands.

Map-width and -height

If you limit the width and/or height you can generate maps with limited width and height. See below "Generating when exploring".

Map seed / Map Exchange String

Seed and exchange string work hand in hand: Both together enables to give away a good map without the need to save/load a complete map.

Map Seed
Random number generator seed
Map Exchange String
All settings for the map creation (Map Seed, settings for resources, settings for size, etc.)

Map Seed

This is the starting value for the random number generator, that Factorio uses for anything in the game. (Random number in Factorio and on computers in generally aren't really random, they are calculated with complicated algorithmns, that need a seed as startng value, see http://en.wikipedia.org/wiki/Random_seed).

So even with the same map-exchange string, but different map seed the map could look quite differently.

Map Exchange String

A string, that looks for example like so:

>>>AAALABAABgADAwYAAAAEAAAAY29hbAMDAgoAAABjb3BwZXItb3Jl
AwMCCQAAAGNydWRlLW9pbAMDAgoAAABlbmVteS1iYXNlAwMCCAAAAGl
yb24tb3JlAwMCBQAAAHN0b25lAwMCORcrDUQ7AACMCwAAAAAAAAAAAA
ADAFR8w0Q=<<<
Where can I use this string?

It can be used in the map-generator: there is an extra field where you can paste this string into. (Control-V under windows)

Where can I get this string from?

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

The map generator (world generator) is based on modificated Perlin noise algorithm. A more detailed description is in the API docu.

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.

Generating when exploring

A map is normally endless (if not other defined with limits, see above!).

Because of that, the whole map isn't generated from start. A new Chunk of map is generated only, when explored. This means you come to the current visible borders and then the needed chunks are generated. It makes no difference, if you discover that, or if it is discovered by Radar or the game (silently) discovers some (hidden) chunks for some biter village.

Normally the maps in Factorio have no limits. They are only limited by the size of your computers memory. Which is quite big. If a tile is one square meter, and you have 8 GiB free memory you can discover an area about the size of the state of Lichtenstein. :) (quite raw estimation!)

But you can also generate maps with limited width and height. Note, that you can also limit only the width or only the height, so you can generate "stripes" of land. There are players, that love to play maps with a height of only 20 tiles or less.

Note also, that everything around the map-limits (end of world) is just water. You can place a Pump at the edge of a map and it will suck water out of nothing.


See also