イベント
【GTC2013】クラウドからのゲーム提供を目指すNVIDIAの取り組み
(2013/4/8 06:00)
米国のサンノゼで3月19日から開催された「GPU Technology Conference(GTC) 2013」は、NVIDIAが開催しているGPUに関する技術カンファレンスだ。
今回は、NVIDIAの発表しているクラウドゲーミングシステムのGRIDのバックエンドに関して解説していく。
ゲームをクラウド化するGRID
GRIDは、大ざっぱに言ってしまえば、クラウドサーバー上でゲームソフトを動かし、インターネットを経由して画面を端末に送信して、プレイしてもらうものだ。仕組みとしては、クラウド Watchの読者にはおなじみの、仮想デスクトップ環境(VDI)と変わらないサービスだといえるだろう。
ただゲームでは、画面転送のレイテンシ(遅延)が大きく問題になるし、端末側での操作(ジョイスティックなど)にすぐに反応しなければ、リアルタイム性の高いゲームをプレイできなくなる。こういった意味では、VDIよりもバックエンドのシステムに対する要求が高いといえる。
一方でクラウドゲーミングのメリットとしては、クライアントとなるデバイスを選ばないという点がある。クラウドゲーミングのクライアントソフトさえあれば、現在提供されているAndroidタブレット、スマートフォン、あるいはAndroid搭載の液晶テレビでもプレイすることができる。
またポータブルゲーム機では、ソフトウェア容量の限界で提供できないゲームソフトも、プレイすることが可能になる。さらに、ポータブルゲーム機ではプレイできない、PC用のゲームソフトもプレイできる。
ゲームベンダーにとっては、さまざまなプラットフォーム向けにゲームを提供してきたが、移植には開発コストもかかってくる。さらに、それぞれのプラットフォームの特徴を出そうとすれば、単なる移植ではなく、作り直しとなってしまうことも多い。
そこで、ゲームを1つのプラットフォームにチューニングして開発し、クラウドゲーミングとして提供すれば、さまざまな端末で、ユーザーがゲームをプレイできるようになる。開発側には、開発コストを抑えられるメリットがあるわけだ。
実際、クラウドゲーミングに対する要求は高まっているという。NVIDIAが提供しているGRIDとは異なるが、ソニーはPS4において過去のプラットフォームとの互換性をなくし、クラウドゲーミングのGAIKAI(2012年にソニーが買収)が、PS3のタイトルをクラウドゲームとして提供すると発表している。
PCゲームをクラウド化するGRID
NVIDIAが提供を予定しているGRIDは、x86サーバーとグラフィックカードのGRIDボードを組み合わせたものだ。以前の記事で紹介したVCAは、VDIという用途に特化したアプライアンスだが、ハードウェア構成はクラウドゲーミングで使用するシステムとほとんど変わりない。このため、GRID K1/K2が使用されている。
ソフトウェアスタックとしては、2種類用意されている。
リアルタイム性の強いゲーム向けの場合、ハイパーバイザーにはXenを利用し、Windows 7/LinuxなどのOSを仮想マシンで動かす。仮想化されていることで、CPUやメモリ、ストレージなどを、複数のユーザーで効率よく利用できる。
ただしGPUに関しては、XenのGPUパススルー機能を利用して、各VMに1つずつ割り当てている。このため現状では、リアルタイム性の高いゲームにおいては、VMごとにGPUが必要になるが、将来的にハイパーバイザーでGPUの仮想化がサポートされれば、1つのGPUを効率よく利用することが可能になる。
一方でカジュアルゲームなどは、ユーザーごとに仮想マシンを割り当てるのではなく、1つのOS上でゲームをコンテナ化する。コンテナ化では、ユーザーが動作させるアプリケーションと、そのアプリケーションを動かすOSのシステムサービスを、1つの“塊”にする。コンテナ化したアプリケーションはパーティショニングされているため、アプリケーション同士には影響をおよぼさない。
ハイパーバイザーを利用して仮想マシンを稼働させる場合は、同じOSを複数起動するため、OSに関する部分の重複が大きい。しかしアプリケーションのコンテナ化を利用すれば、1つのOSを複数のユーザーで利用するため、サーバーとしては、無駄なリソースを個々のユーザーごとに消費しなくてもよくなる。またコンテナ化された環境を使えば、GPUをパススルーで仮想マシンごとに割り当てる必要もなく、複数のGPUを複数のユーザーで利用できる。
ただし、アプリケーションのコンテナ化はいろいろと難しく、どのようなゲームでもコンテナ化できるわけではないので、その点に課題は残っている。
遅延を決めるのは、ディスプレイの圧縮
ゲーム自体は、ハイパーバイザーやコンテナ化によりクラウド上で動作する。
GRIDの最大の特徴は、各ユーザーがプレイしている画面を高速で圧縮して、ネットワークで転送する仕組みだ。NVIDIAでは、この部分に注目して、Monterey SDK(開発コード名)というソフトウェアスタックを提供している。
画面をキャプチャするときに、できるだけレイテンシを小さくするよう、フレームバッファから直接キャプチャする方法と、レンダリングされたアプリケーションウインドウのみをキャプチャする方式の2つが用意されている。
フレームバッファからのキャプチャは、リアルタイム性の高い3Dシューティングゲーム(全画面表示)などのキャプチャに利用される。レンダリングキャプチャは、カジュアルゲームなどのアプリケーションのキャプチャに利用される。
GRIDボードのGPUには、複数のストリームをH.264で圧縮するためのハードウェア(NVENC)が用意されている。このハードウェアを使って、ゲーム画面をH.264でエンコードする。H.264エンコードは、非常に重い処理だが、ハードウェアで処理されるため、非常に高速に行える。
このように、通常のVDIとは異なるテクノロジーが採用されており、レイテンシを小さくしているので、クライアントでゲームをプレイしても遅延がほとんどないという。
なおNVIDIAでは、GRIDのシステムを利用して、クラウドゲーミングだけでなく、仮想セットトップボックスといったサービスも考えている。
ケーブルテレビ(CATV)などでは、市庁舎に専用端末を提供しているが、その提供にはかなりのコストがかかる。しかしスマートテレビに仮想セットトップボックスのソフトをインストールし、GRIDのシステムを利用すれば、スマートテレビ自体をCATVの専用端末にすることができる。これなら、コストがそれほどかからない。
NVIDIAによれば、同時に64チャンネルのテレビ放送をエンコードできるという。ただしサーバーと端末間には、高速なインターネット回線が必要となるため、CATVよりも、ホテルなど特定の建物などのクローズドなサービスにはぴったりだろう。端末も、スマートテレビだけでなく、タブレットやスマホなども利用することができる。
NVIDIA GRIDでは、Windows 7やLinuxベースのゲームをクラウドゲーミングとしてサービスする予定にしている。日本国内ではPCゲームはそれほど注目されていないが、米国では数多くの有名タイトルがリリースされている。こういったゲームがクラウドゲーミングとして提供されていくのだろう。
将来的には、フルスペックのWindows OSを動かすのではなく、ゲームを動作させるのに必要なだけの要素を持つ、ミニマムスペックの組み込み型Windows OSを用意すれば、よりユーザーの集約数をアップさせることも可能になるだろう。
もしかすると、クラウドゲーミングにフォーカスしたLinux OSなどのディストリビューションも開発されるかもしれない。
ただし、クラウドゲーミングが普及するためには、現状のPC用ゲームソフトだけでなく、クラウドゲーミングでしかプレイできないビッグタイトルがリリースされる必要があるだろう。
また、ゲームベンダーにとっては、パッケージでのゲーム販売から、ゲームソフトをサブスクリプションやサービスとして販売する形にビジネスが変化してくる。このような変化にきちんと対応していく必要があるだろう。