Wie man Speicherstände erstellt

7
Published on 5 Aug, 2014. Last updated 25 Feb, 2019

Construct 2 bietet einen einfachen Weg um Speicherstände zu erstellen. Diese erlauben es den Spielern, das Spiel zu speichern .Wenn diese später weiterspielen wollen , können sie genau von dort weiterspielen wo sie zuletzt gespeichert haben. Das ist für lange Spiele wichtig, Vorallem wenn die Level oder Welten sehr lang sind. Es ist möglich einen sehr simplen "Letztes erreichtes Level" Speichertypen zu nutzen.(Durch WebStorage).Jedoch ist es normalerweise sehr schwer den kompletten zustand jedes Objekts zu speichern.Die System Objekte Save(Speichern) und Load(Laden) Tun glücklicherweise genau dies , schnell , einfach und ohne viel arbeit einen funktionierenden Speicherstand zu erstellen.

Grundlegende Speicherstand Unterstützung

Ein einfacher weg um Speicherstände durch die Save und Load Aktionen zu erstellen , ist wenn eine bestimmte Taste gedrückt wird.Zum Beispiel:

Für Handy Spiele wirst du dann zwar irgentwo einen Berührbaren Knopf machen müssen , aber um Dieses Tutorial Simpel zu halten werden wir uns auf Desktop Spiele spezialisieren.

Speicherstände werden vom Browser auf der Festplatte abgespeichert. Das bedeutet das die Spieler ihren Computer oder z.B. ihr Handy ausschalten können , Am nächsten Tag weiterspielen wollen und der Speicherstand immernoch erfolgreich geladen werden kann. Jedoch sind die Speicherstände an den browser gebunden. Zum Beispiel , Mozilla Firefox und Google Chrome speicher die Speicherstände seperat; Wenn ein Spieler ein spiel speichert Während er Google Chrome benutzt , und nun zu Mozilla Firefox wechselt , dann wird dieser Speicherstand nicht geladen werden können.

Speicherstände werden nicht in der Cache des Browsers gespeichert. Die Cache des Browsers ist nur ein temporärer Speicherort der dazu benutzt wird , Sachen wie Bilder von Webseiten zu speichern , Damit diese nicht bei jedem erneutem besuch der Website neu heruntergeladen werden müssen und Sie wird regelmäßig Gelöscht. Speicherstände werden (glücklicherweise)nicht dort gespeichert , sondern in der WebStorage oder dem IndexedDB , Welche permanente Speicherorte sind , die nicht beim löschen der Cache betroffen sind.

Speicher Slots

Oft ist es sehr nützlich den Spielern Platz für mehrere Speicherstände zu geben. Dies ermöglicht save slot. Jeder Slot ist eine seperate Datei welche einen anderen Speicherständ besitzt. Du kannst den Spielern eine Menge an Speicher-Slots geben oder ihnen die Möglichkeit bieten ihre eigenen Namen für ihre Speicherstände einzugeben.

Bedenke dass die meisten Browser eine Grenze besitzten über wie viele Daten eine Website speichern kann. Dies ist nur sehr selten ein problem für die meisten Spiele, Aber wenn du viele seperate Speicher-Slots verwaltest wirst du vielleicht das Speicherlimit erreichen. Nur eine begrenzte anzahl an Speicher-Slots zur verfügung zu stellen ist eine Gute Lösung um sicherzustellen dass du niemals Die Grenze erreichst. Die benutzung der No Save eigenschaft kann dir ebenfalls dabei helfen die Speicherstände kleiner zu machen (Siehe Unten).

Fertig Auslöser

Das speichern kann einen kurzen Augenblick in anspruch nehmen , Während das Spiel zum Großteil der Zeit weiterläuft . Wenn der Speichervorgang beendet ist, Wird der System Auslöser On save complete ausgelöst. Ebenso kann das laden einen kurzen Augenblick in Anspruch nehmen , und löst den System Auslöser On load complete aus wenn der Ladevorgang beendet ist. Beachte dabei dass alle änderungen nach der Save Aktion , jedoch bevor On save complete ausgelöst wird , vielleicht immernoch Gespeichert werden.

Wenn der Spieler versucht einen Speicherstand zu laden welcher noch nicht gespeichert wurde , dann wird On load failed Ausgelöst. Wenn der Spieler versucht einen Speicher-Slot zu laden , wirst du mit diesem event vielleicht einfach einen neuen Speicherstand erstellen.

Die 'No Save' Eigenschaft

Alles mit der No Save Eigenschaft wird nicht gespeichert, Und wird beim laden nicht beachtet. Es ist gut die No Save Eigenschaft jedme statischem Objekt zu geben wie z.B:Der Umgebung und den Hintergründen. Sie kann auch für Objekte genutzt werden welche jeden Tick aktualisiert werden. Dies wird nichts am Spiel ändern , aber es macht die Speicherstände um einiges kleiner und schneller im speichern und laden , da unnötige Informationen entfernt wurden. (Es wird auch benötigt um continuous preview effective zu benutzen.)

