A 3D voxel-based game inspired by Minecraft, rendered with Vulkan on top of SDL2. This project aims to recreate the core features of Minecraft, including terrain generation, block placement, and more, while allowing for experimentation with custom mechanics and optimizations.
- Voxel Terrain: Infinite terrain generation using procedural algorithms.
- Block Placement & Destruction: Players can interact with the environment by placing and removing blocks.
- 25 Biomes: oceans, rivers, beaches, plains, forests, taiga, snowy biomes, desert, savanna, badlands, swamp, jungle and mountain peaks, on continuous terrain with no cliffs at biome borders.
- Vulkan Renderer: dynamic shadows, water reflections, 4x MSAA with FXAA, and a day/night cycle.
- Distant Terrain: the world is visible out to ~16 km (Minecraft render distance 1028). Blocky low-detail terrain fills in beyond the real chunks and fades into the sky.
The tools bellow were used to create my game:
- [C++] - Visual Studio Tools? 🤔
- [Math] - Read a book or something? 🤔
- [Tears] 😭
- CMake 3.20+ and a MinGW-w64 GCC toolchain (CLion's bundled MinGW works). MSVC is not supported.
- The Vulkan SDK with
VULKAN_SDKset (the installer does this). It provides the headers, the loader library andglslc. - A GPU with Vulkan 1.3.
cmake -S . -B cmake-build-release-mingw -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build cmake-build-release-mingwThe game lands in build/game/CPP_GAME.exe (run it from that folder). A Debug build enables the Vulkan validation layer; in Release set FAKEMC_VALIDATION=1 to turn it on.
Dunno i just use CLion and you should too. Fuck Visual Studio...
- Block textures: Faithful 64x, fetched by
tools/fetch_faithful_textures.py. - Vulkan Memory Allocator (MIT), stb_image / stb_truetype (public domain), OpenSimplexNoise, SDL2, glm.
MIT Free Software, Hell Yeah!