Page 1 of 1

[0.17.31] map-gen-settings non-zero 'width' creates water worlds

Posted: Sun Apr 14, 2019 2:09 am
by MC_Weezel
While attempting to automate the creation of a series of ribbon worlds, I discovered that any non-zero value for width or height causes the mapgen to place everything under water. A ribbon world is created, but it's not particularly usable! Was definitely worth a laugh though when I loaded into the save for the first time.

I do have clusterio mods installed, but I am using the factorio binary (within an alpine linux container) to generate these maps without starting up the factorio server.

I attempted to reproduce this on my local steam/windows system, but ran into parsing bugs (unexpected unicode characters) after saving the map-gen-settings using notepad.

Re: [0.17.31] map-gen-settings non-zero 'width' creates water worlds

Posted: Sun Apr 14, 2019 10:26 am
by Klonan
Do you a map exchange string or the specific map gen settings you are using?

Using the base game ribbon world preset works absolutely fine, can you reproduce the issue without any mods enabled?

Re: [0.17.31] map-gen-settings non-zero 'width' creates water worlds

Posted: Sun Apr 14, 2019 7:42 pm
by MC_Weezel
Here is the terminal output that I saw yesterday during map creation. I'll try to reproduce with no mods later today.

/factorio/factorioClusterio # ./factorio/bin/x64/factorio --create instances/instance/saves/ --map-ge
n-settings instances/instance/map-gen-settings.json
0.000 2019-04-14 01:34:20; Factorio 0.17.31 (build 44471, linux64, headless)
0.000 Operating system: Linux
0.000 Program arguments: "./factorio/bin/x64/factorio" "--create" "instances/instance/saves/" "--map-gen-settings" "instances/instance/map-gen-settings.json"
0.000 Read data path: /opt/factorio/data
0.000 Write data path: /opt/factorio [77184/90585MB]
0.000 Binaries path: /opt/factorio/bin
0.021 System info: [CPU: Intel(R) Xeon(R) CPU X7560 @ 2.27GHz, 8 cores, RAM: 7820 MB]
0.021 Running in headless mode
0.029 Loading mod core 0.0.0 (data.lua)
0.160 Loading mod base 0.17.31 (data.lua)
0.754 Loading mod base 0.17.31 (data-updates.lua)
0.996 Checksum for core: 161597740
0.996 Checksum of base: 1852277422
2.195 Info PlayerData.cpp:67: Local player-data.json available, timestamp 1555205280
2.195 Info PlayerData.cpp:74: Cloud player-data.json unavailable
2.198 Custom inputs active: 0
2.203 Factorio initialised
2.203 Info Main.cpp:927: Creating new map /factorio/factorioClusterio/instances/instance/saves/
3.862 Loading level.dat: 605699 bytes.
3.863 Info Scenario.cpp:161: Map version 0.17.31-0
3.898 Checksum for script /opt/factorio/temp/currently-playing/control.lua: 1848333929
4.019 Info GlobalContext.cpp:684: Waiting for child processes to exit:
4.073 Goodbye

Here is the map-gen-settings.json file:

/factorio/factorioClusterio # cat instances/instance/map-gen-settings.json
"_terrain_segmentation_comment": "Inverse of map scale",
"terrain_segmentation": 1,

"Multiplier for water 'coverage' - higher increases the water level.",
"Water level = 10 * log2(this value)"
"water": 1,

"_comment_width+height": "Width and height of map, in tiles; 0 means infinite",
"width": 128,
"height": 128,

"_starting_area_comment": "Multiplier for 'biter free zone radius'",
"starting_area": 1,

"peaceful_mode": false,

"coal": {"frequency": 1, "size": 1, "richness": 1},
"stone": {"frequency": 1, "size": 1, "richness": 1},
"copper-ore": {"frequency": 1, "size": 1,"richness": 1},
"iron-ore": {"frequency": 1, "size": 1, "richness": 1},
"uranium-ore": {"frequency": 1, "size": 1, "richness": 1},
"crude-oil": {"frequency": 1, "size": 1, "richness": 1},
"trees": {"frequency": 1, "size": 1, "richness": 1},
"enemy-base": {"frequency": 1, "size": 1, "richness": 1}

"_name_comment": "Name of the cliff prototype",
"name": "cliff",

"_cliff_elevation_0_comment": "Elevation of first row of cliffs",
"cliff_elevation_0": 10,

"_cliff_elevation_interval_comment": "Elevation difference between successive rows of cliffs",
"cliff_elevation_interval": 10,

"_richness_comment": "Multiplier for cliff continuity; 0 will result in no cliffs, 10 will make all cliff rows completely solid",
"richness": 1

"Overrides for property value generators",
"Elevation influences water and cliff placement.",
"Leave it blank to get 'normal' terrain.",
"Use '0_16-elevation' to reproduce terrain from 0.16.",
"Use '0_17-island' to get an island."
"elevation": "0_17-island",

