Animation, Bewegung & Terrain v3

Hinweis: Dieser Blogpost wurde maschinell aus dem englischen Original übersetzt. Zum englischen Original.

Exofactory ist jetzt auf Steam verfügbar! Wenn dich das Spiel interessiert, freue ich mich, wenn du es dort auf die Wunschliste setzt.

Überblick

Mehrere große Ziele wurden erreicht: Das Spiel ist animiert, wir haben erste Ressourcen und das Terrain-System nähert sich dem Status „fertig“. Es war nicht die produktivste Periode überhaupt, aber der Kurs stimmt.

Außerdem habe ich auf Bornhack 2025 einen Vortrag über Spieleentwicklung in Bevy mit Rust gehalten. Er ist noch nicht veröffentlicht – sobald das Video online ist, verlinke ich es in einem späteren Dev-Blog.

Animation

Es gibt jetzt Animationen im Spiel! Animationen in Bevy zu lernen hat Spaß gemacht. Der Lebensretter (und enorme Zeitersparnis) war das Bevy-Ökosystem, konkret das hervorragende Bevy/Blender-Plugin Skein von Chris Biscardi. Er tut unglaublich viel für die Bevy-Community und ich sehe seine Arbeit überall.

Skein ist ein Plugin sowohl für Bevy als auch für Blender und erlaubt 3D-Artists, Bevy-Komponenten (falls dir Bevy neu ist: Komponenten sind quasi Tags) direkt an Teilen eines 3D-Assets zu hinterlegen. Beim Export als glb/gltf werden diese Komponenten mit gespeichert.

Auf der Bevy-Seite liest Skein die eingebetteten Komponenten aus und stellt sie im Entity Component System bereit. Das spart massig Zeit und Boilerplate.

Programmgesteuerte Steuerung der Lifter-Animation

Wir nutzen Skein, um Animation-Bones mit Komponenten zu versehen. So lassen sich Animationen programmatisch steuern und auf Spielereignisse reagieren, statt nur stupide Schleifen abzuspielen. Hauptsächlich setzen wir das derzeit bei den Liftern ein, wie oben zu sehen.

Animationstransitionen

Zusätzlich verwenden wir Bevy's Animation-Graph-System. Damit wechseln wir weich von einem Animationszyklus zum anderen – ohne Ruckler oder Artefakte. Im Beispiel geht der Exoframe fließend vom Laufen in den Idle-Zustand über.

Ressourcen

Wir haben nun Ressourcen! Den Anfang machen Eisen und Kupfer. Bald werden Maschinen richtig loslegen.

Kupfer-Ressource Hier siehst du Kupfererz und -barren. Davon wird es reichlich geben, unter anderem für stromsparende Kabel.

Eisen-Ressource Und hier Eisen. Ich liebe die Details auf der Oberseite der Barren. Da wir als KI spielen, kann ich mir vorstellen, dass die KI den Look ebenfalls feiert.

Terrain v3

Die Bevy-Welt ist voll von halbgar gepflegten und schlecht dokumentierten Terrain-Level-of-Detail-Systemen (LoD). Es gibt unzählige Ansätze, aber ich habe keinen gefunden, der gepflegt, funktionsreich und ordentlich dokumentiert ist. Deshalb hat Exofactory jetzt eine eigene LoD-Implementierung. Noch relativ simpel, aber sie erfüllt meine Basisanforderungen:

  1. Terrain abhängig von der Position mehrerer Kameras ein- und ausblenden.
  2. Höher- und niedrigauflösende Meshes sowie Texturen anhand dieser Kameras austauschen.
  3. LoD auch für Details wie Vegetation oder Steine handhaben.
  4. Das Ganze performant und Bevy-nativ im ECS umsetzen.

Tests des Level-of-Detail-Systems

Oben siehst du das Testterrain, mit dem ich das System geprüft habe: Grün markiert die Kachel unter der aktiven Kamera, Gelb die höher aufgelösten Tiles, Rot die niedrigeren – und das entfernte Rot wird despawnt.

Das ist eine deutlich stärkere Grundlage für Terrain, auch wenn viel Arbeit aus früheren Versionen neu geschrieben werden musste. Gute Nachricht: Terrain v3 lässt sich hervorragend auf Ästhetik oder Performance abstimmen. Selbst auf meinem alten 11th-Gen-Intel-Laptop mit iGPU lief die volle Sichtweite bei 60fps. Klar, das kann sich ändern, wenn mehr Systeme hinzukommen.

Terrain v3 nur mit Grundfarben

Hier eine weiterentwickelte (weiterhin texturlose und noch leere) Version des Terrain-v3-Systems mit kompletter LoD-Funktionalität. Texturen und Details kommen später per Shader auf der GPU – die Grundfarben geben schon eine Idee, wohin es stilistisch geht. Sobald wir Terrain-Details ergänzen, wird das richtig gut aussehen.

Fazit

In dem Zeitraum hätte ich gern mehr geschafft. Trotzdem war alles, was fertig wurde, sehr wirkungsvoll: Das Spiel ist spielbarer – und wichtiger in dieser Phase – besser testbar. Keine Ruckler mehr beim Überqueren von Terrain-Kacheln. Alles wirkt weich und angenehm. Und die Animationen bringen richtig Leben in die zuvor statische Welt.