cat 2025-12-06-aircraft-detection.md

Aircraft Detection - automatyczna detekcja typów samolotów


2025-12-06

Problem do rozwiązania

Każdy typ samolotu w MSFS potrzebuje innego zestawu poleceń do kontroli radia i autopilota. Stock aircraft (Cessna, Boeing) używają standardowych SimEvents, ale addon aircraft takie jak PMDG lub Fenix używają lokalnych zmiennych (L-Vars). Potrzebowałem elastycznego systemu, który automatycznie rozpozna typ samolotu i wyśle odpowiednie komendy.

Architektura rozwiązania

System oparty jest na fabryce mapperów (Factory Pattern). Najpierw detektor analizuje dane z symulatora, aby określić typ samolotu, a następnie fabryka tworzy odpowiedni mapper, który wie jak komunikować się z tym konkretnym typem.

Obsługiwane typy

  • Stock MSFS - Cessna, Boeing, Airbus - w pełni wspierane poprzez SimEvents
  • PMDG 737/777/747 - aktualnie fallback do stock, czeka na implementację L-Vars
  • Fenix A320 - aktualnie fallback do stock, czeka na implementację L-Vars
  • TBM 930 - w pełni wspierane
  • QualityWings 787, Aerosoft CRJ - zaplanowane

Wyzwania

1. Detekcja typu samolotu

Istnieje wiele parametrów, które mogą wskazywać na typ samolotu - numer boczny, typ silnika, typ avioniki (G1000 vs modern glass cockpit), czy konfiguracja z pliku panel.cfg. Musiałem stworzyć heurystykę, która z rozsądnym stopniem pewności określi typ samolotu.

2. L-Vars - Problem bez rozwiązania

Addon aircraft takie jak PMDG czy Fenix przechowują swój stan w lokalnych zmiennych (L-Vars), do których SimConnect nie ma dostępu. Aby w pełni wspierać te samoloty, potrzebowałbym albo:

  • Modułu WASM napisanego w C++
  • Integracji z FSUIPC
  • Dostępu do dokumentacji od producenta

Aktualnie jest to największe ograniczenie projektu.

3. Elastyczność systemu

Każdy nowy samolot wymaga nowego mappera. System musiał być zaprojektowany w taki sposób, aby dodawanie nowych typów było proste i nie wymagało zmiany istniejącego kodu.

Wynik

Wdrożyłem system oparty na interfejsach i polimorfizmie, który pozwala na łatwoe dodawanie nowych typów samolotów. Stock aircraft są w pełni wspierane, a addon aircraft działają w ograniczonym trybie do czasu, aż rozwiążę problem L-Vars.

✈️