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

BadToxic Discord-Server | GameMaster Discord-Server | BadToxic auf Twitter
BadToxic auf Instagram | BadToxics Entwickler-Instagram | BadToxic auf YouTube
Teil 18: Fizhy
Es wird Zeit für etwas Spiele-Nachwuchs! Das dritte Minispiel steht auf der Matte! Es handelt sich um ein Remake des ersten Spieles, welches ich für die Öffentlichkeit in den App Stores von Apple und Google publiziert habe: Fizhy. Es ist ein Puzzlespiel welches dem Prinzip des Nintendo Klassikers Dr. Mario folgt. Ihr könnt die alte Version auch gerne selbst ausprobieren, bevor ihr mehr darüber lest und sie kostenlos und werbefrei für iOS und Android beziehen.
Beschreibung
Anstatt die genaue Funktionsweise des Spiels zu erklären, erlaube ich mir, die Beschreibung aus den App Stores zu zitieren:
Die Köder werden in die Mitte des Teiches geworfen und sinken langsam herab.
Sie können nach rechts, links oder nach unten bewegt und um 90° gedreht werden.
Sobald sich eine Kette von mindestens vier bildet, beißen alle beteiligten Fische an und werden an Land gezogen.

Messe dich mit anderen indem du versuchst, einen höheren Highscore zu erreichen. Kombinationen von mehreren Fischen in einem Zug geben mehr Punkte.
Spiele weitere und schwerere Level frei und besuche drei verschiedene Welten mit unterschiedlichen Schwierigkeitsstufen.
Jede Welt bietet eine einzigartige Umgebung mit jeweils 20 Stufen. (Oder sind es sogar noch mehr?)
Schaffst du es alle Errungenschaften (Achievements) freizuspielen?
Oder landest du sogar an der Spitze der Highscore Liste (Leaderboard) einer jeden Welt?

Wische mit deinen Fingern über den Bildschirm, um die Köder zu bewegen. Alternativ kannst du auch ein Gamepad verwenden, welches mit deinem Gerät kompatibel ist.
Ein besonderes Feature dieses Spiels ist die optionale stereoskopische Ansicht, durch die das Geschehen in 3D betrachtet werden kann.
Hierfür kann ein 3D Fernseher angeschlossen werden, eine VR-Brillen-Halterung für dein Gerät verwendet werden, oder du schielst einfach.

Das Spiel erlaubt dir eine Vielzahl an Einstellungen vorzunehmen, sei es um grafische Qualität gegen Geschwindigkeit abzuwägen, die fetzige Hintergrundmusik zu deaktivieren, eine andere Sprache zu nutzen oder den Farbenblindheitsmodus zu aktivieren, welcher durch größtmögliche Helligkeitsunterschiede in den Farben bei Sehschwächen helfen soll.
Die Neuauflage
Wie bereits bei unserem zweiten Minispiel, entwickeln wir auch dieses als eigenständiges Projekt, bevor wir es in GameMaster integrieren. Da wir mit der Entwicklungsumgebung Unity 3D arbeiten und das alte Spiel mit dem GameMaker implementiert wurde, müssen wir leider alles von Grund auf neu erarbeiten. Auch die im GameMaker verwendete Skriptsprache „Game Maker Language“ (gml) unterscheidet sich von C# stark, so dass sich einzelne Codes nur schwierig wiederverwenden ließen. Vor allem soll aber auch die Grafik stark verbessert werden und zu echtem 3D angehoben werden. Dafür habe ich ein Setting ganz nach meinem Geschmack ausgewählt: Ein japanischer Zen-Garten. Tatsächlich wird die Grafik zur größten Herausforderung in diesem Miniprojekt und soll mir ermöglichen, Neues auf diesem Gebiet zu lernen, was mir später im Hauptprojekt helfen wird.
Die Implementierung ist nahezu trivial im Vergleich zum Aufwand, den ich für die Welt-Gestaltung betreibe, vor allem wenn man alles schon mal programmiert hat. Es werden nach und nach Köder ins Wasser geworfen, welche in immer gleichen Zeitschritten ein Feld nach unten fallen. Wir benötigen also einen Timer, der dafür sorgt, dass gewisser Code immer nach einer fest definierten Millisekundenzahl ausgeführt wird. Hier ist es besonders wichtig, dass man die echte verstrichene Zeit verwendet und nicht etwa die Anzahl an Durchläufen des Haupt-Codes zählt. Ein Beispiel: Wir stellen die Bilder pro Sekunde (FPS) auf 60 ein und könnten somit davon ausgehen, dass nach einem Durchlauf, bzw. nach einem Frame, 1/60 Sekunden vergangen sind. Jedoch ist dies der Idealfall, der nur selten der Realität entspricht. Während der Köder fällt, kann er nach links, rechts und nach unten bewegt werden, oder um 90° im oder gegen den Uhrzeigersinn gedreht werden. Das Drehen ist etwas problematisch, da wir das Köderobjekt nicht um einen bestimmten Punkt drehen können, ohne dass es aus dem Raster herausragen würde. Mit jeder Drehung ist also auch eine Verschiebung (Translation) nötig.

