I, Voyager

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.

New version 0.0.14 is out!

Twitter
Visit Us
Follow Me
RSS
Follow by Email

This is a major update for our core mechanics and content. It’s built on Godot Engine 3.5.2, perhaps our last 3.x update before the big port to Godot 4!

Try the new Planetarium here!

Highlights:

  1. Saturn Rings are now shader-based (i.e., programmatically generated by the GPU).
  2. Models for the International Space Station and Hubble Space Telescope.
  3. Orbit lines for asteroids. It looks crazy if you show all ~48,000 present in the web-based Planetarium (see below) and that’s a small subset of the ~1.14 million we can add!
  4. Mouse-over identification of individual bodies (yes, including the ~48,000 asteroids!) and their orbit lines. This involves shader magic that will in the future be extended to almost everything: individual bands and gaps in Saturn’s Rings, individual stars, etc.
  5. You can now save and revisit “views” which optionally include target body, camera position, HUDs visibility & colors (e.g., asteroid points & orbit lines), and/or time state.

See the full changelog here.

Screenshots below!

Saturn Rings from the lit side. The rings change subtly with the Sun’s phase angle based on observed back- and forward-scatter. A big thanks to Björn Jónsson for the rings data and guidance! (Whoa! Looks like we need a bit more anti-aliasing on those inner rings!)
Saturn Rings from the unlit side. The B ring is nearly opaque and especially contrasts with the lit side.
The first spacecraft of many to come (I hope). If you’re a 3D graphics artist, please come help us out with open-source models for JWST, Voyager 1 & 2, New Horizons, Juno, or others…
Juno’s wild ride around Jupiter. This is a representative orbit (from 2021 or 2022, I think).
The new Planetarium interface for v0.0.14 lets you save and revisit “views” and gives you full color control. For example, you can set asteroid point and orbit colors by group membership, or selectively show groups as in the following images…
Jupiter’s Trojan asteroids librate around the L4 and L5 Lagrange points in 1:1 orbital resonance with Jupiter.
The Hilda asteroids orbit the Sun in 3:2 resonance with Jupiter. They have normal elliptical orbits. Each time a Hilda reaches aphelian, Jupiter has gone 2/3 of the way around putting the Hilda in proximity to a different Lagrange point (L3, L5 and then L4, in succession). En masse, they appear to stream through a triangle that rotates with Jupiter’s orbit.
Abstract art? This is what happens when you click the “show all orbits” checkbox for the Planetarium’s ~48,000 asteroids. The orbit lines are, from outermost to innermost, Trans-Neptunian (orangish), Centaurs (cyan), Jupiter Trojans (yellow), Hildas (blue), Main Belt (red), Mars Crossers (green), and Near-Earth (fuchsia).

Well, that’s it for core I, Voyager and the Planetarium…

In other news, the code I use to crunch raw asteroid orbit data is now public in GitHub repository ivbinary_maker. It isn’t polished (and maybe never will be) but, if you are so inclined, it will allow you to generate binary files for >1.14 million asteroids (numbered and multiopposition). I don’t know what kind of graphics card you’ll need to show those orbits! This also has the code I use to convert Saturn Ring data from Björn Jónsson (backscattered, forward-scattered, unlit, transparency & color data files) into the “1-spatial-dimension” texture used by the new the rings.shader.

Also, by the way, I’m making a game! It’s set in our Solar System. Well, I have been working on in for some years now. More on that soon…

Please comment at our Forum!

We’ve made the Planetarium into a Progressive Web App!

Twitter
Visit Us
Follow Me
RSS
Follow by Email

Our v0.0.10-alpha release introduces the Planetarium as a Progressive Web App, or PWA. What is a PWA? You can read about it here. For the Planetarium, it means: Faster revisits due to better browser caching. The option to install the app from the web page, which will give you an app shortcut, super fast start time, and automatic updates. Easier app distribution — it’s just a url link! And much less bandwidth required from our web server.

If you’re on a desktop or laptop, give it a try! (Sorry, we’re not quite ready for mobile devices yet.) Just click the link:

https://www.ivoyager.dev/app/planetarium.html

Our underlying Godot Engine introduced PWA functionality in November. It isn’t quite yet working as it should in official Godot releases. But, as usual, Godot devs are awesome and came through for us. With a custom Godot build we have a PWA! Thanks especially to Fabio Alessandrelli (Faless) for making this feature happen!

About installation: It’s easy to miss if you didn’t already know about PWAs. It works a little differently on different browsers, but on Chrome you will see an ‘Install’ icon in the URL bar. (Not immediately. It appears a little while after the app has already started.) Once installed, you will have app shortcuts on your desktop and start menu (or wherever these things go in your operating system). You can now start the app in near-instant time! It works without internet. It’ll update itself quietly in the background when we post a new version. It’s also quite easy to uninstall if you need to do so.

