Backward compatibility


I just finished reading a couple pretty extensive threads on AvSim on how important customers think backward compatibility (specifically to accomodate third-party add-ons) should be when designing the next version of Flight Sim. It’s actually nice to see this sort of discussion happening among community members who are so heavily vested in the hobby since the decisions we make will have a significant impact on their transition to a new version. I thought I’d get back to blogging with a couple comments on this topic.

 

First off let me say how entertaining some of the posts are, especially those that suggest how they think the FS engine works or should work. There seems to be a common misconception that innovation and backward compatibility are mutally exclusive. A number of comments suggest we should start from scratch in order to achieve some sort of graphic and feature nirvana. In fact a good portion of the engine gets overhauled every version and we’ve taken steps with each version to make this easier. For example, there used to be very little abstraction in our graphics language. This made it easy for people to ‘tweak’ the routines we used to achieve what were some really cool effects. A problem occurs on the next version when we change the language and the tweak no longer works (or worse, crashes the app). We’ve since provided SDK tools that provide a better abstraction by focussing on data structures rather than executable code. A good example is the way we now handle simple buildings. The author now provides meta data along with abstracted geometry data and the rendering engine computes the drawing routines at runtime. Now if we find a better way to render, the content still works.

 

Whenever possible we try to architect the engine to be data and metadata driven so add-ons developed for one version will work in the next. Over time (typically 2-3 versions) we may change the architecture to such an extent that we have to break compatibility but we try to limit these changes so users get a reasonable return on their add-on investment. I should point out, though, that one reason we do break compatibility is when customer value dictates it. For example let’s say (hypothetically of course) we have a developer working on a new animation system for things like doors, jetways, etc. He will try to accomdate add-ons that use the existing animation technology but if a cool new feature that adds a lot of value to the customer experience simply cannot be done without breaking compatibility he might decide to make the break.

 

There are also misconceptions about what value various versions of DirectX bring to the table and a belief that someone we’re not taking full advantage of the GPU. DirectX is a general purpose graphics technology. It is not a rendering engine unto itself. There are no ‘CreateRealisticJetExhaust’ or ‘AutomaticallyBlendTheRightTerrainTextures’ APIs in DirectX. Saying we should scrap our current engine or move to a different graphics technology would be like saying, “I don’t like my 3-year-old metal Volvo. I want a new one built from carbon fiber.” Is the material going to make the difference? Won’t the new one still be a car?

 

Developers use technology like DirectX to create engines that must be optimized for a specific purpose. Any game title is a result of tradeoffs, especially in the graphics area. Many techniques made possible by DirectX APIs look great in single purpose conference demos but don’t work as well when combined with the gazillion other techniques a real game needs. Even version we try to take advantage of state of the art techniques, APIs and hardware but the inevitably those compromises will always provide fodder for those who want to point out the techniques we didn’t use. And I’m sure when people see our implementation in the next version of DirectX shipping in Windows Vista they will say the same thing. Hopefully I’ll be able to blog about that sometime in near future. (By the way, all of you claiming to know what we should do to our graphics engine can now put your money where your mouth is. We’re recruiting. <g>)

 

FS gets compared quite often to RPG and FPS games like Far Cry and Half Life. The thing to know about those games and engines is that they are optimized for a very different set of conditions than a flight simulator. Level-based games can be ‘stage crafted’ to keep the user’s eyepoint within a specific range that lets designers, artists and graphics developers create a very tailored experience. Most flight simulators need to provide a seamless user experience from ground level to many miles in space. Yes, we could break these out and make each one better but would you really want a series of loading dialogs whenever you passed through different altitudes? Would you want an on-ground experience where visibility was limited to less an a mile all the time in order to get high-detail with good performance?

 

[As a side note I’ve been playing a lot of Dungeon Siege 2 lately and having a lot of fun doing it. It’s also a very visually stunning game but, then again, your view distance is never, ever more than a few dozen meters. Hmmm. I don’t think that would work well for flying.]

 

But getting back to backward compatibility…we have and will continue to strike a balance between enabling users to continue to get value from their add-on investments and give them a new, unique and compelling experience.

 

 


Comments (5)

  1. Over on his blog, tdragger (a PM on the team) posts a great response to a thread on the AvSim forum regarding backward compatibility in Flight Simulator. So of course, I need to add my rather overpriced 2c. Although never…

  2. OwenHewitt says:

    Hi Mike,

    Excellent points you bring up and make in the post above. I agree that FS cannot be fairly compared to any RPG or FPS for many reasons. People often overlook the many, many calculations that are being performed to make the whole experience fluid. Each gauge, though interconnected thru the game engine, must act independently. It’s a highly complex environment, and I’m sure with further advances, it will become that more complex in the future <G>.

    Regards,

    Owen

    ******

    Owen Hewitt

    Dreamfleet

  3. Mike_T says:

    Mike:

    FS:COF is the best version of MSFS to date. As a self professed "hard core simmer" it is the solid core on which all my complex 3rd party add-ons are run. As the saying goes: If the foundation is solid so is the house.

    As such, I’ve invested a great deal in MSFS to get it to the point at which it exists today. Hi Fidelity 3rd party weather engine, highly complex airliners, realistic 3rd party airports and sceneries, etc.

    With that said, it is obvious that MS tries to keep compatibility as much as possible as you go across versions and that is great especially with a winner engine that is in FS:COF. I’d like to see that trend continue.

    For me I’d like to see your team focus on taking the ATC, Weather, and flight dynamic modules to the next level…whatever that may be. If there are optimizations to the current engine that can be effected that would be great too but at the end of the day, so far so good.

    I would like to take this opportunity to THANK YOU and the rest of the FS TEAM for the MSFS francise. It has become an endearing part of my lifestyle and, I simply enjoy the hours I spend with it.

    Regards,

    Mike T.

  4. lnuss says:

    Thanks for addressing this subject. I knew the sim is complex, since it has to mimic the real world over large areas, and includes so very many things going on at once: aircraft, gauges, scenery going by, control surfaces moving, perspective, and so much more.

    But you’ve brought up several things I’d not considered, such as the fact that so many games have a very limited area AND distance to portray.

    Glad I discovered yyour blog. But I WOULD like to ask for one thing to be improved in the next version of FS: Multiplayer. We used to have the tracking view, which was wonderful for a friend and I to put on airshows for each other (among other uses). And positioning error seems greater than it was in FS98, with other players’ aircraft sliding into the ground or above it, or even sideways, even while sitting still for a while. Internet delays? Yes, this accounts for SOME of it, but far from all the problems I see. It makes formation flying much tougher than it should be, when the lead aircraft starts sliding around in ways the pilot doesn’t generate.

    That being said, I still thoroughly enjoy the experience of flying wherever and whenever I want, replicating real world flying or doing things I’d not consider in the real world, such as flying for miles at treetop height (or lower), buzzing downtown office buildings, low level aerobatics almost anywhere, and much, much more.

    Thanks to you and your team for the many hours of enjoyment every month.

    Larry N.

  5. Dan Martin says:

    Like I’ve posted at Avsim may people don’t understand just how complex something like flight sim really is I can only guess at all the math for say just doing the weather I would guess a great gaggle of people spend a lot of time "playing" around with fluid dynamics I.E lots of calculus. And then to get the above into a form that the gammeing engine and then the rendering engine can work with must take a huge amount of time and effort I for one am greatfull that such a team can be put together to create something like FS and am looking forward to what you have up your collective sleeves.

    Dan Martin