Skip to content

JuanDiegoMontoya/Gengine

Repository files navigation

Gengine (Game Engine)

A code-oriented game engine designed to be efficient, extensible, and simple to use (not necessarily in that order). It is being developed mostly for fun, and maybe to eventually become a game. That means features will be lacking.

Features

  • Voxel engine (see the Voxel Engine repo for more detail)
  • Batch renderer
  • ECS using EnTT
  • Entity scripting
  • Entity transformation hierarchy
  • Model and texture loading
  • Dynamic physics and collision API leveraging PhysX
  • Quake-style console, with support for variables and commands

Graphics

  • OpenGL 4.6-based renderer using modern overhead-reducing techniques
  • GPU-driven particle system
  • 4-channel flood fill voxel lighting
  • HDR lighting, tonemapping, and automatic exposure adjustment
  • FXAA
  • Analytic fog
  • Bloom inspired by CoD: AW
  • Parallax-correct reflections

To Do

  • Extend physics API with collision callbacks, filtering, etc.
  • More graphical features like skeletal animation, better transparency, etc.
  • ECS improvements based on gameplay needs
  • General code cleanup and better dependency management

Dependencies

  • assimp
  • cereal
  • Dear ImGui
  • EnTT
  • FastNoise2
  • glad
  • glfw
  • glm
  • PhysX
  • shaderc
  • stb_image
  • zlib

License

A suitable license is yet to be chosen.

Gallery

Animated (click to view videos)

10 million snow particles at 95 FPS. Many small moving things does not compress well!

Lighting transition

10k individually animated objects

Physics + particles

Non-animated (click to see full resolution)

Foggy day
Really foggy day
Big render 1

Big render 2