Skip to content

kafkaphoenix/newleaf

Repository files navigation

newleaf

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

Engine Features

  • Scene manager: entity component system oriented. Loading scenes and entity prototypes from json
  • Render manager: openGL 4.6 api abstraction. Model, texture and cubemaps loading capabilities. FBO
  • Window manager: glfw abstraction
  • Event-driven (mouse/keyboard/window/application)
  • Settings manager: customizable engine defined settings
  • Debugger layer: logger, metrics and an assets/entities/scene/states/settings inspector
  • Assets manager: caching and hot reloading of prefabs, shaders, textures, models and scenes
  • States manager: state machine with layers and overlays
  • Perspective camera
  • Model, texture and cubemaps loading capabilities

How to use the engine in a personal project

Use the engine as a library (shared or static)

include(FetchContent)
FetchContent_Declare(
    newleaf
    GIT_REPOSITORY https://github.com/kafkaphoenix/newleaf.git
    GIT_TAG        v0.1.0
)

FetchContent_GetProperties(newleaf)
if (NOT newleaf_POPULATED)
  FetchContent_Populate(newleaf)
  set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS} CACHE INTERNAL "" FORCE)
  add_subdirectory(${newleaf_SOURCE_DIR} ${newleaf_BINARY_DIR})
endif()

Currently, only Windows environments are supported.

Demos

Engine use cases can be found in the newleaf demos repository

Planned features

  • User defined settings
  • Shader compilation
  • Render commands batching
  • Expand camera class supporting more modes
  • Serialization
  • Per module tests using catch2
  • Profiler
  • Font rendering
  • Audio
  • Physics
  • Networking
  • Vulkan support
  • Engine wiki documentation
  • Editor Mode
  • Multi window/overlay
  • Scripting language
  • Multiplatform
  • Multithreading
  • Linux support

Third party libraries

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages