Sky Dolly v0.16 - Free Flight Recorder & Replay, Location Management

One of the nicest rewards as a software engineer is when you see your users actually enjoy the application you are developing.

Like Luna who demonstrates the usage of Sky Dolly in the following video, shared here with kind permission of the author:

The video illustrates:

  • The simple way to record a flight, including automatic persistence in the logbook
  • The intuitive way to seek back and forth in the timeline, also at any time during replay (without first having to press “stop” or any other button)
  • The correct deployment of e.g. the flaps and starting / stopping the engine at any time during seek

The usage of Sky Dolly starts at the 2:06 timemark where Luna starts recording a roughly six minute flight. Recording is stopped at the 8:18 timemark which also immediatelly persists the flight in the logbook (searchable by date, engine type, departure & arrival and other keywords).

But the feature that gets the most exciting reaction is the smooth seeking on the entire timeline (timemark 9:58) . Again, at any point during replay, whether paused or stopped. Quote:

“Look! How smooth… it is insane! How does that… how can they do that?”

Well, I can give the answer to this question: Sky Dolly uses a simple binary search, extended to an interval search (instead of a simple value), where the time interval is given by the previous and next timestamp of the corresponding sample points.

A binary search essentially always halfes the search space, resulting in a so-called O(log n) runtime behaviour, where n is the number of sample points and the logarithm is base 2. Example: when n = 1024 (number of sample points) the binary search finds the proper interval in log(1024) = 10 seach steps in the worst case (instead of 1024 steps in the worst case for linear search).

And Sky Dolly doesn’t stop there: once the proper time interval has been found the actual position of the aircraft is interpolated with cubic spline interpolation - for this extra smoothness.

All this is even more remarkable considering that Sky Dolly does only sample data when the values actually change. This saves both disk space and CPU usage, as - by implication - Sky Dolly only sends requests to MSFS during replay as needed (again, only the data that actually changes at any given point in time).

Take for example the extension of the flaps at the 10:20 timemark: the last point in time when the position of the flaps have been recorded was probably shortly after take-off. And yet Sky Dolly is able to properly detect the exact point in time when they are extended again. The same is true for starting the engine “from cold and dark”, and stopping it again at the end of the replay at the 11:36 timemark.

Of course all of this is basic software engineering, e.g. you’ll learn about binary search in the first or second semester of any decent software engineering studies (for splines you may want to attent some computer graphics lectures perhaps ;)). The trick is that the users don’t even realise the complexity behind all this: the functionality of any software should be presented in a seamless and intuitive way, without any usability hurdles or artificial limitations.

That is not to say that Sky Dolly is perfect just yet: there is always a walk between new functionality and improving existing usability - and available time ;). But this kind of feedback as just seen in the above video is really what keeps me driving here - so thanks for that, and thanks to the entire community for providing constructive feedback in the past and the future!

Happy flying!

P.S. Just a small correction with respect to the 12:23 timemark: it’s just one developer :wink:

1 Like

For Flight Planners - GPX Import

Did you know that you can directly import flight plans from Little Navmap into Sky Dolly for replay? Here is how…

Import & Export Formats

Sky Dolly supports a whole range of import and export formats, such as:

  • CSV: The comma-separated value (CSV) file format is a simple text format supported by most spreadsheet editors, e.g. for data analysis and visualisation with 2D charts. It is also exported by e.g. flightradar24.com
  • GPX: The GPS Exchange format is a light-weight, XML based format for the exchange of waypoints, routes and recorded GPS paths
  • IGC: A format defined by the International Gliding Commission (IGC), mostly used by flight recorders in gliders
  • JSON: The JavaScript Object Notation is used to describe data (“objects”) in a text-based format. One such specification is the GeoJSON format which describes simple geographic features.
  • KML: The Keyhole Markup Language is most prominently supported by Google Earth and suitable for flight path visualisations

Importing Flight Plans from Little Navmap

Flight plans generated in Little Navmap can be exported in the GPX format. So if we have a flight plan such as:

we can then export this flight plan into a GPX file:

