Still Have a Use for Adobe Flash? Ruffle Is Working to Safely Emulate It in Rust
phoronix.com
phoronix.com
> 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.
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!
circle.x = 50;
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? :)
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.
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.
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
It’s a huge pain to find the right version of browser, Java, flash, to be able to change a setting