62 comments

[ 0.27 ms ] story [ 234 ms ] thread
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!
Same here. I remember the first time actually grasping objects and class members:

circle.x = 50;

Some extra notes:

> 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.

>"Due to the memory safety guarantees of Rust, they believe this is a secure implementation of Flash."

Since the intended deployment is browser / wasm the security is already taken care of.

> "Ruffle runs natively on all modern operating systems as a standalone application"

Ruffle isn't limited to running inside a browser, so the security is warranted.

That's true, of course, but hardly the purpose of ruffle.
Until a memory overflow in the monstrous machine that is the web browser will be exploited in 5 seconds at the next Black Hat Conference.
In that case attackers can simply not use rust or ruffle to craft their malicious wasm.
>"in the monstrous machine that is the web browser"

Or in one of Rust's unsafe calls / but in the compiler / etc

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.
Hypercard died twice, once at Apple's hands, and again at Adobe's.
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.
(comment deleted)
The same devs who write that restaurant website produce the same horrifically inefficient code in Javascript now.

Flash wasn't the problem.

Flash was part of that problem.

The infrastructure and tooling should make the easy path relatively benign.

Tye easy path was benign in Flash! Flash produced elegant, compact output if you executes the basics.

The "problem" was that you could fuck up your SWF to incredible degrees and still get something that worked.

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.

If you allow me....

> 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.

Huge difference IMO. JS can be used in moderation. That did not apply to Flash back in the day.
>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.

It's still strange to think that Flash was the price that we paid for multi-touch smartphones.

> …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.
> Critically, there's no modern equivalent for the .swf file that's easy to share and post on random websites.

That's an interesting point. I guess today's equivalent would be an embed? https://itch.io/updates/introducing-game-embeds

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.

So not all is lost... for now.

The unity exes would be the closest thing
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.
Also I miss Actionscript. Typescript tries but it just isn’t the same.
That exact same possibility exists right now, it's just called Adobe Animate now.
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.

¹ https://www.adobe.com/products/animate.html ² https://www.youtube.com/c/AdobeAnimate

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.
Ugh they removed Actionscript 2.

Really disappointing. AS3 is a velocity killer.

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.
It was an art tool first and foremost.

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.

Uh oh, here's a bad idea. "AI" (heh) flash generated games could become feasible.

If you think online gambling is a problem now... well, wait until they see what could be done with that. (!)

That exact same outlet still exists, it's just called Adobe Animate now.
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!

Some industrial equipment requires flash or Java for the web based configuration UI. Even Ethernet switches

It’s a huge pain to find the right version of browser, Java, flash, to be able to change a setting

What ended up replacing Flash [for non-interactive animation]? I could never find a straight answer to this.

ControlNet is presumably the future but if I wanted to get into computer animation in 2013, what tools existed?

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.
Adobe didn't dump Flash animation, they just renamed it to Animate.
There's also https://lottiefiles.com/

> 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 have a feeling that recent SSR/hydration/signals in web dev are slowly rediscovering flash streamable everything in a new form.
Flash dev work was my first exposure to signals
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.
I just tried it out and apparently the video player uses ActionScript 3. Oh well, I just use VLC anyway.
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.