Was soll eine Game Engine tun? [geschlossen]

20

Ich möchte meine Fähigkeiten verbessern / etwas Neues ausprobieren und möchte mit 3D beginnen. Ich habe Startprogrammierung in 3D mit C ++ gelesen, aber ich habe Fragen zu Engines:

  • Was soll der Motor tun? Ich weiß, dass es sich um eine Abstraktionsschicht über der 3D-API handelt (z. B. OpenGL oder DirectX), aber was genau sollte sie tun?
Maciej Piechotka
quelle
Für die Buchempfehlungen sollte diese Frage hilfreich sein: gamedev.stackexchange.com/questions/455/…
Tetrad

Antworten:

27

Sie haben Recht, wenn Sie sagen, dass sich eine Game Engine von den Low-Level-Grafik-APIs entfernt, eine vollwertige Game Engine jedoch noch viel mehr leistet.

Game Engines sollen alles in Bezug auf die Spieleentwicklung erleichtern. Sie haben jeweils ihre eigenen Besonderheiten, bieten jedoch im Allgemeinen einfache Abstraktionsebenen für Grafik, Audio, Eingabe, Szenenverwaltung, Kollisionserkennung, Mathematik und allgemeine nützliche Hilfsprogramme. Einige bieten Wrapper und Plugins für Physik-APIs an, andere bieten sogar AI-Unterstützung (meistens beschränkt auf FSMs, Pathfinding und - den aktuellen Trend - Verhaltensbäume). Viele von ihnen unterstützen plattformübergreifende Funktionen und sind stolz darauf.

Der Zweck einer Game Engine ist es, dem Benutzer das Erstellen eines Spiels zu erleichtern, ohne sich mit den kleinen Unannehmlichkeiten beim Erstellen eines Spiels von Grund auf neu auseinandersetzen zu müssen oder eine ganze Reihe von Bibliotheken zu installieren und eigene Wrapper für diese zu schreiben Spiel.

Es gibt viele Engines, aber achten Sie auf den Unterschied zwischen einer Grafik-Engine und einer Spiele-Engine (Unity wäre beispielsweise eine Spiele-Engine, während Ogre eine Grafik-Engine wäre).

Ich habe zwei Bücher zu diesem Thema, aber sie bieten einen guten Überblick über das Thema:

  • 3D-Game-Engine-Architektur von David H Eberly

  • Game Coding Complete von Mike McShaffry

Sie sind nicht zu ausführlich, da Sie mehrere Bücher für jede Komponente benötigen, um die Tiefe des Wissens zu erlangen, die Sie benötigen, um eine vollständige, professionelle Spiel-Engine zu erstellen. Ich denke, sie erklären die Konzepte sehr gut.

Wenn Sie mit dem Entwickeln von Spielen beginnen, stellen Sie keine Engine her. Ich verweise Sie auf die folgende Seite: http://geometrian.com/programming/tutorials/write-games-not-engines/

Motoren sind eine schwierige Sache, richtig zu machen. Wenn Sie eine Menge Spiele schreiben, werden Sie nach einer Weile feststellen, dass Sie viel wiederverwendbaren Code haben, mit dem Sie Ihre eigene persönliche Engine erstellen können, um Ihnen zu helfen. Und viele (vollständige) Spiele zu haben, ist viel beeindruckender als eine einzelne Engine.

Hoffentlich hilft das.

Strahl

Ray Dey
quelle
1
+1 für den Blogartikel. Es sagt genau das, was ich dazu sagen würde.
Tetrad
5
Ja, niemand sollte eine Spiel-Engine erstellen, bevor er ein Spiel erstellt hat. Woher wissen Sie, dass Ihr Code wiederverwendbar ist, wenn Sie noch nicht wissen, dass er verwendbar ist?
Kylotan
@ Kylotan Mir ist klar, dass dies sehr spät ist, aber ich möchte mich nur für diesen Kommentar bedanken, da ich ihn ständig anderen zitiert habe :)
Ray Dey
@ RayDey der Link zu "Spiele schreiben, keine Engines" ist tot, FYI. Ich freute mich darauf, es zu lesen :(
DrewJordan
5

Hinzufügen zu Rays Antwort: Engines (Spiel, Grafik, Audio usw.) erleichtern nicht nur die Interaktion mit den zugrunde liegenden APIs, sondern implementieren auch spielspezifische Funktionen, z. B .: Shading-Modell, 3D-Sound.

Speziell für Game Engines: Sie verwalten Spielobjekte, Ressourcen (Speicher, Threads, alle anderen Engines) und die Kommunikation zwischen Modulen. Sie verleihen dem Spiel die Struktur, Skalierbarkeit und Flexibilität, die für jedes nicht triviale Projekt unerlässlich sind.

Ramon Zarazua B.
quelle
+1 für die Struktur, Skalierbarkeit und Flexibilität Punkt und ich habe vergessen, Speicherverwaltung hinzuzufügen
Ray Dey
1

Ich habe ein detailliertes Tutorial darüber geschrieben, was eine Spiel-Engine ist - speziell im Kontext der iPhone- und Android-Plattformen. Ich habe detaillierte Beschreibungen mit Beispielen für die verschiedenen Teile einer Game-Engine eingefügt: Benutzeroberfläche, Grafiken, Sound, Physik, Partikeleffekte. Das Tutorial finden Sie hier: Was ist eine Game Engine? . Hoffe es ist hilfreich.

Ben Smiley
quelle
0

Jede Game Engine hat eine etwas andere Vorstellung davon, was eine Game Engine tun sollte.

Aber da es bereits zu viele Spiele-Engines gibt, empfehle ich wirklich, dass Sie ein Spiel machen, kein Motor.

MarkR
quelle