Google, Android, and the Future of Games on the Web

I have some big news to share with you this week: today, we’re showing two new branches of our technology to the world at Google’s annual developer conference, Google I/O. The first is Unity Android, which we announced this spring. Though we’ve shown some sneak peeks at our Android support in private and at GDC in March, we’ve not yet shown all anything like what we’re showing this week.

In the Developer Sandbox at the show, we have several Android demos running on two different devices. On Google’s Nexus One, we have both Penelope and Star Troopers. We’re also showing a couple demos running a new tablet device sporting Nvidia’s Tegra 2 chipset: the alien shooter we demoed on the iPhone 3GS GDC and Star Troopers.

The Developer Sandbox also includes a station showing another Google technology which, experimentally for now, we’ve made Unity support. That technology is called Native Client and we think it’s a potential game changer for rich web applications and games in particular. In a nutshell, Native Client is a security sandbox currently in Chromium that allows the secure execution of native code. If you want to dig into the details (e.g. how can native code be guaranteed secure?!), I *highly* recommend you watch Henry Bridge’s explanation in this video.

If we really cut to the chase for why this matters for Unity, it’s because what we’re showing is Unity running in Chrome with no plugin at all. That’s right, there’s no Unity Web Player installed on the machines running Unity content in Chrome. Rather, with Google’s clever technology, we’re running Unity content in Chrome using just default access and no additional installation or user interaction. It’s kind of wild!

Chrome’s market share is already growing like a weed, but it’s innovation like this that will keep driving adoption at a torrid pace. Even cooler still is the fact that all this new technology from Google is open source, so it can readily be adopted by other browsers if they want to. We think they should.

Unity’s Native Client port got some very prominent attention outside the Developer Sandbox as well, appearing in the keynote by Google’s Sundar Pichai this morning. Sundar showed Lego Star Wars in a mockup of the forthcoming Chrome Web Store. Though not fully public yet, the Chrome Web Store is being designed with games in mind, and we’re sure that it can be yet another great channel for Unity developers to reach large audiences.

Some quick, semi-blurry shots from the keynote (captions are mine):

The Web is where people spend their time…

…but it’s often really tough to find the best apps.

The Chrome Web Store will help organize the web’s best content with an open marketplace and tools for rating and discovery.

High quality content, including content created with Unity, will be available to a huge audience with no technical or commercial barriers to entry. May the best content games win :)

I want to take a moment to say how fantastic it’s been to collaborate with Google. For a giant company famously populated with geniuses, the people we’ve worked with have been incredibly humble, open, and responsive. No doubt about it, this is a sharp, ambitious, and capable crew and they want to do good things for game developers.

In that vein, it’s no secret that Unity believes in the future of games on the web and mobile devices. We put the majority of our resources into charging ahead on these fronts. Both markets are relatively new, but they’re now attracting new audiences to games and seeing very high, sustained growth rates as a result. As a game developer, being on the web and on mobile devices offers you the most frequent opportunities to capture a gamer’s attention and in raw minutes, the greatest spans of time to entertain them. Because both mobile and web are largely open platforms, we feel Unity is providing the greatest value to you by staying at the leading edge of the curve. For developers, they are easy to enter and they unlock the largest audiences. Sounds like a winning combination to us!

At Unity, we also believe there’s significant value in targeting multiple devices. Bigpoint had a great demo at GDC this spring, using Unity to create a game that could be played head-to-head, phone and browser. Whether it’s offering complementary experiences between the web and mobile devices, or a truly seamless experience across both, we think it’s valuable for developers to offer entertainment this way. And we’re beginning to see that proven in many more cases by big and small developers alike.

We’ve been very pleased to discover that our goals – offering the best possible technology to help game developers succeed – are in fundamental alignment with both Android and Chrome. While we still think it’s very important to continue to support all major browsers and as many mobile platforms as possible, we’re very excited by the technological openness of Google’s platforms and by the frictionless marketplace they’re building to support them. This means low barrier to entry and high potential for game developers – exactly the right ingredients for games to flourish!

As I’m writing this, Google I/O just hitting stride for day 1. We will have a lot more to announce about this in the coming months, so stay tuned and we’ll keep up to date on the latest and greatest. If you’re attending the show, come by and see us in the Developer Sandbox. We’re happy to answer questions at the show, or in the comments below this post.

