As you probably know, Construct 2's game engine is based exclusively on HTML5 browser technology. Even when ported to other platforms as "native" apps using wrappers like node-webkit or CocoonJS, it's still the same HTML5-based engine powering the game. This means feature support depends on what the browser provides (or in some cases what the wrapper supports). The web is advancing quickly, and there are some features and developments on the horizon which may be of interest to Construct 2 users. Here's a summary of what we're keeping an eye on here at Scirra.
Improving mobile browsers
Android 4+ users can now use Chrome for Android, which is now more or less up-to-date with the desktop browser and is on the same 6-week update cycle. It's immeasurably better than the Android stock browser, so we strongly recommend using it. New Android devices also now ship with Chrome as the default browser. There's also a beta version you can use to check out updates sooner, like with the desktop version. There's also Firefox for Android, although its WebGL performance is a bit slow at the moment due to a known issue.
With the latest Safari iOS and Chrome for Android, our tests have shown browser gaming on mobile is surprisingly good - just watch out for the weaker GPUs and limited memory, especially on old devices. While mobile browsers are still a little behind desktop browsers, they're steadily improving and catching up. We think the gap should be closed up soon!
Increasing WebGL support
We've supported a WebGL renderer for Construct 2 games for a long time now. It's about twice as fast as canvas 2D - or more, depending on the benchmark - even on mobile. It also supports some really awesome effects. However for a long time it hasn't been widely supported, only working on desktop Chrome and Firefox. This is beginning to change.
Most interestingly, it appears Internet Explorer 11 may support WebGL. If it did, WebGL would be supported in all major desktop browsers. Note however this is based on clues from a leaked build; Microsoft could change their mind... but let's hope they don't, especially since a significant part of our criticism of IE10 was about the lack of WebGL support.
On mobile, improvements are on the way too. Chrome for Android can enable it from chrome://flags, and we expect it should be on by default in the near future. Firefox for Android supports it, and new mobile platforms like Firefox OS and Blackberry 10 also support it by default. If IE11 supports it then hopefully Windows Phone 8 will as well. That just leaves Safari - but considering they already support it but have disabled it, hopefully they'll join in eventually as well. Finally, Ludei have announced support for WebGL in CocoonJS, which should allow you to rely on WebGL support in iOS and Android native apps regardless of the browser. So the picture of WebGL support should be improving a lot in the near future!
Chrome splits from WebKit
For the past few years, Chromium (the engine behind Chrome) and Safari have shared the same open-source rendering engine, called WebKit. Recently Google decided to split off from WebKit and create their own independent engine called Blink.
In the short term, this will have very little effect; for now, Blink is still virtually identical to WebKit. However it's interesting to think about the long term implications. It means Google has more freedom to experiment with their browser engine. This could mean more features and better performance, all delivered more quickly than was previously possible. We're definitely watching with interest to see what Blink is going to make possible.
Rumour of Chromium-powered Android web view
This is a pretty technical point, but if any of you have tried publishing a game with PhoneGap, you've likely found the performance very poor on both Android and iOS. This is because the native app's browser (the Web View control) is very slow on these platforms. It's not actually a full browser, and lacks the things that make browsers fast, like hardware-accelerated rendering. While CocoonJS exists to solve this problem, we've heard rumour from Google that Android might use Chromium for the web view. This means making it more like a real browser, and hopefully includes all the performance benefits as well. We don't know if this will really ship, but let's hope it turns up in Android 5!
Mozilla have launched a fascinating project called asm.js, aimed at making it possible to get native performance from browser apps. However, we probably won't be taking advantage of it for Construct 2. I've explained why in more detail in this forum reply I made about asm.js.
The User Media object uses WebRTC to let you access a video feed from the user's camera in Construct 2. Microphone input is also on the way. You can try it now using this microphone input demo, but it currently requres Chrome Canary (and a microphone!). It should be coming soon to stable Chrome and hopefully other browsers after that. This can allow for some truly innovative ways to control games - anyone remember GNILLEY?
WebRTC doesn't stop there. It's all about real-time peer-to-peer communication. It opens up the possibility of low-latency multiplayer networking, in a way which is much more efficient than WebSockets can achieve. We'd love to explore this further in future, but we can't guarantee anything right now. It's still an early browser feature, and we've got a lot of other requests to consider in the mean time!
Web Audio API
When the browser supports the Web Audio API it allows for all kinds of advanced audio effects, including positioned sounds. It's currently supported in desktop Chrome and iOS Safari. However Firefox are actively working on it, and Chrome for Android should support it soon too. We think audio effects are a great way to make games more immersive, so let's hope it continues to become standardised and become adopted by other browsers and platforms.
Web MIDI API
While it's a bit more of a niche use case, for musical games being able to use MIDI input and output could be exciting. This one isn't supported anywhere yet but is on the standardisation track. If browsers support MIDI input and output, we'll be sure to add a plugin for it!
Ambient light reading
This is another more unusual one, but a lot of phones and tablets have ambient light sensors built in. Mozilla are working on a way to make this accessible to web content. Imagine a game with a level you can only play in a dark room, or in bright sunshine. Again we'll make a plugin if it comes to browsers!
Speech recognition & synthesis
Voice-controlled games could be an interesting avenue to explore, as well as having the game automatically talk back at you. This could make for another interesting plugin. Chrome are actively working on this, and apparently Firefox are interested too.
We've mentioned several browser technologies in this post, like WebGL and the Web Audio API. We set up a test page called ScirraMark which can quickly report which of them your browser supports, and give an overall score. It's useful for testing a range of browsers and platforms for their gaming capability. We will extend this to test for new upcoming features once they get implemented in at least one browser.
The Web is the Platform
I hope this shows how the web is advancing quickly and showing lots of promise as a deeply capable platform for your games to run on. We're excited about a lot of the developments on the way, and our aim is to make sure as many of them as possible are exposed through plugins in Construct 2, so you can play with them and find cool ways to integrate them in to your projects. And in the long term, it's doubtless there's even more to come!