Wie entstehen Warps?
Verfasst: 12. Jul 2012, 12:16
Bei der Analyse der Warps sind mir folgende Ergebnisse aufgefallen:
Radar.lua fragt all 200 ms die Position des Ownships ab. DCS liefert die Lat/Long Position und einen Zeitstempel für diese Position. In der Radarapplikation wird daraus die Groundspeed errechnet. Dabei ist aufgefallen, das die Groundspeed im Mehrspielermodus manchmal um bis zu 300% springt. Das ist immer nur bei bestimmten Teilnehmern zu beobachten. Es liegt also eine Diskrepanz zwischen Position und Zeitstempel vor. Da diese Werte 1:1 zum Radar durchgereicht werden, ist die Ursache beim DCS des sendenden Teilnehmers einzuordnen. Das Netzwerk hat absolut keinen Einfluss auf diese Art Fehler. Die andere Beobachtung ist, dass ein Warp nie beim eigenen Flugzeug zu beobachten ist. Es sind immer die Anderen... Daraus kann man folgern, dass ein Warp lokal durch fehlerhafte Zeit/Positionsdaten für das eigene Flugzeug erzeugt wird. Der Fehler wirkt sich lokal nicht aus, da die Daten erst bei den anderen Teilnehmern ausgewertet werden. Beim Empfänger werden die fehlerhaften Daten zur Extrapolation benutzt (siehe Erklärung am Ende). Das bedeutet, dass die nächste darzustellende Position eines Fremdflugzeugs geschätzt wird, basierend auf Position, Fluglage und Zeitstempel. Wenn nun Zeitstempel und Position/Fluglage nicht zusammenpassen, dann wird eine unrealistische Geschwindigkeit errechnet die die nächste Position bestimmt. Da bei der Extrapolation nicht nur die Position betrachtet wird, sondern alle sechs Freiheitsgrade, so ist auch die unnatürliche Bewegung um die Flugzeugachsen erklärbar. Aus meiner Erfahrung weiß ich, das der Fehler zu 99% bei der Erzeugung des Zeitstempels zu suchen ist. Die aerodynamische Berechnung kann nicht sporadisch aus dem Ruder laufen. Das ist ein inkrementeller Vorgang bei dem ein Fehler dauerhaft kumulieren würde.
Es bleib die Frage nach der Ursache. Da beim Warp immer heftige Bewegungen mit hoher Geschwindigkeit zu beobachten sind, kann man schließen, dass der zeitliche Abstand zwischen zwei Zeitstempeln zeitweise zu kurz ist. Es ist also anzunehmen, dass zuerst ein Zeitstempel erzeugt wird, und dann die Berechnung der dazugehörigen Position beginnt. Wird nun der Berechnungsprozess durch einen Taskwechsel oder einem anderen Umstand unterbrochen, dann kann es vorkommen, dass die Position erst später errechnet wird, wenn das Flugzeug bereits weitergeflogen ist. Damit ist der Fehler erzeugt, da Position und Zeitstempel nicht mehr zusammenpassen. Eine Unterbrechung (Taskwechsel) wird wahrscheinlich wenn die Rechnerbelastung steigt. Ein gut programmierter Thread ist normalerweise so angelegt, dass er die Kontrolle sofort weitergibt, wenn seine Aufgabe nach einem Durchlauf erledigt ist. Falls die Bearbeitung aber 2 ms übersteigt, so sorgt das Betriebssystem dafür, dass der Thread einfach unterbrochen wird und der nächste Thread die Kontrolle erhält. Je mehr Prozesse gleichzeitig laufen, um so länger ist die Zeitspanne bis der unterbrochene Thread wieder die Kontroller erhält. Erschwerend kommt noch hinzu, dass die Applikation bestimmte Threads priorisieren kann. Das bedeutet, das ein weniger wichtiger Thread auch dann unterbrochen werden kann, wenn er die 2 ms noch nicht überschritten hat.
Die Rechnerbelastung steigt immer dann wenn komplizierte grafische Berechnungen anliegen. Das sind:
- Hohe Anzahl von Flugzeugen und statischen Objekten.
- Raucherzeugung
- Wolken
- Lichtquellen
- Spiegelungen
- Schattenberechnung
Nach meiner Beobachtung treten Warps immer dann auf wenn eine oder mehrere Bedingungen, wie oben angeführt, auftreten.
Fazit:
Wenn Warps auftreten, dann sollte der Teilnehmer, der die springende Maschine fliegt, darüber informiert werden. Er sollte prüfen, ob sein Rechner langsam in die Knie geht. Abhilfe schaffen könnte das Schließen aller nicht benötigten Programme auf dem Rechner. Die meisten Viren Scanner überprüfen alle eingehenden und ausgehenden Netzwerksdaten und die Laufenden Prozesse. Man muss eine Einstellung finden, die den Rechner am wenigste belastet. Es wäre von großem Nutzen, wenn ein Warper nach Ende der Übung einen kurzen Bericht posten würde, der die Rechnerausstattung, Konfiguration und die 'Options' Einstellung von DCS beinhaltet. Ich glaube, dass nach einer gewissen Zeitspanne die Konstellation sichtbar wird, die zur Warp Erzeugung führt. Leider wird es für A10-Warthog keine Verbesserung durch DCS geben. Wir könnten aber einen Beitrag zur Abhilfe leisten wenn in DCS-World die gleichen Probleme auftreten. Die obige Darstellung erhebt nicht den Anspruch auf Richtigkeit. Es soll ein Denkanstoß sein für weiter Meinungen und Beobachtungen.
Extrapolation
Wenn ein Objekt, wie ein Flugzeug in einer Simulation grafisch dargestellt werden soll, so treten Probleme auf, wenn die Positionsberechnung und grafische Darstellung auf unterschiedlichen Rechnern erfolgt. Bei der Positionsberechnung werden z.B. 100 Positionen pro Sekunde errechnet. Davon werden aber aus Belastungsgründen nur 20 Positionen pro Sekunde über das Netz and den Grafikrechner geschickt. Der Grafikrechner stellt aber 40 Frames pro Sekunde dar. Ohne Anpassung würde der Grafikrechner bei 40 Frames jeweils zwei mal die gleiche Position darstellen. Findige Programmierer haben dafür zwei Verfahren erdacht um doch auf die 40 Frames mit 40 unterschiedliche Positionen zu kommen. Bei der Interpolation wird eine oder mehrere zusätzliche Positionen zwischen zwei Positionen aus dem Netzupdate errechnet und als Frame dargestellt. Der Nachteil dieses Verfahrens ist, dass die grafische Darstellung um eine definierte Verzögerung hinterherhinkt. Bei der Extrapolation wird auf Grund von Position, Geschwindigkeit und Beschleunigungsdaten in Die Zukunft gerechnet, wo der Flieger zu einem bestimmten Zeitpunkt positioniert würde. Man erreicht in Grenzen eine beliebig hohe Frame Rate auf dem Grafikrechner und erhält eine Glättung der Flugbahn. Beide Verfahren sind eine Wissenschaft für sich und können endlos verfeinert werden. DCS hat auf diesem Gebiet eine hervorragende Arbeit abgeliefert. Es ist absolut nicht selbstverständlich, dass ein Fremdflieger derart ruhig beim Formationsflug dargestellt werden kann. Beide Verfahren hängen zu 100% vom exakten Zeitstempel bei der Datenberechnung ab.
BOSSHOG
Radar.lua fragt all 200 ms die Position des Ownships ab. DCS liefert die Lat/Long Position und einen Zeitstempel für diese Position. In der Radarapplikation wird daraus die Groundspeed errechnet. Dabei ist aufgefallen, das die Groundspeed im Mehrspielermodus manchmal um bis zu 300% springt. Das ist immer nur bei bestimmten Teilnehmern zu beobachten. Es liegt also eine Diskrepanz zwischen Position und Zeitstempel vor. Da diese Werte 1:1 zum Radar durchgereicht werden, ist die Ursache beim DCS des sendenden Teilnehmers einzuordnen. Das Netzwerk hat absolut keinen Einfluss auf diese Art Fehler. Die andere Beobachtung ist, dass ein Warp nie beim eigenen Flugzeug zu beobachten ist. Es sind immer die Anderen... Daraus kann man folgern, dass ein Warp lokal durch fehlerhafte Zeit/Positionsdaten für das eigene Flugzeug erzeugt wird. Der Fehler wirkt sich lokal nicht aus, da die Daten erst bei den anderen Teilnehmern ausgewertet werden. Beim Empfänger werden die fehlerhaften Daten zur Extrapolation benutzt (siehe Erklärung am Ende). Das bedeutet, dass die nächste darzustellende Position eines Fremdflugzeugs geschätzt wird, basierend auf Position, Fluglage und Zeitstempel. Wenn nun Zeitstempel und Position/Fluglage nicht zusammenpassen, dann wird eine unrealistische Geschwindigkeit errechnet die die nächste Position bestimmt. Da bei der Extrapolation nicht nur die Position betrachtet wird, sondern alle sechs Freiheitsgrade, so ist auch die unnatürliche Bewegung um die Flugzeugachsen erklärbar. Aus meiner Erfahrung weiß ich, das der Fehler zu 99% bei der Erzeugung des Zeitstempels zu suchen ist. Die aerodynamische Berechnung kann nicht sporadisch aus dem Ruder laufen. Das ist ein inkrementeller Vorgang bei dem ein Fehler dauerhaft kumulieren würde.
Es bleib die Frage nach der Ursache. Da beim Warp immer heftige Bewegungen mit hoher Geschwindigkeit zu beobachten sind, kann man schließen, dass der zeitliche Abstand zwischen zwei Zeitstempeln zeitweise zu kurz ist. Es ist also anzunehmen, dass zuerst ein Zeitstempel erzeugt wird, und dann die Berechnung der dazugehörigen Position beginnt. Wird nun der Berechnungsprozess durch einen Taskwechsel oder einem anderen Umstand unterbrochen, dann kann es vorkommen, dass die Position erst später errechnet wird, wenn das Flugzeug bereits weitergeflogen ist. Damit ist der Fehler erzeugt, da Position und Zeitstempel nicht mehr zusammenpassen. Eine Unterbrechung (Taskwechsel) wird wahrscheinlich wenn die Rechnerbelastung steigt. Ein gut programmierter Thread ist normalerweise so angelegt, dass er die Kontrolle sofort weitergibt, wenn seine Aufgabe nach einem Durchlauf erledigt ist. Falls die Bearbeitung aber 2 ms übersteigt, so sorgt das Betriebssystem dafür, dass der Thread einfach unterbrochen wird und der nächste Thread die Kontrolle erhält. Je mehr Prozesse gleichzeitig laufen, um so länger ist die Zeitspanne bis der unterbrochene Thread wieder die Kontroller erhält. Erschwerend kommt noch hinzu, dass die Applikation bestimmte Threads priorisieren kann. Das bedeutet, das ein weniger wichtiger Thread auch dann unterbrochen werden kann, wenn er die 2 ms noch nicht überschritten hat.
Die Rechnerbelastung steigt immer dann wenn komplizierte grafische Berechnungen anliegen. Das sind:
- Hohe Anzahl von Flugzeugen und statischen Objekten.
- Raucherzeugung
- Wolken
- Lichtquellen
- Spiegelungen
- Schattenberechnung
Nach meiner Beobachtung treten Warps immer dann auf wenn eine oder mehrere Bedingungen, wie oben angeführt, auftreten.
Fazit:
Wenn Warps auftreten, dann sollte der Teilnehmer, der die springende Maschine fliegt, darüber informiert werden. Er sollte prüfen, ob sein Rechner langsam in die Knie geht. Abhilfe schaffen könnte das Schließen aller nicht benötigten Programme auf dem Rechner. Die meisten Viren Scanner überprüfen alle eingehenden und ausgehenden Netzwerksdaten und die Laufenden Prozesse. Man muss eine Einstellung finden, die den Rechner am wenigste belastet. Es wäre von großem Nutzen, wenn ein Warper nach Ende der Übung einen kurzen Bericht posten würde, der die Rechnerausstattung, Konfiguration und die 'Options' Einstellung von DCS beinhaltet. Ich glaube, dass nach einer gewissen Zeitspanne die Konstellation sichtbar wird, die zur Warp Erzeugung führt. Leider wird es für A10-Warthog keine Verbesserung durch DCS geben. Wir könnten aber einen Beitrag zur Abhilfe leisten wenn in DCS-World die gleichen Probleme auftreten. Die obige Darstellung erhebt nicht den Anspruch auf Richtigkeit. Es soll ein Denkanstoß sein für weiter Meinungen und Beobachtungen.
Extrapolation
Wenn ein Objekt, wie ein Flugzeug in einer Simulation grafisch dargestellt werden soll, so treten Probleme auf, wenn die Positionsberechnung und grafische Darstellung auf unterschiedlichen Rechnern erfolgt. Bei der Positionsberechnung werden z.B. 100 Positionen pro Sekunde errechnet. Davon werden aber aus Belastungsgründen nur 20 Positionen pro Sekunde über das Netz and den Grafikrechner geschickt. Der Grafikrechner stellt aber 40 Frames pro Sekunde dar. Ohne Anpassung würde der Grafikrechner bei 40 Frames jeweils zwei mal die gleiche Position darstellen. Findige Programmierer haben dafür zwei Verfahren erdacht um doch auf die 40 Frames mit 40 unterschiedliche Positionen zu kommen. Bei der Interpolation wird eine oder mehrere zusätzliche Positionen zwischen zwei Positionen aus dem Netzupdate errechnet und als Frame dargestellt. Der Nachteil dieses Verfahrens ist, dass die grafische Darstellung um eine definierte Verzögerung hinterherhinkt. Bei der Extrapolation wird auf Grund von Position, Geschwindigkeit und Beschleunigungsdaten in Die Zukunft gerechnet, wo der Flieger zu einem bestimmten Zeitpunkt positioniert würde. Man erreicht in Grenzen eine beliebig hohe Frame Rate auf dem Grafikrechner und erhält eine Glättung der Flugbahn. Beide Verfahren sind eine Wissenschaft für sich und können endlos verfeinert werden. DCS hat auf diesem Gebiet eine hervorragende Arbeit abgeliefert. Es ist absolut nicht selbstverständlich, dass ein Fremdflieger derart ruhig beim Formationsflug dargestellt werden kann. Beide Verfahren hängen zu 100% vom exakten Zeitstempel bei der Datenberechnung ab.
BOSSHOG