QII_Tech_HERO_1920x870.pngquake_ii_box_front.jpg

Quake II

Buy Game
Quake II
10. August 2023

Die Technologie hinter der verbesserten Neuveröffentlichung von Quake II

quake_ii_box_front.jpg

Quake II

Buy Game

Die Neuveröffentlichung von Quake II hat tonnenweise Verbesserungen unter der Motorhaube.

Viele davon sind moderne Neuzugänge wie dynamische Schatten, andere wiederum sind weiterentwickelte Techniken, die schon in der Originalversion von 1997 verwendet wurden.

Das Gameplay ist noch genau so wie damals in den 90ern, aber hier ist eine vollständige Auflistung der wichtigsten technischen Verbesserungen, Anpassungen und sogar Partnerschaften, die bei der Aktualisierung von Quake II für eine neue Generation von Spielern nötig waren. Wenn ihr zu den Moddingveteranen oder Retro-Gaming-Enthusiasten gehört oder einfach neugierig seid, wie diese Version von Quake II funktioniert, seid ihr hier richtig!

Map-Kompilierungs-Tools

Ähnlich wie im Original von 1997 wird die Beleuchtung in Quake II zum größten Teil schon während der Kompilierung in die BSP-Datei geschrieben. Die Beleuchtung wird vom Beleuchtungs-Tool vorab berechnet und eine gepackte Textur des Lichts wird getrennt in der BSP-Datei gespeichert.

Wir haben mit zwei Programmierern der beliebten ericw-Tools zusammengearbeitet, Eric Wasylishen und Jonathan Barkley, um den Support für die BSPs von Quake II zu verbessern. Wir sind ebenfalls über den Support für das ursprüngliche Spiel hinausgegangen, um in den Original-Maps und nutzergenerierten Karten bessere Beleuchtung zu ermöglichen.

Die Berechnung von Beleuchtung ist weiterhin ein rein CPU-basierter Vorgang, der auf Rechnern ganz ohne Grafikkarte auskommt. 1997 brauchten PCs bei den Original-Maps für die Beleuchtung noch Stunden, manchmal sogar die ganze Nacht. Heute haben wir eine höhere Effizienz pro Megahertz und außerdem dutzende Kerne zur Verfügung, daher dauert die Beleuchtung einer eigenen Karte mit allen modernen Schikanen nur noch ein paar Minuten.

Verbesserte Luxel-Dichte

Trotz aller schicken Fachbegriffe ist diese Beschleunigung der Map-Kompilierung eigentlich ganz einfach: Das ursprüngliche Spiel beleuchtete die Welt im Verhältnis 16:1 – dabei wurde alle 16 Einheiten ein Lichtsample berechnet. Wir haben alle Maps neu gebaut und das Verhältnis auf 8:1 erhöht, was einen vierfach höheren Detailgrad bedeutet. Der Effekt ist in Bereichen mit viel diffuser Beleuchtung weniger deutlich zu erkennen, aber Bereiche mit Suchscheinwerfern und dadurch entstehenden harten Schatten profitieren davon enorm.

Lichtraster-Unterstützung

Diese Map-Kompilierungsfunktion stammt aus Quake III Arena und wurde für die Neuauflage zurückgebracht. Eine Herausforderung bei der Arbeit mit der Beleuchtung des Quake II-Originals ist, dass Objekte abhängig von ihrer Position auf dem Boden beleuchtet werden. Das funktioniert für Gegenstände und Gegner auf dem Boden ziemlich gut, aber das System hat gewisse Probleme mit fliegenden Monstern. Diese sind in der Luft oft dunkel, wenn sie einen Schlagschatten oder etwas Ähnliches überfliegen.

Neben den Lightmaps speichern wir jetzt auch ein Voxelraster innerhalb der Welt, das ein Muster der Beleuchtung enthält, da alle beitragenden Strahlen durch diesen Bereich geworfen werden. Dieses recht einfache System verlässt sich hauptsächlich auf die höhere Dateigröße und den erhöhten Speicher für die Maps, weshalb es vermutlich erst in Quake III Arena zum Einsatz kam.

Texturunabhängige Beleuchtung

Ein weiteres Konzept, das aus Quake III Arena rückportiert wurde, ist die Speicherung von Lightmaps in Relation zu Oberflächen. In der ersten Version von Quake II führte das Verzerren, Vergrößern und Verkleinern von Texturen dazu, dass das Gleiche mit der Lightmap passierte. Nun werden Lightmaps in Abhängigkeit von der Größe des Pinsels gespeichert statt von Größe der Textur.

