Skip to content

C++ game engine for 3D and 2D development

License

Notifications You must be signed in to change notification settings

kafkaphoenix/newleaf

Repository files navigation

potatoengine

Final project: C++ OpenGL engine for 3d and 2d game development.

Engine Features

  • 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

Demos

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

To compile and run

$ mkdir build ; cd build
$ cmake ../src
$ cmake --build . --target potatoengine
$ .\Debug\potatoengine.exe 

How to use the engine in a personal project

  • Once cloned the project create inside a folder where your game app logic will go, an example can be seen in demos\

Planned features

  • Expand camera class supporting more modes
  • Profiler
  • Serialization
  • Scripting language
  • Tests
  • Editor Mode
  • Engine wiki documentation

Third party libraries