Skip to content

This software development kit contains the moddable part of Astropolis including content data, GUI, and AI systems.

License

Notifications You must be signed in to change notification settings

t2civ/astropolis_sdk

Repository files navigation

Astropolis SDK

Astropolis is a simulation game that explores human expansion and evolution in our own solar system. It is an early stage, open development project created by Charlie Whitfield built in the I, Voyager solar system simulation using the Godot Engine.

This software development kit contains the moddable part of Astropolis, which includes content data, GUI, and AI systems. Astropolis and the SDK are work in progress!

About | Blog | Forum | Modding | Download

Screenshot from Dev Build v0.0.4 (from a tiny screen to make GUI readable here).

Development Plan for Modding

This 'SDK' is the base Godot project used by the author to develop Astropolis. You can import the SDK using the most current Godot Editor version and browse and edit code. However, the public project is not (yet!) runnable because it lacks the core 'servers' that run Astropolis internals. In the future, these internals will be integral to a custom-built Godot Editor distribution. Modders will then be able to edit code, test run changes directly in the editor, and export mods for distribution as Godot .pck files.

Content Data

All content data is defined in simple text data tables in public/data/tables/ and addons/ivoyager_core/data/solar_system/. Modders can modify or replace existing tables, or create new tables defining entirely new systems. Table row entities are never hard-coded in core Astropolis (some items from '_classes.tsv' tables are 'soft'-coded in GUI which is accessible for modding). For more information about our data table system, go here.

Program Architecture

Astropolis has essentially a client-server architecture. AIs and GUIs are clients and communicate with servers, the non-public game internals, exclusively via 'interface' classes like PlayerInterface, FacilityInterface, BodyInterface, and so on (find here). Game AIs are instantiations (i.e., subclasses) of these interfaces. GUIs hook up to interface classes to get display data or apply human player changes (with care for multithreading since the Interface/AI system runs in its own thread).

Interface/AI classes are composed with objects Inventory, Operations, Financials, Composition, Population, Biome and Cyberspace (find here). These 'Net Components' are optimized for network data sync for multiplayer support.

Interface (base) and Net Component classes are presently coded in GDScript, but will be ported to C++ becoming GDExtension classes. Modders will then be able to code AI subclasses in GDScript, C#, C++, or any other language supported by the Godot community.

Installation

I, Voyager's Developers Page might be helpful because the SDK is built from I, Voyager's Project Template. Also, the author uses and highly recommends GitKraken for Git version control. It’s free for public repositories.

The SDK repository contains submodules. To clone the SDK with its submodules in one step using Git:

git clone --recursive https://github.com/t2civ/astropolis_sdk

About

This software development kit contains the moddable part of Astropolis including content data, GUI, and AI systems.

Resources

License

Stars

Watchers

Forks

Packages

No packages published