ニュース
【特別企画】シンラ・テクノロジーが目指す“スーパーコンピューターゲーミング”とは何か?
シンラ独自の研究開発で新次元に入ったクラウドゲームの技術
(2014/10/15 00:00)
シンラ独自の研究開発で新次元に入ったクラウドゲームの技術
ここまでに触れてきた既存のクラウドゲーミングサービスで、実際に遊べるゲームタイトルは“既存ゲームのクラウド版”というものがメインだった。Amazon AppStreamだけは“ハイブリッドクライアント”という概念で新機軸を打ち出そうとしているが、今のところこれといったヒット作は出ていない。また、ゲーム屋ではないサービス事業者がクラウド向けオリジナルタイトルを開発するのは難しいので、既存ゲームにコンテンツを頼るのは自然の流れでもある。
その流れを変えようとしているのがシンラ・テクノロジーだ。同社が考えているのは、クラウドゲーミングサービスがゲームプレイ手段の支流ではなく、主流となった際のビジョンである。そうすると、クラウドゲームには既存タイトルとは違った設計思想・アーキテクチャがあるべきである。
シンラ・テクノロジーを支える技術スタッフは、数年にわたってこのテーマに向き合い、クラウドゲームの新技術を開発してきたという。その集大成を“Shinra System”と呼ぶ。このシステムでは既存ゲームのクラウド版を効率的に実行することはもちろん、様々なタイプの、クラウドならではのゲームを実現することが可能だ。
今回、筆者の取材に詳しく応えてくれた技術担当シニア・バイス・プレジデントの岩崎哲史氏は“Shinra System”開発のキーマンだ。岩崎氏は1994年よりスクウェアに在籍。シリーズ初のオンラインタイトル「ファイナルファンタジー XI」の開発に携わり、ネットワークやサーバー技術のスペシャリストだ。ドイツのゲームデベロッパーCrytekにて「Crysis」シリーズ作品の開発に携わった経験もあるといい、現在はEidosモントリオールの開発ディレクター職も兼務。スーパーな開発者であることは間違いない。その岩崎氏が開発した各種新技術に基づく新次元のクラウドゲームの技術を、以下解説していこう。
Shinra Systemとは何か?
Shinra Systemが礎にしている根本的な発想はシンプルだ。クラウドゲームを実行するのはクラウドサーバーである。クラウドサーバーは、スーパーコンピューターである。スーパーコンピューターには適切な分散処理機構が必要である、という考えだ。
スーパーコンピューターというと、何やら大仰に聞こえる。例えば理化学研究所の「京」は富士通のSPARC64カスタムプロセッサを始めたくさんの専用部品で作られていて、とても余人が真似できるものではないが、実は世界的なトレンドはすでに別のところにある。
長崎大学工学部先端計算研究センターが開発した「DEGIMA」は登場時世界3位の演算性能を誇ったが、その中身はIntel Core i7とNVIDIA GeForce GT 200を載せたPCを144台リンクさせたものだ。一般のお店で買えるような汎用品で構成されているのである。当然、カスタム品よりもずっとコスト効率が高い。これを皮切りに、現在世界トップランクに入るスーパーコンピューターの多くが、カスタムチップではなく汎用品に基づくものになっている。いまやスーパーコンピューターは専用の研究所や工場がなくても作れるのだ。
クラウドサーバーは、簡単にいえば大量のサーバーマシンの集合体である。これらを高速リンクでつなぎ、適切に処理を分担させたうえでひとつの仕事を行なえるようにすれば、そのまま1つのスーパーコンピューターになる。Shinra Systemではこの発想にもとづき、これを実現するため複数の特許技術が開発された。
まず基礎となるのが「リモートレンダリングアーキテクチャ」だ。これはゲームプロセスを実行するCPUと、レンダリングを担当するGPU間の対応を柔軟に調整できるよう開発された技術。仕組みとしては、ゲームプログラムが発行する描画命令をフックして、ネットワークを通じて別のレンダリング専用マシンに飛ばすというものになる。
この仕組みを使えば、クラウドサーバー内にあるマシンリソースをフルに活用することが可能になる。例えば、CPUをたくさん乗せたCPUサーバーでゲーム処理を行ない、GPUを山盛りにしたGPUサーバーで描画だけを行なう。サーバー用GPUは非常に強力なので、CPUとGPUが1対1で対応しているとGPU側でCPUの処理待ちが発生することになるが、「リモートレンダリングアーキテクチャ」を使えばCPU・GPUの負荷量を最適に分配することが可能になるわけだ。
この分散モデルのメリットは、大量のゲームプロセスを同時に走らせる際に顕著となる。クラウドゲーミングサービスで既存ゲームのクラウド版を提供する際にもっともよくあるシチュエーションだ。さらに、Shinra Systemでは同じ種類のゲームプロセス(同じゲーム)を複数走らせる際、3Dモデルやテクスチャなどのアセットデータを複数プロセス間でオンメモリ共有できる仕組みも実装しており、1サーバーで実行できるゲームプロセス数をさらに増加させている。
「リモートレンダリングアーキテクチャ」では複数マシン間で描画命令だけでなく描画に必要なテクスチャや頂点データ等も転送されるため、サーバー間で必要な通信帯域は膨大なものになる。これを支えるのが「デュアルプロトコルインターコネクション」という技術だ。
これは、マシン間の通信に一般的なTCP/IPと、RDMAを併用するものだ。RDMAとはRemote Direct Memory Accessの略で、PCではハードディスク等で使われているDMAのイーサネット版。OSを介することなく他のマシンに直接非同期のメモリ間転送ができ、適切に構成されたネットワーク環境では膨大なデータ転送を低遅延で軽々と扱える。これらの技術を組みあわせることで、Shinra Systemのサーバー群は緊密に連携し、スーパーコンピューターとしての側面を帯び始めるのだ。
3タイプのソフトウェアアーキテクチャで多様なゲームを実現
上記の技術をベースに、Shinra Systemでは様々なゲームを実現できる。既存ゲームを1サーバーで大量に走らせてもよし、あるいは複数サーバーで大きな1ゲームを走らせてもよし。シングルプレーヤーゲームからMMOゲームまで何でもござれだ。
ただ、サーバーの使い方の可能性が広すぎてゲームの作り手が混乱することを懸案して、シンラ・テクノロジーではゲーム設計のひな形と言うべき、3種類のプロトタイプ・アーキテクチャを用意している。
ひとつめのアーキテクチャは、内部的に「スタンドアローンアーキテクチャ」と呼ばれているもの。CPUサーバーで小さなゲームプロセスを走らせ、GPUサーバーでそのゲームのレンダリングを行なう。1つのゲームプロセスを1人のユーザーが利用する形態で、既存ゲームのクラウド版を走らせるというのがこのアーキテクチャの最もありうる使い方だ。
ふたつめのアーキテクチャは、正式な呼称が定まっていないため仮に「MMOアーキテクチャ」と呼ぼう。このアーキテクチャではCPUサーバーで各ユーザー毎にゲームプロセスを提供するが、ゲームサーバープロセスが別に存在し、それら多数のゲームプロセス間の同期やゲーム状態の維持を司る。構造としては既存のサーバー・クライアント型マルチプレーヤーゲームと同じで、さらにクライアントプログラムまでもクラウド上に置いたものと考えていい。
構造は既存のMMOゲーム等と同じだが、クライアントプログラムがゲームサーバーと同じ場所にあるので、ゲームの作り方は少々変わる。まず、クライアントとサーバー間の遅延は無いも同然なので、同期問題に苦心する必要はない。当然、不正パケット等の対策もサーバー側には不要。各ユーザーにはほぼ完全な同期ゲーム空間が平等に提供される。同時プレーヤー数はサーバー能力次第だが、原理的には数名から数千名まで拡張可能だろう。
3つめのアーキテクチャは、これこそがまさにShinra Systemの真骨頂だ。これも呼称が定まっていないため仮に「マルチユーザーアーキテクチャ」と呼ぼう。このアーキテクチャでは、CPUサーバーで実行される1つのゲームプロセスに複数のユーザーが接続できる。イメージとしては、ゲーム機にコントローラーを複数接続してローカル対戦する風景に近い。
MMOアーキテクチャと異なるのは、ゲーム状態の管理を司る専用のゲームサーバーが存在しないことだ。言うなれば、従来型のローカルマルチプレーヤーゲームと同じ作り方で、オンラインマルチプレーヤーゲームが実現する。当然、同期も完璧、というより根本的に完全同期型のマルチプレーヤーゲームである。
ゲーム規模は1台のサーバーで実行できる規模よりは大きくできないため(とはいってもサーバーの能力はゲーム機等とは比較にならないレベルだが)、MMOアーキテクチャほどの大人数は収容できないが、1対1の格闘ゲーム、4人対戦の「マリオカート」から64人対戦の「バトルフィールド」までの規模には最適だろう。