As outlined above the GPX format is able to essentially store three distinct items:

  • Waypoints: individual locations/waypoints
  • Routes: the (planned route how to get from the start to the end waypoint
  • Tracks: the actual recorded GPS path

Typically a flight plan does not contain a recorded track just yet (although Little Navmap is also able to export track data), which is the data that is normally imported into Sky Dolly for replay. As expected Little Navmap exports the flight plan as a route instead. This is what an extract of such an exported GPX flight plan may look like:

  <rte>
    <name>LSZC to LSMM Flight Plan</name>
    <desc>Buochs (LSZC) to Militärflugplatz Meiringen (LSMM) at 10000 ft, VFR</desc>
    <rtept lon="8.396945" lat="46.974445">
      <ele>443.484</ele>
      <name>LSZC</name>
      <desc>Airport</desc>
    </rtept>
    ...
    <rtept lon="8.275909" lat="46.791599">
      <ele>3048</ele>
      <name>WP4</name>
      <desc>User</desc>
    </rtept>
    <rtept lon="8.108334" lat="46.741665">
      <ele>576.377</ele>
      <name>LSMM</name>
      <desc>Airport</desc>
    </rtept>
  </rte>

Import a Route (Instead of a Track)

Luckily the Sky Dolly GPX import plugin actually allows to select the data set - one of waypoint, route or track - to be imported:

By changing the Position from the default Track (<trk>) to Route (<rte>) we are able to re-map the flight plan to actual position data of the aircraft to be imported. Of course the less waypoints there are in the flight plan the coarser the flight path reconstruction will be, and the flight reconstruction - specifically flaps settings, attitude and landing lights etc. - is still in its infancy, but Sky Dolly faithfully interpolates the flight path smoothly (as usual with cubic spline interpolation) between those track points (= aircraft position points in Sky Dolly).

Reconstructing the Flight

Typically GPX waypoints do not contain timestamp information (but as is the case with Little Navmap they may contain altitude data). This is where the default altitude and velocity options come into play: Sky Dolly uses this information to calculate the required time it takes to fly from one track point to the next, given their geodesic distance, and places the aircraft at a constant altitude (if needed).

The Waypoints can be left as Route (<rte>): the flight plan will of course also be imported into Sky Dolly, as can then be seen in the Flight (key F) dialog, in the Flight Plan tab:

And there you go: you can replay a flight plan created in Little Navmap in MSFS:

Credits:

Happy flying!

Hi @Steeler2340 - having an issue with SkyDolly (liking it so far btw) with the Fenix - most noteably gear doesn’t go up/down in the replay as it should - the sim variables window shows the changes, but not visible in the sim. I can manually flip the gear level, and that works, bot not ideal when trying to make videos obviously :grin:

Seems to be the same issue for flaps - I can manually change them and the variables show the right values, but again, not reflected in the sim.

Any advice, or something that needs to be fixed?

Thanks

2 Likes

Yes, I noticed the same :wink: But this is like with quite a number of other 3rd-party aircraft (most notably also with the FWB A320neo) that completely re-implement certain systems: it is my understanding that the Fenix A320 has a custom implementation of the hydraulic system (parts of the aircraft are even simulated in the accompanying external application: the flight model, and perhaps also including the hydraulic system).

Long story short: those aircraft use their own „local variables“ and simulation logic to control the throttle/engine, gears, flaps (both directly related to the hydraulic system) and what not.

In other words: those systems do not react to the so-called „simulation variables“ that are accessible („readable“, most also „writeable“) via the official SimConnect API.

However I do have an idea how to still make the aircraft react to the gear/flaps etc. up/down/position state changes, but whether that will actually work I will only know once implemented.

The fact that the Fenix A320 at least reports the corresponding simulation variables (while recording) is surprising - in a positive way - and would help in the solution that I have in mind.

2 Likes

Thanks for your quick reply, and hopefully something you can resolve in future. I like to record full flights and make timelapse videos of them, so gear down doesn’t look great at 39,000ft!

1 Like

For Plane Spotters - KML Import

Keyhole Markup Language (KML)

Sky Dolly supports KML import from flightaware.com already since v0.8.5. A detailed description about how to download free KML tracks from flightaware.com can be found earlier in this thread.

In fact, in the meantime Sky Dolly gained the ability to import the following KML flavours:

In fact, the later allows to import any KML file that has a “track” in it. However keep in mind that KML is actually not meant to be a GPS track exchange format: it is mainly designed for visualisation purposes only (most famously in Google Earth). Other formats such as GPX or IGC (popular for flight recorders in gliders mostly) are more suited to exchange GPS tracks between applications (both can be imported into Sky Dolly).

Visualising Commercial Traffic

However KML is still a very popular format among flight tracker services such as the aforementioned flightaware.com and flightradar24.com. Here is how to import those KML files into Sky Dolly:

  • Choose File | Import | KML
  • Choose the format, one of
    • FlightAware
    • FlightRadar24
    • Generic KML with track data
  • Confirm with OK

That’s it!

The flight becomes immeditatelly ready for replay in the Flight Simulator (because why would you expect otherwise?). It is also automatically persisted in the logbook.

But Sky Dolly does more: it automatically calculates pitch, bank and heading angles (based on the imported track data), adds “flight events” such as gear/flaps up/down (“flight augmentation”) and also lets you import the track (aircraft) to an existing (“formation”) flight.

Happy flying!

Sky Dolly v0.12 - Introducing Locations

Sky Dolly v0.12 has just been released, read the announcement.

This release brings the software architecture a huge step towards „the final picture“, by also implementing the modules - so far the Logbook and the Formation modules - as plugins.

One feature which was ever so obvious was on my mind from the beginning: „teleportation“ or „get to a place, pronto“. But I wanted to do it right, with the proper plugin architecture in place. And so, finally…

Locations

This new module lets you capture, manage and teleport to locations. Each location may have additional attributes such as category, country, identifier and description.

Santos Dumont (SBRJ) Approach

Sky Dolly comes with a set of default („system“) locations, among them a challenging approach to Santos Dumont, Rio de Janeiro, based on real-world flight Azul Brazilian Airlines 4205 on July 25 2022.

Simply:

  • Select the Locations module
  • Double-click on the desired location ID (or push the Teleport button

and you are immediately (give or take your internet download speed / cache settings) at the desired location!

Here is some footage that I shot earlier this year of the approach to Santos Dumont:

Happy flying!

1 Like

Thanks for making this awesome tool available to the flightsim community!

1 Like

For Architects - Plugins

The following explains some “technical background” of the development of Sky Dolly. It may also be interesting for those who want to know how to tweak the installation for minimal installation size.

Plugin Architecture

Since Sky Dolly v0.12 also the so-called modules are implemented as plugins. Modules provide the major functionality, such as the logbook, the formation recording / flying and newly also the locations.

A “plugin” is a set of functionality that is completely optional at runtime: it extends the base functionality of the given application if present, but otherwise can be completely removed. Where “present” means that the plugin (typically a “dynamically loaded library”, DLL) is located in some well-known location, a directly typically called the “plugin directory” (or directories).

Technically speaking: the plugin implements some well-defined interface - the “contract” between the application and the plugin, so to speak. The contract defines the expected input and output (result or functional behaviour in general).

One such example is the simple export interface of Sky Dolly, which defines exactly one method to fullfil (implement) for each export plugin.

Once a plugin faithfully implements such an interface it can be loaded at any time during runtime - on demand. As opposed at application load time, where a missing DLL typically prevents the application from loading.

Efficient Memory Management

This implies that - since a plugin is completely optional - that it can also be unloaded after use. And this is exactly what Sky Dolly does: not only are import / export plugins unloaded after use, but now (since Sky Dolly v0.12) also the modules.

Especially in the “normal (non-minimised)” UI mode this leads to another measurable reduction in RAM usage (*):

Whereas the previous v0.11 was still using 98% of RAM when launched in “normal UI” mode (compared with the reference v0.10 with 100% relative RAM usage) the current v0.12 is now only using 77% of RAM (again, relative to the reference v0.10 usage). Or almost a quarter less than the v0.10!

The same figures in absolute numbers:

(*) All measurements were made with an empty logbook, in order to make them better comparable between each other (which leads to even slightly better numbers than posted in a previous post above). The RAM usage was simply measured with the Windows task manager multiple times.

Architectural Benefits

Not only can a plugin architecture lead to less RAM usage (when plugins are unloaded after use, that is), but is also leads to a better software design (“architecture”). The functional parts are strictly hierarchical - and hierarchy is good when it comes to software design, as “mutual dependencies” (“A calls B and B calls A”) are prevented.

In fact, especially with a plugin architecture such “mutual dependencies” are “physically impossible”: an application would not even “link” when an attempt from the main application was made to directly call a function implemented in a plugin (or generally speaking: to call “higher level functionality” from a lower level).

Or simply put: “Spaghetti code” is simply not possible.

Tweaking the installation

As plugins are optional by definition one can also remove them from the corresponding plugin directories. Don’t need that import plugin? Delete it! No need for the new location module? Remove it!

Not only does this regain some storage space, but may also improve the user experience itself (by not providing functionality in the user interface that is never needed).

Sky Dolly stores its own plugins in a subdirectory called Plugins. The plugins are further organised into the following subdirectories therein:

  • Connect - yes, even the connection with the flight simulator (currently: MSFS) is implemented as a plugin
  • Export - export plugins (CSV, GPX, IGC, JSON, KML)
  • Import - import plugins (CSV, GPX, IGC, KML)
  • Module - the modules which provide the major functionality (logbook, formation, location)

Unless the connect plugin is removed Sky Dolly pretty much remains functional (however Sky Dolly even launches - with much reduced functionality - without a connect plugin ;))

Community

No software architecture would be worth anything if the actual functionality wouldn’t let you do what you are trying to achieve, in an efficient manner! So the overall goal of Sky Dolly is still to simply provide the best functionality with the biggest usability (ease of use, “least amount of clicks”).

I do understand that especially the formation module is not exactly intuitive enough just yet (respectively people have different expectations, like that “AI aircraft automatically follow their user aircraft”). I am also still working (eventually ;)) on the online manual, with both a “reference manual” and “goal-based tutorials” (“How do I get XYZ done!”).

