It’s been quite some time since the last update. I am happy to say that I have made several crucial improvements to the engine in this time, and a new version release (v0.1.4 — by far the most stable) is imminent. I will briefly discuss some of the more exciting updates in this post.
Most of my latest code has been dealing with the stability of the collision sub-system. Previous versions have had a very rudimentary terrain collision detection that operates only on the landing gear. Worse still, the existing system used terrain normals which were in the wrong transformation, resulting in unpredictable corrective impulses. This usually means being randomly accelerated into the ground. Not good.
The new collision system currently uses three individual collision checks. Firstly, high velocity collisions must be checked so that objects do not phase through one another. This works by casting a ray along the velocity vector for the duration of the next time step. If this intersects with the terrain, an impulse is computed to prevent penetration.
Next, a Bullet collision mesh is tested against the terrain mesh to search for spacecraft body collisions. If any are detected, the appropriate corrections are computed. Finally, the existing landing gear spring-dampening system is used to allow the player to land and move along the ground. But this time the normals are right and you don’t get pushed into the ground.
The next feature has to do with providing predictable locations on randomly generated planets. There was previously no way to ensure that a certain location on the planet would be guaranteed to have a good place to land. With the new “Bases” feature, locations with predictable terrain can be generated for any planet. In the pictures below, a crater with a bottom at 400 meters is generated to provide a landing zone in an otherwise rough location. These are the only planetary terrain features currently supported, but others are in the works.
Along with this, I have begun working on a “decal” sub-system. This will provide ground textures for landing strips and roads that will be important in future releases of the game. These can be applied to arbitrary terrain, but will frequently be coupled with Base locations.
There have also been many bug fixes along the way that fix all aspects of the simulation. There are still some quirks to the engine, but I hope you will find that the latest version is an order of magnitude more stable than previous releases. But as always, please report any bugs at the BitBucket issues link.
As critical bugs are resolved one by one, progress seems to be picking up again. Although I won’t make any promises, I anticipate launching v0.1.4 within the next few weeks. I think that v0.2.0 will follow soon after that since I believe many of the latest features are worthy of a minor version increment. Stay tuned!