I built VoxelWorld. A minecraft like game but with a twist:
The world is not infinite but feels like a sphere, actually is a 4D torus.
So walking in one direction eventually brings you back to where you started.
Select a small planet size so you can get around in a reasonable time.
You can build and explore the procedurally generated terrain.
Getting this to work at the frame rates you get was extremly hard, especially as this is my first opengl project. Starting I wanted to use QRhi a 3D abstraction layer but there simply were not enough possibilities for me to customize and optimize so that I switched to OpenGL with GLFW eventually and basically started from scratch.
Starting I knew that multithreading was the only way to give the player consistent frame rates while doing heavy computation for chunk generation and meshing. Actually doing multithreading was hard. You need to protect all your variable with a mutex or make them atomic if they are used by multiple threads. You need to decide what does each thread do and how do they communicate. But in the end I am quite proud with the current solution. It runs quite good and always stays responsive even on old hardware (the chunks just take quite a while to generate xD).
If you want to know more details please feel free to comment on the devlogs and I am happy to explain how the systems work or look around in the source code (I would recommend to start at main.cpp, get an idea how the threads are started and then look into what they do in their loops)