Skip to content

Latest commit

 

History

160 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vibecraft Engine - A C++ Voxel Project with Vulkan

This project is a voxel engine built from scratch in C++20, inspired by Minecraft. The focus is on a high-performance, modern, and clean architecture that fully leverages the capabilities of the Vulkan API to simulate an interactive, procedurally generated world.

🚀 Key Features

  • Highly Efficient Rendering Pipeline with Vulkan: Utilizes modern Vulkan concepts for cross-platform, high-performance graphics. The architecture is cleanly separated into logical components for device, swap chain, and command management.

  • Fully Asynchronous & Prioritized Chunk System:

    • Intelligent, Stutter-Free Loading: The world is loaded and meshed based on player proximity—from the center outwards. This ensures a seamless gameplay experience without visible gaps during fast movement.
    • Efficient Thread Pool: A std::jthread-based thread pool handles computationally expensive tasks like terrain generation, meshing, and GPU data preparation in the background, without impacting the main thread's frame rate.
  • Interactive World & Player Controller:

    • Physics-Based Character: Instead of a simple fly-through camera, you control a character with gravity, jumping mechanics, and AABB-based collision detection with the world.
    • Block Interaction: Destroy blocks in real-time using ray-casting. Thanks to a "swap-on-ready" mechanism, chunks are updated flicker-free as soon as the new mesh is ready on the GPU.
    • Extensible Entity System: A clean Entity base class allows for the easy addition of new creatures (zombies, animals, etc.) with their own logic in the future.
  • Optimized Voxel Rendering:

    • Greedy Meshing: Drastically reduces the vertex count of chunks by merging adjacent, identical block faces into large polygons.
    • Frustum Culling: Significantly reduces GPU load by only rendering chunks that are actually within the camera's view frustum.
  • Modular World Generation:

    • Layered Noise: Uses FastNoiseLite (OpenSimplex2/Perlin) to create varied terrain through multiple layered noise maps for continents, erosion, and caves.
    • Biome System: A clean, extensible system based on temperature maps generates different biomes like plains, deserts, and oceans.

🛠️ Technologies Used

⚙️ Running & Building

🎮 For Players (Release Version)

  1. Go to the project's Releases page.
  2. Download the .zip file of the latest release (e.g., Vibecraft-v1.0.0-win64.zip).
  3. IMPORTANT: Install the Microsoft Visual C++ Redistributable (x64). This is a one-time setup.
  4. Unzip the file anywhere.
  5. Run Vibecraft.exe.

👨‍💻 For Developers (From Source)

Prerequisites

  • A C++20 compliant compiler (e.g., MSVC, GCC, Clang)
  • CMake (Version 3.10+)
  • Vulkan SDK

Steps

  1. Clone the repository:

    git clone https://github.com/quirinklr/minecraft-vibe.git
    cd minecraft-vibe
  2. Configure the project with CMake:

    cmake -B build
  3. Build the project (Release mode is recommended):

    cmake --build build --config Release
  4. Run the application: You will find the executable in the build/Release directory.

    ./build/Release/Vibecraft.exe

📄 License

This project is licensed under the MIT License. See the LICENSE file for more details.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages