You can play Volo Airsport right now! Get it through our own website, the Humble Store, or Steam.
Last week we continued work on the architecture rewrite and started upgrading to the newly released Unity 5.
Here’s what Unity 5 did to Pilot’s flying ability:
Not very nice, is it? Read on to find out what all that was about!
This new version of Unity comes with a major upgrade of the PhysX engine; the code responsible for a large part of Volo’s physics. It’s been rewritten from the ground up, and lots of things have changed, including how the joints work.
Pilot is built out of individual rigidbodies (the capsule-shaped limb parts), with ConfigurableJoints keeping them together and exerting motor force. Apparently the way you’re supposed to work with them changed quite a bit, and so our previous configuration for them caused Pilot’s muscle to go completely limp.
I spent the last week trying all kinds of configurations. I even thought some features were broken and attempted to write my own replacement for them. One problem was that all the dampening of the motors was gone, and there was thus no friction in the muscles. Even when Pilot was supposed to be holding perfectly still, the limbs would just keep flopping around unable to lose kinetic energy.
During these sessions I’ve seen Pilot spasm, explode, oscillate uncontrollably, bend over backwards, fold in on himself, and do other bizarre moves.
Good news, I think I fixed it! I have no clue how, though.
I must have messed with all the parameters to no avail, but just before I started writing this post I suddenly got motor dampening to work. My best guess is that ConfigurableJoint has some hidden settings that were broken during the Unity 5 import process, and which then sneakily got overwritten while I made some changes.
Anyway, I’ll spend the rest of the week tuning Pilot’s muscles to resemble the v3.4 flight dynamics. I could be wrong, but I don’t foresee any game-breaking issues in the physics department anymore.
Unity 5 has also completely overhauled it’s shading pipeline. Previously we were using Marmoset Skyshop shaders for physically-based lighting, but now Unity does it out of the box. The plan is to throw out the Skyshop shaders and work with the built-in stuff. We’ll see how it goes.
The most broken thing right now are the Terrain shaders from the Relief Terrain Pack plugin we’re using. The author has made them compatible with Unity 5 though, so I think I’ll just need to change some settings somewhere.
While I’m working on the PhysX upgrade, Frank is continuing work on the architecture changes.
It’s looking fantastic so far. We have a bunch of i’s left to dot, but we’ve achieved most of what we set out to do: make it all more flexible. All the systems are now nicely decoupled, making them far more reusable and testable.
We’re rebuilding all the v3.4 functionality using the new systems, and that’s nearly done.
I’m making slow but steady progress on our custom terrain engine. I don’t have too much to show yet (it’s still very ugly and broken), but at least I know what I want to make now.
I also don’t want to promise an new terrain engine is on the way without knowing quite how feasible it is yet. Get your hopes up, but don’t get your hopes up, if you know what I mean. More later!
Michael started replicating the old wingsuit sound effects I made with his own fancy new sounds. We’ll have collision sounds this time around, too. Also, a bunch of new music.
With the architecture changes nearing completion, the Unity 5 upgrade working out, and Michael’s audio work in place, we can start making a new release.
The only immediately new thing you’ll notice will be the new audio, some performance improvements, and smoother transitions between game states. Under the hood though, it’s all much more polished and ready for new features.
Oh yes, features! We really can’t wait to start working on new features again.
(Sorry for the lack of eye and ear candy this time around. This post was already late, and I’d rather get it out now than spend time making it pretty. Juicy stuff soon, promise!)