This development updates includes both the changes for the quickfix update 1.0.5 and that of our newly released 1.0.6 update. These updates focus on fixing bugs, streamlining the experience and improving the performance of the game.
- Added Linux X-Lite profile.
- Re-ordered the building blocks for The Drawing Board.
- Removed several frequent memory allocations to trigger the garbage collector less often.
- Fixed issue where it wasn’t possible to arm after selecting a spawn point in free flight.
- Fixed issue with the music player always being visible during flight.
- Fixed issue with resuming from the in-game options panel where the flight controls were already active again while there was still a popup being shown.
- Added festivity props to all levels for Halloween and Christmas.
- Added game option to change input sampling frequency. This can be used to gain additional performance at the cost of less samples being taken per second.
- Many multiplayer code optimisations to minimise the occurrence of frame stutters. This reduces the impact of players joining the room while in-flight.
- Fixed issue with Taranis QX7 and variants where it was not possible to assign game actions to switches any more.
- When selecting the ‘Default’ button in the Flight Controller Settings menu, the preset-value will also jump to the ‘Default’ option.
- Added application-focus check during the ‘arming’ process. This prevents the drone from arming when Liftoff is not the current active window.
- Fixed several game options that were locked in multiplayer when they weren’t enforced by the room settings.
- Cleaned up project to remove clutter from the log files.
- Minor bugfixes
Input sampling & multiplayer optimisations
Optimisation is a big post-launch focus for us, with 1.0.6 we further improve Liftoff to run better and smoother for everyone.
With the release of Liftoff V1, a lot of content and features were added. We had to figure out how to keep it all manageable for the computer systems we designed Liftoff for in the first place. Starting with many new parts and skins added, we trimmed down loading times and memory load by only loading the content that is needed at that time. This is of course the low-hanging fruit in terms of optimisations.
Going further in this direction, we went ahead and had another look at the different systems running at the core of Liftoff to see how we could optimise them to give a smoother FPV experience. While we consider our multiplayer experience to be one of the smoothest available among FPV simulators, we took note of the community feedback reporting some issues. Specifically, with multiplayer Freeflight and Infinite Race, it’s annoying if a player joins the room while you’re setting a new best lap record and suddenly experience a stutter in framerate because another player decides to join your game. We tackled multiple sources in the code that contributed to this stutter. By far the biggest contributer to the stutter was loading in all of the resources to display the newly joined player’s drone at the very last moment. This caused a big spike in frametimes because these resources need to be loaded from your disk. We mitigated this by loading in these resources in the background from the moment the player joins the room. When the new player joins you in flight, most if not all resources will be ready to quickly display the new player’s drone.
The other big optimisation comes in the form of a game option. Liftoff was designed for mid-range gaming systems available in 2015. Still, we notice that many of the Liftoff players are running this on a system that does not meet our original intended requirements. Our input system runs along with the physics system to provide the pilot with the latest input value directly from the remote. However, because Liftoff’s physics system runs at 500Hz, this input sampling can take up quite a bit of CPU processing time. Especially on older or less-powerful hardware, this ultimately has an impact on the framerate too. With this Liftoff update, you have the option to decouple the input sampling frequency from the physics system, and let it sample at the regular graphics framerate. This input sampling option is known as the ‘performance’ setting. What does it mean for you as an FPV pilot if you pick this setting? It means that, your remote is polled less frequently and becomes framerate dependent. The higher your framerate, the more input samples are taken. The other value you can pick is ‘quality’ and is essentially the system as it was from before this update. With the ‘quality’ option, your input is polled every physics update (thus at a fixed rate every second), giving you the absolute latest value from your remote to feed into the flight controller of your quad.