Ruffle adalah emulator Adobe Flash Player yang penting untuk menjalankan konten Flash lawas (game, animasi, aplikasi, dan banner SWF). Ia beroperasi sebagai aplikasi mandiri di semua sistem operasi (termasuk Windows, macOS, dan Linux) dan terintegrasi ke dalam peramban melalui WebAssembly.
Ruffle menyediakan build terpisah untuk Windows, macOS, dan Linux yang berfungsi seperti program biasa: cukup jalankan file eksekusi dan buka file SWF yang diinginkan di dalamnya.
Ruffle memanfaatkan keamanan memori dari bahasa Rust dan sandbox dari peramban modern. Ini memungkinkan konten lawas yang berpotensi berisiko untuk berjalan tanpa risiko infeksi sistem atau kebocoran data.
Emulator ini menggabungkan dukungan untuk AVM1 yang lebih lama (ActionScript 1 dan 2, digunakan hingga 2006) dan AVM2 (ActionScript 3) yang lebih kompleks. Ini diperlukan untuk pengoperasian yang benar dari hampir semua konten Flash, mulai dari animasi awal tahun 2000-an hingga game dan aplikasi kompleks yang dirilis sesaat sebelum teknologi ini dihentikan.
Tautan unduhan:
Semua tautan mengarah ke sumber resmi: build untuk Windows (x86_64), macOS (universal untuk Intel dan Apple Silicon), Linux (x86_64 dan ARM64 untuk Raspberry Pi dan perangkat ARM) didistribusikan melalui repositori GitHub proyek Ruffle, sementara versi Linux dalam format Flatpak tersedia melalui katalog Flathub resmi dengan tanda tangan digital dan isolasi aplikasi.
Fitur Utama Ruffle
Integrasi melalui WebAssembly. Untuk pengoperasian peramban, Ruffle dikompilasi ke WebAssembly (Wasm) — bytecode tingkat rendah yang dijalankan dalam sandbox terisolasi peramban dengan kinerja mendekati native. Ini memungkinkan emulator untuk memuat dan memproses grafik dan logika Flash yang kompleks tanpa perlu menginstal plugin NPAPI/PPAPI yang sudah usang dan tidak aman.
Deteksi Otomatis dan Polyfilling Konten Flash. Versi web Ruffle menyertakan detektor JavaScript yang memindai struktur DOM halaman untuk elemen object, embed, dan applet, serta file dengan ekstensi .swf. Setelah mendeteksi konten tersebut, Ruffle secara otomatis menggantinya dengan pemutar sendiri, secara transparan memperbaiki halaman untuk pengguna dan memulihkan fungsionalitas elemen Flash.
Mode Operasi Ganda (Aplikasi Desktop dan Ekstensi Web). Ruffle menawarkan fleksibilitas kepada pengguna: dapat digunakan sebagai aplikasi desktop mandiri untuk pemutaran SWF lokal (cukup kaitkan file dengan eksekusi Ruffle) atau sebagai ekstensi peramban yang terintegrasi ke dalam lingkungan penjelajahan web, menyediakan dukungan Flash di situs mana pun.
Dukungan untuk ActionScript 1.0 dan 2.0 (AVM1). Ruffle mengimplementasikan mesin virtual AVM1, memastikan kompatibilitas dengan sejumlah besar konten yang dibuat sebelum 2006 dan hingga 2013. Tingkat kompatibilitas saat ini untuk konstruksi bahasa AVM1 mencapai 99%, dan untuk API — 81%, menjamin pengoperasian yang benar dari sebagian besar game dan animasi Flash awal.
Dukungan untuk ActionScript 3.0 (AVM2). Untuk konten yang dibuat setelah 2006, Ruffle menyertakan implementasi AVM2. Meskipun pekerjaan pada kompatibilitas sedang berlangsung secara aktif, emulator sudah menyediakan tingkat dukungan yang cukup untuk menjalankan banyak game dan aplikasi kompleks yang ditulis dalam ActionScript 3, terus memperluas cakupan API dan kemampuan bahasa.
Keamanan pada Tingkat Bahasa Rust. Salah satu keunggulan arsitektur utama Ruffle adalah penggunaan bahasa Rust. Rust menjamin keamanan memori pada waktu kompilasi, sepenuhnya menghilangkan seluruh kelas kerentanan yang menghantui Adobe Flash Player asli, seperti buffer overflow, double free, dan kesalahan use-after-free.
Isolasi dalam Sandbox Peramban. Saat beroperasi di lingkungan web, Ruffle (melalui WebAssembly) sepenuhnya mematuhi kebijakan keamanan peramban. Ini menambahkan lapisan isolasi ekstra: emulator tidak memiliki akses langsung ke sistem file pengguna atau proses sistem lainnya, membuat eksploitasinya sangat sulit dibandingkan dengan plugin Flash klasik.
Manajemen Memori yang Efisien. Tidak seperti Flash Player asli yang menggunakan pengumpulan sampah dengan jeda non-deterministik, Ruffle mewarisi model kepemilikan ketat Rust. Ini memungkinkan penggunaan memori yang lebih dapat diprediksi, mengurangi fragmentasi, dan menghilangkan kebocoran memori yang sering menyebabkan perilaku peramban yang tidak stabil.
Dukungan Baris Perintah. Versi desktop Ruffle menawarkan antarmuka baris perintah yang berfungsi penuh. Pengguna dapat menjalankan emulator dengan parameter, misalnya: ruffle filename.swf untuk file lokal, atau ruffle https://example.com/filename.swf untuk memutar SWF dari URL. Perintah ruffle --help menampilkan daftar lengkap semua argumen dan pengaturan yang tersedia.
Kode Sumber Terbuka dan Transparansi Pengembangan. Ruffle didistribusikan di bawah lisensi Apache 2.0 dan MIT. Keterbukaan penuh kode sumber berarti pengembang mana pun dapat mengaudit keamanan emulator, menyumbangkan perbaikan, dan berpartisipasi dalam pengembangannya, menghilangkan kemungkinan fitur tersembunyi atau kerentanan yang mungkin diperkenalkan oleh pengembang perusahaan.
Kompatibilitas dengan Beragam Peramban. Berkat teknologi WebAssembly, Ruffle didukung oleh semua peramban modern, termasuk Google Chrome, Mozilla Firefox, Microsoft Edge, Safari, Opera, Brave, dan Vivaldi. Ini memastikan pengalaman yang konsisten dengan konten Flash terlepas dari preferensi pengguna terhadap mesin peramban (Chromium, Gecko, atau WebKit).
Dukungan untuk Peramban Seluler (iOS dan Android). Tidak seperti Adobe Flash Player asli yang tidak pernah didukung secara resmi di iOS dan memiliki dukungan terbatas di Android, Ruffle berfungsi di platform seluler. Ini memungkinkan game dan animasi Flash berjalan di ponsel pintar dan tablet langsung melalui peramban seluler, membuka akses ke konten arsip bagi audiens seluler.
Tidak Perlu Konfigurasi. Ruffle dirancang dengan prinsip "pasang dan lupakan". Setelah memasang ekstensi atau meluncurkan aplikasi desktop, emulator tidak memerlukan konfigurasi yang rumit. Ia secara otomatis mendeteksi parameter pemutaran seperti ukuran panggung, kecepatan bingkai, dan jenis interaksi, menerapkan pengaturan optimal tanpa campur tangan pengguna.
Perlindungan Terhadap Kerentanan Zero-Day. Karena Ruffle bukanlah plugin, tidak menggunakan API usang, dan kodenya ditulis dalam Rust dengan fokus pada keamanan, ia kebal terhadap serangan yang menjadi ciri khas Adobe Flash Player. Ini menjadikannya solusi ideal bagi organisasi yang harus mempertahankan akses ke konten lawas tetapi tidak dapat mengambil risiko kompromi sistem.
Kompatibilitas dengan Berbagai Metode Instalasi. Ruffle menawarkan beberapa metode penerapan. Pengembang web dapat menginstalnya sebagai ekstensi statis di peramban berbasis Chromium (melalui mode pengembang) atau sebagai add-on sementara di Firefox (melalui about:debugging). Integrasi melalui penyisipan kode JavaScript sederhana di sisi server juga tersedia.
Pemutaran Konten Online dan Offline. Versi desktop Ruffle memungkinkan membuka dan memutar file SWF yang disimpan secara lokal di komputer. Ini menjadikan emulator alat yang sangat diperlukan bagi kolektor, pengarsip, dan peneliti yang bekerja dengan arsip lokal game dan animasi Flash.
Kinerja Rendering Tinggi. Ruffle menggunakan API grafis modern (seperti OpenGL, Vulkan, DirectX, atau WebGL) melalui pustaka lintas platform. Ini menyediakan akselerasi perangkat keras untuk rendering grafik vektor dan raster, memungkinkan pemutaran yang mulus bahkan pada perangkat yang lebih lemah di mana Flash Player asli mungkin mengalami kelambatan.
Pengembangan Aktif dan Pembaruan Sering. Proyek ini sedang dalam pengembangan aktif. Rilis keluar secara teratur dan mencakup perbaikan bug kritis serta dukungan API ActionScript yang diperluas. Sebagai contoh, versi terbaru telah memperbaiki kasus tepi dalam metode String.indexOf dan lastIndexOf, dan menangani indeks negatif dengan benar di Array.indexOf.
Integrasi dengan Arsip dan Platform Utama. Ruffle telah dipilih sebagai pemutar resmi untuk pemutaran konten Flash oleh raksasa seperti Internet Archive, Newgrounds, Coolmath Games, dan Armor Games. Ini menegaskan tingkat keandalan dan kompatibilitas emulator yang tinggi, serta kemampuannya untuk beroperasi di bawah beban tinggi dalam kondisi dunia nyata.
Dukungan untuk Penyimpanan Game dan Status. Seperti Flash Player asli, Ruffle mendukung Local Shared Objects (LSO), yang digunakan banyak game untuk menyimpan kemajuan. Emulator dengan benar meniru mekanisme membaca dan menulis data ke penyimpanan ini, memastikan integritas penyimpanan dalam lingkungan runtime aplikasi.
Emulasi Waktu dan Kecepatan Bingkai yang Akurat. Ruffle secara akurat meniru timer internal Flash Player, yang sangat penting untuk logika game dan animasi. Ini memastikan sinkronisasi peristiwa, suara, dan pergerakan objek yang tepat, mencegah situasi di mana game berjalan lebih lambat atau lebih cepat dari aslinya.
Dukungan untuk Interaksi DOM dan JavaScript (ExternalInterface). Untuk aplikasi web kompleks yang menggunakan API ExternalInterface untuk bertukar data antara ActionScript dan JavaScript, Ruffle mengimplementasikan jembatan yang kompatibel. Ini memungkinkan emulator menangani panggilan fungsi dan transfer data dengan benar, menjaga interaktivitas konten dengan halaman web di sekitarnya.
Penskalaan Otomatis dan Adaptasi Resolusi. Saat memutar konten Flash yang dibuat untuk resolusi tertentu (misalnya, 800x600), Ruffle secara otomatis menerapkan algoritme penskalaan untuk beradaptasi dengan ukuran jendela peramban atau aplikasi desktop saat ini. Ia mempertahankan proporsi dan kualitas gambar, dan menangani area interaksi tetikus dengan benar.
Dukungan untuk Beragam Format Media. Emulator mendukung decoding berbagai format media yang mungkin disematkan dalam file SWF, termasuk MP3 untuk audio dan kompresi video yang digunakan dalam versi Flash selanjutnya. Decoding dilakukan melalui pustaka berkinerja tinggi yang ditulis dalam Rust, mengurangi beban sistem.
Debugging dan Pencatatan Log Tingkat Lanjut. Untuk pengembang dan pengguna tingkat lanjut, Ruffle menyediakan kemampuan untuk mengaktifkan log terperinci tentang operasi mesin virtual AVM1/AVM2. Ini memungkinkan mendiagnosis masalah kompatibilitas, melacak kesalahan dalam kode ActionScript, dan memahami proses internal emulasi untuk penyesuaian yang lebih presisi.
Emulasi Kursor dan Elemen Interaktif. Ruffle dengan benar menangani perubahan gaya kursor yang ditentukan oleh konten Flash. Misalnya, untuk elemen interaktif seperti LoaderDisplay, emulator secara otomatis mengubah kursor standar menjadi penunjuk, meniru perilaku pemutar Flash asli dan memberikan navigasi yang familiar bagi pengguna.
Dukungan untuk Nightly Builds untuk Akses Dini. Selain rilis stabil, tim Ruffle menyediakan akses ke build eksperimental harian Nightly. Build ini berisi perbaikan dan inovasi terbaru yang belum termasuk dalam versi stabil.
Melestarikan Warisan Budaya Digital. Ini bukan hanya fungsi teknis, tetapi tujuan fundamental dari proyek ini. Ruffle dibuat sebagai alat untuk melestarikan konten internet bersejarah. Berkat kemampuannya untuk bekerja di peramban modern tanpa mengorbankan keamanan, jutaan game Flash, animasi, dan aplikasi yang akan hilang selamanya setelah Adobe Flash Player dihentikan tetap dapat diakses oleh generasi mendatang.
12 Kemampuan Teknis Ruffle yang Kurang Dikenal
-
Menggunakan WGPU sebagai Backend Rendering Utama. Tidak seperti banyak emulator yang mengandalkan OpenGL lawas, Ruffle menggunakan pustaka WGPU — API grafis modern, aman, dan lintas platform. Di desktop, WGPU secara otomatis memilih backend tingkat rendah yang paling optimal: Vulkan, DirectX 12, atau Metal. Di peramban, ia dapat bekerja melalui WebGPU (jika tersedia) atau mengemulasi operasi melalui WebGL dengan kehilangan kinerja minimal.
-
Dukungan WebGPU di Peramban untuk Kinerja Maksimal. Untuk pengguna peramban modern (misalnya, versi terbaru Chrome dan Edge), Ruffle dapat menggunakan API mutakhir WebGPU. Ini memberikan pengurangan waktu kompilasi shader yang signifikan dan overhead yang lebih rendah dibandingkan dengan backend WebGL standar, yang sangat penting untuk grafik 3D kompleks dan aplikasi Stage3D.
-
Penyesuaian Backend Rendering yang Mendetail (
canvas,webgl,wgpu-webgl). Hanya sedikit yang tahu bahwa perilaku rendering dapat dikontrol secara manual. Selainwgpu-webglstandar, ada opsi untuk mengaktifkan secara paksa:-
webgl— backend klasik yang melakukan inisialisasi lebih cepat dan mungkin berguna untuk konten sederhana yang tidak memerlukan efek bitmap kompleks. -
canvas— backend paling lambat, tetapi paling akurat. Ini adalah satu-satunya yang menskalakan goresan garis tipis dalam grafik vektor dengan benar, yang mungkin tampak terlalu tebal saat menggunakan akselerasi perangkat keras.
-
-
Emulasi
Stage3Ddan KompilasiAGALkeWGSL. Ruffle tidak hanya mendukung grafis 2D tetapi juga akselerasi 3D melalui APIStage3D(Context3D). Shader yang ditulis dalam AGAL (Adobe Graphics Assembly Language) dikompilasi "saat itu juga" ke WGSL (WebGPU Shading Language) atau GLSL modern. Ini memungkinkan menjalankan game dan aplikasi 3D kompleks yang dibuat untuk Flash Player 11 dan yang lebih baru, memanfaatkan pipeline penuh shader yang dapat diprogram. -
Dukungan untuk
fscommanduntuk Kompatibilitas Mundur. Ruffle telah mempertahankan dukungan untuk mekanismefscommandlawas namun penting. Ini memungkinkan film Flash lama (dibuat sebelum ExternalInterface) untuk berinteraksi dengan JavaScript di halaman, mengirim perintah dan argumen arbitrer. Dalam implementasi modern Ruffle, perintah ini diproses melaluionFSCommand, memungkinkan fungsionalitas bahkan untuk konten web yang sangat lama. -
Double Buffering untuk Context3D. Saat bekerja dengan konten 3D, Ruffle menggunakan mekanisme double buffering yang canggih (back buffer / front buffer). Ini adalah teknik kinerja standar namun sangat penting, memungkinkan bingkai berikutnya dirender di buffer latar belakang sementara bingkai saat ini ditampilkan di layar, menghilangkan artefak visual (robeknya bingkai) dalam game yang dinamis.
-
Alat Benchmarking:
ruffle_scannerdanexporter. Di dalam repositori Ruffle, terdapat alat utilitas yang tidak termasuk dalam build standar tetapi tersedia untuk pengembang:-
ruffle_scanner— memungkinkan pengujian kompatibilitas emulator dengan seluruh folder file SWF, menghasilkan laporan CSV tentang keberhasilan penguraian. -
exporter— alat untuk menghasilkan batch tangkapan layar PNG dari file SWF, yang dapat berjalan dalam mode headless (tanpa GUI), berguna untuk pengujian otomatis dan membuat pratinjau.
-
-
Isolasi Lengkap melalui Sandbox Flatpak. Untuk pengguna Linux, ada build Ruffle resmi dalam format Flatpak. Ini bukan hanya metode instalasi, tetapi lapisan keamanan tambahan: aplikasi berjalan di lingkungan terisolasi di mana semua penyimpanan, konfigurasi, dan log disimpan secara ketat di dalam direktori home Flatpak (
~/.var/app/rs.ruffle.Ruffle/), tanpa akses ke seluruh sistem. -
Dukungan Integrasi melalui Homebrew dan Scoop. Untuk pengguna berpengalaman, Ruffle menawarkan metode instalasi tingkat lanjut di luar unduhan manual. Di macOS, dapat diinstal melalui Homebrew (
brew install --HEAD ruffle-rs/ruffle/ruffle), memungkinkan pembaruan otomatis ke nightly build terbaru. Di Windows, manajer paket Scoop melayani fungsi serupa. -
Sistem Penyimpanan Data Transparan (SharedObjects). Ruffle secara akurat meniru sistem penyimpanan lokal Flash (LSO — Local Shared Objects). Namun, tidak seperti pemutar berpemilik, lokasi file-file ini terstandarisasi dan transparan bagi pengguna. Di Windows, mereka terletak di
%AppData%\Local\Ruffle\SharedObjects\, di Linux — di~/.local/share/ruffle/SharedObjects/. Ini memungkinkan pencadangan manual dari penyimpanan game lama. -
Konfigurasi melalui JavaScript API dan Pengaturan Global. Untuk pengembang web, Ruffle menyediakan JavaScript API yang kuat, memungkinkan tidak hanya menyematkan pemutar tetapi juga mengontrol statusnya. Metode tersedia untuk memuat SWF secara terprogram (
load), mengontrol volume (volume), menjeda (suspend/resume), dan mencegat keluarantrace()dari ActionScript untuk debugging melaluitraceObserver. -
Penandatanganan dan Notarisasi Otomatis Build macOS. Dalam proses CI/CD, semua build malam Ruffle untuk macOS menjalani penandatanganan kode dan notarisasi oleh Apple. Ini berarti bahwa bahkan versi emulator yang tidak stabil tidak akan diblokir oleh Gatekeeper sebagai perangkat lunak yang tidak aman, memastikan pengoperasian bebas masalah pada versi terbaru macOS di mana persyaratan keamanan ketat.