1. Rocket Science
  2. News

Rocket Science News

Work In Progress: Planes

A quick update here about a new feature that is coming in the next v0.17 version of Rocket Science. So, this is actually happening. At the beginning of the development I thought planes are too complicated to make, and even placed researching this topic post v1.0 release into my roadmap. But the more I worked on the game and the more my skills improved, the more I began to realize that it was not only possible, but doable in the time frame of one update cycle.

Planes have been at the back of my mind since the first rocket take-off in the game

One issue that I had to address before even starting research was the compatibility of the socket system with wings. The point is that planes, unlike rockets, need to be properly balanced so that the center of lift is behind the center of mass. I had no suitable sockets for that and the distance between each slot was 0.7m which is too far for proper balancing. So I've added a new type of socket. It is a line of slots with any number of them and 2x reduced distance between each one. And as I mentioned in the previous update, such sockets would look like swiss cheese. This was another reason to implement sockets hiding everywhere except assembly shop. Also I had to make them smaller, because with reduced distance the become like a mess.

After that, one week of heavy research and five weeks of development I finally put everything together.

Note, that all the gifs are work in progress, anything can be changed

The amount of new things that need to be added into the game to support planes is the biggest so far. Just take a look at this list of features.

- wings and lift and drag force calculations for them;
- control surfaces such ailerons and flaps;
- autocorrection system for lift forces;
- wheels, including steering and braking;
- new engine type: turbopropeller;
- new fuel type: kerosene;
- mirror symmetry for spacecraft assembly;
- center of lift and thrust calculations;
- new launch facility - runway.

And many more. The most complicated feature from this list was reinventing the wheel by the way, because Unity's builtin wheels do not work in the spherical gravity. But this is a story for another time. As are many otherstories about this development cycle, but I hope to be able to tell one or two in the actual update (now I simply have no time for that).

The basic functioning wheel took me one week to made...

Almost all of these things are 75-80% complete and I want to release the update someday in November. I didn't fully solve plane balancing yet and I need to finish tons of smaller features too. And, if I have some time left, I will try to add more than one plane set of rocket parts and add tutorials for all that.

You can see there a new type of symmetry — mirror

Thank you for your attention and see you in the v0.17.0 update!

Plane flight feels so different from rockets, it is like a new dimension for the game

Developer Update: August 2022

Hello, everyone!

Last update I received a lot of feedback on the game and a bunch of feature and content requests. I had to choose the most valuable but not the insanely time consuming ones, as I continue to work on the game alone and have to deliver updates within a reasonable time frame.

But before I get down for that and start the next dev cycle I have to migrate to the next major Unity version. I’ve been locked on the same engine version for 2 years, because I was using new (for that time) experimental engine features that made it possible to make the game fast and support real scale planet generation. The price was this engine lock, until Unity Technologies would transfer these experimental features into the latest stable Unity version and start to officially support them. This happened in June so I could finally move on.

But why spend valuable time on this engine migration when it won't add anything new to the game? Because engine's tools are getting better, some of the newest graphics and scripting tech are becoming available and sometimes everything even starts to perform faster. Hoverer, this migration is certainly not a walk in the park. Usually the game starts to fall apart after that, a ton of bugs and errors appear, some libraries stop working and some critical code completely breaks. You need to fix everything and then test everything, and fix every single issue you find during quality control. And even after that players will find introduced bugs by this update for months. But if you want to support your game for years and continuously work on it, you need to stay on the edge of the progress or you will be left behind and will lose the competition with other projects.

Typical game view just after engine migration

Again, this engine update has allowed me to completely rework lens flares and the Sun size and make them dependent on the distance to it. So if you look at the Sun from Pluto, it will look like an ordinary star. The next big thing that I’ve added is the support of scaled rendering and NVIDIA DLSS and AMD Fidelity FX. This means that you can finally play Rocket Science in 1440p and 4k resolution or improve FPS if the game is GPU bound for you.

The engine migration was done, but I suddenly injured my back and couldn't sit or lay down without pain. I spent the whole July healing it and, unfortunately, couldn’t work at all. But, thankfully, the pain was almost gone in the middle of August and I went back to the game development.

