First of all, this is not rocket science. This is about controlling the disc block’s output of its lifting force and making a softer landing when all disc blocks on an aircraft is being turned off.
Results: (a little bit concerned if the 200% playback speed will tell the difference. )
One of the most challenging aspects of make this game is dynamically control the physics objects rather than a prebaked animation applied on them. This way the object will keep full physics interaction resulting in many interesting situations, like some abstracted robotics. Most of objects in this game are dynamically controlled. For contrast, one of the exceptions is the base. When it flies off it just follows a path, pushing everything away in its path which is determined when given a destination.
When I try to land a cargo aircraft on a ground structure to lift it up for transportation purposes, the cargo aircraft will more look like crashing instead of landing. I found this annoying because you will likely miss the target and have to try again. What happened is when a disc is off, it cuts its lift force like this:
The lift force begins dropping quickly and when it is below a certain point that cannot counter the gravity, the unit will just strike to the ground. Anyway, this is better than suddenly dropping to zero because at least a little gravity is reduced during the process. I have been wondering what if I reduce the lift to somewhere relative to that certain point rather than doing this on a 100% scale. So I can have more precise control dealing with the gravity.
And I have already got the numbers. From the info in this image, we can tell the lifting is being 50% used (4/8). So the idea would be if the lift is at 50% the structure will feel like in orbit, staying at the altitude without gravity.
In order to make it descend first, I should reduce the lift below this point for a small amount of time. The gravity wins over the lift during this period and the descent will begin.
Then in order to remain a reasonable descending speed, I should increase the lift back close to the 50% point countering the gravity. With damping considered in addition, the unit should just be able to smoothly maintain at a consistent speed. (actually in reality it tends to slow down)
Finally, I drop the lift as usual since the disc(s) are eventually to be turned off.
So I came up with something like this: when a disc is being shut down, it will modulate its lift as follows but have that load level % calculated first.
The good thing about doing in this way is its openness: it also works like it was when in a situation only some of all discs are being turned off. In that case, the ship will change its weight balance. (well I imagine the player has a good reason to do that)
Fortunately this is not as hard as the translational controller, the essential component of disc-driven flying units. I had done it almost a year ago when I was working on this project part-time.