
Screenshots

Watch trailer on Steam ↗sfsim
Jan Wedekind · Published by Jan Wedekind · Official site ↗
Last updated 9 Oct 2026
sfsim is a realistic 3D space flight simulator.Use an advanced single-stage-to-orbit space craft to take off, orbit the planet, perform reentry, and land back on Earth.sfsim features a true to scale Earth planet using NOAA elevation data and procedurally generated volumetric clouds.
Simulation, Free To Play · More free games
Experience the thrill of single-stage-to-orbit flights in sfsim, a free-to-play 3D simulation where you pilot an advanced spacecraft through NOAA-accurate terrains and volumetric clouds.
About this game
sfsim is a realistic 3D space flight simulator with true celestial positions of Earth and Sun from NASA. Use an advanced single-stage-to-orbit space craft to take off, orbit the planet, perform reentry, and land back on Earth. sfsim features a true to scale Earth planet using NOAA elevation data and procedurally generated volumetric clouds.
Please click on Visit the website and then on Support if you need support for the playtest.
Take off
Blast off from the launch pad and slowly tilt your spacecraft to start building up horizontal speed and climb to orbital height. Make sure you don't lose to much energy to air friction but also gather enough horizontal speed not to plunge back into the atmosphere.
Orbit the planet
Perform a controlled burn for orbital insertion. Your orbit should be nearly circular and above the atmosphere. If you get it wrong, you might enter the atmosphere unprepared and might even burn up!
Perform reentry
Perform a deorbit burn and reentry to come out at the desired location. Make sure you plan it right, otherwise you might end up over the ocean, or even burn up on reentry.
Land back on Earth
Approach the runway, deploy your landing gear, and touch down on the runway. Apply the brakes, come to a standstill, and celebrate mission success. Don't touch down too fast, or you might break the landing gear or even destroy the spacecraft. Don't touch down too late, or you will run out of runway.
The project
For a long time I wanted to develop a 3D space flight simulator. As a kid I implemented several 2D space flight simulators on an Atari ST. Many years later I saw Orbiter 2016 and I was inspired to create a free and open source space flight simulator. After some half-hearted attempts, I decided to start the project for real in 2020. I worked on the tough issues first and I finally managed to get to a point where I felt confident to create a Steam page showcasing early results. Progress is slow as this is only a hobby project, but I hope to release a demo soon!
The beautiful ambient music used in the trailer was made by Andrewkn!
Wishlist now to get notified about releases.
System Requirements
Will my PC run this? →Minimum
- Requires a 64-bit processor and operating system
- OS: Windows 10
- Processor: Intel Core i7 / AMD Ryzen 7
- Memory: 8 GB RAM
- Graphics: Nvidia GeForce GTX 1060
- Storage: 9 GB available space
Recommended
- Requires a 64-bit processor and operating system
- OS: Windows 11
- Processor: Intel Core i7 / AMD Ryzen 7
- Memory: 8 GB RAM
- Graphics: Nvidia GeForce GTX 3060
- Storage: 9 GB available space
Supported Languages
*languages with full audio support
Latest news
AnnouncementsOfficial
Shockwaves
I am excited to share early results of shockwave rendering with the community!I would like to add visualization of a glowing shockwave during atmospheric reentry in the sfsim spaceflight simulator. I explored possible approaches by discussing the problem with Google Gemini. Popular approaches seem to use meshes with animated semi-transparent noise textures. However this still leaves the problem of determining the shape of the mesh.Also the shape of the single-stage-to-orbit spacecraft is complex and the shockwave will look different depending on the orientation of the spacecraft. In the end, Google Gemini pointed out the Jump Flooding Algorithm (JFA), published in 2006. This algorithm essentially enables a real-time distance transform on the GPU. In this case, it can instead be adapted to fit a shockwave to each wind-facing surface patch and determine, for each pixel, which shockwave candidate lies farthest upstream in the wind direction.Here is a depth image as seen from the direction the wind is coming from. JFA then expands this image into a depth image of the shock front. Billig’s formula is used (with a fixed nose curvature radius for this prototype) to create a shockwave emitter at each surface pixel. The following image visualizes the seed pixel coordinates for the image. JFA has to track seed pixel coordinates in order to properly propagate the dominant/nearest shockwave. The remaining step is to use this depth image for volumetric rendering of the shockwave. The next image shows a volumetric box used for rendering the shockwave. By limiting the fog to pixels behind the shockwave, one obtains the following image. One can instead apply exponential fall-off to create a more realistic image of a glowing shock front. Future work includes taking into account the surface slope and curvature to get more realistic shockwaves.Let me know any feedback and comments in the sfsim playtest discussion forum or one of the social channels.Read full article on Community Announcements (wedesoft)AnnouncementsOfficial
Deferred Rendering
I have released version 0.30-1 of sfsim.This release introduces a major overhaul of the rendering code as well as a runway for the spacecraft. The rendering system is implemented using the Clojure programming language as well as GLSL. LWJGL3 is used to access the graphics card’s OpenGL bindings.The new rendering code uses deferred shading, which first computes and stores per-pixel geometry data in a geometry buffer (G-buffer), then calculates each pixel’s final lighting in a separate shader pass. Deferred shading makes it easy to render decals, which are essentially textures projected onto scene geometry. It also enables efficient real-time rendering of many localized light sources.Deferred rendering splits rendering into stages so geometry is processed first, lighting later.Step by step from the images:Geometry PassProjecting GeometryThe scene is made of triangles. A vertex shader is used to project the triangles which are passed to the rasterizer. For the planet mesh, the geometry is further refined through tessellation and geometry shaders. The geometry pass draws all visible geometry and stores per-pixel surface data into multiple buffers (textures) as shown below instead of computing final lighting immediately.Although the runway could be rendered as a decal in a separate pass, it was chosen to render it within the same shader as the planet. This will make it easier to later adopt runtime virtual texturing, for example to render airport ground surfaces with markings.Diffuse bufferThe diffuse buffer stores the base RGB color of the material at each pixel. There is also an emissive buffer for light-emitting surfaces which is not shown here.Material property bufferThe metallic buffer stores a scalar indicating how reflective the material at each pixel is. The buffer with specular strength (inverse roughness) is not shown here.Normal bufferThe normal buffer stores the surface normal vector at each pixel in the camera coordinate system. Normals are useful lateron in...Read full article on Community Announcements (wedesoft)Patch NotesOfficial
Metallic and roughness factor
I have released version 0.29-1 of sfsim.The Open Asset Import Library (assimp) which is shipped with the LWJGL3 library has been updated some time ago. I am now able to access the metallic value and the roughness value from the glTF exported by Blender. The metallic and roughness value are now used in the model shader programs so that the spacecraft has a more metallic surface.In the meantime I am still working on implementing deferred shading to facilitate rendering of a runway and localized light sources.Let me know any feedback and comments in the sfsim playtest discussion forum.Don’t forget to wishlist sfsim!Read full article on Community Announcements (wedesoft)AnnouncementsOfficial
Deferred shading
Currently I am working on deferred shading. This requires me to separate rendering into two passes:Geometry pass: render data to a point buffer, normal buffer, and a color buffer, etc.Lighting pass: use the geometry buffers to compute lighting including shadows and volumetric clouds.The change is quite a bit of work, because I have to split up the graphics code and the shaders for rendering the space craft, the planet, and the atmosphere.However this will facilitate rendering of runway textures which are at the same height as the rest of the scene but have a higher texture resolution. Simply adding textured polygons to render a runway does not work, because extra geometry placed at the same elevation as the ground causes z-fighting. Z-fighting is a rendering artifact where two surfaces are so close together that the depth buffer can’t reliably tell which one is in front.Another nice feature of deferred shading is that it allows for multiple localized lights to be rendered at once. You can render the backfaces of a small cube around the light source and use the geometry buffers to light the scene additively, factoring in both the incident angle and the distance from the light source.I.e., deferred shading enables detailed nighttime runway rendering with dense, spatially localized illumination, while keeping performance manageable compared to forward rendering with many dynamic lights.Don’t forget to wishlist sfsim!Also you can catch me on the sfsim Discord.Read full article on Community Announcements (wedesoft)Patch NotesOfficial
Github CI
Hi,Here is release version 0.28-1 of sfsim.This release has a minor fix for time lapse limits. Also I have increased the coverage of the schemas used for checking correctness of the software.The bigger change which hopefully is not noticeable is that I am trialing Github CI builds. Github kindly provides free CI for public repositories. I was already using Github CI for running unit tests.Using an automated build process on a controlled environment has many advantages:less error prone than performing multiple manual build stepsconfiguration changes on developer machines do not affect software releasesbuilds for both Linux and Windows can be triggered from any computerthe complete build process including dependencies is capturedbuild logs are onlineit is easier for others to create modified buildsLet me know in the sfsim playtest discussion forum if there are any problems.Don’t forget to wishlist sfsim!Enjoy!Read full article on Community Announcements (build)






