Having experimented with multiple octaves of 3D perlin noise to generate terrain in WebGL, I thought it would be fun to port it to Unity, extend it to multiple chunks and add some MineCraft style create and destroy functionality.
As this is an on-going and unfinished experiment, rather than a real game, this entry is going to read more like a blog post on what was done and why, as opposed to a summary of the game. If I get a chance I'll write up a proper tutorial entry of the techiques and resources I used.
Download Vorld Archipelago Experiment (v0.2) for Windows.
As archipelagos are as awesome as the word is, I started by generating one (although the water is not yet voxel based) by using the same method of mutliple octaves of perlin noise as used in the WebGL experiment but using a 3D guassian shaping function to generate the 'top level' shape of the terrain.
The second image uses sprites from KenneyNL's Creative Commons lisenced game assets, which if you've not heard of him is referred to as "asset jesus" on reddit and is definitely worth checking out if you need some placeholder, or otherwise, assets.
Next up was creation / destruction of voxels in the world, which thankfully was much more straightforward once using Unity, when compared with rolling your own JS based engine! I also added the ability to give Voxels an orientation at the same time.
Once voxels which were transluent or that had cutout textures were added (e.g. water and trees), it became obvious you need to query across chunks to generate the right number of planes for anything you can see through. Having added this functionality it gave me the opportunity to stop the chunks generating quads on the line between chunks that were unnecessary.
Finally something very dear to my heart was that there shouldn't be quite the same arbitary limit of height as you find in MineCraft. My first experence in MineCraft being trying to make an insanely tall tower and then hitting an invisible ceiling when the tower was merely "impressively" tall. So Vorld keeps creating new chunks as you get higher and higher...
Until I get around to writing it up properly, you can look at the code on bitbucket, if that's your thing!