Devblog 3 - The big picture
I spend some time outline the history of the Lockheed Vega and the reasons why we chose to bring her to the Flight Simulator, I am still not quite ready to write about the development itself. In this blog post I want to give you an idea of where we want to go with this project and what you can expect over the course of the next months.
The overarching goal of our project is to give you the most immersive and realistic experience of what it is like to fly an airplane like the Lockheed Vega 5 in the 1920s and 1930s. And to me, the topic of immersion is something that I find lacking in most of the addons for Flight Simulator, which is why I put a lot of emphasis on it. To illustrate what I mean you an check out a picture of our payload manager to the right. I try to give the user a more immersive experience by replicating the look and feel of the time the aircraft was being used. Another example of an area we try to increase the immersive experience is the interactive animation code. But that is a topic for a later discussion.
Now to the second point: realism. It is our intention to give you the most realistic Lockheed Vega the flight simulator can offer. And as far as I can see, there are four basic components that need to be considered:
- Aerodynamics - this one is pretty much self-explanatory. If it don't fly right, it ain't right.
- Systems simulation - probably the toughest nut to crack in terms of time committed. We strive to achieve excellence in this area.
- Environmental simulation - the flight simulator is a bit stiff when it comes to environment and it's effect on the aircraft. This needs to be improved.
- Sound - It's important that the aircraft sounds like an aircraft and the flight simulator doesn't provide much as it currently is.
Apart from the aerodynamics, all components of our realism pack are programmed in C++, the systems package probably being the most interesting. To achieve a high level of realism, I am pretty much rebuilding the whole underlying system simulation. The reason for that is that I found the Flight Simulator lacking in almost every single aspect and it seems to me that a lot of variables are calculated using wrong formulas. To maximize flexibility we're using customized variables for virtually every important parameter be it oil pressure, battery voltage or fuel pressure.
Furthermore, I believe the best way to enhance realism in the aircraft is by simulating for underlying mechanics, rather than a desired outcome. Here's an example to illustrate what I mean: You know that the artificial horizon starts spinning a few seconds after you shut down the engine, right? A quick and easy way to simulate this behavior could be to start a timer once the engine is off and as soon as the timer hits a certain mark, begin with the tumbling motion. And while this approach can give you a pretty good result, I find it a bit stiff, so our solution works differently. We calculate the pressure in the vacuum system that powers the gyro accounting for leaks or blockage in the plumbing. Based on the pressure and the friction in the bearing of the gyro we can work out the angular momentum. And that momentum divided by the mass of the spinning part of the gyro gives us the acceleration, or deceleration which is then multiplied by the passed time to work out the speed of the gyro... You see where this is going.
I find that this approach gives a really good approximation of reality, provided that the boundary conditions are set accurately and the utilized formulas are correct. One huge advantage this solution gives is a proper failure management. By simulating minute details of the different systems, it is possible to introduce minute errors. Yes, the artificial horizon can fail, but it can fail in many different ways! is the friction in the bearings too high so that the gyro can't spin up fast enough? Is one of the nozzles clogged? Or maybe the whole vacuum system has a tiny leak somewhere resulting in a pressure drop? Could it be that the pressure relief valve had a malfunction and doesn't open anymore, thus damaging the sensitive mechanics of the instrument?
The downside to this level of detail is, of course, the increased development time. I go through different stages when I code any particular sub-system:
1. Researching the best formula and boundary conditions for the job This is probably the most important step, because if the formulas used are wrong, or if the assumptions of physical properties are wrong, realism goes out the window. Being an engineer helps, as I am trained to understand and apply physics
2. Simulation In this step i use Matlab (a powerful software tool for mathematics) to visualize the formulas I use. I usually have an array holding the different conditions (e.g. RPM) and plot the resulting variables (e.g. pressure produced by the vacuum pump). Plotting your variables helps tremendously to make sure that your system behaves properly.
3. Programming The next step is obvious: punch everything into the gauge code using Visual Studio. In many cases, I enable the output of important internal variables in my XML debug instruments.
4. Debugging Most hated part of all, the debugging process. This involves trying to find out why certain parts of the code don't work, or putting the aircraft in extreme situations to see if the systems react as they should.
I hope I was able to show you that we are very serious about our goal of bringing realism and immersion to the flight simulator. And I also hope that this little article help you understand why it will still take a long time until our Lockheed Vega can be called finished. There's still a lot of modules that need to be improved on and there are only 24h in the day...