Skip to content

gsage/engine

Repository files navigation

Graphics System Agnostic Game Engine

Documentation Status Build status Build Status Gitter

Downloads

Binary downloads, created by CI are available on Github releases. Get latest release (MSI, DMG and DEB are available).

Showcase

Editor ExampleGame See documentation for more examples.

About

This project moves away from the paradigm of having Swiss Army Knife engine that can do anything and can be too bulky for some small projects. Instead, it aims to be configurable and easily expandable by plug-ins. If some plug-ins are not needed they can be removed from the project.

Thus, the Engine has the Core, which is static itself, but has many customization traits, like:

  • UI library interface UIManager.
  • Input handling interface InputManager.
  • Window handling interface WindowManager.
  • Generic plugin interface IPlugin.

So by using these interfaces, one can easily implement new input system, add support for any UI library and so on.

As this engine is based on ECS architecture, adding new kind of game logic can be achieved by writing new EngineSystem and Component.

The Core also provides a set of convenient tools:

  • serialization.
  • lua bindings which can be expanded in any plug-in.
  • implementation agnostic events for Mouse and Keyboard.
  • executable fully configurable via json configuration file.
  • logging.
  • dynamic plugin loader.
  • delegates, with support of event propagation to lua.
  • some generic systems bundled into the core (script, movement).

You can read more documentation on http://engine.readthedocs.io/.

This engine supports three OS at the moment:

  • Windows, Visual Studio 2017 and later.
  • OSX, ci is using Xcode 9.4.
  • Linux, ci is using Ubuntu 16.04 with GCC 5.4.

There are plans to support iOS and Android.

Use build instructions to build the engine.

Dependencies

Most of dependencies are vendored by Conan.

Main

  • Luajit Scripting.
  • jsoncpp config/level data parsing.
  • msgpackc used for released game package resources (levels/characters).
  • easylogging.
  • sol2 Lua bindings.
  • sole UUID generator.
  • inja Jinja2 like template renderer.
  • POCO Networking, threading, filesystem.

Optional

Contributing

Fork the repo on GitHub

  1. Clone the project to your own machine
  2. Commit changes to your own branch
  3. Push your work back up to your fork
  4. Submit a Pull request with a single commit preferably

NOTE: Be sure to merge the latest from "upstream" before making a pull request!

LICENSE

This project is licensed under MIT license.

Other Plugins

Issue Tracker