Cuberite Forum
Some semi-random thoughts on terrain generation - Printable Version

+- Cuberite Forum (https://forum.cuberite.org)
+-- Forum: Cuberite (https://forum.cuberite.org/forum-4.html)
+--- Forum: Development (https://forum.cuberite.org/forum-13.html)
+--- Thread: Some semi-random thoughts on terrain generation (/thread-409.html)



RE: Some semi-random thoughts on terrain generation - NiLSPACE - 05-23-2014

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


RE: Some semi-random thoughts on terrain generation - LO1ZB - 05-23-2014

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!G9XfQ8Fn5ibIENVJXlRojb4nWgGXMJZBbmRP_lnORis
I made it, because MCServer isnĀ“t even using one cpu core fully.


RE: Some semi-random thoughts on terrain generation - xoft - 05-23-2014

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.


RE: Some semi-random thoughts on terrain generation - Howaner - 05-23-2014

(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.


RE: Some semi-random thoughts on terrain generation - xoft - 05-23-2014

I've found out why the profiling output is useless, CMake was munching our switches. I'll commit a fix soon(ish).


RE: Some semi-random thoughts on terrain generation - xoft - 05-23-2014

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?


RE: Some semi-random thoughts on terrain generation - NiLSPACE - 05-23-2014

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.


RE: Some semi-random thoughts on terrain generation - LO1ZB - 05-23-2014

I get 1.32 ch/s with Village and MineShafts at running cpu profiling.
https://mega.co.nz/#!JNAVlIAD!T1v6YOv9yf1zjQTeMRKp2cTsVyWY3OFs3sPdiJ4rW08


RE: Some semi-random thoughts on terrain generation - xoft - 05-23-2014

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.


RE: Some semi-random thoughts on terrain generation - xoft - 05-23-2014

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.