The benefit for us is that our web server doesn’t have to serve you many MBs of data each time you use the app. This was a bit of worry for us if we ever got popular. Hopefully we are ready for a little publicity and wider use now…

Have fun using the Planetarium! And please do distribute the link above to your friends!

In other news, our Downloads page changed to Developers. We don’t have downloads any more. The Developers page is more focused and hopefully more helpful for developers who might want to contribute to the Planetarium or to build their own projects using I, Voyager.

Also, in late November early December our Forum was invaded by more than a thousand bots. But we fought them off successfully! All is well now so please do sign up on our Forum! Due to higher security settings, however, new registrants will be asked an astronomy question. Here is the answer so you are ready…

Charon
Charon, the largest moon of Pluto. This is a screen capture from our Planetarium. The actual image was taken by New Horizons on July 14, 2015, as it flew by at 49,600 km/h.

Please comment at our Forum!

v0.0.9-alpha is out!

Twitter
Visit Us
Follow Me
RSS
Follow by Email

Built on the new Godot 3.3. See changelog here.

Developers should be happy with modularity and extensibility improvements. Our API is not yet stable (we’re still “alpha”!) but it’s shaping up nicely. My working plan is to stay in alpha until Godot 4.0, then have a short beta phase and official release.

Do have a look at our new Planetarium! I’ve expanded data display with closeable orbital, physical and atmosphere sections:

There are many other improvements and small bug fixes.

Please comment at our Forum!

I, Voyager in 2021

Twitter
Visit Us
Follow Me
RSS
Follow by Email

I think we’re due for an update!

I’ve released two alpha builds since the start of the year. The Web Planetarium is shaping up nicely (try it!). And I feel pretty good about code architecture and how the simulator can support an “extension” game or educational project. I’ll talk about recent progress and my thoughts for future development.

First, I finally understand Godot GUI construction! Instead of attacking misbehaving Controls and Containers with lines of code, I now let them do what they want to do. Good lord! How can something so hard suddenly become so easy? So I discarded our previous Planetarium GUI (a code nightmare) and assembled this in maybe an hour:

OK, I said “assembled” in an hour. But that’s only recently possible due to our new modular GUI widgets. These are bits of GUI that know how to talk to the simulator, and can simply be dropped into Containers:

We have 27 of these widgets now, plus additional GUI “mods” that can make panels draggable, resizable with settings, and/or resizable with drag margins. Here’s another “example” GUI assembled for the Template Project:

The core code also is very modular and extensible. The fundamental object class that orbits (and can be orbited) is the Body, which can have an Orbit, a Model, and other components that set its behavior and appearance. You can extend any of these classes in the ProjectBuilder to have your custom class used in the simulator. Unfortunately, it’s rather terrible from a Godot Editor point of view. You can’t presently use the Godot Editor to build a planetary system. The reason is that I, Voyager builds the Sun, planets and moons entirely by code from data tables (and the ~65,000 asteroids from binaries generated from data tables). In the future, perhaps a developer will be able to build a planetary system either way: by data tables, or by assembling pre-built stars, planets, moons, and space ships in the Editor. In any case, this is a weakness of I, Voyager at the moment.

There are things that I don’t know how to do yet, especially regarding graphics. Item #1 on our issue tracker is our lack of shadows. Yeah, that’s pretty basic! But it’s stumped me so far, and it takes away from the view of Saturn in particular. Speaking of Saturn, we need a rings shader! I, Voyager would benefit from help in this area.

Our roadmap is here. A few of the things I hope to get to this year: 1) You’ll be able to select and visit explored asteroids. Some are already hiding unused in our assets. 2) We’ll have comets, at least as orbital points and traces. 3) And spacecrafts! I’d like to have some real spacecrafts on their real historical flight paths in our Planetarium. We’ll start with Voyager 1 & 2 (of course!), then maybe New Horizons, then — who knows? I think it would be cool to spin the clock back 20 years and find the Galileo spacecraft orbiting Jupiter.

My intension now is to keep the project in “alpha” stage until after Godot 4.0 release (perhaps this summer?). After we port to Godot 4.0, we should quickly go to beta and then official “1.0” release. Our API should be pretty stable by beta. (If I know there are developers depending on it, I will be more careful about API breakage even in alpha.)

If you are working on a project using I, Voyager, or are interested in doing so, please let me know!

Oh! And we recently got our trademark registered with the U.S. Patent and Trademark Office! So one can type I, Voyager® now without getting arrested (although it’s kind of ugly, and not required in most circumstances). I say “we” with the intention that I, Voyager will become both a collaborative effort and a nonprofit entity sometime down the road. More on the nonprofit here.

Please comment at our forum!

I, Voyager is on Twitter & Facebook

Twitter
Visit Us
Follow Me
RSS
Follow by Email