Integrierte Umgebungsverdeckung

Eine der ersten Verbesserungen, die ericw-Tools vornahmen, ist die Umgebungsverdeckung, auch bekannt als Dirtmapping, was der Welt mehr Tiefe verleiht, indem Bereiche verdunkelt werden, in die im Allgemeinen weniger Licht fällt.

Phong-Shading

Nach Veröffentlichung von Quake II erschien ein Tool namens ArghRad. Dieses verbesserte Beleuchtungs-Tool unterstützte Phong-Shading, eine uralte Technik aus den 1970ern, die Beleuchtung auf Oberflächen mit wenig Polygonen anpasst. Dies kann den Eindruck verbessern, dass etwas rund ist, ohne dem Objekt mehr Polygone zu verpassen. Unsere verbesserten Maps nutzen diese Technik, wo es angemessen ist.

Durchscheinende Materialien

Eine weitere Änderung, die sehr bei der Darstellung von Beleuchtung hilft, sind durchscheinende Texturen, die Lichtstrahlen durchlassen und einen Teil ihrer Texturfarbe auf deren Zielpunkt übertragen. Das bedeutet, dass Licht durch farbiges Glas, Hologramme, Terminals und andere Objekte scheinen kann und durch diese korrekt beeinflusst wird.

Beleuchtete Flüssigkeiten

Dies ist ein Feature, das in der Mapper-Community von Quake großen Anklang fand, da es die Erstellung von Maps, in denen Flüssigkeiten beliebiger Größe vorkommen, enorm erleichtert. Im Original wurde das Wasser überhaupt nicht beleuchtet und immer mit voller Helligkeit angezeigt. Jetzt erhalten flüssige Oberflächen Lightmaps wie jede andere Oberfläche auch, ohne die Strahlen darunter zu blockieren.

Grafik

Das beeindruckendste neue Feature für Quake II war damals farbige Beleuchtung. Heutzutage ist das ganz nett, aber unsere Neuveröffentlichung von Quake II verfügt über ein paar bescheidene Upgrades, um das Vorhandene zu verbessern, ohne das Aussehen des Originals zu sehr zu verändern.

Animation

Paul Steeds Animationen in Quake II haben der Welt ein enormes Maß an Charakter verliehen. Von subtilen Bewegungen und Animationen bei Untätigkeit zu absolut verrückten Überschlägen und Sprüngen – man wusste nie, was die Gegner als Nächstes tun. Viele von uns spielten das Spiel damals zum ersten Mal, und wenn eine Wache sich unter einschlagenden Blasterschüssen wegduckte, war das extrem beeindruckend. Allerdings hatten wir damals mit technischen Einschränkungen zu kämpfen, durch die diese Animationen nicht ihr volles Potenzial entfalten konnten.

Vor allem hatte das MD2-Modellformat eine begrenzte Freiheit, was die Vertex-Präzision angeht. Das führt zu dem „Wackeleffekt“, der häufig auftrat, besonders bei den Waffenmodellen in der Egoperspektive. Wir konnten für die meisten Modelle des Spiels die ursprünglichen Animationsdateien wiederfinden und diese hochaufgelösten Animationen nutzen, um Skelettanimationen für die verbesserten Modelle zu erstellen, wodurch das Wackeln behoben wurde.

Der Wechsel zu Skelettanimationen behob auch einige Fälle, in denen lineare Interpolation fehlschlug. Dies ist besonders auffällig bei der Todesanimation von Parasite, bei der er so schnell rotiert und sich überschlägt, dass die linear interpolierte Animation ihn in Parasitensuppe verwandelt.

Glowmaps

Quake II hat eine Menge Bildschirme und Lichter in den Texturen, und viele Waffen besitzen leuchtende Teile. In der Basis-Engine jedoch wirken sich Licht und Schatten wie alles andere auf sie aus. Wir unterstützen nun Glowmaps – Masken, die über eine Textur gelegt werden und festlegen, welche Bereiche leuchten sollen. Dies bedeutet, dass Lichter auf Gegnern im Dunkeln leuchten und den Waffen ebenfalls ein Licht aufgeht (oder mehrere), was die bisher nur aufgemalten Beleuchtungseffekte der bestehenden Skins aufwertet.

Höhennebel