I started to look into feedback again. The first most requested feature was bigger fuel tanks. You need a lot of ΔV if you want to fly anywhere beyond the Moon. You can build such a rocket, and you can even find a bunch of videos on Youtube, where players land on Mars or crash into Venus’s surface. But those spacecrafts consisted of hundreds of parts, were hard to assemble and the game processed them very poorly, especially during the first stages of the flight. So the perfect candidate for the job has been found. Besides, the game still needs a lot of different fuel tanks to make the rockets easier to assemble and look better.

But bigger fuel tanks need attachments with more slots and the game supported a maximum of 16 slots at that moment. To increase this number I needed to rewrite an internal data format that stores connected to the part slots, which would immediately break all save games. But after some research I’ve invented a compatible format that supports up to 64 slots by the one attachment.

The shape of attachment containing these slots was a challenge too. It should be consistent with what is already in the game, be compatible with all current attachment shapes, also support symmetry and rotation. It’s like a geometric progression, adding each new attachment shape requires progressively more and more work. But I solved it and the attachment for bigger fuel tanks radius would look like this:

I am thinking about even bigger attachment for the largest fuel tanks radius in the game, but those will come later

When this shape was done, I started to experiment attaching different combinations of engines. I discovered that some combinations, like three attached “Zarya” engines, are not working, because of incompatible engine radiuses. So I had to tweak those and you can expect a lot of small changes in shape and forms of some rocket parts.

One small problem remains. If you leave most of the attachment space empty, this part of the rocket is starting to look like Swiss cheese. And such rockets don’t look like real ones during the flight. Because no one would leave such attachments exposed to outer space if they would exist in reality. Additionally, the large number of not filled slots adds a visual noise to the rocket. Surprisingly, they also considerably decrease the rendering performance.

So I made the decision to hide all connectors and slots for all spacecrafts except the case when the rocket is in the edit mode in the assembly shop. Implementing this change would require an enormous amount of work, but I found a way to partially automate it. So it is almost done now and it will open more space to rocket visual design in the future.

The view you are used to and it will remain in the rocket editing mode

How it would look elsewhere

The next problem I have received several complaints on is space debris. When a rocket's stage debris enters the atmosphere, the simulation speed can not be set over 10x even if your main spacecraft is already in orbit. Players have two options in this case: wait until debris will crash into the planet's surface, which can take several minutes. Or return back and manually delete all junk. Both options are bad, but I don’t want to just exclude all debris from the physics simulation. There are a lot of edge cases for this solution, and I also planned to make several gameplay mechanics related to this problem. In reality, most leftover parts burn up on re-entry. But the game has no thermodynamics right now and it is not easy to just add it.

So I introduced two working modes for all decouplers: “separator” and “decoupler”. The first one works as it was before. In the second mode the decoupler will stay attached to one of the connected parts, marked by an arrow on it. This should already reduce the amount of space junk. As a further “temporary” solution I’ve added a “self-destructor” part which will destroy itself and all connected parts after a specified amount of time after detachment from the main rocket. It is pretty light and requires only one slot, so if you are very annoyed by debris, you have a solution.

Here I immediately found a bug, that the effect of explosion in space stays fixed in one point instead of moving on the same orbit.

The third thing I have been asked more than several times was extending the tutorial. But this was already on my working list and I just increased its priority. Moreover, I’ve planned a lot more for the next update. New tools for the assembly shop, some improvements handling engine’s throttle, a lot of new rocket parts, the new planet and a bunch of tutorials and missions. I will tell you about all that in the next “work in progress” article.. Obviously, the next update will not be ready in September as I planned before, because I lost one and a half months while I couldn't work. But I hope it will be released somewhere in November and I will keep you updated on that.

Thank you very much for your support and see you soon.

Update v0.16.8 "The First Planet" is out of Beta!

Two weeks ago I've released "The First Planet" update into public beta. Thanks to the game community, I got great feedback and received a ton of bug reports during the beta. All the critical ones where successfully fixed and the game is now much more polished and stable.

