OpenAstra
 
Loading...
Searching...
No Matches
OpenAstra

Overview

OpenAstra is composed of the following parts:

  • Server (backend). Written in C++ provide all the logics and behaviour of the game
  • Client (frontend). Written in Godot provide the user-interaction and graphics
  • Rules (game definition). Is a set of JSON files that fully describe the game, it's objects and so on

Folder Structure

  • server: sources for the server
  • client: sources for the client
  • rules: json defining the game
  • run: created after build, contains the backend executables and plugins

Server Overview

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:

  • Capability: provide a behaviour to an object
  • Command: provide a command sent from the client to the server

Last, the following are engine-specific objects:

  • GameManager: keeps tabs on game and time flow
  • Player: implements players
  • Starsystem: implements starsystems