However feedback such as the following “tutorial video” is very encouraging and rewarding. The video gives a quick overview about Sky Dolly’s functionality, including the new location module:

The video is shared with kind permission from the author, Pilot Studd. Go check out his other videos, too.

Can a sky dolly replay video be exported to a video player? I would like to watch the video without being in MSFS.

1 Like

Use e.g. https://obsproject.com/ for this. It is also open source and freely available. It supports all sorts of video encoders and also supports GPU encoding.

I just got skydolly. This might be the best mod in the game.
I’m going to have a lot of fun with this and still am learning what it can do.

1 Like

For Challengers - Create Your Own Landing Challenge

Location Module

The newly introduced Location module allows you to capture your own favourite locations, based on your current flight location in the flight simulator. In combination with the various flight import options this lets you easily create your own landing challenges.

Can You Beat A Real-World Pilot?

Whether you want to „butter that landing to perfection“ or try the same landing with strong crosswinds and worse weather conditions, Sky Dolly lets you do so with the following easy steps. Once you have selected and exported your favourite destination and flight from either flightaware.com or the equally popular flightradar24.com (refer to the previous post above how to export a flight as KML file from flightaware.com) do the following with an active flight in the flight simulator:

Capture the Landing Location

And that‘s it already. You may now add an optional description, airport identifier (e.g. an ICAO identifier) and country.

