Ich plane ein Abenteuerspiel und kann nicht herausfinden, wie das Verhalten eines Levels in Abhängigkeit vom Fortschritt der Geschichte richtig umgesetzt werden kann.
In meinem Einzelspielerspiel gibt es eine riesige Welt, in der der Spieler an verschiedenen Punkten des Spiels mit Menschen in einer Stadt interagieren muss. Abhängig vom Fortschreiten der Geschichte werden dem Spieler jedoch verschiedene Dinge präsentiert, z. Die Türen wurden nur zu bestimmten Tageszeiten nach Beendigung einer bestimmten Routine geöffnet. Verschiedene Cut-Screen- / Trigger-Ereignisse treten erst auf, nachdem ein bestimmter Meilenstein erreicht wurde.
Ich dachte naiv daran, eine switch {} -Anweisung zu verwenden, um zu entscheiden, was der NPC sagen soll oder wo er zu finden ist, und Questziele erst dann interaktiv zu machen, wenn der Zustand einer globalen game_state-Variablen überprüft wurde. Mir wurde jedoch klar, dass ich schnell auf viele verschiedene Spielzustände und Schaltzustände stoßen würde, um das Verhalten eines Objekts zu ändern. Diese switch-Anweisung wäre auch sehr schwer zu debuggen, und ich denke, es könnte auch schwierig sein, sie in einem Level-Editor zu verwenden.
Also dachte ich, anstatt ein einzelnes Objekt mit mehreren Zuständen zu haben, sollte ich vielleicht mehrere Instanzen desselben Objekts mit einem einzelnen Zustand haben. Auf diese Weise kann ich, wenn ich so etwas wie einen Level-Editor verwende, eine Instanz des NPC an allen verschiedenen Orten platzieren, an denen er jemals erscheinen könnte, und auch eine Instanz für jeden Gesprächszustand, den er hat. Aber das bedeutet, dass es eine Menge inaktiver, unsichtbarer Spielobjekte geben wird, die im Level schweben, was für das Gedächtnis problematisch oder in einem Level-Editor einfach schwer zu erkennen sein kann, ich weiß es nicht.
Oder erstellen Sie einfach für jeden Spielstatus ein identisches, aber separates Level. Dies ist die sauberste und fehlerfreieste Art, Dinge zu tun, aber es fühlt sich nach massiver manueller Arbeit an, um sicherzustellen, dass jede Version des Levels wirklich identisch ist.
Alle meine Methoden fühlen sich so ineffizient an. Gibt es eine bessere oder standardisierte Methode, um ein Verhalten auf einer Ebene zu implementieren, das vom Fortschritt der Story abhängt?
PS: Ich habe noch keinen Level-Editor - ich denke darüber nach, etwas wie JME SDK zu verwenden oder mein eigenes zu erstellen.