Savegames schutzen

  • GM 7

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

  • Savegames schutzen

    hallo,

    hab mich schon lange gefragt, wie man savegames schutzen kann..
    wieso will ich das? ganz einfach! wenn ich im savegame eine level-variable speicher,
    kann sie in einer ini oder auch text-datei locker geandert werden!

    man kann zwar die normale game maker savegames funktion nutzen (sie ist verscriptet),
    jedoch ist sie bei einem grosserem game nicht gerade klein und etwas umstandlich.

    das will ich alles vermeiden. wie kann man also nun auf eine moglichst einfache variante
    die savegames schutzen, ohne diese zu verscripten..

    oder geht das einfach nicht? ich kenn zwar noch eine methode, jedoch will ich sie
    nicht gerne verraten, sie ist nahmlich sehr geheim!

    danke fur eure vorschlage im vorraus.

    ps: sry, fur die umlaute, ich hab zurzeit keine ^^
  • Der erste Schritt wäre wahrscheinlich die Datei binär zu speichern, die 39dll hat dafür ganz nette Funktionen:

    GML-Quellcode

    1. clearbuffer();
    2. writechars("rush"); // Damit kannst du später deine Datei identifizieren.
    3. writestring(global.name); // Im Gegensatz zu writechars musst du hier nicht die Länge des Strings kennen.
    4. writeushort(score); // ushort ist ein Datentyp, der Zahlen von 0 bis 65535 hält.
    5. writeushort(obj_player.x);
    6. writeushort(obj_player.y);
    7. writebyte(obj_player.direction/2); // byte reicht nur von 0-255
    8. with (obj_gegner) { // obj_gegner ist dann das parent aller Gegnerobjekte
    9. writeushort(object_index);
    10. writeushort(x);
    11. writeushort(y);
    12. writebyte(direction/2);
    13. } bufferencrypt("61AD05"); // Verschlüsseln.
    14. file = fileopen("save.dat",1);
    15. filewrite(file);
    16. fileclose(file);
    Alles anzeigen

    Und zum Laden:

    GML-Quellcode

    1. clearbuffer();
    2. file = fileopen("save.dat",0);
    3. fileread(file);
    4. fileclose(file);
    5. bufferdecrypt("61AD05");
    6. if (readchars(4)!="rush") { exit; }
    7. global.name = readstring();
    8. score = readushort();
    9. obj_player.x = readushort();
    10. obj_player.y = readushort();
    11. obj_player.direction = readushort()*2;
    12. while (bytesleft()) { // Wenn noch Daten vorhanden sind ...
    13. obj = readushort();
    14. xx = readushort();
    15. yy = readushort();
    16. obj = instance_create(xx,yy,obj);
    17. obj.direction = readbyte()*2;
    18. }
    Alles anzeigen

    (Aus dem Kopf geschrieben, kann Fehler enthalten. Denke aber das reicht, um die Nachricht rüber zu bringen ;) )
  • Du kannst dafür ganz normale .ini oder .txt Dateien nehmen und diese verschlüsseln. Dafür kannst du eins dieser beiden Systeme verwenden:

    nCrypt von n-organism

    Xor Crypt von Blackspark


    Beide Systeme sind dazu gedacht, mehrere Dateien in eine Containerdatei zu packen, ähnlich einer ZIP. Diese Container lassen sich mit einem Passwort verschlüsseln.
    Ich hab dadurch grad festgestellt, dass man nCrypt gar nicht mehr downloaden konnte. Ist jetzt aber gefixt. Vielleicht kannst du dich auch noch eine Weile gedulden, denn ich arbeite seit einiger Zeit an "nCrypt 2". Weil ich einfach selber mehr Komfort wollte, wird es wesentliche Verbesserungen haben, z.B. fertige Container zum Bearbeiten öffnen, Dateien via Drag&Drop ins Programmfenster ziehen und Mehrfachauswahl zur schnellen Bearbeitung. Das ist vor allem dann sehr wichtig, wenn man wirklich viele Ressourcen verpacken muss. Außerdem will ich gleich Blackspark's Xor System und evtl. ZIPs integrieren. Ok, genug der Eigenwerbung. ^^

    @Verwurster: Wir wissen inzwischen, wie du dazu stehst. Lass es doch aber jeden selbst entscheiden. Dein Post trägt nicht sonderlich viel zum Vorhaben von RushOn bei.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • @verwurster: naja, trotzdem werde ich sowas einbauen.

    dieses verschlusseln wollte ich eig umgehen.

    ich dachte jetz kommen einfachere sachen ^^
    da sieht mein ganz geheimer plan viel einfacher aus. funzt nach einem ganz einfachen prinzip,
    jedoch ist die chance, dass jemand meinen geheimen plan versteht 1 zu 1000 ;)

    naja trotzdem danke.
  • Du kannst Verschlüsseln nicht 'umgehen', es ist im Grunde genau das, wonach du fragst wenn du das Speichersystem selbst nicht grossartig verändern willst.
    Alternativ kannst du anstatt Klartext in Textdateien zu schreiben auch einfach alles in Bytes (das sind Nummern von 0-255) mit den Binärfunktionen speichern.
    Das spart nicht nur Platz sondern ist auch noch durch Normal Sterbliche nicht lesbar, erfordert jedoch ein gewisses Verständnis von der Sache.
  • Warum fragst du eigentlich erst, wenn du schon einen tollen Geheimplan hast, den keiner der hier anwesenden dir unterlegenen User versteht?
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • jedoch ist die chance, dass jemand meinen geheimen plan versteht 1 zu 1000

    Die Save-Datei in "Unwichtig.txt" umzubenennen klappt meistens nur mit den ersten 100 :D

    Magical dream time!
  • RushOn schrieb:

    da sieht mein ganz geheimer plan viel einfacher aus. funzt nach einem ganz einfachen prinzip,
    jedoch ist die chance, dass jemand meinen geheimen plan versteht 1 zu 1000 ;)

    Müll bloss nicht den Windows Ordner oder sonst einen versteckten Ordner ausserhalb des Spielordners mit Savegames zu.
    Die Registry ist auch nicht unbedingt für Spielstände gedacht.
  • Also ganz ehrlich, das brauchste nich zu machen. Echt nich. Du machsts den Leuten dadurch nur unnötig schwer, ein wenig rumzuspielen und damit den Spielspass zu verlängern... und bei denjenigen, die sich dadurch den Spielspass verderben, die sind einfach selber Schuld.
    So ein System ist komplett sinnlos meiner Meinung nach, vorallem bei einem GM-Spiel, dass ich über viele Wege sehr leicht "hacken" lässt.
    Damit tust du niemandem einen Gefallen, ehrlich.
    "das war meine letzte flamewar PM an dich ."
  • Benutzer online 1

    1 Besucher