<http://www.flashgamehistory.com/> &gt; “Being a ...
# thinking-together
m
http://www.flashgamehistory.com/
“Being a creator of and steward for Flash as a platform was a privilege. I felt that we were building a pencil and it was the community of creators that was responsible for the creation of Flash as a creative form. Our job as stewards was to anticipate needs, listen and make sure it worked. The core idea of having an accessible system for creating interactive media content that works across a range of devices is still a powerful one. Just like pencil and paper is a powerful tool. I hope it will happen again. Many years ago, I had the idea of Flash Forever. How can we treat what is created in Flash as valuable information like a book? Sadly, the need to drive business growth by adding features and capabilities, trumped the need for permanence. It’s great that Flash still lives in the skills and experiences of the community of people who learned and grew with it.”
-- Jonathan Gay, Creator of Flash
❤️ 6
g
I'm still a little curious why there is no market for a flash like editor that generated HTML/JS apps. Two things come to mind. 1) there is no way to distribute the creations as a single file like you could with flash and a swf file. It would be a minimum of 3 files, one HTML, one player file (probably too big), one data files. Where as with flash you generally had the player installed. Unity has this issue. the smallest web app is 5-6meg just for the base engine. 2) pre smartphones there was effective only one platform. a desktop PC with a keyboard + mouse + landscape orientation screen. Now the major market is smartphones and in particular Apple has argrubly actively discouraged browser based games by not supporting the html standards that could make them a good experience. Of course a flash like editor could export to a native app though maybe at that level it can't compete with unity.
s
I forget what it was called, but was work on this, in particular some people were making a format for distributing html5 games and animations, basically by zipping up the files
i
@gman I think there is a market for that. It'd just cost a lot to build a modern equivalent of Flash (the authoring tool) that publishes efficiently to the web. Not amenable to a startup, and I don't think most existing companies have the culture for it. This problem is what I've spent much of the last decade working on at my job, but at a small scale, focused just on making an alternative to Flash for our unique needs. We used to be a 100% Flash media shop, and now we still use Flash Animate to draw our artwork, but export to SVG and use CoffeeScript as a successor to ActionScript. The final animation is a self-contained HTML file, with about 50kb of framework code (that can be inlined or served by a CDN). I just posted a big comment about our production process, if you're interested. My FoC project is meant to be a successor to our current framework, so in that way it's meant to be a spiritual descendent of Flash. We're interested in making some money from it, too, so we're staring down that "why is there no market" question. Like our current framework, the plan is for there to be no player — just small, self-contained HTML files. The plan is to compete with non-consumption, or perhaps to compete with "hire a multimedia team". Definitely looking at Unity as an example, but not going to swim in that part of the pool.
r
Actionscript was my first language. I miss how easily you could create and publish unique interfaces and games, and would like to see something like it again.
❤️ 2
Also, here's a related GDC talk. It goes into early approaches to advertising / monetisation, preventing piracy, publishing platforms - super interesting.

https://youtu.be/65crLKNQR0E

