Projektziel: Die Dash 8 (De Havilland Canada DHC-8) ist das Flugzeug, mit dem Air Greenland zwischen den Orten in Grönland fliegt. In FlightGear gibt es sie als freies Modell. Die aktuelle Entwicklerversion hatte aber ein paar Fehler: Die Triebwerke verbrauchten dreimal zu viel Treibstoff, ein Instrument lud nicht, ein Skript meldete zehnmal pro Sekunde einen Fehler und der Autopilot pendelte im langsamen Endanflug. Dieser Beitrag zeigt, wie ich die Fehler gefunden und behoben habe, dazu zwei Piloten im Cockpit und eigene Lackierungen. Unten gibt es alle Änderungen als Patch zum Herunterladen.

Dash 8 in der roten Lackierung Air Toczler (D-BTOX) auf der Bahn in Kangerlussuaq, Grönland
Bild 1 - Die Dash 8 in der eigenen Lackierung „Air Toczler“ (D-BTOX) in Kangerlussuaq, Grönland

Download: dash8_patch.zip (geänderte und neue Dateien, für die DHC-8 aus dem FGAddon-Entwicklungszweig, getestet mit FlightGear 2024.1.7)
Original: DHC-8_original_FGAddon_2026-10-16.zip (47 MB, unveränderte DHC-8 aus dem FGAddon-Entwicklungszweig, Stand 16.10.2026, GPL v2 – für den Fall, dass sich das Original ändert oder nicht mehr zu finden ist)

1. Dreimal zu viel Treibstoff

Auf einer Strecke von Kangerlussuaq nach Island zeigte die Anzeige im Reiseflug rund 1150 lb/h pro Triebwerk. Ein echtes PW123-Triebwerk braucht bei dieser Leistung etwa ein Drittel davon. Der Treibstoff hätte nicht bis Island gereicht; für den Test musste ich im Flug nachtanken.

Die Triebwerke rechnet JSBSim, das Flugdynamik-Modell von FlightGear. In der Triebwerksdatei Engines/PW123D.xml stand die Tabelle für den Verbrennungswirkungsgrad in einem Kommentar. Fehlt sie, nimmt JSBSim einen eingebauten Standardwert, der im Reiseflug bei etwa 0,31 liegt, und teilt den Verbrauch dadurch. Zusätzlich war der spezifische Verbrauch (psfc) mit 0,23 zu niedrig angesetzt, real sind es beim PW123 etwa 0,45 bis 0,5 lb pro PS und Stunde.


  <psfc unit="LBS/HR/HP">0.45</psfc> <!-- war 0.23; PW123 real ca. 0.45-0.5 -->
  ...
  <!-- Vorher auskommentiert: JSBSim nahm dann einen Standardwert (ca. 0.3 im Reiseflug)
       und verdreifachte damit den Treibstoffverbrauch. -->
  <table name="CombustionEfficiency_N1" type="internal">
    <tableData>
        0.0    0.50
       20.0    0.80
       24.6    0.95
       50.0    0.98
       70.0    1.00
      110.0    1.00
     </tableData>
  </table>

Danach: rund 440 lb/h pro Triebwerk im Reiseflug (17 000 ft, 246 kt wahre Fahrt). Die Probe aufs Exempel war ein Flug von Keflavík nach Aberdeen: 727 nm in gut drei Stunden mit 2670 lb Treibstoff, ein realistischer Wert für dieses Flugzeug.

2. Ein Instrument, das nicht lädt

Beim Start meldete FlightGear: Couldn't load animation … Unknown condition comparison left child: use. Die Lageanzeige (EADI) benutzt in ihren Bedingungen die Schreibweise <use alias=…>, die FlightGear 2024.1 an dieser Stelle nicht kennt. Die ältere Schreibweise bedeutet dasselbe:


<!-- vorher (nur Entwicklerversion von FlightGear) -->
<use alias="/params/display-property" />
<!-- nachher (FlightGear 2024.1) -->
<property alias="/params/display-property" />

