8 ms·
Ruffle – A Flash Player emulator written in Rust
- lxe 6y agoThose sample files.. bring back memories. I think we took a step backwards in serving vector art/animation on the web. When YouTube replaced Flash, we've probably wasted petabytes of bandwidth serving rasterized content when Flash or a similar format would have been much more effective.
- mofosyne 6y agoA standard at least for encoding vector animation would be nice. Also needs to be not as bulky as having svg frame per frame, etc...
- jazzyjackson 6y agoI have a similar problem in mind, it could be an SVG served in a web browser, and then instead of frames you would have an event series of updates, kind of like MIDI does for music: turns certain notes on and off at certain times. So I could have a timestamped list of updates to apply to the SVG (move to x / y coordinate, apply this filter, append these childNodes) -- just use CSS transition to interpolate the movement from one coordinate to the next. You could stream these updates from the server at very low bandwidth.
- matt_kantor 6y agoI've never authored SVGs so this might be a dumb question, but couldn't you use CSS keyframe animations for this? You wouldn't get streaming, but what about the rest?
- ghayes 6y agoNot sure if this went far enough (even before it was deprecated), but SMIL was a standard for vector animation: https://developer.mozilla.org/en-US/docs/Web/SVG/SVG_animation_with_SMIL https://developer.mozilla.org/en-US/docs/Web/SVG/SVG_animati...
- chrismorgan 6y agoThough as noted there, Chrome recanted on its 2015 attempt at killing SMIL—and it was only ever Chrome that were labelling SMIL as deprecated, no one else does so. Four years after that, I haven’t heard any more talk about killing it. Notwithstanding that, CSS is now able to cover a lot more of the SMIL use cases than it was then.
- fulafel 6y agoSVG is much better at vector art use cases. Flash was horrible from user pov (constant os and browser compatibility problems, unending stream of weekly "ads can pwn your computer" level security holes, proprietary black box nature, ate your battery, hard to procedurally generate, didn't integrate with the web and dom, etc etc).
- pbronez 6y agoAll true, but there’s such a massive library of content for Flash that they must have done _something_ right. Maybe it was just luck, maybe timing, but it’s amazing to me that so many games and videos are caught in this particular technical dead end. My understanding is that HTML5 just never offered the same primitives for content creation, but I’m unsure why there was no economic incentive to create them.
- rictic 6y agoThe flash editor was high quality, and catered to animators.
- kmeisthax 6y agoAdobe Flash/Animate provided a best-in-class animation and vector art package that still has little competition. Animate can actually export to HTML5, but they didn't bother using the SVG/SMIL animation model. Instead, they pre-render everything as a series of spritesheets and render them to a canvas. I can see why they did this - the SVG and canvas vector rendering models are different enough to make blindly rendering SWF content to it cause rendering artifacts. (It's one of our biggest longstanding bugs in Ruffle - canvas masks just look weird.) However, Adobe could have ameliorated this either in the exporter, the authoring environment, or by pushing for Flash-style mask options in web standards that deal with vector rendering. Instead, they went with the far worse but quicker option of prerendering so they could say "hey we totally do HTML5 now".
- untog 6y agoI’m not sure that’s true when factoring in performance. Every time I’ve tried to animate SVG it’s been an absolute CPU hog in a way Flash never was. Not saying we should stick with Flash but I don’t think SVGs are a complete answer today either.
- Wowfunhappy 6y agoAdobe Animate, which is basically just Adobe Flash with a different name, can export htm5 for the web. I haven’t used it extensively, but it seems to work well.
- bitwize 6y agoThere was a little Strong Bad skit about Ruffle posted to @StrongBadActual twitter... gives me hope that Homestar Runner's content will be preserved as is.
- waxpancake 6y agoThe Brothers Chaps will probably end up switching from Flash to Ruffle on their own site eventually, but until then, the Internet Archive has almost all the Strong Bad Emails archived here playable with Ruffle. https://archive.org/details/softwarelibrary_flash_strongbad https://archive.org/details/softwarelibrary_flash_strongbad
- mwill 6y agoIts funny to me to see Newgrounds and New York Times listed as diamond sponsors to the same project but makes sense.
- qzw 6y agoMan, I would love it if this could be integrated into Steam or GoG along with a curated collection of great flash games.
- irrational 6y agoShould have called it Rash.
- ruffle 6y agoNeat
- ivanceras 6y agoRuffle is also used in archived.org to play old swf files.
- tony 6y agoWhat's Newgrounds affiliation with Ruffle? Did they create it? To test it out: https://www.newgrounds.com/portal/view/113883 https://www.newgrounds.com/portal/view/113883 No flash player required. Works in HTML 5. Loaded slow though. There's a cool song in it: Splashdown - So Ha Is Albino Blacksheep in on the ruffle.rs stuff? Remember them? They were always pioneering CSS stuff back in the 2000's.
- dlbucci 6y agoI think Mike from Newgrounds is the lead developer on the project, or at least the guy who created it.
- thisAintReal 6y agoCheck ruffle githubpage for orginal creator. Mike is sponsoring this development, but not developing the project.
- kmeisthax 6y agoMike started the project - I know this because I'm one of the developers (others include CUB3D and Dinnerbone) and his commits go back to 2016.
- ehsankia 6y agoI did noticed the slow load times, but honestly a small cost to pay. I wouldn't be surprised if most of it is related to loading and warming up webassembly.
- michaelchisari 6y agoTried Super Mario Crossover and unfortunately it freezes at the first screen, but it gives me hope that some day I can play it again on a modern browser.
- Wowfunhappy 6y agoIf you just want to play the game, consider using Flash Projector, a standalone Adobe program (separate from the browser) which will open and play swf files.
- sterlind 6y agoI spent today hacking on it! Trying to get all the Homestuck movies to work. The codebase seems pretty accessible so far. Fixed one bug where it couldn't render shapes with >65535 vertices. It's really rewarding watching movies light up as you fix things.
- kibwen 6y agoBack when Shumway was under development I remember using the first big Homestuck walkaround flash (https://www.homestuck.com/story/1358?fl=1 https://www.homestuck.com/story/1358?fl=1) to put it through its paces and found it to be unbearably slow to the point of unplayability. If Ruffle is capable of running those at any reasonable speed then that would demonstrate real progress over what Shumway achieved.
- sterlind 6y agoLooking at the code, Shumway seems amazingly complete vs. Ruffle. Ruffle has only a tiny skeleton of AS3 support (only the VM opcodes and some of the MovieClip class), while Shumway seems to implement a huge chunk of the library classes. Maybe using wasm Rust with WebGPU acceleration will make it faster than Shumway. Remarkable to me how much effort must have been put into Shumway, though..
- cpeterso 6y agoShumway didn’t need to implement a full ActionScript virtual machine because it converted ActionScript bytecode to JavaScript and eval’ing it at runtime, leveraging both the JavaScript engine’s runtime and JIT.
- MaxBarraclough 6y agoIf it was able to map arbitrary ActionScript to JavaScript, doesn't that count as implementing a full ActionScript VM?
- 6y ago
- LASR 6y agoFlash player emulator written in Rust...compiled to WebAssembly and running in the browser? I like how things like this come out so frequently these days like it’s no big deal.
- swinglock 6y agoAt what point does a flash player emulator just become a flash player?
- srgpqt 6y agoWhen they can be used as drop-in replacement to play actual flash content on websites. Which may be possible to do as a browser extension.. ruffle does have a web version but it requires the website owner to explicitly include it.
- deleted 6y ago[deleted]
- throwaway189262 6y agoWith Rust, you could re-implement 99% of flash player in WASM with some JS shims
- smerik 6y agoI see Ruffle a lot, but I hardly see a mention of AwayFL on here: https://news.ycombinator.com/item?id=25243958 https://news.ycombinator.com/item?id=25243958
- mdaniel 6y agoI don't follow what that self post is promoting; only by searching for that term did the GitHub org show up -- a very odd thing to omit from a HN post: https://github.com/awayfl https://github.com/awayfl
- IceWreck 6y agohttps://www.coolmathgames.com https://www.coolmathgames.com is also using this, nice !
- appstorelottery 6y agoWow. Might be enterprise opportunities for all those Flex based apps buried the the hell of past broken promises from Adobe :-) I developed an ERP with a flex client back when Adobe and Apple went to war... I’ve been warning the client for years that flash will sunset...
- zo1 6y agoYou're not the only one, there are some really big companies out there that rely on Flash and Flex. https://mybroadband.co.za/news/internet/221408-sars-efiling-will-move-away-from-adobe-flash.html https://mybroadband.co.za/news/internet/221408-sars-efiling-...
- _Microft 6y agoIf you need a Flash file to try this with, here you go. At least on Windows, you can paste the URL directly into the file name field of the "Open local file" on the demo page. https://github.com/claus/as3swf/blob/master/examples/dumps/AYB.swf?raw=true https://github.com/claus/as3swf/blob/master/examples/dumps/A...
- mdaniel 6y agoIf you haven't seen it, GH has a non-querystring URL that will likely work in places that are not tolerant of either querystrings or special characters in "filenames": https://github.com/claus/as3swf/raw/master/examples/dumps/AYB.swf https://github.com/claus/as3swf/raw/master/examples/dumps/AY...
- _Microft 6y agoGood idea, thanks!
- mnahkies 6y agoThis is great for preserving all the old content. It'd be cool to see a follow up project for an ide to author new stuff - as a kid the timeline system made producing 2d games accessible in a way that I haven't seen with JavaScript engines on the modern web. Being able to just draw and animate then slap some scripts on it was a really interactive way to learn
- apignotti 6y agoA FOSS Flash Player implementation has certainly value, and I hope to have contributed to the cause by starting the Lightspark project years ago. The sad reality is that the Flash runtime is massive and under-documented. The best approach for Flash preservation in the medium term is using _actual emulation_ to run the binary player itself. Further reading: https://medium.com/leaningtech/preserving-flash-content-with-webassembly-done-right-eb6838b7e36f https://medium.com/leaningtech/preserving-flash-content-with... https://medium.com/leaningtech/running-flash-in-webassembly-using-cheerpx-an-update-d500b6fbc44e https://medium.com/leaningtech/running-flash-in-webassembly-... https://medium.com/leaningtech/announcing-cheerpx-for-flash-a-solution-to-extend-the-life-of-flash-applications-post-2020-8fd35483ee35 https://medium.com/leaningtech/announcing-cheerpx-for-flash-... https://medium.com/leaningtech/cheerpx-for-flash-now-generally-available-a20bc2a5eea6 https://medium.com/leaningtech/cheerpx-for-flash-now-general... For questions: https://twitter.com/alexpignotti https://twitter.com/alexpignotti
- q3k 6y agoSo, to archive/preserve content that was lost because it relied on a proprietary closed-source technology we should be relying on _your_ proprietary closed-source technology? Please. I understand you're trying to make a living here, but being able to use F/LOSS software is absolutely critical for the preservation movement. “Not-for-profit, charitable and educational organisations can benefit from discounted rates.”. Yeah, no, thank you.
- foldr 6y agoHopefully charitable and educational organisations aren't just waiting for someone else to do the work for them for free. If they don't like this approach they can pay people to work on improving open source flash implementations.
- SXX 6y agoI just curious couldn't someone just write down missing part of documentstion looking at something like Scaleform source code? So someone else can make clean room implementation using the doc. Scaleform impplementation of Flash player always looked really decent to me.
- shubhamjain 6y agoI have unfinished project to revive the Flash Games I played as a kid using Ruffle JS. Make them accessible through a simple website. Games like Eggs[1] used to be my favorite pastimes. Of course, we have moved on to better entertainment, but there's still value in these short games, something you can just play for five minutes to take a break from work. I would love to play these games, not just for the nostalgia but being quick, small, and not too addictive. Hopefully, I am not alone. I think, HTML5 would have done the same job, but the number of HTML5 games is surprisingly low in comparison and wesbites are generally ad-infested. [1]: http://www.vagenisonline.com/flash/eggs.html http://www.vagenisonline.com/flash/eggs.html
- gitgud 6y agoAnyone know of any animation editing software similar to the original Flash MX?
- Wowfunhappy 6y agoIs Adobe Animate insufficient?
- gitgud 6y agoYeah that looks cool, hadn't heard of that one. I just found an open-source alternative too: https://www.synfig.org/ https://www.synfig.org/
- Wowfunhappy 6y agoI mentioned Adobe Animate because it’s actually a rebranded Adobe Flash.
- k__ 6y agoHalf-OT: Does anyone have an idea how the WASM interface types proposal is coming along in terms of actual implementation?
- haunter 6y agoI really really wish Flash MX 2004 were made free to download by Adobe. That was one of the greatest piece of software they (well Macromedia) ever released. The format is dead, basically abandonware, they should make it available. Adobe already released the universal activation keys cause they shutdown the servers but it's still not legal to use if you haven't bought an original copy https://helpx.adobe.com/x-productkb/policy-pricing/macromedia-legacy-activation-error.html https://helpx.adobe.com/x-productkb/policy-pricing/macromedi...
- tombert 6y agoI think they wouldn’t do that since they might feel it’s competitive with their current Adobe Animate product.
- grishka 6y ago> but it's still not legal to use if you haven't bought an original copy But they no longer sell it anyway? And they don't say any of that on that page. If they really wanted to make sure only those who bought it previously got those keys, they'd require logging in with an account you bought it with to see that page.
- haunter 6y agoI'm not sure how does that work legally. For example you can still download the installer directly from them [0] and it's an universal one. If you don't have a key it works in trial mode, if you do have one you can unlock the full version. http://download.macromedia.com/pub/flash/esd/flashmx2004_trial_en_win.zip http://download.macromedia.com/pub/flash/esd/flashmx2004_tri...
- grishka 6y agoYou can download the installer from an Adobe server, and Adobe also provides the key to activate it, with no payment or authentication required. Nowhere does it say you need to have paid for it back when they sold it. In my opinion, this means they're officially giving it away for free. FWIW you could also consider it abandonware because, again, it's not sold any more so you can't pay for it even if you wanted to.
- joshlk 6y agoHow is this achieved? Is the flash API/architecture open knowledge?
- grishka 6y agoAs with any sufficiently popular proprietary file format, gonna bet it was reverse engineered a dozen times by different people independently. But maybe there are official specs, I'm not sure. edit: there is an official spec and it's 243 pages https://www.adobe.com/devnet/swf.html https://www.adobe.com/devnet/swf.html
- raphlinus 6y agoI could research this myself, but will ask lazy HN instead. One of the big challenges in presenting Flash well is "conflation artifacts," which are the seams that appear when compositing antialiased vector shapes. The old software renderer in Flash had very clever techniques for avoiding these, but browser 2D renderers generally don't. (The actual story is a bit more complex, as Skia is careful to avoid conflation artifacts within a shape, but the compositing rules in the HTML5 spec almost seem to require them for compositing multiple shapes). Thus, Shumway and the other Flash emulators had artifacts which detracted from the visual quality. A particularly good paper explaining the problem (and how the NV_path_rendering extension solves it) is "GPU-accelerated Path Rendering", Kilgard and Bolz, 2012. Does Ruffle solve these? If so, how?
- muizelaar 6y agoIt doesn't solve them. See https://github.com/ruffle-rs/ruffle/issues/26 https://github.com/ruffle-rs/ruffle/issues/26 Here's a flash style solution to the problem: https://github.com/jrmuizel/full-scene-rasterizer https://github.com/jrmuizel/full-scene-rasterizer
- raphlinus 6y agoThanks, good to know. I am interested in a fully GPU-accelerated solution, but it is not easy, and I make no promises if or when I will get there. I would be interested in discussing my ideas.
- raphlinus 6y agoAnd a self-followup: I wrote https://github.com/linebender/piet-gpu/issues/49 https://github.com/linebender/piet-gpu/issues/49 to track this in piet-gpu.
- deleted 6y ago[deleted]
- anthk 6y agoTHis is not an emulator, this is another Flash interpreter.