Fragen/Überlegungen zum Speichern von Spielerdaten

Startseite Foren Deutsches LiveCode-Forum Fragen/Überlegungen zum Speichern von Spielerdaten

Ansicht von 3 Antwort-Themen
  • Autor
    Beiträge
    • #1970
      mario
      Teilnehmer

        Liebe Programmierkollegen 😀

        Ich programmiere gerade eine Android App, die mit Daten von Spielern arbeitet. Nun habe ich dazu ein paar Fragen, wie man das am elegantesten löst:
        Ist es sinnvoll, die Daten (welche Levels wurden schon geschafft, Spielerlevel, Highscore, etc.) in einer DB auf dem Server zu speichern oder ist es besser, eine lokale Datei anzulegen (data.txt), die beim öffnen der App ausgelesen wird und dann die Einstellungen setzt?
        Welche Risiken birgt die Auslagerung auf den Server? Ein Vorteil wäre ja, dass man seinen User auf mehrere Geräte mitnehmen kann. Kann man dann aber irgendwie verhindern, dass der User 2x geöffnet ist? Ansonsten könnte man ja cheaten, wenn man gleichzeitig mit dem selben Spieler spielt.
        Ein weiterer Vorteil wäre, dass man den Highscore aller Spieler aus der selben Tabelle auslesen und anzeigen lassen kann, oder? Ansonsten bräuchte man wahrscheinlich die lokale Datei und eine Tabelle am Server mit den Usernamen und den Highscores…

        Dies sind ein paar meiner Überlegungen. Was ist eure Meinung zu dem Thema?
        Ich habe schon mehrere Foren durchsucht, bin mir aber noch nicht sicher, welche Variante die bessere ist.

        Danke für eure Hilfe!

        Liebe Grüße
        Mario

      • #1974
        Tim K
        Teilnehmer

          Hi Mario,

          ich habe damit wenig Erfahrung, aber ich denke, zwei Datenbanken wären sinnvoll. Und es kann auch helfen, zu überlegen, wie die erfolgreichen Spiele das machen:

          Individuelle Daten würde ich auf dem Gerät speichern, z.B. Aktuelles Level
          Daten wie Highscore, um eine Bestenliste zu programmieren, müssten natürlich auf den Server, denn Du bräuchtest ja alle Highscores von allen Spielern. An das was auf dem jeweiligen Gerät liegt, kommst Du später nicht mehr heran.

          User mitnehmen.
          Wenn man überlegt, wie das z.B. bei Candy Crush usw. gelöst wird: Einfach auf dem Server liegen die Daten nicht, sondern werden überlicherweise irgendwie (ich weiß aber nicht wie) über Facebook synchronisiert. Vermutlich kann man bei Facebook immer nur auf einem Gerät tatsächlich eingeloggt sein, und das wird dann herangezogen, um zu schauen, welche Instanz des Spiels gerade die aktuelle ist. Dann müsstest Du nur noch dafür sorgen, dass das Spiel jeweils aktualisiert / synchronisiert wird, wenn der Nutzer das Gerät und sein Facebook-Login wechselt.

          Ggf. könntest Du mal testen, was passiert, wenn Du Candy Crush auf zwei Geräten installierst, über FB synchronisierst und hin und her wechselst. Vermutlich wird die App jedes Mal neu geladen, bevor Du weiter spielen kannst, das jeweils gerade geöffnete Level wird ggf. abgebrochen o.ä.

          Cheaten wäre ja nicht das einzige Problem, ein Spieler, der auf dem Tablet bis Level 200 gespielt hat, dann unterwegs das Telefon nimmt, damit vom bisherigen Telefon-Status Level 121 freispielt und anschließend auch nicht auf dem Tablet mit 201 weiter machen kann, wird die App wohl löschen. Ebenso wäre der Spieler wohl genervt, alle seine “Leben” auf dem Telefon für Level 120 zu verbrauchen, obwohl er eigentlich mit Level 201 hätte weiterspielen können. Da braucht es irgendeine Form von regelmäßiger Synchronisierung.

          So viel nur zu meinen Überlegungen
          Tim

        • #1980
          Torsten
          Teilnehmer

            Hi,

            ich habe noch keine Spiele entwickelt, aber schon welche gespielt 🙂

            1. Wenn Du Highscores für alle haben willst, brauchst Du ja sowieso eine Online-Verbindung, also kannst Du auch gleich alles auf dem Server speichern.

            2. Das würde auch sicherstellen, dass der User immer beim selben Spielstand bleibt, egal auf welchem Gerät: Einloggen = Spielstand holen, Ausloggen = Spielstand abspeichern (bzw. auch schon bei jedem geschafften Level, damit man bei einem Absturz nicht ovn vorne anfangen muss).

            3. Damit wäre das Cheaten auch ausgeschlossen, oder wie würde man bei deinem Spiel betrügen können?

            Soweit meine Gedanken dazu..

            Beste Grüße
            Torsten

          • #2008
            mario
            Teilnehmer

              Danke Torsten und Tim für euer Feedback.

              Ich habe mir überlegt, die Anmeldung mit Facebook zu machen, aber leider habe ich keine Anleitung dazu gefunden, bei der ich mich auskennen würde ^^ scheinbar gab es einmal facebook-Befehle für Livecode, aber die sind mittlerweile nicht mehr vorhanden oder ich finde sie nicht mehr…
              Das mit der Facebook Graph API checke ich leider nicht.

              Somit werde ich die gesamten Daten in die DB schreiben lassen und von dort wieder auslesen. Einfach die Daten häufig synchronisieren, dann sollte ein Betrügen kaum möglich sein.

              Liebe Grüße
              Mario

          Ansicht von 3 Antwort-Themen
          • Du musst angemeldet sein, um auf dieses Thema antworten zu können.