[Tech] Wie die Mauern entstehen

    • Offizieller Beitrag


    In vorigen Dev-Blogs haben wir uns darauf konzentriert, wie die Dinge im Spiel selbst funktionieren und aussehen – aber wir haben nie behandelt, wie sie eigentlich entstehen. Wie läuft es hinter der Bühne ab? Was auf den ersten Blick sehr einfach und offensichtlich wirkt, braucht eventuell durchaus einige Zeit bis eine adäquate Lösung gefunden und programmiert wurde.


    Um also ein bisschen Licht ins Dunkle zu bringen, haben wir uns mit einem unserer Graphics-Programmer zusammen gesetzt – Florian. Er ist dafür zuständig, die Mauern, die ihr zum Schutz vor Invasoren verwendet, zu glätten. Unsere erste Frage an Florian war: Was genau ist ein Graphics-Programmer und was macht man so den ganzen Tag?


    Die Antwort war nicht so klar wie erhofft, da der Job nicht so einfach zu erklären ist: Er versucht, Lösungen für die Grafiker zu finden, damit im Spiel alles korrekt aussieht. Außerdem implementiert er spezielle Effekte.


    Wenn wir uns die Mauern anschauen, das Befestigungssystem, arbeiten ja schließlich mehrere Abteilungen daran: Die Grafiker, Animators, Logic-Programmer und der Graphics-Programmer. Grafiker bauen die Mauern als rechteckige Blöcke. Wenn wir diese allerdings auf das Terrain stellen, sieht das erstmal komisch aus – es sieht aus, als fehlt etwas.


    Und hier kommt Florian ins Spiel. Er überlegt sich eine Lösung, die diese rechteckigen Blöcke in etwas Ebenes und gut Aussehendes verwandelt. Außerdem muss er immer ein Auge auf die Spielperformance haben: Manche Lösungen beeinflussen die Performance eventuell stärker als andere.


    Das Ziel für Florian ist, einen glatten und flüssigen Übergang zwischen den einzelnen Mauerstücken sowie zum Terrain darunter zu erreichen.


    Für seine Arbeit muss er auf mehrere Punkte achten:

    1. Flüssiger Übergang zwischen den Mauerstücken
    2. Mauern sollten sich an das Terrain anpassen
    3. Gras, und alles, das mit dem Terrain verbunden ist, sollte weiterhin funktionieren und sich korrekt verhalten
    4. Militäreinheiten müssen korrekt auf der Mauer laufen können

    Hier beginnt nun die eigentliche Arbeit. Florian setzt sich hin und brainstormt mehrere Ideen. In der Welt von Die Siedler ist alles sehr dynamisch und die Assets müssen sich ihrer Umgebung anpassen, insbesondere dem Terrain-System. Daher müssen die Mauern dem darunterliegenden Gelände folgen. Das End-Stück der Mauer kann sich auch ändern, je nachdem wo der Spieler das nächste Stück platziert. Deswegen muss die Mauer anpassbar und flexibel genug sein.

    Um das zu erreichen verwendet Florian „Splines“. Dieser Begriff beschreibt normalerweise eine weite Reihe von Funktionen. In diesem Fall ist diese Funktion eine Kurve, die aus 5 „Kontrollpunkten“ besteht. Einem Start, einem Ende und einem Punkt in der Mitte, mit einem Punkte jeweils rechts und links davon, um die Eigenschaften der Kurve festzulegen. Das macht es leicht, den Wall je nach Bedarf anzupassen.


    Die Kontrollpunkte des Splines werden direkt auf dem Terrain platziert. Da die Mauer, wie beinahe jedes andere Objekt im Spiel, aus Dreiecken besteht, können wir das Spline benutzen, um seine Höhe auf die drei Eckpunkte des Dreiecks zu projizieren.


    Jetzt haben wir nach wie vor das Problem, dass das Terrain eventuell höher oder niedriger auf den Seiten der Mauer ist, was bedeutet, dass wir es ebnen müssen, wenn wir ein Mauerstück platzieren. Auch wenn wir die Mauer verbessern, ändert sich der Spline nicht, da die Mauer eine vordefinierte Höhe hat. Sobald alles fertig gestellt ist, beginnt das Testen: Unterschiedliche Mauerstücke werden im Spiel platziert und es wird versucht, Fehler zu provozieren. Dabei wird beobachtet, wie sich die Mauer jeweils verhält.


    Wenn alles perfekt läuft – und das tut es nie auf Anhieb – wird das System ins Spiel integriert.


    Was sind eure Gedanken zur Arbeit eines Graphics-Programmers? Gibt es noch Informationen, die euch interessieren aber im Artikel fehlen? Welche Themen interessieren euch für einen zukünftigen Dev-Blog? Lasst es uns in den Kommentaren wissen.


    Quelle

    Mein System

    AMD Ryzen 7 2700x| RX 6650 XT XFX MRC 308 OC|MSI MAG B550 Tomahawk|2x16GB G.Skill Flare X DDR4-3200 DIMM|WD_Black SN 750 NVMe M.2 SSD|be quiet! Silent Base 801