kEv*: Datenbankstruktur bzw. Idee zur Aufgabenstellung gesucht

Hallo liebe SELFHTMLer,

ich arbeite an einer kleinen Software für ein Browserspiel. Sinn oder Unsinn lassen wir dabei bitte mal im Hintergrund.

Folgenden Daten liegen mir vor.
Im Spiel ist es möglich die Highscoreliste in 50iger Platzschritten anzeigen zu lassen. Per Copy&Paste werden Daten in der Software über ein Textfeld vorbereitet zum eintragen in die DB. (MySQL)

Nun bin ich am überlegen.
Annahme: Max. Spieleranzahl in der Highscoreliste: 5000

Spieler 1 Platz: 57
Spieler 2 Platz: 65

a:) jedesmal neu 50 Platze hinzufügen UND ODER die Möglichkeit geben erst alles in die Textbox zu kopieren und dann in die Datenbank zu schreiben

Was wäre sinnvoll? 50iger Einträge ODER nur Komplett?

b:) Wie sollte ich ein UPDATE der Liste organisieren?
Sagen wir Benutzer 1 macht ein UPDATE der ersten 60 Plätze. Nun ist Spieler 1 in der alten Liste auf Platz 57 und Spieler 2 auf Platz 65. In der neuen aber ist Spieler 1 auf Platz 66 und Spieler 2 auf Platz 57. Somit hätte ich keinen Spieler 1 mehr nach dem UPDATE aber Spieler 2 ist nun 2x vorhanden.

Irgendwie fehlt mir da eine vernüftige Datenhaltung.
Vielleicht habt ihr ja eine Idee diese sinnvoll umzusetzen.

Danke an alle die helfen und objektiv kritisieren ...

LG
kev1n

--

