Came across this a few weeks ago, as a friend who likes to play old flash games was trying to get it working.
While it has a long way to go, it does seem to have better traction than the prior efforts + it seems to be funded by several of the larger online (flash) game hosting places that have a need for it.
So, kind of expecting this will actually work to support most flash stuff over time. Securely this time around.
Guess then we'll be able to brush the dust off the old Flash creation tools? :)
It's almost sad to admit these days but Flash started me down my path with Actionscript. It was the first language I thought I could really use and threw myself into, creating small games for the web (at the time). It was a blast!
> project issued their first progress report with getting dozens of ActionScript 2 based games working
Dozens of _previously-broken_ games working. We had a majority of (single-player) AS2 games working for years now, with only several major missing features plaguing the remaining games. The biggest one of them (a very unintuitive way variables magically bind to "DOM" objects) was implemented very recently, hence the announcement.
As for AS3, you could say the interpreter support has finally reached the turning point. It took 2 years from the first AS3-related commit to the first simplest game to "kinda-sorta work", and within the next couple of months up to now, so many games started to work that we stopped being able to count them. So yeah, we're very optimistic here :)
EDIT: oh, also major shoutout to https://github.com/jindrapetrik/jpexs-decompiler which is effectively a full-blown low-level IDE for decompiling, debugging, analysing and manipulating (or even hand-crafting from scratch) SWFs. Without actually seeing all the ways the games abused Flash interpreter, it'd be borderline impossible to figure out Flash Player's various quirks. Further, it lets contributors create test SWFs without having to own old versions of Flash IDE.
> As for AS3, you could say the interpreter support has finally reached the turning point
That's very exciting!
Ruffle obviously isn't the first open source project to attempt a Flash player: there's Gnash, swfdec, Lightspark, and Shumway. All of these other projects were useful, but reached a local maxima, or stagnated, due to the sheer size of the task.
I hope this moves us closer to a highly compatible memory-safe and freely available Flash implementation. It seems that so much creative output was lost in the Flash apocalypse.
Flash/.swf (like HyperCard and some other cool-but-dead tech) seemed to hit a sweet spot that enabled many people to do cool things and share them, and I don't think anything (such as Roblox, Godot, etc. mentioned below) has adequately replaced it.
I will defend Flash all day long, and I think it's death is a regression in technology that to this day has not been rectified. Of course it had it's problems (particularly around accessibility and security), but in 1998, it was possible for a teenager to write a decent quality Mario clone that could run on a Pentium II, from a web browser, at 60fps.
Not to mention with swf-to-exe tools like Zinc, I could create portable and lightweight desktop applications without fighting with compilers and build steps. 20 years ago I built a fairly sophisticated program to allow users to load, view, and manipulate 3D objects. Took me a week and I can still run it today. I supposed I could do the same now with JS libraries and Electron, but it's just not the same. We indeed lost something valuable.
It was also very possible to write a restaurants website that ran at 5fps on the fastest cpu at the time. and honestly that's why a lot of people wanted flash dead.
People think of Flash and fondly remember HomestarRunner but that shit was EVERYWHERE for awhile, and not just in banner ads. Entire websites would be built in flash, and not well, either.
The problem was that creative people were intruding into the space of old school software developer mentalities and “standards” people. Flash devs got paid extremely well, were highly collaborative, and executed exceptionally fast. But they weren’t “doing it the proper way” and for some reason the software/tech industry at large needed to show Flash how it was meant to be done. No one yet figured out how to properly centre a div or agree on what was restful, but knew for sure Flash was doing it wrong because the <video> tag was now only 4 short years away from viable browser penetration.
And now we finally made it. The 2d canvas context can fill paths, you can loop an audio file, you can even centre divs. You just gotta duck tape all that garbage together, manually through code, forget about animation authoring, in a dry as heck Node.js tooling ecosystem, and spend your nights replaying arguments you had with your co-workers about linting rules.
The ecosystem surrounding web standards make hard almost every use-case Flash had. The web standards and its implementation is a friggen mess. Try doing anything non-trivial with audio and you’ll see what I mean.
Instead of slow animated restaurant website we now have blogspam recipe sites or slow electron apps.
The web standards at the time could barely vertically centre a div, and many of the proponents of web standards had the gall to say the web standards would supersede Flash.
This is why I hated flash. The websites for small non-technical businesses were god awful because the business owners, who didn't know better, asked for all kinds of superfluous animations.
At least now that this same sort of crap is done in javascript, I can opt out of it by not enabling javascript and still usually have a workable website to read. But with flash there was no graceful degradation at all; you either ran flash and brought your computer to its knees, or you couldn't use the website at all. It was awful and the best thing Steve Jobs ever did was help nail the coffin shut.
> But with <javascript> there was no graceful degradation at all; you either ran <javacript> and brought your computer to its knees <with ads that cover 70% of page>, or you couldn't use the website at all.
I remember times when flash is everwhere. Usually flash was present as ads, videoplayer, sometime as full website, and sometime only as fancy-colorful menu.
Honestly, I don't see big difference between flash and javascript from user POV. Same sometime slowness, sometime lags, all the time ads, etc. etc.
> …in 1998, it was possible for a teenager to write a decent quality Mario clone that could run on a Pentium II, from a web browser, at 60fps.
Today it's possible for a teenager to write a decent 2D or 3D platformer (or whatever) that can run on a low-end machine at good framerates using tools like Roblox, Godot, etc. Flash still exists in the form of Adobe Animate, but it's competing for beginner hearts and minds on platforms with far more capabilities and far better communities.
Change is not necessarily regression. It's fun to remember and honor tools that were formative in our lives, but it's important to note that there are kids out there having the same experiences we did on today's platforms and tools.
Critically, there's no modern equivalent for the `.swf` file that's easy to share and post on random websites. Chrome's Web Bundles could have been a solution, but they're dead now.
Yeah, that's what you have to do these days. Maybe I'm just hung up on archival, but loads of the `.swf` files are no longer available from their original source. Itch.io is awesome, but if it goes under, or is forced to change it's business model, all of those embeds that nobody thought to independently save become defunct.
I was able to hunt down an old copy of the Delirium swf like 6 months ago (from Web Archive) and then with another package I was able to run it natively on MacOS.
I wish Godot had the art capabilities that Flash had. With Flash you could sit down to a blank canvas and end up with a game you could pop on the web, without needing a single external program. With 2D Godot there’s always that annoying beginning stage where you have to hop into an art program just to make a basic character and background sprite, fiddle with import settings and atlases, blah blah… it doesn’t feel as seamless and magical as Flash vector art.
Did Animate get a huge amount of updates? It was nowhere near a Flash replacement outside of, well, animating, when I last used it if you wanted content that ran in the browser.
Nothing has replaced Flash for low friction creative outlet for animations and games. Even artists could use Flash very effectively by themselves.
The iteration time was mindblowing- Using Flash, I remember putting together Ludum Dare games in 6 hours, while everyone else was struggling at hour 48.
The new generation of devs never knew the levels of productivity that could be had with Flash.
I've heard this before, and I'm curious, not having developed in flash myself. What was it about the UI or flow that hasn't been replicated? Is there something about it that makes cloning it difficult or undesirable in the myriad of open source "make stuff fast" languages/front ends?
> I've heard this before, and I'm curious, not having developed in flash myself.
FWIW, Flash (the authoring tool) became Adobe Animate¹ when Adobe started targeting the web. Because the authoring experience hasn't changed much in 20 years, you can watch Adobe Animate videos² to see how its timeline-based authoring worked.
It is not at all the same. Animating and painting works pretty much like it used to, but everything else, especially the scripting, changed quite drastically. And the result is barely usable or not at all (when we are talking about interactive aka games and such). Up to the point, where it is not worth it for me. I gave it a try again a couple of weeks ago and I struggled to get basic functionality running. And I know flash by heart and even have outside experience with easelJS, the new framework in use.
Wow really? As a flash dev I was so psyched to see each successive AS version come out - AS2 was a huge step forward, and so was AS3. I dreaded going back to legacy AS2 projects once version 3 was available.
Basically Unity, but far less friction, less ceremony, less busywork.
Often the primary tool of the artists themselves.
Actionscript 2 would allow you to get some very complex behaviours with only a few lines of code. None of the endless boilerplate of C#. Literally: Double click, a few lines of script, new game entity ready.
Full animation / timeline / tween /scene support baked right in and scriptable.
Exporting was 2 clicks away and anyone with a web browser could play.
My main exposure to Ruffle has been through its use on Homestarrunner.com, where it’s been deployed to maintain a working archive of their old cartoons (complete with interactive Easter eggs, which obviously isn’t possible on YouTube).
It was buggy initially but now seems to work very well.
I’m a big fan, and echo the sentiments of others here who remember Flash fondly as a powerful and singularly accessible creative tool.
To anyone working on Ruffle: I value the work y’all are doing immensely!
These days, I'd say it's probably best to use video for non-interactive animations. Flash is from a time where network speeds were too slow and video compression was too poor, both in ratio and picture quality, to be feasible. But now, it's a better option also because you don't need a runtime nor need worry about browser compatibility of some javascript animation library.
> A Lottie is a JSON-based animation file format that allows you to ship animations on any platform as easily as shipping static assets. They are small files that work on any device and can scale up or down without pixelation. LottieFiles lets you create, edit, test, collaborate on and ship a Lottie in the easiest way possible.
I just got security camera that has a low quality stream (720p15) and a high quality stream (4k25 H.265). On its web portal it can show the low quality stream as HTML video, but for the high quality it requires Flash, for some reason. Did H.265 even exist before flash was deprecated? I'm pretty sure this camera company didn't exist when flash was deprecated. Maybe for the web portal it uses an MJPEG stream or something.
Flash was announced for deprecation in 2017 and UHD Blu Rays were in consumer hands in 2016 (H.265 having first been published in 2013) so it checks out. Of course most everyone stayed away from HEVC because of the licensing, including both browsers and Flash. Even in 2023 support in browsers is iffy and convoluted.
My wild guess is the original makers of the camera/encoding system assembled some sort of software decoding solution in Flash (since this was prior to WASM rollout/mass support) and the camera company might have just repackaged that solution in a later year.
62 comments
[ 0.27 ms ] story [ 234 ms ] threadWhile it has a long way to go, it does seem to have better traction than the prior efforts + it seems to be funded by several of the larger online (flash) game hosting places that have a need for it.
So, kind of expecting this will actually work to support most flash stuff over time. Securely this time around.
Guess then we'll be able to brush the dust off the old Flash creation tools? :)
circle.x = 50;
> project issued their first progress report with getting dozens of ActionScript 2 based games working
Dozens of _previously-broken_ games working. We had a majority of (single-player) AS2 games working for years now, with only several major missing features plaguing the remaining games. The biggest one of them (a very unintuitive way variables magically bind to "DOM" objects) was implemented very recently, hence the announcement.
As for AS3, you could say the interpreter support has finally reached the turning point. It took 2 years from the first AS3-related commit to the first simplest game to "kinda-sorta work", and within the next couple of months up to now, so many games started to work that we stopped being able to count them. So yeah, we're very optimistic here :)
EDIT: oh, also major shoutout to https://github.com/jindrapetrik/jpexs-decompiler which is effectively a full-blown low-level IDE for decompiling, debugging, analysing and manipulating (or even hand-crafting from scratch) SWFs. Without actually seeing all the ways the games abused Flash interpreter, it'd be borderline impossible to figure out Flash Player's various quirks. Further, it lets contributors create test SWFs without having to own old versions of Flash IDE.
That's very exciting!
Ruffle obviously isn't the first open source project to attempt a Flash player: there's Gnash, swfdec, Lightspark, and Shumway. All of these other projects were useful, but reached a local maxima, or stagnated, due to the sheer size of the task.
Flash/.swf (like HyperCard and some other cool-but-dead tech) seemed to hit a sweet spot that enabled many people to do cool things and share them, and I don't think anything (such as Roblox, Godot, etc. mentioned below) has adequately replaced it.
Since the intended deployment is browser / wasm the security is already taken care of.
Ruffle isn't limited to running inside a browser, so the security is warranted.
The original statement is that the browser is already secure not to care about secure implementation of Flash in Rust.
Meanwhile WebGL in browsers (Flash is likely to implemented in WebGL): https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=webgl
Or in one of Rust's unsafe calls / but in the compiler / etc
Flash wasn't the problem.
The infrastructure and tooling should make the easy path relatively benign.
The "problem" was that you could fuck up your SWF to incredible degrees and still get something that worked.
And now we finally made it. The 2d canvas context can fill paths, you can loop an audio file, you can even centre divs. You just gotta duck tape all that garbage together, manually through code, forget about animation authoring, in a dry as heck Node.js tooling ecosystem, and spend your nights replaying arguments you had with your co-workers about linting rules.
Instead of slow animated restaurant website we now have blogspam recipe sites or slow electron apps.
The web standards at the time could barely vertically centre a div, and many of the proponents of web standards had the gall to say the web standards would supersede Flash.
At least now that this same sort of crap is done in javascript, I can opt out of it by not enabling javascript and still usually have a workable website to read. But with flash there was no graceful degradation at all; you either ran flash and brought your computer to its knees, or you couldn't use the website at all. It was awful and the best thing Steve Jobs ever did was help nail the coffin shut.
> But with <javascript> there was no graceful degradation at all; you either ran <javacript> and brought your computer to its knees <with ads that cover 70% of page>, or you couldn't use the website at all.
I remember times when flash is everwhere. Usually flash was present as ads, videoplayer, sometime as full website, and sometime only as fancy-colorful menu.
Honestly, I don't see big difference between flash and javascript from user POV. Same sometime slowness, sometime lags, all the time ads, etc. etc.
It's still strange to think that Flash was the price that we paid for multi-touch smartphones.
Today it's possible for a teenager to write a decent 2D or 3D platformer (or whatever) that can run on a low-end machine at good framerates using tools like Roblox, Godot, etc. Flash still exists in the form of Adobe Animate, but it's competing for beginner hearts and minds on platforms with far more capabilities and far better communities.
Change is not necessarily regression. It's fun to remember and honor tools that were formative in our lives, but it's important to note that there are kids out there having the same experiences we did on today's platforms and tools.
That's an interesting point. I guess today's equivalent would be an embed? https://itch.io/updates/introducing-game-embeds
So not all is lost... for now.
The iteration time was mindblowing- Using Flash, I remember putting together Ludum Dare games in 6 hours, while everyone else was struggling at hour 48.
The new generation of devs never knew the levels of productivity that could be had with Flash.
FWIW, Flash (the authoring tool) became Adobe Animate¹ when Adobe started targeting the web. Because the authoring experience hasn't changed much in 20 years, you can watch Adobe Animate videos² to see how its timeline-based authoring worked.
¹ https://www.adobe.com/products/animate.html ² https://www.youtube.com/c/AdobeAnimate
Really disappointing. AS3 is a velocity killer.
This idea directed every aspect of the UX.
Basically Unity, but far less friction, less ceremony, less busywork.
Often the primary tool of the artists themselves.
Actionscript 2 would allow you to get some very complex behaviours with only a few lines of code. None of the endless boilerplate of C#. Literally: Double click, a few lines of script, new game entity ready.
Full animation / timeline / tween /scene support baked right in and scriptable.
Exporting was 2 clicks away and anyone with a web browser could play.
If you think online gambling is a problem now... well, wait until they see what could be done with that. (!)
It was buggy initially but now seems to work very well.
I’m a big fan, and echo the sentiments of others here who remember Flash fondly as a powerful and singularly accessible creative tool.
To anyone working on Ruffle: I value the work y’all are doing immensely!
It’s a huge pain to find the right version of browser, Java, flash, to be able to change a setting
ControlNet is presumably the future but if I wanted to get into computer animation in 2013, what tools existed?
> A Lottie is a JSON-based animation file format that allows you to ship animations on any platform as easily as shipping static assets. They are small files that work on any device and can scale up or down without pixelation. LottieFiles lets you create, edit, test, collaborate on and ship a Lottie in the easiest way possible.
My wild guess is the original makers of the camera/encoding system assembled some sort of software decoding solution in Flash (since this was prior to WASM rollout/mass support) and the camera company might have just repackaged that solution in a later year.