Conquer Space 0.0.0
A space themed grand strategy game set in the near future, with realistic orbital mechanics, and an emphasis on economics and politics.
Architecture

Architecture

Conquer Space's core is in ECS, and runs on entt.

Project Architecture

Conquer Space consists of 3 libraries and 1 executable.

All the libraries have these 2 directories, components, and systems.

We try to keep components simple, and try not to add methods to components.

Most of the behavior and the creation of entities take place in systems, and there is the preferred place to implement behavior.

cqsp-core

This is where the universe, and all of the game components are. In theory, this library should be standalone and should not need the other 2 libraries to compile.

The main game loop can be found at cqsp::common::systems::simulation::Simulation. Each behavior is an extra system.

cqsp-engine

Conquer Space's game engine is built from ground up.

This provides functions to simplify the rendering of objects, though lots of functionality is still greatly desired.

Asset loading takes place in this stage.

So far the game engine provides the ability to load spheres, use shaders, and render 2d objects.

Model loading and shadows are features that we want to implement, and a simplification of the rendering process is also wanted.

cqsp-client

This is where all the UI and rendering takes place.

We use RmlUi for our main UI, and ImGui to create our UI for debugging or prototyping.

cqsp-client runs off a scene system, where different classes serve as scene and have specific code that runs every frame.

There are 4 scenes for the main game loop, and 2 that matter.

The first scene is the loading scene, where the game asset's are loaded.

The second scene is the main menu scene, where the main menu UI takes place. So far, this is the only place where the UI is fully converted to RmlUi, so it is a good place to see how to intergrate RmlUi into the code.

The third scene is the universe loader scene, where the all the game objects are created from the game assets to the actual entities. We used to use lua to load the universe, but after changing from a procedually generate universe, it is not really used.

The final and scene that matters the most is the universe scene. This is where the star system is rendered. Most of the UI also exists here. We only support ImGui, but RmlUi replacements are planned after we have a proper structure.

cqsp-main

Just a main function to run the application.

Game Architecture

The main game loop takes place in src/common/simulation.h.

A new system is added in the constructor of the simulation.

Scripting

Scripting exists, however the API is not extensive at all, and needs a lot of work.