Ich habe da eine ganz spezifische Frage bezüglich online Highscores.
Ich versuche seit einiger Zeit ein eigenes OHS System mit PHP und Mysql (später steige ich möglicherweise auf PostgreSQL um) zu schreiben.
Funktioniert soweit relativ gut.
Habe da jedoch ein kleines Problem bei dem Desing der Highscore.
Und zwar:
Wenn ein Spieler eine Punktezahl (oder bei mir eine gewisse Zeit) in einem Level geschafft hat, wird diese Zeit mitsamt seinem Spielernamen an den Webserver
geschickt der die Zeit + namen in eine Liste einträgt...
Nun, was soll aber passieren wenn ein Spieler eine Zeit hochladet und bereits ein Eintrag mit dem jeweiligen Usernamen existiert?
Es gibt 2 möglichkeiten:
1. Der Eintrag wird (falls eine bessere Zeit erreicht wurde) auf die neue Zeit "geupdated". Somit gibt es nur weiterhin 1 Eintrag mit dme USernamen der aber nun die bessere Punktezahl/Zeit besitzt.
2. Der Spieler bekommt einen neuen Eintrag in die Highscore. Dadurch hätten wir mehr als nur 1 Eintrag mit demselben Usernamen.
Es gibt aber nun bei beiden Möglichkeiten Probleme:
Zu 1:
Eigentlich wäre die Nr1 die perfekte lösung, das Problem was nun aber auftauchen kann ist Namensgleichheit bei verschiedenen Spielern.
Da ich kei nAccountsystem nutze, sondern die Spieler im Spiel ihren Profilnamen wählen lasse (der für die OHS auch verwendet wird) kann es sehr leicht
dazu kommen dass mehrere Spieler denselben namen haben. Da das OHS System nun denkt, dass es derselbe Spieler sei, existiert aber nur 1 Eintrag auf der Online Highscore.
Dadurch überschreiben sic hdie jeweiligen Spieler denselben eintrag.
Natürlich könnte ich ein Accountsystem machen der die Namensgleichheit ausschliest, aber sich extra für solch ein Spiel irgendwo registrieren zu müssen ist etwas... umständlich.
Zu 2:
Wenn ein User mehrere Einträge in einer Highscore gleichzeitig haben kann, kann die OHS sehr leicht zugespammt werden.
Wenn z.B: ein Spieler extremst gut im Spiel ist und leicht in die Top 10 kommt, und dann noch das Level 100 Mal wiederholt um seine bestzeit zu toppen,
haben wir am ende in den Top 100 immerwieder denselben Spieler in der OHS stehen.
Was für ein Problem entsteht? Wenn wir annehmen dass jeder Spieler mindestens 10 Versuche pro Level unternimmt, werden auch pro Spieler 10 Einträge in die OHS eingetragen.
Das System wird dadurhc sehr stark zugespamt und am ende weis kein Spieler mehr wirklich wo er nun mit der Punktezahl eigentlich steht.
Hat jemand einen Rat? Werde ich auf Accountsystem (um die Namensgleichheit zu unterbinden) zurückgreifen müssen?
Ich versuche seit einiger Zeit ein eigenes OHS System mit PHP und Mysql (später steige ich möglicherweise auf PostgreSQL um) zu schreiben.
Funktioniert soweit relativ gut.
Habe da jedoch ein kleines Problem bei dem Desing der Highscore.
Und zwar:
Wenn ein Spieler eine Punktezahl (oder bei mir eine gewisse Zeit) in einem Level geschafft hat, wird diese Zeit mitsamt seinem Spielernamen an den Webserver
geschickt der die Zeit + namen in eine Liste einträgt...
Nun, was soll aber passieren wenn ein Spieler eine Zeit hochladet und bereits ein Eintrag mit dem jeweiligen Usernamen existiert?
Es gibt 2 möglichkeiten:
1. Der Eintrag wird (falls eine bessere Zeit erreicht wurde) auf die neue Zeit "geupdated". Somit gibt es nur weiterhin 1 Eintrag mit dme USernamen der aber nun die bessere Punktezahl/Zeit besitzt.
2. Der Spieler bekommt einen neuen Eintrag in die Highscore. Dadurch hätten wir mehr als nur 1 Eintrag mit demselben Usernamen.
Es gibt aber nun bei beiden Möglichkeiten Probleme:
Zu 1:
Eigentlich wäre die Nr1 die perfekte lösung, das Problem was nun aber auftauchen kann ist Namensgleichheit bei verschiedenen Spielern.
Da ich kei nAccountsystem nutze, sondern die Spieler im Spiel ihren Profilnamen wählen lasse (der für die OHS auch verwendet wird) kann es sehr leicht
dazu kommen dass mehrere Spieler denselben namen haben. Da das OHS System nun denkt, dass es derselbe Spieler sei, existiert aber nur 1 Eintrag auf der Online Highscore.
Dadurch überschreiben sic hdie jeweiligen Spieler denselben eintrag.
Natürlich könnte ich ein Accountsystem machen der die Namensgleichheit ausschliest, aber sich extra für solch ein Spiel irgendwo registrieren zu müssen ist etwas... umständlich.
Zu 2:
Wenn ein User mehrere Einträge in einer Highscore gleichzeitig haben kann, kann die OHS sehr leicht zugespammt werden.
Wenn z.B: ein Spieler extremst gut im Spiel ist und leicht in die Top 10 kommt, und dann noch das Level 100 Mal wiederholt um seine bestzeit zu toppen,
haben wir am ende in den Top 100 immerwieder denselben Spieler in der OHS stehen.
Was für ein Problem entsteht? Wenn wir annehmen dass jeder Spieler mindestens 10 Versuche pro Level unternimmt, werden auch pro Spieler 10 Einträge in die OHS eingetragen.
Das System wird dadurhc sehr stark zugespamt und am ende weis kein Spieler mehr wirklich wo er nun mit der Punktezahl eigentlich steht.
Hat jemand einen Rat? Werde ich auf Accountsystem (um die Namensgleichheit zu unterbinden) zurückgreifen müssen?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von LEWA ()