Any time you select this entry in the locations table and press the Teleport button you are ready to go for another approach.

In fact, that is exactly how I did the Santos Dumont approach.

Pro tip: the imported altitudes are usually „standard pressure altitudes“ and may not exactly reflect the actual real-world altitude above ground. In the flight simulator you may fine-tune the location (altitude) even more, with the „slew“ mode. Once the desired position has been set press the Capture button in Sky Dolly.

Share Locations

Did you know that you can also copy location coordinates given in various decimal and DMS notation flavours and easily paste (with CTRL + V) them into the Location module? A new table entry is automatically created for you.

Go have a look here in the World Discovery forum or any website like https://flightspots.co/ with collections of interesting places to fly!

Feature Overview v0.12

The following video shows a very nice overview over the latest Sky Dolly v0.12, including the new Location module. The video is commented in German:

Shared with kind permission of the author. @JayDee6281 regularly reports about latest developments, aircraft, scenery and various add-ons for MSFS. You may also check out JayDee‘s other videos on his JayDee YouTube channel.

I love Sky Dolly and I want to send videos of my recordings of approaches and landings to my friends in common video formats e.g mpeg2.
Any ideas?

1 Like

Refer to the same question and its subsequent answer here:

Hi Steeler,

Sky Dolly is a great piece of software I use on pretty much every flight in order to record take offs and landings – except when I forget to start (or sometimes stop) recording.

In order to avoid the latter, rule based automated recording would be quite helpful. So Sky Dolly would start / stop recording according to custom, predefined rules, like:

  • Start recording when plane is on ground, landing lights turn on AND no recording is active already, then stop recording X minutes after gear up event
  • Start recording when plane is in the air, gear goes down and no recording is active already, then stop recording X minutes after flaps up

Any chance to have something like that in a future release?

First of all, feature request (and also bug issues) may be added here:

(free github.com account required)

This would be the place for more extensive discussions. I do my best to at least give a timely answer. But Sky Dolly being a project developed in my free time I cannot of course guarantee any “service level agreements”.

In general I don’t announce or comment on new features anyway ahead of time, in order not to necessarily raise expectations. In this case however I cannot deny that those exact thoughts are in my own personal “backlog”.

