Migration to Godot 4, restructuring (editor plugins!), and plans for beta and beyond…

Migration to Godot 4, restructuring (editor plugins!), and plans for beta and beyond…

Twitter
Visit Us
Follow Me
RSS
Follow by Email

A lot is happening if you follow our development at GitHub! As always, I encourage you to visit our discussion forum and try the newly updated web-based Planetarium. And, please do consider getting involved in our development! I, Voyager is open-source and I’d like to see it become a community effort. Our About has more information for contributors.

We’ve migrated to Godot 4!

I, Voyager continues to grow and improve in tandem with the open-source Godot Engine. In November/December of 2017, the Planetarium was a set of orbiting TestCubes running in Godot 2, which only barely supported 3D. From 2018 to early 2023, the project evolved into an open-source solar system simulation and planetarium using Godot 3 — all the while Godot was evolving into a much more sophisticated development platform and 3D rendering engine. And now, after a wee bit of effort from yours truly, we’ve moved on to Godot 4. As always, this kind of update involves a few steps forward and a few back, but sets us up for the future as Godot continues to evolve and improve.

Our web-based Planetarium is now v0.0.18 running on Godot Engine 4.2.1. Please try it and give feedback! Note that Godot 4.2.1 is still a little rough for deployment of HTML5 applications (as noted above, a few steps back). There are presently issues with lighting and our large solar system scale. You may notice that terminators are way too sharp. On the other hand, Godot 4 handles large numbers of meshes much more efficiently. You can now view our 70,000+ asteroid orbital tracks simultaneously even in the web browser app!

I, Voyager code is now a set of editor plugins

For developers, I’ve restructured our code into a set of Godot Editor plugins. This allows a whole bunch of new tricks including: 1) Our core plugin now manages its own (non-Git-tracked) assets. The plugin will check for presence and version of the ivoyager_assets directory and offer to download and update assets when appropriate. 2) Developers can now specify much I, Voyager functionality in a project-level config file. For example, this file can specify use of a different IVUnits singleton to change unit constants (e.g., METER, which sets the simulator scale).

The solar system simulation and associated GUI widgets are distributed in editor plugin ivoyager_core. This plugin requires one other editor plugin to work: ivoyager_table_importer. There is a third editor plugin, ivoyager_tree_saver, that is not used by the Planetarium but can be used for game-save functionality if you are building a game. Plugin ivoyager_core manages the non-Git-tracked assets directory ivoyager_assets (also kept in the addons directory alongside the plugins). The project structure now looks like this:

planetarium
     |- addons
         |- ivoyager_assets
         |- ivoyager_core
         |- ivoyager_table_importer
     |- planetarium
         |- gui (panels include widgets from ivoyager_core)
         |- more planetarium stuff...
     |- ivoyager_override.cfg (plugin singletons, classes, settings & init)
     |- project.godot
     |- readme, changelog, license, etc...

Or…

my_game
     |- addons
         |- ivoyager_assets
         |- ivoyager_core
         |- ivoyager_table_importer
         |- ivoyager_tree_saver
     |- my_game
         |- gui (panels include widgets from ivoyager_core)
         |- more my_game stuff...
     |- ivoyager_override.cfg (plugin singletons, classes, settings & init)
     |- project.godot
     |- readme, changelog, license, etc...

We strongly suggest developers add the plugins as Git submodules. This way, you can pull updates, checkout any commit, and (important for us!) contribute your own improvements back to us via pull requests — all from within your own project. It does take some learning to use Git submodules (if you don’t already), but this is much better than managing addons by manually moving directories.

I’ll upload these editor plugins to the Godot Asset Library with our upcoming beta release.

Beta and beyond…

With Godot 4 migration complete we’ll be moving to “beta” soon. I’m planning one more alpha release (v0.0.19) with a whole bunch of API-breaking class and function changes (of course I want to minimize these after official release!). I’m also hellbent on fixing our issue #1 lack of shadows bug (sadly, there will be no eclipse on April 8). Then I’ll release our first beta (v0.1, likely based on Godot 4.3) and work to solicit more user testing. Then, who knows? Maybe official v1.0 this summer or fall? Please let me know in our forum if you have plans or interest in using I, Voyager code in your own project! Our transition from beta to official release depends a lot on developer needs. For my own use, it’s somewhat easer to stay in beta for longer allowing breaking changes. However, if I hear from other developers, I’ll work more quickly to lock down the API and move to official release.

Please comment at our Forum!

View of Phobos and Mars using I, Voyager Planetarium v0.0.18.