1. SpaceSim
  2. News
  3. Update 0.9 - Changelog

Update 0.9 - Changelog

[p]This changelog is mostly for people who have been following the development for longer time. It contains all added features and changes compared to the previous version that was available to Patreon subscribers.[/p][h3]Steam integration[/h3][p]Steam manages installation, provides automatic updates and allows users to easily switch between versions. Finally, no more .msi installers blocked by Windows Defender every time you run it![/p][p]Besides making downloads and updates much easier, Steam also gives us a way to share objects and simulations with other people using the Workshop. If you're missing a planet, a moon or another object, check out the workshop - maybe someone already made it. If so, you can simply subscribe to the item and it will show up next time you start the application.[/p][p]There are currently two types of workshop items:[/p]
  • [p]Objects are added into the list of objects you can add to your simulation, next to the built-in objects.[/p]
  • [p]Simulations are added into the simulation presets. Use ‘File > Open Preset’ and select the ‘Workshop’ filter to see all simulations you’re subscribed to. [/p]
[h3]GPU solver improvements[/h3][p]The GPU solver has been improved significantly compared to the previous version. Although there is still a lot of work that needs to be done in the future, this version has made decent progress, including but not limited to:[/p]
  • [p]Phase changes[/p]
  • [p]Emission and opacity from materials[/p]
  • [p]Moving and rotating rigid objects[/p]
  • [p]Impact marks[/p]
  • [p]Object trajectories[/p]
  • [p]Ability to track an object during the simulation[/p]
  • [p]Viewing properties & graphs of simulated objects[/p]
  • [p]Support of color modes (object and material view)[/p]
[h3]Simulation import & export[/h3][p]The update adds an option to export the simulation data to a number of formats. You can get the raw numbers in a .txt file if you want to analyze them yourself or compare the data with another simulation software.[/p][p]You can also export the simulation as Alembic (point geometric data) or OpenVDB (volumetric data), which allows you to import and render the data using rendering software, such as Blender. Note that if you want to use Alembic files generated by SpaceSim in Blender, it's necessary to download the latest version Blender 5.0.[/p][p]The import of simulations into SpaceSim has also been improved. In short, it just works without the previous limitations. Whenever you export a simulation, the current simulation setup (meaning all the object data, materials, textures, etc.) is now saved alongside the particle data from the simulation. This means that you can import any simulation into your session, regardless of the number of objects or particle count, even if the session is empty, which wasn’t possible before.[/p][p]A Moon-forming simulation imported into Blender. [/p][h3]Light bending for the real-time renderer[/h3][p]The black holes are once again more realistic. The real-time renderer now approximates the effect of gravitational lensing, creating a black hole appearance similar to the raymarcher. It works by moving particle images around and potentially creating duplicate images, depending on the camera angle. The effect is quite simple and does not reach the same quality as the raymarcher, but it has a real-time performance and it’s a significant improvement compared to the previous version.[/p][p]A black hole with an accretion disk, rendered using the real-time renderer and the raymarcher.[/p][p][/p][h3]Visualization of gravitational potential[/h3][p]Previous versions of SpaceSim had an option to visualize the gravitational field as equipotentials (curves of constant potential). Now there is another option - display a lattice where each vertex is displaced proportionally to the local gravitational potential. This clearly shows the relative gravitational pull of objects and gives us a convenient visualization of gravity wells (Hill spheres) around objects.[/p][p]Furthermore, it adds an option to view the effective potential, a combined potential of gravity and centrifugal force. This potential comes into play when discussing the three-body problem and Lagrange points. You can check out the simulation preset ‘Capturing Trojans’ to see the field lines of the effective potential.[/p][p]Planets creating local gravity wells as they orbit the star.[/p][p][/p][p][/p][h3]Accurate gravity of rigid objects[/h3][p]Rigid (non-deformable) objects now have two gravity modes. Spherical gravity treats the object as a point mass, regardless of its shape. It’s a fast method, but it can be inaccurate for objects with complex shapes. Precise gravity takes into account the shape and correctly calculates the force and torque that the object’s gravity exerts on particles and other rigid objects.[/p][p]It works by discretizing the rigid object into a number of ‘virtual’ particles and computing the gravitational interactions between the virtual and the real particles in the simulation. The number of virtual particles can be set in the ‘simulation’ tab of the rigid object.[/p][p]Earth dropped to the center of a rigid donut-shaped object. [/p][p][/p][h3]Lua simulation systems[/h3][p]If you are missing some simulation options or want to experiment with your own physics equations, it is now possible with the Lua simulation systems. The script can be set to run every time step or with a specified period, e.g. once every hour. For more information, see Lua scripting.[/p][p]The scripting options are currently quite basic. They’ve been mainly added to see if there is any interest in the community for similar functionality. If there is, I’ll add more entry points for mods and customization using Lua in the future.[/p][h3]Composite boundary conditions[/h3][p]This is a new type of boundary condition that allows combining boundary types and setting a different condition in each direction. For example, you can set a removing condition to the top of the domain, a solid condition to the bottom, and a periodic to the sides, to simulate a small part of an infinite two-dimensional surface.[/p][p]Note that this feature is currently only supported by the CPU solver.[/p][p]A periodic boundary on one side and a solid boundary on the other side.[/p][p][/p][p][/p][h3]Orbital integrator[/h3][p]The update adds an alternative to the N-body solver for the computation of gravitational interaction between objects. Instead of directly calculating gravitational accelerations between each pair of objects, it moves objects along their orbit and changes the orbits over time according to Lagrange planetary equations. While this makes the simulation much more limited, it allows us to run it with a significantly larger time step and simulate the evolution of planetary systems for millions of years.[/p][p]The intent for this solver is to use it alongside the stellar evolution model. When using the N-body gravitational solver, it’s not realistically possible to simulate the evolution of stars due to the time step limitations. The orbital integrator makes a simulation like that feasible.[/p][p]The stellar evolution model is currently mostly a placeholder. It's a simple parametric relation that increases the radii of stars over time, depending on their mass. In the future, it will be replaced by a more accurate stellar model.[/p][p]Orbital integrator evolves orbits of planets over millions of years.[/p][p][/p][p][/p][h3]Linux version[/h3][p]Besides Windows, SpaceSim now also runs on Linux, using the Steam Linux Runtime. It has the same feature set as the Windows version, with two notable exceptions:[/p]
  • [p]The .mp4 encoder is missing. It uses Windows Media Foundation, which obviously isn’t present on Linux.[/p]
  • [p]OpenVDB exporter is not supported. This might be added in the future.[/p]