Here is a quick summary of major changes in v0.16 version: Mercury, procedural texturing rework for Earth and Moon, rocket staging improvements, new payload fairings, contracts enhancement, new rocket parts and so many fixes as the game has ever seen.

Below are patch release notes and full release notes. Thank you for playing the game and helping to improve it!



[h2]Release notes for Patches v0.16.2 - v0.16.8[/h2]
[h3]Features:[/h3]
  • new solver for hyperbolic orbits, that can handle all edge cases and is much faster;
  • improved Earth's atmosphere colors, making it more physically accurate;
  • added Focus button to the map context menu for currently active spacecraft;
  • slightly increased a size of planet collision on the Solar system map;
  • added fuel depletion sound for engines;
  • added 9 new bodies (mostly transneptunian objects) to the Solar system map.

[h3]New rocket parts:[/h3]
  • "Clap" Longitudinal Decoupler;

[h3]Changes:[/h3]
  • stage tooltip will now use engines throttle in the calculations for active stage;
  • stage tooltip on an active stage will be updated when hovered;
  • rockets with broken orbits will not load after game restart;
  • improved perfomance of encounter search for spacecrafts;
  • imrpoved perfomance of high-value time warps.

[h3]Fixes:[/h3]

  • can not scroll camera to Makemake
  • [partial] lens flares could be seen through the planet
  • incorrect space context menu position when you select currently active spacecraft and rotate the camera;
  • rocket trigger crash multiple times when time warp enabled and player is in the control center;
  • missing some locale strings.
  • exception when opened control center launch window and selected rocket were removed before that;
  • rare exception when rocket is changing SOI in some strange conditions.
  • dark lines in the atmoshpere on a low sun angles and high altitudes;
  • rockets that are leaving body's SOI could accidenetely warp to their sattelites
  • Pluto's sattelites are not hoverable on the map;
  • Makemake has no mass;
  • splited decoupler receives incorrect positioning after decouple, if it was placed far from rocket origin.


[h2]Full release notes v0.16.8[/h2]
[h3]Features:[/h3]
  • added Mercury and reworked its textures on solar system map;
  • reworked Earth and Moon procedural texturing;
  • added ability to collapse and expand stages during rocket assembly and flight;
  • added approximate deltaV and TWR calculations for stages, that contains engines;
  • payload fairings rework: they are section based now and can be any length.
  • payload fairings are present in the rocket staging;
  • you can focus camera on surface objects and set them as a target;
  • added target markers for surface objects during the flight;
  • contracts with "land in distance" goal will now add a surface object marker, if it wasn't already added (via mods, for example);
  • contracts with "reach an orbit" goal will now add a target orbit that needs to be reached;
  • added camera exposure compensation settings for flight and map cameras;
  • added Venus heightmap to the game, this is a first step to actually adding Venus;
  • new solver for hyperbolic orbits, that can handle all edge cases and is much faster;
  • improved Earth's atmosphere colors, making it more physically accurate;
  • added Focus button to the map context menu for currently active spacecraft;
  • slightly increased a size of planet collision on the Solar system map;
  • added fuel depletion sound for engines;
  • added 9 new bodies (mostly transneptunian objects) to the Solar system map.

[h3]New rocket parts:[/h3]
  • Payload Fairing Base GO-1;
  • Payload Fairing Section GO-1 1.4m;
  • Payload Fairing Section GO-1 3.5m;
  • Payload Fairing Cap GO-1;
  • Payload Fairing Base GO-5;
  • Payload Fairing Section GO-5 2.1m;
  • Payload Fairing Section GO-5 5.25m;
  • Payload Fairing Cap GO-5;
  • Payload Fairing Adapter GO-1-5;
  • Payload Fairing Adapter GO-5-1;
  • Circular Extended Unit;
  • "Fluffy" Landing Strut;
  • Mini Decoupler;
  • "Clap" Longitudinal Decoupler.

