Ini vor betrug schützen?

    Ini vor betrug schützen?

    Man speichert spielstände ja für gewöhnlich in einer ini datei ab. wie kann ich den spieler jetzt daran hindern diese datei zu manipulieren?

    ich habe keine funktion gefunden um das genaue änderungsdatum der inidatei auszulesen. das könnte man nutzen um das spiel auf werkseinstellungen zurückzusetzen wenn die ini manipuliert wurde.

    wie schützt man sein spiel vor cheatereien? lg


    Bin mir jetzt nicht sicher, ob das funktioniert, aber du könntest die Funktion

    GML-Quellcode

    1. sha1_file(filename)
    nutzen und den Hash der Datei extra Speichern. Und beim Laden einen neuen Hash erstellen und mit dem Alten prüfen. Müssen ja dann die selben sein. Weis aber jetzt nicht was mit der Funktion genau gehashet wird. Wenns der Inhalt ist, dann könne das funktionieren. Zumindest gegen die meisten Leute würde das helfen, bis jemand drauf kommt, dass die Datei einfach über den Hash gesichert ist.
    Es gibt aber bestimmt bessere Methoden :D
    Ich würde einfach buffer nehmen.
    Bei Zeit oder Hash darf man das dann nicht lokal speichern, da das dann auch geändert werden kann.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
    Da ich immer noch nur den GM8 nutze bin ich mir nicht sicher ob das jetzt immernoch funktioniert.

    Variante 1:
    beim speichern einer ini. musst du nicht zwangsläuftig die Endung .ini benutzen
    du könntest es z.B. .sav nennen. Das hat dann zur Folge des es deinem Nutzer nicht gleich als Editor Datei angezeit wird.
    Es ist zwar immernoch möglich die ini zu öffnen. Allerding wird nicht gleich jeder wissen wie.

    Variante 2:
    Ich vermute, dass das jetzt nicht mehr in den neueren GM Versionen funktioniert.
    Aber such mal hier im Forum nach der XorCrypt dll
    die würde das Problem für den normalen User sicher lösen
    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Gray
    eine .sav datei erstellen, da dann die ini rein und vor/nach dem lesen/schreiben jeweils einen bitshift würe wahrscheinlich mehr als genügen.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
    Kurze frage zu den ds_map

    wie kann ich eine ds_map wieder aufrufen, nachdem ich die destroyed hab?
    ds_map_destroy ist dafür da, um den speicher zu leeren so wie ich das verstanden habe.
    aber es gibt kein ds_map_load
    und einfach mit ds_map_replace funktioniert es nicht. dann bekomme ich immer eine fehlermeldung.


    Hi TrunX

    doch doch ich hab sie auf der festplatte mit ds_map_save gespeichert.
    dennoch kann man sie nicht mehr öffnen.
    ich hab die hilfe so verstanden dass man den speicher freigeben sollte wenn man ds_map's nicht braucht weil sie viel ressourcen fressen würden. Ich brauche sie aber immer beim wechseln eines raumes.
    ich mache eine wirtschaftssimulation und muss vieles da hinein speichern. ich weiß nicht wie sich das auf die Performance auswirkt.

    lange rede kurzer sinn: also nicht destroyen?!


    Du kannst sie entweder aus einem String mit ds_map_read() auslesen wenn du sie mit ds_map_write() umgewandelt hast oder du benutzt die secure funktionen, also verschlüsselt:
    ds_map_secure_save(map_id,mapdata.dat)
    ds_map_secure_load(mapdata.dat)
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
    ds_map_secure_load hab ich gesucht. danke.


    edit: eine letzte frage dazu.

    ist es besser wenn ich nach jedem raumwechsel (kommt sehr häufig vor) ds_map_destroy mache(ich speicher die daten bei jedem wechsel), oder sollte ich es lieber durchlaufen lassen.
    wie gravierend frisst das denn an leistung?


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Gruen“ ()

    Es frisst keine Leistung, nur Arbeitsspeicher. Wenn du sie destroyest nur um sie danach direkt wieder zu laden sparst du nichts. Also lieber gleich im Arbeitsspeicher lassen.

    Der Grund wieso darauf verwiesen wird, dass man sie destroyen soll wenn nicht mehr gebraucht ist, dass es schnell zu einem memory leak kommen kann.
    Wenn eine Instanz zb. eine ds_map erstellt und mit daten füllt und die instanz vom spieler getötet und destroyed wird, bleibt die ds_map weiterhin im speicher. Wenn diese aber nicht mehr gebraucht wird sollte sie zusammen mit der instanz destroyed werden.
    Eine andere sache ist game_restart(), dabei wird der speicher auch nicht geleert. Wenn das Spiel also 100 MB an ds_maps im Speicher erstellt und man öfter restartet nehmen sie schnell paar GB weg. Daher sollte man auch bei einer restart funktion den Speicher leeren.
    Danke.
    Dann lasse ich sie laufen. Muss dauerhaft Daten hinzufügen und entfernen.
    Wie viele Firmen gibt es welche gebäude wurden erstellt. Wie viel Geld besitzt mach. Welche Entwicklungsstufe... jede Menge Zeug muss da rein.


    Ich destroye sie dann nur beim Spiel beenden.

    Danke


  • Benutzer online 1

    1 Besucher