Click the image to watch the video demo.
- W / A / S / D – Move the player (forward, left, backward, right)
- Spacebar – Jump
- Left Click – Break (destroy) the targeted block
- Right Click – Place a block at the targeted location
- Control - Toggle speed up on/off
- [1] – Toggle wireframe mode (visualize mesh edges)
- [2] – Toggle physics simulation on/off
- [3] – Toggle block highlight for hovered block
- [4] – Toggle background music
- texture atlansing
- face culling
- spawning non-block geometries, such as grass
- procedural terrain generation with simple noise
- basic physics: falling and accelerating
- AABB collision check
- DDA raycasting
- block placing and breaking
- Implemetation of OpenAL for Sound Effects and Musics
Note
Requirement:
vcpkg, CMake, Git There are two options to use vcpkg:
- If you have Visual Studio installed, most likely the VCPKG_ROOT environment variable will already exist in Developer Command Prompt for VS
- If you want use vcpkg, install vcpkg from git to you system:
cd C:/{your path to install vcpkg}
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.batAfter installing vcpkg, setup env variable VCPKG_ROOT and add it to PATH:
$env:VCPKG_ROOT = "C:\{your path to}\vcpkg"
$env:PATH = "$env:VCPKG_ROOT;$env:PATH"Tip
For troubleshooting you can read full documentation for vcpkg
After installing vcpkg you can build project:
git clone --recursive https://github.com/sarahyoo011725/VoxelWorld.git
cd VoxelWorld
cmake --preset default-vs-msvc-windows
cmake --build --preset default-vs-msvc-windows- custom perlin noise
- optimize storing block data: instead of storing all block types in an array, store them in a range. ex) a block in [1 ~ n] range is grass.
- optimize storing music files (musics take a lot of space)
- make raycasting align with crosshair
- more precise collision check between the player and blocks: swept AABB vs AABB
- sort objects with transparency based on their distance to the player
- efficient structure generation
- add more non-block structures like flowers
- water and leaves waving effect
- add GUI; such as inventory system.
- add lighting
- add player avatar
- biome based on temperature
