Solar System

The temporary name of my space game project using Rust and Amethyst. The current goal is to simply simulate a solar system and allow the user to navigate it.

The source code can be found here:

Below is a microblogging timeline of my development.

Let there be spheres!


Amethyst issues

Three things:

  1. I tried to use Amethyst's render graph to implement a post-processing effect, but for some reason it only worked while debugging the game under a RenderDoc process (yes, RenderDoc literally "fixed" the issue - which meant I couldn't even use it to understand what the real issue was).
  2. Amethyst is on the edge of a major update, which I attempted to update the project to. Sadly, the updated engine would not render anything on my screen.
  3. I don't have the space on my computer to store Rust's huge project caches.

Considering these three things, I have to abandon Amethyst as an engine for this project. Instead, I started to write a thin engine from scratch using the C interface for Vulkan. Currently, I've generated a regular icosahedron from code. There is also a simple camera to move around with.

Perlin Noise

Added some low-detail Perlin Noise to the Sun

Custom Shaders

Got custom shaders compiling and running in the graphics pipeline! Excited about this...


Added some friends to the system! Everything is to-scale, which is why the actual planets are not visible...


I got Labels on my planets. Below, the Earth is zooming towards its impending doom...


Bodies attracted to each other... :blush:

Data Driven

Not to be confused with "Data Oriented"!

Currently I'm thinking about ways to construct the solar system itself. Currently I'm using files in the RON format to specify which planet goes where, but manually writing to the RON file is tedious. So I thought I'd make a small Rust program that generates the RON files for me and lets me customize the solar system more easily.