Spielstände speichern und laden

Aus Spieleprogrammierer-Wiki
Wechseln zu: Navigation, Suche

Bitte beachte, dass dieser Artikel noch unvollständig ist! Hilf mit, ihn fertigzustellen.
Näheres dazu findest du ggf. auf der Diskussionsseite. Wenn du der Meinung bist, dass der Artikel vollständig ist, kannst du diesen Hinweis entfernen.

Inhaltsverzeichnis

Einleitung

Die Speicherfunktion in Spielen mag auf den ersten Blick trivial erscheinen, ist sie aber bei weitem nicht. Die Art und Weise wie das Spiel gespeichert werden kann, nimmt starken einfluss auf die Motivation des Spielers. Sind die Spielabschnitte zu groß ohne das der Spieler Abspeichern kann, führt das zu Frustration wenn der Spieler stirbt und immer wieder von vorne Anfangen muss. Im Gegensatz dazu kann eine immer und überall Speicherfunktion das Spiel zu leicht machen und auch das kann dazu führen das der Spielspaß darunter leidet. Aus diesen Gründen sollte man sich über die Speicherfunktion etwas mehr Gedanken machen.

Arten Spielstände zu speichern

In diesem Abschnitt gibt es ein Überblick über die Möglichkeiten Spielfortschritte zu speichern.

Level-Code

Eine sehr einfache Methode den Spielfortschritt festzuhalten ist der Level-Code. Solch ein Code besteht meistens aus Zahlen, Buchstaben oder (Spiel-)Symbolen. Er fand besonders zu Beginn der Spieleentwicklung oft Verwendung in Jump and Run-Spielen, Denkspielen oder Strategiespielen. Typische Vertreter sind Mega lo Mania, Battle Isle, Push Over oder Gods.

In der Regel wird für jeden durchgespielten Level ein Code freigeschaltet. Möchte der Spieler das Spiel fortsetzen, so gibt er den entsprechenden Code ein. Genau genommen wird hierbei nichts gespeichert. Gewissermaßen wird das Speichern der Daten auf den Spieler ausgelagert, der sich den Code auf einem Zettel oder in einer Datei merkt. Darum wurde diese Methode oft von Konsolenspielen angewendet, die (aus Kostengründen) keinen wiederbeschreibbaren Speicher auf ihrer Catridge zur Verfügung hatten. Es ist möglich, im Level-Code gewisse einfache Informationen wie die Punktzahl des Spielers versteckt zu kodieren (eine Prüfsumme schützt gegen einfache Manipulationsversuche). Auch für Spiele, die keine Daten auf dem Rechner des Spielers ablegen möchten oder dürfen, ist der Level-Code eine Alternative (z.B. Flash-Spiele).

Die Vorteile von Level-Codes liegen in der einfachen Implementierung und darin, dass keine Daten auf dem Rechner abgelegt werden müssen. Der Spieler kann seinen Spielstand von überall aus wiederherstellen, solange er den Level-Code kennt.

Der Hauptnachteil von Level-Codes ist ihre geringe Flexibilität. Es können nur sehr wenige zusätzliche Informationen in einem Level-Code untergebracht werden, wenn seine Länge begrenzt ist. Die Länge ist dadurch praktisch begrenzt, dass der Spieler den Code meist per Hand aufschreiben und später wieder eingeben muss.

Speicherpunkte

Speicherpunkte geben dem Spieler die Möglichkeit, den aktuellen Spielstand, nur an bestimmten Stellen des Spiels zu speichern. Die Implementierung in das Spiel kann dabei aber sehr unterschiedlich sein. Eine Variante kann z.B. sein, wie im Spiel Final Fantasy XII, an gewissen Stellen in einer frei begehbaren Spielwelt Speicherpunkte zu setzen. Eine andere Variante könnte es sein den Spieler zu fragen ob er nach einem gewissen Levelabschnitt abspeichern möchte, wie im Spiel Super Mario World.

In jedem Fall sollte bei dieser Methode darauf geachtet werden, das ausreichend Speicherpunkte vorhanden sind.

freies Speichern

Unter freies Speichern versteht man, dass der Spieler grundsätzlich zu jeder Zeit und an jedem Ort im Spiel abspeichern kann. Dies sollt aber einigen Einschränkungen unterliegen. In Zwischensequenzen oder anderen Teilen des Spiels, in dem der Spieler keine aktive Kontrolle hat, sollte es dem Spieler nicht möglich sein das Spiel zu speichern.

Dem Spieler könnten aber noch mehr Beschränkungen auferlegt werden z.B.