But again, when - and if - such a feature would arrive is at my own discretion.

And thanks so much for your comments about Sky Dolly, very much appreciated :slight_smile:

1 Like

Minimal UI & Usability

I am happy to see that Sky Dolly’s Truly Minimal UI that has been introduced with Sky Dolly v0.11 a couple of months ago is inspiringly fresh and leading the pack here:

The user interface is designed with usability in mind: every non-necessary mouse interaction is “optimised away” and also callable with keyboard shortcuts, while still trying to retain an intuitive experience.

Example:
You can move the time slider at almost every moment (except during recording, for obvious reasons) without having to first press either the stop or pause button. Or in other words, skipping back in time during replay is as easy as dragging the time slider to the desired position.

That doesn’t mean that there is nothing more to improve: I have quite a to-do list.

Talking of which: the next release v0.13 is expected to arrive shortly after the long-awaited 40th anniversary of Flight Simulator, after having ensured final compatibility (Sky Dolly keeps working flawlessly with the current beta) and added support for the new aircraft models.

While being rather a smaller, incremental update on existing functionality it will increase interoperability with another very well-known open source application. I will pinpoint it more closely on the map once the release is ready - enough said. So stay tuned :wink:

Meanwhile I get dozens of encouraging comments, the most recent comment to my “cinematic Sky Dolly trailer” which made me feel very happy:

Wow, thank you so much! This and other comments make me so proud and motivate me to give back to the community, with more amazing features and improvements to come!

Performance & Resource Usage

Due to the underlying plugin architecture the minimal UI not only means “minimal screen estate” (while still providing the most essential recording & replay functionality, including automatic persistence into the logbook of the recorded flight), but also minimal RAM usage: every module (implemented as plugin) is unloaded from memory when not in use.

So Sky Dolly uses as few as 8 MiB of RAM when launched in minimal UI mode - including a fully functional logbook (a SQLite database) and full replay & recording functionality.

Being implemented in modern C++ the code runs “as close as possible to the metal” (= the CPU). Memory is deterministically released right after usage ends (= no garbage collection, but RAII).

In simple words: Sky Dolly is taking up as little of your precious CPU and RAM resources as possible while still providing accurate and smooth replay.

This is also achieved by only recording and replaying those simulation variables that are actually changing their value, further sparing MS Flight Simulator the extra work of “setting the same value over and over again” (with no physical or visual impact).

Talking about performance: here is a very impressive “flight show” performance:

CGAviator is a real Hawk pilot and he recorded this fantastic acrobatic flight with Sky Dolly: “Weeks of practice, careful choreography, multiple camera angles. […] Just Flight Hawk T1 solo display overhead amazing Duxford scenery.”

Shared with kind permission of the author. Also check out CGAviator’s other amazing videos on his YouTube channel !

Sky Dolly is open source and freely available here:

Source code is also available here:

1 Like

Happy 40th Anniversary, Microsoft Flight Simulator!

I am happy to announce Sky Dolly v0.13 (“Dapper Daher”) which introduces location import & export.

Location Import & Export

The new location import & export plugins make it not only possible to exchange user points with Little Navmap (by @albar965), but also allows to literally import all POIs, photogrammetric cities, airports and more from free POI databases such as Little Navmap - MSFS POI Database (hosted on flightsim.to).

The engine state (start, shutdown, keep) can now also be stored together with locations, making it effectively possible to define your own custom starting points, for instance your own helipads.

Locations can now also be conveniently filtered by keyword search, type (system, user, imported), category and country.

In addtion Sky Dolly ships with 100 system locations, fine-tuned and validated GPS coordinates, most of which now come from https://flightspots.co/ (unfortunately this website notifies visitors that it will “terminate its radar services”). It has never been easier to reach or take-off from beautiful spots such as this one:

Further improvements

  • Reduction of exported Sky Dolly CSV file sizes (by rounding to two decimal digits - GPS coordinates are rounded to 6 decimal digits)
  • The [Sky Dolly installation directory]/Resources/migr/Locations.csv file is now optional and can be deleted (it is used to migrate the system locations into newly generated logbooks)
  • All aircraft types from the 40-th anniversary update have been added to the aircraft selector combo box (when importing a flight); third-party aircraft are automatically added as they are recorded
  • The Flight Recorder (by @NguyenQHy) CSV import plugin now also imports the propeller lever position
  • Keyword search text fields now have a clear button
  • Performance improvements and bug fixes

The complete changelog is available on github.com.

Sky Dolly is open source. The latest binaries are available at:

3 Likes