Sonstiges: Entwicklertagebuch - Der Weg zum eigenen Switch-Spiel
Michael Grönert, am 26.12.2016, Seite 7 von 25

BadToxic Discord-Server | GameMaster Discord-Server | BadToxic auf Twitter
BadToxic auf Instagram | BadToxics Entwickler-Instagram | BadToxic auf YouTube
Teil 7: Das Inventar
Eine grundlegende Mechanik in unserem Projekt ist das Mitführen und Nutzen verschiedenster Gegenstände. Um das bewerkstelligen zu können, beschäftigen wir uns im heutigen Tagebucheintrag mit einem Inventar. Wir möchten auf unserem Bildschirm eine Reihe von Ablageplätzen (Slots) sehen, in die wir unsere Gegenstände (Items) legen können. Die Items sollen via Drag'n'Drop beliebig umplatziert werden können. Außerdem soll man die Möglichkeit haben, Items miteinander zu kombinieren bzw. sie ineinander zu schachteln. Manche Items sollen durch Antippen direkt verwendet werden können.
Passend zum derzeitigen Entwicklungsstand des Projektes sollen die ersten Items darauf ausgelegt werden, unser erstes Minispiel GONG! starten zu können, welches im letzten Tagebucheintrag behandelt wurde. Dazu soll unser Spieler eine tragbare Konsole mit sich führen, auf der dann das Spiel gestartet wird. Neben der Konsole benötigen wir das Minispiel selbst, in Form eines Spielmoduls, sowie eine passende Energieversorgung in Form von Batterien. Ich stelle mir also eine Art GameBoy als die erste Konsole vor, in die man ein Spiel und zwei Batterien einlegen muss, um sie zu nutzen. Aufgrund des Copyrights nenne ich diesen Handheld „GameGuy“. Wird dieser GameGuy angetippt, soll sich ein Fenster öffnen, welches weitere Slots anbietet und ausschließlich ein Spielmodul und zwei Batterien erlaubt.
Man soll das Rad nicht neu erfinden
Nun ist es so, dass bereits viele Spiele eine Art von Inventar benutzen und dies nichts Außergewöhnliches ist. Aus diesem Grund bietet es sich an, zunächst nach einer fertigen Implementierung Ausschau zu halten, die man übernehmen kann, statt alles von Grund auf neu zu erfinden. Auch wenn man alles selbst machen möchte, ist es nicht verkehrt, sich andere Varianten anzuschauen und sich inspirieren zu lassen.
Unity bietet den sogenannten AssetStore an, in dem verschiedenste Ressourcen für die eigene Spielentwicklung erworben werden können. Hier finden wir Grafiken, Audio-Dateien, 3D-Modelle, aber auch ganze Engines und Systeme, wie beispielsweise Inventarsysteme. Zum Glück muss man nicht gleich tief in die Tasche greifen - es gibt auch eine Vielzahl kostenloser Angebote. Nach etwas Suchen und Vergleichen bin ich dann auf das Paket „Inventory Master - uGUI“ gestoßen. Dieses erlaubt, verschiedene typische Inventar-Bestandteile zu nutzen. Vorhanden sind beispielsweise ein Hauptinventar, eine Art Schnellzugriffs-Leiste und ein Crafting-System. Dazu kommt eine Datenbank, in der man neue Items anlegen kann. Auch eine Drag'n'Drop-Funktionalität ist bereits vorhanden. Dieses Paket habe ich in mein Projekt importiert und etwas genauer inspiziert. Das Inventarsystem entspricht zwar nicht ganz dem, was ich mir vorstelle, aber es konnte eine solide Grundlage bilden. Im Endeffekt habe ich zwar so viel daran verändert, dass es vielleicht leichter gegangen wäre, wenn ich es von Grund auf selbst implementiert hätte, aber so konnte ich eine Menge lernen und etliche Mechanismen abkupfern.
Die Umsetzung des Inventars hat mich vor viele Herausforderungen gestellt und war ein langatmiger Prozess. Trotzdem möchte ich nicht tiefer in die Materie gehen und lieber von den Resultaten berichten. Im Endeffekt fasst meine Item-Datenbank zum aktuellen Zeitpunkt folgende Gegenstände: Eine GameGuy-Konsole in zwei Variationen, ein Spielmodul mit GONG! und eine 1,5V Batterie des Typs AA. Jede Art Item hat ein kleines Bild der Größe 64x64 Pixel. Sie unterliegen einer gewissen Typen-Hierarchie, um später verschiedene logische Prozesse zu vereinfachen und zu abstrahieren. Man spricht hier von Vererbung. So ist der GameGuy beispielsweise eine Konsole oder gar ein Handheld, und eine AA-Batterie ein spezieller Typ von „Batterie“. Dies erleichtert bestimmte Überprüfungen. Es ist z.B. nur möglich, Batterien und Datenträger in eine (tragbare) Konsole einzulegen. Probiert man dann dies, wird weiterführend getestet, ob genau diese Art von Batterie in diese Art von Konsole passt. So kann ich logische Abfragen ebenso hierarchisch und effektiv behandeln, anstatt am Ende große unübersichtliche Listen an Möglichkeiten zu prüfen.
Danach habe ich eine GUI (ein Fenster) programmiert, welche - wie oben beschrieben - drei Slots anbietet. In einen kann man ausschließlich GameGuy-Module legen und in die beiden anderen jeweils eine AA-Batterie. Erst wenn diese Slots gefüllt sind, wird ein Start-Knopf aktiviert, mit dem das Minispiel ausgeführt werden kann.

Inventarleiste mit geöffneter GameGuy-Oberfläche samt Spiel und Batterien.
Das Spielmodul kann also eine Referenz zu einem der Minispiele bekommen und dementsprechend trägt es ein passendes Cover - siehe Bild. Die Batterien brauchen außerdem eine Ladung. Diese wird durch kleine Balken neben dem Item dargestellt. Während man die Konsole nutzt, wird diese Ladung langsam aufgebraucht. Ist mindestens eine der Batterien leer, schaltet sich die Konsole von alleine wieder ab. Eine kleine Batterieanzeige verhindert während des Spielens, dass dies unbemerkt geschieht.
Die Batterien und das Spielmodul können entweder in die Slots des Konsolen-Fensters oder direkt auf die Konsole gezogen werden. In beiden Fällen ist es natürlich Voraussetzung, dass einer der entsprechenden Slots noch frei ist. Zieht man ein Item in einen bereits belegten Slot, tauschen die beiden Items ihre Plätze. Eine Ausnahme bilden stapelbare Gegenstände, die dann in einem Slot zusammengefasst werden können, aber solche habe ich noch nicht vorgesehen. Batterien bieten sich zumindest nicht zum Stapeln an, denn dann würden ihre verschiedenen Ladungen unübersichtlich.
Damit wäre ein solides Inventarsystem geschaffen, welches uns während des gesamten Projekts als wichtiger Bestandteil begleiten wird. Im folgenden Tagebucheintrag beschäftigen wir uns mit dem Speichern und Laden unseres Fortschritts, da wir nun erste Zustandsänderungen durchführen können, die behalten werden wollen.
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!
ANZEIGE:
Um Kommentare zu schreiben, bitte oben einloggen oder jetzt Registrieren!