Da diese Woche Zwischenpräsentationen anstanden, war der Fortschritt in einigen Bereichen etwas verlangsamt, trotzdem gibt es auch diese Woche wieder gute Neuigkeiten. Wir konnten endlich die verschiedenen Assets in einem Level zusammenbringen. Zusätzlich konnten wir das Leveldesign weiter voranbringen und mit den Arbeiten am UI beginnen.
Environment
(von Nadja)
In dieser Woche gab es einen Schritt vorwärts. Die Bodentextur war zwar schon in unserer Szene drin, jedoch viel zu klein und nur in schwarz-weiss. Das habe ich angepasst. Jetzt hat sie die richtige Grösse und Farbe. Im Terrain kann man kein Material, sondern nur eine Textur zuordnen. Das bereitete mir zu Beginn Mühe, weil ich die Einstellungen nicht verstand. So war der Boden anfangs viel zu glänzend, als würde man sich in einem Badezimmer aufhalten. In Unity liess sich das nicht ändern, nur eine Info, dass die ’smoothness‘ über den Alpha-Kanal geregelt ist. Jedoch konnte ich mit der Info nicht viel anfangen, bis mich Manuel, jemand aus einem anderen Team, fragte, ob ich das Bild nicht einfach in Photoshop öffnen kann. Dort hatte ich dann tatsächlich alle Kanäle separat und konnte einen Grauwert einstellen. Das wusste ich bisher nicht, dass das geht.
Neue Assets kamen auch hinzu. Es gibt jetzt flache Steine, abgebaute Kristalle und Holzbalken. Mit den flachen Steinen bin ich jedoch noch nicht zufrieden, diese möchte ich nochmals überarbeiten. Sie sind jedoch nützlich, um mal einen ersten Abschnitt im Leveldesign zu bebauen. Ich habe für die Assets Prefabs erstellt und den Eingang unseres Levels dekoriert. Licht ist auch ein zentrales Thema. Da alles bis auf die Höhlendurchgänge dunkel sein soll, wurde alles temporär mit spotlights ausgeleuchtet. Das sieht jedoch nicht gut aus, da man so kein gleichmässiges Licht hat. Beim Dekorieren ist mir aber aufgefallen, dass wir das gar nicht brauchen. Ich habe bei jeder Laterne ein Spotlight platziert und in die Farbe des jeweiligen dort hängenden Kristalles verändert. So ist das Licht gut versteckt und es macht sogar Sinn, dass es einzelne Spots sind. Im Raum steht noch real time oder baked, in Bezug auf Schatten. Diese wären schon wünschenswert, müssen jedoch noch auf Performance getestet werden.
HUD
(von Jonas)
Was natürlich nicht fehlen darf, ist ein HUD, welches der Spieler:in anzeigt, welche Buddies ausgerüstet & wie viele Leben noch übrig sind. Zuerst gab es ein paar Paper-Prototypen, bei denen ein paar verschiedene Ansätze für das UI ausprobiert wurden. Wir haben uns von einen (durch Tunic inspirierte) vertikalen Lebensbalken entschieden, da dieser den Platz auf dem Bildschirm am effizientesten nutzt, ohne dem Spieler ins Sichtfeld zu ragen. Ausserdem haben wir uns entschlossen, die ausgerüsteten Buddies in einem Muster darzustellen, das dem Schultertasten-Layout des Controllers entspricht. Wenn noch Zeit besteht, wäre es noch cool, Icons einzubauen, die mit den Fähigkeiten korrespondieren.
Das Ganze wurde mithilfe von UXML & USS implementiert, was dank der bereits bestehenden Erfahrung im Web-Bereich überraschend einfach von der Hand ging. Das in Unity vorhandene UI-Builder-Tool half natürlich auch dabei, das Grundgerüst des Layouts aufzubauen & die Änderungen direkt zu visualisieren. Im Anschluss werden die Komponenten durch ein neues C#-Skript (während das Spiel läuft) angesprochen und im Tandem mit dem Spielgeschehen angepasst.
Main Menu
(von Marcel)
Da es in der Planung eine kleine Lücke gab, konnte ich mich einen halben Tag mit dem Implementieren des Main Menu auseinandersetzen. Hierbei habe ich mich noch nicht auf das Design fokussiert, sondern lediglich auf die Funktionalität. Zum Hauptmenü gehören natürlich auch die Übergänge zwischen den Szenen. Dazu habe ich eine Komponente für den Fade-in/Fade-out vorbereitet. Diese kann nun in eine Szene gezogen und über Code angesteuert werden. Diese Komponente kann dann später auch beim Tod der Spieler:in, sowie dem Respawn nach einem Fall verwendet werden.
Character Model
(von Fee)
Diese Woche befasste ich mich erneut mit dem Weight Painting des Player Characters. Dazu verwendete ich die Weight Painting Ansicht in Blender und arbeitete mich bei jedem Teilobjekt durch die einzelnen Bones durch. Das automatisch erstellte Weight Paint war nicht besonders schön, was den Prozess künstlich erschwerte und verlängerte. Das Mesh musste angepasst werden, sodass es beispielsweise beim Mantel keine Innen- und Aussenseite hat, sondern nur jeweils ein “Face” (die Fläche zwischen einzelnen Punkten der Oberfläche) vorhanden ist. Auch nachdem ich das Mesh angepasst hatte und das Weight Paint für jeden Bone überprüft hatte, passierten beim Ausprobieren noch für mich unerklärliche Bewegungen im Mesh. Einige Vertices bewegten sich bei falschen Bones mit oder blieben stehen, wenn sie sich bewegen sollten. Ich suchte mir Hilfe bei Mitstudierenden und probierte einen anderen Weg des Weight Paintings aus, erhielt so ein etwas besseres, jedoch immer noch fehlerhaftes Resultat. Da es Ende der Woche war, entschloss ich mich das Game-Projekt für den Moment auf die Seite zu legen und mit neuen Augen in der folgenden Woche darauf zu schauen.
Als ich in den darauffolgenden Tagen beim Unterstützen eines anderen Projektes über Mixamo (ein Online-Tool, welches Rigging und basic Animationen für Models erstellen kann) stolperte, entschloss ich mich das Model mal probemässig ins Tool hochladen, um zu sehen, was das Tool so kann. Mir wurde Mixamo bereits am Anfang des Projektes vorgeschlagen, da hatte ich aber noch kein korrektes Rigging und erhielt daher diesbezüglich Fehlermeldungen.
Zuerst lud ich das Model mit dem vorhandenen Rigging hoch und erzielte damit mittelmässig zufriedenstellende Ergebnisse. Der anschliessende Versuch war es das Model ohne Rig hochzuladen und das Tool-interne Auto-Rigging auszuprobieren. So waren die Bewegungen fast natürlicher und wirkten passender. Dieser ganze Prozess war einerseits sehr spannend, das Tool kann so viel und bietet eine enorme Breite an Animationen, andererseits war es für mich auch etwas enttäuschend. Ich sass stundenlang am Rigging und Weight Painting und es funktioniert bis jetzt nicht wie gewollt und das Tool macht das einfach so in ein paar Minuten. Ich konnte jedoch vieles daraus lernen und für ein allfälliges weiteres Model mit Rigging mitnehmen.
Kleinere Änderungen
Neben den beschriebenen Änderungen konnten wir auch im Bereich Leveldesign und Ability Balancing einige Tasks abarbeiten, dazu werden wir jedoch im nächsten Blog mehr schreiben können.