Angry Bots Demo
webassembly.org
webassembly.org
Flash version, [at least] 5 years ago: http://tsuyobi.heteml.jp/unity/flash/AngryBots/
It's great to see WASM coming at last, but I must admit I'm a little disappointed (for now, anyway). Huge download, and though it runs smoothly (firefox 50) I'm not really impressed given what was possible with the flash version.
... and there goes Tuesdays work plan...
Except, of course, I didn't, did I?
Because most of that bloat is actually game assets (graphics, textures, sound effects, music, oh, and time spent churning out procedurally generated content), and not just the useless crap I thought it probably was(1), so it makes no difference what you're using as a platform, and you still end up with a progress bar (basically). The code on its own comes down in a flash, but that's only a part of the equation, and in terms of load/initialisation time, not a big part.
Still, what I never do is display a pop-up prompting the user to install Flash, or Unity, or Java, or whatever, which is a definite improvement.
(1) In fairness I do download all sfx and music in the background, so you don't have to wait for them all to load before you can start playing.
I wonder when the first "no wasm" browser plugins will come.
The main idea of killing Flash was because some websites completely ran on it, which is bad. But games never was an issue, and never will be.
Battery life, system resources, downloading assets, ..., it's all the same if you use either Flash or JavaScript.
Newsflash: Apple didn't block Flash because it is "bad", they blocked it because they wanted you to go through their app store
Newsflash: Games written for Flash (in ActionScript3) also run on Android and iOS. It even became "Best Mobile Application Development product" of 2014 and 2015.
They say Flash advertisement banners were annoying, so what do you think about those JavaScript popup banners that pop in the middle of the page you are reading, saying "Please subscribe to our mailing list"?
I you develop a game for Flash, it runs consistently in the Flash plugin. If you develop a game in JavaScript, you need to test it in all browsers you want to support. And yes, they are all different. And still gives troubles so many years later. Surprising? Not for old farts like myself.
But no worries. I looked at my google analytics for the past few years. Most visitors moved to Chrome. Flash plugin installed percentage: remained the same.
Nails in the coffin.
Non-game related, this might actually be a good thing. But coming from a game development background, this is a huge step back, both for game developers and gamers who want to play straight in the browser. But as said, we will see how inconvenient they make it.
At least with JS, if it leaks or has security breach, the browser's developer can fix it without waiting for a 3rd party, or I can use a different browser.
Same arguments can be made for Flash: Plugin's developer can fix it without waiting for browser. Disable the plugin and use the same browser.
Conclusion: makes no difference conceptually.
Oh, and guess what? We now have no browser competition because all the relevant parts are in the Flash Player and good luck motivating Adobe to fix issues with it now that it's basically a requirement to run a browser. Oh, and now they could charge everyone to access it if they want.
I want to live in your world!
Not exactly comparable. Flash, at its height, had pretty much the "multimedia in browser" market cornered with draconian vendor lock-in effects. They didn't need to hurry that much with fixing issues, because what are you gonna do if you are not satisfied with the Adobe Flash plugin? Run your favourite Flash game with Microsoft Silverlight? Use the open-source plug-in that could only run some Flash 1.0 animations?
At least with browsers you can easily switch vendors (the whole point of standardization and techs like WASM), or even fork your own.
Even if I don't like Apple or Steve Jobs that much, I must say they did one great thing killing off Flash by not allowing it on the original iPhone.
In modern OSes, you could slap a sandbox or container-ish construction around Flash. If it had a bug, it would be contained.
In principle, a minimal browser that defers to isolated plugins would be the more secure design. In practice, the plugins were buggy and insecure of course, but this was accidental.
If Flash were open source, and/or had just as much effort put into it as current browsers, it would be at least as secure.
The only reason the monolithic kitchen sink that a modern browser is is secure (and fast) is that so many brilliant people have been putting so much hard work into it (and Google and Apple so much money).
Edit: In case it is not clear, Angry Birds uses the Starling Platform, which uses Stage3D, which uses Adobe AIR, which uses the same technology as Flash, and is written in the same ActionScript3 environment.
AS3 spawned way too many OOP practices in the Flash world for my liking, it was the most naive way to code games I've seen until people started doing the same in JS. Angry Birds is so simple a game it could waste 90% of the system's resources and still run smoothly.
The build pipeline for AIR is also terrible, with XML configuration and arcane documentation and plenty of non-documented behaviors. I once had to maintain a Flash extension, ExtensionBuilder is as bad as a toolchain can get.
I'm so glad Flash is dead :)
It came as no suprise to me when Flash and the iPhone never happened.
No. They blocked it because it sucked. Horrible for battery, horrible for accessibility, performance wasn't great, and security issues galore. Don't forget, iPhone shipped without Flash before the app store even existed. When iPhone was first launched, Apple literally told developers to make web apps for it instead of providing native apps. It wasn't until iOS 2.0 that native apps were possible.
> if I wanted to make my own browser
muhahahaha (sorry). What I am trying to say, is that basically nobody can make a new browser from scratch today (not just a redecorated webkit). The only entities that can create or maintain browsers are megacorporations (Apple, MS, Google) or dedicated foundations (Mozilla).
Now, imagine a parallel universe where there is a standardized API for browser plugins which run in a sandbox (unlike NPAPI). Any startup can easily create bring new technologies to the web platform. You could put the plugins on the OS'es app store and vet them like regular apps if yuo like. Virtual reality, accessing a 3D printer, custom hardware, ... or just better network access and the ability to run a IMAP mail client, a terminal, or a bittorrent client in the browser (without a server).
I'd argue that the "open web" is actually one of the less open possible architectures, and limits what you can do. And the reason for this are business interests of Apple & co.: Why would you sell your app in the app store and give apple a 30% cut, if you could do everything a native app can in the browser? And I also bet some of the restrictions of the open web are benefitting the content industry - like restricting what formats you can use, the inability to use full networking (and to create a P2P "pirate itunes" without central server in the browser), the introduction of DRM in the browser (EME) and so on.
For awhile, OOPSLA was full of presentations of things that people did in Java, that had previously been done in Smalltalk. I'm sure many others have parallels.
Also, if Adobe had done a much better job, things would be different. (You could say the same thing for Smalltalk and OO.) But corporate incentive structures are somewhat broken and too short term. This is why Apple could produce a better UX free of bloatware and outcompete Wintel. This is also why Apple is now starting to fail some of its users.
I'm now looking at networking for browser based multiplayer games. WebRTC datachannel has a pretty big header. Websockets carry TCP sematics. I think Flash did this better too!
What I hated with a passion is seeing a progress bar and warning to updates Flash so I could look at the hours for a restaurant down the street. It would also hijack copy/paste and other shortcut keys to switch windows or close the window. I would also hear my CPU fan spin up and battery life drop because I left it open in another browser tab.
When CSS and Javascript started doing things Flash used to do I sighed because while I can use a Flash blocker, I can't do the same for CSS/Javascript.
Really happy about the way this is progressing.
AngryBots11.wasm GET 200 webassembly.org xhr UnityLoader.js:187 11.9 MB 54.38 s GitHub.com
AngryBots.mem GET 404 webassembly.org xhr UnityLoader.js:72 5.6 KB 172 ms GitHub.com
AngryBots.memgz GET 200 webassembly.org xhr UnityLoader.js:47 314 KB 1.30 s GitHub.com
AngryBots.wasm.mappedGlobals GET 200 webassembly.org xhr AngryBots.js:279 3.1 KB 250 ms GitHub.com
AngryBots.datagz GET 200 webassembly.org xhr UnityLoader.js:47 36.3 MB 2.9 min GitHub.com
HWStats.cgi POST 200 stats.unity3d.com xhr AngryBots.js:6595 149 B 3.80 s Apache/2
Just shy of 50 MB all in all.UnityLoader.js:72 GET http://webassembly.org/demo/AngryBots/Release/AngryBots.mem 404 (Not Found)
Also interesting would be to run other virtual machines (JVM) inside WASM, and see what the performance is.
Also interesting: compiling Firefox into WASM, and running it on Chrome (or the other way around) :)
Further, I'd like to see a good test of multithreaded/shared memory performance.
Compiling Linux to WASM (yes I know it has been done for single-threaded Javascript, but it would be interesting to know how this would perform on WASM, with threads).
And compiling VirtualBox to WASM would also be cool. If only as a performance indicator.
[1] https://github.com/WebAssembly/design/blob/master/FAQ.md#why...