Spielstände Speichern - leicht gemacht

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Spielstände Speichern - leicht gemacht

      Spielstände Speichern - leicht gemacht

      Dieses kleine Tutorial soll ein kleiner Leitfaden für Anfänger zum Speichern des aktuellen Spielstandes sein, fortgeschrittene GML Benutzer
      werden hier wahrscheinlich nicht mehr viel Neues lernen. Außerdem werden hier keine fertigen Lösungen geliefert, sondern nur Denkanstöße
      gegeben - Man sollte sich also mit den GM Funktionen und Variablen auskennen und wissen, wie sie zu benutzen sind.

      Inhalt:
      • 1. Die Game Maker Funktionen
      • 2. Was muss/sollte ich Speichern?
      • 3. Wie Speichere ich?
      • 4. Speichern - Laden Menüs
      1. Die Game Maker Funktionen

      Der Game Maker selbst bietet bereits einige Funktionen zum Speichern und Laden von Spielständen an:
      game_save(string) Speichert das Spiel unter dem Namen "string" ab.
      game_load(string) Lädt einen Spielstand aus der Datei "string".
      Allerdings sind diese besonders bei größeren Projekten nicht sehr empfehlenswert. Teilweise speichern sie zuviele Daten ab, manchmal, besonders wenn man Datenstrukturen verwendet, viel zu wenig. Auch ist es oft sehr verwirrend, wie das Spiel nach dem laden des Spielstandes fortfährt: Der Rest des Events wird einfach fallen gelassen, dafür werden alle anderen Events noch ausgeführt usw.
      Kurz gesagt: Es fehlt die Kontrolle darüber, was gespeichert wird und was danach gemacht wird.
      Mit ein paar selbstgeschriebenen Funktionen ist man in der Lage, diese Dinge zu umgehen.

      2. Was muss/sollte ich speichern?

      Vor dem Funktionen schreiben, kommt zuerst die Überlegung, was muss ich überhaupt speichern? Was ist notwendig für mein Spiel?
      Dabei kommen je nach Genre oder Spieltyp unterschiedliche Sachen raus. In einem klassischen Jump'n'Run wird es reichen zu speichern,
      welche Levels geschafft wurden und in einem Logikspiel ist es sogar nur nötig, die Nummer des aktuellen Levels zu speichern.
      Aufwändiger ist es, bei einem Spiel wie Mahjong, wenn man mitten im Spiel speichern können will. Auch ein RPG verlangt mehr Arbeit, da
      hier Statuswerte, Position und das gesamte Inventar gespeichert werden muss.
      Ist diese Vorüberlegung - am Besten schriftlich - erledigt, kann man zum nächsten Schritt übergehen.

      3. Wie speichere ich?

      Wichtig ist auch die Frage, in welcher Form die Daten gespeichert werden. Dabei empfiehlt sich eine normale Textdatei, also keine Binärdaten
      (Das kann zwar Speicherplatz sparen, führt aber auch dazu, dass man sich bei der Fehlersuche schwerer tut). Dafür stellt der GM die nützlichen
      file_text_write und file_text_read Funktionen zur Verfügung, mit denen sich sehr gute Speicherfunktionen schreiben lassen.
      In welcher Form schreibt man nun die Daten in die Datei? Auch hier gibt es keine Richtlinie, an die man sich bei jedem Spiel halten kann.
      Speichert man viele gleichartige Objekte mit Position und verschiedenen anderen Variablen (Leben, Munition...), ist es keine schlechte Idee,
      pro Objekt eine Zeile in der Datei zu benutzen und die einzelnen Werte mit einem Trennezeichen voneinander zu separieren. Bei einem Objekt,
      für das Name, Leben und munition gespeichert werden, könnte eine Zeile so aussehen:
      Heinz~25~100
      Beim Laden werden die einzelnen Zeilen ausgelesen, zerlegt und den entsprechenden Variablen zugewiesen.
      Öfters kommt es auch vor, dass man eine feste Anzahl Werte (zum Beispiel Spielername , Spielermunition und Spielergesundheit) UND
      eine variable Wertezahl (Gegnerobjekte mit Namen usw) speichern möchte. Hier gibt es zwei Vorgehensweisen, entweder, man speichert
      zuerst die Werte, deren Anzahl man kennt in die Datei und danach die mit variabler Anzahl, sodass man beim Auslesen das Ende mit
      file_text_eof() ermittelt, oder man setzt vor den Werteblock variabler Größe eine Zahl, die die Elementeanzahl im Block angibt.
      Durch beide Verfahren lässt sich erreichen, dass man immer genau weiß, welcher Wert in der Datei wofür steht.

      4. Speichern-Laden Menüs

      Kurz vor Schluss noch ein paar Überlegungen zu den Speichern und Laden Menüs. Ein Laden Menü sollte natürlich auf jedenfall im Startbildschirm
      des Spiels zu finden sein, damit der Spieler ohne lange rumklicken zu müssen sein Spiel wieder aufnehmen kann. Es empfiehlt sich, die Speicher-
      dateien in einen extra Ordner auszulagern, damit man mit den file_find Funktionen dem Spieler eine Liste der verfügbaren Spielstände anbieten
      kann, ohne, dass der erst lange mit einer Suchmaske rumfuhrwerken muss.
      Für ein Spiel extrem wichtig sind auch die Stellen bzw das Konzept wann man Speichern kann. Manche Programmierer lassen den Spieler immer speichern,
      andere nur an bestimmten, genau definierten Positionen. Bedenke dabei aber immer, dass ein falschgewähltes Konzept dem Spieler das gesamte
      Spiel verderben kann! Wenn er immer speichern kann, dann besteht die Gefahr, dass er vor gefährlichen Stellen oder vor Entscheidungen speichert
      und bei einem unerwünschten Ergebnis es einfach direkt nocheinmal probieren kann. Dadurch sinkt der Schwierigkeitsgrad des Spieles.
      Speicherstellen führen dazu, dass der Spieler bei einem Fehler Teile des Spieles nocheinmal durchspielen muss. Dadurch steigt der Schwierigkeitsgrad
      des Spieles an. Allerdings muss man hier die Speicherstellen sehr umsichtig wählen, sind sie zu nahe beeinander, wirkt es wieder wie eine jederzeit Speichern Möglichkeit. Sind sie zu weit auseinander, steigt der Frustrationsgrad, wenn man drei schwierige Stellen hintereinander meisten muss und bloß wegen einem Fehler bei der letzten die ersten beiden nocheinmal durchschaffen muss.
      Die nächste Überlegung ist, ob man dem Spieler beim Start ein festes Speicherprofil verschafft, sodass er beim eigentlichen Speichern keine Auswahl mehr hat, oder ob er bei jedem Speichern die Datei selber auswählen darf.

      Edit: Fehler behoben, danke KröteGAMES
      ___________________________________________________________
      Beware of wild pointers
      ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Spellmaker ()

    • Die Game Maker internen Funktionen speichern einfach mal alles (mit einigen Ausnahmen) in eine Datei.
      Das auf der einen Seite Speicherplatzverschwendung und außerdem will man öfters auch Dinge (besonders
      Datenstrukturen) speichern, die sonst einfach außen vor blieben.
      Kurz gesagt: Die GM Funktionen sind für ein größeres Spiel einfach zu unflexibel.
      Ich hoffe, das beseitig die letzen Klarheiten :P
      Gruß, Spellmaker
      ___________________________________________________________
      Beware of wild pointers
      ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
    • Benutzer online 1

      1 Besucher