Diese Frage nervt mich seit langem. Ich habe mich immer gefragt, wie Spieleentwickler bestimmte Probleme oder Situationen lösen, die in bestimmten Genres üblich sind.
Wie würde man beispielsweise die Aufgaben eines typischen Rollenspiels (z. B. BG oder TES) umsetzen? Oder wie würdest du Waffen mit mehreren Stapeleffekten in einem Ego-Shooter implementieren (z. B. die Schrumpfpistole oder den Gefrierschrank von DN3D)? Wie würden Sie Multiple-Choice-Optionen mit einem möglicherweise komplizierten Entscheidungsbaum implementieren, der zu verschiedenen Ergebnissen führt (z. B. den Missionsbäumen in WC)?
Besucher.
Beobachter.
Befehl.
Proxy (für Netzwerkspiele).
Fast jedes der kreativen Muster.
Denk nach, "Szenengraph".
Spiele sind nicht wirklich das anders als andere Arten von Apps, zumindest nicht in dem Maße, wie die Leute denken, dass sie es sind. Ich sage, dass dies sowohl ein professioneller Spieleentwickler als auch ein professioneller Nichtspielentwickler war:)
Denken Sie daran, dass dies nicht die typischen Probleme der Softwarearchitektur sind, die das übliche "Entwurfsmuster" lösen soll - sie sind Probleme beim Spieldesign, d. eine Reihe von Anforderungen für die Endsoftware. Daher sind die typischen Softwaremuster nicht wirklich anwendbar. Aus diesem Grund gibt es nicht wirklich Software-Muster für die Art von Dingen, die Sie beschreiben, da es in den meisten Fällen keine vereinbarten Spezifikationen und Anforderungen für mehrere Spiele gibt. Diese Features hängen in der Regel stark vom Spieldesign ab und die Programmstruktur folgt von dort. Es gibt sicherlich Beispiele in verschiedenen Büchern gegeben - z. Die Game Programming Gems Serie wird dringend empfohlen - aber sie sind nur Ansatzpunkte, die Sie für Ihre speziellen Anforderungen anpassen müssen.
z. Quests - Können sie wiederholt werden? Kann eine Quest "gescheitert" sein oder bleiben sie unvollständig? Haben sie mehrere Stufen? Gibt es Kriterien, die erfüllt sein müssen, bevor die Quest überhaupt angeboten werden kann? Gibt es ein Journal, das aktualisiert werden muss? Gibt es am Ende eine automatische Belohnung? Was sind die Bedingungen für die Fertigstellung und wie und wann werden sie überprüft? Werden bestimmte Ereignisse durch die Annahme der Quest oder durch deren Abschluss ausgelöst? Gibt es eine Vorstellung vom Fortschritt eines Spielers innerhalb einer Quest? Sind einige Aufgaben obligatorisch? Sind Quests in irgendeiner Weise geordnet? All dies wird sich von Spiel zu Spiel auf Basis des Designs massiv unterscheiden.
Nun gibt es ein paar Techniken und Ansätze, die Spieleprogrammierer häufig verwenden, z. Einbettung einer Skriptsprache, räumliche Datenbanken mit 2D-Hashing oder Partitionierung, Finite-State-Maschinen usw., aber das sind wirklich nur generische Werkzeuge, die den Problemen, mit denen Spieleentwickler konfrontiert sind, recht gut entsprechen.
Wenn du die Viererbande liest, ist der gesamte Bereich der kreativen Muster darauf ausgerichtet, ein Labyrinth zu erschaffen.
Meine bescheidene Meinung ist, dass alle Muster können in Spielen nützlich sein, aber im Allgemeinen die mächtigste Verwendung von Mustern sind diejenigen, die aus der Entwicklung hervorgehen, ohne ein bestimmtes Ziel im Voraus anzusprechen.
>Mit anderen Worten, Muster sind eine gute Sprache für was ist . Sie sind jedoch schrecklich als Implementierungsstrategie zu verwenden, da ihre Verwendung auf diese Weise oft zu kompliziertem, aufgeblähtem und langsamem Code führt.
Ich würde sagen, dass die meisten von ihnen stark genutzt werden können, abhängig von der Art des Spiels könnten einige nützlicher sein als andere.
Wenn ich einige der einflussreichsten im Design eines Spiels wählen müsste:
Tags und Links design-patterns