Savegames - Was speichert der GM eigentlich?

  • GM 8

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

  • Savegames - Was speichert der GM eigentlich?

    Ich verwende (immer noch) die Standartfunktion von GM, um den Spielstand zu speichern. Abgesehen von ein paar Musikproblemen bin ich damit eigentlich auch immer gut gefahren.

    Nun, mein nächstes Spiel hat eine Updatefunktion und diese prüft auch, ob die alten Savegames zur neuen Version kompatibel ist. Das heißt, dass diese Information vom Server geholt wird und ich sie letztlich vor gebe. Also wird es höchste Zeit mal zu erfahren, bei welchen Änderungen am Spiel die Savegames noch kompatibel sind, oder eben nicht.

    Erst dachte ich, dass mit jeder Änderung an einem Objekt auch das Savegame nicht mehr kompatibel sei, aber Test haben gezeigt, dass dem wohl nicht so ist, die Änderungen am Objekt wurden übernommen. Allerdings hatte ich auch schon Abstürze, die ich nicht richtig zuordnen konnte und ich vermute, dass es mit einer neueren Version / alten Savegame zusammen hängt.
  • Du solltest dich in dem Fall von der GM-internen Speicherfunktion trennen. Oftmals reicht es, einige Variablen in ein Textfile zu speichern, um ein Savegame zu erstellen, der GM speichert soweit ich weiß den aktuellen Raum und alle Instanzen plus Variablen.

    © 2008 by Teamgrill Productions
  • Also die Abstürze könnten da her rüheren dass du vieleicht neue Variablen im Create-Event von Objekten definiert hast denn wenn das Spiel geladen wird, dann springt es einfach zu dem Zeitpunkt hin wo gespeichet worden ist.
    Dazu werden wie MasterXY gesagt hat, alle bestehenden Instanzen erstellt sowie all die Variablen die schon beim Abspeichern vorhanden waren. Die create-Events der einzelnen Instanzen werden aber nicht ausgeführt!

    Des weiteren sind alle DLL-Abhängigen Dinge nicht in der Save Datei enthalten, genau so wenig wie die GM-eigenen Datenstrukturen (ds_list usw) und Surfaces ebenfalls nicht.
    Partikel werden auch nciht gespeichert und auch geladene ressourcen fehlen und müssen neu geladen werden (sofern sie nicht vor dem Aufruf der load-Funktion geladen wurden denn die Änderungen werden nciht rückgängig gemacht.)

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Yamm schrieb:


    Die Idee hat aber was! Man kann sie natürlich auch "richtig" verschlüsseln.

    Da muss man aber sehr aufpassen, denn wenn einer rausfindet an welcher Stelle in der Datei, der Score steht (z.B. bei ner Ini wo alles getrennt ist), dann kann er das verwendete Passwort errechnen da er ja den gelösten Wert (score im Spiel lesen) sowie den verschlüsselten Wert kennt :D
    Eine Möglichkeit dies zu verhindern wäre zu obfuscaten oder einen Crypt-Algo zu verwenden der die Stellen auch verschiebt (also kein XOR oder vigenère)

    Aaaaaber solche Sicherheit muss jetzt beim GM nicht unbedingt so groß geschrieben werden... zumindest macht sie keinen Sinn solang man das Spiel weiterhin dekompilieren kann :/


    Sorry.. ich misch mich mal wieder unnötig ein : |

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Solange das Spiel unabhängig von anderen - sprich rein offline - ist und keine wichtigen (Premium)-Freischaltkomponenten hat, ist es doch relativ unwichtig, ob der Nutzer die Möglichkeit hat die Speicherdateien zu editieren. Letztendlich verändert er nur sein eigenes Spielerlebnis, wenn er meint er müsste sich direkt ins letzte Level mogeln, dann ist es seine Sache. Vor Allem wenn du eine kleine Hürde einbaust, zB eine einfache Verschlüsselung.
    Ansonsten würde ich einfach ein Speicherkonzept erstellen, wo du Stellenweise 0..10 zB die entsprechene Funktion speicherst.
    (Byteweise)

    Also:

    Byteposition 0 1 2 3 4 5 6 7
    ID Name Score Level Datum ........

    Dann erhältst du eine (offensichtlich) unlesbare Datei. Natürlich kann man die Bytes später mit einem Hexeditor bearbeiten, aber dann muss man auch noch die entsprechenden Speicherstellen knacken. Wenn du über diese Bytefolgen nun auch noch eine kleine Verschlüsselung fährst, dann wird der "kriminelle" Aufwand doch schon sehr hoch um das Savegame zu bearbeiten.
    Retroware.de - Webdesign, Print und Apps aus Regensburg.