- 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
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.
Oder laden sie es vielleicht gerade deshalb nicht hoch, weil sie denken, dass es bei guter Nutzung ohnehin jeder mindestens auf diesem Niveau hinbekommt?
Hacker-News-Kommentare
Ein weiterer Fall eines mit Rust gestarteten Spielprojekts, das gescheitert ist. Das ist bedauerlich.
Klingt wie eine gute Lektion dafür, warum kommerzielle Game-Engines die Spieleentwicklung dominieren.
Ich mag Rust als Ersatz für C++, denke aber, dass C++ für die meisten Projekte nicht geeignet ist.
Spieleentwicklung mit Rust ist wie Pionierarbeit und erfordert viel Aufwand.
Ich mag Rust, aber schnelle Iteration ist schwierig.
In einem Projekt wurde statt Rust auf Go umgestellt, und die Iterationsgeschwindigkeit wurde höher.
Die hohe Volatilität des Rust-Ökosystems ist ein unerwarteter Nachteil.
Ein Entwickler baut die Game-Engine in C und entwickelt das Spiel in Lua.
Mit Rust zu arbeiten ist fast immer schwieriger.
Das Ziel des Projekts war, dass ein Bruder, der nicht programmiert, ebenfalls beitragen kann.