[p]That being said, there are still a couple of known issues with the Linux version, so it isn't available for download on Steam yet.[/p][p]If you're a Linux user and would like to test this version, please reach out to me. It could use more testers before it is made available to the public.[/p][p]SpaceSim running on Manjaro Linux.[/p][p][/p][p][/p][h3]More features & improvements[/h3]
  • [p]The scatter object is a new type of object that allows you to easily create copies of other objects in your simulation setup. If you want to create a group of 100 galaxies, no need to manually add and set the position of each and every galaxy. Just set the scatter object to create 100 copies.[/p]
  • [p]You can now add pulsar beams to your stars, helping to visualize the fast rotation of neutron stars.[/p]
  • [p]Rotational flattening of stars. Fast-rotating stars are automatically flattened to account for the centrifugal force. You can see it when looking at the preset stars, such as Achernar.[/p]
  • [p]Emission texture for stars. You can add a custom emission image to the surface of stars, showing granulations or sunspots. This works for both deformable and non-deformable objects.[/p]
  • [p]Fading of impact marks. The impact marks on rigid objects can be set to disappear after some time. This is supported by both the CPU and the GPU solver and is correctly stored in the simulation history.[/p]
  • [p]Raymarcher now supports overlays, such as trajectories, the potential field, or the Roche limit.[/p]
  • [p]Mirror reflections. The update adds an option to customize the index of refraction of transparent objects, making it possible to create mirror-like surfaces.[/p][p]Mirrors creating repeated images of Earth.[/p][p][/p]
  • [p]Besides the polytropic stars, you can now create red giants. The main difference between the two is that red giants hold most of their mass in the core, which is represented by a single particle located in the center of the star.[/p]
  • [p]Physical topography allows to deform the surface of non-deformable planets according to their height map.[/p]
  • [p]Added the frame dragging, a correction of general relativity that affects the motion around massive objects (e.g. black holes).[/p]
  • [p]More options for comets - ion tail and comet jets.[/p]
  • [p]Customizable units. Do you want to use inches, yards or furlongs instead of meters? You can add them in the application preferences.[/p]
  • [p]When adding objects, you can search for an object by name or filter only specific types (for example, Steam workshop objects).[/p]
  • [p]The objects in the setup page can now be easily replaced with another object.[/p]
  • [p]Two more tutorials, helping new users get familiar with the application. One tutorial explains how to set up camera paths and the other shows how to adjust the accuracy and speed of the simulation.[/p]
  • [p]Added an option to save the procedurally generated textures of planets.[/p]
  • [p]New benchmark runs a simulation using both the CPU and the GPU solver and assigns a score to both devices.[/p]
  • [p]Basic antialiasing (FXAA) for the real-time renderer. It helps to suppress the “jaggies” at the edges of objects.[/p]
  • [p]Improved selection outlines of gas particles.[/p]
  • [p]Raymarcher now simulates the light bending effect from all dense objects, not just the black holes.[/p]
