Mehr Realismus: 4D-Engines

Die meisten Spiele setzen heutzutage auf 3D-Engines. Mit der neuen Konsolengeneration wird der Detailgrad noch einmal erhöht. Aber ist das Realismus? Gerade bei Weltraumshootern ergibt sich oftmals die geradezu absurde Situation, dass man sehen kann, wo sich die Gegner befinden – und nicht, wo sie sich befunden haben, als Licht von ihnen ausgesendet wurde. Und obwohl man angeblich mit nahezu Lichtgeschwindigkeit c durch den Raum jagt, bekommt man keine Farbverschiebung zu sehen.

Letzteres ist leicht zu realisieren: Man müsste einfach abhängig von der Relativgeschwindigkeit einen Farbfilter über das Bild legen. Klassische 3D-Engines berechnen aber immer alle Ereignisse, die im Moment der Anzeige passieren – und geben sie direkt auf den Bildschirm. Das klappt natürlich nicht, wenn man jeweils sieht, “was da mal war“.

Die Figuren bewegen sich fast mit Lichtgeschwindigkeit, sodass der Spieler zu T2 an einem Ort ist, an dem sich gerade das Licht befindet, dass der Gegner bei T1 ausgesandt hat (pinker Kreis).
Die Figuren bewegen sich fast mit Lichtgeschwindigkeit, sodass der Spieler sich zu T2 an einem Ort befindet (pinker Kreis), an dem sich gerade das Licht befindet, dass der Gegner bei T1 ausgesandt hat.

Für eine 4D-Engine könnte man also alles im Arbeitsspeicher behalten, was der Spieler noch sehen könnte. Oder aber man berechnet Ereignisse in der Vergangenheit erst, wenn sie für die Spielergegenwart relevant werden. Für statische Objekte ändert sich praktischerweise ohnehin nichts, Bewegungen müssen parametrisiert werden. Eine Kugel, die zu einem bestimmten Zeitpunkt abgeschossen wurde, ist ein sehr einfaches Beispiel. Wenn diese nicht zwischenzeitig mit anderen beweglichen Objekten zusammentrifft, ist ihre Position zu jedem beliebigen Zeitpunkt leicht zu ermitteln. Doch eine statische Welt, in der ohne Zutun des Spielers nicht passiert, ist eher langweilig, sodass auf Simulationen außerhalb der Sichtweite nicht verzichtet werden sollte.

Doch wie hält man den Speicherbedarf gering? Ständig von jedem Punkt virtuell Photonen aussenden zu lassen ist sehr aufwändig. Wenn man sie nur in solche Richtungen abstrahlen lässt, in die der Spieler kommen könnte, bevor das Licht diese Stelle passiert hat, reduziert sich der Aufwand merklich. Im Grenzfall eines sehr langsamen Spielers wäre man bei klassischem Raytracing angelangt. Ist der Spieler aber schnell, müsste man quasi Raytracing für alle Orte machen, an die der Spieler noch kommen könnte. Keine besonders effiziente Idee.

Rettung verspricht schließlich die gute alte Demo, wie man sie aus dem E-Sport kennt. Dort werden alle Bewegungen der Spielfiguren aufgezeichnet, um das Spiel im Nachhinein noch einmal ansehen zu können. Und zwar nicht nur aus der Perspektive des Spielers. Für eine 4D-Engine muss nun allerdings die Anzeige von der Berechnung der Bewegungen abgekoppelt werden: Was gerade passiert, hat auf dem Bildschirm nichts zu suchen. Angezeigt wird nur, was sich vor einer beliebigen Zeit T genau im Abstand c×T vom Spieler befunden hat.

2 Gedanken zu „Mehr Realismus: 4D-Engines“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert