Volo Airsport cover
Volo Airsport screenshot
Linux PC Mac Steam
Genre: Racing, Simulator, Sport, Indie

Volo Airsport

The Ramjet Anvil Show - Episode 1: Multiplayer & Netcode



Hey Pilots! We're doing something new: It's the Ramjet Anvil Show.

This bi-weekly video series is where we keep you up to date on Volo Airsport, it's development, and the ideas behind all of it. Got questions? Leave them in a comment, and we'll get to them next episode.

Check out Episode 1 on Youtube!

What’s happening: August 2016

Dear Pilots,

Last month we've been busy working on multiplayer and rendering performance. This blog post is all about the challenges we encountered so far while writing Volo's netcode.

Martijn has been busy finding and fixing what seemed like the most terrifying bug in the history of Volo. Right after we ported the Pilot code to support multiplayer a super annoying bug pops up that made the whole simulation unstable under low frame rates. And we just couldn't find the source of this bug. So we went from blaming Unity, to blaming ourselves, to blaming Unity to almost settling on 'Okay, we have to make the performance of the game better otherwise no one can play it', to 'Oh, it's just this stupid little line in our code that breaks everything'.

Right now, we're both working on the actual code that syncs the pilot between peers. Which means we have to try to make Unity behave like it should respect two separate physics worlds (one on the client and the other on the server) and try to reconcile them. Unfortunately, Unity doesn't really have any tools for doing that. In fact the whole physics engine basically assumes there is only one physics world, like you're building a singleplayer game. So, we have to work around that. And if the workarounds turn out not result in a satisfying playing experience we have to use another physics engine that does respect multiplayer environments.

This is definitely one of those "if only I could go back in time to warn my past self about this" scenarios.

Let me explain in more detail why Unity is ill-suited for fast-paced multiplayer physics-heavy games and why another physics-heavy game you might have heard of called Rocket League switched to Bullet physics for this exact reason.

The way Unity physics work is that time always moves forward and time only passes when real time passes. The consequence is that we cannot run the physics engine to predict anything. Prediction and correction are important parts of multiplayer code where we extrapolate where Player A is based on the time that it took to send the information from Player A to Player B. This latency (the time between sending and receiving) is the duration you need to use to extrapolate from to visualize on Player B's screen where Player A is now. If we would just render Player A on the exact spot Player A told us that he was we would effectively be rendering him in the past, resulting in a poor multiplayer experience.

So, if extrapolation is at the heart of a good multiplayer experience how do we fix that? There's two ways of doing this:

Create our own limited physics extrapolation engine that effectively tries to mimick what Unity's physics do, but giving us the power to rewind time and simulate in non-realtime. The resulting code is usually hacky, and almost works in some circumstances but not in others. Flying straight forward works fine, but barrel rolling doesn't for example. Collisions are also a nightmare. You can imagine that making our own Volo specific extrapolation engine is complex and time consuming especially since each new use-case for Volo's physics model (barrel-rolling, parachutes, you name it) has to be modeled in this extrapolation engine as well. It's certainly not impossible to do this but the result of this approach will definitely be that Volo multiplayer is not gonna be as awesome as Volo singleplayer simply because some things are just too hard or time-consuming to do. We would have to make the Pilot physics simpler, take out barrel-rolling, significantly reduce the complexity of the parachutes and probably limit the Pilot/Parachute user customization that we had in mind.

Another solution to this problem is to do the same as the Rocket League people did: switch to a physics engine you have more control over, like Bullet Physics. Once you use Bullet physics you get your extrapolation engine for free, simply because Bullet doesn't have a notion of real time. It just runs whenever you want it to run, for example: you can simulate 5 seconds of physics as fast as your processor can crunch the numbers (say, 1 millisecond realtime).

The hard part of course is that we would need to port the entire Pilot and Parachute simulation to this new physics engine, and become responsible for maintaining this physics engine code during the game's lifespan. You can imagine that this is a lot of work, especially for a 2-person team with quite enough on their plates already.

Whichever way it goes, there are still a few core battles to fight before Pilot is ready to fly together with friends.

Furthermore, this month we open sourced our master server solution called Padrone. It's a unique master server solution that let's people on different platforms (itch.io, Steam etc.) play games with each other. Normally, games would just require you to use Steam for multiplayer, or would limit their multiplayer experience to the platform that it runs on. We think we can do better.

That's it for this month! Watch out for next month's blog post for more info on multiplayer and why the new Unity 5.4 release is crucial for improving Volo's performance, both in VR and in general.

Blue skies!

Frank

 

What’s Happening: July 2016

Hello Pilots,

Here's a short update on what we're working on:

Parachutes



