Goodbye Unity
Hallo zusammen,
wir verabschieden uns von Unity. Der ausschlaggebende Punkt dafür ist die von Unity eingeführte Runtime-Fee. Die Runtime-Fee an sich ist erstmal nicht das große Problem, jedoch die Art und Weise wie diese eingeführt wurde hat bei uns und vielen anderen zu einem unwiderruflichen Vertrauensbruch geführt. Man kann leider nicht mehr ruhigen Gewissens auf Unity setzen.
Was dann?
Seit der Ankündigung der Runtime-Fee haben wir nach Alternativen geschaut und sind leider nicht sonderlich fündig geworden. Am ehesten wollten wir etwas nutzen. wo wir C# weiterverwenden können, damit wir nicht wieder Code portieren müssen. Allerdings hat keine C# Lösung so wirklich unsere Anforderungen erfüllt. Daher haben wir die Suche auf andere Sprachen erweitert. Vor kurzem sind wir fündig geworden.
Rewrite in Rust
Auf wenn Dinge in Rust neu zu schreiben mittlerweile ein Meme ist, haben wir uns genau dafür entschieden.
- Rust kompiliert zu nativen Binaries welche sehr performant sind
- In Rust zu programmieren ist nach einer gewissen Einstiegshürde sehr produktiv
- Rust ist sehr effizient bezüglich der System-Resourcen wie CPU und RAM
- Das Typ-System ist sehr ausdrucksstark
- "If it compiles, it works"™
~ Bevy, Bevy, Bevy, Bevy ~
Wir benutzen Bevy. Bevy ist Open-Source und bekommt seine Geldmittel von der Bevy Foundation. Auf einen kompletten Open-Source Stack zu bauen verhindert, dass so ein Disaster wie mit Unity passieren kann und gibt uns die Möglichkeit besser auf die Anforderungen von LOTUS einzugehen, da wir in uns den Code anschauen können und ggf. auch Anpassungen und Erweiterungen durchführen können.
Welche messbaren Vorteile ergeben sich?
Im Gegensatz zum Unity-LOTUS und auch zum Pascal-LOTUS gibt es deutlich bessere Performance und geringeren RAM-Verbrauch. Aufgrund des Rust-Typ-Systems und Borrow-Checkers kommt es deutlich weniger Bugs und macht Multi-Threading sicherer und einfacherer. Mehr Kerne = mehr besser!
Bevy liefert von Hause aus automatisches Multi-Threading, Resourcenmanagement und Scheduling. Das heißt wir müssen uns weniger um solche Haushaltsarbeiten kümmern und können uns mehr auf den eigentlichen Simulator konzentrieren.
Wird damit alles noch länger dauern?
Ja und nein. Natürlich müssen wir LOTUS neu in Rust anfangen und aufgrund der sehr unterschiedlichen Art und Weise wie Rust im Gegensatz zu fast allen anderen Sprachen funktioniert, lässt sich der Code nicht einfach 1:1 portieren. Ebenso programmiert man in Bevy aufgrund des ECS deutlich anders als in allen anderen Game-Engines. Das hat Vor- und Nachteile. Wir sehen dies jedoch mehr als Vorteil, da wir damit gezwungen sind uns alles in einem neuen Licht anzuschauen und damit einfacheren (damit auch weniger Bugs) und performanteren Code zu schreiben.
Aufgrund der ECS-Architektur müssen wir uns nicht mehr mit Objekt-Hierarchien und deren Aufbau und Beziehungen herumschlagen, sondern können Datenorientiert arbeiten. Dies macht den Code flexibler und performanter. Dies erhöht die Geschwindigkeit in der wir Features entwickeln können immens. Wir zahlen also jetzt erstmal einen verhältnismäßig kleinen Preis um später auf der Überholspur zu sein.