Default ore generation balance issues
DisasterMoo opened this issue ยท 4 comments
Probably an overlook:
- Kaolinite is rarer because it can only generates at top layer(y = 110+) while it's default config is set from y 5 - 128.
- Graphite has the same issue, although less rare because it can generates at the second layer.
If someone is up to do some proper analysis (read: generate a huge bunch of chunks and report some results) of ore generation, and/or get some better proposals for vein Y limits (as those were all improvised by me a long ass time ago), we could make an effort to balance ore spawns around an actual target. Ideally before doing this remove all dependency on rock layers, then test with rock layer dependency, then compare with each rock's density in the sample area.
Gonna drop here a few samples so it won't get forgotten in discord.
First sample: 200x200 generated chunks, current config and seed = -1355476836237840985:
VeinType: saltpeter count: 30
VeinType: surface_native_copper count: 24
VeinType: kimberlite count: 8
VeinType: surface_bismuthinite count: 173
VeinType: kaolinite count: 57
VeinType: cryolite count: 1
VeinType: graphite count: 157
VeinType: native_platinum count: 17
VeinType: tetrahedrite count: 238
VeinType: malachite count: 153
VeinType: lignite count: 56
VeinType: native_copper count: 182
VeinType: cinnabar count: 113
VeinType: bithminous_coal count: 56
VeinType: native_gold count: 221
VeinType: sphalerite count: 251
VeinType: lapis_lazuli count: 111
VeinType: garnierite count: 11
VeinType: limonite count: 26
VeinType: magnetite count: 35
VeinType: sylvite count: 9
VeinType: native_silver count: 8
VeinType: surface_tetrahedrite count: 87
VeinType: borax count: 9
VeinType: bismuthinite count: 253
VeinType: hematite count: 160
VeinType: surface_sphalerite count: 81
VeinType: cassiterite count: 28
Found Rock Layers:
Rock: tfc:claystone chunks: 20214
Rock: tfc:basalt chunks: 12543
Rock: tfc:gneiss chunks: 10224
Rock: tfc:slate chunks: 17838
Rock: tfc:gabbro chunks: 5985
Rock: tfc:granite chunks: 318
Rock: tfc:dolomite chunks: 16917
Rock: tfc:rocksalt chunks: 18636
Second one, 200x200 chunks default ore config, seed = 8910488085281454024
VeinType: limonite count: 17
VeinType: kaolinite count: 24
VeinType: sylvite count: 4
VeinType: cassiterite count: 52
VeinType: surface_sphalerite count: 152
VeinType: malachite count: 7
VeinType: borax count: 5
VeinType: cinnabar count: 208
VeinType: native_copper count: 269
VeinType: graphite count: 50
VeinType: hematite count: 230
VeinType: bismuthinite count: 362
VeinType: lignite count: 16
VeinType: magnetite count: 19
VeinType: native_platinum count: 7
VeinType: sphalerite count: 111
VeinType: surface_native_copper count: 23
VeinType: surface_bismuthinite count: 62
VeinType: saltpeter count: 14
VeinType: native_gold count: 290
VeinType: surface_tetrahedrite count: 167
VeinType: native_silver count: 42
VeinType: garnierite count: 14
VeinType: tetrahedrite count: 93
VeinType: bithminous_coal count: 19
VeinType: kimberlite count: 12
Found Rock Layers:
Rock: tfc:limestone chunks: 8649
Rock: tfc:slate chunks: 33441
Rock: tfc:gneiss chunks: 45948
Rock: tfc:chalk chunks: 5049
Rock: tfc:chert chunks: 2031
Rock: tfc:rocksalt chunks: 6972
Rock: tfc:dacite chunks: 2256
After tweaking values (mostly making min and max height generation matches rock layer) i got these results:
Seed = 3661825897445710946
400x400 chunks
VeinType: cassiterite count: 768
VeinType: native_gold count: 1130
VeinType: kaolinite count: 649
VeinType: cryolite count: 147
VeinType: graphite count: 1179
VeinType: garnierite count: 298
VeinType: sylvite count: 248
VeinType: saltpeter count: 455
VeinType: native_copper count: 596
VeinType: malachite count: 385
VeinType: surface_bismuthinite count: 641
VeinType: surface_tetrahedrite count: 264
VeinType: hematite count: 561
VeinType: native_platinum count: 362
VeinType: lapis_lazuli count: 264
VeinType: lignite count: 574
VeinType: borax count: 199
VeinType: bithminous_coal count: 569
VeinType: kimberlite count: 216
VeinType: limonite count: 359
VeinType: magnetite count: 407
VeinType: cinnabar count: 560
VeinType: surface_cassiterite count: 34
VeinType: surface_native_copper count: 289
VeinType: sphalerite count: 1041
VeinType: native_silver count: 236
VeinType: surface_sphalerite count: 282
VeinType: bismuthinite count: 837
VeinType: tetrahedrite count: 1031
Found Rocks
Rock: andesite chunks: 55438
Rock: gneiss chunks: 13641
Rock: basalt chunks: 18922
Rock: gabbro chunks: 67918
Rock: granite chunks: 27508
Rock: phyllite chunks: 5349
Rock: quartzite chunks: 26725
Rock: marble chunks: 59376
Rock: diorite chunks: 54682
Rock: limestone chunks: 4014
Rock: shale chunks: 24198
Rock: rocksalt chunks: 25260
Rock: rhyolite chunks: 45485
Rock: dacite chunks: 26325
Rock: schist chunks: 22472
Rock: chalk chunks: 3404
My conclusion:
Making these changes, the rarity property is more accurate. The number of vein types matters, but not as much as failing generation because Y was outside the rock layer. It's now possible to roughly estimate how much chunks is gonna take to generate one vein, if these chunks all have the correct rock layer, ie: if there's only one rock layer where it's possible to generate a vein, said vein will take about the same amount of chunks as it's rarity (sylvite has rarity 100, dividing the number of rocksalt chunks by the number of sylvite veins, we get about 100). Comparing to kimberlite, which will only generate in gabbro, but gabbro can be found in all 3 layers, the number of chunks doubles form rarity (kimberlite in my config there has 160 rarity, took ~314 chunks to generate one vein).
Finally:
I think my config is fine for most players. As soon as you find gabbro, you're gonna take 300 chunks to reach kimberlite (not counting prospecting of course).
Needed more improvements to the dump code, but i was able to get a large one:
600x600 chunks, default config, seed = -9171563879558487887
VeinType: surface_native_copper count: 395
VeinType: native_gold count: 2241
VeinType: sylvite count: 34
VeinType: sphalerite count: 1277
VeinType: surface_tetrahedrite count: 505
VeinType: lapis_lazuli count: 189
VeinType: tetrahedrite count: 1209
VeinType: magnetite count: 230
VeinType: cinnabar count: 1072
VeinType: cassiterite count: 1425
VeinType: bismuthinite count: 1871
VeinType: surface_cassiterite count: 4
VeinType: limonite count: 217
VeinType: graphite count: 496
VeinType: bithminous_coal count: 425
VeinType: saltpeter count: 198
VeinType: native_copper count: 1369
VeinType: kaolinite count: 342
VeinType: surface_bismuthinite count: 1056
VeinType: surface_sphalerite count: 528
VeinType: borax count: 20
VeinType: cryolite count: 504
VeinType: hematite count: 1291
VeinType: native_silver count: 681
VeinType: kimberlite count: 280
VeinType: garnierite count: 464
VeinType: native_platinum count: 131
VeinType: malachite count: 303
Found Rock Layers:
Rock: tfc:slate chunks: 141390
Rock: tfc:claystone chunks: 2424
Rock: tfc:phyllite chunks: 30885
Rock: tfc:diorite chunks: 80418
Rock: tfc:gneiss chunks: 46404
Rock: tfc:dolomite chunks: 105930
Rock: tfc:rhyolite chunks: 128211
Rock: tfc:basalt chunks: 12168
Rock: tfc:limestone chunks: 60192
Rock: tfc:shale chunks: 75738
Rock: tfc:chert chunks: 77700
Rock: tfc:chalk chunks: 12417
Rock: tfc:andesite chunks: 25569
Rock: tfc:schist chunks: 25371
Rock: tfc:dacite chunks: 43650
Rock: tfc:marble chunks: 39708
Rock: tfc:rocksalt chunks: 55716