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
2:
Folgendes gehört in jedes Objekt, das gespeichert werden soll:
USER DEFINED 0-Event: //Findet ihr in der Kategorie
Other
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
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
2:
Folgendes gehört in jedes Objekt, das gespeichert werden soll:
USER DEFINED 0-Event: //Findet ihr in der Kategorie

GML-Quellcode
- ini_open("savegame.sav"); //Öffnet die INI-Datei, die als Savegame-Datei dient. Der Dateiname kann frei gewählt werden
- //(*Hier alle Variablen hereinschreiben, die in diesem Objekt vorkommen:
- //Standart-Variablen:
- ini_write_string(string(id),"x",x);
- ini_write_string(string(id),"y",y);
- ini_write_string(string(id),"direction",direction);
- //...
- //Objekt-eigene Variablen:
- ini_write_string(string(id),"munition",munition);
- //...
- //*)
- ini_close();
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