Dieses Tutorial befasst sich mit der Befüllung und Verwaltung von Highscores inklusive Rankings. Benötigt wird das Modul SPINE_MODULE_SCORES. Nützlich sind Scores für Modifikationen wie Elemental War, JiBo, Battle of the Kings, DoodleGoth, Sumpfkrautscavenger oder auch den GothicRacer.
Zuerst einmal sollte geklärt werden, was konkret unter Scores zu verstehen ist. Das lässt sich relativ einfach anhand einer Tabelle darstellen.
Rang/Platz | Username | Score |
1 | Diego | 1000 |
2 | Gorn | 900 |
2 | Lester | 900 |
4 | Milten | 800 |
Jeder Spieler bekommt in einem Score entsprechend seines Scores einen Rang oder
auch eine Platzierung. Die Sortierung wird komplett von Spine übernommen. Als
Nutzer des Scores-Modul muss man lediglich den Score setzen und kann sämtliche
Werte abfragen.
Zusätzlich bietet Spine die Möglichkeit, mehrere solcher Ranking für eine Modifikation anzulegen. Diese werden über eine ID identifiziert. Eine ID kann z.B. für einen Spielmodus oder ein Level stehen. Sie ist eindeutig und sie beginnen bei 0.
Die verschiedenen Funktionen des Scores-Modul sollen hier kurz vorgestellt werden.
Mit Spine_UpdateScore lässt sich der Score für den aktuellen Spine-Nutzer für eine gegebene ID erhöhen. Um einen Wert in die Tabelle aus dem Beispiel oben einzutragen, müsste man also folgenden Code ausführen:
Damit würde man auf Platz 1 des Highscores kommen.
Mit Spine_GetUserScore lässt sich der Score für den aktuellen Spine-Nutzer für eine gegebene ID auslesen. Das bedeutet, dass man mit
den Wert 1001 bekommt, wenn man das Beispiel oben ausgeführt hat.
Mit Spine_GetUserRank lässt sich die Platzierung für den aktuellen Spine-Nutzer für eine gegebene ID auslesen. Das bedeutet, dass man mit
den Wert 1 bekommt, wenn man das Beispiel oben ausgeführt hat.
Mit Spine_GetScoreForRank lässt sich der Score für den Spieler auf dem angegebenen Platz für eine gegebene ID auslesen. Das bedeutet, dass man mit
den Wert 1001 bekommt, wenn man das Beispiel oben ausgeführt hat. Für Platz 2 bekäme man 1000. Wichtiger Hinweis: Haben zwei Spieler den gleichen Score, werden sie alphabetisch sortiert und werden über den Platz in der Tabelle identifiziert und nicht über den Rang. D.h. Gorn und Lester haben zwar beide Rang 2 im Beispiel, jedoch würde man mit Spine_GetScoreForRank(0, 2); den Score für Gorn, mit Spine_GetScoreForRank(0, 3); den von Lester bekommen. Das ist beim Score allerdings noch egal, wichtig ist es jedoch für den zugehörigen Username.
Mit Spine_GetUsernameForRank lässt sich der Name für den Spieler auf dem angegebenen Platz für eine gegebene ID auslesen. Das bedeutet, dass man mit
den Wert 1001 bekommt, wenn man das Beispiel oben ausgeführt hat. Für Platz 2 bekäme man Diego. Wichtiger Hinweis: Haben zwei Spieler den gleichen Score, werden sie alphabetisch sortiert und werden über den Platz in der Tabelle identifiziert und nicht über den Rang. D.h. Gorn und Lester haben zwar beide Rang 2 im Beispiel, jedoch würde man mit Spine_GetUsernameForRank(0, 2); den Namen Gorn, mit Spine_GetUsernameForRank(0, 3); Lester bekommen.
Die Benutzung ist wie in den Beispielen gezeigt sehr einfach. Es gilt jedoch zu beachten, dass Scores immer überschrieben werden. Will man also immer nur höhere Scores eintragen, so muss man sich selbst um den Code dafür kümmern. Das ist jedoch ebenfalls sehr einfach, wie im folgenden Beispiel zu sehen ist: