PlanetSwitch Planet3DS PlanetVita PSP.de PlanetiPhone Classics Forum

PGN-ID:[?] (Nicht eingeloggt)
Login
Registrieren
PlanetDS PlanetGameboy N-Page.de

-

Sonstiges: Entwicklertagebuch - Der Weg zum eigenen 3DS/Switch-Spiel

Michael Grönert, am 26.12.2016, Seite 10 von 15

Artikel mögen: Weitersagen:



Teil 10: Errungenschaften & Benachrichtigungen
Das letzte Mal haben wir uns mit den wichtigsten Menüs und dem Erfahrungs-System vertraut gemacht. Heute wollen wir uns Errungenschaften bzw. Achievements anschauen. Jedes unserer Minispiele soll einige Achievements anbieten, die sich freischalten lassen. Wird eines aktiviert, soll eine kleine Pop-up-Benachrichtigung am Bildschirmrand auftauchen und dies anzeigen. Ab diesem Zeitpunkt soll die Errungenschaft in einem Extra-Menü des jeweiligen Minispiels angezeigt werden.

Diese Pop-ups wollen wir nicht blocken
Gehen wir zunächst auf die Pop-up-Nachrichten ein. Je nach Kontext spricht man auch von „Growl“- oder „Toast“-Nachrichten. Wenn sie aktiviert werden, sollen sie für ein paar Sekunden am rechten Bildschirmrand eingeblendet werden. Es gibt eine maximale Anzahl der gleichzeitig möglichen Nachrichten - auch wenn es eher selten sein sollte, dass überhaupt mehrere gleichzeitig aktiviert werden. Sie werden von unten nach oben eingeblendet, d.h. die neueren stehen weiter unten. Wird die maximale Anzahl überschritten, wird die älteste Nachricht sofort entfernt. Jede hat ihren eigenen Countdown, nach dessen Ablaufen die Nachricht ebenfalls wieder ausgeblendet wird. Eine weitere Möglichkeit, eine Nachricht verfrüht verschwinden zu lassen, für die Ungeduldigen unter uns, ist das Anklicken bzw. Antippen der Nachricht. Alternativ denkbar wäre es, durch das Anklicken etwas auszulösen, wie im Falle eines Achievements das Öffnen der Achievement-Liste des Spiels.


Eine Pop-up-Benachrichtigung zeigt das freigeschaltete Achievement

Für die Umsetzung der Nachrichten benötigen wir zunächst eine Art Container, direkt über dem User-Interface. Ich habe also in Unity einen weiteren Canvas angelegt, eine Art UI-Folie, die über alles drüber gelegt wird, so wie es beispielsweise bereits für das Inventar gemacht wurde. Es gilt dabei die Zeichen-Reihenfolge zu beachten - es muss festgelegt werden, welche Folie sich vor welcher anderen befindet. Dieser Canvas bekommt dann einen Bereich zugeordnet, in dem die Nachrichten vertikal gestapelt werden. Das Erstellen neuer Nachrichten wollte ich möglichst leicht machen. Das Ergebnis ist der Aufruf einer Methode, welche ein Bild und einen Text erwartet und den Rest völlig automatisch erledigt. Und schon können wir unseren Spieler über alle möglichen Ereignisse informieren.

Tooooor! Was für eine Errungenschaft!
Wie bereits auf obigem Bild zu erkennen, habe ich mich für ein recht simples erstes Achievement entschieden. Sobald man in unserem ersten Minispiel Gong einen ersten Punkt macht, wird die Errungenschaft „First Goal“ (bzw. „Erstes Tor“ im Deutschen) freigeschaltet. Man sieht, dass der Text der Benachrichtigung eigentlich aus verschiedenen Teilen besteht. Zum einen ein fester Text „Unlocked achievement“ (bzw. „Errungenschaft freigeschaltet“), welcher bei jedem Achievement gleich bleiben kann, und ein spezifischer Part mit dem Namen des Achievements. Tatsächlich übergebe ich aber nicht nur den übersetzten Text an unser neu zu erstellendes Pop-up, sondern die Schlüssel-Worte, die verwendet werden, um den Text je nach Sprache zuzuordnen. Der Vorteil: Das Pop-up kann sich selbst übersetzen, wenn man die Sprache des Spiels wechselt, während es angezeigt wird. Sicher kann man sich darüber streiten, ob dies nötig ist bei einem Text, der nur wenige Sekunden angezeigt wird, aber ich möchte ja alles perfekt machen. ;) Und da es sich wie gesagt um zwei Textabschnitte handelt, musste sogar eine spezielle Art von Pop-up erstellt werden, welche gleich zwei Texte beinhaltet. Dennoch sagen Bilder mehr als tausend Worte und deshalb wollen wir zugleich aussagekräftige Bilder erstellen, welche das Achievement repräsentieren. Als erstes kam mir hierfür ein Fußball-Tor mit einer „1“ in den Sinn. Ich habe mich dann aber doch für etwas entschieden, das direkt das aktuelle Spiel widerspiegelt, auch wenn es nicht genauso intuitiv scheint. Das Resultat seht ihr ja selbst.

Die Errungenschaften gehören genauso zum Spielfortschritt wie der Level und wollen auch gespeichert werden. Aber auch hier werde ich nicht genauer auf das Speichern und Laden eingehen, da wir dazu bereits einen separaten Tagebucheintrag hatten. Beim Einbauen des Achievements ist noch auf ein paar Feinheiten zu achten, beispielsweise dass es nur aktiviert wird, wenn wirklich ein Mensch diesen Punkt gemacht hat und nicht etwa der Computer-Gegner oder ein Spieler bei einem Spiel mit KI gegen KI. Und auch hier soll alles so einfach wie möglich verwendet werden können: Ein Aufruf von enableAchievement("firstGoal"); genügt und schon ist unser Achievement aktiviert und im Spielstand untergebracht. Zu guter Letzt möchte ich meine Leistungen jederzeit einsehen können und dies ermöglicht uns der Menüpunkt „Achievements“ („Errungenschaften“) eines jeden Minispiels. Hier finden wir eine Liste aller verfügbaren Achievements des Spiels, auch solche, die noch nicht freigeschaltet wurden. Allerdings werden die Bilder nur bei den bereits erlangten angezeigt. An dieser Stelle gibt es noch Optimierungsmöglichkeiten. Beispielsweise kann man statt der Namen Hinweistexte anzeigen, welche Tipps zum Finden der Achievements liefern.


Achievement-Liste vom ersten Minispiel „Gong“

Soviel zum Thema Achievements. Das nächste Mal wollen wir uns mit Uhrzeiten, Tageswechsel und Wetter im Spiel beschäftigen, um etwas Abwechslung in unsere Overworld zu bringen.

Ihr möchtet die Auszüge aus dem Leben eines Entwicklers lieber in englischer Sprache lesen? Unter diesem Link findet ihr die englische Version dieses Tagebucheintrags!


Gehe zu Seite:
Vorherige Seite | Nächste Seite

Kommentare verstecken

- Kommentare


- Noch keine Kommentare vorhanden -

Um Kommentare zu schreiben, bitte oben einloggen oder jetzt Registrieren!