A Ruffle egy alapvető Adobe Flash Player emulátor, amely elengedhetetlen a régi Flash-tartalmak (játékok, animációk, alkalmazások és SWF-bannerek) futtatásához. Önálló alkalmazásként működik minden operációs rendszeren (beleértve a Windows, macOS és Linux rendszereket), és böngészőkbe integrálódik a WebAssembly segítségével.
A Ruffle különálló build-eket biztosít Windows, macOS és Linux rendszerekhez, amelyek úgy működnek, mint a hagyományos programok: egyszerűen futtassa a végrehajtható fájlt, és nyissa meg benne a kívánt SWF-fájlt.
A Ruffle kihasználja a Rust nyelv memóriabiztonságát és a modern böngésző homokozóját. Ez lehetővé teszi a potenciálisan kockázatos régi tartalmak futtatását a rendszerfertőzés vagy adatszivárgás kockázata nélkül.
Az emulátor támogatja mind a régebbi AVM1 (ActionScript 1 és 2, amelyet 2006-ig használtak), mind a bonyolultabb AVM2 (ActionScript 3) verziót. Ez szükséges a gyakorlatilag bármilyen Flash-tartalom helyes működéséhez, a 2000-es évek eleji animációktól a technológia megszűnése előtt megjelent összetett játékokig és alkalmazásokig.
Letöltési linkek:
Minden link hivatalos forrásokhoz vezet: a Windows (x86_64), macOS (univerzális Intel és Apple Siliconhoz), Linux (x86_64 és ARM64 Raspberry Pi-hez és ARM-eszközökhöz) build-ek a Ruffle projekt GitHub-tárházán keresztül érhetők el, míg a Linuxos verzió Flatpak formátumban a hivatalos Flathub katalóguson keresztül érhető el digitális aláírásokkal és alkalmazáselszigeteléssel.
A Ruffle legfontosabb jellemzői
Integráció WebAssembly segítségével. Böngészős működéshez a Ruffle WebAssembly-re (Wasm) fordul – egy alacsony szintű bájtkódra, amely a böngésző izolált homokozójában, natív közeli teljesítménnyel fut. Ez lehetőssé teszi az emulátor számára, hogy összetett Flash-grafikákat és -logikát töltsön be és dolgozzon fel anélkül, hogy elavult és nem biztonságos NPAPI/PPAPI bővítményeket kellene telepíteni.
Flash-tartalmak automatikus észlelése és polyfillálása. A Ruffle webes verziója tartalmaz egy JavaScript-detektort, amely átvizsgálja az oldal DOM-struktúráját object, embed és applet elemekre, valamint .swf kiterjesztésű fájlokra. Az ilyen tartalmak észlelésekor a Ruffle automatikusan lecseréli azokat a saját lejátszójára, átlátható módon javítva az oldalt a felhasználó számára és helyreállítva a Flash-elemek funkcionalitását.
Kettős működési mód (asztali alkalmazás és webbővítmény). A Ruffle rugalmasságot kínál a felhasználóknak: használható önálló asztali alkalmazásként helyi SWF-lejátszáshoz (egyszerűen társítsa a fájlokat a Ruffle végrehajtható fájlhoz), vagy böngészőbővítményként, amely integrálódik a webböngészési környezetbe, így biztosítva a Flash-támogatást bármely oldalon.
ActionScript 1.0 és 2.0 (AVM1) támogatása. A Ruffle implementálja az AVM1 virtuális gépet, biztosítva a kompatibilitást a 2006 előtt és 2013-ig létrehozott tartalmak hatalmas tömegével. Az AVM1 nyelvi konstrukciók jelenlegi kompatibilitási szintje eléri a 99%-ot, az API-ké pedig a 81%-ot, garantálva a korai Flash-játékok és -animációk túlnyomó többségének helyes működését.
ActionScript 3.0 (AVM2) támogatása. A 2006 után létrehozott tartalmakhoz a Ruffle tartalmazza az AVM2 implementációját. Bár a kompatibilitási munka aktívan folyik, az emulátor már most elegendő támogatást nyújt számos, ActionScript 3-ban írt összetett játék és alkalmazás futtatásához, folyamatosan bővítve az API-lefedettséget és a nyelvi képességeket.
Biztonság a Rust nyelv szintjén. A Ruffle egyik fő architekturális előnye a Rust nyelv használata. A Rust garantálja a memóriabiztonságot fordítási időben, teljesen kiküszöbölve a sérülékenységek egész osztályait, amelyek az eredeti Adobe Flash Playert sújtották, mint például a puffer túlcsordulások, dupla felszabadítások és használat felszabadítás után hibák.
Elszigetelés a böngésző homokozójában. Webes környezetben működve a Ruffle (a WebAssembly segítségével) teljes mértékben megfelel a böngésző biztonsági irányelveinek. Ez egy extra elszigetelési réteget ad: az emulátornak nincs közvetlen hozzáférése a felhasználó fájlrendszeréhez vagy más rendszerfolyamatokhoz, így kihasználhatósága rendkívül nehéz a klasszikus Flash-bővítményhez képest.
Hatékony memóriakezelés. Az eredeti Flash Playertől eltérően, amely nem-determinisztikus szünetekkel rendelkező szemétgyűjtést használt, a Ruffle örökli a Rust szigorú tulajdonosi modelljét. Ez lehetővé teszi a kiszámíthatóbb memóriahasználatot, csökkenti a töredezettséget és kiküszöböli a memóriaszivárgásokat, amelyek gyakran vezettek a böngésző instabil viselkedéséhez.
Parancssori támogatás. A Ruffle asztali verziója teljesen funkcionális parancssori felületet kínál. A felhasználók paraméterekkel futtathatják az emulátort, például: ruffle filename.swf egy helyi fájlhoz, vagy ruffle https://example.com/filename.swf egy SWF URL-ről történő lejátszásához. A ruffle --help parancs megjeleníti az összes elérhető argumentum és beállítás átfogó listáját.
Nyílt forráskód és a fejlesztés átláthatósága. A Ruffle az Apache 2.0 és MIT licencek alatt kerül terjesztésre. A forráskód teljes nyitottsága azt jelenti, hogy bármely fejlesztő ellenőrizheti az emulátor biztonságát, hozzájárulhat javításokkal és részt vehet a fejlesztésében, kiküszöbölve a rejtett funkciók vagy sérülékenységek lehetőségét, amelyeket vállalati fejlesztők vezethetnének be.
Kompatibilitás a böngészők széles körével. A WebAssembly technológiának köszönhetően a Ruffle-t minden modern böngésző támogatja, beleértve a Google Chrome-ot, a Mozilla Firefoxot, a Microsoft Edge-t, a Safarit, az Operát, a Brave-et és a Vivaldit. Ez egységes élményt biztosít a Flash-tartalmakkal kapcsolatban, függetlenül a felhasználók böngészőmotorokkal kapcsolatos preferenciáitól (Chromium, Gecko vagy WebKit).
Mobil böngészők támogatása (iOS és Android). Az eredeti Adobe Flash Playertől eltérően, amelyet soha nem támogattak hivatalosan iOS-en, és korlátozott volt a támogatása Androidon, a Ruffle működik mobil platformokon. Ez lehetővé teszi a Flash-játékok és -animációk futtatását okostelefonokon és táblagépeken közvetlenül a mobil böngészőn keresztül, megnyitva a hozzáférést az archív tartalmakhoz a mobil közönség számára.
Nincs szükség konfigurációra. A Ruffle a „beállítom és elfelejtem” elvre épül. A bővítmény telepítése vagy az asztali alkalmazás elindítása után az emulátor nem igényel bonyolult konfigurációt. Automatikusan észleli a lejátszási paramétereket, mint a színpad mérete, képfrissítési sebesség és interakció típusa, alkalmazva az optimális beállításokat felhasználói beavatkozás nélkül.
Védelem a nulla napi sérülékenységek ellen. Mivel a Ruffle nem bővítmény, nem használ elavult API-kat, és kódja Rustban íródott a biztonságra összpontosítva, immunis az Adobe Flash Playerre jellemző támadásokkal szemben. Ez ideális megoldássá teszi azon szervezetek számára, amelyeknek meg kell őrizniük a hozzáférést a régi tartalmakhoz, de nem kockáztathatják a rendszer feltörését.
Kompatibilitás különböző telepítési módszerekkel. A Ruffle számos telepítési módot kínál. A webfejlesztők telepíthetik statikus bővítményként Chromium-alapú böngészőkben (fejlesztői módban) vagy ideiglenes kiegészítőként Firefoxban (az about:debugging segítségével). Elérhető a szerveroldali egyszerű JavaScript-kód beillesztésével történő integráció is.
Online és offline tartalmak lejátszása. A Ruffle asztali verziója lehetővé teszi a helyileg, a számítógépre mentett SWF-fájlok megnyitását és lejátszását. Ez az emulátort nélkülözhetetlen eszközzé teszi a gyűjtők, archivárok és kutatók számára, akik Flash-játékok és -animációk helyi archívumaival dolgoznak.
Magas megjelenítési teljesítmény. A Ruffle modern grafikai API-kat használ (például OpenGL, Vulkan, DirectX vagy WebGL) keresztplatformos könyvtárakon keresztül. Ez hardveres gyorsítást biztosít a vektor- és rasztergrafikák megjelenítéséhez, lehetővé téve a zökkenőmentes lejátszást még gyengébb eszközökön is, ahol az eredeti Flash Player esetleg akadozott.
Aktív fejlesztés és gyakori frissítések. A projekt aktív fejlesztés alatt áll. A kiadások rendszeresen megjelennek, és tartalmaznak kritikus hibajavításokat és bővített ActionScript API-támogatást is. Például a legutóbbi verziók javították a szélsőséges eseteket a String.indexOf és lastIndexOf metódusokban, és helyesen kezelik a negatív indexeket az Array.indexOf-ban.
Integráció nagyobb archívumokkal és platformokkal. A Ruffle-t választották hivatalos lejátszónak a Flash-tartalmak lejátszására olyan óriások, mint az Internet Archive, a Newgrounds, a Coolmath Games és az Armor Games. Ez megerősíti az emulátor magas fokú megbízhatóságát és kompatibilitását, valamint azt a képességét, hogy valós körülmények között, nagy terhelés mellett is működjön.
Játékmentések és állapotok támogatása. Az eredeti Flash Playerhez hasonlóan a Ruffle támogatja a Local Shared Objects (LSO) tárolót, amelyet számos játék használ az előrehaladás mentésére. Az emulátor helyesen emulálja az adatok olvasásának és írásának mechanizmusait ebbe a tárolóba, biztosítva a mentések integritását az alkalmazás futási idejében.
Időzítések és képfrissítési sebesség pontos emulációja. A Ruffle pontosan emulálja a Flash Player belső időzítőjét, ami kritikus a játékok és animációk logikája szempontjából. Ez biztosítja az események, a hang és az objektummozgás megfelelő szinkronizálását, megakadályozva, hogy egy játék lassabban vagy gyorsabban fusson az eredetinél.
DOM és JavaScript interakció támogatása (ExternalInterface). Azon összetett webalkalmazások számára, amelyek az ExternalInterface API-t használták az ActionScript és a JavaScript közötti adatcseréhez, a Ruffle implementál egy kompatibilis hidat. Ez lehetővé teszi az emulátor számára, hogy helyesen kezelje a függvényhívásokat és az adatátvitelt, megőrizve a tartalom interaktivitását a környező weboldallal.
Automatikus méretezés és felbontás-adaptáció. Amikor egy adott felbontáshoz (pl. 800x600) készült Flash-tartalmat játszik le, a Ruffle automatikusan alkalmazza a méretezési algoritmusokat, hogy alkalmazkodjon a böngésző vagy az asztali alkalmazás aktuális ablakméretéhez. Megőrzi az arányokat és a képminőséget, valamint helyesen kezeli az egér interakciós területeit.
Különféle médiaformátumok támogatása. Az emulátor támogatja az SWF-fájlokba ágyazható különféle médiaformátumok dekódolását, beleértve az MP3-at az audióhoz és a Flash későbbi verzióiban használt videotömörítést. A dekódolás nagy teljesítményű, Rustban írt könyvtárakon keresztül történik, csökkentve a rendszer terhelését.
Fejlett hibakeresés és naplózás. Fejlesztők és haladó felhasználók számára a Ruffle lehetőséget biztosít az AVM1/AVM2 virtuális gép műveleteinek részletes naplóinak engedélyezésére. Ez lehetővé teszi a kompatibilitási problémák diagnosztizálását, az ActionScript-kód hibáinak nyomon követését és az emuláció belső folyamatainak megértését a pontosabb hangolás érdekében.
Kurzor és interaktív elemek emulációja. A Ruffle helyesen kezeli a Flash-tartalom által meghatározott kurzor stílusváltozásait. Például az olyan interaktív elemeknél, mint a LoaderDisplay, az emulátor automatikusan megváltoztatja az alapértelmezett kurzort mutatóra, utánozva az eredeti Flash lejátszó viselkedését és ismerős navigációt biztosítva a felhasználónak.
Nightly buildek támogatása a korai hozzáféréshez. A stabil kiadások mellett a Ruffle csapat hozzáférést biztosít a napi kísérleti Nightly buildekhez. Ezek a buildek tartalmazzák a legújabb javításokat és újításokat, amelyek még nem kerültek be a stabil verzióba.
A digitális kulturális örökség megőrzése. Ez nem csupán egy technikai funkció, hanem a projekt alapvető célja. A Ruffle eszközként jött létre a történelmi internetes tartalmak megőrzésére. Annak köszönhetően, hogy képes modern böngészőkben dolgozni a biztonság veszélyeztetése nélkül, Flash-játékok, animációk és alkalmazások milliói, amelyek az Adobe Flash Player megszűnése után végleg elvesztek volna, elérhetők maradnak a jövő generációi számára.
12 kevésbé ismert technikai képesség a Ruffle-ben
-
A WGPU használata elsődleges megjelenítési motorháztetőként. Ellentétben sok emulátorral, amelyek a régi OpenGL-re támaszkodnak, a Ruffle a WGPU könyvtárat használja – egy modern, biztonságos és keresztplatformos grafikus API-t. Asztali gépen a WGPU automatikusan kiválasztja a legoptimálisabb alacsony szintű motorhátteret: Vulkan, DirectX 12 vagy Metal. A böngészőben képes WebGPU-n keresztül működni (ahol elérhető), vagy emulálhatja a működést WebGL-en keresztül minimális teljesítményveszteséggel.
-
WebGPU támogatás a böngészőben a maximális teljesítményért. A modern böngészők felhasználói számára (pl. a Chrome és Edge legújabb verziói) a Ruffle használhatja a csúcstechnológiás WebGPU API-t. Ez jelentősen csökkentett shader-fordítási időt és alacsonyabb többletterhelést biztosít a szabványos WebGL motorháttérhez képest, ami kritikus az összetett 3D-s grafikák és Stage3D alkalmazások esetében.
-
A megjelenítési motorháttér finomhangolása (
canvas,webgl,wgpu-webgl). Kevesen tudják, hogy a megjelenítés viselkedése manuálisan szabályozható. A szabványoswgpu-webglmellett lehetőség van kényszeríteni:-
webgl– egy klasszikus motorháttér, amely gyorsabban inicializálódik, és hasznos lehet egyszerű tartalmakhoz, amelyek nem igényelnek bonyolult bittérképes effekteket. -
canvas– a leglassabb, de legpontosabb motorháttér. Ez az egyetlen, amely helyesen méretezi a vektoros grafikában a hajszálvonalakat, amelyek a hardveres gyorsítás használatakor túl vastagnak tűnhetnek.
-
-
A
Stage3Demulációja és azAGALfordításWGSL-re. A Ruffle nem csak 2D-s grafikát támogat, hanem 3D-s gyorsítást is aStage3D(Context3D) API-n keresztül. Az AGAL (Adobe Graphics Assembly Language) nyelven írt shaderek „menet közben” fordulnak modern WGSL (WebGPU Shading Language) vagy GLSL nyelvre. Ez lehetővé teszi a Flash Player 11 és újabb verziókhoz készült összetett 3D-s játékok és alkalmazások futtatását, kihasználva a programozható shaderek teljes csővezetékét. -
A
fscommandtámogatása a visszafelé kompatibilitás érdekében. A Ruffle megtartotta a régi, de fontosfscommandmechanizmus támogatását. Ez lehetővé teszi a régi Flash-filmeknek (amelyek az ExternalInterface előtt készültek), hogy interakcióba lépjenek az oldalon lévő JavaScripttel, tetszőleges parancsokat és argumentumokat küldve. A Ruffle modern implementációjában ezeket a parancsokat azonFSCommandsegítségével dolgozza fel, lehetővé téve a működést még a nagyon régi webes tartalmak esetében is. -
Dupla pufferelés a Context3D-hez. A 3D-s tartalmakkal való munka során a Ruffle egy kifinomult dupla pufferelési mechanizmust (hátsó puffer / első puffer) használ. Ez egy szabványos, de kritikus fontosságú teljesítménytechnika, amely lehetővé teszi a következő képkocka megjelenítését a háttérpufferben, miközben a jelenlegi látható a képernyőn, kiküszöbölve a vizuális műtermékeket (képkocka-tépődést) a dinamikus játékokban.
-
Teljesítménymérő eszközök:
ruffle_scannerésexporter. A Ruffle tárházában találhatók segédprogramok, amelyek nem részei a szabványos buildnek, de elérhetők a fejlesztők számára:-
ruffle_scanner– lehetővé teszi az emulátor kompatibilitásának tesztelését egy teljes SWF-fájlokat tartalmazó mappával, CSV-jelentést generálva a sikeres elemzésről. -
exporter– egy eszköz PNG-képernyőképek kötegelt generálásához SWF-fájlokból, amely képes fej nélküli (GUI nélküli) módban futni, hasznos az automatikus teszteléshez és előnézetek létrehozásához.
-
-
Teljes elszigetelés a Flatpak homokozó segítségével. Linux-felhasználók számára elérhető a Ruffle hivatalos buildje Flatpak formátumban. Ez nem csak egy telepítési módszer, hanem egy további biztonsági réteg: az alkalmazás egy elszigetelt környezetben fut, ahol az összes mentés, konfiguráció és napló szigorúan a Flatpak saját könyvtárán belül (
~/.var/app/rs.ruffle.Ruffle/) tárolódik, hozzáférés nélkül a rendszer többi részéhez. -
Integrációs támogatás Homebrew és Scoop segítségével. A tapasztalt felhasználók számára a Ruffle fejlett telepítési módszereket kínál a kézi letöltésen túl. macOS rendszeren telepíthető a Homebrew segítségével (
brew install --HEAD ruffle-rs/ruffle/ruffle), ami lehetővé teszi az automatikus frissítést a legújabb nightly buildre. Windows rendszeren a Scoop csomagkezelő szolgál hasonló célt. -
Átlátható adattárolási rendszer (SharedObjects). A Ruffle pontosan emulálja a Flash helyi tárolórendszerét (LSO – Local Shared Objects). Azonban a szabadalmaztatott lejátszóval ellentétben ezeknek a fájloknak a helye szabványosított és átlátható a felhasználó számára. Windows rendszeren a
%AppData%\Local\Ruffle\SharedObjects\mappában, Linux rendszeren a~/.local/share/ruffle/SharedObjects/mappában találhatók. Ez lehetővé teszi a régi játékokból származó mentések kézi biztonsági mentését. -
Konfiguráció JavaScript API és globális beállítások segítségével. Webfejlesztők számára a Ruffle egy hatékony JavaScript API-t biztosít, amely nemcsak a lejátszó beágyazását teszi lehetővé, hanem annak állapotának vezérlését is. Elérhetők metódusok az SWF programozott betöltéséhez (
load), a hangerő szabályozásához (volume), a szüneteltetéshez (suspend/resume), valamint az ActionScript-ből érkezőtrace()kimenetek elfogásához hibakeresés céljából atraceObserversegítségével. -
A macOS buildek automatikus aláírása és notarizálása. A CI/CD folyamat során a Ruffle összes macOS nightly buildje kódaláíráson és notarizáláson esik át az Apple által. Ez azt jelenti, hogy még az emulátor nem stabil verzióit sem blokkolja a Gatekeeper nem biztonságos szoftverként, biztosítva a zavartalan működést a macOS legújabb verzióin, ahol a biztonsági követelmények szigorúak.