[h3]New content:[/h3]
  • added reach "Molniya" orbit contract;
  • added reach "Tundra" orbit contract;
  • added land on Mercury contract;

[h3]Part changes:[/h3]
  • deprecated Payload Fairing 3x7

[h3]Changes:[/h3]
  • the process of destroying a part by dragging it to the parts panel has been improved;
  • improved rocket action group visuals;
  • spacecraft will no longer create a ton of new spacecrafts if it was destroyed not in main simulation;
  • added sounds for rocket stages UI;
  • some parts of the game engine were updated to the newer version, which will help to migrate to the new Unity version in the future.
  • stage tooltip will now use engines throttle in the calculations for active stage;
  • stage tooltip on an active stage will be updated when hovered;
  • rockets with broken orbits will not load after game restart;
  • improved perfomance of encounter search for spacecrafts;
  • imrpoved perfomance of high-value time warps.

[h3]Fixes:[/h3]
  • rocket receives incorrect center of mass and could loose control after decoupling parts in some cases;
  • if you remove maneuver in the middle of maneuvers chain, following manuvers can become invalid and just disappear, leaving orbit in the incorrect state;
  • visible seams on the surface of planets in some places;
  • [Control Center] sun light leaks into new buildings at summer;
  • sometimes separated parts are positioned incorrectly during rocket explosion;
  • [Assembly Shop] connection points are flickering;
  • splitted decoupler sometimes explode on deploy;
  • payload fairings explode on deploy without any reason;
  • forces not applied to the decoupled rocket from docking port;
  • context menu appears in the incorrect position when grounded spacecraft is selected;
  • contract button stays in hovered state when contract was canceled or completed and the new one was accepted;
  • game crashes, when the surface mod editor is loading and the left mouse button is pressed;
  • can not scroll camera to Makemake
  • [partial] lens flares could be seen through the planet
  • incorrect space context menu position when you select currently active spacecraft and rotate the camera;
  • rocket trigger crash multiple times when time warp enabled and player is in the control center;
  • missing some locale strings.
  • exception when opened control center launch window and selected rocket were removed before that;
  • rare exception when rocket is changing SOI in some strange conditions.
  • dark lines in the atmoshpere on a low sun angles and high altitudes;
  • rockets that are leaving body's SOI could accidenetely warp to their sattelites
  • Pluto's sattelites are not hoverable on the map;
  • Makemake has no mass;
  • splited decoupler receives incorrect positioning after decouple, if it was placed far from rocket origin.


Update v0.16.2 "The First Planet" Public Beta

This is the first update I decided to publish into the public beta branch first, because it has too many fixes and internal changes that could break something. It will stay there a week or two and will be released to the default branch once I will fix all issues found by players. You can find how to switch the game’s branch on Steam in the release notes section. Let's get started.

[h2]Mercury[/h2]
The closest planet to the Sun and the smallest planet in the Solar system now in the game!





[h2]Procedural texturing rework[/h2]
As I explained in the previous dev update, I have significantly improved the procedural texturing system and Earth and the Moon have been reworked and now use this new system for rendering. The only downside, is that it requires more VRAM because of 4x improved level of detail. I am planning to add a quality setting for planet texturing in the near future. Martian system procedural rework will come in the August update.

Finally what you see on the map will match to what you get during the flight

Planet's surface received much more details

Sometimes it produces slightly weird results, but this is a procedural approach, what can you do, eh

Moon was already good, but now it's simply great

[h2]Rocket Staging improvements[/h2]
You can expand and collapse stages now. Rocket parts will be grouped by type and resource group when the stage is collapsed.



For each stage that contains engines I’ve added a dV and max TWR calculation. You can set a reference body and altitude for it. It will also update the remaining deltaV and max TWR calculation for the active stage during the flight.



[h2]New payload fairings[/h2]
Payload fairings are section-based now, so you can basically launch a payload with any length. I’ve added two radiuses of farirings and adapters between them. Also I’ve added fairings to the rocket staging as a separate action, so you don’t need an additional decoupler for it.