Das Projekt nach dem speichern ändern

Speicherstände sollten änderungen in deinem Projekt standhalten. Du solltest sachen wie Variablen , Eigenschaften und andere Objekte hinzufügen , entfernen oder neu anordnen können , während du deine alten Speicherstände immernoch erfolgreich laden kannst. Beachte jedoch alles was du neu hinzufügst wird keine Speicherdaten haben , weshalb es beim laden nicht beachtet wird. Wenn du etwas vom Projekt entfernst wird es nicht mehr zu laden sein. Du kannst individuelle Instanzen löschen ohne Speicherstände zu verändern , wenn du aber ganze Objekt typen, Layouts oder Layer, Werden sie nie wieder aus einem Speicherstand geladen.

Fortgeschrittene Themen

Alles bisher genannte genügt für ein einfaches speichern und laden System. Fortgeschrittene Benutzer werden vielleicht an den folgenden Themen interressiert sein welche weiter ins Detail über das Speicherstand System gehen.

Verfolgen welche Slots benutzt werden

Die System speichern/laden Aktionen sagen dir nicht welcher Slot gespeichert wurde. Der beste weg um dies zu Verfolgen ist ein paar extra Meta-Daten für dich im WebStorage Objekt zu speichern.Zum beispiel immer wenn du einen Slot speicherst, Schreibe ebenfalls einen WebStorage Schlüssel der zeigt welcher Slot gespeichert wurde. Du kannst auch ein bisschen andere Metadaten wie den Spielernamen oder einen kleinen Screenshot zu den Spieldaten als URI hinzufügen. Dann kannst du sagen welche Slots für die WebStorage Daten die gespeichert wurden benutzt werden. Du kannst auch andere Aktionen wie Das zurücksetzen oder säubern der Speicherstands Daten einfach nur durch das anpassen der Meta-Data-Schlüssel , Wie z.B. sie entfernen damit der Slot so aussieht als wäre er wieder leer.

Was und was nicht gespeichert wird

Der volle Zustand des Spiels - Mit Instancen variblen, globalen und localen Variablen, Eigenschaften Einstellungen , Effekten, Partikeln , Aktuell spielender Musik , etc. - wird gespeichert. Jedoch gibt es ein paar ausnahmen , Hoffentlich keine Überraschungen. Die folgenden Sachen werden nicht gespeichert und werden das laden nicht beeinflussen:

- Eingabe Zustand (z.B. Maus position , was der Spieler für Tasten drückt und berührt)

- AJAX Anfragen

- WebSocket Verbindungen

- Das XML Objekt

- Benutzer Medien Video oder Audio feeds

- Facebook login

- WebStorage Status

- CocoonJS/Windows 8 Status

- Jeder in-app Kauf auf jeder Plattform

- Alles mit der 'No Save' Eigenschaft

Using the JSON data directly

In both the On save complete and On load complete triggers, the system SaveStateJSON expression returns a string of all the JSON data for the savegame. Note the SaveStateJSON expression will return an empty string outside of these triggers; the triggers are your only opportunity to access the data directly.

If you have your own server, it's possible to make shared savegames by posting the JSON data to the server with the AJAX object and storing it in a server database. Alternatively some platforms like Windows 8 and Clay.io allow you to store data for the logged in user, where it's shared anywhere they log in. This is a useful for allowing users to take savegames with them wherever they go.

Once you get the JSON string back, you can load the game from it using the Load from JSON system action.

Verschiedene Versionen

Normalerweise kannst du dein projekt ändern und alte Speicherstände werden normal laden. Jedenfalls werden manche fortgeschrittene Benutzer vielleicht gerne genau verfolgen aus welcher Version ihres Projektes ein Speicherstannd stammt . Dies kannst du durch das benutzen einer globalen Variable tun. Nenne die Variable Version und setzte ihren wert zu 1. oder höher.(je nach dem in welcher version sich dein Spiel gerade befindet).Wenn du eine neue Version deines Spiels herausbringst , ändere den Wert der Variable zu einer neuen zahl, z.B. 2. Wenn nun On load complete ausgelöst wird, wurde die Variable fertig geladen und hat die Nummer von Version Vom Zeitpunkt des letzten benutzen der Save Aktion. Dies kann sehr hilfreich sein wenn du viele Objekte zum Spiel hinzufügst , aber sichergehen willst dass diese zerstört oder versteckt sind wenn alte Speicherstände geladen werden.

  • 0 Comments

Want to leave a comment? Login or Register an account!