Wir haben unsere Unterstützung für Nebel erweitert und können nun höhenbasierte Nebel darstellen, wodurch Map-Ersteller zwei verschiedene Farben festlegen können. Dies wird durch einen Nachbearbeitungseffekt erreicht, nicht durch ein Volumen in der Map. Auch wenn er gewisse Nachteile mit sich bringt, ist dieser Effekt dennoch ein toller Weg, um Bereiche abwechslungsreicher zu gestalten.

Mündungsfeuer

Dies ist zwar nicht in dem Sinne eine Technologie-Erweiterung, aber diese Änderung hat eine so positive Auswirkung auf das Gameplay, dass wir sie trotzdem aufnehmen! Waffen von Spielern und Gegnern gleichermaßen verfügen nun über Mündungsfeuer, das zusätzlich zu den dynamischen Lichtern aufflackert. Dadurch können Spieler sofort erkennen, wer auf sie schießt, besonders in stark beleuchteten Räumen, wo dynamische Lichter nicht so gut sichtbar sind.

Audio

Wir haben in unserer generalüberholten Version von Quake II auch das Audio verbessert. Neben behobenen Fehlern im Audio-Code des Originals und der Erhöhung von Grenzen, um dank unseren schnelleren CPUs mehr Stimmen zu unterstützen, können wir nun auch jeder Textur einen Materialnamen zuweisen.

Das ist gleich auf zwei Arten nützlich: Erstens ermöglicht es den Strahlen, das Material der Oberfläche auszugeben, das sie treffen, was einzigartige Spuren für jede Oberfläche erlaubt. Zweitens können wir nun eine ungefähre Schätzung der Raumgröße und der Materialien im Raum berechnen, um eine Reverb-Voreinstellung auszuwählen. Dadurch klingt eine Kanalisation unter der Erde anders als ein grasbewachsener Außenbereich.

Künstliche Intelligenz

Die KI in Quake II hat während der Entwicklung einige Änderungen durchgemacht. Quake II sollte ursprünglich QuakeC verwenden, aber spät in der Entwicklung wurde die Entscheidung getroffen, von interpretiertem Code zu einer nativen Bibliothek zu wechseln. Dies führte dazu, dass wir sämtlichen bestehenden Code aus QuakeC in C übertragen mussten, wobei die KI vereinfacht wurde, um mehr wie im Original-Quake zu sein. In dieser Neuveröffentlichung konnten wir die Bots erweitern und mehr ihrer internen Logik an die Gegner-KI weitergeben.

Verbesserte Navigation

Wir haben viele Navigationsfunktionen der Bots in die Spiel-DLL integriert, wodurch das Spiel nun Wege von und zu beliebigen Punkten planen kann. Die KI erfordert aber dennoch manuell platzierte Navigationspunkte. Anfangs untersuchten wir Navmesh-Erstellung durch Lösungen wie Recast, entschieden uns jedoch dagegen, da dies nicht in unseren Entwicklungszeitplan passte. Stattdessen verbesserten wir die bestehenden Tools für Bots.

Die Original-Ki von Quake II hatte ein paar grundlegende Funktionen, um sich in der Spielumgebung zurechtzufinden. Jetzt kann sich die KI das Ziel setzen, sich dir zu nähern und sich dabei durch komplexe Räume mit Treppen bewegen oder Überquerungspunkte nutzen, um nach unten zu springen.

Verbesserte Entscheidungsfindung

Die Entscheidungsfindung der KI wurde verbessert, wodurch das Gegnerverhalten verglichen mit der Erstveröffentlichung mehr Tiefe erhält. Gegner können nun viel einfacher erkennen, ob sie den Spieler überhaupt treffen können, besonders die mit mehreren Angriffen.

Beispielsweise setzt ein Gunner, dessen Chaingun-Arm von einer Wand blockiert ist, lieber Granaten ein, anstatt sein Magazin in eine Ecke zu entleeren. Gegner entscheiden sich nun manchmal dazu, in der Bewegung zu feuern, anstatt zu warten, bis sie ihr Ziel erreichen. Diese Änderungen helfen, die KI vor dummen Entscheidungen zu bewahren, ohne wirklich zu ändern, wie sie sich verhält oder kämpft.

Neue KI für fliegende Einheiten

Die KI für fliegende Einheiten wurde vollständig überarbeitet, damit diese natürlicher aussehen. Die Einheiten bremsen nun ab und gleiten in Kurven, anstatt plötzlich anzuhalten. Schwärme von Flugdrohnen stoßen gegeneinander und prallen voneinander ab, wenn sie um Positionen kämpfen.

Wiederhergestellte Inhalte

