I, Voyager


Important links

  • GitHub Repositories – All of our code and downloads.
  • Forum – For help, feedback, discussion, or feature proposals.
  • Issue Tracker – Report bugs, astronomical inaccuracies, or other problems.
  • Changelogs – See what’s changed and what we’re working on.
  • Roadmap – Our plans for the future!

To ask specific questions about this page, go here.

The Godot community is a superb resource for project development. Please use their Q&A, Discord Server and Forum in addition to our own Forum.


I, Voyager is a free, open-source project distributed under the permissive Apache License 2.0. Creators who use I, Voyager in their own project may give away or sell their own work. There are no royalties or fees.

Our solar system simulator runs on the free, open-source Godot Engine using (primarily) its easy-to-learn GDScript, which is similar to Python. The code resides in a submodule ‘ivoyager‘ that can be embedded within a new or existing Godot project. The parent Godot project can be built using GDScript, C# or C++.

It’s a good idea to browse our repositories to see how the core ‘ivoyager‘ submodule fits into a parent Godot project, such as the ‘planetarium‘. Use the ‘project_template if you are starting a new Godot project. To embed the solar system simulator in an existing project, you will need to add the ‘ivoyager’ repository as a submodule within your project. Integration between ‘ivoyager’ and the embedding project occurs primarily via the IVProjectBuilder and IVGlobal singletons. These singletons let you change simulator function dramatically (even replacing core classes) without modifying code in the ‘ivoyager’ directory. This makes it easy to pull submodule updates or to contribute your own improvements to the core submodule via pull requests.

A final note on project structure: our large asset files (including images, models and asteroid binaries) are not Git-tracked and must be added manually. In a working project these reside in a project-level directory called ‘ivoyager_assets’. Assets can be downloaded for official releases here and for non-release development builds here.

Keep reading to get started contributing to our Planetarium or building your own project!

Clone using Git

Whether you are a Git newbie or pro, I highly recommend GitKraken. It’s free for public repositories and simplifies (for me) handling our submodule in multiple projects, both public and private. I’m giving Git cmd-line instructions below, but each step is pretty easy to figure out using GitKraken.

The ‘planetarium‘ and ‘project_template‘ both include submodule ‘ivoyager‘.

To clone the ‘planetarium’ and init submodule in one step:

git clone --recursive git://github.com/ivoyager/planetarium.git

For the ‘template_project’, go to the GitHub repository and click the big green ‘Use this template’ button. This will create your new project repository in your GitHub account with the un-inited ‘ivoyager’ submodule. Then clone your new repository and init the submodule:

git clone --recursive git://github.com/<your account>/<your repository>.git

If you clone using GitKraken, it will prompt you to init the submodule after you clone the parent project.

After this, you will have a project that lacks large file assets (including images, models and asteroid binaries) which are not Git-tracked. You will need to download the ‘ivoyager_assets’ directory separately, which you can find for the latest releases here and for non-release development builds here. It’s best to remove old contents of ‘ivoyager_assets’ first, then extract the .zip into directory ‘ivoyager_assets’ without version suffix.

Check our changelogs to see what Godot version we used in code development. There is a separate CHANGELOG.md file for ‘ivoyager’ (here) and each parent project (‘planetarium’ here; ‘project_template’ here). Usually, the current Godot Engine will work, but exporting (for example as a Progressive Web App) tends to be a bit more finicky.

For project developers, be sure to do all of your project-specific coding outside of the ‘ivoyager’ directory! That way, you can keep your ‘ivoyager’ submodule current with our latest version and (if you do make improvements to the ‘ivoyager’ submodule) contribute changes back to us via pull requests. You will be able to extend (or sometimes replace) any core ‘ivoyager’ class, as well as change init sequence or almost anything else, from your project code outside of the ‘ivoyager’ submodule. See comments in singletons ProjectBuilder and Global for project integration.

Godot Projects (without Git)

If you have Godot Editor and don’t want to Git for some reason, you can download a project in three parts:

  • First, you need the project directory. Look for the latest version of the Planetarium (here) or the Project Template (here). You’ll need the ‘source code’ under Assets. Download, extract, and rename the project. You’ll notice that there is an empty folder inside called ‘ivoyager’, which you will replace in the next step below (if you Git, you would init this as a submodule).
  • Second, you’ll need the core ivoyager submodule. Find the the latest version here. Once downloaded and extracted, you’ll need to strip the version number (so it’s just ‘ivoyager’) and use this to replace the empty ‘ivoyager’ folder inside the project directory from above.
  • Third, you’ll need ivoyager_assets (containing images and other large files). You’ll find directions where to find that in the same place as the ivoyager submodule here. Usually, the most current assets directory is one or two versions older than the most current code version.

After steps above, you’ll have a project that looks something like this (for the project template):

  • my_project
    • ivoyager (contains all of our core code)
    • ivoyager_assets (images, asteroid binaries, etc.)
    • replace_me (this is the “extension” that customizes this project)
    • project.godot
    • LICENCE.txt
    • README.txt
    • etc.

After all that, you should have a project ready to import into Godot Editor. See comments in section above about coding without making changes in the ‘ivoyager’ directory.