[h3]Bugfixes[/h3]
  • [p]Gas raymarching. The default method of gas rendering sometimes creates noticeable grid-like artifacts, usually with dense high-opacity gas. Unfortunately, this cannot be solved without sacrificing the performance and potentially also the stability of the renderer, due to limitations of the method. Instead, there is an alternative render mode that overcomes this limitation entirely. The new method can be significantly slower in some cases, so it's currently not enabled by default. It's recommended to enable it only if you notice artifacts in the rendered image. I hope to come up with a method in the future that combines the best of both approaches.[/p]
  • [p]The orthographic camera now uses the perspective projection for rendering the background. Previously, the background was always a single color, given by the pixel selected by the camera direction, which - although technically correct - isn't very useful.[/p]
  • [p]Galaxies now look consistently between the setup and the simulation page.[/p]
  • [p]Improved particle generation at low resolutions. The radius of spherical objects should now be much closer to the expected value, even for a low number of particles. Previously, it would consistently underestimate the density of objects.[/p]
  • [p]Error recovery. When the conditions are too extreme for the solver (objects being too big or too small, a large difference in densities or temperatures, etc.), it often causes overflow/underflow, resulting in NaNs in simulation data. This would most likely crash the application in previous versions. The solver now checks if the simulation data are valid and stops the simulation when a NaN is detected. This comes with a very minor performance penalty and can be turned off if needed.[/p]
  • [p]Improved import of textured meshed. Previously, it was only possible to import meshes with a single material, meaning any mesh with multiple textures would not import correctly. The new version automatically merges the textures into a single texture atlas, allowing to import meshes with any number of materials.[/p][p]Spaceship models imported to SpaceSim (created by blaice and Aditya Voxel).[/p][p][/p]
[h3]Content[/h3][p]New objects:[/p]
  • [p]Enceladus[/p]
  • [p]Achernar[/p]
  • [p](101955) Bennu[/p]
[p]New presets:[/p]
  • [p]Blood Moon is a simple simulation that demonstrates objects casting colored shadows.[/p]
  • [p]Capture of Triton shows the potential origin story of Neptune's moon Triton.[/p]
  • [p]Comet jets is a showcase for the newly added comet option.[/p]
  • [p]Evolution of the Solar System shows how planetary orbits change over time, and the Sun that slowly grows and consumes inner planets of the Solar System at the end of its life.[/p]
  • [p]Mirrors in orbit is mainly a demonstration of the mirror material.[/p]
  • [p]Mixing of atmospheres is a collision simulation involving gas giants with semi-transparent atmospheres.[/p]
  • [p]Three-body problem is a simple preset showing the chaotic behavior of three stars (and one planet) orbiting each other.[/p]
[h3]What's next?[/h3][p]I regularly update the development progress on SpaceSim Roadmap. Check it out if you want to see what changed, or come chat on Discord if you have a suggestion for what to add.[/p]