Was ist die am besten konzipierte Open-Source-Spiele-Engine, um ein Beispiel zu nennen? [geschlossen]

15

Mögliches Duplikat:
Wo finde ich gute (gut organisierte) Beispiele für Spielcode?

Ich habe mehrere C ++ - Spiele programmiert und erstelle jetzt meine eigene Spiel-Engine und meinen eigenen Editor.

Ich habe einige Zweifel an der Gestaltung und möchte Beispiele finden, denen ich folgen kann.

Was ist Ihrer Meinung nach das beste Design?

Muss objektorientiert sein. Programmiersprache spielt keine Rolle, aber ich bevorzuge in dieser Reihenfolge: C ++, C #, Java oder eine ähnliche.

EDITED: Um mehr zu verdeutlichen, bin ich nicht an spielspezifischem Code interessiert. Ich möchte allgemeine Spiele-Engines.

BEARBEITET: Dieser Artikel erklärt, was eine Game Engine ist: Game Engine bei Wikipedia und hier ist eine Liste bekannter Game Engines: Liste der Game Engines bei Wikipedia

Dani
quelle
3
Verstehst du meine Frage wirklich? Ich wünsche Spielengines (nicht nur Spiele ). Und ich bat darum , objektorientiert zu sein . In dem Thread, den Sie sagten, gelten die Antworten nur für Spiele (Doom3, Prototype usw.). Außerdem gibt es ein grafisches Toolkit (OpenSceneGraph), aber es gibt nichts Spezifisches über "Game Engines" in diesem Thread ... Sie können schließen oder löschen Sie meine Frage, wenn Sie es nicht mögen, aber ich verstehe die Abstimmung nicht ... :( Meine Frage ist nicht das gleiche
Dani
2
Um noch mehr zu verdeutlichen, bin ich nicht an spielspezifischem Code interessiert. Ich möchte allgemeine Spiele-Engines.
Dani
3
Es gibt einen Unterschied: Nicht alle Spiele laufen über eine Universal-Engine. Doom3 hat eine FPS-spezifische Engine, Prototype ist anders und so weiter ... Vielleicht haben sie Gemeinsamkeiten (Ressourcenverwaltung, Skripterstellung ...), aber dies ist für meine Frage nicht relevant. Meine Frage beginnt mit dem Satz "Ich habe mehrere C ++ - Spiele codiert". Ich wiederhole: Mein Bedürfnis ist es, einen guten Allzweck-Quellcode für die Spiel-Engine zu finden. Keine Spielquelle, um nach wiederverwendbarem Code zu suchen.
Dani,
1
Doom 3 hat eine "FPS-spezifische Engine", aber auch alle Teile, die eine generische Engine benötigt - wie Sie sagen, Ressourcenmanagement und -skripting, 3D-Rendering, Physik und so weiter. Es ist ein generischer Motor und mehr , nicht irgendwie weniger.
2
@ Joe Wreschnig Ich bin geneigt, @ Dani in diesem Punkt zuzustimmen. Obwohl alle Spiele von einer bestimmten Engine angetrieben werden, unterscheiden sich die Architekturmuster für eine "einmalige" Engine und eine Engine, die für die Arbeit mit mehreren Titeln entwickelt wurde, erheblich, auch wenn beide über Skripte, Ressourcenverwaltung, 3D-Rendering, usw. Komponenten. Darüber hinaus ist es wahrscheinlich nicht die klügste Wahl, sich den Code für ein Spiel anzusehen, das auf einer Engine basiert, die von demselben Studio entwickelt wurde, da er keinen echten Hinweis darauf gibt, wie flexibel und einfach die Engine in einer Umgebung eines Drittanbieters ist.
Ari Patrick

Antworten:

6

Ich denke, der beste Weg, eine Spiel-Engine zu erstellen, besteht darin, mit dem zu beginnen, was Sie bereits ziemlich gut kennen, und die Funktionen hinzuzufügen, die langwierig oder sich wiederholend sind.

Zum Beispiel mache ich viel mit Python / Pygame (das ist ein SDL-Wrapper). Ich mag das System ziemlich, aber es gab drei Dinge, die mich störten:

  • Das Erstellen der Animationsschleife ist mühsam und sie sind alle ziemlich gleich.
  • Das grundlegende Sprite-Objekt ist sehr begrenzt. Ich wollte ein verbessertes Sprite mit Richtung und Geschwindigkeit, der Fähigkeit, mit verschiedenen Bildschirmrandbedingungen, mehreren Bildern und mehreren Kollisionsschemata umzugehen.
  • Pygame hat keine UI-Funktionen. Ich wollte einfache Beschriftungen, Schaltflächen und eine Nummernauswahl, die ich
    problemlos zu meinen Spielen hinzufügen könnte.

Es war relativ einfach, einen objektorientierten Wrapper für diese Features zu erstellen. Werfen Sie einen Blick auf Kapitel 10 und die Game Engine-Dokumentation, die Sie hier finden: http://aharrisbooks.net/pythonGame/

(Dies wurde als Teil eines Buches geschrieben, aber Sie können die Spiel-Engine gerne nutzen, auch wenn Sie das Buch nicht möchten.)

In Kapitel 10 werden die Motivation und Techniken zum Erstellen einer grundlegenden 2D-Game-Engine erläutert. Sie können es genießen, wenn Sie Ihr eigenes bauen. Die eigentliche Sprache ist nicht so wichtig (außer natürlich, dass Sie eine OOP-Sprache benötigen, um OOP zu unterstützen.) Wenn Sie SDL bereits mit C ++ verwenden, können Sie zunächst meine Engine an C ++ / SDL anpassen.

Zwei pi
quelle
8

Das ehrwürdige Design der Quake-Engine (ID Tech) hat den Test der Zeit überstanden und ist wahrscheinlich das erfolgreichste Game-Engine-Design aller Zeiten. Alles außer dem Renderer ist seit Mitte der 90er Jahre weitgehend unverändert und wird immer noch in modernen Spielen wie ETQW verwendet.

Der vollständige Quellcode für vier Iterationen dieser Engine (Quake 1 bis 3 sowie Wolf ET) steht unter der GPL zur Verfügung. Es gibt wahrscheinlich über hundert aktiv entwickelte, von der Community unterstützte Quake-basierte Spiele-Engines, die sie in der heutigen Zeit aktuell halten. Besonders sehenswert ist XreaL für seinen fantastischen Renderer und ioQuake3 für die zuverlässige Wartung von Quake 3, das für moderne Hardware optimiert wurde. Auch für neuere "offizielle" ID-Versionen der Engine steht die Spielelogik (nicht die gesamte Engine) zur Verfügung.

Auch wenn Sie diese Spiel-Engine am Ende nicht einsetzen, sollten Sie die durchdachte Client-Server-Trennungsarchitektur und die Trennung der Spielelogik von Details auf niedriger Ebene kennenlernen.

Max E.
quelle
1
Ich würde es allerdings nicht als objektorientiert bezeichnen.
Tetrad
3
Nein, nicht objektorientiert, aber wie gesagt, es lohnt sich zu studieren. Ich meine, komm schon, nur weil es prozedural ist, bedeutet es nicht, dass du Augenkrebs bekommst, wenn du es dir ansiehst! ;)
Max E.
6

