Spine Tutorial 3 – Scores

Voraussetzungen

Einleitung

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.

Scores

Zuerst einmal sollte geklärt werden, was konkret unter Scores zu verstehen ist. Das lässt sich relativ einfach anhand einer Tabelle darstellen.

RangUsernameScore
1Diego1000
2Gorn900
2Lester900
4Milten800

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.

Standardmäßig werden Scores absteigend sortiert. Das heißt, dass der höchste Score der Beste ist. Im Management-Dialog kannst du die Reihenfolge zu aufsteigend ändern. Das ist z.B. für Bestzeiten nützlich, wo überlicherweise gilt je niedriger desto besser.

Die Funktionen

Die verschiedenen Funktionen des Scores-Modul sollen hier kurz vorgestellt werden.

Spine_UpdateScore

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:

Spine_UpdateScore(0, 1001);

Damit würde man auf Platz 1 des Highscores kommen.

Spine_GetUserScore

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

Spine_GetUserScore(0);

den Wert 1001 bekommt, wenn man das Beispiel oben ausgeführt hat.

Spine_GetUserRank

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

Spine_GetUserRank(0);

den Wert 1 bekommt, wenn man das Beispiel oben ausgeführt hat.

Spine_GetScoreForRank

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

Spine_GetScoreForRank(0, 1);

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 3 im Beispiel, jedoch würde man mit Spine_GetScoreForRank(0, 3); den Score für Gorn, mit Spine_GetScoreForRank(0, 4); den von Lester bekommen. Das ist beim Score allerdings noch egal, wichtig ist es jedoch für den zugehörigen Username.

Spine_GetUsernameForRank

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

Spine_GetUsernameForRank(0, 1);

den Namen des aktuellen Spielers 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.

Hinweis

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:

var int newScore; newScore = 100;
if (newScore > Spine_GetUserScore(0)) {
	Spine_UpdateScore(0, newScore);
};

Scores in Spine-Datenbank bekommen

Gut, so weit kannst du die Scores in den Scripts benutzen, aber beim Datenbankeintrag in Spine werden sich nicht angezeigt und auch neue setzen funktioniert nicht.

Um das zu ändern musst du folgendes tun:

  1. Starte Spine
  2. In der Menüleiste oben wähle „Entwickler“ => „Management“
  3. Wähle deine Modifikation auf der linken Seite aus
  4. Wähle in den „Scores“ Tab
  5. Gibt hier alle Informationen zu deinen Scores ein
  6. Wenn du alles eingegeben hast, schicke die Änderungen ab

Jetzt werden die Scores auf der Infoseite, in der Bibliothek und im Profil angezeigt und können vom Spiel aus gesetzt werden.

Schaue auch ins Tutorial Veröffentlichen auf Spine.