👀 1
r
1) there is no way to distribute the creations as a single file like you could with flash and a swf file. It would be a minimum of 3 files, one HTML, one player file (probably too big), one data files. Where as with flash you generally had the player installed.
Isn't this what electron apps do? It's the same problem as Unity. You get a single distribution format, but it bundles an entire damn web browser...
i
I think that's an own-goal on the part of Electron and Unity. If you want to produce media for the web, you should leverage the web platform — and it takes very little code to do that. Even ThreeJS seems stuffed to the gills with things that aren't needed by most projects (though, to be fair, I haven't seen what happens if you tree shake it).
r
Before I hijack the thread further (sorry 😛 ) I want to say, great article, I also grew up on Flash games, and I'm glad it's being given the historical curation and respect it deserves.
I think there is a market for that. It'd just cost a lot to build a modern equivalent of Flash (the authoring tool) that publishes efficiently to the web. Not amenable to a startup, and I don't think most existing companies have the culture for it.
I feel like this discussion needs some clarification. We are talking about "Flash" as this monolithic thing, but it was made up of a few parts that made it successful. • A well designed vector animation tool that was intuitive for artists (relatively speaking) • An integrated scripting language • A compact and widely accessible distribution format @gman in particular made this implication that distribution is intimately tied to the editor. Those are weird things to conflate together imo... Adobe Animate CC, the modern Flash ancestor in fact has an export to JS/HTML5 option IIRC... I'm not sure how good it is though.
🤔 1
r
I do really like the combo for drawing graphics with the code editor (I suppose this is how unity works). Currently to get complex graphics in to webGL I need to draw it export to svg then convert the svg into a mesh - and then reading the code, you can't really see what it really "is". Maybe I should be just doing my project in unity 🤔
i
@Ray Imber
Adobe Animate CC, the modern Flash ancestor in fact has an export to JS/HTML5 option IIRC... I'm not sure how good it is though.
It's bad, or at least it was when I evaluated it. The output is bloated and doesn't offer much in the way of interoperability — less than even SWF content (which had an API you could tap into, and had good semantics around responsiveness, etc)
😢 1
r
I had a feeling that was the case
i
@Ryan King Unity doesn't have art tools in it. Hard to blame them, considering how good Maya/Modo/etc are, and how much insanely more complicated it'd be to put that stuff inside Unity itself. It does have a scene you can assemble your externally-created graphic assets in, which is, I think, the modicum.
😢 1
@Ray Imber
@gman in particular made this implication that distribution is intimately tied to the editor. Those are weird things to conflate together imo...
I mean, they're conflated together by history — Flash was both of those things. A modern successor to Flash might also conflate those things. It's not necessary, but it might be beneficial. Look at Unreal — the engine and distribution platform (Epic Games Store) are technically separate, but they're designed to be mutually beneficial. It's also sort of unavoidable to consider the output format when creating an authoring tool. And if your authoring tool is creating content for the web, you want the output format to be optimized for portability — a single file, or at least something that's easy to link to or easy to embed in a blog post. And something that anyone can view without a plugin. If you aren't thinking about that when designing an authoring tool, you're going to end up in a sad place.
r
@Ivan Reese Yeah that's reasonable. I think it's more being able to click an object on the screen, and see my code inside that object showing it's behaviour. That fits better with how my brain works than files do.
💯 1
👍 1
r
I mean, they're conflated together by history
It's not necessary, but it might be beneficial.
I think this is the more important point... Was Flash successful because these things were tied together, or is that just historical accident? It's hard to compare with the Epic Games Store imo. It's too new. If you look at Steam as a counter point, it's very successful as a distribution platform, and is very isolated from the content creation itself.
👍 1
r
If you're interested, here's some ThreeJS alternatives I'm keeping an eye on. They're not flash but they're getting easier to code with at least. Ogl - a striped back webgl library closer to writing webGL but there's something nice and simple about it Troika - a framework built on top of ThreeJS, it's declarative and a bit more dom-like. I'd like to see further abstractions like this.
i
@Ray Imber Yeah, you're right — Unreal/Epic is a bad example. @gman isn't talking about distribution in the sense of "a store", he's talking about the file format. Flash had to create its own file format and player because there was no built-in functionality for multimedia on the web. There wasn't even audio — remember RealPlayer? There were other plugins they could have hooked into (Java Applets, say) but those sucked. What we can have now (though nobody has done a good job of it) is an authoring tool that can spit out self-contained files that work anywhere (on the web), thanks to HTML and the web platform. So as long as your authoring tool produces nicely self-contained single HTML files, you're a lot closer to having that particular question answered, without needing a boil the ocean "our plugin is on 97% of PCs" solution. So the distribution is "tied" to the editor only insofar as the editor needs to do just that — spit out files that people can actually use.
👍 1
💯 1
r
So the distribution is "tied" to the editor only insofar as the editor needs to do just that — spit out files that people can actually use
@Ivan Reese I agree. Exactly. I basically agree with everything you said. I think my problem with @gman's original argument was that he was looking at it backwards from my view point. The problem has nothing to do with the distribution format as a technology... It's not a technology problem, it's a social / market problem. It's not that there is no market, it's like you said, there is a market on the consumer side. The problem is that there is no incentive on the business side to build it. In that way, Flash was a product of it's time. Unfortunately the world is a different place now. Maybe the modern web will produce a modern successor. All the parts are there... 😄
i
I hope this community will produce a modern successor. All the parts are here...
amiga tick 3
r
People have tried to recreate the magic of Flash (and are still trying.) There are a huge amount of JS engines out there both 2D and 3D. Most are engines only, they don't have any art tools (which goes back to my point about not conflating things together, at least being clear about the parts.) Unity has a "web" option but it's a proprietary plugin. Basically everything bad about Flash, so I'm not going to count that. Godot has an export to HTML5/JS option. IDK how good it is though (I assume it's probably not much better than Adobe Animate honestly...) There are a few other less known engines that are trying: https://gdevelop-app.com/ https://playcanvas.com/ Nothing has really taken off though. There is some magic combination of features and social effects that made Flash so successful. What is the magic formula? 😛
g
I want to say all the parts are not there. You can't currently make a small single file embeddable multi-media experience with a single HTML file. You could encode your video/audio as dataURLs but the file will be HUGE. You could maybe generate some vector graphics animations in a single HTML file but not your average flash game. Further, flash's format was compat, arguably more than you'll get from HTML without some kind of player (so bloating your page). Other functionally you can't get from HTML in a single file is streaming. Flash could have a 2meg file but after download 50k it was running and downloading the rest in the background. Again to that in HTML requires a player and at least 2-3 files. The HTML itself, the player, either embedded or referenced, and then the data and the data has to be separate else you can't stream Whether a single file format is important or not is debatable but it's certainly helps things go viral if they can easily be put anywhere by anyone? I suppose hosting your multi-file creation somewhere and letting people embed it would work that costs $$$. Maybe something like youflashtube.com and have the editor either online or export directly. I can imagine in some alternate reality that might be successful but it wouldn't be remotely the same as flash was if only because a hosted experience will be censored in various ways As for unity, unity's web player has been long dead. Unity exports to HTML5/WASM for years now but the minimum size for hello world is 4meg which is basically Unity's engine so effectively it's as if every app is downloading the flash player. I know they are working on shrinking that significantly but I don't know how far along they are. It's also not mobile friendly which which may or may not matter. If you're trying to make a profit by selling an app/game then you're happy with exporting a native app. If you're trying to make some viral experience that people share with just a link like they did with flash then not being mobile browser friendly is a non-starter As for three.js, once you gzip it it's only 150k at the moment so barely a single image worth of data on most pages. It doesn't "tree shake" at all at the moment because if legacy code design but they are working on it. But three.js is not even a small amount of flash's functionality. It's just a 3d engine not an app/game engine.
Here is unity's plan for being able to export smaller HTML apps from Unity https://unity.com/solutions/instant-games And a live example https://tiny.vision/demos/TinyRacing/Wasm/TinyRacing.html It's still 4meg until the page shows anything at the moment.
j
Somewhat off-topic reply to @Ryan King: if you enjoy ClojureScript, the Geom library has a much nicer API than ThreeJS. Here's a small example I build some years ago: http://proscenium.rusher.com/geometer/ Source code: https://github.com/jackrusher/geometer
🙌 1
r
@gman
I want to say all the parts are not there.
Remember, this is "Future of Code", not "Today of Code". You are giving more examples of finished products that are not all there. These are good examples of what is not working right now, but none of these examples show any fundamental missing pieces for why a new flash like platform can't work. From a distribution perspective, I think all the technological pieces are there. Even before web assembly, I think the parts where there. The death of flash is one of the big reasons web browsers started to grow the necessary features to replace flash(for better or worse). Web assembly might be the final piece, because it allows a single binary blob to be easily embedded and run. We just need to get better at compression (which is actively being worked on.) @gman My question for you is, if you think all the pieces are not there. What pieces do you think are missing? Not which product is missing, we wouldn't be having this discussion if a finished product already existed, but which technological or social pieces are missing?
I was thinking about this, and while it's very different in a lot of ways, I think the Pico-8 community has succeeded with a similar spirit to the old Flash games communities, even if it is a bit more niche and smaller scale.
👍 2
g
I said above I think being able to distribute in one file might be a reason things haven't happened. So that feature is missing. WASM doesn't work with one file. In fact typically it's min 3 files not including assets. One HTML file, one script with all the JS<->WASM glue. One wasm file. Pico-8 has definitely has some of the vibe of flash games but it's a way higher barrier to entry than flash ever was. There's no doing anything in Pico-8 without code but there was plenty of flash with no or minimal code. So I think 4 things are missing 1. being able to distribute as a single file. not entirely sure this is important but feel it's possible it is important 2. being able to stream the assets from that single file vs having to wait for the entire file to download. If 1 is important than so is this. 3. working well on mobile in the browser (this is only semi-possible because Apple has so far refused to implement the needed APIs. In particular the fullscreen API so a webpage can go fullscreen (or close to it ) like a native app can and the orientation API so a webpage can force landscape view. Android Chrome/Firefox has had both of these for 6+ years and it hasn't ruined the browsing experience there. 4. A well designed non-programmer friendly app for making things I also feel it really is about the app. Unity and Unreal are not doing anything that game engines didn't do in 2003 but the fact that they package it all up so a non-programmer can build a Dear Esther type of game with no programming or even with a little programming is what made current explosion of games. The same was true for flash IMO. It wasn't just that the tech existed. It's that there was an app that let people easily use tech to make stuff. It could also be though the flash was just something that happened and it's time has passed. I found this site yesterday http://poki.com/ It's got a ton of games that seem right out of the flash days except with higher-res art 😛 also https://itch.io is full indie games and many run in the browser, though likely desktop only unfortunately.
o
Just to add kindly precision (but I am not sure if this is really important for the discussion):
WASM doesn't work with one file. In fact typically it's min 3 files not including assets. One HTML file, one script with all the JS<->WASM glue. One wasm file.
Technically, if needed one can bundle all this in one HTML file, with a script tag for the JavaScript / WASM glue, and with the WebAssembly binary content encoded in base64 somewhere in the script or in a custom HTML tag.
4
r
I forgot about itch.io! That is another great example of a modern Flash games like market! poke.com looks interesting as well.
but it's a way higher barrier to entry than flash ever was. There's no doing anything in Pico-8 without code but there was plenty of flash with no or minimal code.
Good point. I can see that much of your argument is about barrier to entry and ease of use. 👍 Now about your 4 things. I'm going to disagree with you on a few points:
1. being able to distribute as a single file. not entirely sure this is important but feel it's possible it is important
I would like to point out that Flash was not that different. In theory you could just "play a swf" file directly, but nobody did that. You still had to host a website with an HTML file (and probably a CSS file), and embed the swf file. And the user had to download or update their flash player on a regular basis. In fact, nobody did that either! They uploaded their swf to Newgrounds, who did all the hosting work for them. The key here is the marketplace (Newgrounds). That's not much different than the JS/WASM, HTML, CSS combo we have today. It's not really just "one file"... An important part of the equation was that Newgrounds did a lot of that hosting work for you as a content creator. There is no reason the same kind of thing couldn't be done for WASM or modern JS. In fact, that's what itch.io and Pico-8 are doing! I would also like to point out that you can embedd assets in the WASM binary! Modern assets like 3D models and bitmap textures are also very different from Vector based assets (I will talk more about this below). The key is that there was a convenient way to get from the content creation tool to the hosting site easily. That's a really good point! I just want to point out that there is nothing technologically preventing us from building something just as convenient today, it just hasn't been built yet...
being able to stream the assets from that single file vs having to wait for the entire file to download. If 1 is important than so is this.
I am actually not sure what you mean by stream assets. It's been a long time since I programmed with flash (I did back in the day, but it was a looong time ago), but I'm pretty sure it didn't "stream" anything, at least not in the modern sense of sending bytes over a network a little bit at a time. Youtube didn't even exist until 2005, and when Youtube started, streaming technology was still pretty bad... If I'm wrong, please give me a source and correct me. I think what you mean is compression. Flash was good at compression. It also had good "time to first interaction" latency. I totally agree that "time to first interaction" is super important and extremely under appreciated with modern computers. It's a big pet peeve of mine (and anyone who follows Jon Blow, Casey Muratori, and the handmade philosophy)., I would like to point out the Flash assets were almost entirely vector based. Vectors compress extremely well! They are just control points for a Bezier curve equation. The internet also had much less bandwidth during the height of Flash, so in general the assets were smaller. I remember Flash animations that had a lot of bitmap assets instead of vectors. You got loading screens just as bad as today (worse in some cases). The situation is actually better today for the end user from the tech standpoint. The internet has orders of magnitude more bandwidth, and the browser apis let us do actual proper streaming of data (through js download requests or websockets).
working well on mobile in the browser (this is only semi-possible because Apple has so far refused to implement the needed APIs. In particular the fullscreen API so a webpage can go fullscreen (or close to it ) like a native app can and the orientation API so a webpage can force landscape view. Android Chrome/Firefox has had both of these for 6+ years and it hasn't ruined the browsing experience there.
Yeah. Modern Apple sucks. I agree. lol
A well designed non-programmer friendly app for making things
It wasn't just that the tech existed. It's that there was an app that let people easily use tech to make stuff.
I think you make a really good point here. I would add that it's not just about the content creation app, but also the hosting and distribution sites like Newgrounds. Newgrounds was a "proto-app-store" in many ways.
It could also be though the flash was just something that happened and it's time has passed.
You might be right here. It seems like the big game engines like Unity, and the proprietary app stores, both on mobile and desktop, have taken over the hole left by Flash.
My TLDR; description of the "ideal system" we are describing looks like this: • A content creation tool that is polished and intuitive for artists (normies? non-technical people?) • with low barrier to entry scripting / programming interface • A runtime that allows for a low "time to first use" latency metric and good compression (that might mean vector based, or some other easily compressed asset, or taking better advantage of modern data streaming technology) • Is tied to some hosting platform. Some "app-store" or "marketplace" like system that is integrated with the creation tool to provide creators with low friction content distribution and hosting. The technology to build all of this exists today imo, but: Is there a place in the modern web (or modern computers in general if we include mobile devices) for such a platform? Does it make sense to tie it to the web given the rise of mobile computing and politics like Apple's walled garden?
💯 2
r
It's a bit chicken & egg, whilst platforms accelerated the growth of the flash, the content existed first. I imagine modern equivalents might be able to compile and publish to many platforms, eg. apple / google app stores, native desktop, and the web. Perhaps animation is a nice gateway into programming. Tweening is a nice simple point-click exercise but the more complex behaviour you need, the deeper into programming you go.
amiga tick 1
r
Perhaps animation is a nice gateway into programming. Tweening is a nice simple point-click exercise but the more complex behaviour you need, the deeper into programming you go.
☝️ This right here is a key insight I think! From a "FOC" point of view. Flash served as a "gentle intro to programming" gateway drug for a generation of programmers. Flash was the 2000's equivalent of Basic for many people. What made Flash a good intro to programming tool? I think you just answered that question 😄
😄 1
r
@Ray Imber thought it would be interesting to make a thread about this https://futureofcoding.slack.com/archives/C5T9GPWFL/p1595624526464200
❤️ 1
g
No I didn't mean compression tho that was important too. The problem with Unity/Unreal for the web is their based around heavy assets and textures so even simple games end up being 10-20-50meg. Of course someone with experience can design a game around small assets but the default is encourage large bitmapped assets whereas Flash defaulted to vectors and yes, vectors are both small and very compressible Flash did "stream". It ordered the data in the order of the timeline and would execute frames as soon as they downloaded without having to wait for the entire file to download. If you put a script on one of those early frames it would execute immediately. This made it trivial to have a 8meg file but present the user an interactive experience when only 50k or 100k of that 8meg file had downloaded. The most common usage was just to display a custom progress bar. You'd put a script on the first frame that just watched the rest the file load and drew some kind of progress bar but there were plenty of flash files that started the first part of their game or gave you a character editing screen or something else while they continued to download the rest of the file. In any case. The important part is the user not having to wait to start interacting. Compression is important but not sufficient. Just the ability to start before loading everything is also not sufficient IMO. The tools need to make this dead simple. In raw JS and with most JS based engines this is entirely left as an exercise for advanced users only. In Flash it was the norm. The format started as streamed vector graphics without scripting. Scripting was bolted on later but because it started as a streamed format that ability to give the user an interactive experience quickly ended up being built in from the start.
If It's not clear you can almost think of flash as a video format except for vector graphics. The rest was added later. But as an example if you add music to a flash file the music data will be interleaved in each frame for streaming. HTML/JS provides no native way to do this. You'd have to make your own file format and then parse the packets of the file yourself and pass off the audio packets to the WebAudio API via the JavaScriptProcessNode or an AudioWorker. In other words it would be a fairly advanced HTML/JS library whereas in Flash it was built in. This is why embedding WASM as in HTML or even putting assets in a WASM file isn't a solution. You can read about all this stuff in the docs for the format. From the intro
It is designed to meet the following goals:
* Network delivery—The format can travel over a network with limited and unpredictable bandwidth. The files are compressed to be small and support incremental rendering through streaming....
Streamed audio packets interleaved with the frames are covered around page 181 https://www.adobe.com/content/dam/acom/en/devnet/pdf/swf-file-format-spec.pdf How much of this stuff is important in 2020 I have no idea. Flash started in the 90s when having a modem was still the most common way to connect. But still, it definitely streamed and designed around getting something to the user as fast as possible.
👍 1
r
Thanks for the reference! I wasn't aware that Flash supported streaming in that way. That was very advanced for the time. The interleaved audio implementation is also very interesting! It's something I hadn't considered.
The important part is the user not having to wait to start interacting.
I used the phrase, "time to first interaction". But I think we agree here. amiga tick
In other words it would be a fairly advanced HTML/JS library whereas in Flash it was built in.
I agree, that kind of streaming would be fairly complex to emulate, but It is technically possible to with today's technology (at least for desktop). The implementation would probably be a nightmare, but it's technically doable...
How much of this stuff is important in 2020 I have no idea.
The billion dollar question is, is it worth emulating? To clarify, the reason I'm digging into this so hard is because I'm trying to see what if any useful bits of wisdom are worth taking from Flash as a technology that may have been passed over in modern tech. @gman You have been a really good sport about the whole thing! I appreciate your time and responses.