You can find us now on Twitter and Facebook! Our handle on both is @IVoygr. Well… I’ve been tweeting and facebooking for one week and we have 24 and 9 followers, respectively. Is that good? Heck if I know. It has not ruined my quality of life (yet) or done too much damage to my ego. I’ll keep at it. Speaking of which…

I need you to promote us!

I, Voyager needs users, testers and developers! Please help me grow the community. Follow us, like us, share us, retweet us, signal boost us, link to us, blog about us, signup for posts by email and forward them, tell your human flesh friends about us, write down ivoyager.dev on scraps of paper and pin them to coffee shop boards next to the restroom. Whatever medium is best for you. I, Voyager needs a community behind it to reach its potential!

I, Voyager screen capture of Jupiter and Io viewed from Europa.

Please comment at our Forum!

Introducing the Web Planetarium!

Twitter
Visit Us
Follow Me
RSS
Follow by Email

After a month of work and much help from the Godot community, we now have a web-based planetarium! Follow the new PLANETARIUM link in our main menu or click here.

Why a month? To make a long story short, a bit of I, Voyager code that uses your graphics card to calculate asteroid positions (specifically, numerical approximation of the inverse Kepler Equation) was not agreeable with WebGL1, the JavaScript API that renders 3D graphics on your browser. Godot community member capmn was kind enough to point out the flaw (in our code!). Meanwhile, clayjohn used our misguided Godot bug report to identify an actual bug in Godot, the fix for which is already in the upcoming Godot 3.2 release. In any case, it’s remarkable that this is possible at all! I could never have done it without the Godot Engine and its superb community. I’ve posted screen captures below and more on the Planetarium page…

Earth from the Moon.

I, Voyager screen capture of the Moon with Earth.

Uranus tilted at its crazy 98° to the rest of the solar system. Its moons are an interesting cast of characters.

I, Voyager screen capture of Uranus and its interestingly named moons, orbiting at a crazy 98° to the rest of the solar system.

An abstract! It’s a wide-angle view of Jupiter’s moons and Main Belt & Trojan asteroids.

I, Voyager screen capture of asteroids and moons of Jupiter -- a wide-angle abstract.

Please comment at our Forum!

I, Voyager: an Open-Source Software Planetarium

Twitter
Visit Us
Follow Me
RSS
Follow by Email

We are two weeks from launch!

I, Voyager is a free, open-source software planetarium designed for game and educational software development. It features the real, dynamic orbits of planets, moons and asteroids — with much more to come!

I built I, Voyager to be improved, modified and extended by the community. A big part of that is the open-source Godot Engine that runs it. I, Voyager uses Godot’s easy-to-learn GDScript (similar to Python) and can be extended using GDScript, C# or C++. Every line of code in I, Voyager and Godot is open for inspection and change. Godot provides the hard stuff (GUI elements, 3D renderer, etc.) and access to a friendly, knowledgeable and rapidly growing community.

I am releasing I, Voyager under the same permissive MIT License used by Godot permissive Apache Licence 2.0. What does that mean? Projects built with I, Voyager are owned by their creators. You can sell what you make. There are no royalties or fees, and license compliance is relatively simple.

History

My first program was a 2-body orbital system written in BASIC on a VIC-20. I’ve remade that program every ten years or so, each time with more detail and better tools. I didn’t particularly know what a “game engine” was two years ago, but I stumbled into Godot, downloaded it, started coding in late November, 2017 — by December I had TestCubes orbiting bigger TestCubes orbiting one really big TestCube. The rest is polish, — except for the name, which I struggled with for a long time. The starting point was this image. After more than a few working names I finally arrived at “I, Voyager.” It’s a play on Voyager 1 (the spacecraft that took that image) and in honor of the Voyager Program.

Images

I, Voyager screen capture of Europa, Jupiter and Io.
I, Voyager screen capture of Europa, Jupiter and Io.
I, Voyager screen capture of the orbital paths of the moons of Jupiter
Orbital paths of the moons of Jupiter.
I, Voyager screen capture of asteroids. Main Belt asteroids and Trojans (orbiting 60° ahead of and 60° behind Jupiter) are prominent in this image.
Jupiter (♃) is the shepherd of our Solar System. Shown here are some ~200,00 asteroids; the vast majority are in the Main Belt (the ring inside Jupiter’s orbit) but quite a few are in the two Trojan groups (the “lobes”) orbiting roughly 60° ahead of and 60° behind Jupiter.
I, Voyager screen capture with user interface, showing Earth, Selection Panel, Info Panel and Navigation Panel.
We have some basic interface to move around and see things, including Wikipedia text for the selected object. Developers can extend, replace or remove user interface elements.

Join the community!

Please join our dedicated I, Voyager Forum! You can find our newsletter signup on the main site and downloads here (on Nov 9!). For developers, our repository home will be at github.com/ivoyager.

Happy Voyaging!

Please comment at our Forum!