Wer sich ein bisschen in den Dateien des Originals von Quake II umgesehen hat, ist vermutlich über zusätzliche Animationen gestolpert, die 1997 nie verwendet wurden. Wir haben diese Animationen gesichtet, aufpoliert und dann dem Spiel hinzugefügt. Beispielsweise fährt der Techniker jetzt seine fiesen Klauen aus, um einen Überfall anzukündigen, und der Berserker ist jetzt dank eines Sprungangriffs noch schrecklicher geworden.

Der Parasite hat ein paar Änderungen erfahren, durch die es mehr Spaß machen wird, gegen ihn zu kämpfen. Sein Saugrüssel ist nun ein Projektil, dem man ausweichen kann und das sich in eine Wand bohrt. Wir haben diese Mechanik hinzugefügt, damit der Parasite seine Ziehen- und Drehen-Animation nutzen kann, da er nach einem verfehlten Angriff verwundbar wird.

Bots

Hier sind einige neue Bot-Funktionen für die verbesserte Neuveröffentlichung von Quake II:

  • Bots können nun schwer zugängliche Bereiche wie die Megahealth in The Edge per Rocket Jump erreichen.
  • Alle Waffen, Gegenstände und Power-ups im Spiel werden nun verstanden und genutzt, wenn angemessen.
  • Alle Gegner werden nun verstanden und angegriffen, wenn sie aggressiv sind.
  • Bots können springen, in die Hocke gehen, Aufzüge und Plattformen sowie Leitern benutzen, Fallen für Gegner auslösen und selbst vermeiden.
  • Befehle mit hoher Wichtigkeit aus der Spiel-DLL erlauben es Moddern, die Bewegungen und Aktionen von Bots zu steuern.
  • Nach dem Hinzufügen von Gegenständen, Waffen und Gegnern zu einer Mod genügt ein Eintrag in einer einfachen Textdatei, um den Bots zu erlauben, die Neuzugänge zu sehen und zu verstehen (mehr dazu unten)

Datengetriebene Bots für Mod-Unterstützung

Bots sind so programmiert, dass sie Mods so schnell und leicht wie möglich unterstützen. Dies geschieht über eine Reihe von Dateien, die erklären, welche Objekte sie berücksichtigen müssen und wie diese Objekte funktionieren. Für die Mod-Ersteller genügt damit das Erstellen von mod-spezifischen Definitionsdateien für ihre einzigartigen Waffen, Gegenstände, Monster usw.

Hier die Liste der verfügbaren Dateien und ein Beispiel der Gegenstände-Datei:

Verbesserter Navigationseditor

Die verbesserte Neuveröffentlichung von Quake II erlaubt die Einrichtung von Navigation auf beliebigen Maps, wobei direkt im Editor hilfreiche Infos und Feedback bereitgestellt werden. Die vom Editor erstellte NAV-Datei wird getrennt gespeichert und kann in der Mod oder mit Freunden geteilt werden.

Verbesserte Fehlerbehebungs-Tools

Diverse Fehlerbehebungs-Tools für die Bots sind ebenfalls verfügbar, wodurch Fehler bei bestimmten Bots behoben werden können. Außerdem können ihnen Befehle erteilt oder ihr Denken untersucht werden.

Diese Fehlerbehebungs-Tools können:

  • Infos zu Allgemeinzustand, Zielen usw. des Bots anzeigen
  • Den aktuellen Zustand des Verhaltenssystems des Bots anzeigen
  • Infos über den Spielmodus und die Gegenstände/Objekte anzeigen, die den Bot interessieren
  • Dem Bot Bewegungsziele in der Welt nennen, um die Navigation zu testen
  • Zeigen, welche Gegner Bots sehen können und wen sie angreifen
  • Den aktuellen Zustand des Waffensystems sowie das verfügbare Inventar des Bots anzeigen

Fehlerbehebungszeilen

Es ist nun möglich, einfache Primitive aus dem Spielcode zu ziehen und so Dinge wie die Position eines Objekts, Welttext oder sogar die Bewegungsrichtung eines Objekts abzurufen. All dies kann für die Fehlerbehebung nützlich sein.

Verfügbare Render-Primitive zur Fehlerbehebung:

  • Linie
  • Punkt
  • Kreis
  • Grenzen
  • Kugel
  • Orientierter Welttext (orientiert sich immer in Richtung des Blickwinkels des lokalen Clients)
  • Statischer Welttext
  • Zylinder
  • Strahl

data.images.authors.idsoftware.jpg

id Software