Thera Engine
Source codeSummary
- Goal: Performant, easily modifiable engine for creation of a large scale space simulation game.
- Language: C++
- Tech Stack: Flecs, bgfx, glm, glfw, and assimp
- Notable Achievement: Action mapping input system
- Status: Work in progress
Completed Features
- A versatile and generic action mapping based input system
- Basic rendering integration with bgfx and flecs
- Cached hierarchical transform system
Description
This is a very long term, ongoing project intended to supercede both the OpenGL engine as well as Space Battle (Eventually).
Founded upon the Flecs framework and using bgfx
for rendering, this engine is targeted towards physically large, highly simulated games.
One of the primary differences between the design intention of this engine and others is integrated handling of large scale light sources and shadows
casters (such as a sun in a solar system). This feature is difficult to accomplish within existing engines without being able to break into their
rendering backend. This handling includes planned long range shadow casting and approximation, infinite range 'point' lights, and limited range
directional lights.
Though not technically a feature, I've made it a point to keep the engine up to date with unit tests for everything that I can.
A broad roadmap of features can be found in the repository here.
Documentation for the input system (providing a detailed explanation) can also be found here.
Challenges
This project involves two libraries which I did not create, ensuring a steep learning curve particularly when starting off. For the most part the curve
has tapered off by this point, though it's likely unforseen issues due to lack of knowledge of the libraries will arise.
Additionally the scope of this project carries the risk of 'spiderwebbing' of code and future difficult refactors. I intend to minimise this issues by
working modularly, with each feature coupling itself in to the engine's core without causing the engine itself to depend on it.
Future considerations
This project will be undergoing development over a long period of time. It is both a challenging project as well as a large one, but one I thoroughly enjoy working on.