Savegame-Skript

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

    • Savegame-Skript

      Da es anscheinend noch kein Tutorial hier auf GM-D gibt, das sich mit dem Thema Speicherstände (Savegames) beschäftigt, versuche ich diese Lücke mal zu füllen.
      Hinweis: Dies ist mein erstes Tutorial, deshalb würde ich mich über Verbesserungsvorschläge & Kritik freuen.

      Es gibt zwar das Script game_save(filename), jedoch ist dieses nicht auf die eigenen Bedürfnisse anpassbar. Dieses Manko lässt sich mit diesem Tutorial leicht beheben:

      Vorraussetzungen:
      GM Pro/registriert
      GML-Kentnisse
      Umgang mit INI-Dateien

      1:
      Man erstellt ein Objekt, ich nenne es hier save_controller.
      Persistent: AN //Damit man es nicht in jeden Room setzen muss
      Visible: AUS

      PRESS KEY-Event: //Hier kann man jedes beliebige Zeichen wählen. Durch Drücken dieser Taste wird der Speichervorgang ausgelöst

      GML-Quellcode

      1. //Alle Instancen durchzählen...
      2. for (i=0; i<instance_count; i+=1)
      3. {
      4. iii = instance_id[i];
      5. //...und bei jeder das "Speicher-Event" (=user defined 0) auslösen:
      6. with iii event_perform(ev_other,ev_user0);
      7. }


      2:
      Folgendes gehört in jedes Objekt, das gespeichert werden soll:

      USER DEFINED 0-Event: //Findet ihr in der Kategorie Other

      GML-Quellcode

      1. ini_open("savegame.sav"); //Öffnet die INI-Datei, die als Savegame-Datei dient. Der Dateiname kann frei gewählt werden
      2. //(*Hier alle Variablen hereinschreiben, die in diesem Objekt vorkommen:
      3. //Standart-Variablen:
      4. ini_write_string(string(id),"x",x);
      5. ini_write_string(string(id),"y",y);
      6. ini_write_string(string(id),"direction",direction);
      7. //...
      8. //Objekt-eigene Variablen:
      9. ini_write_string(string(id),"munition",munition);
      10. //...
      11. //*)
      12. ini_close();
      Alles anzeigen


      Was geschieht nun genau:
      Drückt man die Taste, die man im "Press Key"-Event angegeben hat, wird bei allen Objekten das "User 0"-Event ausgelöst.
      Jedes Objekt erstellt nun eine eigene Section in der INI-Datei, die als Savegame dient.
      Die Section (trägt als Namen die ID des zugehörigen Objekts) enthält nun die Namen aller Variablen samt deren aktuelle Werte, die im "User 0"-Event eingetragen wurden.

      Ein Savegame, das so erstellt wurde, kann z.B. so aussehen:
      [10063]
      x=230
      y=240
      direction=0
      munition=5


      Ich hoffe es wurde alles ausreichend und verständlich kommentiert und bei Fragen stehe ich natürlich zur Verfügung. Wahrscheinlich ist dies nicht gerade das beste Savegame-System, aber vielleicht ist es ja für den ein oder anderen nützlich.

      Mfg, Toshiro
    • Ziemlich gutes script. einfach aber gut. Alles Was man noch hinzufügen könnte3 wäre wie man das ganze wieder ausließt aber so schwer sollte das ja auch nicht fallen. Ich finde es ist sehr gut auskommentiert und man versteht alles. Großes Lob. für das erste Tut...Perfekt!
      mfg gamer_08