I’ve taken a break from blogging on optimization topics for a bit to get the Galaxy Generator into a releasable state - it is nowhere near feature complete, but the parts that I have done work fairly well. I’ve now got the rendering part somewhere close to my vision, and version 0.1.2 is available for download here for Android, Linux and Windows (Android will give some warnings about side-loading and self-signing, and Windows Defender will warn you about potential malware - there isn’t any).

The current version generates a 400 billion star galaxy and allows navigation around it, with some limited search capability. Currently there are only main sequence stars, no moons or planets, the star information is incomplete, and the controls and the search functionality need to be built out, but there is enough working to demonstrate that this is a workable idea, and many of the things to be added can be done incrementally (generating planets and moons will take some concentrated effort).

Screenshot inside a galaxy showing catalogue!

Developing this has been somewhat of a learning experience - I was already very experienced with C++, but had to learn about Vulkan, GLSL and native Android development to put this together. I’ve also had to develop some techniques to get the performance that I wanted - I’ve blogged about some of these, with more to come:

I’ve also released a library that I developed for this:

  • Pseudo-Double is a relatively fast C and C++ 64 bit floating point library written using only integer operations for cross platform consistency.

This is very much a work in progress, and I’m intending to get a new snapshot out every few weeks. I’m currently working on building out the star search capability in the “Catalog” panel, then I want to start looking generating the chemical composition of stars, which will be important for modeling planets.