normales Speichern

Das normale Speichern erfolgt meistens über ein Menü. Dort können dann alte Spielstände überschrieben werden oder neue Spielstände angelegt werden und ihnen ein eigener Name gegeben werden.

Quicksave

Die Quicksave-Funktion speichert das Spiel komfortabel über eine Taste oder Tastenkombination ab. Das ermöglicht dem Spieler ein schnelle Speicherung ohne großartig den Spielfluss zu Unterbrechen. Meistens ist für diese Funktion ein bestimmter Speicherplatz reserviert der dann immer wieder überschrieben wird.

Autosave

Die Autosave-Funktion speichert das Spiel Automatisch. Dies kann erfolgen wenn im Spiel ein Gebiet/Level verlassen wird und ein neues Gebiet/Level betreten wird. Es kann auch nach einem bestimmten Zeitintervall gespeichert werden oder aber auch nach einem bestimmten Ereignis im Spiel.

Speicherfunktion als Teil des Spielkonzepts

Der Schwierigkeitsgrad eines Spiels kann auch durch die Speicherfunktion verändert werden. In einem Rollenspiel zum Beispiel kann das Abspeichern, im Schwierigkeitsgrad "leicht", immer und überall erfolgen. Wechselt der Spieler in den Schwierigkeitsgrad "mittel", kann es z.B. nur noch in gewissen Gebieten im Spiel möglich sein abzuspeichern. Im Schwirigkeitsgrad "schwer" wird das Spiel dann nur noch beim Beenden des Spiels Gespeichert. All das läst sich natürlich auch auf andere Genres übertragen.

Die Ladefunktion

Die Möglichkeit das Spiel wieder herzustellen sollte im Hauptmenü implementiert werden. So kann direkt nach Spielstart, ohne große Umwege, das Spiel geladen werden. Wenn es zum Spielkonzept passt, kann es auch eine Ladefunktion im eigentlichen Spiel geben, um schnell und bequem einen alten Spielstand wiederherzustellen.

Das Dateiformat des Spielstandes

Worüber man sich auf jedenfall auch Gedanken machen muss, ist, welches Dateiformat man verwenden will. Ein Aspekt dabei stellt die Manipulierbarkeit. Eine Manipulation stellt in dem Zusammenhang eine vom Entwickler ungewollte Veränderung der Spielstände dar. Es gibt grundsätzlich keinen Schutz, der mit Sicherheit vor Manipulation schützt, aber durch die Wahl des richtigen Formats kann die Zeit verzögert werden, bis bekannt ist, wie die Spielstände aufgebaut sind und diese somit editiert werden können.

Eine Möglichkeit zum Schutz vor Manipulation stellt in der Regel das Verwenden einer Dateiendung, die nicht direkt auf den Dateityp schließen lässt, wie .sav. Bei textuellen Formaten dürfte dies kaum helfen, da der erste Versuch bei einer Manipulation in der Regel mit einem normalen Texteditor durchgeführt wird. Binäre Formate könnten sich beim Öffnen durch ihre magische Zahl entlarven, sofern bei dem Dateityp eine solche verwendet wird.

XML

Manipulierbarkeit

Da es sich bei XML um ein textuelles, weit verbreitetes Format handelt, kann man davon ausgehen, dass es nicht besonders schwer ist, Dateien dieses Typs zu bearbeiten.

YAML

Manipulierbarkeit

YAML ist ein im Gegensatz zu XML weniger stark verbreitetes, textuelles Format. Im Gegensatz zu XML dürfte die Zeitspanne bis zur Analyse der Datenstrukturen etwas, aber nur geringfügig, größer sein.

CSV

Text

Datenbank

Manipulierbarkeit

Da es sich bei Datenbanken um binäre Dateien handelt, sind diese grundsätzlich nur schwer mit Text-/Hexeditoren zu bearbeiten. Allerdings ist es relativ unproblematisch mit dem verwendeten eingebetteten DBMS auf die Datei zuzugreifen und diese zu verändern. Da solche Datenbanksysteme meist keine Benutzerverwaltung verfügen, kann vor einem solchen Zugriff kein Schutz eingerichtet werden.

Eigenes binäres Format

Manipulierbarkeit

Da eigene binäre Formate nicht verbreitet sind, stellen diese grundsätzlich den besten Schutz gegen Manipulationen dar. Allerdings sollte man sich vor Augen halten, dass auch dieses Format analysiert werden kann und dadurch der Schutz nach einer gewissen Zeitn icht mehr zwingend gegeben ist.

Quellen zum Durchlesen

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge