(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0017】
[実施形態1]
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。以下に説明する一実施形態は、描画システムの一例としての、ネットワークを介してクライアント端末から受信した画面要求に応じてゲーム画面を描画し、得られたゲーム画面をネットワークを介してストリーミング形式でクライアント端末に送信するゲームシステムに、本発明を適用した例を説明する。しかし、本発明は、ゲームに限らず、クライアント端末からの要求に従って画面の描画を行い、得られた画面をクライアント端末に送信することが可能な任意の機器及びシステムに適用可能である。
【0018】
《描画システムの構成》
図1は、本発明の実施形態1に係る描画システムのシステム構成を示した図である。本実施形態の描画システムでは、各クライアント端末400から受信した要求に応じてゲーム画面を描画し、該クライアント端末400に送信する。
【0019】
まず、ユーザ等の操作により1つのクライアント端末400からネットワーク500を介してゲーム画面の提供要求が命令サーバ100になされると、命令サーバ100は、提供するゲーム画面に係る演算処理を実行し、ゲーム画面の描画命令に係る情報を生成する。
【0020】
また、命令サーバ100には複数の描画サーバ300が接続されており、命令サーバ100はゲーム画面の提供要求を受信した1つのクライアント端末400に対して、このうちの1つの描画サーバ300をゲーム画面の描画処理を行うサーバに割り当てる。命令サーバ100と描画サーバ300とは、命令サーバ100とクライアント端末400間と同様にネットワーク500を介して接続してもよいし、命令サーバ100と描画サーバ300とは所定のローカルネットワーク内で接続するものであってもよい。
【0021】
描画サーバ300の詳細な処理については後述するが、描画サーバ300の各々には、ゲーム画面の生成に必要な描画リソース(モデルデータ、テクスチャデータ、画面効果等を実現する描画プログラム等)が格納されており、描画サーバ300では該リソースを展開して使用しながらゲーム画面の描画が行われる。
【0022】
以下、このようなシステム構成を有する本実施形態のゲームシステムの各装置について、ブロック図を示してその機能構成を説明する。以下の説明では複数の装置で使用される同様のハードウェアについて、装置間でそれらのハードウェアを区別するために命令サーバ100、描画サーバ300のそれぞれに対して「命令」、「描画」の接頭文字を付して説明する。しかしながら、これらの接頭文字は単に装置間でハードウェアの識別のために付すものであり、本実施形態の記載においては該ハードウェアの機能や動作を特定するために使用されるものではない。
【0023】
〈命令サーバ100の構成〉
図2は、本実施形態の描画システムに係る命令サーバ100の機能構成を示したブロック図である。
【0024】
命令CPU101は、命令サーバ100が有する各ブロックの動作を制御する。具体的には命令CPU101は、命令ROM102に格納された各ブロックの動作プログラムやアプリケーション等のプログラムを読み出し、命令RAM103に展開して実行することにより各ブロックの動作を制御する。また命令CPU101は、クライアント端末400に対して画面を提供するゲームに係る必要な演算処理を実行し、ゲーム画面の描画を指示する描画命令に係る情報を生成する。
【0025】
命令ROM102は、例えば不揮発性メモリ等の恒久的にデータを記録する記録装置である。命令ROM102は、命令サーバ100が有する各ブロックの動作プログラムだけでなく、各ブロックの動作において使用されるパラメータ等の情報を格納する。また命令RAM103は、揮発性メモリである。命令RAM103は、各ブロックの動作プログラムの展開領域としてだけでなく、各ブロックの動作において出力された中間データの格納領域として、あるいは各ブロックの処理を行うための作業領域としても用いられる。
【0026】
命令通信部104は、命令サーバ100が有する外部装置との通信インタフェースである。本実施形態では命令通信部104は、クライアント端末400から画面送信要求やクライアント端末400においてなされた操作入力の情報を受信する。また命令通信部104は、命令サーバ100に接続されている描画サーバ300の各々から、該描画サーバ300のGPUメモリ306に展開されている描画リソースの情報を受信する。また命令通信部104は、クライアント端末400に対してゲーム画面の生成及び送信を行わせる描画サーバ300に対して、生成した描画命令に係る情報と、ゲーム画面の送信先であるクライアント端末400を特定するための情報(送信先情報)とを送信する。
【0027】
命令展開把握部105は、接続されている描画サーバ300の各々から受信したGPUメモリ306に展開されている描画リソースの情報を、該描画サーバ300の識別情報に関連付けて管理する。本実施形態では命令CPU101は、描画命令により描画されるゲーム画面について、使用される描画リソースが既にGPUメモリ306に展開されている描画サーバ300に対してゲーム画面の描画を割り当てる。これは、GPUメモリ306に展開されている描画リソースを再利用することで、描画処理の効率化が図れることに基づく。
【0028】
ゲーム画面の描画に使用する描画リソースはHDDやゲームソフトROM等の一般的な記録装置に記録されているが、このような記録装置は頻繁なアクセスに不向きであり、描画処理において都度記録装置からデータ読み出しを行うことは非効率的である。そこで、描画リソースは通常、該記録装置から読み出されてGPUメモリ306等の展開領域に展開され、高速なデータアクセスが可能なように保持される。GPUメモリ306は後述のGPU305からの高速アクセスが可能なように構成されるため、展開された描画リソースが描画処理に使用されることで、GPU305による描画処理を効率化することができる。一般に、ゲーム進行において同一シーンをプレイしている間は、連続しているフレームにおいてゲーム画面に含まれる描画オブジェクトの分布は変化が少ないといえる。即ち、例えば前のフレームに係る描画処理において既にGPUメモリ306に描画リソースが展開されていたのであれば、次のフレームに係る描画処理において、該描画リソースを再利用できる可能性が高い。また、特に本実施形態の描画システムのように複数のクライアント端末400が同一のゲームコンテンツをプレイできるようなサービス提供が行われる場合、複数のクライアント端末400に対して同一のシーンに係るゲーム画面の送信がなされる可能性がある。このような場合にも、GPUメモリ306に一度展開された描画リソースは再利用できる可能性が高い。つまり、同一の描画リソースを使用するようなゲーム画面の描画は、同一の描画サーバ300に割り当てることで効率化を図ることができる。
【0029】
具体的には命令展開把握部105は、管理している情報に基づいて、要求された描画リソースがGPUメモリ306に展開されている描画サーバ300を特定した情報を出力する。そして命令CPU101は、該出力された情報に基づいて描画サーバ300の決定を行うことで、描画システムにおけるゲーム画面描画の効率化を図ることができる。
【0030】
本実施形態では描画サーバ300から命令サーバ100に対してGPUメモリ306に展開されている描画リソースの情報が送信され、命令展開把握部105が該情報に基づいて描画命令に対応する描画リソースが既に展開されている描画サーバ300を特定するものとして説明するが、本発明の実施はこれに限られるものではない。例えば接続されている複数の描画サーバ300に対して、特にデータ量の多いテクスチャデータ等、ゲーム画面の生成に使用する描画リソースの各々についてGPUメモリ306への展開を行う描画サーバ300が予め定められている場合、展開されている描画リソースの情報が命令サーバ100に送信される必要はない。この場合、命令CPU101が、予め定められた描画サーバ300の情報に基づいて描画命令に係る情報を送信する描画サーバ300を決定してよい。例えば、命令CPU101は描画命令に係る情報から生成するゲーム画面に係るシーンの情報を取得し、該シーンに対応する描画リソースの展開が予め割り当てられている描画サーバ300に、ゲーム画面の描画を割り当てればよい。
【0031】
〈描画サーバ300の構成〉
図3は、本実施形態の描画システムに係る描画サーバ300の機能構成を示したブロック図である。
【0032】
描画CPU301は、描画サーバ300が有する各ブロックの動作を制御する。具体的には描画CPU301は、描画ROM302に格納された各ブロックの動作プログラムを読み出し、描画RAM303に展開して実行することにより各ブロックの動作を制御する。
【0033】
描画ROM302は、例えば不揮発性メモリ等の恒久的にデータを記録する記録装置である。描画ROM302は、描画サーバ300が有する各ブロックの動作プログラムだけでなく、各ブロックの動作において必要となるパラメータ等の情報を格納する。また描画RAM303は、揮発性メモリである。描画RAM303は、各ブロックの動作プログラムの展開領域としてだけでなく、各ブロックの動作において出力された中間データ等の格納領域として、あるいは各ブロックの処理を行うための作業領域としても用いられる。
【0034】
描画通信部304は、描画サーバ300が有する外部装置との通信インタフェースである。本実施形態では描画通信部304は、命令サーバ100から描画命令に係る情報や送信先情報を受信する。また描画通信部304は、送信先情報により特定されるクライアント端末400に対して、描画命令に係る情報に基づいて描画されたゲーム画面をストリーミング形式で送信する。
【0035】
GPU305は、受信した描画命令に係る情報により生成された描画命令に従ってゲーム画面の描画を行う。具体的には描画CPU301は、描画命令に係る情報からゲーム画面の描画に係る描画命令を生成し、GPU305に伝送する。また描画CPU301は、描画命令に係る情報に含まれるゲーム画面の生成に必要な描画リソースの情報を参照し、GPUメモリ306にまだ展開されていない描画リソースが含まれる場合は、該リソースをリソースDB307から読み出し、GPUメモリ306に展開する。そしてGPU305は、伝送された描画命令に従い、GPUメモリ306に展開されたリソースを使用してゲーム画面の描画を行う。本実施形態のGPU305は、得られたゲーム画面をストリーミング形式に対応する所定の符号化形式で符号化し、動画データを生成して出力する。
【0036】
GPUメモリ306は、例えばDRAM等の描画CPU301及びGPU305にアクセス可能に設けられた、描画処理において使用される作業領域である。またリソースDB307は、例えばHDD等の記録装置であり、描画リソースのデータが格納されている。
【0037】
《画面提供処理》
このような構成をもつ本実施形態の描画システムの画面提供処理について、
図4のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、命令サーバ100の命令CPU101、描画サーバ300の描画CPU301の各々が、例えばそれぞれのROMに記憶されている対応する処理プログラムを読み出し、RAMに展開して実行することにより実現することができる。本画面提供処理は、例えば命令サーバ100において任意のクライアント端末400(対象クライアント端末)からのゲームコンテンツの提供要求等の画面送信要求がなされた際に開始され、ゲーム画面のフレーム更新に応じて繰り返し実行されるものとして説明する。
【0038】
S401で、命令CPU101は、対象クライアント端末において操作入力がなされたか否かを判断する。具体的には命令CPU101は、命令通信部104が対象クライアント端末から操作入力に係る情報を受信したか否かにより本ステップの判断を行う。命令CPU101は、操作入力がなされたと判断した場合は処理をS402に移し、なされていないと判断した場合は処理をS403に移す。
【0039】
S402で、命令CPU101は、対象クライアント端末から受信した操作入力に係る情報に基づいて、提供するゲームについて管理するパラメータの情報を更新する処理を行う。
【0040】
S403で、命令CPU101は、現在のフレームのゲーム画面の生成に必要な演算処理等を実行する。本ステップにおいて行われる演算処理は、例えば動的オブジェクトの状態変更や描画命令に必要となるパラメータを算出する処理を含む。そして演算処理の実行後、命令CPU101は、演算結果に基づいて現在のフレームのゲーム画面の描画命令の生成に必要となるパラメータ(描画命令に係る情報)を生成する。
【0041】
本実施形態の命令CPU101が生成する描画命令に係る情報は、例えば
図5に示されるように命令の種類を特定する命令ID、命令の対象となるオブジェクトを指定するオブジェクトID、命令によって変更されるパラメータ等の命令の実行において使用されるパラメータを示すその他の情報等で構成される。これは、描画命令をそのままの形で送出するよりもデータ量を削減することで伝送遅延を低減することを目的とするものであり、本ステップにおいて命令CPU101は、描画命令をより簡略化した形式のデータで構成してデータ量を削減する。描画命令に係る情報は、予め定められたルールに基づいてデータ圧縮がなされた情報であり、本実施形態では描画サーバ300において該情報から描画命令を構築することが可能である。
【0042】
しかしながら、本発明の実施において描画サーバ300に送信される情報は、これに限られるものではない。即ち、本実施形態では描画サーバ300において描画命令を構成可能な情報として描画命令に係る情報を送信するものとして説明するが、描画命令と描画命令に係る情報とは等価な情報であり、送信される情報は描画命令そのものであってもよい。しかし、伝送遅延の低減という側面で考えれば、よりデータ量の少ない情報である描画命令に係る情報を送信することが好ましいことは言うまでもない。
【0043】
S404で、命令CPU101は、ゲーム画面の描画を行わせる描画サーバ300を決定する。具体的には命令CPU101は、描画命令に係る情報により示される描画命令に従って画面描画に係る処理を行う際に必要となる描画リソースを特定する。そして命令CPU101は、接続されている描画サーバ300のうちから、特定した描画リソースを展開領域に展開している1つの描画サーバ300の情報を命令展開把握部105から取得し、描画を行わせる描画サーバ300として決定する。あるいは命令CPU101は、特定した描画リソースを展開領域に展開している描画サーバ300が存在しない場合は、接続されている描画サーバ300のうちから、例えばデータ量の多い背景用テクスチャ等、所定の種類の描画リソースがまだ展開されていない描画サーバ300に決定する。このようにすることで、接続されている描画サーバ300の各々のGPUメモリ306には、各々異なる描画リソースが展開されるように制御することができる。
【0044】
画面描画に必要となる描画リソースが展開領域に展開されているか否かの判断は、描画命令に係るゲーム画面の生成に用いられる全ての描画リソースの一致をもって判断する必要はない。例えばシーンを切り替えながら進行するゲームでは、シーンごとにフィールドに配置する描画オブジェクトや背景テクスチャ等の描画リソースが予め定められているため、そのうちのデータ量が閾値以上のリソースの展開有無により判断を行ってもよい。また、背景テクスチャ等は一般にデータ量が多くなる傾向にあるため、背景テクスチャ等の展開有無により判断を行ってもよい。この場合、ゲームに使用される全ての背景テクスチャについて、それぞれ異なる描画サーバ300のGPUメモリ306に展開されるように制御してもよい。
【0045】
S405で、命令CPU101は、描画命令に係る情報及び送信先情報を命令通信部104に伝送し、S404において決定した描画サーバ300に対して送信する。
【0046】
S406で、描画CPU301は、関連付けられた命令サーバ100から描画命令に係る情報及び送信先の情報を受信したか否かを判断する。描画CPU301は、描画命令に係る情報及び送信先の情報を受信したと判断した場合は処理をS407に移し、受信していないと判断した場合は本ステップの処理を繰り返す。
【0047】
S407で、描画CPU301は、受信した描画命令に係る情報から描画命令を再構築し、GPU305に伝送する。また描画CPU301は、必要に応じてリソースDB307から新たな描画リソースを読み出し、GPUメモリ306に展開する。ここで、必要に応じて読み出される新たな描画リソースは、ゲーム画面の描画に必要な描画リソースのうち、まだGPUメモリ306に展開されていない描画リソースを指す。そしてGPU305は、GPUメモリ306に展開されている描画リソースを使用して、描画命令に従ってゲーム画面を描画する。
【0048】
S408で、GPU305はゲーム画面を符号化し、描画CPU301は符号化されたゲーム画面のデータを描画通信部304に伝送し、送信先情報に基づいて対象クライアント端末に送信する。
【0049】
このようにすることで、本実施形態の描画システムでは、ゲーム画面の描画に使用する描画リソースを好適に利用して描画システム全体に係る描画処理の演算量を低減することができる。
【0050】
本実施形態では描画サーバ300を単一のサーバとして構成するものとして説明したが、本発明の実施はこれに限られるものではない。例えば単一のサーバとして構成するのではなく、それぞれ独立した展開領域が割り当てられた1つの描画ユニット(例えばGPU)として構成する場合は、命令サーバ100は、複数の描画ユニットを有する描画用の装置を兼ねる機器となって構成されてもよい。この場合、命令CPU101は、描画命令に対応するゲーム画面の生成において使用される描画リソースが展開されている展開領域を特定し、該展開領域が対応付けられた描画ユニットに対して画面の生成を割り当てればよい。
【0051】
以上説明したように、本実施形態の描画システムは、クライアント端末に送信する画面に係る描画処理の演算量を好適に低減することができる。具体的には描画システムは、クライアント端末から受信した情報に基づいて画面の描画命令に係る情報を送出する命令サーバと、該命令サーバから受信した描画命令に係る情報に従って画面の描画を行い、クライアント端末に送信する描画サーバとを有する。命令サーバは、命令サーバに関連付けられた複数の描画サーバのうち、描画命令に係る情報に従って画面の描画を行う際に必要な描画リソースのうちの少なくとも一部を展開している描画サーバに、描画命令に係る情報及び送信先情報を送出する。そして描画サーバは、必要な描画リソースのうちまだ展開されていない描画リソースを読み出して展開領域に展開して保持し、描画命令に係る情報に基づいて画面の描画を行い、対象クライアント端末に送信する。
【0052】
[実施形態2]
上述した実施形態では、命令サーバ100に接続されている描画サーバ300の各々における描画リソースを有効活用することにより、描画システム全体に係る描画処理の演算量を低減する方法について説明した。具体的には、命令サーバ100に接続されている描画サーバ300のうちから、画面描画に係る処理を行う際に必要となる描画リソースを展開領域に展開している1つの描画サーバ300に描画を行わせるサーバとして決定することで、描画リソースを好適に活用する態様を説明した。本実施形態ではさらに、描画リソースを好適に活用しつつ、サーバとクライアント端末間における伝送遅延を低減する方法について説明する。
【0053】
特許文献1のようなネットワークゲームサービスでは、ゲーム画面を送信することになるため、従来のネットワークゲームサービスに比べてサーバとクライアント端末間での通信データ量が多くなり、伝送遅延の影響が生じうる。即ち、描画されたゲーム画面をストリーミング形式で送信する方式は、データ圧縮等の適用がなされるものの、従来のゲーム画面の描画に必要なデータに比べて多量のデータ通信が常時行われることになるため、通信帯域を圧迫しうる。また、サーバとクライアント端末間の伝送路が長い場合、このような通信帯域の圧迫による伝送遅延はより顕著に現れ、ユーザのゲーム体験に支障を生じる可能性がある。
【0054】
特に、ユーザの操作入力に応じてなされた変更がゲーム画面に反映されるまでのレスポンス性能が要求される、所謂リアルタイム性の高いゲームでは、このような伝送遅延はゲーム性を破綻させることにもなりうる。本実施形態では、このような伝送遅延を低減する描画システムについて、以下に図面を参照して詳細に説明する。
【0055】
以下に説明する実施形態は、描画システムの一例としての、ネットワークを介してクライアント端末から受信した画面要求に応じてゲーム画面を描画し、得られたゲーム画面をネットワークを介してストリーミング形式でクライアント端末に送信するゲームシステムに、本発明を適用した例を説明する。しかし、本発明は、ゲームに限らず、クライアント端末からの要求に従って画面の描画を行い、得られた画面をクライアント端末に送信することが可能な任意の機器及びシステムに適用可能である。また以下の説明において、上述した実施形態1の描画システムと同様の構成については同一の参照番号を付し、説明を省略する。
【0056】
《描画システムの構成》
図6は、本発明の実施形態2に係る描画システムのシステム構成を示した図である。本実施形態の描画システムでは、実施形態1と同様、各クライアント端末400から受信した要求に応じてゲーム画面を描画し、該クライアント端末400に送信する。
【0057】
まず、ユーザ等の操作により1つのクライアント端末400からネットワーク500を介してゲーム画面の提供要求が命令サーバ100になされると、命令サーバ100は、提供するゲーム画面に係る演算処理を実行し、ゲーム画面の描画命令に係る情報を生成する。また命令サーバ100は、ゲーム画面の提供を行うクライアント端末400の存在する地域、即ちアクセス地点の特定を行い、該クライアント端末400に対してゲーム画面の提供を行う描画サーバ300群を決定する。本実施形態では、クライアント端末400の存在する地域に最も近い地域に設置された描画サーバ300群に対して、該クライアント端末400に提供するゲーム画面の描画を割り当てるものとして説明するが、本発明の実施はこれに限られるものではない。即ち、クライアント端末400の位置を具体的に特定し、厳密にこれに最も近い地域に設置された描画サーバ300群に描画処理を割り当てるのではなく、特定した地域に対応付けられた地域に設置された描画サーバ300群に対して描画処理を割り当てるものであってよい。
【0058】
描画サーバ300は、所定の地域ごとに複数台設置され、各々の地域で描画サーバ300群を構成する。しかしながら、本発明の実施において各地域に設置される描画サーバ300の数はこれに限られるものでなく、該地域の利用者数等に合わせて適宜決定されるものであってよい。描画サーバ300の各々は、実施形態1同様、ゲーム画面の生成に必要な描画リソース(モデルデータ、テクスチャデータ、画面効果等を実現する描画プログラム等)を有しており、該リソースを展開して使用しながらゲーム画面の描画を行う。
【0059】
〈命令サーバ100の構成〉
図7は、本実施形態の描画システムに係る命令サーバ100の機能構成を示したブロック図である。
【0060】
本実施形態の命令サーバ100は、実施形態1の構成に加え、さらに地域特定部111を有する。地域特定部111は、例えばクライアント端末400との通信接続の確立に用いた情報、あるいはクライアント端末400から受信した画面送信要求に含まれる送信先アドレスの情報からクライアント端末400の存在する地域を特定する。
【0061】
《画面提供処理》
次に、本実施形態の描画システムの画面提供処理について、
図8のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、命令サーバ100の命令CPU101、描画サーバ300の描画CPU301の各々が、例えばそれぞれのROMに記憶されている対応する処理プログラムを読み出し、RAMに展開して実行することにより実現することができる。本画面提供処理は、例えば命令サーバ100において任意のクライアント端末400(対象クライアント端末)からのゲームコンテンツの提供要求等の画面送信要求がなされた際に開始され、ゲーム画面のフレーム更新に応じて繰り返し実行されるものとして説明する。また、以下の画面提供処理の説明では、実施形態1と同様の処理を行うステップについては同一の参照番号を付して説明を省略し、本実施形態の画面提供処理に特徴的な処理を行うステップのみの説明に留める。
【0062】
S403において描画命令に係る情報を生成した後、命令CPU101はS801で、ゲーム画面の描画を行わせる描画サーバ300を決定し、処理をS405に移す。具体的には命令CPU101は、描画命令に係る情報により示される描画命令に従って画面描画に係る処理を行う際に必要となる描画リソースを特定する。そして命令CPU101は、地域特定部111により特定された対象クライアント端末の存在する地域の情報に基づいて、対象クライアント端末が存在する地域に対応する描画サーバ300群を特定する。命令CPU101は、該描画サーバ300群のうちから、特定した描画リソースを展開領域に展開している1つの描画サーバ300の情報を命令展開把握部105から取得し、描画を行わせる描画サーバ300として決定する。あるいは命令CPU101は、描画サーバ300群に特定した描画リソースを展開領域に展開している描画サーバ300が存在しない場合は、該描画サーバ300群のうちから、所定の種類の描画リソースがまだ展開されていない描画サーバ300に決定する。
【0063】
このようにすることで、本実施形態の描画システムでは、ゲーム画面の描画に使用する描画リソースを好適に利用して描画システム全体に係る描画処理の演算量を低減することができる。また描画システムでは、ゲーム画面の送信に係る伝送路を低減し、画面要求に応じて描画した画面をクライアント端末に提供する際の伝送遅延を効率的に低減することができる。
【0064】
また上述した伝送遅延の問題は、データ量が多くなりうるゲーム画面を対象クライアント端末に送信する際の伝送路を短くすれば低減することができる。即ち、本発明は一態様において、命令サーバ100から描画サーバ300に対して送信する情報を、描画命令に係る情報とせずに、描画命令そのものとした場合にも同様の効果を奏する。つまり、該効果の実現は、描画命令のデータと描画命令を簡略化したデータのいずれを送信したとしても実現できるものであるため、一態様において描画命令に係る情報とは該2つのデータのいずれを表現するものであってもよい。
【0065】
本実施形態では描画サーバ300を単一のサーバとして構成するものとして説明したが、実施形態1同様、本発明の実施はこれに限られるものではない。即ち、本実施形態のように描画サーバ300群の各描画サーバ300を単一のサーバとして構成するのではなく、それぞれ独立した展開領域が割り当てられた1つの描画ユニット(例えばGPU)として構成する場合は、描画サーバ300群ではなく複数の描画ユニットを有する描画サーバが各地域に設けられる構成されてもよい。この場合、各地域の描画サーバは命令サーバ100から描画命令に係る情報を受信すると、該描画命令に対応するゲーム画面の生成において使用される描画リソースが展開されている展開領域を特定し、該展開領域が対応付けられた描画ユニットに対して画面の生成を割り当てればよい。
【0066】
[変形例]
上述した実施形態2では、クライアント端末で行われた操作に対する画面更新レスポンス性を向上させるために、伝送路の短い描画サーバにゲーム画面の描画を割り当てることで伝送遅延を低減する方法について説明した。しかしながら、伝送遅延を低減する方法はこれに限られるものではない。
【0067】
例えば、実施形態2の画面提供処理のS801におけるゲーム画面の描画を行わせる描画サーバ300の決定は、対象クライアント端末が存在する地域に対応するとして定められた複数の地域に設置された描画サーバ300群を抽出し、接続している端末総数、平均伝送レート、GPU稼働率、輻輳状況等の動作状況に基づいていずれかの描画サーバ300群を選択し、その中で描画リソースの展開状況に応じて1つの描画サーバ300を決定してもよい。あるいは、描画サーバ300群を動作状況に応じて選択するのではなく、対象クライアント端末が存在する地域に対応する地域に設置された、描画命令に従って画面描画に係る処理を行う際に必要となる描画リソースを展開している描画サーバ300のうちから、動作状況に応じて1つの描画サーバ300を決定するものであってもよい。また、ゲーム画面の描画を行わせる描画サーバ300を、対象クライアント端末が存在する地域に対応するとして設定された地域に設置されているものに限定する必要はなく、単純に動作状況と描画リソースの展開状況のみに基づいて、いずれかの位置に設置された描画サーバ300を決定するものであってもよい。
【0068】
また動作状況の把握は、例えば接続端末数、平均伝送レート、GPU稼働率、輻輳状況、及び伝送路の長さの少なくともいずれかに基づいて、あるいはこれらの組み合わせに基づいて行われるものであってよい。また動作状況を評価するために、これらの項目の少なくともいずれかを評価係数とする評価式が設けられてもよい。また、命令サーバ100に接続されている描画サーバ数が比較的多い状況では、命令CPU101が全ての描画サーバ300について評価値を算出する方式は命令サーバ100における演算リソースを圧迫しうるため、各描画サーバ300から評価値が命令サーバ100に送信される構成であってもよい。
【0069】
[実施形態3]
上述した実施形態2では、命令サーバ100が全ての地域の描画サーバ300群、及び各描画サーバ300の展開領域に展開されている描画リソースの情報を把握可能であるものとして説明した。しかしながら、描画システムの規模によっては、各地域の描画サーバ300の全てについて展開されている描画リソースの情報を命令サーバ100において集中管理することは現実的でない可能性がある。即ち、命令サーバ100では、各クライアント端末に提供するフレームのゲーム画面の生成に必要な演算処理に加えて、これらの描画リソースの展開状況を把握することになるため、命令サーバ100に負荷が集中する可能性がある。本実施形態では、このような描画システムにおける負荷分散を行うために、地域ごとに描画サーバ300群の描画サーバ300の各々の描画リソースの展開状況を管理する中継装置を設ける例について説明する。
【0070】
以下、本実施形態の描画システムについて、図面を参照して詳細に説明する。以下に説明する一実施形態は、描画システムの一例としての、ネットワークを介してクライアント端末から受信した画面要求に応じてゲーム画面を描画し、得られたゲーム画面をネットワークを介してストリーミング形式でクライアント端末に送信するゲームシステムに、本発明を適用した例を説明する。しかし、本発明は、ゲームに限らず、クライアント端末からの要求に従って画面の描画を行い、得られた画面をクライアント端末に送信することが可能な任意の機器及びシステムに適用可能である。また以下の説明において、上述した実施形態1及び2の描画システムと同様の構成については同一の参照番号を付し、説明を省略する。
【0071】
《描画システムの構成》
図9は、本発明の実施形態に係る描画システムのシステム構成を示した図である。本実施形態の描画システムでは、実施形態1及び2と同様、各クライアント端末400から受信した要求に応じてゲーム画面を描画し、該クライアント端末400に送信する。
【0072】
まず、ユーザ等の操作により1つのクライアント端末400からネットワーク500を介してゲーム画面の提供要求が命令サーバ100になされると、命令サーバ100は、提供するゲーム画面に係る演算処理を実行し、ゲーム画面の描画命令に係る情報を生成する。また命令サーバ100は、ゲーム画面の提供を行うクライアント端末400の存在する地域、即ちアクセス地点の特定を行い、該クライアント端末400に対してゲーム画面の提供を行う描画サーバ300群を決定する。本実施形態では実施形態2と同様に、クライアント端末400の存在する地域に最も近い地域に設置された描画サーバ300群に対して、該クライアント端末400に提供するゲーム画面の描画を割り当てるものと説明するが、本発明の実施はこれに限られるものではない。
【0073】
描画サーバ300は、所定の地域ごとに複数台設置され、各々の地域で描画サーバ300群を構成する。描画サーバ300の各々は、実施形態1及び2と同様、ゲーム画面の生成に必要な描画リソース(モデルデータ、テクスチャデータ、画面効果等を実現する描画プログラム等)を有しており、該リソースを展開して使用しながらゲーム画面の描画を行う。また実際にゲーム画面の描画を行う描画サーバ300は、命令サーバ100からの描画命令に係る情報を受信した中継装置200により決定される。
【0074】
中継装置200は、描画サーバ300群と同様に地域ごとに設けられ、対応する地域の描画サーバ300群に関連付けられる。また中継装置200は、描画サーバ300群のうちの1つのサーバをゲーム画面の生成を行う描画サーバ300として決定し、該サーバに対して描画命令に係る情報を中継してゲーム画面の描画を行わせる。
【0075】
図9では、命令サーバ100とクライアント端末400のみがネットワーク500を介して接続され、命令サーバ100と中継装置200、中継装置200と各描画サーバ300、及び描画サーバ300とクライアント端末400はネットワーク500を介して接続するものとして示されていない。これは単に、命令サーバ100から中継装置200、中継装置200から各描画サーバ300、及び描画サーバ300からクライアント端末400の情報の流れを明確にするためにネットワーク500を介さずに表記したことによるものであり、これらの装置間での通信がネットワーク500あるいは何らかのネットワークを介して行われることは容易に理解されよう。
【0076】
以下、このようなシステム構成を有する本実施形態のゲームシステムの各装置について、ブロック図を示してその機能構成を説明する。以下の説明では複数の装置で使用される同様のハードウェアについて、装置間でそれらのハードウェアを区別するために命令サーバ100、中継装置200、描画サーバ300のそれぞれに対して「命令」、「中継」、「描画」の接頭文字を付して説明する。しかしながら、これらの接頭文字は単に装置間でハードウェアの識別のために付すものであり、本実施形態の記載においては該ハードウェアの機能や動作を特定するために使用されるものではない。
【0077】
〈命令サーバ100の構成〉
図10は、本実施形態の描画システムに係る命令サーバ100の機能構成を示したブロック図である。本実施形態の命令サーバ100は、命令展開把握部105が除外された以外は、実施形態2と同様の構成であるため、詳細な説明は省略する。
【0078】
〈中継装置200の構成〉
図11は、本実施形態の描画システムに係る中継装置200の機能構成を示したブロック図である。
【0079】
中継CPU201は、中継装置200が有する各ブロックの動作を制御する。具体的には中継CPU201は、中継ROM202に格納された各ブロックの動作プログラムを読み出し、中継RAM203に展開して実行することにより各ブロックの動作を制御する。
【0080】
中継ROM202は、例えば不揮発性メモリ等の恒久的にデータを記録する記録装置である。中継ROM202は、中継装置200が有する各ブロックの動作プログラムだけでなく、各ブロックの動作において必要となるパラメータ等の情報を格納する。また中継RAM203は、揮発性メモリである。中継RAM203は、各ブロックの動作プログラムの展開領域としてだけでなく、各ブロックの動作において出力された中間データ等の格納領域として、あるいは各ブロックの処理を行うための作業領域としても用いられる。
【0081】
中継通信部204は、中継装置200が有する外部装置との通信インタフェースである。本実施形態では中継通信部204は、命令サーバ100から描画命令に係る情報や送信先情報を受信し、中継通信部204に関連付けられた描画サーバ300群の各々から、該描画サーバ300のGPUメモリ306に展開されている描画リソースの情報を受信する。また中継通信部204は、ゲーム画面の描画を行わせる描画サーバ300に対して、描画命令に係る情報及び送信先情報を送信する。
【0082】
中継展開把握部205は、関連付けられた描画サーバ300群の各々から受信したGPUメモリ306に展開されている描画リソースの情報を、該描画サーバ300の識別情報に関連付けて管理する。本実施形態では中継CPU201は、描画命令により描画されるゲーム画面に使用される描画リソースが既にGPUメモリ306に展開されている描画サーバ300に対してゲーム画面の描画を割り当てる。これは上述したように、GPUメモリ306に展開されている描画リソースを再利用することで、描画処理の効率化が図れることに基づく。
【0083】
本実施形態では描画サーバ300から中継装置200に対してGPUメモリ306に展開されている描画リソースの情報が送信され、中継展開把握部205が該情報に基づいて描画命令に対応する描画リソースが既に展開されている描画サーバ300を特定するものとして説明するが、本発明の実施はこれに限られるものではない。例えば描画サーバ300群において、特にデータ量の多いテクスチャデータ等、ゲーム画面の生成に使用する描画リソースの各々についてGPUメモリ306への展開を行う描画サーバ300が予め定められている場合、展開されている描画リソースの情報が中継装置200に送信される必要はない。この場合、中継CPU201が、予め定められた描画サーバ300の情報に基づいて描画命令に係る情報を送信する描画サーバ300を決定してよい。例えば、中継CPU201は描画命令に係る情報から生成するゲーム画面に係るシーンの情報を取得し、該シーンに対応する描画リソースの展開が予め割り当てられている描画サーバ300に、ゲーム画面の描画を割り当てればよい。
【0084】
《画面提供処理》
このような構成をもつ本実施形態の描画システムの画面提供処理について、
図12のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、命令サーバ100の命令CPU101、中継装置200の中継CPU201、描画サーバ300の描画CPU301の各々が、例えばそれぞれのROMに記憶されている対応する処理プログラムを読み出し、RAMに展開して実行することにより実現することができる。本画面提供処理は、例えば命令サーバ100において任意のクライアント端末400(対象クライアント端末)からのゲームコンテンツの提供要求等の画面送信要求がなされた際に開始され、ゲーム画面のフレーム更新に応じて繰り返し実行されるものとして説明する。また、以下の画面提供処理の説明では、実施形態1及び2と同様の処理を行うステップについては同一の参照番号を付して説明を省略し、本実施形態の画面提供処理に特徴的な処理を行うステップのみの説明に留める。
【0085】
S403において描画命令に係る情報を生成した後、命令CPU101はS1201で、生成した描画命令に係る情報と、対象クライアント端末にデータを送信するために必要となる送信先情報とを命令通信部104に伝送し、中継装置200に送出させる。本ステップで命令通信部104による情報送出の対象である中継装置200は、地域特定部111により特定された対象クライアント端末の存在する地域の情報に基づいて命令CPU101が決定するものとする。
【0086】
S1202で、中継CPU201は、命令サーバ100から描画命令に係る情報及び送信先情報を受信したか否かを判断する。中継CPU201は、描画命令に係る情報及び送信先情報を受信したと判断した場合は処理をS1203に移し、受信していないと判断した場合は本ステップの処理を繰り返す。
【0087】
S1203で、中継CPU201は、ゲーム画面の描画を行わせる描画サーバ300を決定する。具体的には中継CPU201は、描画命令に係る情報から、該情報により示される描画命令に従って画面描画に係る処理を行う際に必要となる描画リソースを特定する。そして中継CPU201は、特定した描画リソースを展開領域に展開している、該中継装置200に関連付けられた描画サーバ300群のうちの1つの描画サーバ300の情報を中継展開把握部205から取得し、描画を行わせる描画サーバ300として決定する。あるいは中継CPU201は、特定した描画リソースを展開領域に展開している描画サーバ300が存在しない場合は、例えばデータ量の多い背景用テクスチャ等、所定の種類の描画リソースがまだ展開されていない描画サーバ300に決定する。このようにすることで、描画サーバ300群のサーバの各々のGPUメモリ306には、各々異なる描画リソースが展開されるように制御することができる。
【0088】
S1204で、中継CPU201は、描画命令に係る情報及び送信先情報を中継通信部204に伝送し、S1203において決定した描画サーバ300に対して送信する。
【0089】
S1205で、描画CPU301は、関連付けられた中継装置200から描画命令に係る情報及び送信先の情報を受信したか否かを判断する。描画CPU301は、描画命令に係る情報及び送信先の情報を受信したと判断した場合は処理をS407に移し、受信していないと判断した場合は本ステップの処理を繰り返す。
【0090】
このようにすることで、本実施形態の描画システムでは、ゲーム画面の描画に使用する描画リソースを好適に利用して描画システム全体に係る描画処理の演算量を低減することができる。また描画システムでは、ゲーム画面の送信に係る伝送路を低減し、画面要求に応じて描画した画面をクライアント端末に提供する際の伝送遅延を効率的に低減することができる。また描画システムにおける描画リソースの展開状況の監視による処理負荷を分散することができる。
【0091】
本実施形態では中継装置200は、命令サーバ100及び描画サーバ300と分離したエンティティとして設けられるものとして説明したが、本発明の実施はこれに限られるものではない。中継装置200は命令サーバ100と一体となって構成され、各地域の描画サーバ300群のうちの特定の描画サーバ300を指定して描画命令に係る情報を送信するものであってもよい。また本実施形態のように描画サーバ300を単一のサーバとして構成するのではなく、それぞれ独立した展開領域が割り当てられた1つの描画ユニット(例えばGPU)として構成する場合は、中継装置200は、複数の描画ユニットを有する描画用の装置と一体となって構成されてもよい。この場合、中継装置200は命令サーバ100から描画命令に係る情報を受信すると、該描画命令に対応するゲーム画面の生成において使用される描画リソースが展開されている展開領域を特定し、該展開領域が対応付けられた描画ユニットに対して画面の生成を割り当てればよい。
【0092】
また、本実施形態では描画サーバ300において描画命令に係る情報から描画命令の再構築が行われるものとして説明したが、本発明の実施において描画命令の再構築は中継装置200及び描画サーバ300のいずれで行われてもよい。中継装置200において再構築が行われる場合には、命令サーバ100と中継装置200との間における伝送遅延を低減することができる。また描画サーバ300において再構築が行われる場合には、命令サーバ100と中継装置200との間、及び中継装置200と描画サーバ300との間の双方における伝送遅延を低減することができる。つまり、描画命令をデータ圧縮して送信することによる効果は、中継装置200及び描画サーバ300のいずれで描画命令の再構築が行われたとしても実現することができる。
【0093】
以上説明したように、クライアント端末に送信する画面に係る描画処理の演算量を好適に低減することができる。具体的には描画システムは、クライアント端末から受信した情報に基づいて画面の描画命令に係る情報を送出する命令サーバと、描画命令に係る情報に従って画面の描画を行い、クライアント端末に送信する描画サーバと、命令サーバから受信した描画命令に係る情報を描画サーバに送信する中継装置と、を有する。命令サーバは、対象クライアント端末が存在する地域を特定し、対応する地域に存在する中継装置に、描画命令に係る情報及び送信先情報を送出する。また中継装置は、該中継装置に関連付けられた複数の描画サーバのうち、該描画命令に従って画面の描画を行う際に必要な描画リソースのうちの少なくとも一部を展開している描画サーバに、描画命令に係る情報及び送信先情報を送信する。そして描画サーバは、必要な描画リソースのうちまだ展開されていない描画リソースを読み出して展開領域に展開して保持し、描画命令に係る情報に基づいて画面の描画を行い、対象クライアント端末に送信する。
【0094】
[その他の実施形態]
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。また本発明に係る描画システムは、1以上のコンピュータを描画システムの各装置として機能させるプログラムによっても実現可能である。該プログラムは、コンピュータが読み取り可能な記録媒体に記録されることにより、あるいは電気通信回線を通じて、提供/配布することができる。本発明の範囲を公にするために、以下の請求項を添付する。