Cuberite Forum

Full Version: Some semi-random thoughts on terrain generation
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I think either my computer is really slow or I have something not configurated properly. When the server is generating in extreme hills biomes I only get ~3 ch/s
World.ini:
Code:
[Storage]
Schema=Default
CompressionFactor=6

[Plants]
IsSugarcaneBonemealable=0
MaxSugarcaneHeight=3
MaxCactusHeight=3
IsCarrotsBonemealable=1
IsCropsBonemealable=1
IsGrassBonemealable=1
IsSaplingBonemealable=1
IsMelonStemBonemealable=1
IsMelonBonemealable=0
IsPotatoesBonemealable=1
IsPumpkinStemBonemealable=1
IsPumpkinBonemealable=0
IsCactusBonemealable=0

[PVP]
Enabled=1

[Physics]
WaterSimulator=Vanilla
LavaSimulator=Vanilla
DeepSnow=1
SandInstantFall=0
ShouldLavaSpawnFire=1
RedstoneSimulator=incremental
TNTShrapnelLevel=2

[GameMode]
GameMode=1

[Generator]
Generator=Composable
BiomeGenCacheSize=64
HeightGenCacheSize=64
CompositionGenCacheSize=64
BiomeGen=TwoLevel
CompositionGen=DistortedHeightmap
HeightGen=DistortedHeightmap
DistortedHeightmapSeaLevel=62
DistortedHeightmapFrequencyX=10.000000
DistortedHeightmapFrequencyY=10.000000
DistortedHeightmapFrequencyZ=10.000000
Finishers=Ravines,WormNestCaves,Villages,OreNests,WaterLakes,LavaLakes, SprinkleFoliage,Trees,Ice,Snow,Lilypads,DeadBushes,WaterSprings,LavaSprings,BottomLava,PreSimulator
MineShaftsGridSize=960
MineShaftsMaxSystemSize=1280
MineShaftsChanceCorridor=6000
MineShaftsChanceCrossing=2000
MineShaftsChanceStaircase=2000
LavaLakesProbability=10
WaterLakesProbability=25
BottomLavaLevel=10
VillageGridSize=384
VillageMaxDepth=1.5
VillageMaxSize=128

[WaterSimulator]
Falloff=1
MaxHeight=7
TickDelay=5
NumNeighborsForSource=2

[LavaSimulator]
Falloff=2
MaxHeight=6
TickDelay=30
NumNeighborsForSource=-1

[General]
Dimension=0
Gamemode=1

[FireSimulator]
BurnStepTimeFuel=500
BurnStepTimeNonfuel=100
Flammability=50
ReplaceFuelChance=50000

[WaterSprings]
HeightDistribution=0, 0; 10, 10; 11, 75; 16, 83; 20, 83; 24, 78; 32, 62; 40, 40; 44, 15; 48, 7; 56, 2; 64, 1; 255, 0
Chance=24

[LavaSprings]
HeightDistribution=0, 0; 10, 5; 11, 45; 48, 2; 64, 1; 255, 0
Chance=9

[SpawnProtect]
ProtectRadius=10
Enable=0

[WorldLimit]
LimitRadius=0

[Difficulty]
WorldDifficulty=2

[Monsters]
Types=bat, cavespider, chicken, cow, creeper, enderman, horse, mooshroom, ocelot, pig, sheep, silverfish, skeleton, slime, spider, squid, wolf, zombie
AnimalsOn=0
VillagersShouldHarvestCrops=1

[Mechanics]
CommandBlocksEnabled=1
PVPEnabled=1
UseChatPrefixes=0

CPU-Z Info: http://puu.sh/8WCih.png
I tryed the "Resource contention data (concurreny)" performance test from MSVS.
It says, the test is for "Detecting threads waiting for threads".
https://mega.co.nz/#!0Ugz1Spa!G9XfQ8Fn5i...mRP_lnORis
I made it, because MCServer isn“t even using one cpu core fully.
STR: I get between 4 and 20 chunks / sec, with the speed oscillating quite randomly, when I use your ini file. My CPU is a Core2Quad, too, although a bit newer than yours. I'll investigate tomorrow, it's too late today.

L01ZB: Those files can only be opened by the MSVC Ultimate edition, I have that at work so I'll look there, if I have time.
(05-23-2014, 01:47 AM)STR_Warrior Wrote: [ -> ]I think either my computer is really slow or I have something not configurated properly. When the server is generating in extreme hills biomes I only get ~3 ch/s
World.ini:
Code:
[Storage]
Schema=Default
CompressionFactor=6

[Plants]
IsSugarcaneBonemealable=0
MaxSugarcaneHeight=3
MaxCactusHeight=3
IsCarrotsBonemealable=1
IsCropsBonemealable=1
IsGrassBonemealable=1
IsSaplingBonemealable=1
IsMelonStemBonemealable=1
IsMelonBonemealable=0
IsPotatoesBonemealable=1
IsPumpkinStemBonemealable=1
IsPumpkinBonemealable=0
IsCactusBonemealable=0

