I’ve been experimenting with a new project to find out what exactly goes into creating a voxel-based procedurally generated world, such as Dwarf Fortress or Minecraft. I figured that even if I don’t really turn it into much, creating a game completely from scratch would help me learn generic skills that could be easily applied to other games or applications. A procedural sandbox world would alleviate me of the need for plot or characters, allowing me to focus on basics.
Using some Perlin Noise to generate a heightmap, the results have been fairly pleasant, mixed with the occasional failure.
A basic perlin noise function with a low frequency generates some unnaturally smooth hills, though by decreasing their size significantly (to half at the very tallest), they can serve as rolling hills for grassland.
Increasing the octave to make it more detailed (and adjusting the fog and grass block material)…
Gives us fairly realistically shaped mountains!
However, while restructuring the code I accidentally removed the call to generateLight and wondered why my terrain had suddenly turned black and ominous. It took me an hour to fix. Small victories.