Krypto-Startups und Risikokapital

Terraria und Celeste im Browser: Die Faszination von WebAssembly-Portierungen

Krypto-Startups und Risikokapital
Porting Terraria and Celeste to the Browser with WebAssembly

Ein tiefgehender Einblick in die Herausforderungen und Innovationen bei der Portierung der beliebten Spiele Terraria und Celeste in WebAssembly, um sie direkt im Browser spielbar zu machen.

Die Welt der Videospiele bewegt sich immer stärker in Richtung plattformübergreifender Erlebnisse. Während Desktop- und Konsolenversionen von Spielen mittlerweile weit verbreitet sind, gewinnt das Browser-Gaming zunehmend an Bedeutung. Einen besonders spannenden Weg dabei zeigt die Portierung von komplexen Spielen wie Terraria und Celeste in WebAssembly, um sie ohne Installation direkt im Browser lauffähig zu machen. Diese Technologie ermöglicht es, Programme mit nahezu nativer Geschwindigkeit im Web auszuführen – und das sogar für Titel, die ursprünglich auf anderen Plattformen und Sprachen entwickelt wurden. Terraria und Celeste gehören zu den beliebtesten Indie-Spielen der letzten Jahre und sind bekannt für ihre reiche Spielmechanik und ästhetische Tiefe.

Beide Spiele basieren auf der Programmiersprache C# und verwenden die FNA Engine, die eine Open-Source-Implementierung von Microsofts XNA Framework darstellt. Diese Gemeinsamkeit half zumindest theoretisch dabei, die Portierung der Titel vom Desktop in den Browser mittels WebAssembly anzugehen. Dennoch erwies sich der Weg als wesentlich komplexer und anspruchsvoller als zunächst angenommen. Die Herausforderung beginnt bereits bei der Dekompilierung des Spiels. Obwohl der MSIL (Microsoft Intermediate Language) Bytecode, den C# verwendet, nah an der Originalquelle liegt, sind einige externe Abhängigkeiten eingebettet, was die Analyse erschwert.

Ein Beispiel ist die in Terraria eingebettete DLL ReLogic.dll, die nicht als separate Datei vorlag, sondern als Ressourcenbestandteil innerhalb der EXE extrahiert werden musste. Erst mit der vollständigen Entschlüsselung dieser eingebundenen Bibliotheken ließ sich der Code erfolgreich dekompilieren und in eine kompilierbare WebAssembly-Datei überführen. Die WebAssembly-Zielplattform stellt dabei eigene Anforderungen. Obwohl die meiste C#-Logik problemlos übersetzt wurde, war das Zusammenspiel mit den nativen Komponenten der FNA Engine, die in C++ geschrieben sind, eine weitere Hürde.

Besonders die Grafikkomponenten, die auf SDL3 basieren und OpenGL nutzen, mussten überarbeitet werden, da OffscreenCanvas und DOM-Thread-Zugriffe in WebAssembly eine spezielle Behandlung benötigen. Um dieses Problem zu lösen, wurde eine Proxy-Schicht eingebaut, welche die OpenGL-Aufrufe zwischen Worker-Thread und Haupt-Thread synchronisiert. Dieser Schritt war essenziell, um die im Browser strengen Einschränkungen für Canvas-Zugriffe einzuhalten. Neben technischen Details gab es auch Herausforderungen im Bereich der Dateisystemintegration. Da die Spieldaten von Terraria nicht lokal vorhanden sind, kam die Origin Private File System API zum Einsatz, welche es erlaubt, lokale Verzeichnisse im Browser zu mounten.

So können Benutzer ihre eigenen Spieldateien hochladen und einbinden. Dies erforderte wiederum Workarounds für Browser-Inkompatibilitäten, etwa die fehlende Unterstützung von showDirectoryPicker in Firefox, die teilweise mit Drag-and-Drop-Funktionen umgangen werden konnte. Nachdem das Grundgerüst stand, zeigte sich die nächste Komplikation durch die fehlende Unterstützung von Threads in älteren .NET-Versionen für WebAssembly. Erst die Veröffentlichung von .

NET 9 brachte eine Lösung, indem es Mehrthreading in WebAssembly ermöglichte. Dennoch bewahrte die Thread-Problematik Spielstarts vor einer reibungslosen Ausführung und erforderte das Umschalten auf moderne WebAssembly-Optionen. Während Terraria ein Vorreiter in Sachen Browserportierung war, stellte die Umsetzung von Celeste weitere spezialisierte Anforderungen. Das Spiel nutzt anstelle von FAudio die proprietäre FMOD-Audioengine, die eigene IMC- und Audio-Schnittstellen besitzt und speziell für die Webplattform angepasst werden musste. Die Kompatibilität mit SDL3 und OffscreenCanvas ermöglichte hierbei die native Canvas-Bindung, ohne den Umweg über Proxy-Calls.

