Volo is a multi-platform flight simulator I’m writing in V.
This is pre-alpha software and at this point supports:
- loading and rendering 3D aircraft models
- loading global scenery and rendering it in false colors (yuck!)
Why?
I find flight simulators particularly interesting because they combine two passions of mine, software engineering and flight.
And writing a flight simulator from scratch, while it sounds crazy, gives the opportunity to learn hands-on about interesting topics:
- 3D math
- real-time graphics
- physics
- geodesy
- metereology
- and many more
Now, you might ask, why not contribute to an existing open source flight sim instead of writing one from scratch?
It’a valid question.
I did in fact contribute to FlightGear and, informed by that, I decided there is value in taking a slightly different path and trying:
- a more modern programming language
- and a more modern graphics stack
In any case, the main value of this project for me is educational and there’s no substitute for learning-by-doing.
Internals
Aircraft
AC3D
https://wiki.flightgear.org/AC3D_file_format
XML
- Use brand-new XML support in stdlib?
- Convert to JSON first? https://www.howtogeek.com/devops/how-to-convert-xml-to-json-on-the-command-line/
Terrain
https://wiki.flightgear.org/BTG_file_format
Multiplayer
https://datatracker.ietf.org/doc/html/rfc1014
Platform APIs
Multi-platform graphics
Keyboard input and sound
GG for platform input and sound abstractions: