top | item 13062214

Angry Bots Demo

167 points| tilt | 9 years ago |webassembly.org

65 comments

order
[+] k_|9 years ago|reply
Kill flash, they said..

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.

[+] koonsolo|9 years ago|reply
Old-timers as myself already saw this coming.

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.

[+] bartread|9 years ago|reply
Haha - I've run into exactly this problem writing games in HTML5 and JavaScript. I was all smug thinking, "Hah - screw these Flash guys and their stupid loading progress bars because of all that dreadful Flash bloat. I'll show them!"

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.

[+] tonmoy|9 years ago|reply
IMO flash didn't fit into the open web vision, if I wanted to make my own browser, it couldn't gain traction until adobe decided to release flash for my browser
[+] AstroJetson|9 years ago|reply
WASM won't work on my browser, but the flash version does.

... and there goes Tuesdays work plan...

[+] bhouston|9 years ago|reply
I think the issue was the separate flash runtime was a pain to maintain and make secure. I think battery life was also an issue.

I wonder when the first "no wasm" browser plugins will come.

[+] amelius|9 years ago|reply
Also, it doesn't really show the potential of WASM, since most of the graphics is done in OpenGL anyway.
[+] moolcool|9 years ago|reply
This feels like history repeating itself. The Flash version still runs better for me than the WebAssembly version, and the Flash version worked well on people's systems 5 years ago! It seems like half of the things I see on HackerNews is JavaScript poorly doing that other solutions did better a decade or more ago
[+] stcredzero|9 years ago|reply
That's why programming is "half a field," according to Alan Kay. If it were a real field, then there would be greater preservation of group knowledge/experience. Instead, it's like a pop culture, subject to cyclic fads, with less overall progress.

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!

[+] bane|9 years ago|reply
The best part is that we're just now achieving what we could do in Flash 5-10 years ago, which was capable of achieving what we could do with native code 5-10 years before that.
[+] pfranz|9 years ago|reply
I never had a problem with Flash games and I haven't heard it many others. Flash games and Flash animation were casualties lost when it fell out of favor.

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.

[+] bigato|9 years ago|reply
webassembly is not javascript
[+] mobiuscog|9 years ago|reply
Seems to work nicely in Firefox 50 release (no nightly required) once the config is set.

Really happy about the way this is progressing.

[+] Retr0spectrum|9 years ago|reply
For me, the WASM version was noticeably slower, with an especially noticeable JIT warmup. It might have been because the asm.js version was running at a lower resolution, so it's not a very fair comparison.
[+] Thaxll|9 years ago|reply
HTML5 is not progressing that fast for games, it's really really slow.
[+] bhouston|9 years ago|reply
What is the total download size? For program? For data? How does this compare to the previous emscripten output?
[+] runejuhl|9 years ago|reply
From the network tab of Chrome developer tools:

  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.
[+] k__|9 years ago|reply
Now they need to add on-demand loading for parts of these applications and things could really get nice.
[+] amelius|9 years ago|reply
What I'd prefer to see in a demo is running compiled code of other languages (e.g. Haskell, C++, Python, Rust, Go) in WASM, and comparing performance.

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.

[+] golergka|9 years ago|reply
You can transpile this demo to C++ with IL2CPP. It's built into Unity for iOS/Android platforms, never tried to do it on desktop, but I think it must be possible.
[+] amelius|9 years ago|reply
I forgot two:

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.

[+] reitzensteinm|9 years ago|reply
The Web Assembly version seems to be faster (not just warmup), but it would be nice to get a 1:1 comparison there.
[+] thedaemon|9 years ago|reply
The Web Assembly version also looks to be using much lower texture resolutions as well. It's cheating to get better speed it seems.
[+] alexellisuk|9 years ago|reply
I tried this with ASM.js - looked impressive to think this was all built with WebAssembly. Haven't seen the flash version, but still this looks awesome for 50mb.
[+] exabrial|9 years ago|reply
I'm curious, why not use JVM bytecodes for web assembly... or actually any of the legitimate, mature, optimized, hardened runtimes out there? I feel like we're reinventing the wheel, again.
[+] ndesaulniers|9 years ago|reply
This has been answered 900 times already. See the design docs on GH.
[+] bigato|9 years ago|reply
I look forward to the day I'll be allowed to use ttk (tcl/tk) compiled to WASM instead of html/css to build interfaces.
[+] zimpenfish|9 years ago|reply
Why Oh Why Oh Why would you use isometric WASD for this instead of Forward/Backward/Strafing?
[+] skocznymroczny|9 years ago|reply
Because the camera doesn't rotate, so when you are facing south, forward would move you backwards on the screen, and strafe-left would move you right on the screen.