SELFCODE:
sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
---
  1. Hi!

    Ich verstehe nichtmal was Du da willst, oder besser: warum.

    Was ist ein Highscore? Ein Highscore ist eine Auflistung der Spieler nach Punkten. Wozu braucht man da eine Tabelle ausser der Spielertabelle(n)?

    Erklaer doch mal fix, warum du nicht einfach die Spieler sortiert nach Punkten ausgibst. Das wuerde Dir doch den ganzen Quatsch ersparen.

    --
    Trau Dich!
     
    1. Hallo liebe SELFHTMLer,

      Erklaer doch mal fix, warum du nicht einfach die Spieler sortiert nach Punkten ausgibst. Das wuerde Dir doch den ganzen Quatsch ersparen.

      Du hast scheinbar meinen Beitrag nur überflogen und nicht gelesen. Ich stehe vor der Frage wie ich diese Daten verwalte und ggf. update.

      Wie die Liste sortiert wird steht dabei nicht zur Diskussion und war und ist nicht Bestandteil meiner Frage.

      LG
      kev1n

      --

      SELFCODE:
      sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
      ---
  2. echo $begrüßung;

    Per Copy&Paste werden Daten in der Software über ein Textfeld vorbereitet zum eintragen in die DB. (MySQL)

    Was muss man sich unter diesem Satz konkret vorstellen?

    b:) Wie sollte ich ein UPDATE der Liste organisieren?

    Was genau ändert da wer? Wieso updaten die Spieler die Plätze? Die ergeben sich doch nach dem Punktestand. Warum updaten sie nicht die Punkte? Zumindest verstehe ich das so nach deiner Beschreibung.

    echo "$verabschiedung $name";

    1. Hallo liebe SELFHTMLer,

      echo $begrüßung;

      Per Copy&Paste werden Daten in der Software über ein Textfeld vorbereitet zum eintragen in die DB. (MySQL)

      Was muss man sich unter diesem Satz konkret vorstellen?

      Die Daten kommem per Copy&Paste aus dem Browser und werden über ein Textfeld in der Anwendung geparsed.

      b:) Wie sollte ich ein UPDATE der Liste organisieren?

      Was genau ändert da wer? Wieso updaten die Spieler die Plätze? Die ergeben sich doch nach dem Punktestand. Warum updaten sie nicht die Punkte? Zumindest verstehe ich das so nach deiner Beschreibung.

      Richtig. Die Highscoreliste updated das Broserspiel. Ich habe aber keinen direkten Zugriff und somit s.o. wie die Daten in die Anwendung kommen. Da die Highscoreliste nicht nur die Punkte enthält sondern auch noch andere wichtige Daten wird diese ebenfalls geparsed.

      Nun bin ich am überlegen wie ich

      a.) die Daten aktuell halte, da eben mehrere Benutzer das von mir geschriebene Programm nutzen und alle Zugriff auf die Highscoreliste haben um diese updaten zu können.
      Das Browserspiel hat einen Spielerumfang von ca. 20.000 Spielern. Angezeigt in 50iger Blöcken auf einer Webseite. Sortiert nach Punkten. :)
      Uns intressieren sagen wir mal die ersten 5.000 Plätze. 5.000 / 50 Blöcke = 100 x mal parsen. Nicht immer, zumindest kann i ch mir das so vorstellen wird einer die Highscoreliste innerhalb der Anwendung mit dem Spiel vollständig abgleichen, somit habe ich genau da ein Problem. Siehe mein Startbeitrag. Hoffentlich jetzt besser erklärt.

      LG
      kev1n

      --

      SELFCODE:
      sh:( fo:| ch:? rl:° br:^ ie:{ mo:| va:) de:] zu:) ss:| ls:[ js:|
      ---
      1. echo $begrüßung;

        Was genau ändert da wer? Wieso updaten die Spieler die Plätze? Die ergeben sich doch nach dem Punktestand. Warum updaten sie nicht die Punkte? Zumindest verstehe ich das so nach deiner Beschreibung.
        Richtig. Die Highscoreliste updated das Broserspiel. Ich habe aber keinen direkten Zugriff und somit s.o. wie die Daten in die Anwendung kommen. Da die Highscoreliste nicht nur die Punkte enthält sondern auch noch andere wichtige Daten wird diese ebenfalls geparsed.

        Wichtige Daten, die jeder selbst beim Upload "anpassen" kann. Als Grund für diese Vorgehensweise kann ich mir nur vorstellen, dass jeder in seinem Kämmerlein vor sich hinspielt und wenn er will, seine Highscores händisch an (d)einen Server meldet. Warum geht das nicht automatisch? Kannst du das Spiel nicht ändern? Vermutlich nicht, sonst hättest du sicher nicht gefragt.

        Nun bin ich am überlegen wie ich
        a.) die Daten aktuell halte, da eben mehrere Benutzer das von mir geschriebene Programm nutzen und alle Zugriff auf die Highscoreliste haben um diese updaten zu können.

        Was genau für Daten beinhalten denn die hochzuladenden Highscore-Listen? Vermutlich den Spielernamen. Die Punktanzahl wäre interessant, denn nach der sortiert kann man die Plätze über alle Highscore-Listen bestimmen. Das wäre fast zu einfach, um da ein Problem draus zu machen. Wenn nur Plätze ohne Punktestände übermittelt werden, dann fällt mir keine Lösung ein. Denn in einer Liste mit schwachen Spielern gibt es ebenso einen Platz 1 wie in einer Liste mit starken Spielern. Diese sind aber nicht gleichzusetzen oder auf gleiche Art zu wichten. Dann müsste man wie bei Weltmeisterschaften die Gruppen-(sprich Highscore-Listen-)Gewinner gegeneinander antreten lassen und bekommt dann nur einen Gewinner und nicht 5000 Platzierungen.

        Uns intressieren sagen wir mal die ersten 5.000 Plätze. 5.000 / 50 Blöcke = 100 x mal parsen. Nicht immer, zumindest kann ich mir das so vorstellen wird einer die Highscoreliste innerhalb der Anwendung mit dem Spiel vollständig abgleichen, somit habe ich genau da ein Problem. Siehe mein Startbeitrag. Hoffentlich jetzt besser erklärt.

        Dieser Satz ist wieder verwirrend.

        echo "$verabschiedung $name";

        1. Hi!

          Er moechte ganz einfach die Highscoreliste eines Browsergames abfragen, das ihm nicht selbst gehoert. Diese Listen werden in kleinen Bloecken gezeigt. Normalerweise werden solche Browsergamehighscores auch nicht in echtzeit berechnet sondern 1x am Tag. So wars jedenfalls vor ein paar Jahren noch. Wenn also ein paar Spieler den ersten auf der Liste schon platt gemacht haben, steht der oft immer noch dort, bis die Liste aktualisiert wird. Sollte das noch so sein, sehe ich mal gar kein Problem. Ansonsten einfach die Highscorliste vom Programm auslesen lassen.

          Er macht ja nen ziemliches Geheimnis aus seiner kleinen Raidplansoftware oder was immer das sein soll. Von sowas gehe ich aus, da ihn nur die ersten 5000 Spieler interessieren, also die, mit ordentlich Ressourcen.

          nochmal kurz, wie ich das sehe:

          Er spielt ein Browsergame und moechte nun dessen Highscoreliste in eine eigene Datenbank eintragen. Die Liste wird in Bloecken a 50 Spielern angezeigt. Wie kann man verhindern, dass beim manuellen kopieren zwischenzeitliche Highscoreaenderungen die Liste ungueltig machen, indem z.b. Spieler A (51) Spieler B (50) ueberholt und somit weder in Block 1 noch 2 vorhanden ist, waehrend Spieler B auf Platz 50 und 51 zu finden ist.

          Meine Antwort: lies die ersten 100 Bloecke einfach per Programm aus, statt das alles manuell zu machen. Wenn die Liste allerdings wirklich in Echtzeit generiert wird, ist es nicht moeglich 100% Genauigkeit zu erreichen. Macht dann aber auch kaum einen Sinn.

          --
          Trau Dich!
           
  3. Mahlzeit kEv*,

    nachdem Dich anscheinend alle bisherigen Leser (mich eingeschlossen) falsch bzw. nicht verstehen, bitte ich Dich um folgendes:

    ich arbeite an einer kleinen Software für ein Browserspiel.

    Genauere Informationen bitte: Was für eine Software? Lokal? Was soll diese Software tun? Steht sie in direktem Kontakt zu dem Browserspiel? Ist das Browserspiel von Dir?

    Folgenden Daten liegen mir vor.
    Im Spiel ist es möglich die Highscoreliste in 50iger Platzschritten anzeigen zu lassen. Per Copy&Paste werden Daten in der Software über ein Textfeld vorbereitet zum eintragen in die DB. (MySQL)

    Welche DB? Die Deiner Software? Oder die des Browserspiels?

    a:) jedesmal neu 50 Platze hinzufügen UND ODER die Möglichkeit geben erst alles in die Textbox zu kopieren und dann in die Datenbank zu schreiben

    Häh??? Was genau willst Du überhaupt mit den Daten der Highscoreliste? Die Werte aus dem Browserspiel 1:1 in Deine Anwendung übernehmen (einfaches Überschreiben)?

    Was wäre sinnvoll? 50iger Einträge ODER nur Komplett?

    Wenn Du die Werte direkt überschreibst, solltest Du sinnvollerweise alle überschreiben, da Du ansonsten die von Dir skizzierten Inkonsistenzen hast.

    Irgendwie fehlt mir da eine vernüftige Datenhaltung.

    Kein Wunder: Du willst in einer externen Anwendung berechnete Werte als "Schattenkopie" bei Dir speichern und manuell durch mehrere Benutzer "aktualisieren" ... IMHO ist das von vornherein zum Scheitern verurteilt - Du wirst NIE sicher sein können, dass die Daten korrekt sind.

    Vielleicht habt ihr ja eine Idee diese sinnvoll umzusetzen.

    Am besten? Ehrlich? ... Gar nicht.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|