Ich entwickle ein 2D-Metroidvania, das aus einer Reihe miteinander verbundener Ebenen besteht, die sich überarbeiten lassen.
Jedes Level wird durch eine gekachelte TMX- Datei dargestellt, in der ich angegeben habe, wo verschiedene Objekte verschiedener Sprite-Klassen erscheinen (z. B. Feinde, Pickups, Hebel usw.). Wenn ich ein neues Spiel starte, ein gespeichertes Spiel lade oder ein Level ändere, durchläuft meine Spieleschleife die entsprechende TMX-Datei und generiert alle Objekte in diesem Level.
Ich gehe mit Leveländerungen folgendermaßen um: Wenn das Player
Objekt ein Objekt schneidet Portal
, wird eine change_map()
Methode aufgerufen, die eine neue Karte lädt (die dem geschnittenen Portal zugeordnete) und den Spieler an der entsprechenden Position auf der neuen Karte positioniert.
Einige meiner Objekte haben Staaten , die Ich mag würde sein persistent durch Pegeländerungen und speichern und das Spiel zu beenden. Wenn zum Beispiel ein Spieler eine Tür entriegelt und das Statusattribut der Tür auf "offen" gesetzt ist, möchte ich, dass die Tür offen ist, wenn der Spieler zurückkehrt. Ich möchte etwas Ähnliches für Hebel, die nach links oder rechts eingestellt werden können, und verschiedene andere Objekte. Außerdem hat der Spieler manchmal Gegenstände gesammelt, die ich nicht wieder herstellen möchte, wenn der Spieler den Bereich erneut besucht.
Meine Frage ist also, wie ich mit dieser Art von Beharrlichkeit umgehen kann.
Ich arbeite in Python, obwohl ich denke, dass Sie davon abstrahieren können.
quelle
properties
Feld geben, das Sie ändern, und die Kacheln nurproperties
als Hinweis auf die zu ändernde Eigenschaft verwenden (alle Daten werden jedoch in Ihrem Sprite gespeichert). Sie können die Kachel auch einfach an Ihr Sprite übergeben, damit Sie die Kachel aus dem Sprite ändern können :) Wenn nicht klar ist, was ich meine, kann ich noch mehr Pseudocode nachahmen