Is there any Room for WebRTC in Gaming?

November 9, 2015

A few use cases where WebRTC can be found in gaming.

201511-gG

When WebRTC first came out, everyone were in frenzy trying to figure out which verticals will end up using WebRTC. One of the verticals that keeps popping up, but never sticking around for long is gaming.

When discussing WebRTC and gaming, there’s more than a single use case – there are a few dominant one; and I wanted to share them here this time.

If what you’re after is cloud gaming and similar use cases, then you should probably also read about cloud gaming, virtual desktops and WebRTC.

#1 – Social Games

Remember Cube Slam? Google’s first demo of WebRTC, where you can play a game with someone else and see him on the other side?

That was a demo. Jocly Games is the best example I have. Jocly Games offer turn by turn board games where your opponent is another player somewhere. If you wish, you can see each other during the game by the help of WebRTC. I’ve interviewed Michel Gutierrez, the CEO of Jocly Games two years ago.

Roll20 does a similar thing for multiplayer RPG games.

#2 – Motion Sensor

While I haven’t seen any serious game using this, the fact that you can get a camera feed into a game means you can track movement. And if you can track movement – you can use it to control something.

How about a game of Snake?

#3 – Multiplayer Gaming

Multiplayer games require synchronization between players. The better the connection the more responsive the game. And where latency is important, there’s room for WebRTC’s data channel.

Two and a half years ago, Mozilla released a proof of concept of sorts. Its own WebRTC demo, focused on the data channel. It was a game called BananaBread. It is a first person shooter where the players communicate their positions and actions directly with each other using the data channel.

This year, I reviewed a book about multiplayer game development in HTML5. While the WebRTC part of it was skinny compared to the rest, it did mention its capability.

In the wild, I haven’t seen any evidence of this being used a lot. I assume it is due to the relative complexity of implementing it and taking care of cases where some players can’t use the data channel or must relay it via TURN servers.

#4 – Controller and Display

This is something I haven’t seen up until recently, and now I’ve seen it several times in the same month.

AirConsole uses this technique. To some extent, Ericsson’s Remote Excavation demo takes the same approach.

The idea is one device holds the controls over the other. In our case, a game controller and the PC/console running the game (on a browser of course). Once the two pair up using a WebRTC data channel, the latency involved in passing commands from the controller to the device are minimized.

What am I missing?

4 different typical use cases. None used in any popular game. None considered “best practices” or common approaches to game development.

  • Are there more use cases for gaming with WebRTC?
  • Is any of them making headway in large scale commercial games that I am unaware of?
  • Is there a reason why none of them is catching up?

You may also like

Comment​

Your email address will not be published. Required fields are marked

  1. And what about WebRTC usage on Cloud Gaming ?
    Few years ago Onlive an Gaikai services was build on Flash techno for Streaming Game over network.
    Now WebRtc seem to be a good candidate to replace “old” Flash streaming stack, isn’t it ?

  2. Wouldn’t a large scale game, an MMORPG, be problematic on WebRTC? Is WebRTC stuck to playing games that require a small number of people?
    An example would be a WebRTC version of a board game?

    1. In an MMORPG not all players are located in the same area at all times. Optimizations can be made and connections to other players can be generated or torn down based on proximity for example. Not sure if there is or isn’t room for WebRTC’s data channel in MMORPG.

      For board games, the answer is simper 🙂

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}