Skip to content
Mateus edited this page Jan 25, 2020 · 11 revisions

BitEngine

Entity component based game framework. The framework is being planned to be expandable and have a fully customizable pipeline.

This engine is being built for personal use and learning purposes. The API may change at any moment.

Dependencies:

Building

  1. Clone the repository with all submodules:

git clone --recurse-submodules https://github.com/MateusMP/BitEngine.git

  1. Use premake5 to generate project files for your IDE of preference:

premake5 vs2017

premake5 gmake2

  1. Build using the generated project files.

4 Try running the Sample01 project file.

General Engine

Resource Management

  • Resource Loader => Providing async resource loading. May reload any resource at any time.
  • Generic Resource Metadata => May be used to specify details for any type of resource.
  • OpenGL Texture Manager => Default texture manager.
  • OpenGL Shader Manager => Default shader manager.
  • Sprite Manager => General Sprite manager.

Task Management

  • Easily create async jobs to speedup heavy tasks!
  • Support task dependencies
  • Thread control execution (easy management of what should be executed on the main thread)

Profiling

  • Simple profiling functions that generate a report that can be used in chorme://tracing.

BE_PROFILE_FUNCTION() BE_PROFILE_SCOPE("name")

Reflection

  • Basic API to create reflection data for classes, may be used to build a visual editor.

Graphics

  • Generic shader interface to build custom render modes

Others

  • Messaging available for ECS and all Game Systems.

Built-in component modules:

2D:

  • Tranform2D
  • Camera2D
  • Sprite2D

3D: (in rework)

  • Transform3D
  • Camera3D

General:

  • GameLogic - C++ class used to add some game logic functionality to entities.

Available Platform Backends

  • GLFW - Input and Video (OpenGL) Systems
  • OpenGL 2.0+ - 2D and 3D rendering (see Sample01 for 3D related code)

Available Samples

Sample 01 - General 2D and 3D rendering.

  • Arrow keys to move sprite on screen
  • Shows entity system functioning along with 2D and 3D components

Sample 02 - Same as Sample01 but running as a re-loadable DLL

  • Reloading the DLL allows testing code changes on the fly for the game portion of the code
  • For instance, changing the speed of an object.

Plans:

    • Default 3D mesh rendering module, (currently available as example in Sample01).
    • LUA support for a GameLogic like module
    • Android support
    • Audio