5 Punkte von GN⁺ 2025-04-29 | 3 Kommentare | Auf WhatsApp teilen
  • Das Entwicklerteam von Architect of Ruin begann zunächst mit der Bevy-Engine und Rust, wechselte jedoch aus praktischen Gründen zu Unity und C#
  • Trotz der Vorteile von Rust und Bevy wurden Zusammenarbeit, der Bedarf an High-Level-Abstraktionen, häufige API-Änderungen, geringere Effizienz beim Lernen mit KI-Unterstützung und Grenzen beim Modding zum Problem
  • Als Test wurden drei Kernfunktionen in Unity portiert; der Ansatz wurde innerhalb von 3 Tagen erfolgreich validiert und die gesamte Portierung in 6 Wochen abgeschlossen
  • Nach dem Wechsel verringerte sich der Codeumfang, die Entwicklung beschleunigte sich, und auch Tools aus dem Ökosystem konnten genutzt werden, was die Zufriedenheit im Entwicklungsprozess deutlich erhöhte
  • Die Wertschätzung für Rust und Bevy ist weiterhin groß, dennoch wird betont, dass es sich um eine realistische Entscheidung zur Erfüllung der Projektanforderungen handelte

Frühe Entwicklung mit Bevy und Rust

  • Das Team schätzte das Bevy-ECS-Modell und die für Rust typischen Compile-Time-Checks und erlebte dadurch schnelles Refactoring und hohe Stabilität
  • Tilemap, Skeletal Animation und eine benutzerdefinierte Rendering-Pipeline wurden in Bevy direkt selbst implementiert
  • Die Begeisterung der Bevy-Community und ihre lebendige Diskussionskultur waren eine große Inspirationsquelle

Emergent Problems: Probleme, die schwerwiegender waren als erwartet

  • Probleme bei der Zusammenarbeit: Für Teammitglieder, die Rust-Anfänger waren, stellte die Komplexität von Rust eine Lernhürde dar und verlangsamte die Beiträge
  • Mangel an High-Level-Abstraktionen
    • Gameplay-Ideen ließen sich nur schwer schnell in Code umsetzen
    • Es fehlte an der nötigen Flexibilität für schnelles Prototyping
  • Häufige API-Änderungen: Das Team war erschöpft von der API-Instabilität durch Bevyes schnelle Weiterentwicklung und von Regressionen bei jedem Update
  • Unzureichende Unterstützung für KI-gestütztes Lernen: Mit C# und Unity funktionierte KI-unterstütztes Lernen gut, doch für Rust und Bevy fehlten Informationen, was die Produktivität senkte
  • Grenzen beim Modding: Im Rust-/Bevy-Umfeld wurde es als schwierig eingeschätzt, zuverlässiges Scripting und ABI-Kompatibilität sicherzustellen

Die Entscheidung zum Wechsel: Ein Unity-Experiment

  • Verglichen wurden Unreal, Unity, Godot, das Beibehalten von Bevy sowie die Entwicklung einer eigenen Engine
  • Unity erzielte die höchste Bewertung in Bezug auf Lernbarkeit, Produktivität, einfache Zusammenarbeit und Modding-Möglichkeiten

Das 10%-Experiment

  • Drei Kernaufgaben wurden innerhalb von 3 Wochen getestet: Tilemap, Charakter (Spine) und Aufbau der UI
  • Letztlich wurden alle drei Aufgaben in nur 3 Tagen abgeschlossen, woraufhin die Entscheidung zum Wechsel fiel

Portierungsprozess und Ergebnis

  • Innerhalb von 6 Wochen wurden alle Systeme und Inhalte in Unity neu implementiert
  • Das Team erlebte weniger Code, den Wegfall von Boilerplate und eine höhere Entwicklungsgeschwindigkeit
  • Die Unterstützung für KI-gestütztes Lernen verbesserte sich, und Tools aus dem Unity-Ökosystem wie AStar Pathfinding konnten aktiv genutzt werden

Das Leben danach

  • Architect of Ruin wird derzeit auf Basis von Unity entwickelt und behält schnelle Umsetzung von Ideen und hohe Produktivität bei
  • Der tiefe Respekt für Rust und Bevy ist unverändert, doch es wird betont, dass eine zum Projekt passende Entscheidung nötig war
  • Künftig sollen weitere Details zur Unity-basierten Umsetzung und zu den Erfahrungen bei der Portierung geteilt werden

