How does the Discovery Mechanic work?


The upcoming discovery mechanic simulates mapping and exploring an entirely unknown world. In this game, instead of showing data about planets, the UI shows discoveries you made of them. What is new in the upcoming version 0.7 is that your discovery process per solar system is now saved. This was only partially supported in the unstable 0.7 Alphas.

How it works

Discoveries are added by scanning and performing experiments, extending your database as you play. You do not see anything unless you actually detected, measured or registered it. In AstraX' GUI, you do not see the actual objects, but the data you collected about them.

Imagine being one of the first explorers in space, mapping the galaxy. 

This is what AstraX is meant to be!

In the below screenshot, you can see the star map with a procedurally generated star, Beta Ursa, selected. To the right is the discovery information panel which indicates with the question mark icon that there is one unknown planetary trait left to discover.


Technically speaking, a Discovery functions as a wrapper for any object that can be encountered in the world: such as stars, planets, spacecraft and space stations (and more!). A discovery can possess multiple child discoveries, to reflect things composing of other things. As of AstraX 0.7, the system is fully implemented for planet and planet traits, but is designed to work with anything, e.g.

  • spacecraft - spacecraft modules 
  • species - genetic features 
  • civilizations - technological advancements
  • and so on

I can hook availability of technologies, upgrades and more to unlocking certain discoveries, a mechanism that will bear similarity to Subnautica's blueprints. 🤿

Discovery mechanics are is process-based, which means there needs to be a conversion process to wrap e.g. a planet into a discovery. This is typically done by different scanners or experiments: internally, on successfully performing a scan or experiment, the game object is used to produce a discovery. That means discoveries and their child discoveries exists independently from the entity/actor system of the game. There currently is only one very basic experiment implemented (just pressing space to register a planet, star or spacecraft). Many more are planned and eventually they will resemble experiments/reports in Kerbal Space Program. 🔬 Much like the latter, different scans or experiments will be revealing different types of information.

Below is a rough overview of the process and how much of it is currently implemented.



How it can be extended

The genericness of this discovery system also allows developers and modders alike to combine entirely different child discovery types. The following extensions for planet I am currently taking into consideration: 

Planet: 

  • Currently implemented: Planet Traits (magnetic field, volcanic activity, atmosphere, rainfall) 
  • Planet Formations (mountain ranges/peaks, impact craters, volcanoes...) 
  • Planetary Events (storms, hurricanes, earthquakes)
  • Planetary Ecosystems (fossils, flora & fauna)
  • Civilizations/Empires/Factions

Note I cannot only do this with planets. It is entirely possibly to break each down even further, e.g. introducing a species (discovery) with its own genetic traits (child discoveries).

Theoretically, discovery mechanic support can also be added to existing objects in game, such as asteroid fields, solar systems or stellar/planetary nebulae, but it also is capable to support any mod and future content, such as black holes or other supermassive stellar structures.

How it was implemented

A streaming mechanism to save map data was required for in 0.7 Alpha 2 and 3. I considered custom file-based and directory based approaches.
The final decision fell on using SQLite for game and map data, which also includes the Discovery System. It offers powerful query functionality required for other parts of the game in the future, e.g. a Planepedia that is planned to visualize all discoveries you have made so far.

Files

AstraX 0.7 Alpha 3 (Unstable) 89 MB
19 days ago

Get AstraX: Reach for the Stars

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.