NanoVoxel is a C++ procedural game engine project that I had in 2012. As its name says, it’s based on the voxel technology. The main “feature” of this engine is that it is capable of going “infinitely” in all 3 directions. Meaning that you could dig a hole that would literally be endless. Or encounter a mountain that would be thousands of blocks high. A thing that I thought would be an amazing feature for Minecraft and that I thought was doable.

Back in 2012, I was amazed by this relatively new thing that was the voxel. So I decided to create my own engine to see how it worked and to learn how to use OpenGL in C++. As I was completely new to those things the multi-threading is improvable. After 3 months of development that was the result:



The water reflection and the shaders in general were made by XT95, a friend of mine who was in the same class as I was. He also helped me understand the Perlin noise formulas and how to do ambient occlusion in real time.

main 2012-03-26 20-15-14-23_2NanoVoxel final lightning



So, the engine was made in C++ using SFML as an OpenGL context. GLSL was used to code the shaders. And the engine is multi-platform (Windows, Linux, Mac OS).
Instead of learning old OpenGL with glVertex, I decided to use modern OpenGL programming with VBOs and vertex shaders.

main 2012-03-26 19-16-52-36


The engine runs extremely smoothly (as there is nothing more than blocks..).

More Pictures


Original Development Blog

You can find more images of the project on the project’s blog right here.

[2015 Update]

In 2015 the procedural game engine got a little update to add the ability to remove and place blocks anywhere in the world. This was made possible by doing a raycast from the camera position using its forward vector.

Why such a late update? In 2015 I had to do a little physics exercice for my master’s degree. So I thought that I’d use what I learned to improve NanoVoxel. You can see the result in the last images of the image slideshow (I made a little house).

Pierre Planeau

My name is Pierre and I run this website. You can learn more about me over here and some of my personal projects over there. 🙂