Ruffle ist ein Adobe Flash Player Emulator, der für die Ausführung von Legacy-Flash-Inhalten (Spiele, Animationen, Anwendungen und SWF-Banner) unerlässlich ist. Er funktioniert als eigenständige Anwendung auf allen Betriebssystemen (einschließlich Windows, macOS und Linux) und integriert sich über WebAssembly in Browser.
Ruffle bietet separate Builds für Windows, macOS und Linux, die wie normale Programme funktionieren: Führen Sie einfach die ausführbare Datei aus und öffnen Sie die gewünschte SWF-Datei darin.
Ruffle nutzt die Speichersicherheit der Sprache Rust und die Sandbox des modernen Browsers. Dies ermöglicht die Ausführung potenziell riskanter alter Inhalte ohne das Risiko einer Systeminfektion oder Datenleckage.
Der Emulator kombiniert Unterstützung sowohl für die ältere AVM1 (ActionScript 1 und 2, verwendet bis 2006) als auch für die komplexere AVM2 (ActionScript 3). Dies ist für den korrekten Betrieb praktisch aller Flash-Inhalte notwendig, von Animationen der frühen 2000er Jahre bis hin zu komplexen Spielen und Anwendungen, die kurz vor der Einstellung der Technologie veröffentlicht wurden.
Download-Links:
Alle Links führen zu offiziellen Quellen: Builds für Windows (x86_64), macOS (universal für Intel und Apple Silicon), Linux (x86_64 und ARM64 für Raspberry Pi und ARM-Geräte) werden über das GitHub-Repository des Ruffle-Projekts vertrieben, während die Linux-Version im Flatpak-Format über den offiziellen Flathub-Katalog mit digitalen Signaturen und Anwendungsisolierung verfügbar ist.
- Hauptfunktionen von Ruffle
- 12 weniger bekannte technische Fähigkeiten von Ruffle
- Installieren der Desktop-Version von Ruffle
- Installieren von Ruffle als Browser-Erweiterung
- Chrome / Chromium Installation
- Firefox Installation
- Safari Installation
- Installieren von Ruffle auf einer Website
- Funktionalität überprüfen
- Fehlerbehebung
Hauptfunktionen von Ruffle
Integration über WebAssembly. Für den Betrieb im Browser wird Ruffle in WebAssembly (Wasm) kompiliert – einen Low-Level-Bytecode, der innerhalb der isolierten Sandbox des Browsers mit nahezu nativer Leistung ausgeführt wird. Dies ermöglicht es dem Emulator, komplexe Flash-Grafiken und -Logik zu laden und zu verarbeiten, ohne dass veraltete und unsichere NPAPI/PPAPI-Plugins installiert werden müssen.
Automatische Erkennung und Polyfilling von Flash-Inhalten. Die Webversion von Ruffle enthält einen JavaScript-Detektor, der die DOM-Struktur der Seite nach object-, embed- und applet-Elementen sowie nach Dateien mit der Endung .swf durchsucht. Bei Erkennung solcher Inhalte ersetzt Ruffle diese automatisch durch seinen eigenen Player, repariert die Seite transparent für den Benutzer und stellt die Funktionalität der Flash-Elemente wieder her.
Zweifacher Betriebsmodus (Desktop-Anwendung und Weberweiterung). Ruffle bietet den Benutzern Flexibilität: Es kann als eigenständige Desktop-Anwendung für die lokale SWF-Wiedergabe verwendet werden (einfach Dateien mit der Ruffle-ausführbaren Datei verknüpfen) oder als Browser-Erweiterung, die sich in die Webbrowser-Umgebung integriert und Flash-Unterstützung auf jeder Website bietet.
Unterstützung für ActionScript 1.0 und 2.0 (AVM1). Ruffle implementiert die AVM1-Virtualmaschine und gewährleistet so die Kompatibilität mit einer großen Menge an Inhalten, die vor 2006 und bis 2013 erstellt wurden. Der aktuelle Kompatibilitätsgrad für AVM1-Sprachkonstrukte erreicht 99% und für APIs 81%, was den korrekten Betrieb der überwältigenden Mehrheit früher Flash-Spiele und -Animationen garantiert.
Unterstützung für ActionScript 3.0 (AVM2). Für Inhalte, die nach 2006 erstellt wurden, enthält Ruffle eine Implementierung von AVM2. Obwohl die Arbeit an der Kompatibilität aktiv weitergeht, bietet der Emulator bereits ein ausreichendes Maß an Unterstützung, um viele komplexe Spiele und Anwendungen auszuführen, die in ActionScript 3 geschrieben wurden, und erweitert ständig die API-Abdeckung und Sprachfähigkeiten.
Sicherheit auf der Ebene der Sprache Rust. Einer der wichtigsten architektonischen Vorteile von Ruffle ist die Verwendung der Sprache Rust. Rust garantiert Speichersicherheit zur Kompilierzeit und eliminiert vollständig ganze Klassen von Schwachstellen, die den ursprünglichen Adobe Flash Player plagten, wie Pufferüberläufe, doppelte Freigaben und Use-after-free-Fehler.
Isolierung innerhalb der Browser-Sandbox. Bei der Ausführung in einer Webumgebung entspricht Ruffle (über WebAssembly) vollständig der Sicherheitsrichtlinie des Browsers. Dies fügt eine zusätzliche Isolierungsebene hinzu: Der Emulator hat keinen direkten Zugriff auf das Dateisystem des Benutzers oder andere Systemprozesse, was seine Ausnutzung im Vergleich zum klassischen Flash-Plugin extrem erschwert.
Effizientes Speichermanagement. Im Gegensatz zum ursprünglichen Flash Player, der die Speicherbereinigung mit nichtdeterministischen Pausen verwendete, erbt Ruffle das strenge Besitzmodell von Rust. Dies ermöglicht eine vorhersagbarere Speichernutzung, reduziert Fragmentierung und eliminiert Speicherlecks, die oft zu instabilem Browserverhalten führten.
Kommandozeilenunterstützung. Die Desktop-Version von Ruffle bietet eine voll funktionsfähige Kommandozeilenschnittstelle. Benutzer können den Emulator mit Parametern ausführen, zum Beispiel: ruffle dateiname.swf für eine lokale Datei oder ruffle https://example.com/dateiname.swf um eine SWF von einer URL abzuspielen. Der Befehl ruffle --help zeigt eine umfassende Liste aller verfügbaren Argumente und Einstellungen an.
Open-Source-Code und Entwicklungstransparenz. Ruffle wird unter den Lizenzen Apache 2.0 und MIT vertrieben. Die vollständige Offenheit des Quellcodes bedeutet, dass jeder Entwickler die Sicherheit des Emulators überprüfen, Korrekturen beitragen und an seiner Entwicklung teilnehmen kann, wodurch die Möglichkeit versteckter Funktionen oder Schwachstellen, die von Unternehmensentwicklern eingeführt werden könnten, ausgeschlossen wird.
Kompatibilität mit einer Vielzahl von Browsern. Dank der WebAssembly-Technologie wird Ruffle von allen modernen Browsern unterstützt, einschließlich Google Chrome, Mozilla Firefox, Microsoft Edge, Safari, Opera, Brave und Vivaldi. Dies gewährleistet ein konsistentes Erlebnis mit Flash-Inhalten, unabhängig von den Präferenzen der Benutzer für Browser-Engines (Chromium, Gecko oder WebKit).
Unterstützung für mobile Browser (iOS und Android). Im Gegensatz zum ursprünglichen Adobe Flash Player, der auf iOS nie offiziell unterstützt wurde und auf Android nur eingeschränkte Unterstützung hatte, funktioniert Ruffle auf mobilen Plattformen. Dies ermöglicht es, Flash-Spiele und -Animationen auf Smartphones und Tablets direkt über den mobilen Browser auszuführen und so archivierte Inhalte für ein mobiles Publikum zugänglich zu machen.
Keine Konfiguration erforderlich. Ruffle ist nach dem Prinzip "Einrichten und vergessen" konzipiert. Nach der Installation der Erweiterung oder dem Start der Desktop-Anwendung erfordert der Emulator keine komplexe Konfiguration. Er erkennt automatisch Wiedergabeparameter wie Bühnengröße, Bildrate und Interaktionsart und wendet optimale Einstellungen ohne Benutzereingriff an.
Schutz vor Zero-Day-Schwachstellen. Da Ruffle kein Plugin ist, keine veralteten APIs verwendet und sein Code in Rust mit Fokus auf Sicherheit geschrieben ist, ist es immun gegen Angriffe, die für Adobe Flash Player charakteristisch waren. Dies macht es zu einer idealen Lösung für Organisationen, die den Zugriff auf Legacy-Inhalte aufrechterhalten müssen, aber das Risiko einer Systemkompromittierung nicht eingehen können.
Kompatibilität mit verschiedenen Installationsmethoden. Ruffle bietet mehrere Bereitstellungsmethoden. Webentwickler können es als statische Erweiterung in Chromium-basierten Browsern (über den Entwicklermodus) oder als temporäres Add-on in Firefox (über about:debugging) installieren. Auch die Integration durch einfaches Einfügen von JavaScript-Code auf der Serverseite ist verfügbar.
Wiedergabe von Online- und Offline-Inhalten. Die Desktop-Version von Ruffle ermöglicht das Öffnen und Abspielen von lokal auf dem Computer gespeicherten SWF-Dateien. Dies macht den Emulator zu einem unverzichtbaren Werkzeug für Sammler, Archivare und Forscher, die mit lokalen Archiven von Flash-Spielen und -Animationen arbeiten.
Hohe Rendering-Leistung. Ruffle verwendet moderne Grafik-APIs (wie OpenGL, Vulkan, DirectX oder WebGL) über plattformübergreifende Bibliotheken. Dies ermöglicht Hardware-Beschleunigung für das Rendern von Vektor- und Rastergrafiken und sorgt für eine flüssige Wiedergabe selbst auf schwächeren Geräten, auf denen der ursprüngliche Flash Player möglicherweise ruckelte.
Aktive Entwicklung und häufige Updates. Das Projekt befindet sich in aktiver Entwicklung. Veröffentlichungen erscheinen regelmäßig und enthalten sowohl kritische Fehlerbehebungen als auch erweiterte ActionScript-API-Unterstützung. Beispielsweise haben aktuelle Versionen Randfälle in String.indexOf- und lastIndexOf-Methoden behoben und negative Indizes in Array.indexOf korrekt behandelt.
Integration mit großen Archiven und Plattformen. Ruffle wurde als offizieller Player für die Wiedergabe von Flash-Inhalten von Giganten wie dem Internet Archive, Newgrounds, Coolmath Games und Armor Games ausgewählt. Dies bestätigt den hohen Grad an Zuverlässigkeit und Kompatibilität des Emulators sowie seine Fähigkeit, unter hohen Lasten unter realen Bedingungen zu funktionieren.
Unterstützung für Spielstände und Zustände. Wie der ursprüngliche Flash Player unterstützt Ruffle Local Shared Objects (LSO), die viele Spiele zum Speichern des Fortschritts verwenden. Der Emulator emuliert korrekt die Mechanismen zum Lesen und Schreiben von Daten in diesem Speicher und gewährleistet so die Integrität der Spielstände innerhalb der Laufzeitumgebung der Anwendung.
Genaue Emulation von Timings und Bildrate. Ruffle emuliert genau den internen Timer des Flash Players, was für die Spiel- und Animationslogik entscheidend ist. Dies gewährleistet eine ordnungsgemäße Synchronisation von Ereignissen, Ton und Objektbewegungen und verhindert Situationen, in denen ein Spiel langsamer oder schneller läuft als im Original.
Unterstützung für DOM- und JavaScript-Interaktion (ExternalInterface). Für komplexe Webanwendungen, die die ExternalInterface-API zum Datenaustausch zwischen ActionScript und JavaScript verwendeten, implementiert Ruffle eine kompatible Brücke. Dies ermöglicht es dem Emulator, Funktionsaufrufe und Datenübertragungen korrekt zu behandeln und so die Interaktivität von Inhalten mit der umgebenden Webseite zu bewahren.
Automatische Skalierung und Auflösungsanpassung. Bei der Wiedergabe von Flash-Inhalten, die für eine bestimmte Auflösung (z. B. 800x600) erstellt wurden, wendet Ruffle automatisch Skalierungsalgorithmen an, um sich an die aktuelle Fenstergröße des Browsers oder der Desktop-Anwendung anzupassen. Es erhält Proportionen und Bildqualität und behandelt Mausinteraktionsbereiche korrekt.
Unterstützung verschiedener Medienformate. Der Emulator unterstützt die Decodierung verschiedener Medienformate, die in SWF-Dateien eingebettet sein können, einschließlich MP3 für Audio- und Videokomprimierung, die in späteren Versionen von Flash verwendet wurde. Die Decodierung erfolgt über leistungsstarke, in Rust geschriebene Bibliotheken, was die Systembelastung reduziert.
Erweitertes Debugging und Logging. Für Entwickler und fortgeschrittene Benutzer bietet Ruffle die Möglichkeit, detaillierte Logs der AVM1/AVM2-Virtualmaschinenoperationen zu aktivieren. Dies ermöglicht die Diagnose von Kompatibilitätsproblemen, die Verfolgung von Fehlern im ActionScript-Code und das Verständnis der internen Prozesse der Emulation für eine präzisere Abstimmung.
Emulation von Cursor und interaktiven Elementen. Ruffle behandelt Änderungen des Cursor-Stils, die durch Flash-Inhalte vorgegeben werden, korrekt. Für interaktive Elemente wie LoaderDisplay ändert der Emulator automatisch den Standard-Cursor in einen Zeiger, ahmt das Verhalten des ursprünglichen Flash-Players nach und bietet dem Benutzer eine vertraute Navigation.
Unterstützung für Nightly-Builds für frühen Zugriff. Zusätzlich zu den stabilen Versionen stellt das Ruffle-Team tägliche experimentelle Nightly-Builds zur Verfügung. Diese Builds enthalten die neuesten Korrekturen und Innovationen, die noch nicht in der stabilen Version enthalten sind.
Bewahrung des digitalen kulturellen Erbes. Dies ist nicht nur eine technische Funktion, sondern ein grundlegendes Ziel des Projekts. Ruffle wurde als Werkzeug zur Bewahrung historischer Internetinhalte entwickelt. Dank seiner Fähigkeit, in modernen Browsern ohne Sicherheitskompromisse zu arbeiten, bleiben Millionen von Flash-Spielen, -Animationen und -Anwendungen, die nach der Einstellung von Adobe Flash Player dauerhaft verloren gewesen wären, für zukünftige Generationen zugänglich.
12 weniger bekannte technische Fähigkeiten von Ruffle
-
Verwendung von WGPU als primäres Rendering-Backend. Im Gegensatz zu vielen Emulatoren, die auf Legacy-OpenGL angewiesen sind, verwendet Ruffle die Bibliothek WGPU – eine moderne, sichere und plattformübergreifende Grafik-API. Auf dem Desktop wählt WGPU automatisch das optimalste Low-Level-Backend aus: Vulkan, DirectX 12 oder Metal. Im Browser kann es über WebGPU (wo verfügbar) arbeiten oder den Betrieb über WebGL mit minimalem Leistungsverlust emulieren.
-
WebGPU-Unterstützung im Browser für maximale Leistung. Für Benutzer moderner Browser (z. B. neueste Versionen von Chrome und Edge) kann Ruffle die hochmoderne WebGPU-API verwenden. Dies bietet eine erheblich reduzierte Shader-Kompilierungszeit und einen geringeren Overhead im Vergleich zum Standard-WebGL-Backend, was für komplexe 3D-Grafiken und Stage3D-Anwendungen entscheidend ist.
-
Feinkörnige Anpassung des Rendering-Backends (
canvas,webgl,wgpu-webgl). Wenige wissen, dass das Rendering-Verhalten manuell gesteuert werden kann. Neben dem Standardwgpu-webglgibt es die Möglichkeit, Folgendes zu erzwingen:-
webgl— ein klassisches Backend, das schneller initialisiert und für einfache Inhalte nützlich sein kann, die keine komplexen Biteffekte erfordern. -
canvas— das langsamste, aber genaueste Backend. Es ist das einzige, das Haarlinienstriche in Vektorgrafiken korrekt skaliert, die bei Verwendung von Hardwarebeschleunigung zu dick erscheinen können.
-
-
Emulation von
Stage3Dund Kompilierung vonAGALnachWGSL. Ruffle unterstützt nicht nur 2D-Grafiken, sondern auch 3D-Beschleunigung über dieStage3D- (Context3D) API. In AGAL (Adobe Graphics Assembly Language) geschriebene Shader werden "on the fly" in modernes WGSL (WebGPU Shading Language) oder GLSL kompiliert. Dies ermöglicht die Ausführung komplexer 3D-Spiele und -Anwendungen, die für Flash Player 11 und höher erstellt wurden, und nutzt eine vollständige Pipeline programmierbarer Shader. -
Unterstützung für
fscommandfür Abwärtskompatibilität. Ruffle hat die Unterstützung für den veralteten, aber wichtigenfscommand-Mechanismus beibehalten. Dies ermöglicht es alten Flash-Filmen (die vor ExternalInterface erstellt wurden), mit JavaScript auf der Seite zu interagieren und beliebige Befehle und Argumente zu senden. In Ruffles moderner Implementierung werden diese Befehle überonFSCommandverarbeitet, was selbst für sehr alte Webinhalte Funktionalität ermöglicht. -
Double Buffering für Context3D. Bei der Arbeit mit 3D-Inhalten verwendet Ruffle einen ausgeklügelten Double Buffering-Mechanismus (Back Buffer / Front Buffer). Dies ist eine Standard-, aber entscheidende Leistungstechnik, die es ermöglicht, den nächsten Frame im Hintergrundpuffer zu rendern, während der aktuelle auf dem Bildschirm angezeigt wird, wodurch visuelle Artefakte (Frame Tearing) in dynamischen Spielen eliminiert werden.
-
Benchmarking-Tools:
ruffle_scannerundexporter. Im Ruffle-Repository befinden sich Hilfsprogramme, die nicht im Standard-Build enthalten, aber für Entwickler verfügbar sind:-
ruffle_scanner— ermöglicht das Testen der Kompatibilität des Emulators mit einem ganzen Ordner von SWF-Dateien und generiert einen CSV-Bericht über den Parsing-Erfolg. -
exporter— ein Werkzeug zur Stapelgenerierung von PNG-Screenshots aus SWF-Dateien, das im Headless-Modus (ohne GUI) ausgeführt werden kann, nützlich für automatisierte Tests und die Erstellung von Vorschaubildern.
-
-
Vollständige Isolierung über Flatpak-Sandbox. Für Linux-Benutzer gibt es einen offiziellen Ruffle-Build im Flatpak-Format. Dies ist nicht nur eine Installationsmethode, sondern eine zusätzliche Sicherheitsebene: Die Anwendung läuft in einer isolierten Umgebung, in der alle Spielstände, Konfigurationen und Logs streng innerhalb des Flatpak-Home-Verzeichnisses (
~/.var/app/rs.ruffle.Ruffle/) gespeichert werden, ohne Zugriff auf den Rest des Systems. -
Integrationsunterstützung über Homebrew und Scoop. Für erfahrene Benutzer bietet Ruffle erweiterte Installationsmethoden über manuellen Download hinaus. Unter macOS kann es über Homebrew installiert werden (
brew install --HEAD ruffle-rs/ruffle/ruffle), was automatische Updates auf den neuesten Nightly-Build ermöglicht. Unter Windows erfüllt der Paketmanager Scoop eine ähnliche Funktion. -
Transparentes Datenspeichersystem (SharedObjects). Ruffle emuliert genau das lokale Flash-Speichersystem (LSO — Local Shared Objects). Im Gegensatz zum proprietären Player ist der Speicherort dieser Dateien jedoch standardisiert und für den Benutzer transparent. Unter Windows befinden sie sich in
%AppData%\Local\Ruffle\SharedObjects\, unter Linux in~/.local/share/ruffle/SharedObjects/. Dies ermöglicht die manuelle Sicherung von Spielständen aus alten Spielen. -
Konfiguration über JavaScript-API und globale Einstellungen. Für Webentwickler bietet Ruffle eine leistungsstarke JavaScript-API, die nicht nur das Einbetten des Players, sondern auch die Steuerung seines Zustands ermöglicht. Es stehen Methoden zum programmgesteuerten Laden von SWF (
load), zur Lautstärkeregelung (volume), zum Anhalten (suspend/resume) und zum Abfangen vontrace()-Ausgaben aus ActionScript zum Debuggen übertraceObserverzur Verfügung. -
Automatische Signierung und Notarisierung von macOS-Builds. Im CI/CD-Prozess durchlaufen alle Nightly-Builds von Ruffle für macOS eine Code-Signierung und Notarisierung durch Apple. Dies bedeutet, dass selbst instabile Versionen des Emulators nicht von Gatekeeper als unsichere Software blockiert werden, was einen problemlosen Betrieb auf den neuesten macOS-Versionen gewährleistet, in denen die Sicherheitsanforderungen streng sind.