Die Ogre3D-Renderingbibliothek kommt dem Engine-Code ziemlich nahe und ist von allen Konten, die ich gehört habe, sehr gut gestaltet und sehr gut.

http://www.ogre3d.org/

Tetrade
quelle
+1 Großartiger Motor. Vielen Dank, Tetrad! Ich kenne es bereits, habe es aber nie benutzt oder gesehen. Wissen Sie, ob es AI integriert hat (dh Path Finding, etc.)
Dani
3
Ich denke es hängt alles nur mit dem Rendern zusammen.
Tetrad
2
Ogre ist nur eine Grafik-Rendering-Bibliothek. Objektorientierte Grafik-Rendering-Engine.
Jonathan Sternberg
0

Wenn Sie über die Spiel-Engine sprechen, denken Sie vermutlich an alles, was nicht die Render-Engine, die Sound-Engine, die Physik-Engine, die Eingabe-Engine usw. ist.

Sie denken also möglicherweise an Spielarchitektur, KI oder Entwurfsmuster / -systeme usw., mit denen eine Software so strukturiert wird, dass Daten und andere Komponenten verwaltet werden, dass eine Art Szene / Thater / Illusion entsteht Tweak um ein aktuelles "Videospiel" zu erstellen.

Dies ist die eigentliche oberste Ebene eines Videospiels, und ich habe sogar versucht, ein wenig darüber zu lernen. Es ist riesig, kompliziert und erfordert viel Wissen über alle anderen Themen. Stellen Sie sich vor, Sie möchten aus dem Nichts eine alternative Realität erstellen, jedes Ereignis nachverfolgen und berechnen und zu jedem Zeitpunkt genaue Daten daraus neu generieren: Für jede Art von Spiel gibt es eine Art Teilmengen-Game-Engine, und ich weiß nicht ' Ich glaube nicht, dass es tatsächlich möglich ist, einen generischen Motor zu entwickeln, der mathematisch schnell genug ist. Sogar für ein Spiel, in dem Sie einen einzelnen Charakter kontrollieren, gibt es immer noch viele Dinge, die variieren können und es kann immer noch erforderlich sein, dass das Spiel die gesamte Architektur ändert.

Die Spielebranche wird von Open Source nicht so gut bedient wie andere Bereiche der Informatik, nur weil Unterhaltung verschiedene Arten von Lizenzen hat, die künstlerische Lizenzen beinhalten: Spielprodukte werden nur von einem Kunden bezahlt, und AFAIK gibt es nur Einige Motoren, die gut genug scheinen, um für Sie zu funktionieren: Hord3d, NeoAxis, blendelf, Panda3D. Aber ich kann Ihnen nicht versichern, dass sie so einfach zu bedienen sind wie Tools wie Unity, Torque, C4 und andere. Denken Sie daran, dass eine Game-Engine mit dem grafischen Renderer meiner Meinung nach die schwierigste Art von Software ist, die Sie bei der Erstellung von Spielen finden.

jokoon
quelle
0

Für mich ist Python mit Pygame eine gute Lösung. Vielleicht ist Python etwas langsam, aber für heutige Computer ist es egal, ob Sie versuchen, Ihr Spiel zu optimieren. Pygame hat eine sehr gute Dokumentation auf der Website des ursprünglichen Pygames. Aber nehmen Sie zuerst den Anfang eines Tutorials, um einige Grundlagen zu lernen. Für die Geschwindigkeitsoptimierung (Konvertieren von Bildern, ...) benötigen Sie andere Beispiele, die leicht zu finden sind.

nmin
quelle