Die Veröffentlichung von The Legend of Zelda: Tears of the Kingdom hat die Grenzen der physikalischen Simulation auf leistungsschwacher Hardware neu definiert. Nintendo implementierte mit seiner eigenen KingSystem-Engine und einer stark modifizierten Version von Havok Physics das Ultrahand-System. Dieses ermöglicht es Spielern, unterschiedliche Objekte in Echtzeit zu verbinden und komplexe Fahrzeuge und Strukturen mit kaum spürbarer Latenz zu erschaffen. Für Entwickler ist diese Leistung nicht nur spielerisch, sondern auch technisch atemberaubend, da sie hunderte gleichzeitig interagierende Starrkörper auf einer Konsole mit sehr begrenzten Speicher- und CPU-Ressourcen verwaltet.
Tiefgreifende Modifikation von Havok und Verwaltung von Zwangsbedingungen 🛠️
Der technische Schlüssel liegt darin, wie Nintendo die Middleware Havok Physics modifiziert hat. Anstatt das standardmäßige System von Gelenken oder Zwangsbedingungen zu verwenden, schufen sie ein System temporärer und hierarchischer Zwangsbedingungen. Wenn ein Spieler Ultrahand einsetzt, berechnet die Engine nicht roh alle Kollisionen zwischen jedem Objektpaar. Stattdessen gruppiert sie die verbundenen Objekte in einem einzigen Zwangsbedingungsbaum, was die Auflösung von Kontakten vereinfacht. Zudem implementierten sie ein aggressives Culling der Physik: Objekte, die weit entfernt oder außerhalb des Sichtfelds des Spielers sind, reduzieren ihre Aktualisierungsfrequenz drastisch. Diese als Level of Detail (LOD) für Physik bekannte Technik ermöglicht es, selbst bei massiven Konstruktionen stabile 60 FPS zu halten. Verglichen mit Unreal Engine, die Chaos Physics mit einem generischeren Ansatz verwendet, ist Nintendos Lösung extrem spezifisch für ihren Anwendungsfall und opfert Vielseitigkeit zugunsten der Leistung.
Lehren für unabhängige Entwickler 💡
Die wichtigste Lektion für kleine Studios ist es, Optimierung über absolute Genauigkeit zu stellen. Man braucht keine perfekte Physik-Engine; man braucht eine, die im eigenen Spielkontext realistisch wirkt. Nintendo hat gezeigt, dass die Modifikation einer ausgereiften Middleware wie Havok effizienter ist, als eine Engine von Grund auf neu zu bauen. Für einen Indie-Entwickler lautet die Empfehlung, die Anzahl aktiver physischer Objekte pro Zone zu begrenzen und vereinfachte Zwangsbedingungen zu verwenden (z. B. Ankerpunkte anstelle vollständiger Torsionsberechnungen). Ebenso ist die räumliche Unterteilung der Welt von Hyrule ein Vorbild: Die Karte in Zellen aufteilen, die komplexe Physik nur dann aktivieren, wenn der Spieler direkt mit ihnen interagiert.
Als Entwickler: Welche praktischen Lehren zur Optimierung massiver Physik und Echtzeit-Kollisionshandhabung können wir aus dem Ultrahand-System ziehen, um sie in Engines wie Unity oder Unreal Engine anzuwenden, ohne die Leistung auf bescheidener Hardware zu opfern?
(PS: Ein Spieleentwickler ist jemand, der 1000 Stunden damit verbringt, ein Spiel zu machen, das die Leute in 2 Stunden durchspielen)