Es wird nicht um einen bestimmten Punkt gedreht.
Genau genommen habe ich es so gemacht, dass er sich nur zwischen 90° hin und her drehen kann und die restlichen Ausrichtungen (180° und 270°) durch Tauschen der beiden Köderteile verwirklicht wird. Das erleichtert mir später das Verwalten der Referenzen zwischen den ganzen Köder-Teilobjekten. Wenn ein Köder schließlich nicht mehr weiter fallen kann, weil er auf dem Boden, einem anderen Köder oder auf einem Fisch gelandet ist, werden alle Köderteile und Fische auf dem Spielfeld durchlaufen und auf Ketten gleichfarbiger Objekte geprüft. Es müssen mindestens vier Objekte horizontal oder vertikal ohne Unterbrechung miteinander verbunden sein, damit diese „aufgelöst“ werden können. Die betroffenen Objekte werden dann vorgemerkt und in weiteren Zeitschritten nacheinander aufgelöst, bzw. Fische an Land gezogen. Es muss beachtet werden, dass ein Objekt Teil einer horizontalen und vertikalen Verbindung sein kann, also theoretisch zweimal aufgelöst würde. Durch mehrere nacheinander gefangene Fische, ohne dass ein neuer Köder eingeworfen wurde, entstehen Combos die mehr Punkte geben. Nach jedem Fang verdoppelt sich die Punktzahl. Des weiteren muss beachtet werden, dass nach einem Auflösen oder Fangen, andere Köderteile eventuell nirgends mehr aufliegen und ebenfalls wieder fallen können. Somit können abermals neue Kombos erzeugt werden, bevor ein weiterer Köder eingeworfen werden kann. Ist diese Kettenreaktion abgeschlossen, wird geprüft ob alle Fische gefangen wurden - falls ja ist der Level geschafft. Sollte hingegen kein Platz mehr sein, wo der Köder eingeworfen wird, ist das Spiel verloren.

Der Titelbildschirm
Die räumliche Welt
Die Gestaltung einer dreidimensionalen Umgebung ist deutlich aufwändiger als das Zeichnen der Hintergründe für die alte Version von Fizhy. Alleine über das Modellieren von Objekten könnte man zahlreiche Tagebucheinträge füllen. Tatsächlich nehme ich auch mal die Modellierungssoftware Blender zur Hilfe, um etwas auszubessern. Jedoch habe ich weder die Zeit noch die Erfahrung, alles selbst zu erstellen, damit es in einem für mich akzeptablen Zeitrahmen und einer passenden Qualität fertig würde. Deswegen suche ich nach unterschiedlichsten Ressourcen, für kostenlos kommerziell nutzbare 3D-Objekte und Texturen. So kann ich nach und nach alle relevanten Bestandteile zusammensuchen, wie sie im Ergebnis zu sehen sind. Glücklicherweise finde ich bereits einen japanischen Garten, der schon gut gelungen war: Japanese teahouse with garden free 3D model. Allerdings sind hier keine Texturen enthalten und es herrscht enorme Unordnung in der Hierarchie der vielen tausend Objekte. Ich investiere also viel Zeit, um die Objekte sinnvoll zu sortieren, damit sie auch hierarchisch beeinflusst werden können. Z.B. sollten Blätter ihren Ästen und diese ihrem Baumstamm untergeordnet sein. Ich lege die Objektgruppen so an, dass sie sich eignen, um für verschiedene Grafik-Detail-Stufen aktiviert und deaktiviert zu werden. Diese Stufen können in den Optionen des Spiels eingestellt werden.