[h2]Contracts enhancement[/h2]
“Land in distance” contracts will now add a surface object marker on the planet, if it was not added though the mods. You can also set a surface object as a target and get a marker (similar to nearby spacecraft markers), when you will be near your target.

“Reach an orbit” contracts will add a reference orbit you need to reach. Unfortunately you can’t set this orbit as a target for now, to get ascending/descending nodes. This change turned out to be huge, so I moved it to the next update.

[h2]New content and other improvements[/h2]
Three more rocket parts have been added to the game, In addition to the fairings, and three more contacts. Also you can find a new exposure compensation control on the camera modes panel. This will allow you to make a scene brighter or darker in cases when automatic exposure couldn’t handle it properly. Lastly, I’ve fixed an enormous amount of critical bugs in this update. Some of them lasted for a year and more and I can’t understand how the game even functioned in some cases.

I know, you are waiting a new parachute too, but it is crazy complicated process to make it. But it is coming sooner or later

That’s all for now, please let me know if you have any issues or will encounter any bugs.

[h2]Release notes v0.16.2: Public beta[/h2]
This build was deployed to beta-builds branch. To switch to this branch right click on the Rocket Science in your library, and click on Properties. Select the Betas tab, and then select the beta-builds branch. Once you see it, select it and click OK.

Note: if you want to switch back to default branch after this beta, you will need to manually clean %USERPROFILE%/AppData/LocalLow/Unity/unbeGames_HDYLIEM folder or the game will not start.

[h3]Features:[/h3]
  • added Mercury and reworked its textures on solar system map;
  • reworked Earth and Moon procedural texturing;
  • added ability to collapse and expand stages during rocket assembly and flight;
  • added approximate deltaV and TWR calculations for stages, that contains engines;
  • payload fairings rework: they are section based now and can be any length.
  • payload fairings are present in the rocket staging;
  • you can focus camera on surface objects and set them as a target;
  • added target markers for surface objects during the flight;
  • contracts with "land in distance" goal will now add a surface object marker, if it wasn't already added (via mods, for example);
  • contracts with "reach an orbit" goal will now add a target orbit that needs to be reached.
  • added camera exposure compensation settings for flight and map cameras;
  • added Venus heightmap to the game, this is a first step to actually adding Venus.

[h3]New rocket parts:[/h3]
  • Payload Fairing Base GO-1
  • Payload Fairing Section GO-1 1.4m
  • Payload Fairing Section GO-1 3.5m
  • Payload Fairing Cap GO-1
  • Payload Fairing Base GO-5
  • Payload Fairing Section GO-5 2.1m
  • Payload Fairing Section GO-5 5.25m
  • Payload Fairing Cap GO-5
  • Payload Fairing Adapter GO-1-5
  • Payload Fairing Adapter GO-5-1
  • Circular Extended Unit
  • "Fluffy" Landing Strut
  • Mini Decoupler

[h3]New content:[/h3]
  • added reach "Molniya" orbit contract;
  • added reach "Tundra" orbit contract;
  • added land on Mercury contract;

[h3]Part changes:[/h3]
  • deprecated Payload Fairing 3x7

[h3]Changes:[/h3]
  • the process of destroying a part by dragging it to the parts panel has been improved;
  • improved rocket action group visuals;
  • spacecraft will no longer create a ton of new spacecrafts if it was destroyed not in main simulation;
  • added sounds for rocket stages UI;
  • some parts of the game engine were updated to the newer version, which will help to migrate to the new Unity version in the future.

[h3]Fixes:[/h3]
  • rocket receives incorrect center of mass and could loose control after decoupling parts in some cases;
  • if you remove maneuver in the middle of maneuvers chain, following manuvers can become invalid and just disappear, leaving orbit in the incorrect state;
  • visible seams on the surface of planets in some places;
  • [Control Center] sun light leaks into new buildings at summer;
  • sometimes separated parts are positioned incorrectly during rocket explosion;
  • [Assembly Shop] connection points are flickering;
  • splitted decoupler sometimes explode on deploy;
  • payload fairings explode on deploy without any reason;
  • forces not applied to the decoupled rocket from docking port;
  • context menu appears in the incorrect position when grounded spacecraft is selected;
  • contract button stays in hovered state when contract was canceled or completed and the new one was accepted;
  • game crashes, when the surface mod editor is loading and the left mouse button is pressed.


