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.
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.
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!
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.
Earth from the Moon.
Uranus tilted at its crazy 98° to the rest of the solar system. Its moons are an interesting cast of characters.
An abstract! It’s a wide-angle view of Jupiter’s moons and Main Belt & Trojan asteroids.
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.
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.