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

BadToxic Discord-Server | GameMaster Discord-Server | BadToxic auf Twitter
BadToxic auf Instagram | BadToxics Entwickler-Instagram | BadToxic auf YouTube
Teil 23: Charaktere im 3D-Manga-Style
Es wird Zeit, etwas an unseren Spiele-Charakteren zu ändern. Zwar hat dieser flache Paper Mario-Style auch ein gewisses Etwas, doch möchte ich etwas deutlich besseres anstreben. Bisher wurden sehr simple 2D-Grafiken verwendet, welche ich vor über zehn Jahren für meine ersten Spiele angefertigt habe. Sprites im niedrig auflösenden Pixel-Stil - flache Bilder in einer dreidimensionalen Welt. Das kann natürlich Geschmackssache sein, aber betrachten wir das ganze aus der technischen Sicht, wird die Entscheidung leicht: Angenommen wir wollen verschiedene Charaktere, verschiedene Geschlechter, Alter und Größen. Dazu wollen wir diese vielleicht verschieden kleiden. Pro Kombination dieser (und ggf. weiterer) Werte, müsste man mehrere Bilder für jede Art Bewegung bzw. Animation des Charakters anfertigen - ein Aufwand den ich nicht alleine Tragen könnte. Wir brauchen also ein generisches Vorgehen, bei dem möglichst viel wiederverwendet werden kann.
Welche Möglichkeiten gibt es?
OK, ich möchte die Sprite-Variante nicht schlechter reden als sie ist. Natürlich könnte man auch hier Tricks anwenden und mehrere Bilder kombinieren um sich etliche Zeichnungen sparen zu können. Beispielsweise verschiedene Frisuren und Klamotten könnten über den Körper gelegt werden. Oder man setzt den Körper ebenfalls aus Einzelteilen zusammen, etwa Torsos in verschiedenen Formen. Dann könnte man die Körperteil-Bilder einzeln dynamisch skalieren, um kein verschiedene Varianten zu benötigen. Dazu könnte man mit Blend-Effekten Haut- und Kleidungsfarben ändern. Wie ihr schon bemerkt haben dürftet, kann man das ganze immer weiter generalisieren, automatisieren und vereinfachen, doch zu welchem Preis? Natürlich steigt der Rechenaufwand drastisch, wenn man statt einer Grafik plötzlich zehn mit unterschiedlichen Skalierungen und Blend-Modi zeichnen muss. Und natürlich sehen die Verzerrungen, welche eventuell durch das Skalieren entstehen, nicht so schön aus.
Es gibt Animationsprogramme, welche diese Dinge in Perfektion kombinieren und professionelle Ergebnisse erzeugen können. Davon möchte ich euch eines vorstellen, welches es bei meinen Überlegungen bis in die Endauswahl geschafft hatte - Spine. Spine ist eine 2D-Animations-Software welche Einzelbilder mit Knochen verbindet welche dann bewegt werden können. Zudem können einzelne Bereiche eines Bildes verschieden stark skaliert werden, wodurch verblüffende Effekte geschaffen werden können. Man kann das ganze so gut umsetzen, dass 2D-Bilder sogar dreidimensional wirken. Doch seht selbst in einem Beispiel auf YouTube:
Mit dieser Lösung müsste man also deutlich weniger zeichnen, dafür aber umso besser. Denn kantige Pixelgrafiken passen nicht zu solchen flüssigen Bewegungen - wenn man das Potenzial von Spine nutzen möchte.
Eine weitere Möglichkeit welche ich in Betracht gezogen habe, ist das Modellieren und Verwenden von Voxel-Objekten. Im Endeffekt auch kantige Pixelgrafiken, aber in 3D statt 2D. Diese wiederum könnte ich auch flüssig animieren, ohne dass es unpassend aussieht. Wir kennen Voxel beispielsweise von Minecraft, oder was das Animieren von kantigen und ungelenkigen Körpern betrifft - Lego-Spiele und -Filme. Das Zusammensetzen von kleinen Bauklötzchen traue ich mir deutlich eher zu, als das modellieren hochauflösender 3D-Figuren. In einem anderen Kontext habe ich dies auch mal ausprobiert, mit der kostenfreien Software MagicaVoxel. Wie das abläuft könnt ihr in meinem Zeitraffer-Video anschauen, in dem ich die Monas in Jakarta (Indonesien) nachbaue:
Um erwähnte Voxel-Figuren oder 3D-Charaktere allgemein zu animieren gibt es beispielsweise Mixamo von dem man kostenlose Animationen für humanoide Figuren herunterladen kann. Es ist also nicht nötig, alles selbst zu animieren. Auch wenn diese Variante mit Voxeln und vorgefertigten Animationen sehr einladend wirkt, schaue ich mich weiter nach etwas besserem um. Da ich oft Spiele sehe, in denen Manga-Figuren vorkommen, welche besser und professioneller wirken als der Rest des Spiels, recherchiere ich gezielt danach. Zudem würden mir Manga-Figuren in meinem Spiel ganz gut passen. Und tatsächlich werde ich fündig: VRoid Studio zum Anfertigen von dreidimensionalen Figuren im Manga-Stil. Zu dieser Software habe ich ebenfalls ein Video angefertigt, in dem ich mit verschiedenen Werten experimentiere:
Man wählt zunächst das Geschlecht oder direkt aus einer Vorlage aus. Alle möglichen Dinge wie Längen und Dicken der Gliedmaßen und etliche Details im Gesicht können verstellt werden, wodurch sich viele verschiedene Emotionen darstellen lassen. Es gibt Webportale, in denen Benutzer ihre Werke (Charaktere und auch Kleidungen) unter verschiedenen Lizenzen anbieten können. Hier habe ich auch das schwarze Kleid gefunden, kostenfrei und kommerziell nutzbar, welches im Video zu sehen ist. Auch zeige ich, wie relativ einfach Frisuren erstellt werden können.
Meine Wahl ist getroffen
So beeindruckt ich von diesen Manga-Figuren bin, und wie einfach sie zu erstellen sind, fällt mir die Entscheidung leicht. Natürlich mit dem Hintergrundgedanken, dass die erwähnten Mixamo-Animationen auch mit diesen Figuren funktionieren. So weit so gut, doch wie bekomme ich solch eine Figur nun in mein Spiel? Das von VRoid Studio angebotene Format .vrm wird nicht von Unity unterstützt. Die Schritte, die ich durchgeführt habe um dies zu bewerkstelligen, sind gegebenenfalls zum Entstehungszeitpunkt dieses Tagebucheintrags bereits veraltet, daher werde ich nicht genau darauf eingehen. Neben zwei Unity-Plugins (UniVRM und VRMtoPMXExporter) waren auch Nachbearbeitungen in Blender nötig. Es gibt auch einfachere Wege, je nachdem wie viel Kontrolle man über die einzelnen Bestandteile haben möchte. Beispielsweise kann man am Ende eine einzige Textur für den gesamten Charakter haben, oder aber einzelne Textur-Bilder für sämtliche Bestandteile von Kleidung und Körper. Wenn ihr euch die verfügbaren Methoden anschauen wollt, sucht einfach auf YouTube nach „Vroid Studio To Unity“.
Nun gilt es den Charakter zu bewegen und zu animieren. Die Bewegungen sind bereits bei unserem flachen Sprite-Charakter vorhanden. Doch anstatt ihn je nach Richtung vertikal zu spiegeln, damit er zumindest nach links und rechts sehen kann, werden wir den Charakter ab jetzt um die Y-Achse rotieren, so dass er stets genau in die Laufrichtung schauen kann. Und statt die Bilder für eine Animation laufend auszutauschen, müssen die einzelnen Körperteile flüssig bewegt werden. Hierzu verwenden wir wie angekündigt fertige Animationen von Mixamo. Fündig werden wir mit dem Suchbegriff „walking“.

