Für die letzten Tage des Modules ging es in den Endspurt. Das sphärische fahren funktioniert, das Bike Model sieht gut aus, es gibt ein UI, es wirbeln Partikel und ein neuer Planet gibt es auch. Jetzt muss nur noch alles zusammengefügt werden.
Journal
Manuel
Zum einen Teil habe ich an einem neuen Planeten gearbeitet der grösser ist, etwas flacherer Boden hat, weil dies beim Fahren noch etwas holprig war und verschiedene Objekte werde auf der Oberfläche verteilt, unter anderem Grabsteine, Schanzen, Torbögen sowie ein grosser Kopf einer Statue.
Des Weiteren kümmerte ich mich um schöne Texturen des Planeten, hier habe ich einfach eine Oberfläche von Quixel Megascans genommen und mit Triplanar Projection auf die Kugel projiziert, sie erzielte uns sehr schöne Resultate.
Zum Schluss noch ein paar Partikel um das Fahrgefühl auch richtig realistisch zu gestalten.
Marc
Das Physikproblem konnte zum Schluss doch noch gelöst werden. Die Verwirrung entstand dadurch, dass 3D Vektoren keine Information über die eigene Orientation haben (sondern nur die Richtung). Das heisst, egal wie viel sich der Vektor wie eine Schraube um seine eigene Achse dreht (Roll-Drehung), er hat immer die gleichen Werte. Die Lösung war es die aktuelle Orientation vom Bike mit der inversen Drehung der Aufwärtsrichtung (von [0,0,1] zu Vektor von Gravitation Zentrum zu Bike normalisiert) zu multiplizieren um so die aktuelle Orientation, also der Roll, vom Aufwärtsvektor zu bekommen. Damit konnten nun endlich relative Drehungen gemacht werden, anstatt dass wir uns merken wie viele Grad sich das Bike im Vergleich zum Ursprung gedreht hat und dann diese Drehung mit der Drehung der Aufwärtsrichtung multiplizieren. Das ganze wird noch verwirrender, weil wenn man das ganze nicht aus der Perspektive von einem Vektor betrachtet, sondern aus der Perspektive vom Koordinatensystem, ist es eine Yaw Drehung und keine Roll Drehung. Und das kombiniert damit, dass sich das Koordinatensystem dreht und dass es mehrere Roll-, Pitch-, Yaw-Kombinationen gibt um die identische Rotation abzubilden hat für mehr als genug Kopfschmerzen gesorgt. Das Schlimmste daran war zu wissen, dass es eine Lösung gibt und man nicht weit davon entfernt ist. Trotz all den Struggles, war es die Zeit und Energie Wert. Dieser Bug hätte den Spielspass vom Endprodukt auf der Sphäre ziemlich gehemmt und dass man auf einem Planeten fahren kann, hebt das Game von anderen Motocross Games ab. Es ging auch nicht darum, ein fertiges, perfecktes Game zu erstellen, sondern kreativ sein und unser Potential als Team in dieser kurzen Zeit zu zeigen.
Insgesamt bin ich sehr zufrieden mit dem Endprodukt. Es war erstaunlich wie gut sich zum Schluss die Arbeit von jedem einzelnen zusammen mergen liess. Für mich persönlich war das die bisher beste Gamedev Erfahrung und ich habe sehr viel Neues gelernt. Ohne guten Grund werde ich Unreal Engine nie wieder anfassen.
Dominic
In den letzten zwei Wochen konnten wir einiges abschliessen. Ich hatte begonnen mit der Überprüfung, ob das Bike aktuell auf dem Boden fährt oder in der Luft fliegt. Dadurch ist es nun möglich, das Fahrverhalten unterschiedlich zu den Tricks in der Luft zu gestalten.
Danach konnte ich Gians 3D Modelle vom Bike und dem Fahrer importieren und das Material so anpassen, dass die Leuchtstärke der Raketentriebwerke per Code gesteuert werden kann. Damit der Fahrer korrekt auf dem Bike bleibt und sich beim Lenken mitbewegt, musste der Code zum Bewegen der Animation-Bones nochmals überarbeitet werden, da es beim Platzhalter noch keinen Fahrer gab.
Schlussendlich bin ich sehr zufrieden damit, wie sich alles zusammengefügt hat und was wir während dem Projekt alles erreichen und lernen konnten.
Gian
Diese letzte Woche ging es darum, alle Assets fertig zu machen. Nachdem die Texturen des Bikes in Substance Painter erstellt und das Rig befestigt wurde, wurde auch das Modell des Fahrers ein wenig erneuert, um an den Detailgrad des Bikes zu kommen. Zusammen wurde dann in Blender eine Pose erstellt und für Unreal Engine exportiert. Ich bin sehr dankbar, dass Dominic die Animationen in Unreal Engine erstellt hat. Mit dem hatten wir endlich einen voll funktionsfähiges Playermodel