OpenAstra is composed of the following parts:
The game engine itself looks to be lightweight and delegate object definitions to JSON files and game logics to purposely written plugins (aka: "capabilities").
The core concept is that everything in the game is an object, derived from a GameObject class. You can define what these objects are by assigning "dataitems" to them and special behaviours (called capabilities). You can expand on the available capabilities by creating new C++ plugins derived from the Capability class.
There are the following high-level type of objects:
Then there are the following functional objects, that don't actually represent a phisical object in the starsystem:
Last, the following are engine-specific objects: