Ressourcen für das Studium der Quake 3-Engine [geschlossen]


14

Gibt es gute Ressourcen (Handbücher, Tutorials usw.), um den Code der Quake 3-Engine über den Code hinaus zu studieren?

Ich bin sehr daran interessiert zu wissen, wie es für Bildungszwecke strukturiert ist und vielleicht einige Änderungen vorzunehmen.

Antworten:


13

Schauen Sie sich zunächst den Wikipedia-Artikel zu id Tech 3 an . Das kann von Brian Hook GDC Gespräch ergänzt werden Zusammenfassung und einige alte Sachen auf dem 61 - Element - Blog. Darüber hinaus müssen Sie eine Reihe von alten Mod-Tutorials durcharbeiten, um zu versuchen, die aktuellen Vorgänge zu rekonstruieren.

Ich würde vorschlagen, statt von ioquake3 oder what-have-you von der ursprünglichen Quellenfreigabe von id auszugehen, um wirklich den Kontext dessen zu sehen, was vor sich geht (wie Eingaben innerhalb der Engine gehandhabt und geleitet werden, welche Art von zugrunde liegendem Ereignis) Struktur verwendet wird, etc.).

Einige wichtige Punkte, die mir bei der Arbeit geholfen haben:

  • Es gibt immer einen Server; Möglicherweise befindet sich auch Client-Logik über der Verarbeitung eines Frames.
  • Die Eingabe wird zuerst an eine Konsole, wenn Sie interessiert sind, dann an die GUI und dann an das eigentliche Spiel geleitet.
  • Die Engine selbst ist durch Trap-Funktionen von der Spielelogik getrennt (hart!). Schauen Sie sich das Spiel an (wenn der Speicherplatz ausreicht) und rendern Sie Projekte, um den tatsächlichen Engine-Code zu finden.
  • Die Spielelogik kann vollständig für die Ausführung in der virtuellen Maschine von Quake 3 geschrieben werden. Wenn Sie native DLLs modifizieren und verwenden, müssen Sie das Spiel wie folgt quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0ausführen, damit die Engine nativen Code anstelle von VM-Code ausführen kann.
  • Die Benutzeroberfläche für das Menüsystem ist ein seltsamer, böser, verdrehter Stapel von Strukturen und Rückrufen. Es ist brauchbar, sobald Sie es herauspuzzeln, aber das kann einige Versuche und Irrtümer erfordern. Denken Sie daran, es ist ein Stapel.
  • Wenn Sie Code in nativen DLLs schreiben, können Sie Speicher zuweisen, in C ++ schreiben oder was auch immer sonst in Ihrem Boot schwimmt. Sie können auch die STL verwenden - es gibt keinen Grund, den C-Idiomen genau zu folgen, es sei denn, Sie haben eine direkte Schnittstelle zur Engine.

Einige nette Dinge, die ich mit einem Kollegen gemacht habe:

  • Einfache Befehlszeilenschnittstelle zum Aufrufen von Shell-Befehlen von der Konsole aus und zum Zurückgeben der stdout / stderr-Streams an die Konsole (die Quake-Konsole).
  • Schnittstelle mit einer SQL-Datenbank zum Abrufen und Anzeigen von Datensätzen.
  • Flexibles Fenster- und Widget-Toolkit zum Erstellen flexibler Anzeigen auf dem Client-Hud (mithilfe von Balkendiagrammen, Textfeldern, Bildfeldern, Kontextmenüs, Fenstern mit veränderbarer Größe usw.).
  • Langsame Raketen. :)

Persönlich stellte ich fest, dass der Motor eine großartige Kombination von wirklich intelligenten Dingen war, die auf wirklich dumme Weise ausgeführt wurden, von wirklich dummen Dingen, die auf wirklich intelligente Weise ausgeführt wurden, und von wirklich intelligenten Dingen, die auf wirklich intelligente Weise ausgeführt wurden. Es ist ein großartiges Beispiel für Modularität und ein gut strukturiertes Design in einem mittelgroßen C-Projekt.

Zuletzt, fühlen Sie sich nicht schlecht, wenn es eine Weile dauert, um zu grillen. Ich brauchte vielleicht einen Monat, um wirklich zu wissen, wo ich im Motor das finden konnte, wonach ich suchte. Wenn alles andere fehlschlägt, starten Sie beim Anwendungsstart und tunneln Sie einfach in die Funktionen. Hinterlassen Sie Kommentare für sich als Wegweiser. Mein Monitor war mit rosafarbenen Haftnotizen mit Funktionsnamen, Zeilennummern und kurzen Beschreibungen der Aktionen versehen.



1

Absolut.

http://en.wikipedia.org/wiki/Quake_engine bietet einen guten Überblick über das, was da draußen ist, aber Sie können die Details der Architektur recht schnell anhand der Zitate erfassen.

Darf ich Ihnen auch ein paar Bücher über die Architektur von Game Engines vorschlagen, die vielleicht mehr zu dem passen, wonach Sie suchen? Obwohl sie nicht Quake-spezifisch sind, gehen sie auf die Details des Motordesigns ein und verlaufen parallel zu vielen Aspekten der Quake-Motoren:

  • Architektur der 3D-Game-Engine - 978-0122290640
  • 3D-Game-Engine-Programmierung - 978-1592003518

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.