3. Zehn Fehlermeldungen pro Sekunde

Sobald der Autopilot die Fahrt hielt, füllte sich das Log mit Nasal runtime error: non-objects have no members, zehnmal pro Sekunde. Das Skript der Cockpit-Anzeige ID-802 (id-802.nas) las die eingestellte Fahrt unter /it-autoflight/input/ias. Der Autopilot dieser Version legt sie aber unter /it-autoflight/input/kts ab. Den Knoten gab es also nicht, und jeder Zugriff darauf schlug fehl:


# vorher:  ias: props.globals.getNode("/it-autoflight/input/ias"),
ias: props.globals.getNode("/it-autoflight/input/kts", 1),

Die 1 als zweites Argument legt den Knoten an, falls er noch fehlt. So kann getNode nie wieder nil liefern.

4. Der Autopilot pendelt im Endanflug

Beim Anflug auf Nuuk mit Landeklappen und 88 kt pendelte die Dash 8 im Kursmodus um bis zu 65 m links und rechts der Anfluglinie, mit bis zu 24° Querlage. Der Kursregler rechnet eine Kursabweichung in eine Querlage um, und die Verstärkung war für alle Geschwindigkeiten gleich. Bei gleicher Querlage dreht ein langsames Flugzeug aber viel schneller als ein schnelles; der gleiche Regler ist im langsamen Endanflug also zu scharf eingestellt. Jetzt wird die Verstärkung unter 140 kt im Verhältnis zur Fahrt kleiner (höchstens bis auf die Hälfte bei 70 kt):


# Unter 140 kt dreht das Flugzeug bei gleicher Querlage schneller -> Verstaerkung
# proportional zur Fahrt verkleinern, sonst pendelt HDG im langsamen Endanflug
if (Velocities.airspeedKt.getValue() < 140) {
    Gain.rollCmdKpCalc = Gain.hdgGain.getValue() * math.max(Velocities.airspeedKt.getValue(), 70) / 140;
}

5. Cockpit mit Oberfläche und zwei Piloten

Wände, Instrumentenbrett, Blendschutz und Steuerhörner wirkten wie flach grau angemalt. Die Textur hat dort nur einfarbige Flächen, und diese Teile hatten gar keinen Shader. Ein neuer Effekt (cockpit-grain.eff) auf Basis des Standard-Flugzeugshaders von FlightGear legt eine feine, gekachelte Kunststoff-Struktur darüber und sorgt dafür, dass die Teile das gleiche Licht bekommen wie der Rest des Cockpits.

Außerdem sitzen jetzt zwei Piloten im Cockpit: links ein Kapitän, rechts eine Erste Offizierin, beide in Uniform mit Headset. Die Figuren stammen aus FlightGears eigenem Bestand (Aircraft/Generic/Human), die sitzenden Posen aus der Cessna 172. Damit man sich nicht selbst im Weg sitzt, wird die eigene Figur in der jeweiligen Cockpit-Ansicht ausgeblendet.

Cockpit der Dash 8 mit der Ersten Offizierin auf dem rechten Sitz
Bild 2 - Blick aus der Kapitänsansicht: rechts die Erste Offizierin, die Cockpitflächen mit Struktur

6. Eigene Lackierungen

Die Lackierungen sind bei der Dash 8 einfache PNG-Bilder, die über das Modell gelegt werden. Ein kleines Python-Skript erzeugt neue Lackierungen aus einer Vorlage: Name, Farben und Kennzeichen sind frei wählbar. Mitgeliefert sind drei Varianten „Air Toczler“: lila (D-BTOC), rot-weiß (D-BTOR) und ganz rot mit weißer Schrift (D-BTOX, Bild 1). Ausgewählt werden sie im Menü der Dash 8 unter Select Livery.

7. Nachtrag: Warnlampen, die nicht leuchten