Gleichzeitig mussten weitere externe Abhängigkeiten von FMOD per Objektdateien eingebunden werden, da eine Neukompilierung der proprietären Bibliotheken nicht ohne Weiteres möglich war. Ein bedeutender Bestandteil im Ökosystem von Celeste ist die Modding-Community sowie der Everest-Modloader. Um auch Mods im Browser lauffähig zu machen, war die Übersetzung der komplexen Laufzeitmanipulationen durch MonoMod eine der größten Herausforderungen. RuntimeDetour, das Herzstück für Function Hooks und Modifikationen, operiert traditionell durch Manipulation von nativen Maschinencode-Bereichen. Im WebAssembly-Umfeld mit AOT-Kompilierung und read-only Modulen ist dies jedoch nicht möglich.

Der innovative Lösungsansatz bestand darin, die IL-Bytecodes der Methoden direkt dynamisch zu modifizieren und die Mono-Runtime intern zu patchen, um einen kompatiblen Hook-Mechanismus bereitzustellen. Dieser Prozess erforderte tiefe Eingriffe in die Mono Mono-Interpreter-Transformationen und Laufzeitstrukturen. Durch die Möglichkeit, eigene C-Codes in das Gesamt-Wasm-Modul einzufügen und interne Mono-Funktionen aufzurufen, konnte die genaue Position der bytecode-repräsentierten Funktionen ermittelt und im Speicher modifiziert werden. Damit wurde das RuntimeDetour-System so angepasst, dass es mit den Beschränkungen von WebAssembly und der jiterpreter-basierten Ausführung funktionierte. Darüber hinaus gab es zahlreiche weitere Kompatibilitätsprobleme zwischen Mono und der CoreCLR-Laufzeitumgebung, die auf Desktop-Systemen üblich sind.

Viele Celeste-Mods setzten auf Reflection, mehrere Patches in Mono waren notwendig, um Sicherheitsbeschränkungen und Laufzeitfehler zu beheben. Diese Modifikationen reichen von der Anpassung der Methodensignatur-Verifikation bis hin zu einer Neukonzeption des Modul-Loaded Prozesses, um statische Initialisierungen in korrekter Reihenfolge durchzuführen. Ein weiterer interessanter Aspekt ist die Möglichkeit, die Celeste-App zur Laufzeit zu patchen, anstatt sie vorab zu kompilieren. Das WebAssembly-Modul funktioniert als eine dynamische Loader-Anwendung, die das Originalspiel und die Everest-Modifikationen in den emulierten Dateisystemspeicher lädt. Diese Flexibilität erlaubt es, die aktuellsten Spiel- und Mod-Versionen einzubinden, ohne die gesamte Codebasis neu zu veröffentlichen.

Zusätzlich zur technischen Umsetzung gab es viele praktische Hürden, etwa die Einschränkungen der Browser-APIs, CORS-Beschränkungen beim Laden externer Modfiles oder die Performance-Drosselung auf schwächeren Geräten. Trotz allem konnte durch die Aktivierung von Ahead-Of-Time (AOT) Kompilierung eine akzeptable Framerate erreicht werden, die auch auf älteren oder leistungsschwächeren Systemen ein flüssiges Spielerlebnis ermöglicht. Die Motivation hinter diesem ambitionierten Projekt war nicht nur technischer Natur. Insbesondere für Nutzer von Chromebooks, die auf Linux-Emulationen angewiesen sind, die oft träge reagieren, stellt eine native WebAssembly-Version von Terraria oder Celeste eine attraktive Alternative dar. Auch wenn kaum jemand plant, das gesamte Spielerlebnis direkt im Browser zu absolvieren, bietet dieses Experiment wertvolle Erkenntnisse über die Grenzen und Möglichkeiten moderner Webtechnologien.

Zusammenfassend zeigt die Portierung von Terraria und Celeste in WebAssembly, dass der Browser schon heute weit mehr leisten kann, als häufig angenommen wird. Die Kombination aus C#-Decompilierung, nativer C++-Integration, niedrigschwelliger Laufzeitmodifikation und Browser-spezifischen APIs ermöglicht ein Spielerlebnis, das traditionell nur nativen Plattformen vorbehalten war. Diese Projekte eröffnen eine neue Perspektive für crossmediales Gaming, bei dem komplexe Spiele unmittelbar und plattformunabhängig verfügbar sind. Darüber hinaus spiegelt das Projekt die Lust am Experimentieren und die Faszination für „Super Nischen“ Technologien wider. Es zeigt, wie Innovation Enabler nicht immer unmittelbar wirtschaftlich sein müssen, sondern auch durch reinen Forscherdrang und Spaß an technischer Kreativität entstehen können.

Und nicht zuletzt beweist es, dass WebAssembly als Technologie eine Transportbrücke bilden kann, um bisher schwer zugängliche Anwendungen in neue Umgebungen zu bringen – direkt in den Browser, wo heute fast jeder Nutzer sitzt. Wenn Sie selbst Interesse haben, diese Browserportierungen zu erleben, stehen gut dokumentierte Git-Repositories zur Verfügung, die den Einstieg erleichtern. Von der Einrichtung der Entwicklungsumgebung bis hin zum direkten Spielen im Browser – die Reise durch WebAssembly und C# ist offen für mutige Entwickler und neugierige Gamer gleichermaßen. Es bleibt spannend, welche weiteren Spiele und Anwendungen künftig auf diesem Weg den Sprung in den Browser schaffen werden.

Automatischer Handel mit Krypto-Geldbörsen Kaufen Sie Ihre Kryptowährung zum besten Preis

Als Nächstes
Quick AI Projects with Code, Beginner-Advanced
Sonntag, 06. Juli 2025. Schnelle KI-Projekte mit Beispielcode für Einsteiger bis Fortgeschrittene

Entdecken Sie praktische und zeitsparende KI-Projekte, die von Einsteiger- bis zu fortgeschrittenen Leveln reichen. Erfahren Sie, wie Sie mit cleveren Automatisierungen und fortschrittlichen Methoden Ihre AI-Kenntnisse erweitern und produktive Anwendungen entwickeln können.

Sometimes the Dependencies Are Useful
Sonntag, 06. Juli 2025. Warum Abhängigkeiten in der Softwareentwicklung oft unverzichtbar sind

Ein tiefer Einblick in die Rolle von Abhängigkeiten bei der Softwareentwicklung, ihre Vorteile, Herausforderungen und wie sie zur Optimierung von Projekten beitragen können.

Missed These? Top Crypto Headlines from This Weekend
Sonntag, 06. Juli 2025. Verpasste Krypto-News vom Wochenende: Die wichtigsten Entwicklungen und ihre Auswirkungen

Aktuelle und umfassende Einblicke in die bedeutendsten Ereignisse der Kryptobranche am vergangenen Wochenende. Von großen Bitcoin-Investitionen in Schweden über rechtliche Herausforderungen bei Coinbase bis hin zu dramatischen Vorfällen in New York – alles, was Krypto-Anleger und Enthusiasten wissen müssen.

Trump family to seek $3bn for bet on cryptocurrency
Sonntag, 06. Juli 2025. Trump-Familie plant Milliardeninvestition in Kryptowährungen – Chancen und Kritiken im Fokus

Die Trump-Familie setzt auf Kryptowährungen und plant, drei Milliarden US-Dollar in digitale Assets zu investieren. Dieses Vorhaben weckt nicht nur großes Interesse in der Finanzwelt, sondern sorgt auch für Debatten über mögliche Interessenkonflikte, politische Einflussnahme und die Zukunft des Kryptomarktes in den USA.

Why ChatGPT is unlikely to solve climate change
Sonntag, 06. Juli 2025. Warum ChatGPT das Klimaproblem nicht lösen wird: Ein realistischer Blick auf Künstliche Intelligenz und Klima

Die Hoffnungen, dass KI-Programme wie ChatGPT die globale Klimaerwärmung stoppen können, sind oft unrealistisch. Ein kritischer Blick auf die Grenzen und Herausforderungen von KI im Kontext des Klimawandels zeigt, warum technologische Lösungen allein nicht ausreichen.

Ask HN: Any great long form content about AI?
Sonntag, 06. Juli 2025. Faszinierende Langform-Inhalte über Künstliche Intelligenz: Empfehlungen und Einblicke

Entdecken Sie eine umfassende Zusammenstellung und Analyse von empfehlenswerten ausführlichen Inhalten rund um Künstliche Intelligenz, die sowohl Einsteigern als auch Experten wertvolle Perspektiven bieten.

An inside look at how the Internet Archive saves the web [video]
Sonntag, 06. Juli 2025. Ein Blick hinter die Kulissen: Wie das Internet Archive das Web für die Zukunft bewahrt

Das Internet Archive ist eine gemeinnützige Organisation aus San Francisco, die es sich zur Aufgabe gemacht hat, das Internet und digitale Kulturgüter für kommende Generationen zu bewahren. Diese umfassende Archivierung verhindert das unwiederbringliche Verlieren von Webinhalten, Büchern oder Videos und zeigt, wie wichtig digitale Langzeitarchivierung im digitalen Zeitalter ist.