Final project: C++ OpenGL engine for 3d and 2d game development.
- Self contained engine, everything can be accessed just importing a header
engineAPI.h
- Scene manager: Entity Component System engine oriented
- Render manager: OpenGL 4.5 API abstraction
- Window manager: Multi window/overlay support
- Assets manager: Caching and hot reloading of prefabs, shaders, textures, models and scenes
- States manager: State machine
- Settings manager: Persist your settings
- Debugger (Logger, Metrics, Dynamic settings, assets/entities/scene/states inspector)
- Event-driven (Mouse/Keyboard/Window/Application)
- Loading scenes and entity prototypes from json
- Perspective camera
- Model, Texture and Cubemaps loader
- Phong lighthing
- Framebuffer for post processing effects
- Triangle/Quad meshing terrain generation supporting texture, texture atlas and colors
- Noise generator for procedural terrain
Inside the folder demos
you can find several example scenes:
- Sponza
- Dabrovic sponza
- Lowpoly city
- Skycrapers city
- Trailer park
- Noise generated terrain and skybox
- Flat terrain with primitives and skybox
- Several cube instances with reflection, light, using a texture atlas and a skybox
- Flappy Bird game
$ mkdir build ; cd build
$ cmake ../src
$ cmake --build . --target potatoengine
$ .\Debug\potatoengine.exe
- Once cloned the project create inside a folder where your game app logic will go, an example can be seen in
demos\
- Expand camera class supporting more modes
- Profiler
- Serialization
- Scripting language
- Tests
- Editor Mode
- Engine wiki documentation
- glfw: openGL application development framework
- glad: openGL loader
- EnTT: entity component system
- stb: image loading
- glm: math operations
- imGui: ui framework
- nlohmann_json: json processing
- assimp: model loading
- spdlog: structured logging
- FastNoiseLite: noise generation
- freetype: font rendering
- RmlUi: ui framework