Ich entwickle eine einfache Spiel-Engine (in C #, wenn es darauf ankommt), und mir fällt kein angemessener Weg ein, Skripte in Bezug auf die Architektur zu implementieren.
Es ist eine einfache rundenbasierte Strategie mit benutzerdefinierten, logikunabhängigen Animationen für Schlachten. Es verfügt über eine globale Architekturschicht für System- / Low-Level-Inhalte und vor allem über zwei Hauptmodule - Logik und Game-View-Ding -, die über einen Event-Manager kommunizieren.
Und die Sache ist, ich möchte wirklich, dass die Skripte sowohl Dinge beeinflussen, die mit der Spiellogik zusammenhängen (Ändern von Einheitenparametern usw.), als auch Dinge, die mit der Spielansicht zusammenhängen, wie spezielle Animationen / Dialoge für Schlachten, die von a abhängen könnten bestimmter Skript-Trigger.
(Um ehrlich zu sein, ich möchte im Idealfall, dass das Skript den Spielfluss steuert und nur die Hauptmechanik / -grafik der Logik / -ansicht überlässt, aber ich bin neu in diesem Bereich, daher bin ich mir nicht sicher, ob ich das jetzt tun kann.)
Ich habe über drei Optionen nachgedacht:
Lassen Sie das Scripting einfach in der Logik leben, aber informieren Sie es über die grafische Seite des Spiels. Aber das würde die Logik / Sicht-Aufteilung sehr vage machen, nicht wahr?
Machen Sie das Scripting zu einem separaten Modul, das Ereignisse mit dem gleichen Ereignis-Manager mit den anderen austauscht. Aber das würde erfordern, sehr vorsichtig mit der Ereignissynchronisation umzugehen, denke ich ... und dem Manager eine ganze Menge Ereignistypen hinzuzufügen. (Immer noch persönlicher Favorit)
Machen Sie das Scripting vor allem zu einem Modul, damit es Funktionen der Logik / Sicht direkt beeinflussen / aufrufen kann. Dies ermöglicht eine von Natur aus breitere Funktionalität, die es kostet, das gesamte Ereignisaustauschschema zu durchkreuzen und zu befürchten, dass das Skript Dinge kaputt machen kann, selbst wenn dies eigentlich nicht der Fall sein sollte.
Daher kann ich mich weder für eine dieser Optionen entscheiden noch mir eine bessere Methode zum Einfügen des Skriptmoduls vorstellen ... Irgendwelche Vorschläge oder nützliche Links?
Vielen Dank!
Ps danke für die Migration der Frage, wusste nicht, dass es einen speziellen Bereich für gamedev gibt