Comments (64)

You could certainly see your enthusiasm in the work you write. The arena hopes for more passionate writers such as you who aren’t afraid to say how they believe. All the time follow your heart.

Aaron

September 10, 2011 at 9:10 pm /

Thank you for some other magnificent article. Where else may just anybody get that type of information in such an ideal means of writing? I have a presentation subsequent week, and I am at the look for such info.

random

July 22, 2011 at 7:33 am /

The words in the text are a little bit misleading i think… It is not “you don’t need to download anything”, it is just you don’t need to click anything to download. Google Naive Client is a Chrome extension, that allows C/C++ naive code through a sandbox. There is an embed tag and a new mimetype called application/x-nacl what Chrome could understand that this is a naive client code, and it automatically downloads and run… So this is not like Unity or any other technology is embedded within Chrome.

And from the Chrome Naive Client SDK page:

To run Native Client applications, you must use a recent version of Google Chrome, and the .nexe modules must have been compiled by the version of the Native Client SDK matched to your version of Chrome. The table below shows which versions of the Native Client SDK match which versions of Chrome:

Chrome version … can only run Native Client modules compiled by this version of the SDK
13 0.4
12 0.3
11 0.2
10 0.1

as Google says, this is a SDK, so anyone can implement this SDK and ready to be run in Chrome browsers. %11 browser share is big… I hope this will be good for Google, Unity and all other naive client implemetors… It will be great to see good and high quality games in browser space…

Randy Edmonds

May 11, 2011 at 11:49 am /

Wondering if Unity3d has a presence at Google IO this year (2011)? I’m anxious to know more about the native client features.

Aras Pranckevičius

January 9, 2011 at 10:27 pm /

@Red, @Mark: Native Client is not enabled in the current stable version of Chrome yet. And there are some minor things to be done on both Google’s and our sides to make it “fully work”. So… it’s not shipping yet. Stay tuned.

Mark

January 9, 2011 at 4:13 pm /

As already Red asked: how is it going with NaCl?
Cause the news was May 2010.. and it would be great to see it workin.. :)

Red

January 7, 2011 at 6:07 am /

It is 2011 now and I still can not find any up-to-date information on Unity3d on NaCl. Did you guys make any headway? A beta possibly?

— Just another Linux household with kids looking to play some games

Chris

June 6, 2010 at 1:23 am /

Im just most excited about Android support I love Android and cant wait till i start making games for the platform.

Daniel Wind

June 2, 2010 at 9:22 pm /

This is amazing guys. Hope Native Client != Active-X in regards to security concerns, so we’ll be able to have Unity games without any plugin…

horace

May 30, 2010 at 12:25 am /

what if native client really takes off in a few years? theoretically it could make every other platform superfluous. the browser will be the new operating system and once native client also gets processor platform independent by using llvm ir binaries, everything that runs a browser could run your games. this would be kind of awesome and all the other unity ports would be moot. :) i think this is what google dreams about actually… well, some consoles and apple probably will block it. :p

“””It’s not “plugin free” the way, say, rebuilding on top of webgl would be. You still need to download all the code that you would download for the plugin.”””

it’s actually exactly the same as using webgl just that you aren’t limited to javascript. with webgl games you also need to download all the code for an engine written in javascript.

@ashkan: there are a lot more engines out there that are interesting. native client especially will even out the playing field for open source engines who would never have the manpower to maintain old fashioned web plugins. there for sure will be a comeback for blender’s game engine on the web for example. with some work put into it, blender’s engine could be quite a contender usability-wise. nobody else has a modeller/engine combination like that…

Vectrex

May 28, 2010 at 3:35 pm /

“Its not “plugin free” the way, say, rebuilding on top of webgl would be.”
I believe it’s almost the same. Since NaCI has an opengl layer. The best thing about this other than people not having to install a plugin (a massive blocker), is that you can use whatever code you want, you don’t need to build to a specific version of the web plugin. So now unity can happily update and you can use the latest without messing about. I really hope the firefox plugin gets accepted as a standard plugin, then we’re set!

CQ

May 27, 2010 at 10:35 pm /

This is a bit misleading…

Its not “plugin free” the way, say, rebuilding on top of webgl would be. You still need to download all the code that you would download for the plugin.

Its just that you wont need your user to click a button to accept the plugin to get it.

Ashkan

May 27, 2010 at 11:40 am /

@jonas yes! i was not aware of ANGLE project. i don’t know how much is it’s priority for google but i know that you work with them and geniuses are common at google. most of the times they don’t do things wrong or with great missing features like what Apple/Microsoft do.
@horace
this is not very important!
1 unity still don’t have a great install base and unity’s power is not it’s plugin penetration.
2 unity’s power is it’s fast iteration and reusability and …
3 even without taking web player into account just 2 or 3 other engines in less than $3000 price range can even be compared to unity. i think just torque and maybe shiva can be compared and surely they have features that unity don’t and this will continue in future but for most projects and in overall unity is the best engine outthere.
cryengine or unigine might have features that unity don’t have but unity has features that they don’t have. their price is not comparable. i love unigine’s visual capabilities but $40000 is too much even when there is no need for a plugin for my game to run on the web.

Riya

May 27, 2010 at 5:52 am /

I am curious,
If a game made by Unity3D or whatever,
And run on web page through Chrome browser,
Then users buy the game through Google’s payment system,
Is it a possibility can do against piracy?

Aras Pranckevičius

May 26, 2010 at 7:58 am /

@horace: that is true. However, NativeClient will come to Chrome (and potentially other browsers), making it easier for the competition, no matter what we do. If it takes off, we’d better take advantage of it. Which is exactly what we’re experimenting with.

Kristof

May 25, 2010 at 8:45 pm /

What? Native code running inside Chrome?..
Well, I’m gobsmacked!

UT never fails to amaze me!

horace

May 25, 2010 at 7:27 pm /

native client sounds awesome.

the only problem for unity… it will also make it much easier for the competition to move to the web. :)

an old fashioned web plugin is a lot of effort to pull off and maintain (supporting all the different browsers on the different operating systems, security issues,…) but once native client gets included in other browsers too, the whole 3d engine on the web thing will be much easier to do.

jonas echterhoff

May 25, 2010 at 3:44 pm /

@Ashkan: as for GLES 2.0 performance on windows, I believe the current NaCl implementation does layer OpenGL ES 2.0 on top of desktop GL – but the plan is to switch that to D3D in the future.

Lance Snider

May 25, 2010 at 8:39 am /

That’s fantastic news! You guys are awesome. I doubt ie will ever follow suite, but this’ll give Unity a lot of exposure making a lot of ie users download the player. Great work, guys! Keep it up.

Ashkan

May 25, 2010 at 4:07 am /

@Aras
surely it’s exciting. we can run the same game on a mobile and our pc. really the same game! this will add linux support to unity web games and it’s another awesome things but i was just trying to figure out is there any problem in the way.
about performance: you understood correctly. if they execute it on top of D3D so it’s as fast as a directx renderer.
good luck guys! you always rock!!!

Mark DeLoura

May 24, 2010 at 11:25 pm /

Hey Unity guys,
I just want to publicly say thanks for being so fantastic to work with on this project. I’m looking forward to the great Unity games we’ll see running on NaCl soon!

Aras Pranckevičius

May 24, 2010 at 10:10 pm /

@Ashkan: right now GLES2.0 does not support tessellation. But then, not much of real desktop OpenGL implementations support tessellation either (e.g. all Macs are still OpenGL 2.1… long way to go until 4.0!). But if there were a need, all it needs is exposing an extension. GLES2.0 has extensions just like desktop OpenGL.

I’m not saying that plugins become not important. Just having Unity games without a plugin is exciting as well.

What about performance – not sure I understood the question. I’m not sure how NaCl will actually execute OpenGL ES backend. There’s ANGLE project that runs it on top of Direct3D; or it might try to execute it on top of OpenGL. I’m not sure how they do it right now, but I guess running on top of Direct3D is more stable and potentially faster.

Ashkan

May 24, 2010 at 3:55 pm /

@Aras
does OpenGL ES supports new features of OpenGL 4 like teselation and …
i know that unity don’t support those features in OpenGL 4 and D3D11 but you’ll do that and i am sure that OpenGL ES will not support it because it’s intended for small devices and embeded devices so if you need console quality on the browser plugins remain important for always. what about the performance issue that i mentioned about windows?

Aras Pranckevičius

May 24, 2010 at 6:53 am /

@Ashkan:

Yes, NativeClient supports OpenGL ES 2.0 as rendering API. Incidentally, we have been working on that for Unity 3.0 (for iPhone and Android). There’s not much difference between OpenGL ES 2.0 and “desktop” OpenGL; I would actually say GLES2.0 is much better (because they cleaned up lots of cruft that was accumulated in OpenGL over time). So it’s smaller and leaner API.

PhysX source code: yes, we haz it ;) That’s how we ported it to Macs, Wii, iPhone, Android and now NativeClient. None of those platforms are supported by PhysX out of the box.

another awesome post again. congratulations brett
some questions related and unrelated
native client just supports openGL ES. unity’s current renderring api is dx9 and openGL 2. does it mean that our great game engine don’t want to compete in visual features?
do you have a source code for physx?
browser plugins remain important because of other browser’s lack of support but i think even if they support this. plugins might be faster without using the the natcl layer. am i right? for example on windows d3d is much faster google might use d3d on windows but i think it will end up in a bad situation if users would not be able to wrap the functionallity they want for native client.
please write a post about feature upgrades and web player size and compatability subject. what do you plan? do you plan to add some features available only in standalone games or just some features will be added to games if they use them instead of adding them to web player? for example if i use cloth it’s library will be added to my game but it’s not included in web player.
do you plan support iphone development partially on windows by supporting connecting remotely to it on windows like what others engines like shiva3d does?
sorry for asking too many questions

jonas echterhoff

May 22, 2010 at 8:21 pm /

@will: native client supports OpenGL ES 2.0, which pretty much allows you to do anything you can do in Desktop GL – so there is no reason to expect anything less from the graphics capabilities then from desktop Apps (other then a slight hit on performance).

will

May 21, 2010 at 11:17 pm /

So how far can developers push this format? I suppose the limits are the speed of connection. But can Crysis 2 levels of graphics and physics be achieved running in the browser?

Or more Wii level graphics, which opens up the ability for small teams to compete in the mainstream.

Or is it more on just a Shockwave kind of scale?

These questions need answering before I get excited.

Fernando Zapata

May 21, 2010 at 9:36 pm /

I love how quickly you guys move, it never ceases to amaze me. The Native Client for Chrome is awesome news :)! I hope the other browser makers adopt Google’s open source Native Client.

zerostride

May 21, 2010 at 6:59 pm /

@David @Peter D
I strongly suggest you watch and read the information about Native Client sandboxing.

Conceptually, all languages are the same: They get translated into machine code, and executed. During execution they access data. They turn that data into other data. The difference is, in fact, in the technical details.

Native Client code is compiled entirely ahead of time, which is different from many interpreted languages used for RIA development. It runs (as the name implies) native code. The difference between previous web technologies which ran native code (such as ActiveX) is that Google has put their development time into being able to sandbox native code. Because the program is executing in a sandboxed memory space, with sandboxed disk access, it is in a different security category from unbounded native code execution (as was mostly the case with ActiveX).

This essentially makes the browser roughly-equivalent to the Operating System. In Native Client, the browser hands you a graphics API, and a sound API; instead of drivers. So the provider of the OpenGL ES 2.0 device is Chrome, not the GPU directly. This very-thin layer on top of graphics and sound allows Google to create, essentially, a “min spec” for the “browser OS”. A software renderer could be implemented behind the GL ES device, if the hardware is not sufficient to provide one; or a dummy-sound device could be provided which simply did nothing, if no speakers were available.

It will be interesting to see this develop.

Colin Holgate

May 21, 2010 at 5:39 pm /

I too I’m curious to know if this will be a setback with regards to being permitted on iPhone.

Also, while you’re talking to Google, could you add SketchUp support please?

David

May 21, 2010 at 6:14 am /

So how is Google Native Client any different from the concept of ActiveX plugins for Internet Explorer (I’m talking conceptually not technically)? Obviously Google is cross platform which is a plus, but it is not a standard so will it be picked up by other browsers?

The Chrome app store looks great and is great news for developers but it does go some way in explaining Apple’s motivation for TOS 3.3.1

Jon Frisby

May 21, 2010 at 4:45 am /

@Peter D: This is not arbitrary native code execution, a la ActiveX. It’s basically a custom C/C++ compiler producing a subset of allowable x86/x64 machine code that can be *statically verified* (a la Java / C# class loading mechanisms). And there’s a number of significant caveats, such as no direct hardware access or access to potentially unsafe system APIs. Everything interesting, such as OpenGL has to be explicitly exposed via a bridging mechanism (which apparently UT convinced Google to do for OpenGL).

That said, there are a number of well-known hurdles that needed to be overcome before it could be considered potentially ‘robust’. If they’re at the point of even CONSIDERING its inclusion in a public-facing release, I’d guess they’ve addressed those issues.

pixnlove

May 21, 2010 at 2:28 am /

Since Unity was made free and i have started to use it for commercial project(and never stopped since), I really feel at the top of the technology with such a magnificent tools.
Unity is ahead of the Game. there is so much to come, that the future must be bright.
Unity 3, Unity 3, Unity 3!!!
Thank you guys.

Excellent news, I hope Firefox will be next step then unity will be future of web games.

Peter D

May 20, 2010 at 7:03 pm /

@gotmilk

I would agree but, I’ve seen and been involved in many instances where features of products have been removed or limited because of security issues. This has happened to firefox, internet explorer and undoubtedly will happen to chrome.

I still suspect that native code execution will be one of the first features of chrome to be ditched.

Joachim Ante

May 20, 2010 at 4:40 pm /

The existing web player is still absolutely critical to us. On Browsers where Native Client is not supported, we will use the Unity Web Player. Essentially Native Client gives us a boost to our plugin penetration by it simply working without plugin install on browsers like Chrome.

@Kristian:
We are upgrading to the latest PhysX with Unity 3.0 and are working closely with Nvidia to keep PhysX up to date by ensuring that PhysX does not introduce changes that break compatibility where it’s not necessary.

Thomas

May 20, 2010 at 2:36 pm /

Exciting news! I love that.

n0mad

May 20, 2010 at 2:21 pm /

This is AWESOME news.

Kristian Kjems

May 20, 2010 at 1:44 pm /

Does this new Google technology mean a lot of other game engines will be available on the web?

Your engine architecture and design has until now been somewhat dictated by being able to run with backward compatibility through the web plug-in. Will this new possibility change the Unity architecture? Like making upgrades to physX more often and not in general be so worried about Unity plug-in size? And not having all the Unity plug-in code in a blackbox?

gotmilk

May 20, 2010 at 1:17 pm /

@Peter D

Hello Peter. I do not think that Google is gonna drop this over a security issue. I am sure that they have tons of engineers that have taken into consideration that there will be security issues and already are looking for alternative routes to deal with these problems.

We dont see Microsoft dropping their projects whenever there are security issues found in a certain software.

Markus Kinzler

May 20, 2010 at 11:40 am /

After HP takeing over Palm, is WebOS an possible platform for Unity?

Jan

May 20, 2010 at 10:50 am /

Will Android add-on be released/available with the release of Unity 3 this summer?

Babatunde Adeyemi

May 20, 2010 at 10:37 am /

This is good news.

Martin Schultz

May 20, 2010 at 10:31 am /

Man this is the bomb. This eleminates the last barrier – the usually high plugin cancellation rate for webgames and opens up the app store for webplayer games. Wait no, it’s not the bomb, it’s a nuclear megabomb!

Peter D

May 20, 2010 at 10:27 am /

I’m wary of native client simply because when (not if) there is a security issue with it I expect it to be dropped. It’s also not supported by any other browsers at present.

I’ll continue viewing this development with interest though.

jonas echterhoff

May 20, 2010 at 8:31 am /

Some answers:
@Matt: no, this won’t be an Android-only feature – it is, in fact, completely unrelated to Android, other then the fact that both are Google technologies.

@ImaginaryHuman: Yes, for now this is Chrome only – which does have a significant (and growing!) marketshare, however (I believe currently a 11% of web users). But the tech is open source, and hopes are other browser makers will adopt it, if it becomes a success.

@Pedro: Yes, this will run on Linux. In fact, we have been playing the Lego Star Wars game shown above on Linux just fine.

@Jon Frisby: Both NaCl and the Unity port are very much still work in progress. NaCl should become officially support starting with Chrome 6, we don’t have a timeline for a Unity release yet. Check this place for updates.

Thomas Grové

May 20, 2010 at 8:16 am /

@Matt Diamond: NaCL is just another way to publish to the web, it will not require an Android add-on license.@Pedro: that’s correct, Unity content will run on Linux in Chrome, via NaCL.@The World: Google is significant. I’m blown away by their Web M initiative and I’m blown away by the diversity of their ecosystems. Further more, I’m blown away by their vibrant staff; I talked to so many nice people today and by all accounts they’ve been great to work with on these initiatives.

Daniel Rodríguez

May 20, 2010 at 7:45 am /

This is awesome. Already shared on my buzz. I am so happy seeing my two favorite companies working together bringing up innovation. Well played guys.

randy edmonds

May 20, 2010 at 7:07 am /

So Unity and Google have been working together? Interesting. I wonder if Google might find a reason to buy UT? That would be very interesting.

TheLorax

May 20, 2010 at 6:07 am /

I LIKE IT!!! In reading this post I am struck by just how different the tone is between this and the Apple stuff. I think all the Apple related posts have been David’s, so that will give it a different feel, but this Google relationship sounds like it is exciting you guys!

I look forward to putting down my dollars for a ICD Gemini or Notion Ink Adam, plus the Unity Android Add On, and getting to work.

Let’s do this!

Triomferus

May 20, 2010 at 3:30 am /

Can’t wait for more Android unity info… much moreso than this native browser info. Good post though!

Jon Frisby

May 20, 2010 at 3:01 am /

Last I heard, NaCld would only serve content from localhost (I.E. it considered any remote source to be ‘untrustworthy’ since it was still such a rough product). Does this mean that Google has fleshed it out enough that they’re ready to trust remote content — or does it mean that they’re “working on it”?

Psychoz Interactive CTO

May 20, 2010 at 2:34 am /

Omg,
This is… wow!
We got rejected quite often from portals web sites because of the plugin download. This is a tremendous news guys! Keep the good work!
@+

Charly

May 20, 2010 at 1:55 am /

So Unity Android means Apple won’t be supporting Unity anymore because they wanted JUST games for their platform. They clearly said they don’t want their games on other mobile platforms (android) with the same engine.

So this Android release will kill Unity iPhone? I want to know what you guys will do if Jobs says they will Ban our games made with Unity iPhone because you decided to support Android?

Pedro

May 20, 2010 at 1:25 am /

In theory this would enable Unity on Linux platform. Am I right? If I am this would be great!

ImaginaryHuman

May 20, 2010 at 1:00 am /

One thing you have to bear in mind is that while they’re eliminating the need for a plugin, they are replacing it (for now) with being confined to having to run in Google Chrome, which does not have significant market share at this time. But that said, it’s a great nod to the future and a very exciting place to start.

Mani

May 19, 2010 at 11:56 pm /

Sweet native client joy!!!!!

Matt Diamond

May 19, 2010 at 11:28 pm /

This is all very neat.
Q: I understand it may be too early to commit to an answer, but: assuming it comes to fruition, will Native Client builds be supported by “classic” Unity, or would that be a Unity Android feature?

Higor Bimonti

May 19, 2010 at 11:15 pm /

Wow! Great news! Congratulations, guys! Keep on rocking!

Aras Pranckevičius

May 19, 2010 at 11:05 pm /

@Bart: it’s Native Client; a technology from Google to enable native code in the browser (they have special compiler & extra runtime checks for security). That native code then talks to special APIs to access 3D (very similar to OpenGL ES 2.0), audio, input and so on.

Ilsoap

May 19, 2010 at 10:57 pm /

Sooo… basically what you’re saying is that you’re working on eliminating Unity’s biggest current drawback (plug-in download support and acceptance).

You guys rock. I shall now pick my jaw up off the floor.

Bart Libert

May 19, 2010 at 10:38 pm /

No plugin at all -> Whew that rocks. Is this something like openscreen?