Generic Aircraft Models (Multiplayer) Proposed Fix

Problem statement

When “Use Generic Aircraft Models (Multiplayer)” is OFF, and another player
has the exact same aircraft model as the user but with a custom livery, then
the aircraft seen by the user will most likely be a generic aircraft.

Root Cause

When a multiplayer aircraft fails the Livery Title check, then MSFS checks the
ICAO designator within the aircraft.cfg to determine whether to display the
base aircraft. However, MSFS also includes a check against the ICAO standard
which is a four-letter code as prescribed by ICAO DOC 8643. Many 3rd party
aircraft do not utilize this standard, nor do some of the MSFS standard,
deluxe, and premium aircraft. (Likely, this is so that their custom aircraft
ICAO name appears in the multiplayer nameplates instead of the generic ICAO
codes.) Also, some of the generic codes are NOT available for use (such as
GLID for gliders), which means that the ICAO check will fail every time, and
gliders for which a livery isn’t available locally will always be seen as
Bonanza’s.

Proposed Resolution

There are two proposed fixes, with the first being recommended:

  1. RECOMMENDED FIX: Remove the requirement within MSFS to check the ICAO against the official ICAO standard. Instead, allow all ICAO designations, whether real or customized. This will let the “Use the aircraft ICAO recognized by the simulation” check to work effectively. No other changes nor maintenance would be required by Asobo nor by aircraft developers. By reevaluating this requirement and making this straightforward change, Asobo can take a significant step towards alleviating this ongoing issue.
  2. Another fix would be to require all developers to utilize the correct ICAO for their aircraft. However, this would require all existing aircraft (3rd party AND MSFS standard, deluxe, and premium aircraft) to be reviewed, updated, and re-released. Also, it would be recommended for Asobo to change the nameplate to reflect the ICAO model attribute and not the ICAO designation attribute so that generic names are not displayed in nameplates. Finally, the ICAO database is updated monthly, so Asobo would need to update their database to match any updates to the official ICAO codes. Note that this fix would take a tremendous amount of time and effort to implement and maintain, both for Asobo and for 3rd party aircraft developers.

Number 2 wouldn’t really work because many pilotable simobjects don’t have
official icao designators. The Hughes H-4 Hercules is an example of this.
Fictional vehicles are another. Number 1 makes sense to me. I don’t really see
why the multiplayer matching needs a validated icao.

Note that a wishlist item has been created for this in the MSFS forums:
<https://forums.flightsimulator.com/t/generic-aircraft-models-seen-instead-of-
base-aircraft-multiplayer-proposed-fix/594615> - flyndive

On a related note: Problem: I have several liveries of several different
private jets set up for the airline NetJets, EJA (no flight number)(Longitude,
CJ4, freeware Global Express 6000). They also have canBeUsedByAITraffic=1
set and isAitraffic=1. icao_generic=0, though, and I have Use Generic Option
turned off (I’m a bit confused on this option), and I’m using Live Traffic.
Yet a lot of times, if not most times, when I see a Live Traffic EJA plane
(there’s a lot in and around KBED and KASH, etc.), the system instead matches
the Generic A320 as the twin engine jet, instead of using one of my livery
aircraft, or even the generic private jet. Not always, but most times. Of
course this looks silly when I’m at a 5000 ft runway GA airport seeing an
Airliner taxiing around on those little taxiways. I’m imagining the main
problem is that the ICAO database used for model matching has only engine type
and number of engines to go by when choosing a model. But why is MSFS ignoring
the matching airline? Question: Is my EJA airline livery problem due to the
fact that MSFS may not recognize EJA as an airline, even though ICAO does? Is
there a file I can edit that would fix this and open up better model matching
for me? Or Should I set these planes up as icao_generic=1? What happens when a
bunch of aircraft are available as icao_generic?

This is clearly a worthwhile issue to address and I’d agree the proposed fix
#1 which goes a long way to address the common issue of locally updated
liveries for people that do have the plane installed. That still leaves a
question of what should happen with a complete miss with
‘icao_type_designator’. My suggestion would be to use ui_typerole which
provides a better substitute from within the Official folder for most planes
than a Bonanza. Scanning the “Official” folder the current values are:

      1. "Commercial Airliner"
  2. "Glider"
  3. "Multi Engines Prop"
  4. "Rotorcraft"
  5. "Single Engine Prop"
  6. "Single Engine TurboProp"
  7. "Twin Engine Jet"
  8. "Twin Engine Prop"
  9. "Twin Engine TurboProp"
  10. "Twin Engine Jet"
  11. "Twin Engine TurboProp"
  12. "Experimental"

This seems a really simple algorithm and I’m guessing the real issue is the
multiplayer system is currently severely limited so the destination client
has very little data to go on trying to guess the plane the multiplayer user
is actually flying. I think that adds up to a selection order from the
following in aircraft.cfg:

      1. [FLTSIM.X] title
  2. optionally check [GENERAL] icao_model here, if the multiplayer system can afford to send that.
  3. [GENERAL] icao_type_designator
  4. [FLTSIM.X] ui_typerole

IMHO it’s the multiplayer implementation in MSFS that’s currently the
constraint. Given the strategic goodness of the Asobo/Microsoft partnership
with Azure already as a core framework, I’d hope architects are taking a
serious look at the multiplayer capability as surely there’s not much more
‘core’ than that and that aspect should be replaced wholesale. If/when we have
that solution, people will look back on this era as before the multiplayer
solution was implemented.

How do you tell the difference between Commercial Airliner and Twin Engine jet
by using ui_typerole, which otherwise matches icao_type_designator, (with the
addition of Glider, and a bunch of oddly Asobo specific ones, and yet we can’t
add are own according to the SDK)? Outfits such as NetJets are considered
airlines, but the planes are essentially “private jets”. Experimental is not
in the current list in the SDK, though it would be a nice addition. But we
could go on with the additions, i.e. Warbird, etc. Though, Experimental covers
that nicely. Interestingly, while working on KASH last night, I saw a 747 take
off from 14, lol. I was in devmode, so I couldn’t turn on the labels to see if
it was something else actually. Personally, I’d like to see them also consider
the base_container as well as the fltsim.n title for multiplayer.

All of the above suggestion still do not cater for correct model matching of
some planes. ie the Cessna C172 C172 can be different configurations :-

  • A Normal wheel version A ski Version A Float Version A Tundra Wheel Version If a solution for model matching is to be designed & implemented, it should cater for this as well.