イベント

【GTC2013】クラウドからのゲーム提供を目指すNVIDIAの取り組み

 米国のサンノゼで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のタイトルをクラウドゲームとして提供すると発表している。

クラウドゲーミングの大きな問題はレイテンシだが、NVIDIAでは、GRID(ここでは以前のGeForce GRIDという名称)はコンソールゲームとほぼ変わらないとしている。
クラウドゲーミングは、サーバー側でゲーム画面をエンコードして、クライアントに送信する
NVIDIAが開発しているポータブルゲームのSHIELD。OSにAndroidを採用し、ハードにはTegra 4を採用している。SHIELDもGRIDの端末として利用可能
LGのスマートテレビでクラウドゲーミングをプレイしたところ。実際に試してみても、ローカルのゲームをプレイしているのと勘違いしてしまうくらいだ

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を効率よく利用することが可能になる。

Xenハイパーバイザーの環境でGPUをパススルーで提供し、仮想マシン1つずつにGPUが割り当てられる
その代わり、DirectXやOpenGLなどグラフィック機能はフルスペックで提供される

 一方でカジュアルゲームなどは、ユーザーごとに仮想マシンを割り当てるのではなく、1つのOS上でゲームをコンテナ化する。コンテナ化では、ユーザーが動作させるアプリケーションと、そのアプリケーションを動かすOSのシステムサービスを、1つの“塊”にする。コンテナ化したアプリケーションはパーティショニングされているため、アプリケーション同士には影響をおよぼさない。

 ハイパーバイザーを利用して仮想マシンを稼働させる場合は、同じOSを複数起動するため、OSに関する部分の重複が大きい。しかしアプリケーションのコンテナ化を利用すれば、1つのOSを複数のユーザーで利用するため、サーバーとしては、無駄なリソースを個々のユーザーごとに消費しなくてもよくなる。またコンテナ化された環境を使えば、GPUをパススルーで仮想マシンごとに割り当てる必要もなく、複数のGPUを複数のユーザーで利用できる。

 ただし、アプリケーションのコンテナ化はいろいろと難しく、どのようなゲームでもコンテナ化できるわけではないので、その点に課題は残っている。

ゲームとOSの一部分をカプセル化して動作させる。複数のGPUを、複数のカプセル化したゲームで利用できる
ゲームのカプセル化は、カジュアルゲームなど、1つのゲームにそれほどパフォーマンス的を必要としてない場合に有効

遅延を決めるのは、ディスプレイの圧縮

 ゲーム自体は、ハイパーバイザーやコンテナ化によりクラウド上で動作する。

 GRIDの最大の特徴は、各ユーザーがプレイしている画面を高速で圧縮して、ネットワークで転送する仕組みだ。NVIDIAでは、この部分に注目して、Monterey SDK(開発コード名)というソフトウェアスタックを提供している。

NVIDIAでは、クラウドゲーミングのためのエコシステムを構築しようとしている。NVIDIA GRIDとサーバー、ソフトウェアを提供する
GRIDボード。4GPUと2GPUの製品が用意されている。型番に関しては、古い名称がそのまま使われている
GRIDのソフトウェアアーキテクチャ
画面をキャプチャして、エンコードするために、NVIDIAでは、Monterey SDKというソフトを用意している

 画面をキャプチャするときに、できるだけレイテンシを小さくするよう、フレームバッファから直接キャプチャする方法と、レンダリングされたアプリケーションウインドウのみをキャプチャする方式の2つが用意されている。

 フレームバッファからのキャプチャは、リアルタイム性の高い3Dシューティングゲーム(全画面表示)などのキャプチャに利用される。レンダリングキャプチャは、カジュアルゲームなどのアプリケーションのキャプチャに利用される。

 GRIDボードのGPUには、複数のストリームをH.264で圧縮するためのハードウェア(NVENC)が用意されている。このハードウェアを使って、ゲーム画面をH.264でエンコードする。H.264エンコードは、非常に重い処理だが、ハードウェアで処理されるため、非常に高速に行える。

 このように、通常のVDIとは異なるテクノロジーが採用されており、レイテンシを小さくしているので、クライアントでゲームをプレイしても遅延がほとんどないという。

フレームバッファをキャプチャする方法、アプリケーションのウィンドウだけをキャプチャする方法が用意されている
フレーム全体をキャプチャする方法は、3Dのリアルタイムゲーム、映像配信などに利用される
アプリケーションのウィンドウだけをキャプチャする方法は、カジュアルゲームなどに利用される
H.264エンコードを行うNVENCは、GPUのCUDAユニットとは別の専用回路が用意されているため、高速に画像をエンコードできる。エンコードユニット自体は2Wの電力しか消費しない

 なおNVIDIAでは、GRIDのシステムを利用して、クラウドゲーミングだけでなく、仮想セットトップボックスといったサービスも考えている。

 ケーブルテレビ(CATV)などでは、市庁舎に専用端末を提供しているが、その提供にはかなりのコストがかかる。しかしスマートテレビに仮想セットトップボックスのソフトをインストールし、GRIDのシステムを利用すれば、スマートテレビ自体をCATVの専用端末にすることができる。これなら、コストがそれほどかからない。

 NVIDIAによれば、同時に64チャンネルのテレビ放送をエンコードできるという。ただしサーバーと端末間には、高速なインターネット回線が必要となるため、CATVよりも、ホテルなど特定の建物などのクローズドなサービスにはぴったりだろう。端末も、スマートテレビだけでなく、タブレットやスマホなども利用することができる。

NVIDIAではGRIDを利用したビデオ配信システムを提案している。クライアントには、専用端末でなく、スマートテレビやタブレットなどが利用できる
GRIDを利用したビデオ配信システム。16個のHD映像が再生できる。中央には、CATVの番組表が表示されている

 NVIDIA GRIDでは、Windows 7やLinuxベースのゲームをクラウドゲーミングとしてサービスする予定にしている。日本国内ではPCゲームはそれほど注目されていないが、米国では数多くの有名タイトルがリリースされている。こういったゲームがクラウドゲーミングとして提供されていくのだろう。

 将来的には、フルスペックのWindows OSを動かすのではなく、ゲームを動作させるのに必要なだけの要素を持つ、ミニマムスペックの組み込み型Windows OSを用意すれば、よりユーザーの集約数をアップさせることも可能になるだろう。

 もしかすると、クラウドゲーミングにフォーカスしたLinux OSなどのディストリビューションも開発されるかもしれない。

 ただし、クラウドゲーミングが普及するためには、現状のPC用ゲームソフトだけでなく、クラウドゲーミングでしかプレイできないビッグタイトルがリリースされる必要があるだろう。

 また、ゲームベンダーにとっては、パッケージでのゲーム販売から、ゲームソフトをサブスクリプションやサービスとして販売する形にビジネスが変化してくる。このような変化にきちんと対応していく必要があるだろう。

(山本 雅史)