Fazit

  • Es wird eingeräumt, dass zu Beginn keine faire Bewertung der Optionen erfolgt ist
  • Es wurde Zeit investiert, um die Richtung zu ändern, doch im Ergebnis wurde mehr Zeit gewonnen
  • Das Team erkannte, dass für die Umsetzung seiner Entwicklungsvision eine realistische Beurteilung jenseits des Bauchgefühls wichtig war

3 Kommentare

 
aer0700 2025-04-30

Es scheint wahrscheinlich irgendeine GUI-Engine zu geben, die Rust als Skriptsprache verwendet, aber ich weiß nicht, ob es etwas gibt, das auf Production-Niveau eingesetzt wird. Hin und wieder tauchen wohl so etwas wie Berichte über gescheiterte Versuche auf, Spiele mit Rust zu entwickeln, aber na ja ... Dass Berichte über Fehlschläge auftauchen, finde ich noch nachvollziehbar, aber irgendwie hört man nur selten von Erfolgsgeschichten, und das ist schon etwas schade. Sicher gibt es auch Leute, die es erfolgreich einsetzen, irgendwo bestimmt.

 
qwqwhs 2025-04-30

Oder laden sie es vielleicht gerade deshalb nicht hoch, weil sie denken, dass es bei guter Nutzung ohnehin jeder mindestens auf diesem Niveau hinbekommt?

 
GN⁺ 2025-04-29
Hacker-News-Kommentare
  • Ein weiterer Fall eines mit Rust gestarteten Spielprojekts, das gescheitert ist. Das ist bedauerlich.

    • Ich entwickle seit fast 5 Jahren mit Rust an einem Metaverse-Client, und es dauert einfach zu lange.
    • Andere haben ein ähnliches Projekt mit C#/Unity in weniger als 2 Jahren umgesetzt.
    • Die Nutzerbasis für 3D-Spieleentwicklung mit Rust ist sehr klein.
    • Es gibt keine Beispiele für mit Rust entwickelte AAA-Titel, und auch niemand hat die Performance-Probleme gelöst.
    • Der verwendete Stack ist Rend3/Egui/Winit/Wgpu/Vulkan, und außer Vulkan ist alles ziemlich fehlerbehaftet.
    • Es gibt zu viele verschiedene Crates, die die Event-Loop kontrollieren wollen.
    • Crates werden alle paar Monate refaktoriert, wodurch APIs oft kaputtgehen.
    • Dereferenzierung ist in Rust schwierig.
    • Rust braucht eine konsistente Methode für Single Ownership und Dereferenzierung.
    • Rust-Traits sind keine Objekte und eignen sich nicht gut zum Aufbau von Objekthierarchien.
  • Klingt wie eine gute Lektion dafür, warum kommerzielle Game-Engines die Spieleentwicklung dominieren.

    • Es gibt viel zu tun, um ein Spiel zu bauen, aber das meiste davon sind bereits gelöste Probleme.
  • Ich mag Rust als Ersatz für C++, denke aber, dass C++ für die meisten Projekte nicht geeignet ist.

    • Viele Leute entscheiden sich offenbar für Rust, weil sie es für effizienter halten.
  • Spieleentwicklung mit Rust ist wie Pionierarbeit und erfordert viel Aufwand.

    • Rust ist noch nicht so weit.
  • Ich mag Rust, aber schnelle Iteration ist schwierig.

    • Ich habe Bevy ausprobiert, bin aber zu Godot zurückgekehrt.
  • In einem Projekt wurde statt Rust auf Go umgestellt, und die Iterationsgeschwindigkeit wurde höher.

    • Der Code ist fragiler, aber angesichts der Art des Projekts halte ich das für die richtige Entscheidung.
  • Die hohe Volatilität des Rust-Ökosystems ist ein unerwarteter Nachteil.

    • Crates werden oft aufgegeben, und ich denke, das liegt daran, dass viele sie vor allem für Rust selbst schreiben wollen.
  • Ein Entwickler baut die Game-Engine in C und entwickelt das Spiel in Lua.

    • Es gibt eine klare Trennung zwischen Game-Engine und Spiel.
    • Das Spiel "Sapiens" wurde erfolgreich auf Steam veröffentlicht.
  • Mit Rust zu arbeiten ist fast immer schwieriger.

    • Das ist eine Meinung, die auf persönlicher Erfahrung beruht.
  • Das Ziel des Projekts war, dass ein Bruder, der nicht programmiert, ebenfalls beitragen kann.

    • Es fühlte sich an, als müsse man ständig auf die neueste Version upgraden.
    • Studios, die Unity verwenden, aktualisieren nicht oft auf neue Versionen, solange bestimmte Bugs nicht behoben sind.