I, Voyager

CharlieWCharlieW Posts: 20Member
edited October 2019 in Projects

Release Date: November 9, 2019
Homepage: ivoyager.dev
Forum: ivoyager.dev/forum

I, Voyager is a software planetarium featuring the dynamic orbits of planets, moons and asteroids (we'll have comets and exploratory space probes too!). It’s also a free, open-source platform for creating games and educational software in a realistic Solar System. I, Voyager is built on the Godot Engine using GDScript and can be extended with GDScript, C# or C++.

I'm hoping to build a community of developers. After release we'll have a news page and forum at ivoyager.dev and organization public repositories at github.com/ivoyager. I'm looking forward to seeing what others do with this!

Here's a pretty screenshot of Europa, Jupiter and Io with interface hidden:

Jupiter with its many orbiting moons:

A little closer in:

Our Solar System with planets (and dwarf planets!) displayed as icons:

Top view with ~200,000 asteroids (I think), with prominent Main Belt, Trojans and Hildas. I love how this view shows off the "structure" of the Solar System and the gigantic influence of Jupiter! I, Voyager has orbits for all "numbered" and "multiposition" asteroids (more than 600,000) but can reduce/filter these at simulator start by magnitude. Each asteroid here is a shader vertex that knows its own orbital parameters - i.e., we let the GPU do the heavy lifting. (It runs well on my 6-yr old Dell XPS 13 laptop albeit with the fan at full blast.) I haven't done this yet but the plan is to "lazy init" an asteroid as a spatial node when the user selects it, and have good quality 3D models at least for the ones that have been imaged.

Side view:

We have some basic interface to move around and see things: a Selection Panel (with camera & view options), Info Panel and Navigation Panel. The Info Panel currently has a Wiki subpanel that (when selected) shows the top section of the Wikipedia entry for the selected item. But other subpanels could be substituted or added here. All GUI (most everything else too) can be extended or replaced. We have a setting that lets the user drag the panels around and they "stick" through game save/load.

The planetary system is built from .csv data tables (not scenes) and asteroids from binary files (generated by an importer from source data). I, Voyager has its own save/load framework that saves procedural objects with only the data that you specify, not the whole object. This let's us save/load game state with many hundreds of objects and hundreds of thousands of asteroids (which exist in pool arrays, not as objects) in one to several seconds. It runs pretty smoothly entirely in GDScript (plus shaders) with some aggressive optimization - mainly hiding and not calculating position of things you can’t see. We could get some more speed by porting just a couple existing object classes from GDScript to GDNative/C++.

I'm about to take a massive vacation, but I'll try to drop by from time to time. My activity here will pick up again in late October.


Tags :

Comments

  • CharlieWCharlieW Posts: 20Member

    Please don't confuse with the excellent song of the same name...

  • kryzmakkryzmak Posts: 109Member

    This looks awesome! So, when you release that project it will be open source?

  • CharlieWCharlieW Posts: 20Member
    edited November 2019

    @kryzmak said:
    This looks awesome! So, when you release that project it will be open source?

    Yes. Under the same MIT license that Godot uses. Edit: under Apache-2.0 (also free & open-source).

  • CharlieWCharlieW Posts: 20Member

    I, Voyager main website and forum have gone live! You could make the first post!

    Seriously though, I could use your help. There's nothing sadder than an empty forum.

  • MegalomaniakMegalomaniak Posts: 1,828Admin

    I recognize that forum software choice and the theme too. B)

  • CharlieWCharlieW Posts: 20Member

    @Megalomaniak said:
    I recognize that forum software choice and the theme too. B)

    Originality isn't always the best approach...

  • MegalomaniakMegalomaniak Posts: 1,828Admin

    I assume you are making use of vanillas integration option for wordpress? Works well?

  • CharlieWCharlieW Posts: 20Member
    edited October 2019

    @Megalomaniak said:
    I assume you are making use of vanillas integration option for wordpress? Works well?

    No. I looked at that but it kind of scared the hell out of me (I have enough trouble with WordPress alone). They are totally separate but I tried my best to match colors, fonts, general layout, etc. Then I did a tiny change to Bootstrap to point the "I, Voyager" header back to the wordpress site. (I should do what you have done here and have the mainsite menu on the top. Always too much to do...)

    Btw, Advanced Editor has a WYSIWYG setting that I think is new. It seems pretty cool in my experiments. It adds a </> toggle button to the editor header so you can go in and out of code vs wysiwyg while posting. I tried out Rich Editor but that really messed up image linking -- all my nice clean images suddenly had Imgur social gobbledygook around them.

  • MegalomaniakMegalomaniak Posts: 1,828Admin
    edited October 2019

    @CharlieW said:
    (I should do what you have done here and have the mainsite menu on the top. Always too much to do...)

    That part is easy, just need to have/create a smarty tpl template for your theme in the views folder, you can check the repo for ours:
    https://github.com/TwistedTwigleg/vanilla-bootstrap

    @CharlieW said:
    Btw, Advanced Editor has a WYSIWYG setting that I think is new. It seems pretty cool in my experiments. It adds a </> toggle button to the editor header so you can go in and out of code vs wysiwyg while posting. I tried out Rich Editor but that really messed up image linking -- all my nice clean images suddenly had Imgur social gobbledygook around them.

    Interesting, what vanilla version? And what version is the Advanced Editor plugin? Ours says 1.8.1 for Advanced Editor. Vanilla is 3.2.

    edit: Ah, right, WYSIWYG only. We use markdown in here for a little more consistency with github.

  • CharlieWCharlieW Posts: 20Member

    Same versions. Yeah, you just have to press the "Reinterpret All Posts As Wysiwyg" switch. Don't worry, nothing bad will happen... :#

  • CharlieWCharlieW Posts: 20Member

    We have our first proper news post on the website. Basically a launch announcement with a small bit of project history narrative.

    Two weeks until software launch!

  • CharlieWCharlieW Posts: 20Member

    I, Voyager has gone live!

    Come give us a visit! We could use some testers. Or maybe you want to make a game in the Solar System? Our project template already has game save/load, options popup, user Hotkeys, and lots of other stuff already coded.

  • PickledtezcatPickledtezcat Posts: 8Member

    Hey, this looks cool! I may have a lot at using this in my class. The students are learning about space this semester and it would be interesting for them to see. Do you think it would run on Raspberry pi?
    There's a lot of objects in those scenes, are they particles?

  • CharlieWCharlieW Posts: 20Member
    edited November 2019

    @Pickledtezcat, It would be super to see this used in a classroom!

    Boy, I don't know much about Raspberry Pi, however, so I can't give you an answer on that. It does work on my 6-yr-old Dell xps 13 laptop with integrated graphics card. I have some interest in making a "mobile I, Voyager" -- but I'm pretty sure I'll have to reduce asteroids (and possibly moons) by quite a bit. I'd be happy to engage you further if you want to do something like that for Raspberry Pi.

    The green asteroid points are individual vertices, not particles. Asteroid orbit data is encoded in mesh arrays of length equal to the number of asteroids. These are not objects. The plan is to "lazy init" individual asteroids as Spatial objects only as needed (i.e., when you select one) but this is not implemented yet.

    However, the >100 moons of Jupiter and Saturn are objects, as are their icons, labels & visible orbit paths.

  • CharlieWCharlieW Posts: 20Member
    edited November 2019

    New release v0.0.2-alpha! This adds yaw-pitch-roll control for the camera.

    Our download page is here.

  • CharlieWCharlieW Posts: 20Member

    I, Voyager now has a web-based planetarium! Come check it out!
    Oh! and v0.0.3 is out.

  • cyberealitycybereality Posts: 539Member

    That's really nice. Good performance in WebGL too.

  • CharlieWCharlieW Posts: 20Member

    @cybereality said:
    That's really nice. Good performance in WebGL too.

    I was surprised how well it worked. One oddity is that Saturn's rings are bright (from either side) when lit from the north and dim (from either side) when lit from the south. In GLES3 it properly shows bright when viewed from the same side as the sun and dim on the other. (The rings are currently just a quad mesh image; intended to be shader eventually.) I'll do some troubleshooting and open an issue.

  • CharlieWCharlieW Posts: 20Member

    v0.0.4 is out! Mostly has improvements for the web planetarium.

  • CharlieWCharlieW Posts: 20Member
    edited January 25

    I, Voyager now has Twitter and Facebook pages!

    This is quite new for me (I'm an old-school blog/forum person, myself) but it seems necessary to get a community going. We really do need testers and developers (besides just me). If you have any social media mojo, please come give us a hand!

    More of these at ivoyager.dev:

  • justinbarrettjustinbarrett Posts: 132Member

    This looks very promising...Mr Sagan would be proud...I love space and science and tech and all that "nerdy" stuff... I can't wait to see this in action...I assume everything is scaled a bit...I mean in the last pic I assume that is europa?? it seems to be about the correct distance(what do I know) based on the perspective...

    in any case, this looks good.

  • CharlieWCharlieW Posts: 20Member

    @justinbarrett , Thanks! Yes, it's all scaled correctly! That's Europa ... and Io nearer to Jupiter.

    v0.0.5 is out! Fixes a few issues and updates for Godot 3.2. Next release will be our official beta! That will have some non-spherical models (Phobos & Deimos at least) and visual effects currently lacking: shadows, sun glare, etc.

    Please visit us at ivoyager.dev!

  • cyberealitycybereality Posts: 539Member

    I made a planetary simulation in Maya years ago. I actually plugged in all the accurate orbits and planet sizes and couldn't figure out why the screen was black. The scale was so astronomical that you couldn't see anything. Lol.

  • noob51betanoob51beta Posts: 21Member

    Hi CharlieW,

    I looked at what you are up to following noticing your earlier post(s). I thought I would mention the notion I had for a "real time sub light space exploration game" or even "faster than light." E.g something like set of from Earth to Uranus at 1/10 light speed - return to game 1 1/2 days later . I am a bit behind on modern video games, but I thought I would put this notion into a public domain in any event. Tying the idea in with what you are doing might have some mileage and I can foresee "oldies" downloading such a type of game onto their phone perhaps and exploring, at sublight - the solar system - the excitement building x days after setting off on a journey :)

  • CharlieWCharlieW Posts: 20Member

    @noob51beta , that's a cool idea. At some point I want to add real-life spacecraft (Voyager 1, New Horizons, etc.) with their real historical navigation paths. Those took years but maybe we could have 1 yr/day time compression to get the effect you are describing.

    @cybereality , we have a few systems to take care of that. The main thing is that we dynamically adjust camera near and far so we can zoom in to km-sized objects or out to 3x10^10 km. The other trick is that the camera parent body is always at global translation (0,0,0). That keeps Pluto from shaking wildly from lack of float precision.

  • SIsilicon28SIsilicon28 Posts: 115Member

    @CharlieW said:
    @cybereality , we have a few systems to take care of that. The main thing is that we dynamically adjust camera near and far so we can zoom in to km-sized objects or out to 3x10^10 km. The other trick is that the camera parent body is always at global translation (0,0,0). That keeps Pluto from shaking wildly from lack of float precision.

    You know I have this idea that I liked to call cascaded viewports. Its concept is similar to that of cascaded shadow maps.
    1. Setup a N number of viewports. 4 is probably a good number. enable transparent_bg.
    2. Give each viewport a camera. Each camera's near and far planes will match up with each other so that the far planes of one camera is the near plane of another.
    3. Setup a postprocess effect that combines them all together.

    Obviously this is less efficient than a logarithmic depth buffer, but I think is a good work around for the time being.

Sign In or Register to comment.