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
quelle
Antworten:
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:
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.
quelle
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.
quelle
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/
quelle
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.
quelle
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.
quelle