Dev Update: Improving Procedural Texturing

Hello everyone!

Today I want to talk about a big improvement for “Rocket Science” in upcoming v0.16.0 update and show some progress I’ve made.

Since the release of the game I’ve tried to find a way to improve Earth’s surface texturing. It was based on procedural technique: I can set up and configure up to 32 material layers for the particular planet. For any given point of the rendered planet, the game selects four materials from the provided list, mixes and blends them together and then displays the resulting color on screen. Which four materials will be selected is basically determined by four curves: temperature, humidity, slope and height.

This is how it looks like in the game engine

Each curve represents a frequency of occurrence of this material at a given parameter value. Parameters for the surface are set by planet geometry (it is very easy to calculate slope and height for it) and two grayscale maps: temperature and humidity.

All you need to do is just find or generate temperature and humidity maps, then select 32 materials, then setup 4 frequency curves for each of them and finally you get a good procedural texturing! Sounds easy, right? Well, initially I thought that too, but now I will tell you why I was wrong.

Firstly, how do you even select materials? I am not an artist nor a scientist. I have a very vague idea what colors would be right for Earth (even looking at the accurate surface color map I have). I’ve tried doing it based on eyeballing and gut feelings and the result was pretty poor.

Secondly, I’ve spent several weeks in 2020 searching for good and complete temperature and humidity maps for Earth, processing raw scientific data, which was spreaded between a hundred NASA websites (why the hell it can’t be in one place?). All I got were 8192x4096 temperature map and 4096x2048 precipitation map, which has extremely low resolution for the real planet scale. I am pretty sure, that higher resolution data exists, but I am too dumb to find it.

An example of color map for part of the world. Generated in 2020

The last and the worst thing is how to construct frequency curves for each material. You can, again, eyeball the result, but even a slight change of one curve in one material affects the frequency of appearance of all others! In the case of a small number of materials this is manageable. For example, the Moon has only 8 different materials and it looks okay, because it has a pretty narrow color palette. But 32 colors for Earth is a bare minimum.

Basically it was impossible to do it manually and get good results. That’s why adding a new planet was a great challenge. So, I needed to find a way to somehow automate this process. I thought about this problem in the shower, on a walk, before going to bed every day for several months. Until an idea finally came to me in April. It arose from how the Moon materials were praised by players. That’s funny, because I didn’t find a temperature map for the Moon. Also it has no water, so the humidity map can’t even exist. So I used a color map converted to grayscale and just random noise instead. And results were better that for Earth. The conclusion to this story was that you don’t need scientific data to make something look good.

So the idea was pretty simple and very hard at the same time:
  • get a surface color map (that exists for most planets in a huge resolutions);
  • generate a color palette by selecting 32 most common colors (there are a lot of ways, how it can be done, but I will talk about it some other time);

    The first colors of Earth's palette

  • generate a grayscale frequency map for each selected color from color map, using some color distance metric;

    Frequency map for the first color from the palette

  • use this map as a mask, apply it to the low resolution temperature/humidity and height maps and then generate a frequency curves for each color;

    Temperature frequency curves for each color in the palette

  • get a range with highest values from temperature and humidity curves and then use them to encode a high resolution temperature and humidity map from a color map;
  • grab all the data and apply it as a configuration to the planet.


And this is basically it. All this process is parameterized too and I spent several days tweaking it, but just in two days after the algorithm was implemented, I’ve got much better results for Earth than before.

This colors is actually in the game

This is how it would look like

Before

After. It could be improved even more, but for this stage of the development it is enough

The great thing about this algorithm is that it is universal and can be used for any planet. I don’t know if the new planets will be included in the next update (it is a lot of work even with this huge time saver), but there is a pretty high chance that I will finish all inner planets and some asteroids this year.

Thank you for your attention and see you in the v0.16.0 update!