Skip to content

About

A custom hardware-accelerated 2D and 3D C++ game engine built from scratch

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

VECTOR Engine & FPS

Velocity Engine for C++ Texturing and Object Rendering

SDL3 DirectX 12 Bullet3D CMake C++17/20


Overview

VECTOR is a custom hardware-accelerated 3D C++ game engine built from scratch. It utilizes SDL3 for windowing and input, with DirectX 12 as its primary and default rendering backend (with Vulkan as a secondary option). It is compiled as a standalone static library (libVECTOR.a/VECTOR.lib) and includes a fully functional 3D FPS game that demonstrates the engine's incredible capabilities.


Features

  • Advanced Rendering (Vulkan & DX12): Features modern rendering backends powered by a custom RenderGraph architecture for automated resource state tracking and batched barrier execution. Supports Temporal Anti-Aliasing (TAA), Screen Space Ambient Occlusion (SSAO), Bloom, Shadow Mapping, Cubemaps/Skyboxes, and Post-Processing. DX12 backend uses advanced Shader Model 6.6 bindless rendering.
  • 3D Models & Skeletal Animation: Integrated with Assimp for loading 3D meshes, materials, and skeletal animations.
  • 3D Physics Engine: Integrated Bullet Physics for 3D rigid body simulation, collision events, and continuous collision detection.
  • Multithreading: Custom JobSystem for parallel task execution and maximizing CPU utilization.
  • Save System & Settings: Lightweight persistent data storage (save.dat) using JSON to track settings and high scores.
  • Developer Debug Tools: Full integration of Dear ImGui, allowing developers to create custom floating debug panels (press F3 to toggle the Engine Status & FPS window).
  • Game Modes: Play in standard or endless modes.
  • Dynamic AI Opponent: Play against a computer-controlled AI.
  • Data-Oriented ECS: A custom Entity-Component System core framework, maximizing cache locality and decoupling logic from data.
  • Audio & BGM Support: Robust audio manager supporting SDL_mixer sound effects and endless .mp3/.wav/.ogg background music.
  • High Definition & Polish: Includes neon UIs, dynamic window resizing, and smooth state transitions.
  • Game States: Includes Splash, Main Menu, Playing, Loading, and Paused menus with interactive mouse-driven UI.

Requirements

Ensure you have the following installed before building:

  • C++17 or C++20 compatible compiler
  • CMake 3.10+
  • SDL3, SDL3_ttf, SDL3_image, and SDL3_mixer development libraries
  • Vulkan SDK & VulkanMemoryAllocator (for Vulkan backend)
  • Windows SDK (for DirectX 12 backend)
  • Bullet Physics, GLM, Assimp, nlohmann_json, EnTT
  • Note: Dear ImGui is automatically fetched by CMake at build time.

Controls

Action Key
Movement W A S D
Look Around Mouse
Jump Space
Shoot Left Click
Adjust FOV Up / Down Arrows
Pause P or ESC
Toggle Debug UI F3

Building

This engine uses a universal CMake configuration. It is highly recommended to use a package manager like vcpkg to resolve all the 3D and media dependencies.

Option 1: Vcpkg (Universal / MSVC / Cross-Platform)

Using vcpkg:

vcpkg install sdl3 sdl3-ttf sdl3-image sdl3-mixer bullet3 glm assimp nlohmann-json entt vulkan-memory-allocator directx-headers directx-dxc d3d12-memory-allocator
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=[path to vcpkg]/scripts/buildsystems/vcpkg.cmake ..
cmake --build .

Option 2: MSYS2 / MinGW (Windows)

If using MSYS2 (UCRT64), install the dependencies (example):

pacman -S mingw-w64-ucrt-x86_64-SDL3 mingw-w64-ucrt-x86_64-SDL3_ttf mingw-w64-ucrt-x86_64-SDL3_image mingw-w64-ucrt-x86_64-SDL3_mixer mingw-w64-ucrt-x86_64-bullet mingw-w64-ucrt-x86_64-glm mingw-w64-ucrt-x86_64-assimp mingw-w64-ucrt-x86_64-nlohmann-json mingw-w64-ucrt-x86_64-entt mingw-w64-ucrt-x86_64-vulkan-headers mingw-w64-ucrt-x86_64-vulkan-loader mingw-w64-ucrt-x86_64-vulkan-memory-allocator mingw-w64-ucrt-x86_64-directx-headers mingw-w64-ucrt-x86_64-directx-dxc mingw-w64-ucrt-x86_64-d3d12-memory-allocator

Then configure and build via CMake:

mkdir build && cd build
cmake -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH="C:/msys64/ucrt64" ..
cmake --build .

Made with love by the VECTOR Team.

About

A custom hardware-accelerated 2D and 3D C++ game engine built from scratch

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages