Ich fand dieses PDF , in dem mögliche Spielarchitekturen detailliert beschrieben sind. Obwohl es für Leser, die eher geneigt sind, objektorientiert zu denken, unangenehm sein könnte.
Was sind einige der üblicheren Designmuster, die bei der Entwicklung von 3D-Spielen verwendet werden? Gibt es High-Level-Architekturmuster, die häufig verwendet werden? Was ist mit allgemeinen Softwaremustern in der Architektur?
Das ist alles, woran ich gerade denken kann.
Ich denke nicht, dass es besonders spielspezifische Software-Designmuster gibt. Spiele benutzen die gleichen Sprachen, Bibliotheken, Plattformen wie alle anderen und haben auf Softwareebene ziemlich genau die gleichen Probleme.
Es gibt bestimmte Methoden oder Ansätze, die populär zu sein scheinen, die aber auf Code-Ebene nicht formalisiert sind, wie klassische Design-Muster. Ein Beispiel sind komponentenbasierte Aktoren, die häufig nicht einmal in demselben Objekt aggregiert sind, sondern über eine gemeinsame ID, die über einen Signal / Slots-Mechanismus kommuniziert. Eine andere wäre die Einbettung einer zweiten Sprache für Scripting-Zwecke wie Lua, Python oder Javascript.
Ich fand dieses PDF , in dem mögliche Spielarchitekturen detailliert beschrieben sind. Obwohl es für Leser, die eher geneigt sind, objektorientiert zu denken, unangenehm sein könnte.
Variationen des Zustandsmusters sind nützlich, um den Spielzustand zu modellieren. Die Enginuity-Artikelserie bietet einen guten Überblick über einige der Low-Level-Aspekte des Game-Engine-Designs. Es ist unvollständig, aber gut. Die Designer des Guff-Frameworks umriss die Verwendung von Zustands-Hierarchien zur Handhabung des Spielstatus. Das Hierarchie-Konzept ist gut, obwohl ihre Sicht auf einen Spielzustand begrenzt ist (sie umfasst die gesamte Spielschleife statt nur den Zustand). Sie haben auch ein Papier über Echtzeit-Spielschleifen .
Beim Implementieren von Skripts ist es extrem nützlich und leistungsfähig, eine Skriptsprache zu verwenden, die eine Art kooperatives Multithreading unterstützt. Stackless Python bietet dies an. Seit Mono 2.6 können Sie dies in C # mithilfe von Fortsetzungen tun, aber nur auf der Mono-Plattform ( nicht .NET), da Änderungen an der VM erforderlich waren.
Es gibt gängige Lösungen für 2D- und 3D-Grafiken, Animationen, Eingaben usw. Viele davon werden von DirectX, SDL oder ähnlichen Frameworks verarbeitet.
Tags und Links design-patterns architecture