Bei einem Testflug mit Triebwerksausfall blieben MASTER WARNING und MASTER CAUTION auf dem Blendschutz dunkel. Dafür gab es zwei Gründe. Erstens lädt nur die Dash 8-400 das Warnsystem (Nasal/cautionlights.nas); die -100, -200 und -300 bekommen es gar nicht, obwohl es auch zu ihnen passt: Es überwacht Öldruck, Hydraulik, Generatoren, Treibstoff, Türen und Parkbremse. Jetzt lädt dhc-8-123-common.xml es mit.

Zweitens liegen die leuchtenden Flächen der beiden Tasten im 3D-Modell ein paar Millimeter hinter der Taste. Die Lampe ist also an, man sieht sie nur nicht. Eine zusätzliche Animation lässt jetzt die Taste selbst rot beziehungsweise gelb leuchten, solange die Lampe an ist:


<animation>
    <type>material</type>
    <object-name>master_warning</object-name>
    <condition>
        <property>instrumentation/crew-alerting/master-warning-light/state</property>
        <greater-than>
            <property>systems/electrical/outputs/advsy[0]</property>
            <value>10</value>
        </greater-than>
    </condition>
    <emission><red>1</red><green>0.05</green><blue>0.05</blue></emission>
</animation>

Bei der Gelegenheit auch die Dash 8-400: Ihre Konfiguration sucht das Warnsystem unter Nasal/400/cautionlights.nas, die Datei liegt aber in Nasal/. Außerdem fehlt der ganze Ordner mit den FMS-Dateien (Models/Cockpit/Pedestal/Front/CDU/), auch im offiziellen Paket für FlightGear 2024. Mit korrigiertem Pfad und ohne die fehlenden Module lädt die -400 jetzt ohne Fehlermeldung; das FMS bleibt allerdings ohne Funktion.

Ein Hinweis für eigene Skripte: Stellt man ein Triebwerk mit dem Condition Lever auf FUEL OFF ab, setzt das Modell die Segelstellung (propeller-feather) gleich wieder zurück. Der Propeller dreht dann im Fahrtwind weiter und bremst auf einer Seite, die Maschine giert. Die Segelstellung muss man deshalb wiederholt setzen.

8. Nachtrag: Rollen über Gras in Aberdeen

In Aberdeen rollte die Dash 8 auf dem Weg zur Bahn 16 über die Wiese. Schuld war nicht das Flugzeug, sondern das Rollwegnetz des Flughafens, das nicht zur Landschaft passt. Wie ich den Untergrund abgetastet und den Weg korrigiert habe, steht in einem eigenen Beitrag: FlightGear: Rollen über Gras – Rollwege abtasten und korrigieren.

Installation

  1. Die DHC-8 aus dem FGAddon-Entwicklungszweig herunterladen (oder das Original oben) und in einen eigenen Flugzeugordner legen, zum Beispiel Custom Aircraft\DHC-8 (den Ordner im Launcher unter „Zusätzliche Flugzeugpfade“ eintragen).
  2. Vorher eine Kopie des Ordners machen, dann dash8_patch.zip in den Ordner DHC-8 entpacken und vorhandene Dateien ersetzen.
  3. Im Launcher „De Havilland Canada DHC-8-200“ wählen.

Die Änderungen stehen mit Begründung in AENDERUNGEN_Claude.md im Patch. Die Lizenz bleibt die des Originals (GPL v2 oder neuer).

Fazit

Keiner der Fehler war groß: eine auskommentierte Tabelle, ein umbenannter Knoten, eine neue Schreibweise, eine feste Verstärkung. Aufgefallen sind sie bei Testflügen mit einem Autopilot-Skript, das bei jedem Flug Verbrauch, Fehlermeldungen und Flugweg mitschreibt. Mit den Änderungen fliegt sie jetzt eine Tour von Grönland über Island, Schottland und Dänemark bis nach Erfurt, mit realistischem Verbrauch und ruhigen Anflügen.