First 3D game built in ASM.js hints at future of Web-based gaming
The debut of the Web-based game Monster Madness heralds the rise of HTML5 and the descent of browser plugins.
The new online game Monster Madness may look like many of its 3D competitors, but the fact that you can play it in any browser without a plugin makes it something of a gaming unicorn. Unlike that mythical animal, however, there are plans to ensure that Monster Madness is only the first of many.
Jeremy Stieglitz, the inventor of the gaming Reality Engine and chief technical officer of Trendy, said that his company has been looking for an easy way to bring its games to the Web for some time, but it was only when he saw the first demo of ASM.js earlier this year that he realized he had found what his company wanted.
"ASM.js is not processor specific, it can run on any hardware. That's a huge advantage for the testing process, and it future proofs it -- if it can run ASM.js, it can run the game," he said.
But the clincher for Stieglitz was that to get a basic demo version of the game running took about a day, an incredibly short time. "Graphics, audio, and input took only a week," he said. The final version of the game isn't due until May, but people with a browser that supports ASM.js -- right now, that's Firefox, Chrome, and Opera -- can play the rough preview of the game immediately.
Martin Best, Mozilla's game platform strategist, noted that the pace of development on ASM.js has impressed him.
"We have spent the months since ASM.js and Emscripten [demo] to squeeze more performance out of them," he said. "We're excited that it's taken only six months from the first real demo showing it off to a commercial game using it. There's no additional technology required. It's just the open web."
Being "just" the open Web is a bet that Mozilla has been gambling on since it was founded. Even though ASM.js performance is only about 40 percent of native code in Firefox, and even less in Chrome, Vlad Vukicevic, engineering director for Firefox at Mozilla and the inventor of the in-browser, 3D graphics-rendering protocol WebGL, prefers the current pace to the glacial pace of WebGL -- which, he said a bit sourly, took Microsoft three years to adopt.
However, there were other games in town that Stieglitz could've chosen instead of ASM.js. Trendy tried a Flash code compiler, but found it to be "slow" and suffering from inconsistent behavior between browsers because the Chrome plugin for the compiler was based on Google's Pepper project.
"We were worried that Flash might not be around in two years," he said. And when the company looked at Google's NaCl and PNaCl, he said he hit another problem: having to test it on too many different kinds of processors.
"I'm very suspicious of putting processor-specific code on the Web. That's not really what the Web is," he said. And yet, he conceded that had he not seen the Emscripten demo, Trendy likely would've have gone with Google.
Vukicevic said that the company still had work to do on ASM.js.
"We have to encourage the other browsers to fully support it," he said. On the performance side, ASM.js doesn't yet support the complex multi-threaded chips in today's computers and devices, another issue that will have to be faced.
Perhaps the biggest victory for the nascent ASM.js is that it passed Stieglitz's "mom test."
"I sent the link [to Monster Madness] to my mom, and she opened it and began playing without any instructions," he said.
Monster Madness is a long way from Crysis-level graphics. But if Flash is the Big Bad of HTML5's story, ASM.js may eventually prove to be the final stake in its heart.
Correction, 8:33 a.m. PT: This story incorrectly attributed two quotes. Martin Best, Mozilla's game platform strategist, noted that the pace of development on ASM.js has impressed him, while Vlad Vukicevic, engineering director for Firefox at Mozilla, said that the company still had work to do on ASM.js.