I get the gist of how Minecraft is constructed: just a bunch of blocks with algorithms which hide certain blocks when they aren't in the player's view.
Are there any articles about how an engine like this is built? It is an extreme level of procedural generation (apparently), but the graphics aren't blocky and as abstract, but rather pretty impressive.
In a similar vein is Eskil Steenberg's Love [1], but this is on another level entirely.
I am working on a full procedural generation engine (not like minecraft, but it does use voxels at a much higher resolution). Wrote up an overview of how it works, if you are interested:
http://www.voxelquest.com/news/how-does-it-work
As someone who's tried to make a simple version of minecraft as a hobby project I think I can shed some light.
At its core, procedural engines are built on generating different kinds of noise and then filtering and combining them to produce the types of values that you want.
The values you are looking for depend on how you model the different elements of your world.
As an example, in my game I wanted to generate regions consisting of different types of terrain. I ended up using voronoi noise (http://en.wikipedia.org/wiki/Voronoi_diagram) to split the terrain into regions and then used the cell value as a multiplier for how bumpy the terrain was. The bumpy terrain was generated from smoothing regular white noise. The amount of smoothing was random too so you could have smooth hills or jagged mountains.
Remember that Minecraft is a very different sort of game than No Man's Sky. Minecraft is a completely destructable/constructable world. You can demolish the entire world down to the bedrock and build whatever you want in addition to or in replacement of what existed previously. That's why some sort of segmentation system is necessary, there needs to be some sort of unit of interactability/construction/destruction, and for Minecraft that unit is a 1m block. No Man's Sky isn't like that, it's not filled with world's you change, just world's you visit and explore. Because you don't need that fundamental unit of interactability you can use more traditional world modeling that looks more like what we've come to expect 3D worlds to look like.
You may want to check out Everquest Next. I think it would be fair to say that EQN is very close to a completely voxelized environment and at least mostly procedural. There is a great deal of curated content as well, but it seems like they are working on sourcing lots of that from players. The voxelized environment in EQN is based on Miguel Cepero's work. I believe they in fact hired him. I have been reading his blog for a long time and you can get a pretty good idea of the techniques that are being used.
A couple of quick hints to get you going in the right direction is that there are ( I believe ) a couple of generalized tricks involved to pull this off well. The first is using the 'correct' method to tesselate your voxel geometry. Minecraft literally uses cubes and you are familiar with the result. Another 'classic' method is the application of marching cubes/tetrahedra. This gives you fairly good organic-ish shapes but suffers from the inability to render sharp edges. Everything looks blobby. I believe the method used by EQN makes use dual-contouring, or a variant, which allows you to create organic shapes and also preserve sharp edges. A second factor is the ability to use different levels of resolution or scale for your voxels situationally. This allows you to craft human-scale things like cups and swords and whatnot, with human-scale details, and still craft houses and mountains and trees, without the need for storing extreme resolution in those items as well. It can be very tricky to patch together various bits of geometry tessellated from different voxel resolutions like this, and not end up with ugly visual artifacts. There is also the thorny issue of applying textures or materials to everything I have mentioned previously, which I have never investigated :)
> Are there any articles about how an engine like this is built?
It isn't that different, the only real change is how you handle edge conditions, as you can have finer detail so need to filter less.
Minecraft doesn't use blocks to simplify world generation, it uses blocks to simplify world modification by the user. The blocks restrict you making it easier (oddly enough) to create things.
I disagree, I think that it's the procedural generation that needs to be done artfully! Unfortunately the tools and experience to be creative in this medium are a few years out :)
Are there any articles about how an engine like this is built? It is an extreme level of procedural generation (apparently), but the graphics aren't blocky and as abstract, but rather pretty impressive.
In a similar vein is Eskil Steenberg's Love [1], but this is on another level entirely.
[1] http://www.quelsolaar.com/love/index.html