(2) There are good open-source Flash runtimes.
(3) The selling points of Flash were the no-installation experience and really good development tools. Both aspects are somehow lacking today, so the momentum is gone. Maybe someone will produce a great and accessible tool to create comparable HTML5 experiences, and that thing will become popular. But not yet.
Or is the issue that the export-to-HTML5 functionality in those tools is just not fully done yet?
- Audio (while in some respect capable) is a nightmare, the interface is unstable and breaks about once a year in my experience.
- You can't do pixel-perfect rendering (People keep promising that you can - the last time I checked was a few months ago - the DOM rendering architecture is deeply wretched when it comes to pixel-access).
- No nice pipeline for integrating vector animations/art into games like there was in flash. (SVG exists, and I've used it in games myself, but it's a niche thing to do). For most engines nowadays you're baking your SVG art to sprite, but flash kinda took care of it for you - its approach to vector art+animation was great/very very powerful, and Adobe Animate allows for HTML5 animation export nowadays, but that's somewhat short of a full interactive app pipeline.
- many of the html runtimes for new engines (Unity for instance) feel waay heavier/more sluggish in the browser than flash games. Pauses during loading/weird interactions with the mouse, having to click before you can see anything is common behaviour. And often they don't perform so well as the flash runtime.
- easy to make fancy + good-looking interactive UIs. There's a reason Scaleform was so beloved for UIs even outside of the browser ( https://en.wikipedia.org/wiki/Scaleform_GFx ).
It's not obviously better than flash still. Flash was a very stable platform for many many years - really good with backwards compatibility (IIRC as a result of literally having secretly several copies of the runtime for different versions), and ...well, for instance Godot HTML5 builds as of last week crashes in safari for everyone it seems.
Source: I made bunch of flash games, and have made a bunch of HTML5 games, and have made a HTML5 game engine myself. And flash was just a better experience as a user for so many things (except for abuses) and as a developer. Outside of writing javascript yourself, haxe is probably the best replacement for flash (as well as being good in its own right). I have been playing with heaps this week actually and it's yeah pretty nice. But flash had a nicer pipeline.
Flash was weaker at 3d stuff, though - even back when flash was a thing I still went for Unity/hand-rolled for 3d games.
>You can't do pixel-perfect rendering
Sure you can, with canvas, and if you want to have absolutely perfect control, there's WebGL (and nice stuff like PixiJS)
>No nice pipeline for integrating vector animations/art into games
You can render SVG sprites into bitmaps, and use them in WebGL or canvas, as you mentioned, you needed to do this too in flash as well if you wanted decent performance.
>easy to make fancy + good-looking interactive UIs
If I remember correctly, most fancy game UIs were built with some framework, like flixel, which used low-level drawing primitives and built-up the UI from scratch. Alternatively you could use the full power of HTML+Js frameworks to build arbitrarily complex UIs and overlay them on your game scene.
>many of the html runtimes for new engines (Unity for instance) feel waay heavier/more sluggish in the browser
True, but they are meant to be, and meant for bigger games than flash/html5+js is. But for modern engines, HTML5 export sucks, there's no doubt about that. But that's a failure of execution, not technology. I remember Epic citadel a decade ago, which ran by compiling C++ to js with emscripten, and it worked pretty well:
https://www.youtube.com/watch?v=BV32Cs_CMqo
Also, there' a few Electron based indie games, most notably CrossCode, which is a fun, and technically pretty well executed game, and by the devs' own admission, it's built on pretty ancient tech.
I don't know if I understand, something like flash would probably do its own mixing and only use AudioBufferSourceNode. That seems to be what Emscripten uses and I haven't heard about any major breakages there.
>You can't do pixel-perfect rendering (People keep promising that you can - the last time I checked was a few months ago - the DOM rendering architecture is deeply wretched when it comes to pixel-access).
You can though, with WebGL. The point is you avoid the DOM just like what the Flash VM did.
>and Adobe Animate allows for HTML5 animation export nowadays, but that's somewhat short of a full interactive app pipeline.
This is what I'm asking though. How is it different? It seems the pipeline is completely the same except instead of exporting to SWF you export to HTML5.
> And often they don't perform so well as the flash runtime.
I'm actually asking why can't you still use a port of the flash runtime that's done in WASM. I think you misunderstand my question. If the compatibility was there you could also get Scaleform to work with no changes.
Agreed that the “export to browser” in Unity et al. is usually junk.
Is Adobe Animate free (or easy to crack) so that an interested kid would just start with it and some tutorial, and could make something moderately cool in an afternoon?