Skip to content

MonsieurBleu/Vulpine-Engine

Repository files navigation

Vulpine Game Engine

Presentation

The Vulpine Engine is a lightweight game engine made from scratch in C++ using OpenGL. This project aims to provide a solid and versatile foundation for 3D game development. The engine is built for developers who, like me, prefer a hands-on, code first approach with both high-level built-in features and low-level fine tuning through direct API calls.

About The Creator

My goals with this project, are to learn how to make an application such as this one and to have a custom-made graphics/game engine for sevral of my personal and academical projects. This engine is and will always be open source and free for all uses.

Project Built With Vulpine

Portability & Dependencies

The Vulpine Engine is supported for Windows and Linux environment with OpenGL 4.6 compatiblity. No Mac or Android/IOS support is planned or will ever be.

This application uses different libraries :

Instalation & usage

Important modules :

Project structure with Vulpine :

my-project/
├── build/
│   ├── ressources/
│   ├── saves/
│   ├── shader/  <===== VESL submodule
│   └── Game.exe
├── Engine/      <===== Vulpine Engine submodule
├── include/
│   └── Game.hpp
├── obj/
│   └── Game.o
├── src/
│   └── Game.cpp
├── .gitattributes
├── .gitignore
├── .gitmodules
├── Makefile
└── main.cpp

Features

Game Logic

  • Entity Conpoment System
  • States Machine
  • Script Utils

Graphics

  • Cameras

    • Perspective Camera
    • Ortographic Camera
    • Easy To Save/Load Camera State
    • Reversed Z
  • Geometry Lighting

    • Blinn-Phong
    • PBR
    • Multi-Light
    • Ambient Light
    • Directionnal Light
    • Point Light
    • Tube Light
  • Colors & Buffer

    • Easy Frame Buffer Creation & Usage
    • HDR
    • sRGB Support (OpenGL native)
  • Shadowing

    • Multi Shadow Maps Support
    • Efficient Percentage Close Smooth Shadows
    • Directionnal Light Shadow Mapping
    • Point Light Shadow Mapping
    • Cascading Shadow Maps
  • Geometry Drawning

    • Vao Drawning
    • Automatic Uniform & Maps Update
    • Automatic UBO Updates
    • Single Instanced Vao Drawning
    • Multiple Instanced Vao Drawing
    • AZDO
      • Bindless Textures
      • Indirect Vao Drawning
  • Rendering Techniques

    • Foward Rendering
    • Clustured Rendering
  • Post Process

    • SSAO
    • Bloom
    • ToneMapping
    • Depth-Based Pixelisation (experimental)
    • Chromatic Aberration
    • MSAA
    • FXAA
    • ...

Scene Management

  • Scene Hierarchy

    • Automatic Updates
    • Hide Status Automatic Propagation
    • For Object Groups
    • For Meshes
    • For ModelSates/Instances (TODO : test)
    • For Point Lights
    • For Tube Lights
    • For Directionnal Lights
    • Fast Non-Redundant Updates
  • Culling

    • Frustum
      • Sphere Frustum Culling
      • AABB Frustum Culling
      • Fast Parallelized Frustum Culling
    • Efficient Occlusion Culling
  • Map/Scene Editor

2D Rendering

  • Text

    • MSDF Font Rendering
    • UFT Support
    • Single String Batch
    • Markdown bold and italics
    • Multi String Batch
    • Automatic Text Resizing
  • Fast Ui for debugging

    • Fast UI Batching
    • Value Menu Tab
      • Const & Input Support
      • Int
      • Float
      • Bollean
      • String
      • Color : Hue, Saturation, Value, HexCode
      • Direction : Phi & Theta Angle
      • Angles

Inputs

  • Easy Text Inputs With Clipboard Support & Single Source Security
  • Inputs Handler
  • App's Default GLFW Inputs Callbacks
  • Easy Custom Inputs Implementation
  • Window Event Handler

Utils & Debug

  • Clear OpenGl Message Callback
  • Lights/Physics/PathFinding/Frustum/Geometry Helpers
  • Angle & Color Conversion Functions
  • Precise Benchmark/Frame Timer
  • Precise Limit Timer
  • Default AppTime & SimulationTime Timers
  • Error/Warning Message Macros
  • Mapped Enum Maccros

Assets

  • Asset Manager With Easy Text Based Constructor & Duplication Detection Optimization

  • Vulpine Engine Asset Convertor

    • Assimp integration
    • KTX2 integration
    • .vulpineMesh
    • .vulpineSkeleton
    • .vulpineAnimation
    • .vulpineNavigationGraph
    • .vulpineBody
    • .vulpineLights
    • .vulpineScene
  • 3D

    • Easy VAO Creation & Update
    • Automatic AABB Model Generation
    • .obj Model Loading
    • Custom Fast Model Format
  • Textures

  • png/jpeg/gif Images Loading (STB lib)

  • hdr Images Loading (STB lib)

  • KTX/KTX2 Images Loading (KTX lib)

  • MipMaps (KTX lib)

  • Basic CubeMap Loading

  • Font/CSV Atlas MSDF Loading

  • (optional) Level/Scene Atlas Generator

  • Audio

    • .ogg Files loading
    • .wav Files loading
    • 3D Audio (OpenAL lib)
    • Audio Effects (Reverb, etc...)
  • Shader

    • Shader Include (With Custom Librairies)
    • Easy Fragment/Geometry/Vertex Shader Loading From Source File
    • Shared Device & Host Constants/Defines
    • Easy Tesselation Shader Loading From Source File
    • PIR-V Loading
    • Compute Shader Loading
  • Assets Streaming

    • Automatic & Secure Destroy Calls
    • Audio Streaming
    • Scene/Models Automatic Streaming
    • Shader Streaming

Physics

  • Base Physics Engine
  • Constant Step Physics Thread
  • Sphere Collider
  • AABB Collider
  • OBB Collider
  • Easy Colliders Loading
  • Game Object Class
    • Base Class
    • Multi Collider Support
    • Model/Physics Following mode
  • Physics Culling/Clusering/Optimisation

AI

  • Path Finding Nodes
  • Path Finding Debugger
  • A* Path Finding Algorithm
  • Path Finding Nodes Generator From Level/World