[PVP]
Enabled=1

[Physics]
WaterSimulator=Vanilla
LavaSimulator=Vanilla
DeepSnow=1
SandInstantFall=0
ShouldLavaSpawnFire=1
RedstoneSimulator=incremental
TNTShrapnelLevel=2

[GameMode]
GameMode=1

[Generator]
Generator=Composable
BiomeGenCacheSize=64
HeightGenCacheSize=64
CompositionGenCacheSize=64
BiomeGen=TwoLevel
CompositionGen=DistortedHeightmap
HeightGen=DistortedHeightmap
DistortedHeightmapSeaLevel=62
DistortedHeightmapFrequencyX=10.000000
DistortedHeightmapFrequencyY=10.000000
DistortedHeightmapFrequencyZ=10.000000
Finishers=Ravines,WormNestCaves,Villages,OreNests,WaterLakes,LavaLakes, SprinkleFoliage,Trees,Ice,Snow,Lilypads,DeadBushes,WaterSprings,LavaSprings,BottomLava,PreSimulator
MineShaftsGridSize=960
MineShaftsMaxSystemSize=1280
MineShaftsChanceCorridor=6000
MineShaftsChanceCrossing=2000
MineShaftsChanceStaircase=2000
LavaLakesProbability=10
WaterLakesProbability=25
BottomLavaLevel=10
VillageGridSize=384
VillageMaxDepth=1.5
VillageMaxSize=128

[WaterSimulator]
Falloff=1
MaxHeight=7
TickDelay=5
NumNeighborsForSource=2

[LavaSimulator]
Falloff=2
MaxHeight=6
TickDelay=30
NumNeighborsForSource=-1

[General]
Dimension=0
Gamemode=1

[FireSimulator]
BurnStepTimeFuel=500
BurnStepTimeNonfuel=100
Flammability=50
ReplaceFuelChance=50000

[WaterSprings]
HeightDistribution=0, 0; 10, 10; 11, 75; 16, 83; 20, 83; 24, 78; 32, 62; 40, 40; 44, 15; 48, 7; 56, 2; 64, 1; 255, 0
Chance=24

[LavaSprings]
HeightDistribution=0, 0; 10, 5; 11, 45; 48, 2; 64, 1; 255, 0
Chance=9

[SpawnProtect]
ProtectRadius=10
Enable=0

[WorldLimit]
LimitRadius=0

[Difficulty]
WorldDifficulty=2

[Monsters]
Types=bat, cavespider, chicken, cow, creeper, enderman, horse, mooshroom, ocelot, pig, sheep, silverfish, skeleton, slime, spider, squid, wolf, zombie
AnimalsOn=0
VillagersShouldHarvestCrops=1

[Mechanics]
CommandBlocksEnabled=1
PVPEnabled=1
UseChatPrefixes=0

CPU-Z Info: http://puu.sh/8WCih.png

I get between 18 and 31 chunks / sec.
I've found out why the profiling output is useless, CMake was munching our switches. I'll commit a fix soon(ish).
STR, I've tried your world.ini at work in a profiled release executable, I get over 150 chunks / sec. The current breakdown for the generator is:
Trees: 33 %
Lakes: 12 %
PreSimulator: 3 %
Villages: 2 %
The rest is under 1 % of the run time. Note that the high percentage for Trees is caused mainly by the Trees generator querying terrain composition of its neighbors, which is then stored in the cache and thus all the other generators that query those will get them cheap.

I've added the profiler fix to both master and VillageGen branches. Can you do the profiling for me once more, please?
Did you also try MineShafts? Because I only got 0.23 ch/s when its enabled. Anyway I'm really curious if it's just my computer being slow or if something isn't configured properly. On normal biomes I get around 30 ch/s but in extreme hills it goes down to 3 ch/s.

I tried profiling again, but for some reason MCServer can't open any files. Because of that it can't open the world.ini and thus is not generating MineShafts. I'm now editing MCServer so it generates MineShafts by default.

Weird. It looks like it isn't generating anything at all.
I get 1.32 ch/s with Village and MineShafts at running cpu profiling.
https://mega.co.nz/#!JNAVlIAD!T1v6YOv9yf...sPdiJ4rW08
L01ZB the VSP files are useless to me when I don't have your PDBs. I need the CallerCalleeSummary.csv file produced by our profiling script.

STR, yes, adding mineshafts seems to have slowed down the generator significantly. Investigating now.
Found it. You're asking for too large mineshafts (MineShaftsMaxSystemSize=1280), and they are overflowing the internal cGridStructGen cache size. Currently the cache is set to 100 items, but each chunk query is asking for 196 mineshaft systems, so each chunk effectively clears the cache, and the next chunk must generate all those 196 mineshaft systems anew.

There may be additional problems with the size calculations, I'm checking those, too.

As a hotfix, try smaller system size, 128 is the default value.