Martijn's been busy adding parachutes to the game and it's beginning to look quite awesome. Check out this video he made:

https://twitter.com/m_zandvliet/status/743100432222978048

One of the most interesting features of these parachutes is that they're completely customizable. You can literaly change any aspect of it. By default we will ship three parachutes with the game:


  • an easy parachute, one that makes it relatively hard to break your legs.
  • an intermediate parachute, one that makes it not so hard to break your legs and is more interesting to fly with.
  • an expert parachute, for everyone who knows what to do.


But it doesn't stop there. You can go and make your own parachute and share it with the community.

All this stuff is still work in progress though and we'll be incrementally improving this feature just as we're doing with the rest of the game.

Multiplayer



I've been working mostly on the multiplayer technology which consists of two parts:

Unity communication layer

The first part is the communication layer that acts as intermediate between Unity and Lidgren (the networking library we're using). This layer is pretty much finished and we're now translating all the existing concepts (the Pilot, the Wind turbines, the Whisps/Ball buddies) to a multiplayer context.

To simplify our code we decided that all games, even singleplayer, will be multiplayer games. The way this works is: when starting in singleplayer mode the game will silently start a server that other players won't be able to see and lets exactly one player (you) join it. This significantly reduced the complexity of our code since we don't need to distinguish between singleplayer and multiplayer games anymore.

The Master Server

The second part is the Master Server that tracks all live servers and facilitates hosting/joining of games.

For the master server the most important bit was to get all players from different platforms (Steam, Itch, Oculus) to play together and I'm happy to say that this already works quite well.

The master server, if it works well, you won't notice it exists. The game requests a list of hosts and shows them to you, allowing you to select and join one.

Performance optimizations



We're also working hard on getting better performance on the HTC Vive and Oculus Rift. We're actively profiling our graphics code and are trying to identify shaders/scripts that somehow suck the performance out of the game when playing in VR-mode.

ETA



All of this work is ongoing. I hope we can release a network test version of the game real soon. The parachute and VR update will probably arrive a bit later.

Blue skies to all!

Frank

Volo Airsport v3.6 Released


Check out the trailer!

We just dropped a big new update! Some highlights are:

- VR support for Oculus Rift and HTC Vive (Gamepad required)
- Vastly improved graphics: grass, terrain, lighting and atmospherics.
- Improved (and configurable) flight assists for easier flying
- Linux 32-bit and 64-bit support

Autumn Sale Time!

Volo is currently on sale at 33% off! Go get some training in before we drop parachutes, multiplayer and other cool features!

Buy Volo Airsport on Steam

Oculus Runtime 0.8 Build Released

It's high time to bring the Oculus build up to date, as the previous on was no longer able to run on new Oculus Runtimes. If you've been itching to fly v3.5 in VR, now's your chance!



Read the full post on the Volo Airsport Development Blog

As always, let us know what you think about this new release! Leave a comment here, or better yet: discuss on the forums!

What's Happening 6: Multiplayer Progress

Right after we released v3.5 we moved on to the last big subsystem we still have to build: multiplayer netcode. We don’t have anything playable for you yet, but we’ve done a huge amount of work and I’m going to tell you all about it.



Read the full post on the Volo Airsport Development Blog

As always, let us know what you think about this new release! Leave a comment here, or better yet: discuss on the forums!

Volo Airsport v3.5 Released

Hello pilots!

It took bloody forever, but here we are! v3.5 is finally out, you get to play it, and we get to move on to multiplayer.



Lots has changed, lots has stayed the same. For all the details, check out the new featurette video.

Major changes:

  • Engine upgrade to Unity 5
  • Linux support
  • Physically based shading
  • New, more stylized terrain shading
  • Real-time day/night and weather cycles
  • Long range shadows
  • Completely revamped sound effects
  • Significant performance optimizations
  • More stability, more polish
  • New logo art


As always, let us know what you think about this new release! Leave a comment here, or better yet: discuss on the forums!

Sale & Quick Update

Hey folks!



First off, Volo is currently on sale at 20% off during the Steam summer sale. This is a great time to get flying if you've had the game on your wishlist for a while, or if you've got a buddy you know would love it. Go get it!

Second, here's your quick reminder to check out the near-final version of v3.5 on the Test branch. We've got a couple of small things left to tidy up, but the windows mac and linux distributions are almost ready for prime time.

New:
- Completely revamped Graphics
- Completely new Sound Design
- Day/Night Cycle
- Dynamic Weather
- Significant performance improvements
- Lots of other things

Blues skies!

What's Happening 5

This past week we made good progress on the Unity 5 upgrade, dove into the details of building mod support, and err.. ran into some health & safety warnings.



Read the full post on the Volo Airsport Development Blog