Lauf-Animationen in Mixamo
Hier wählen wir aus was uns gefällt und ein Format, welches von Unity unterstützt wird. Zur Auswahl steht direkt ein „FBX for Unity(.fbx)“, welches wir ohne Skin („Without Skin“) nutzen möchten. Wir können zudem einstellen wie viele Bilder pro Sekunde („Frames per Second“) wir haben möchten und ob wir eine „Keyframe Reduction“ wünschen.

Mit diesen Einstellungen laden wir eine Animation herunter
In Unity müssen wir dann noch ein paar Einstellungen anpassen, wie z.B. den „Animation Type“ auf „Humanoid“ stellen. Das meiste können wir unverändert lassen. Doch manches müssen wir durch Ausprobieren abschätzen. Beispielsweise kann es vorkommen, dass wir im Tab „Animations“ Anpassungen vornehmen müssen, wie etwa „Root Transform“ Positionen auf bestimmten Achsen in die Posen „einbrennen“ („Bake Into Pose“). Dazu muss gesagt werden, dass die Animationen unseren Charakter direkt bewegen, unsere Walk-Animation den Spieler also wirklich vorwärts laufen lässt und nicht nur die Beine bewegt. Mit genau diesen Einstellungen können wir solche Effekte beeinflussen.

Ein paar Optionen müssen wir in Unity anpassen
Und dann können entsprechende Animations-Abläufe und -Übergänge modelliert werden. Dazu legen wir im „Animator“-Tab von Unity verschiedene Zustände an, welche jeweils für eine Animation stehen und verbinden diese miteinander über Transitionen. Die Transitionen brauchen jeweils Bedingungen die erfüllt sein müssen, damit sie ausgelöst werden, wie etwa dass eine Variable einen bestimmten Wert annimmt.