"control-setting:aux:bias": "0.300000",
"control-setting:aux:frequency:multiplier": "1.333333",
"control-setting:moisture:bias": "0.100000",
"control-setting:moisture:frequency:multiplier": "0.500000"

{"x": 1000, "y": 2000}

"_seed_comment": "Use null for a random seed, number for a specific seed.",
"seed": null

Re: [0.17.31] map-gen-settings non-zero 'width' creates water worlds

Posted: Sun Apr 14, 2019 7:49 pm
by MC_Weezel
Here's my map exchange string:


Re: [0.17.31] map-gen-settings non-zero 'width' creates water worlds

Posted: Sun Apr 14, 2019 8:56 pm
by MC_Weezel
I disabled the clusterio mod, and saw the same behavior.

Re: [0.17.31] map-gen-settings non-zero 'width' creates water worlds

Posted: Mon Apr 15, 2019 12:20 am
by TruePikachu
Unable to reproduce using the provided exchange string.

Re: [0.17.31] map-gen-settings non-zero 'width' creates water worlds

Posted: Mon Apr 15, 2019 12:52 am
by MC_Weezel
Weird. When I load up the map exchange string as a new game, then I do see a normal map, ... what I suspect is the non-bugged behavior. I got that map exchange string that I posted earlier by saving a copy of my server's water world locally, and loading it up to pretend to play it.

Are sharing zipped save files around here frowned upon? I could post the bugged save that I used to extract that map exchange string if it helps.

Has anyone else tried to reproduce this problem by creating a ribbon-world map out of the headless linux factorio binary? That seems to be where the problem is.

Re: [0.17.31] map-gen-settings non-zero 'width' creates water worlds

Posted: Mon Apr 15, 2019 2:56 am
by MC_Weezel
Okay, I think I can reproduce this problem on Windows as well.

1) Copy the default map-gen-settings.example.json file to map-gen-settings.ribbon.json
2) Edit map-gen-settings.ribbon.json and change "height": 0, to "height": 32,
3) Create the map using the factorio binary --create flag: (Full output shown below)

PS F:\Steam\steamapps\common\Factorio\bin\x64> .\factorio.exe --create C:\Users\Ryan\AppData\Roaming\Factorio\saves\ --map-gen-settings F:\Steam\steamapps\common\Factorio\data\map-gen-settings.ribbon.json
PS F:\Steam\steamapps\common\Factorio\bin\x64> 0.001 2019-04-14 22:52:29; Factorio 0.17.31 (build 44471, win64, steam)
0.001 Operating system: Windows 10 (version 1803)
0.001 Program arguments: "F:\Steam\steamapps\common\Factorio\bin\x64\factorio.exe" "--create" "C:\Users\Ryan\AppData\Roaming\Factorio\saves\" "--map-gen-settings" "F:\Steam\steamapps\common\Factorio\data\map-gen-settings.ribbon.json"
0.002 Read data path: F:/Steam/steamapps/common/Factorio/data
0.002 Write data path: C:/Users/Ryan/AppData/Roaming/Factorio [11358/74433MB]
0.002 Binaries path: F:/Steam/steamapps/common/Factorio/bin
0.008 System info: [CPU: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz, 8 cores, RAM: 4204/32717 MB, page: 6132/37581 MB, virtual: 4251/134217727 MB, extended virtual: 0 MB]
0.008 Running in headless mode
0.012 Loading mod core 0.0.0 (data.lua)
0.046 Loading mod base 0.17.31 (data.lua)
0.201 Loading mod clusterio 1.15.1 (data.lua)
0.278 Loading mod base 0.17.31 (data-updates.lua)
0.354 Loading mod clusterio 1.15.1 (data-final-fixes.lua)
0.428 Checksum for core: 161597740
0.428 Checksum of base: 1852277422
0.428 Checksum of clusterio: 3352322275
0.814 Info PlayerData.cpp:69: Local player-data.json unavailable
0.814 Info PlayerData.cpp:74: Cloud player-data.json unavailable
0.816 Custom inputs active: 0
0.817 Factorio initialised
0.818 Info Main.cpp:927: Creating new map C:\Users\Ryan\AppData\Roaming\Factorio\saves\
1.356 Loading level.dat: 647096 bytes.
1.356 Info Scenario.cpp:161: Map version 0.17.31-0
1.380 Checksum for script C:/Users/Ryan/AppData/Roaming/Factorio/temp/currently-playing/control.lua: 1848333929
1.383 Checksum for script __clusterio__/control.lua: 3263127325
1.555 Goodbye

4) Load the map in factorio single player and get this error message:
Couldn't find suitable position to put the player in the perimeter of 200 tiles from the point {1000.0000000000, 2000.0000000000}

If I move this save to a headless factorio server and connect to it, I see that it's just water.

Re: [0.17.31] map-gen-settings non-zero 'width' creates water worlds

Posted: Mon Apr 15, 2019 8:14 am
by Klonan
Yea, you're setting a height and width, but your starting point is somewhere in the 1000s

Set your Starting point to {0,0} if you expect to have land within the ribbon