Custom Voxel Engine in C++ with Vulkan
Note
Craft is still under heavy development. Do not expect a functional product in its current state.
Feature | Implemented? |
---|---|
Implement Vulkan abstractions for most things | DONE |
Implement voxel generation and meshing | DONE |
Implement world editing (building and breaking) | DONE |
Play as blocks that shoot each other | NO |
More features will come, as they will be implemented. I'll try my best listing them all here.
- WASD for moving
- Tab for toggling mouse access
- ...
All compilers should be supported. A GLSL shader compiler glslc
is required, and the easiest way to install it is via the Vulkan SDK.
All libraries are included within the repository. Clone with:
git clone --recursive https://github.com/qaxl/craft
Building with CMake (platform-agnostic):
# Create build directory, you can call this whatever.
mkdir build && cd build
# Generate project files and build the program.
cmake .. && cmake --build .
Currently supported platforms are the following:
Platform | Support |
---|---|
Android | Planned |
Linux | Planned |
Windows | Supported |
- Vulkan for rendering graphics
- Volk for loading the Vulkan library
- VulkanMemoryAllocator for allocating memory in Vulkan
- ImGui for intermediate GUI
- GLM for mathematics (will be replaced soon:tm:)
- SDL for windowing and platform-specific APIs
- stb_image for image loading
- Steamworks for Steam integration (TODO!)
- vulkan-tutorial.com for teaching the basics
- vulkan.org/learn for diving deeper; I recommend this tutorial, if you want to get started!
- vkguide.dev for dynamic rendering implementation
- ...