プライベートゲームストリーミング

Rainway というサービスがある。WebRTC を利用しているという記事をどこかで見たのだが、よくある配信サービスなんだろうなと思ってたが、全然そんなことなく、かなりすごいサービスなのでまとめておく。

Rainway は簡単に言うと、Windows マシンをゲームストリーミングサーバにし、ブラウザで Windows で動くゲームをプレイすることができるようになるサービスだ。

Image for post
Image for post
Rainway のサイトから引用

そもそもゲームストリーミングとはゲームをサーバ側で実行し、その結果の映像をだけをプレイヤーに届けるという仕組み。つまりコントローラーやキーボードの情報を送るのと映像を再生する以外、手元の端末でやる必要がなくなるため高性能なマシンが必要なくなるのが最大のメリット。

またソフトを購入してダウンロード概念もなくなるのも面白い。購入した瞬間にすぐプレイできる。ただし、回線が早く安定していることが前提。

ちなみに最近 Google が Project Stream を発表した。

Rainway はこのゲームストリーミングをプライベートに作ってしまうという仕組み。

つまり自分の Windows マシンに Rainway ホストをインストールすると、あとはブラウザから Rainway のサイトにアクセスするだけでブラウザでゲームがプレイできる。ちなみに今の所 Steam 限定の模様、多分。

とりあえず試してみたスクリーンショット

Image for post
Image for post
Rainway サイトで ONI をブラウザでプレイ
Rainway サイトで PUBG をブラウザでプレイ

Windows 側には Rainway ホストをインストールする。利用しているハードウェアがバレバレ。

Image for post
Image for post
Windows Rainway クライアント(というかサーバ)

技術的な話

さて、彼らはこれをどう実現しているのか。大前提として WebRTC を利用している。P2P での利用で間違いない。

また MediaChannel は利用していない。彼らは DataChannel のみ利用している。SDP を見たので間違いない。

おそらく libwebrtc を使っている。ただかなりいじりまくっていて、何よりもエンコーダーに GPU が指定できるようになっている。

中身は C++ / C# でゴリッゴリ。DataChannel 上に流すプロトコルは sachiel というのを自前で実装しているようだ。Protocol Buffer ベースとのこと。

DataChannel で Windows ホストでキャプチャしたゲーム映像を送りつけて、ブラウザ側はおそらく Emscripten 辺りで頑張って H.264 をデコードし canvas 使って再生という感じだろうか。この辺は妄想だが、まぁあたってると思う。

ブラウザは Gamepad API を使ってると思われる。

これを DataChannel に乗せて、WIndows に渡して、そこでゲームに対して情報を渡しそこで再生した映像を H.264 に HWA で変換して、DataChannel でブラウザに渡すという流れ。

何がすごいのか

プライベートでできてしまうというのもすごいが、この会社は「ゲームストリーミングをブラウザで実現させる」という技術をすでに持っているということがすごい。

Microsoft とか Mixer との相性もいいし、買ってしまうのでは?と思ってしまうくらい。

とか書いてたら、こんな記事を見つけた。

WebRTC を利用して数名でこの技術を実現しているのはすごいとしか言いようがない。

WebRTC を利用したビジネスとしてはとても期待してしまうし、羨ましい。

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store