I, Voyager is a software planetarium featuring the dynamic orbits of planets, moons and asteroids (we'll have comets and exploratory space probes too!). It’s also a free, open-source platform for creating games and educational software in a realistic Solar System. I, Voyager is built on the Godot Engine using GDScript and can be extended with GDScript, C# or C++.
I'm hoping to build a community of developers. After release we'll have a news page and forum at ivoyager.dev and organization public repositories at github.com/ivoyager. I'm looking forward to seeing what others do with this!
Here's a pretty screenshot of Europa, Jupiter and Io with interface hidden:
Jupiter with its many orbiting moons:
A little closer in:
Our Solar System with planets (and dwarf planets!) displayed as icons:
Top view with ~200,000 asteroids (I think), with prominent Main Belt, Trojans and Hildas. I love how this view shows off the "structure" of the Solar System and the gigantic influence of Jupiter! I, Voyager has orbits for all "numbered" and "multiposition" asteroids (more than 600,000) but can reduce/filter these at simulator start by magnitude. Each asteroid here is a shader vertex that knows its own orbital parameters - i.e., we let the GPU do the heavy lifting. (It runs well on my 6-yr old Dell XPS 13 laptop albeit with the fan at full blast.) I haven't done this yet but the plan is to "lazy init" an asteroid as a spatial node when the user selects it, and have good quality 3D models at least for the ones that have been imaged.
We have some basic interface to move around and see things: a Selection Panel (with camera & view options), Info Panel and Navigation Panel. The Info Panel currently has a Wiki subpanel that (when selected) shows the top section of the Wikipedia entry for the selected item. But other subpanels could be substituted or added here. All GUI (most everything else too) can be extended or replaced. We have a setting that lets the user drag the panels around and they "stick" through game save/load.
The planetary system is built from .csv data tables (not scenes) and asteroids from binary files (generated by an importer from source data). I, Voyager has its own save/load framework that saves procedural objects with only the data that you specify, not the whole object. This let's us save/load game state with many hundreds of objects and hundreds of thousands of asteroids (which exist in pool arrays, not as objects) in one to several seconds. It runs pretty smoothly entirely in GDScript (plus shaders) with some aggressive optimization - mainly hiding and not calculating position of things you can’t see. We could get some more speed by porting just a couple existing object classes from GDScript to GDNative/C++.
I'm about to take a massive vacation, but I'll try to drop by from time to time. My activity here will pick up again in late October.