Grafik-Details können in den Optionen verstellt werden
Bei vielen Objekten verzichte ich komplett auf Texturen und ordne ihnen nur einfarbige Materialien zu. Das spart natürlich Speicherplatz, ist leichter zu rendern und verleiht dem Spiel einen speziellen comicartigen Touch. Auch wenn der Garten so langsam nach etwas aussieht, wirkt er noch immer statisch und somit unrealistisch. Deswegen entscheide ich mich dazu etwas Wind in die Sache zu bringen und beschäftige mich erstmalig mit dieser Thematik. Schließlich läuft es darauf hinaus, dass ich alle Bäume und Büsche komplett neu als „Unity Trees“ erstelle, welche effizient von Wind beeinflusst werden können. Für dieses Thema habe ich erstmals ein bisschen Entwicklung auf Twitch gestreamt (siehe in der Unity3D Collection von meinem Twitch Account xybadtoxic). Nicht wundern, falls das Video zum Zeitpunkt des Erscheinens dieses Tagebucheintrags nicht mehr verfügbar sein sollte, Videos werden dort nach einer Weile automatisch entfernt. Sollte jedoch Interesse daran bestehen, könnte ich so etwas auch öfter machen. In dem Video sind die verschiedenen Arbeitsschritte zu sehen, die nötig sind um Bäume zu erstellen. Deswegen werde ich textuell nicht im Detail darauf eingehen. Mehr Bewegung bringe ich durch eine Skybox in die Welt - einen Himmel im Hintergrund, der sich langsam bewegt.
Es gibt noch viel mehr...
In dem fertigen Spiel steckt noch deutlich mehr verborgene Arbeit, doch dies sollten die wichtigsten Themen gewesen sein. Dazu kommt noch die Touch-Steuerung mit ihren Swipe-Gesten, welche perfekt ausbalanciert werden müssen. Relevant sind die Strecke, die ein Finger zurücklegen muss, bevor sich ein Köder bewegt und vor allem die Zeitabstände, zwischen den einzelnen Bewegungen. Es muss eine UI (User Interface) gestaltet, die Punkte gezählt und zusammen mit anderen Daten, wie etwa dem Levelfortschritt, gespeichert werden. Eine weitere Herausforderung war es, Spielfeld und Kamera so aufeinander abzustimmen, dass der Platz auf einem beliebig großen Bildschirm perfekt genutzt werden kann. Vor allem die Formate der Bildschirme unterscheiden sich heute stark. So sind Tablets nahezu quadratisch während aktuelle Smartphones wie das iPhone X ein extra breites Bild haben. Die UI muss sich entsprechend skalieren, da bei neuen Geräten die Pixeldichte so hoch ist, dass einzelne Buttons sonst winzig klein wären. Dann kommt noch das Erstellen der Store-Einträge für Google Play und iTunes mit etlichen Texten und Informationen auf eventuell mehreren Sprachen und dem Anfertigen vieler Screenshots und anderer Bilder in sämtlichen Größen und Formaten. Auch ist immer mit plattformspezifischen Komplikationen zu rechnen, die es zu bewältigen gilt. Alles in allem habe ich für dieses Spiel über 100 Stunden Arbeit investiert, wie ich von meiner Zeiterfassungs-Anwendung ablesen kann. Ein Aufwand, den ich nicht für jedes Minispiel betreiben werde. Aber ich konnte so auch einiges Neues lernen und für gewisse „Fans“ meines Fizhy-Spiels habe ich gerne etwas mehr Zeit investiert.
Damit möchte ich mich für dieses Mal verabschieden. Das neue Spiel Fizhy Zen könnt ihr euch ebenfalls auf Android und iOS selbst anschauen. Der Aufwand um dieses Spiel in GameMaster einzubauen, wird auch nicht ohne sein. Bis die Tage!
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!