1 Voraussetzungen

  1. Ikarus Scriptpaket
  2. LeGo Scriptpaket
  3. Spine Scriptpaket Version 0.9.7+
  4. Tutorial 1 - Initialisierung

2 Einleitung

Mit Hilfe von Spine lassen sich sehr einfach Erfolge umsetzen, wie man sie auch von anderen Plattformen wie Steam gewohnt ist. Dieses Tutorial zeigt, was man alles tun muss, um Erfolge einzubauen. Als Grundlage dient das erste Tutorial zum Thema Initialisierung. Benötigt wird das Modul Ërfolge", in den Scripts SPINE_MODULE_ACHIEVEMENTS.

3 Erfolge konfigurieren

Um Erfolge nutzen zu können, brauchen sie folgende Eigenschaften:

Die ID ist nötig, um den Erfolg zu identifizieren und eine Zuordnung zwischen den einzelnen Komponenten herzustellen. Sie ist eindeutig und ist sowohl in den Scripten als auch in Spine nötig. Der Name des Erfolgs ist genau einer ID zugeordnet und wird auf dem Erfolg sowie in Spine angezeigt. Die Beschreibung gibt eine Information zu dem entsprechenden Erfolg. Der Text kann leer sein oder auch erst eingeblendet werden, wenn der Erfolg freigeschaltet wurde. Angezeigt wird er nur in Spine, nicht aber in der Modifikation. Und zu guter Letzt besteht jeder Erfolg ebenfalls aus einer kleinen Grafik. Diese ist in zweifacher Ausführung nötig für den freigeschalteten und den gesperrten Zustand. Wer selbst keine entsprechenden Texturen erstellen kann, kann auch die Standardtextur nutzen, die Spine mitliefert. Es wird jedoch empfohlen, eine eigene zu erstellen, um eine Individualisierung zu haben. Die Textur wird auf eine Auflösung von 64x64 skaliert und sollte diese Auflösung daher nicht unterschreiten. Zuletzt gibt es noch das Versteckt-Flag. Dieses ist ebenfalls lediglich für Spine selbst relevant und gibt an, ob der Erfolg erst sichtbar sein soll, wenn man ihn freigeschaltet hat, oder von Anfang an.

Die Konfiguration der Erfolge findet in der Spine_UserConstants.d statt. Zuerst einmal wichtig sind die Konstanten:

MAX_ACHIEVEMENTS enthält die Anzahl aller in der entsprechenden Modifikation enthaltenen Erfolge. SPINE_ACHIEVEMENT_NAMES enthält die Namen der einzelnen Erfolge und SPINE_ACHIEVEMENT_TEXTURES die dazugehörige Textur. SPINE_ACHIEVEMENT_DEFAULT.TGA ist die von Spine mitgelieferte Standardtextur und kann verwendet werden, wenn keine eigene Textur vorhanden ist. Ansonsten den Eintrag ersetzen.

Nun sollte man sich noch für jeden Erfolg eine Konstante anlegen, den identifier. Das kann wie folgt aussehen.

const int Mod_Erfolg_01 = 0;

Wichtig dabei ist, dass der erste Erfolg immer die ID 0 besitzt, alle weiteren aufsteigend. Die Reihenfolge ist aber lediglich für die Zuordnung wichtig und hat nichts mit der Reihenfolge der Freischaltung der Erfolge zu tun.

Eine komplette Beispielkonfiguration der Erfolge könnte dann wie folgt aussehen.

const int Mod_Erfolg_01 = 0; 
const int Mod_Erfolg_02 = 1; 
const int Mod_Erfolg_03 = 2; 
 
const int MAX_ACHIEVEMENTS = 3; 
const string SPINE_ACHIEVEMENT_NAMES[MAX_ACHIEVEMENTS] = { 
        "Kapitel 1", // wird freigeschaltet nach Abschluss von Kapitel 1 
        "Sammler", // wird freigeschaltet, wenn man 10 Pflanzen gesammelt hat 
        "Erwache" // wird freigeschaltet, wenn man den Schlaefer besiegt hat 
}; 
 
const string SPINE_ACHIEVEMENT_TEXTURES[MAX_ACHIEVEMENTS] = { 
        "SPINE_ACHIEVEMENT_DEFAULT.TGA", 
        "SPINE_ACHIEVEMENT_DEFAULT.TGA", 
        "SPINE_ACHIEVEMENT_DEFAULT.TGA" 
};

Ab Spine 1.3 gibt es für die noch einfachere Erstellung der Erfolge in Spine selbst den Spine-Editor. Mit diesem lässt sich die komplette hier erwähnte Konfiguration angenehm über die GUI regeln.

4 Optionale Einstellungen

Neben den Pflichteinstellungen, gibt es ein paar weitere optionale Einstellungen, mit denen man die Erfolge etwas konfigurieren kann. Dazu existieren zur Zeit drei Einstellungen:

SPINE_ACHIEVEMENTORIENTATION gibt an, wo der Erfolg angezeigt werden soll. Dazu stehen die vier Positionen SPINE_BOTTOMRIGHT, SPINE_BOTTOMLEFT, SPINE_TOPLEFT und SPINE_TOPRIGHT zur Verfügung, die die vier Bildschirmecken repräsentieren. Mit SPINE_ACHIEVEMENT_DISPLAY_TIME lässt sich die Anzeigedauer der Erfolge konfigurieren. Der Standardwert ist 3000, was für 3 Sekunden steht.

5 Erfolge freischalten

Hat man die Konfiguration nun abgeschlossen, so muss man nur noch, wenn die entsprechende Bedingung für den Erfolg abgeschlossen ist, die richtige Spine-Funktion aufrufen.

Spine_UnlockAchievement(id);

Nimmt man die Erfolge aus dem vorigen Beispiel, so kann man beim Kapitelwechsel zu Kapitel 2 jetzt einfach

Spine_UnlockAchievement(Mod_Erfolg_01);

aufrufen und den Rest erledigt Spine.

6 Erfolge mit Fortschritt

Seit Spine 1.4 gibt es außerdem Erfolge mit einem Fortschritt. Man kann das beispielsweise für Erfolge wie ”Töte 100 Gegner” benutzen, aber auch für Erfolge der Art ”Spiele mit allen drei Hauptgilden durch”. Für Fortschritts-Erfolge wird zusätzlich die maximale Menge, die zum Erreichen des Erfolgs benötigt ist, erwartet. Diese ist allerdings in den Scripts uninteressant und wird daher nur auf dem Spine-Server gespeichert. Abfragen kann man den Maximal-Wert sowie den aktuell gespeicherten Fortschritt über

Spine_GetAchievementProgress(id); 
Spine_GetAchievementMaxProgress(id);

Ändert sich der Fortschritt, so setzt man den neuen Wert ganz einfach über

Spine_UpdateAchievementProgress(id, progress);

Sobald der aktuelle Fortschritt dem maximalen Fortschritt entspricht, wird der Erfolg automatisch freigeschaltet.