Difference between revisions of "Flash"

From Emulation General Wiki
Jump to navigation Jump to search
(HTML5)
(Comparisons)
(5 intermediate revisions by 5 users not shown)
Line 60: Line 60:
 
! colspan="6"|HTML5 / WebAssembly
 
! colspan="6"|HTML5 / WebAssembly
 
|-
 
|-
|[https://github.com/vidkidz/waflash WAFlash]
+
|Ruffle
 
| rowspan="7" {{na}}
 
| rowspan="7" {{na}}
|[https://clubpenguinadvanced.github.io/waflash-demo/ Web]
+
|[https://github.com/ruffle-rs/ruffle git]
|{{✗}} ||{{✗}} ||{{✓}}
 
|-
 
|Ruffle
 
|[https://ruffle.rs/demo Web demo]
 
 
|{{✓}} ||{{✓}} ||{{~}}<small> (WIP)</small>
 
|{{✓}} ||{{✓}} ||{{~}}<small> (WIP)</small>
 
|-
 
|-
 
|[https://awayfl.org/ AwayFL]
 
|[https://awayfl.org/ AwayFL]
|[https://github.com/awayfl/awayfl-player git]<br />[https://exponenta.games/games/AFL/ Web demo]
+
|[https://github.com/awayfl/awayfl-player git]
 
|{{✓}} ||{{✓}} ||{{~}}<small> (WIP)</small>
 
|{{✓}} ||{{✓}} ||{{~}}<small> (WIP)</small>
 +
|-
 +
|[https://github.com/vidkidz/waflash WAFlash]
 +
| {{na}}
 +
|{{✗}} ||{{✗}} ||{{~}}
 
|-
 
|-
 
|[https://swf2js.com/en/ swf2js]
 
|[https://swf2js.com/en/ swf2js]
|[https://github.com/swf2js/swf2js Download (Free Version only)]<br />Demo sites:<br />[https://swf2js.com/free/index.html Free Version]<br />[https://swf2js.com/prod/index.html Production Version]
+
|[https://github.com/swf2js/swf2js 0.7.8]
 
|{{~}} ||{{✗}} ||{{~}}
 
|{{~}} ||{{✗}} ||{{~}}
 
|-
 
|-
Line 93: Line 93:
 
===Comparisons===
 
===Comparisons===
 
====Hybrid====
 
====Hybrid====
;Ruffle
+
;Ruffle<small> ([https://ruffle.rs/demo/ web demo])</small>
:A Rust implementation that targets both HTML5 and desktop. Notably used by a bunch of veteran Flash content sites including [https://www.newgrounds.com Newgrounds], [https://homestarrunner.com Homestar Runner] and [https://www.coolmathgames.com CoolMathGames], and also by the Internet Archive's [https://archive.org/details/softwarelibrary_flash Flash library]. It's progressed to the point where it can run many early Flash games, including the original Flash version of [https://www.newgrounds.com/portal/view/59593/format/flash?emulate=flash Alien Hominid]. Unlike the other HTML5 options, Ruffle can actually be installed as a browser addon, with the caveat that a website's hosted copy will usually override the addon even if the site is running an older build.
+
:A Rust-based player that targets both HTML5 and desktop. Notably used by a bunch of veteran Flash content sites including [https://www.newgrounds.com Newgrounds], [https://homestarrunner.com Homestar Runner] and [https://www.coolmathgames.com CoolMathGames], and also by the Internet Archive's [https://archive.org/details/softwarelibrary_flash Flash library]. By 2021, it had progressed to the point where it can run many early Flash games, including the original Flash version of [https://www.newgrounds.com/portal/view/59593/format/flash?emulate=flash Alien Hominid]; support for newer AVM2-based files is now underway, although still far from complete. Unlike the other HTML5 options, Ruffle can actually be installed as a browser addon, with the caveat that a website's hosted copy will usually override the addon even if the site is running an older build.
  
 
====Desktop / NPAPI====
 
====Desktop / NPAPI====
 
[[wikipedia:NPAPI|NPAPI/PPAPI]] is an obsolete browser plugin system for a bunch of different in-browser software platforms that tried to co-exist in the earlier days of the Internet, before basically only being used for Flash Player once Flash became properly dominant. By the mid-2010s, the plugin system was increasingly being seen as an ancient relic that modern browsers would be better off without; and so, while Adobe was phasing out Flash Player in late 2020, NPAPI was gradually being dropped by all the major browser vendors. It hasn't entirely disappeared (some smaller browser devs still maintain NPAPI in their own forks of stuff like Firefox and Chromium), but it is ''mostly'' dead nowadays.
 
[[wikipedia:NPAPI|NPAPI/PPAPI]] is an obsolete browser plugin system for a bunch of different in-browser software platforms that tried to co-exist in the earlier days of the Internet, before basically only being used for Flash Player once Flash became properly dominant. By the mid-2010s, the plugin system was increasingly being seen as an ancient relic that modern browsers would be better off without; and so, while Adobe was phasing out Flash Player in late 2020, NPAPI was gradually being dropped by all the major browser vendors. It hasn't entirely disappeared (some smaller browser devs still maintain NPAPI in their own forks of stuff like Firefox and Chromium), but it is ''mostly'' dead nowadays.
  
You may also notice that a lot of older Flash player projects specifically fizzled out around 2009-2012. That's in huge part because before then, many video hosting sites actually needed some type of SWF element to be able play videos in a browser, and the development of open-source alternatives was motivated by a combination of free software advocates not wanting an increasingly large part of the Internet to hinge on a single proprietary platform, and Macromedia/Adobe not necessarily seeing Linux support as a top priority. It wasn't until the start of 2010 that YouTube in particular started pushing really hard for HTML5 media elements, which have since become a standard feature in modern browsers and single-handedly made Flash Player completely redundant for multimedia playback.
+
You may also notice that a lot of older Flash player projects specifically fizzled out around 2009-2010. That's in huge part because before then, many video hosting sites actually needed some type of SWF element to be able play videos in a browser, and the development of open-source alternatives was motivated by people not wanting an increasingly large part of the Internet to hinge on a single proprietary software platform, along with Macromedia/Adobe not necessarily seeing Linux support as a top priority. It wasn't until the start of 2010 that YouTube in particular started pushing really hard for HTML5 media elements, which have since become a standard feature in modern browsers and single-handedly made Flash Player completely redundant for multimedia playback.
  
 
;Flash Player
 
;Flash Player
:The proprietary reference implementation, which Adobe stopped directly supporting at the end of 2020. The plugin version has been delisted from Adobe's website and also has a built-in kill-switch that was flipped in January 2021, so it's probably not much use even in browsers that still support NPAPI. However, the discontinued desktop player version is still available for download from the debug downloads section of Adobe's website, and Harman International is also [https://airsdk.harman.com/flashplayer maintaining an extended support version specifically for enterprise users].
+
:The proprietary reference player, which Adobe stopped directly supporting at the end of 2020. The plugin version has been delisted from Adobe's website and also has a built-in kill-switch that was flipped in January 2021, so it's probably not much use even in browsers that still support NPAPI. However, the discontinued desktop player version is still available for download from the debug downloads section of Adobe's website, and Harman International is also [https://airsdk.harman.com/flashplayer maintaining an extended support version specifically for enterprise users].
  
 
;Lightspark
 
;Lightspark
:A C++ implementation that's designed specifically to provide drop-in FLOSS replacements for both the desktop and NPAPI versions of Flash Player. It claims to have 83% of the overall SWF spec covered, as of August 2022. Lightspark historically focused on more recent versions of the SWF spec that weren't supported by Gnash, hence why Lightspark could (and still can) use Gnash as an automatic fallback if both are installed simultaneously.
+
:A C++ player that's designed specifically to provide drop-in FLOSS replacements for both the desktop and NPAPI versions of Flash Player. It claims to have 83% of the overall SWF spec covered, as of August 2022, but development has been fairly slow since 2015 when it became a mostly one-person effort. Lightspark historically focused on more recent versions of the SWF spec that weren't supported by Gnash, hence why Lightspark could (and still can) use Gnash as an automatic fallback if both are installed simultaneously.
  
 
;GNU Gnash
 
;GNU Gnash
:A desktop-only C++ implementation that went inactive in 2017, with the most recent stable release dating back to 2012. Probably not much reason to use it over newer versions of Lightspark, which seem to have mostly (if not entirely) superseded Gnash for compatibility.
+
:A desktop-only C++ player that went inactive in 2017, with the most recent stable release dating back to 2012. Probably not much reason to use it over newer versions of Lightspark, which seem to have mostly (if not entirely) superseded Gnash for compatibility.
  
 
;GameSWF
 
;GameSWF
:An ''extremely'' old C++ implementation, definitely one of the first serious efforts to reverse-engineer Flash Player into an open-source package. Inactive since 2009, though it did lay the foundations for Gnash.
+
:An ''extremely'' old C++ player, definitely one of the first serious efforts to reverse-engineer Flash Player into an open-source package. Inactive since 2009, though it did lay the foundations for Gnash.
  
 
;swfdec
 
;swfdec
Line 117: Line 117:
  
 
====HTML5====
 
====HTML5====
Pretty much all of the implementations listed here are specifically designed to be used as [[wikipedia:Polyfill (programming)|polyfills]] by webmasters who want to keep their Flash-based sites going despite the forced obsolescence of Adobe's in-browser Flash plugin. They are therefore largely not intended for personal use, although it's usually not impossible and some of them even have official demo pages that you can use to load whatever SWF file you want.
+
Pretty much all of the players listed here are specifically designed to be used as [[wikipedia:Polyfill (programming)|polyfills]] by webmasters who want to keep their Flash-based sites going despite the forced obsolescence of Adobe's in-browser Flash plugin. They are therefore largely not intended for personal use, although it's usually not impossible and some of them even have official demo pages that you can use to load whatever SWF file you want.
  
 
;CheerpX for Flash
 
;CheerpX for Flash
 
:A proprietary software package designed to make the Harman version of Flash Player usable in modern browsers by running it inside CheerpX, a payware x86 emulator in WebAssembly. No-one on this wiki has had the chance to properly evaluate it, but we'd expect reference-level accuracy at the cost of woeful performance. That being said, CheerpX apparently has an alternate mode of operation that offloads most of the emulation and processing work to a server app, at which point the in-browser part is effectively just a streaming client.
 
:A proprietary software package designed to make the Harman version of Flash Player usable in modern browsers by running it inside CheerpX, a payware x86 emulator in WebAssembly. No-one on this wiki has had the chance to properly evaluate it, but we'd expect reference-level accuracy at the cost of woeful performance. That being said, CheerpX apparently has an alternate mode of operation that offloads most of the emulation and processing work to a server app, at which point the in-browser part is effectively just a streaming client.
  
;AwayFL
+
;AwayFL<small> ([https://exponenta.games/games/AFL/ web demo])</small>
:Developed by the Away Foundation, this is arguably the most direct alternative to Ruffle, and it sometimes ''does'' work better depending on the specific SWF file you're trying to run.
+
:Developed by the Away Foundation, this is arguably the most direct alternative to Ruffle, which it's roughly even with in terms of compatibility although there are still a bunch of SWFs that'll work fine in one but not the other.
  
;WAFlash
+
;WAFlash<small> ([https://clubpenguinadvanced.github.io/waflash-demo/ web demo])</small>
:An inactive, closed-source C++-to-WebAssembly implementation that technically hasn't been made available to outside users, although there are a few sites where you can use it. It was considered the most accurate of the unofficial Flash players as of late 2021, although other still-active projects have caught up significantly.
+
:An inactive, closed-source C++-to-WebAssembly player that technically hasn't been made available to outside users, although there are a few sites where you can use it. It was considered the most accurate of the unofficial Flash players as of late 2021, although other still-active projects have caught up significantly.
  
;swf2js
+
;swf2js<small> (web demos: [https://swf2js.com/free/index.html free], [https://swf2js.com/prod/index.html production])</small>
:An open-core implementation that uses a dynamic recompiler. The source-available "Free" version supports limited features, such as AS1, AS2 and ZLIB compression, whereas the payware "Production" version is better suited to newer Flash files using such features as AS3 and LZMA compression. Built on more traditional JavaScript code, so it pretty much always performs worse than the WebAssembly-based options, sometimes noticeably so.
+
:An open-core player that uses a dynamic recompiler. The source-available "Free" version supports limited features, such as AS1, AS2 and ZLIB compression, whereas the payware "Production" version is better suited to newer Flash files using such features as AS3 and LZMA compression. Built on more traditional JavaScript code, so it pretty much always performs worse than the WebAssembly-based options, sometimes noticeably so.
  
 
;Shumway
 
;Shumway
:A relatively very early implementation, developed rather actively under Mozilla sponsorship between 2012 and 2016 but ultimately abandoned before it could reach a usable beta state.
+
:A relatively early HTML5 player, developed rather actively under Mozilla sponsorship between 2012 and 2016 but ultimately abandoned before it could reach a usable beta state.
  
 
==See also==
 
==See also==

Revision as of 19:11, 23 September 2022

Adobe Flash
Developer Adobe
Release date 1996
Discontinued 2020
Emulated

Flash (previously FutureSplash Animator, before that SmartSketch) is a software platform created by FutureWave Software, and currently owned by Adobe (previously Macromedia). Originally a drawing program for PenPoint OS, later ported to Windows and Macintosh when pen computing failed to take off, frame-by-frame animation features were added to it in a new program called FutureSplash Animator. The company was acquired by Macromedia in December 1996, rebranding FutureSplash Animator to Flash, an amalgamation of "Future" and "Splash". In turn, Macromedia was acquired by Adobe on December 3, 2005. Their operations, networks, and customer care organizations were merged shortly after.

Used by an overwhelming majority of websites in the early 2000s to the mid-2010s, Flash has been the go-to platform for multimedia and animation, being utilised for streaming video providers such as YouTube, children's websites due to its rich content, and has spawned a subculture of animators as exemplified by the likes of Newgrounds. A number of popular animated series were also animated using Flash, most notably My Little Pony: Friendship Is Magic, Phineas and Ferb and Happy Tree Friends to name a few.

Flash's popularity declined in the late 2010s due to the rise of alternative (and open) web standards such as HTML5 and mobile device manufacturers dropping support for the platform, a prominent example being Apple who publicly stated that iOS will never support Flash. Google followed suit when it dropped support for the platform in subsequent Android releases, and it didn't help that a series of security issues, coupled with Flash itself being a closed standard, has led Adobe to wind down on Flash and retire it in 2020.

Implementations

Name Platform(s) Latest version FLOSS Active Recommended
Desktop / Plugin [N 1]
Flash Player Windows Linux macOS Web 32.0.0.465 ~ [N 2]
Ruffle Windows Linux macOS Nightly builds ~ (WIP)
Lightspark Windows Linux Web 0.8.6.1 ~ (WIP)
GNU Gnash Windows Linux 0.8.10
GameSWF Windows macOS Linux 2009-08-08
swfdec Linux Web 0.8.4
HTML5 / WebAssembly
Ruffle N/A git ~ (WIP)
AwayFL git ~ (WIP)
WAFlash N/A ~
swf2js 0.7.8 ~ ~
CheerpX for Flash Version 34
Open Flash / Doμ Player git
Shumway git
  1. Plugin versions of these players require a browser that supports NPAPI/PPAPI.
  2. Adobe versions discontinued. Harman versions currently maintained for enterprise customers only.

Comparisons

Hybrid

Ruffle (web demo)
A Rust-based player that targets both HTML5 and desktop. Notably used by a bunch of veteran Flash content sites including Newgrounds, Homestar Runner and CoolMathGames, and also by the Internet Archive's Flash library. By 2021, it had progressed to the point where it can run many early Flash games, including the original Flash version of Alien Hominid; support for newer AVM2-based files is now underway, although still far from complete. Unlike the other HTML5 options, Ruffle can actually be installed as a browser addon, with the caveat that a website's hosted copy will usually override the addon even if the site is running an older build.

Desktop / NPAPI

NPAPI/PPAPI is an obsolete browser plugin system for a bunch of different in-browser software platforms that tried to co-exist in the earlier days of the Internet, before basically only being used for Flash Player once Flash became properly dominant. By the mid-2010s, the plugin system was increasingly being seen as an ancient relic that modern browsers would be better off without; and so, while Adobe was phasing out Flash Player in late 2020, NPAPI was gradually being dropped by all the major browser vendors. It hasn't entirely disappeared (some smaller browser devs still maintain NPAPI in their own forks of stuff like Firefox and Chromium), but it is mostly dead nowadays.

You may also notice that a lot of older Flash player projects specifically fizzled out around 2009-2010. That's in huge part because before then, many video hosting sites actually needed some type of SWF element to be able play videos in a browser, and the development of open-source alternatives was motivated by people not wanting an increasingly large part of the Internet to hinge on a single proprietary software platform, along with Macromedia/Adobe not necessarily seeing Linux support as a top priority. It wasn't until the start of 2010 that YouTube in particular started pushing really hard for HTML5 media elements, which have since become a standard feature in modern browsers and single-handedly made Flash Player completely redundant for multimedia playback.

Flash Player
The proprietary reference player, which Adobe stopped directly supporting at the end of 2020. The plugin version has been delisted from Adobe's website and also has a built-in kill-switch that was flipped in January 2021, so it's probably not much use even in browsers that still support NPAPI. However, the discontinued desktop player version is still available for download from the debug downloads section of Adobe's website, and Harman International is also maintaining an extended support version specifically for enterprise users.
Lightspark
A C++ player that's designed specifically to provide drop-in FLOSS replacements for both the desktop and NPAPI versions of Flash Player. It claims to have 83% of the overall SWF spec covered, as of August 2022, but development has been fairly slow since 2015 when it became a mostly one-person effort. Lightspark historically focused on more recent versions of the SWF spec that weren't supported by Gnash, hence why Lightspark could (and still can) use Gnash as an automatic fallback if both are installed simultaneously.
GNU Gnash
A desktop-only C++ player that went inactive in 2017, with the most recent stable release dating back to 2012. Probably not much reason to use it over newer versions of Lightspark, which seem to have mostly (if not entirely) superseded Gnash for compatibility.
GameSWF
An extremely old C++ player, definitely one of the first serious efforts to reverse-engineer Flash Player into an open-source package. Inactive since 2009, though it did lay the foundations for Gnash.
swfdec
Another very early effort to create an non-proprietary replacement for Flash Player. Actually pretty advanced for 2008-09, but it hasn't been active since.

HTML5

Pretty much all of the players listed here are specifically designed to be used as polyfills by webmasters who want to keep their Flash-based sites going despite the forced obsolescence of Adobe's in-browser Flash plugin. They are therefore largely not intended for personal use, although it's usually not impossible and some of them even have official demo pages that you can use to load whatever SWF file you want.

CheerpX for Flash
A proprietary software package designed to make the Harman version of Flash Player usable in modern browsers by running it inside CheerpX, a payware x86 emulator in WebAssembly. No-one on this wiki has had the chance to properly evaluate it, but we'd expect reference-level accuracy at the cost of woeful performance. That being said, CheerpX apparently has an alternate mode of operation that offloads most of the emulation and processing work to a server app, at which point the in-browser part is effectively just a streaming client.
AwayFL (web demo)
Developed by the Away Foundation, this is arguably the most direct alternative to Ruffle, which it's roughly even with in terms of compatibility although there are still a bunch of SWFs that'll work fine in one but not the other.
WAFlash (web demo)
An inactive, closed-source C++-to-WebAssembly player that technically hasn't been made available to outside users, although there are a few sites where you can use it. It was considered the most accurate of the unofficial Flash players as of late 2021, although other still-active projects have caught up significantly.
swf2js (web demos: free, production)
An open-core player that uses a dynamic recompiler. The source-available "Free" version supports limited features, such as AS1, AS2 and ZLIB compression, whereas the payware "Production" version is better suited to newer Flash files using such features as AS3 and LZMA compression. Built on more traditional JavaScript code, so it pretty much always performs worse than the WebAssembly-based options, sometimes noticeably so.
Shumway
A relatively early HTML5 player, developed rather actively under Mozilla sponsorship between 2012 and 2016 but ultimately abandoned before it could reach a usable beta state.

See also

  • Flashpoint - preservation effort for games designed in commercial web frameworks (not just Flash).

Resources