kostenloser Webspace werbefrei: lima-city


Spielverlauf vor Manipulation schützen

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    kozak

    Kostenloser Webspace von kozak

    kozak hat kostenlosen Webspace.

    frohe Weihnachten allerseits,

    habe ein kleines Problemchen.
    Ich entwickle derzeit ein kleines Game (unter Java). 2D, nichts weltbewegendes.
    Programmieren an sich bereitet mir (noch?!) keine große Schwierigkeiten.
    Doch an einem Punkt scheitere ich.
    Zur Zeit sieht es so aus.
    Ich habe eine "Haupt-Conf" -Datei. Dort wird u.a. Auflösung, Schwierigkeitsgrad etc. gespeichert. Alles in lesbarer Form (.INI Datei).
    In der zweiten Datei wird Spielverlauf (eine Art safe file) gespeichert. Ebenfalls in lesbarer Form. Diesmal ist es eine .TXT Datei.
    Hat den Vorteil, dass ich verfolgen/nachvollziehen kann, dass alles so gespeichert wird, wie ich es mir vorgestellt habe.
    Wo es jedoch Vorteile gibt, gibt es auch Nachteile. Eins davon z.B. wäre, dass wenn man bestimmte Parameter manipuliert, plötzlich der Spieler mehr Kraft hat, als er es sollte.
    Gibt es einen Trick, wie man diese Sache bewerkstelligt?
    Ich hatte erst an die Verschlüßelung gedacht, doch wenn das Game komplexer wird, denke ich, dass dies sich dann auf die Performance auswirkt.
    Wenn das Spiel aber sowieso komplexer werden soll, da dachte ich, dass ich auf .db umsteige.
    Aber auch hier kann man (wenn man will) später die Informationen auslesen.

    Die eigtl. Frage wäre also, wie man solche Sachen von vornherein unterbindet.
    Es gibt bestimmt ein "Kochbuch" nach dem sich die meisten richten.
    Oder legt der Entwickler selbst fest, wie und wo er die Daten ablegt.
    Falls ja, wie verhindert man, dass die Daten manipuliert werden können?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du kannst es nicht unterbinden. Selbst wenn du zu einem Server verbindest und die Verbindung zur Vorraussetzung machst wird es Menschen geben welche die Daten manipulieren. Siehe die ganze DRM-Scheiße der Publisher.

    Ergo: Lass die Cheater Cheater sein. Du kannst zwar eine Struktur schaffen, welche es erschwert die Daten zu ändern aber verhindern wirst du es nie können. Du kannst die Cheater höchstens aus der Gemeinschaft derer die online spielen aussperren und nicht mal das funktioniert zu 100% (siehe WOW).
  4. Autor dieses Themas

    kozak

    Kostenloser Webspace von kozak

    kozak hat kostenlosen Webspace.

    Die Daten derart zu verbergen/verschleieren hatte ich auch nicht vor.
    Mein "Miniaturspiel" wird und soll auch nicht mit den ganzen Großkonzernen mithalten können :biggrin:
    Mir gehts im Wesentlichen darum, dass man die Daten nicht auf einem silbernen Tablett serviert bekommt.
    Sprich, wenn man bsp.-weise keine Lust auf ein bestimmtes Level hat, dass man nicht einfach die .TXT Datei öffnet und einige Daten solchermaßen abändert, dass der Level auf einmal als erledigt erscheint.
    Es gibt bestimmt Techniken, die sich genau mit dieser Problematik auseinander setzen.
    Vlt. gibt es hierfür auch spezielle .xx Dateien?
    Ich möchte halt vermeiden, dass man mit Leichtigkeit an die Daten herrankommen kann und so den Spielfluss vor Manipulationen halbwegs zu schützen.
  5. Ich meine du kannst ja die Daten einmalig auslesen und dann intern vorhalten und nur zurückspeichern, wenn sich die Werte geändert haben. Dann hast du nicht so die Performanceprobleme. Änderungen die sich nicht auf das Laden auswirken würde ich auch nicht erst speichern.
    Direkt verschlüsseln würde ich es nicht einmal, sondern entweder einfach in einen binären Blob stecken oder wenn es Open-Source ist einfach ne passwortgeschützte (No-SQL) Datenbank oder so (aber auch da musst du das Passwort irgendwo speichern, wo es Cheater finden können).
  6. warum wirkt es sich negativ auf die performance aus wenn du die daten Verschlüsselst?

    Es würde ja nur beim Speichern der Daten notwendig sein. Während des spieles kann man sich kaum davor schützten.

    Oder gibt es eine art permanente Speicherung? Dann solltest du das gegebenfalls überdenken, sodass nurnoch beim beenden eines levels etc. in die Datei Geschrieben wird.

    Ansonsten kannst du solche Daten auch binär abspeichern, also nicht in text. Das ist sogar noch performanter, außerdem erhöht es den aufwand die Daten zu manipulieren. (Der User muss ja wissen welches Byte wofür gut ist)


    edit: ok, ungefähr das was reimann schon geschrieben hat :P


    Beitrag zuletzt geändert: 25.12.2013 22:30:32 von thecity
  7. Autor dieses Themas

    kozak

    Kostenloser Webspace von kozak

    kozak hat kostenlosen Webspace.

    Vlt. habe ich auch einen Denkfehler in der Entwicklung gehabt.
    Das Game an sich war mal eine HA an der UNI.
    Nun dachte ich mir, dass ich das Spiel ein wenig erweitere.

    Momentan verläuft das so:
    Da das Spiel recht simpel ist, werden die ganzen Fortschritte intern in Listen und Arrays hantiert bzw. gespeichert/gelesen.
    Nur im Falle des Beendens werden diese (aktuelle) Fortschritte dann an die Datei übergeben und gespeichert.
    Beim Start des Spiels wird dann die entsprechende Datei mit den zuletzt gespeicherten Fortschritten "an die Liste/Arrays" übergeben, sodass das Spiel dann wieder die Ergebnisse/Fortschritte intern abarbeitet/speichert.
    Und hier stört es mich, da man hier theoretisch, wie bereits erwähnt, falsche/manipulierte Werte übergeben kann.
    Natürlich muss man auch wissen, welche Werte man abändern muss, ansonsten wird das Programm erst gar nicht starten.
    Da ich jedoch mit aussagekräftigen Variablennamen arbeite, kommt man mit ein wenig Glück auf die richtige Werte.

    Wegen der Performance:
    Das Spiel hat 20 Levels.
    Ich hatte spaßeshalber die Caesar-Verschlüßelung (ja, ich weiß :biggrin:) genommen und stellte beim Laden von Level1 und Level 20 einen Unterschied von etwa 2 Sec. fest.
    Das ist nicht die Welt, jedoch dachte ich, wenn das Spiel mehr als 20 Levels haben soll, dann fällt der Unterschied größer aus.

    Guter Tipp bzgl. des binären Speicherns.
    Mal schauen, ob ich es umsetzten kann.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!