Roadmap

edited February 12 in General
This is a work-in-progress todo list for I, Voyager. The list will evolve over time, and I'm happy to discuss possible additions. If you wish to contribute, please let us know what you are working on. I'm eager to see our first contributor pull-request!

This list does not limit you! If you want to contribute something different that you think would be useful to others, I'd suggest making an addon and posting it in our FOSS Addons sub-forum. There is a good discussion of common FOSS licensing options here to help you make it freely available for all projects including commercial (MIT or the Apache-2.0 that we use for I, Voyager) or freely available for non-commercial use only. Feel free to discuss any projects at any stage, free or otherwise, in our Projects sub-forum.

My thinking now is that we will remain in "alpha" until after Godot 4.0 release (probably in 2021). This allows me to continue to improve API without too much worry about breaking changes. By Godot 4.0 release, we should have a stable API. I'll port the project to 4.0 and then we'll move on to "beta" and then to official "v1.0" release.

Work that I plan to do on my own in the near-term (meaning 2021, at a guess):
  • Fixing errors in 3RD_PARTY.txt and possible clarification elsewhere on our website. This is mainly a concern for commercial projects: specifically, some of our "maps" are of ambiguous provenance. These were made by various space enthusiasts mostly in the '90s and ended up at NOAA ftp sites, with no attached copyright info. (All could be remade from public domain NASA images, if it comes to that...)
  • More componentization of Body. The current "Properties" Reference object will be replaced by more modular objects: Atmosphere, Gravity, Composition, etc., that go alongside existing objects Orbit, ModelGeometry, etc. A spacecraft, for example, is just a Body that has some of those components but not others.
  • AsteroidPacker addon. This is what turns source data into the asteroids binaries. (It's currently repository asteroid_importer, but it'll be renamed "asteroid_packer" and polished up a little.)
  • Ability to select and visit explored asteroids. We have a couple models in the current ivoyager_assets. These will go into the navigator panel (perhaps as a scrolling view of 2d images).
  • Stand alone "apps" for the Planetarium for various platforms with digital sigs and self-updaters (probably using Electron, but I'm not sure).
  • Support for multiplayer. My working assumption is that all network peers will have the same solar system (i.e., the same current scene which is a tree of Body instances). However, the server has authority over it. That's mostly an issue of synching Body nodes (with their respective Orbit, etc.) and that should not have to happen too frequently in most cases. [Mostly already implemented in 0.0.8 for my own project. Needs testing though.]
  • User can select whether camera tracks with body orbit (as it does now), ground (constant latitude, longitude) or neither. released in v0.0.7!
Ongoing improvements. I may get around to any these at any time. But progress most likely depends on contributions from other developers:
  • More graphic effects: atmosphere, shadows (I don't know why we don't see those now!), maybe a little sun flare, etc.
  • A planet rings shader for Saturn! Some resources for that here.
  • For the Planetarium, an "astronomy sky mode". I added an "outward" camera view but it isn't useful for astronomy since the user has no reference points to orient themselves. ("Outward" view is currently disabled but can be enabled in the ViewButtons widget.)
  • "Plug-and-Play" Body class. It's rather complicated to add a Body now. The goal is that you can drop in a Body object with a model and some Cartesian position/velocity vectors, and away it goes...!
  • API for orbit perturbations. Our "orbits-on-rails" system (as some call it) uses Keplerian orbit elements as its internal coordinate system, with rates or modification of these elements to represent common, well-understood (and extremely well-approximated) perturbations that occur due to n-body effects and non-spherical planets. We are using this already for orbit precessions, but currently, the values (for precessions: Ω-rate and ω-rate) have to be given. We need code to calculate these given a Body in a particular environment. The formulas exist for most situations one finds in our solar system including oblateness of planets (allowing things like frozen orbits) and Lagrange points (which give tadpole & horseshoe orbits).
  • A shader-based starmap. The starmap looks OK -- until you narrow the field-of-view, then it looks terrible! Surprisingly, there are only ~10000 visible stars, which is 1/6 of the number of asteroids we show (quite easily) even in our web deployment. So we should be generating stars in a similar way. Magnitude, color & position of stars would be in binary files similar to our current asteroids. (We may or may not have PanoramaSky for diffuse effects, but I suspect these should be shaders too.)
  • Barycenter mechanic. We'll probably use only for Pluto-Charon where it gives obvious visual improvement.
  • Comets!
  • Nearby star systems with known or probable exoplanets. (I, Voyager is already built to handle multi-star systems.)
  • Models for non-fictional spacecrafts. Priority would be those exploring the the solar system, but maybe also Earth-orbiting Hubble, ISS, etc.
  • Some kind of dynamic loading mechanism for close-up planet views. I'd like to be able to replicate the view one would have looking at (or from) the ISS.
  • API for astronomical navigation. E.g., get_hohmann_transfer_orbit(), etc.

  • More as I get to it...
Requires Godot 4.0 (sometime after this we'll have our v1.0 release!)
  • Ability to select an asteroid/comet/whatever from a point-graphic on the screen. The ~65000 asteroid points are positioned by the GPU. Godot 4.0 will allow us to communicate those coordinates back to the CPU so you can select individual asteroids with a mouse-click.
Not specifically a priority (for me), but I'd like to have in official I, Voyager...
  • VR.
  • "Interpretive" completion of world maps for Pluto and the half-imaged moons from Uranus outward. This would be an addon feature.
  • "Interpretive" small bodies: procedurally generated asteroids, comets and small moons. I forgot where I saw it, but there is a database somewhere with current best estimates of the shape of real small bodies based on long-distance images. It would be nice if we could incorporate this even if the detailed shapes and textures are fictional.
  • Fully procedural star/planetary systems.
  • Support for "special case" n-body effects. It's a complicated discussion, but we don't do a full n-body simulation (see comment "API for orbit perturbations" above). But there's no reason we can't simulate individual special cases this way. For example, a rogue planet tearing through the system.

Comments

Sign In or Register to comment.