Zustände und Übergänge im Animator
In obigem Screenshot sieht man bereits weitere Animationen mit ihren Übergängen. Interagiert der Spieler beispielsweise mit einer Bank, geht er in den Zustand „Sitting Idle“ über. Nach ein paar Sekunden wird per Zufall gesteuert eine weitere Sitz-Animation gestartet, die den Charakter etwas anders sitzen lassen soll, um so etwas realistische Abwechslung zu erzeugen.

Runtergebeugt oder kerzengerade - verschiedene Sitz-Animationen
Eine wichtige Sache möchte ich noch genannt haben: In fast allen heruntergeladenen Animationen bemerke ich Probleme mit der Ausrichtung bzw. Rotation der Füße. Diese sind teilweise um unrealistische 180° verdreht. Google zeigt auf, dass dies ein geläufiges Problem ist. Um es zu beseitigen, müssen „IK“(„Inverse Kinematics“)-Checkboxen angehakt werden. Diese finden sich an verschiedenen Stellen im Animator-Tab. Wenn ihr euch über Gründe für die Notwendigkeit dieser Einstellungen erkundigen wollt, folgt am besten der Google-Suche. Leider muss ich sagen, dass sich die Probleme nicht bei allen Animationen auf diese Weise lösen lassen, soweit ich das bisher in Erfahrung gebracht habe.

Wichtige Option zum Korrigieren der Fuß-Ausrichtung
Ich denke damit sollte ich zunächst genug zum Thema berichtet haben - verschiedene Möglichkeiten zur Charaktergestaltung erwähnt und meine erste Wahl leicht vertieft. Ich verabschiede mich mit einem Video von meinem ersten Manga-Stil Charakter in Bewegung.
Das nächste Mal werden wir Gewissermaßen ein weiteres Minispiel zu Implementieren beginnen. Diesmal wird es allerdings (zunächst) direkt auf der „Weltkarte“ stattfinden, statt in einer virtuellen Konsole. Und es soll Hunger stillen… Bis bald!
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!