15 ms·
Mozilla and Epic Announce Unreal Engine for the Web
- teelo2 14y agoThis is huge! I do PR in the gaming industry and have been waiting a long time to see a platform that could bring serious game development to the browser. I was expecting it to be Unity, but I'm convinced this is a bigger milestone. Epic is an awesome company with awesome tech and partnering directly with Mozilla is a stroke of genius. Can't wait to see the games that will come out of this marriage.
- anoncow 14y agoNative-like games in browsers with little or no use of plugins may be game-changing for the game industry.
- pekk 14y agoGiven the size of game assets these days, that could be a big UX problem (in places which don't have Google Fiber)
- michael_miller 14y agoPresumably, game developers would serve up the game to the browser via localStorage. This would make the experience very similar to Steam today, where you download the game, then play it.
- alttab 14y agoYou could even design the game to be downloaded in chunks. Download the first level, and while playing, download the second in the background. This reduces downloads and load times.
- camus 14y agoyep like you can put a gig of datas in local storage.
- ajuc 14y agoLocalStorage is 5-10 MB per domain (currently there is a bug in most browsers that allows you to bypass this by using subdomains, but I wouldn't count on that being the case for much longer).
- pjmlp 14y agoThe amount of game code that I can debug, sweet!
- whatshisface 14y agoWe will need a really good caching/disk space management system before this could really be used for much, is anyone working on that?
- drawkbox 14y agoThis was the problem with early web based MMOs. Unity has a caching license now that adds a bigger cache (http://docs.unity3d.com/Documentation/ScriptReference/Caching.Authorize.html http://docs.unity3d.com/Documentation/ScriptReference/Cachin...) that was developed for Cartoon Network but they haven't made it part of the main release due to security and it also is a revenue generator for them I guess. I'd love to see this launch now they have some competition. Flash had something similar but was available to everyone with up to unlimited space by user setting (flash cookies are stored there so this is part of the security problem).
- padenot 14y agoConveniently, this email [1] has been sent today by Jonas Sicking from Mozilla. It basically pinpoints all the problems developers using appcache experience, and proposes a starting point to go towards a good caching system for the web. Rest assured people are working on that actively. [1]: http://lists.w3.org/Archives/Public/public-webapps/2013JanMar/0977.html http://lists.w3.org/Archives/Public/public-webapps/2013JanMa...
- Joeri 14y agoHtml5 offline appcache lets you download the entire application and cache it locally, including assets. It can do incremental upgrades and show progress info while downloading. For large bundles user approval is necessary, but that shouldn't be an issue. It's currently in all shipping browsers, including IE10.
- tobylane 14y agoI don't fully understand, is this equal to NaCl or webgl/canvas?
- mbrubeck 14y agoThis Unreal Engine3 port uses WebGL and asm.js.
- drawkbox 14y agoasm.js paying dividends already, performance is always useful. But the larger problem is cross platform gaming, so hopefully webkit and others get something like this. The problem is Chrome has NaCl, Microsoft has their designs I am sure, we still need WebGL support which I am sure isn't coming. For now Unity, Flash and general html5/canvas is still a better cross platform solution. If this leads to browser mobile games though that are native speeds, then we have something.
- gcp 14y agoasm.js is just a subset of JavaScript, so it works in all browsers already, unlike those "alternatives" you mentioned.
- lucian1900 14y agoThose "alternatives" already work with emscripten, with the advantage of working at full speed (at least in the case of NaCl) in the optimal case.
- pekk 14y agoDoes it work at full speed without OdinMonkey?
- gcp 14y agoNo (well more accurately, "it depends on how good TI works without the restrictions"). Won't matter for most games, see also points made elsewhere here.
- AndrewDucker 14y agoI was wondering what the end goal of asm.js was - and the ability to run games in your browser at near-desktop speeds is _very_ impressive. Now, how long until Chrome supports it...
- GotNothing 14y agoAs soon as they find a way to put ads in it...
- joshrice 14y agoon the loading screens!
- notatoad 14y agoyes, because chrome is so full of ads...
- lucian1900 14y agoChrome has supported NaCl for a long time, which is quite a bit saner than asm.js
- hosay123 14y agoYou show up on every NaCl-related thread claiming it is awesome and asm.js is crap, but that's as far as it goes - you never explain why. You're basically wasting time because what you say is never actionable. Please defend your opinions - inform us!
- lucian1900 14y ago(P)NaCl exposes pretty much the same environment and tool chain devs get writing native apps. Predictable performance, decent debugging, etc. One can even decide to use platform-specific features if strictly necessary. The problem it has is that it is largely opaque to the JITs in browser engines (even PNaCl, since JS JITs have nothing to do with llvm). One way to fix that would be to define a simple byte code as a compilation target and have people compile to that, in addition to compilation to JS with emacripten. The end result would be, in my opinion, much cleaner than the ugly hacks in asm.js Furthermore, by design, asm.js will always need guards in the generated code, thus some overhead that can never be fully removed (although JITs will help with this). In particular, one can write "x = +x" in JS, but then change the type of x, thus invalidating the invariant. A guard will be needed to guarantee correctness, since asm.js is a subset of JS, but the outer set still exists. It seems to me that web technologies are getting more and more crazy. To me it appeared obvious that asm.js is not a nice approach, but I can see many people disagree.
- ebbv 14y agoI'm curious what the performance is like in Chrome or Safari (which do not have asm.js support.) If performance is acceptable in Chrome/Safari then that helps sell the idea that the web is ready for 3D games now. If the performance isn't acceptable then that helps to make the case for asm.js.
- pekk 14y agoWhat happens if NaCL performance is acceptable? By the reasoning you've applied here, doesn't that make the case for NaCL?
- ebbv 14y agoCome on, why ask a question like that? We're not discussing NaCl here. If you want to discuss NaCl that's a whole different issue. It's a totally different standard and quite a bit more complex than asm.js.
- mtgx 14y agoMozilla has already showed asm.js is 3-6x slower in Chrome, which doesn't support it right now.
- ebbv 14y agoYeah they showed a benchmark was 3-6x slower. That's all well and good. I wanna see what the real world implications are. Here's this cool Unreal demo running with asm.js support, it looks great. Now let me run it in Chrome or Safari and see if it's even remotely passable or not.
- pjmlp 14y agoLets not forget mobile devices as well.
- ilaksh 14y agoJavaScript is usually compiled to native code by WebKit and can have very good performance. 3d WebGL gaming performance both on Chrome and Firefox and Safari is usually a factor of WebGL support in the browser, drivers, etc., rather than JavaScript performance.
- jlongster 14y agoFor everyone saying that the claim that asm.js runs everywhere is invalid, because only in browsers that implement the optimization will it be feasible, remember that most games are built to scale performance. On browsers that don't implement the asm.js optimizations, the game could feasibly turn off visual effects and scale down the game so that it runs, just not as pretty or realistic. There's a huge difference between "this game only runs in this one browser that implements this full VM" and "this games runs everywhere, but only with maximum graphics & physics in browsers that implement the asm.js optimizations".
- niggler 14y ago'There's a huge difference between "this game only runs in this one browser that implements this full VM" and "this games runs everywhere, but only with maximum graphics & physics in browsers that implement the asm.js optimizations".' That's quite a bit of marketing here. If NaCl is capable of reaching 1.1x performance while asm.js is at 2x (and it's not obvious to me within the confines of JS if you can actually do better than 1.5x), people would switch to a browser that supports NaCl (first the hardcore gamers, then the rest of us). Your argument only makes sense if asm.js and NaCl are at performance parity. Note that people still write native iOS games, even though they could run everywhere if they did it in JS.
- pcwalton 14y ago> If NaCl is capable of reaching 1.1x performance while asm.js is at 2x (and it's not obvious to me within the confines of JS if you can actually do better than 1.5x), people would switch to a browser that supports NaCl (first the hardcore gamers, then the rest of us). NaCl is not portable. asm.js is. You should compare PNaCl and asm.js. > and it's not obvious to me within the confines of JS if you can actually do better than 1.5x Why not? Is there a technical reason?
- niggler 14y agoNumbers are IEEE754 floats and no currently accepted spec provides native 64 bit integers with arithmetic. Even the modest 32-bit integer multiplication is tricky (you only have 52-53 bits of mantissa). Mozilla proposed `Math.imul` extension. goog.math.long provides a mechanism using an array, and emscripten does something similar (but can also use the hack if you are sure there won't be overflow issues)
- Sprint 14y agoUnreal? Bah, real gamers play Quake! (As in 199Xs flame wars.) https://github.com/SiPlus/WebQuake https://github.com/SiPlus/WebQuake was released some weeks ago. It is a whole different league in terms of technological features but it is a free open-source engine. You can play it at http://webquake.quaddicted.com/ http://webquake.quaddicted.com/ There is also a port of Sauerbraten, another free engine, https://developer.mozilla.org/en-US/demos/detail/bananabread https://developer.mozilla.org/en-US/demos/detail/bananabread
- EugeneOZ 14y agoSoon all this tricks with CSS and HTML will obsolete, all will be replaced by canvas, with frameworks, engines, SDK, etc.
- otibom 14y agoI'm waiting for someone to implement a web browser in canvas. Wait, now that I think about it, it has probably been done already.
- MatthewPhillips 14y agoThis was an april fool's joke from last year: http://badassjs.com/post/20294238453/webkit-js-yes-it-has-finally-happened-browser http://badassjs.com/post/20294238453/webkit-js-yes-it-has-fi... In the non-joke category, Mozilla created a JavaScript interpreter written in JavaScript (to test new language features): https://github.com/mozilla/narcissus/ https://github.com/mozilla/narcissus/
- lmeyerov 14y agoWe've been working on it ;-) Zoom into the render of Wikipedia.org on page 8: http://eecs.berkeley.edu/~lmeyerov/projects/pbrowser/pubfiles/synthesizer2012.pdf http://eecs.berkeley.edu/~lmeyerov/projects/pbrowser/pubfile... . The real story is that we're trying to get CSS etc. running on a GPU so you can use high-level web langs to script big visualizations. In this sense, OpenGL and ThreeJS are very low-level frameworks. Some other fun stuff as well, if we reach it.
- pekk 14y agoWhat was the actual reason why Mozilla could not implement NaCL? Why cannot multiple technologies compete among users on their merits?
- dman 14y agoI wish NaCL was available across browsers - at the very least it offers completely different tradeoffs that can be useful as escape hatches for certain kinds of applications. Also since none of Google's bread and butter products depend on it, I am a bit wary that it might be mothballed at some point. If anyone in this thread has more clarity about the NaCL roadmap I would be very interested in hearing about it.
- macspoofing 14y agoNaCL already feels like dead-man-walking. It's a tech that is completely controlled by Google and none of the other big guys (Apple, Microsoft, Mozilla) want anything to do with it.
- dman 14y agoThats a shame - Ive been on the fence on writing a data analysis environment using NaCL. Have a couple of small demos running but want to find out more about the roadmap before investing more time into it. This is the main reason I am going to Google IO this year to get some kind of feel for what the roadmap / traction looks like for NaCL going forward.
- macspoofing 14y agoIt's not going to be supported by anybody except Chrome, so whatever app you build, is going to cut 3/4ths of the market (plus all the Chrome Browser users that don't download Chrome apps). Most likely Google will keep it around for a while longer since it underpins not only Chrome Browser, but also Chrome OS. You're essentially in the ActiveX / Java Web Start worlds. It's fine if it suits your needs but it's not the web.
- 14y ago
- niggler 14y agoTop youtube comment: "There's nothing about the Unreal Engine 3 on both emscripten and hacks.mozilla" (https://www.youtube.com/watch?v=XsyogXtyU9o https://www.youtube.com/watch?v=XsyogXtyU9o) Even though the major legwork is in emscripten, somehow the focus is on asm.js. Feels like really heavy marketing.
- nnethercote 14y agoIt's natural that newer things get more attention. Emscripten's been well known for months. asm.js has been well known for weeks. A working implementation of asm.js (OdinMonkey) has been well known for days. A demo showing Unreal running on OdinMonkey has been well known for hours.
- lt 14y agoDoes this mean that the source will be available for anyone playing the game, even if obfuscated? It should open interesting possibilities.
- daenz 14y agoI feel like an old fart for not buying into the push for the browser to be an OS or game system. In my mind, no matter how optimized the browser becomes, it will always be slower than natively-compiled code. And in the 3d gaming world, where the faster code always has the greatest potential for the best game engines, the browser will always lose. My instinct tells me that there will be a huge push for webgl games, some initial adoption and frameworks, etc. The result will be that web developers will realize how fucking complex graphics engines are (I'm writing one now...nothing in webdev compares to it) and will give up. And I can't see graphics developers in the game industry incentivized enough to fully make the jump to the browser (why would they want to write game code that is distributed to everyone in raw source form?)
- mnemonik 14y ago> (why would they want to write game code that is distributed to everyone in raw source form?) You would distribute the asm.js code, which is your object code.
- jasonlotito 14y agoI understand what you are saying. The tipping point for me in terms of "Oh, that will never happen because of X" was MineCraft. An incredible game written in Java. Sure, it's not pushing extreme graphics, but that doesn't matter. It's the game that matters. So I look at games on the web the same way. Heck, I've been playing games on the web for years. No, they aren't in the same realm as AAA games coming from Blizzard, Valve, or EA. But, I had fun, native wouldn't have gained them anything, and I spent more time playing them (and more money) then some of those AAA games.
- MatthewPhillips 14y agoAlso, remember the original Serious Sam. Had a generation behind graphics but was successful because it was fun. I can see a Quake Live type game without plugin being relatively successful.
- Too 14y ago
- caycep 14y ago"but can it run Crysis?"
- Ygg2 14y agoIt should be theoretically possible. Crysis is written in C/C++ IIRC (well you program engine in those two languages).
- mtgx 14y agoIs this using WebGL. If so then I guess games will be limited to OpenGL ES 2.0 API, until WebGL gets updated to a more advanced graphics API level.
- wladimir 14y agoOpenGL ES 2.0 is still the safest bet, as it is what most mobile devices support. Though devices with GLES 3.0 are appearing, driver support is still subpar. I agree it may be time to look at bumping the API level.
- melling 14y agoIs the idea with asm.js to write in C/C++ and convert it to Javascript? It sounds like I should relearn C++ because it's the one thing that will run everywhere. Android, iOS, and now the web.
- ben0x539 14y agoThe idea is to have an llvm backend targeting a weird subset of javascript that happens to get optimized really well. As far as I have heard, there are already other languages that target emscripten via llvm, and I'm sure there will be more when asm.js gets big. I don't think you'll be stuck with C++.
- ilaksh 14y agoThe thing that I think people are getting confused about is, even though asm.js is faster, you actually don't need asm.js to get native code running the browser. The new engines in Chrome and Firefox already compile to native code. Asm.js is just a way to ensure that your code always get optimized as much as possible. I really don't think that asm.js is necessary to bring 3d gaming to the web. WebGL performs very well as long as you take advantage of the graphics hardware. I'm not a fan of asm.js actually, since if I wanted to write low-level code I would just stick with C++. I'm on the web to take advantage of things like JavaScript and CoffeeScript. I think the way to get to the sweet spot for 3d gaming and applications in the browser is to 1) make sure that WebGL is well supported on as many platforms as possible and 2) take advantage of the built-in networking, instant-on factor, openness, general webiness, and scripting capabilities of the web platform. By 'instant-on factor' I mean that games can load up very quickly after hitting a URL. By 'general webiness' I mean, for example, you can start a game at the end of the work day, later the evening continue from your house -- you aren't tied to a particular machine. Also the web has all of the HTML5 features which could really come in handy for innovative browser-based operating systems or 3d applications. Also, if you take advantage of things like procedurally generated textures and geometry, people won't even have to wait for stuff like loading textures. Asm.js is cool but its not really necessary and not my thing. We just need good WebGL support. Another feature that 3d browser-based games and applications could take advantage of is WebRTC. The point being that if you take advantage of easy-to-use web APIs and libraries like WebWorkers, WebRTC, Three.js, CopperLicht, web-based languages like CoffeeScript, etc. then the web platform can offer game developers productivity advantages.
- macspoofing 14y ago>I really don't think that asm.js is necessary to bring 3d gaming to the web. It helps ... a lot. WebGL gives you GPU access which will largely drive your graphics engine, but there's still tons of places where CPU performance matters (e.g. physics and AI). Asm.js and WebGL are complementary. >I'm on the web to take advantage of things like JavaScript and CoffeeScript. And asm.js prevents this how? If you're coding in CoffeeScript, you already have a necessary compile step to do. Are you telling me you wouldn't want the CoffeeScript compiler to give you extra performance by including asm.js heuristics?
- socialist_coder 14y agoAre you sure this is even correct? The github project for that 3d demo (https://github.com/kripken/BananaBread/ https://github.com/kripken/BananaBread/) says the 3d engine is "Cube 2/Sauerbraten 3D", not Unreal. It seems like the Unreal Engine facebook just posted a link to that video and people are thinking it is Unreal Engine.
- tedmielczarek 14y agoBananaBread is a different 3d engine, it's what most of the development work of emscripten has been focused on. The UnrealEngine demo is a separate demo done by compiling the UnrealEngine codebase to asm.js using emscripten.
- socialist_coder 14y agoWow, I must be really dumb to have not noticed the Unreal Engine demo video. I only saw the BananaBread one. Thanks.
- cromwellian 14y ago(on Scaling) Games usually scaled based on GPU power, but not so much on the core game logic, AI, etc. Any CPU processing that actually affects gameplay outcome (e.g. collision detection) cannot really be disabled and scaled. Otherwise, you end up playing a different game based on your machine, not a game that only looks uglier or plays choppy. This demo looks great, but all I see are environments rendered. I didn't see any firefights between lots of player models or vehicles, no Havok/PhysX/Bullet, I didn't see any enemy AI running. I did see some frame rate hitching. It's not the first time someone's had environments (sans game) running, see for example Quake3 (http://media.tojicode.com/q3bsp/ http://media.tojicode.com/q3bsp/). Even the Rage Engine got an environment renderer ported to the Web. There's a danger in overselling stuff. When I helped port Quake2 to the Web (GwtQuake), I didn't have any illusions about being able to run something like Crysis or Call of Duty series in the the browser in JS, or consume the same resource requirements. I mean, I thought it would be possible, but a hideous waste of system resources. There was a time when Sun was marketing Java and pushing heavily on this idea that it would one day meet or beat C/C++ performance, but it never quite got there after 2 decades (yes, in some circumstances it comes close, in others, it fairs badly). I see the same parallels today, pushing the idea that a dynamically typed language with some extra 'hints' is going to match a language that gives full control over memory, SIMD, layout, threading, etc. This is not to say that asm.js couldn't do most of the 'casual' games you see today (e.g. Ridiculous Fishing on iOS, Angry Birds, etc), and most of the Flash games, I'm totally onboard with using it for that, but I think it's a mistake to push this as a real solution for bringing triple-A FPSes to the web. And what of Mobile? Can this even run Infinity Blade on a recent smartphone? What would be the different in battery life between an iOS version and an asm.js version?
- jlongster 14y agoHave you seen BananaBread? It is a fully runnable 3d game that does all the AI, physics, etc. It's compiled with emscripten (I'm not sure if the online version uses asm.js yet, but it just needs to be recompiled). https://developer.mozilla.org/en-US/demos/detail/bananabread https://developer.mozilla.org/en-US/demos/detail/bananabread
- 14y ago
- Solocloud1 14y agoThis might go even beyond gaming. First and third person interfaces for the web.
- zenbowman 14y agoI worked at a company that developed 3D interactive language and culture software with speech recognition, virtual humans, etc - one of our biggest issues was that customers aren't interested in installing desktop software anymore. We were able to make pretty decent web products using Unity, although our desktop products were still far superior. Good to see 3D on the web edging ever closer to becoming standard.
- pxlpshr 14y agoWe pitched this to Epic in 2007 when our platform helped bring id Software's Quake online... on any browser. Included an "app garden" for the mod community around Unreal engine, clans, ladders, and real-time tournaments with automatic server propagation. We shutdown due to high infrastructure costs and notorious "2 week" => 2 year game delays.
- Mandatum 14y agoMaybe contact Mozilla directly and see if you can have a looky at how they've implemented everything, you might be able to make a few suggestions?
- Mandatum 14y agoMaybe contact Mozilla directly and see if you can have a looky at how they've implemented everything, you might be able to make a few suggestions?
- dade_ 14y agoOne of the interesting projects that Nortel was developing before they went into bankruptcy protection was web.alive. It is a 3D collaboration platform built on the Unreal engine. The biggest problem was that it only supported windows and required a pretty big plugin that needed to be updated regularily. Avaya still sells it, and I think this could really make a big difference for customer adoption. http://avayalive.com/Engage/ http://avayalive.com/Engage/
- tfb 14y agoNice!! I've been planning on implementing the UT99 equivalent of QuakeLive at http://www.globalunreal.com http://www.globalunreal.com for quite some time now. I've already made a new ping compensation mod, so all that's left is automating pretty much everything via the web. Although, I highly doubt I'll go 100% in the browser using WebGL. It'll most likely just be a wrapper that makes UT appear to be controlled by the browser when it's actually just running natively. This is all very cool stuff though. I could see it being quite powerful/useful in the future.
- Aco- 14y agoI might be able to help aid you in your efforts if you're interested. I have been involved with the modding & hacking communities of the unreal engine for the past 13 years now. I was one of the lead developers for the full conversion mod Unreal Tournament Revolution which ported UT99 gameplay to the unreal 2.5 engine. I've worked on various anticheat teams and released the first unreal engine hook PoC back in 2000. So if you're interested reply to this with an email, I would love to help you in any way that I can.
- tfb 14y agoHa! It's Aco. Small world! I actually wasn't around UT99 back when you were, but things are chugging along better now than they have in a looong time since I made newnet. If I recall, you were actually the guy who told everyone newnet wasn't possible for UT99! At any rate, hit me up on irc.globalgamers.net #iPug and #uPug (#tdmpickups and #mlut are dead).
- cpprototypes 14y agoI have a question about asm.js. My understanding is that it's only useful for (static typed language) -> asm.js, is that correct? It doesn't make sense for (dynamic languag) -> asm.js because there's no type information to optimize with.
- z3phyr 14y agoI am tempted to say that 'this is not indicating the death of native platform games' By the time we would see UE4 on the web, developers will be trying to achieve VR graphics in UE5.... Look at your surroundings people. We are far from achieving that kind of graphics and environment on our native systems. We are far from emulating the environment, we live in. For that we will always need a great native system + very fast native programming languages (like C\C++)
- daeken 14y ago> For that we will always need a great native system + very fast native programming languages (like C\C++) When you're talking about graphics, this really isn't true at all. 99% of what matters there happens on the GPU, not CPU, and that's not going down, it's only going up as GPGPU stuff gets bigger. The days of CPU-bound games are, by and large, behind us.
- z3phyr 14y ago'optimise the GPU for max performance' I bet you will hear this kind of statement in the future, when more general purpose work will be done by the GPU. We already have C++AMP, and I bet, in the future, CPU's will be GPU like.
- NinjaWarrior 14y agoI often imagine offloading everything to GPU is the realistic solution to workaround the mess of standards...
- starmole 14y agoDisclaimer: I worked on the original Flash version of this same demo two years ago. Big congratulations to Mozilla for pulling this off. Feels good to have such a great demo, doesn't it? :) But a lot of the credit also needs to go to Epic for having such an amazingly scalable and portable engine and providing the AAA assets! One issue is that the game experience does not translate as easily as the wow factor. You will need quite a bit more to go to the first shipping and profitable game built with this tech. Don't rest now :) With Flash + 3D we actually ended up seeing the most successful games not being based on straight native ports but built from scratch with the new environment in mind. Things like caching, startup time, and wide reach are crucial to an in browser game but are not needed for a demo like this. Still really amazing! Keep up the good work and the fight for the open web!
- alexlarsson 14y agoThe one thing i don't like about the lowlevel compiled js stuff is the complete absence of threads. There is no way to get real game-like performance on a modern multi-core CPU in a single threaded language.
- deleted 14y ago[deleted]
- tuzemec 14y agoAm I the only one who finds Unreal powered games for kinda slow, sluggish and with "weird" movement? Latest two titles that I've tried - Dishonored and especially Borderlands 2 compared to Rage are hm... crappy... on 660TI