描画制御装置、その制御方法、プログラム、記録媒体、描画サーバ、及び描画システム
【課題】1以上のクライアント機器に対してゲーム画面を提供する描画システムにおいて、応答性に優れた効率的な描画処理を行う。
【解決手段】クライアント機器に対して提供する画面の生成に用いられる複数の描画オブジェクトの各々について、識別情報と描画に必要となるデータを示す詳細情報とを取得する。そして複数の描画オブジェクトの各々の詳細情報を参照して、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当てるように、全描画オブジェクトの描画順を決定する。描画制御装置は、描画順に従って描画オブジェクトの詳細情報により示されるデータを読み出し、GPUに転送する。このとき、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既にGPUに転送されたデータと共通でないデータについてのみ読み出して転送する。
【解決手段】クライアント機器に対して提供する画面の生成に用いられる複数の描画オブジェクトの各々について、識別情報と描画に必要となるデータを示す詳細情報とを取得する。そして複数の描画オブジェクトの各々の詳細情報を参照して、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当てるように、全描画オブジェクトの描画順を決定する。描画制御装置は、描画順に従って描画オブジェクトの詳細情報により示されるデータを読み出し、GPUに転送する。このとき、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既にGPUに転送されたデータと共通でないデータについてのみ読み出して転送する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、描画制御装置、その制御方法、プログラム、記録媒体、描画サーバ、及び描画システムに関し、特にネットワーク接続されたクライアント機器に対して、描画した画面を提供する技術に関する。
【背景技術】
【0002】
ネットワーク接続可能なパーソナルコンピュータ(PC)等のクライアント機器が普及している。このような機器の普及により、インターネットにおけるネットワーク人口は増加している。近年では、ネットワークユーザに対する、インターネットを利用した様々なサービスが展開されており、ゲーム等のエンターテインメントサービスも提供されている。
【0003】
ネットワークユーザに対するサービスの1つとして、MMORPG(Massively Multiplayer Online Role-Playing Game)等の多人数同時参加型のネットワークゲームがある。多人数同時参加型のネットワークゲームでは、ユーザは使用するクライアント機器を、ゲームを提供するサーバ機器に接続することで、該サーバ機器に接続されているクライアント機器を使用するユーザとの対戦プレイや協力プレイを行うことができる。
【0004】
一般的な多人数参加型のネットワークゲームでは、クライアント機器はサーバ機器との間でゲームの描画に必要なデータの送受信を行う。クライアント機器は、受信した描画に必要なデータを用いて描画処理を実行し、生成したゲーム画面をクライアント機器に接続された表示装置に提示することで、ユーザにゲーム画面を提供する。また、ユーザが入力インタフェースを操作することで入力された情報はサーバ機器に送信され、サーバ機器における演算処理に使用されたり、サーバ機器に接続された他のクライアント機器に伝送されたりする。
【0005】
しかしながら、このようなクライアント機器で描画処理を行うネットワークゲームの中は、ユーザが十分な描画性能を行うPCや専用のゲーム機の使用が必要となるものがある。このため、ネットワークゲーム(1コンテンツ)のユーザ数は、コンテンツが要求するクライアント機器の性能に依存してしまう。即ち、例えば美麗なグラフィックを提供するゲーム等の高い描画性能が要求されるゲームでは、ユーザ数を増加させることが困難である。
【0006】
これに対し、近年ではクライアント機器の描画性能等の処理能力に依存せずに、ユーザがプレイ可能なゲームも提供されている(特許文献1)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】国際公開第2009/138878号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1のようなゲームでは、サーバ機器はクライアント機器においてなされた操作の情報を取得し、該情報を用いて描画処理を実行して得られたゲーム画面を、クライアント機器に対して提供している。即ち、クライアント機器においてなされた操作に応じて描画処理をサーバ機器において行う場合、ユーザがストレスなくプレイを行うためにはレスポンスを速く、つまり操作を反映したゲーム画面の提供を速くする必要がある。
【0009】
特に、多人数同時参加型のネットワークゲームでは、サーバ機器は複数のクライアント機器に対して提供するゲーム画面を同時に生成するため、複数のゲーム画面の描画処理に要する時間を低減することが望まれる。しかしながら、特許文献1にはゲーム画面の描画処理の効率化についての具体的な方法については言及されていなかった。
【0010】
本発明は、上述の問題点に鑑みてなされたものであり、1以上のクライアント機器に対してゲーム画面を提供する描画システムにおいて、応答性に優れた効率的な描画処理を行うことを目的とする。
【課題を解決するための手段】
【0011】
前述の目的を達成するために、本発明の描画制御装置は、以下の構成を備える。
クライアント機器に対して提供する画面の生成に用いられる複数の描画オブジェクトの情報を取得して記憶手段に記憶する取得手段であって、各描画オブジェクトの情報は、該描画オブジェクトの識別情報と、該描画オブジェクトの描画に必要となるデータを示す詳細情報とで構成される取得手段と、取得手段により取得された複数の描画オブジェクトの各々の詳細情報を参照して複数の描画オブジェクトの描画順を決定する決定手段と、決定手段により決定された描画順に従って描画オブジェクトの識別情報を取得し、該識別情報に対応する描画オブジェクトの詳細情報により示されるデータをデータ記憶手段より読み出し、複数の描画オブジェクトの描画を順に行って画面を生成する描画手段に転送する転送手段と、を有し、決定手段は、複数の描画オブジェクトのうち、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当て、転送手段は、描画順に従って描画を行う際に、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既に描画手段に転送されたデータと共通でないデータについて、データ記憶手段から読み出して転送することを特徴とする。
【0012】
また前述の目的を達成するために、本発明の描画システムは、以下の構成を備える。
センタサーバに対して接続された1以上のクライアント機器の各々に対して、描画サーバで生成された画面を提供する描画システムであって、センタサーバは、1以上のクライアント機器から入力データを受信する受信手段と、1以上のクライアント機器の各々について、受信手段により受信された入力データに応じて、該クライアント機器に対して提供する画面に含まれる描画オブジェクトを特定する特定手段と、特定手段により特定された、1以上のクライアント機器に対して提供する画面に含まれる複数の描画オブジェクトの情報を描画サーバに送信する送信手段であって、各描画オブジェクトの情報は、該描画オブジェクトの識別情報と、該描画オブジェクトの描画に必要となるデータを示す詳細情報とで構成される送信手段と、描画サーバにおいて描画された、1以上のクライアント機器の各々に対して提供する画面を受信し、対応するクライアント機器に対して配信する配信手段と、を有し、描画サーバは、送信手段により送信された複数の描画オブジェクトの情報を取得して記憶手段に記憶する取得手段と、複数の描画オブジェクトの描画を順に行って、1以上のクライアント機器の各々に対して提供する画面を生成する描画手段と、取得手段により取得された複数の描画オブジェクトの各々の詳細情報を参照して複数の描画オブジェクトの描画順を決定する決定手段と、決定手段により決定された描画順に従って描画オブジェクトの識別情報を取得し、該識別情報に対応する描画オブジェクトの詳細情報により示されるデータをデータ記憶手段より読み出し、描画手段に転送する転送手段と、を有し、決定手段は、複数の描画オブジェクトのうち、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当て、転送手段は、描画順に従って描画を行う際に、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既に描画手段に転送されたデータと共通でないデータについて、データ記憶手段から読み出して転送することを特徴とする。
【発明の効果】
【0013】
このような構成により本発明によれば、1以上のクライアント機器に対してゲーム画面を提供する描画システムにおいて、応答性に優れた効率的な描画処理を行うことが可能となる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施形態に係る描画システムのシステム構成を示した図
【図2】本発明の実施形態に係る描画サーバ100の機能構成を示したブロック図
【図3】本発明の実施形態に係るセンタサーバ200の機能構成を示したブロック図
【図4】本発明の実施形態に係るセンタサーバ200のゲーム処理を例示したフローチャート
【図5】本発明の実施形態に係る操作入力の情報及び描画命令のデータ構造を例示した図
【図6】本発明の実施形態に係る描画サーバ100の描画処理を例示したフローチャート
【図7】本発明の実施形態に係る描画サーバ100の描画順決定処理を例示したフローチャート
【図8】本発明の実施形態に係る描画順決定処理を説明するための図
【図9】本発明の実施形態に係る描画順決定処理を説明するための別の図
【図10】本発明の実施形態に係る描画順決定処理により決定された描画順を説明するための図
【図11】本発明の変形例に係る描画サーバ100の描画順決定処理を例示したフローチャート
【発明を実施するための形態】
【0015】
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、描画システムの一例としての、1以上のクライアント機器の接続を受け付け可能なセンタサーバと、1以上のクライアント機器の各々に提供する画面を同時に生成可能な描画サーバとに、本発明を適用した例を説明する。しかし、本発明は、1以上のクライアント機器に提供する画面を同時に作成することが可能な任意の機器及びシステムに適用可能である。
【0016】
また、本明細書において、センタサーバがクライアント機器に対して提供する「サービス」とは、上述したような多人数同時参加型のネットワークゲームであるものとする。描画システムでは、クライアント機器に対して提供するゲーム画面が描画サーバにおいて生成され、該ゲーム画面はセンタサーバを介してクライアント機器に配信されるものとする。しかしながら、描画システムはこのようなサービスの提供に限らず、クライアント機器に対して、画面を描画して配信する構成であればよい。
【0017】
<描画システムの構成>
図1は、本発明の実施形態に係る描画システムのシステム構成を示す図である。
【0018】
図示されるように、サービス提供を受けるクライアント機器300a乃至eと、サービス提供を行うセンタサーバ200とは、インターネット等のネットワーク400を介して接続されている。また同様にクライアント機器300に対して提供する画面を描画する描画サーバ100は、ネットワーク400を介してセンタサーバ200に接続されている。なお、以下の説明では特に指定のない限り「クライアント機器300」と称した場合は、クライアント機器300a乃至eの全てを指すものとする。
【0019】
クライアント機器300は、例えばPC、家庭用ゲーム機、携帯ゲーム機に限らず、携帯電話、PDF、タブレット等の機器であってよい。本実施形態の描画システムは、クライアント機器においてなされた操作入力に応じたゲーム画面を描画サーバ100が生成し、センタサーバ200がクライアント機器300に配信する。このため、クライアント機器300はゲーム画面の生成を行う描画機能を有するものでなくてよい。即ち、クライアント機器300は、操作入力を行うユーザインタフェース及び画面の表示を行う表示装置を有する機器、あるいは該ユーザインタフェース及び表示装置が接続可能な機器であって、受信したゲーム画面を、表示装置を用いて表示可能な機器であればよい。つまり本発明は、ゲーム画面の生成に係る描画処理がビデオストリームのデコードに係る処理に比べて多くのハードウェアリソースを使用することに着目し、サーバ側で生成したゲーム画面をクライアント機器に送信することで、クライアント機器の有する描画性能に依存しないゲームの提供を行う。
【0020】
センタサーバ200は、ゲーム処理プログラムの実行及び管理、描画サーバ100への描画処理命令、クライアント機器300とのデータ送受信を行う。具体的にはセンタサーバ200では、クライアント機器300に対して提供するサービスである、多人数同時参加型ネットワークゲームのゲーム処理が実行される。
【0021】
センタサーバ200は、例えば各クライアント機器のユーザが操作するキャラクタのマップ上の位置や方向、各キャラクタに対して提供するイベント等の情報を管理する。そしてセンタサーバ200は、管理しているキャラクタの状態に応じたゲーム画面の生成を描画サーバ100に実行させる。例えばセンタサーバ200に対して、接続されている各クライアント機器においてなされたユーザの操作入力の情報がネットワーク400を介して入力されると、センタサーバ200では該情報を管理しているキャラクタの情報に反映させる処理が実行される。そしてセンタサーバ200は、操作入力の情報が反映されたキャラクタの情報に基づいてゲーム画面に描画する描画オブジェクトを決定し、描画サーバ100に対して描画命令を行う。
【0022】
描画サーバ100は、描画処理の実行を担うサーバであり、本実施形態では後述するように4つのGPUを有する。描画サーバ100は、センタサーバ200より受けた描画命令に応じてゲーム画面の描画を行い、生成したゲーム画面をセンタサーバ200に出力する。なお、描画サーバ100は、複数のゲーム画面を同時に作成可能であるものとする。描画サーバ100は、各ゲーム画面について描画サーバ100から受信した、ゲーム画面に含まれる描画オブジェクトの識別情報、及び各描画オブジェクトの描画に必要なデータを示す詳細情報に基づいて、GPUでゲーム画面の描画処理を実行する。
【0023】
本実施形態では、「描画オブジェクトの描画に必要なデータを示す詳細情報」には次の属性のデータを示す情報が含まれるものとする。
・モデルデータを特定する識別情報
・テクスチャデータを特定する識別情報
・使用する描画用プログラムの指定情報(シェーダ等)
・描画用プログラムで用いられる演算用データの指定情報(光源強度、光源ベクトル、
回転行列等)
【0024】
なお、本実施形態では上記の情報を含む詳細情報がセンタサーバ200から描画サーバ100に伝送されるものとして説明するが、詳細情報に含まれる情報は上記に限られない。例えば、詳細情報には上記の5つの情報の少なくともいずれかが含まれていてもよいし、上記以外に描画オブジェクトの描画処理において用いられる情報が含まれていてもよい。また演算用データとは、描画処理において演算に用いられる定数や変数等の数値を含むものとして、以下説明する。
【0025】
センタサーバ200は、送信した描画オブジェクトの識別情報及び詳細情報を含む描画命令に応じて描画サーバ100から受信したゲーム画面を、対応するクライアント機器に対して配信する。このようにすることで、本実施形態の描画システムはクライアント機器においてなされた操作入力に応じたゲーム画面を生成し、クライアント機器の表示装置を介してユーザにゲーム画面を提供することができる。
【0026】
なお、本実施形態では描画システムは、1つの描画サーバ100と1つのセンタサーバ200とで構成されるものとして説明するが、本発明の実施はこれに限られない。例えば、複数のセンタサーバ200に対して1つの描画サーバ100が割り当てられている構成であってもよいし、複数のセンタサーバ200に対して複数の描画サーバ100が割り当てられている構成であってもよい。またセンタサーバ200は、描画サーバ100あるいは描画サーバ100の各GPUにおいて同時生成しているゲーム画面の数の情報に応じて、描画命令を行う描画サーバ100あるいは描画サーバ100のGPUを指定してもよい。
【0027】
<描画サーバ100の構成>
図2は、本発明の実施形態に係る描画サーバ100の機能構成を示すブロック図である。
【0028】
CPU101は、描画サーバ100が有する各ブロックの動作を制御する。具体的にはCPU101は、例えばROM102や記録媒体104に記憶されている描画処理の動作プログラムを読み出し、RAM103に展開して実行することにより、各ブロックの動作を制御する。
【0029】
ROM102は、例えば書き換え可能な不揮発性メモリである。ROM102は、描画処理の動作プログラムに加え、他の動作プログラムや描画サーバ100が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【0030】
RAM103は、揮発性メモリである。RAM103は、動作プログラムの展開領域としてだけでなく、描画サーバ100が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【0031】
記録媒体104は、例えばHDD等の、描画サーバ100に着脱可能に接続される記録装置である。本実施形態では記録媒体104には、描画処理において画面の生成に用いる、以下のデータが記憶されているものとする。
・モデルデータ
・テクスチャデータ
・描画用プログラム
・描画用プログラムで用いられる演算用データ
【0032】
通信部113は、描画サーバ100が備える通信インタフェースである。通信部113は、ネットワーク400を介して接続したセンタサーバ200等の、他の機器間でのデータ送受信を行う。データ送信時には通信部113は、ネットワーク400あるいは送信先の機器との間で定められたデータ伝送形式にデータを変換し、送信先の機器へのデータ送信を行う。またデータ受信時には通信部113は、ネットワーク400を介して受信したデータを、描画サーバ100において読み取り可能な任意のデータ形式に変換し、例えばRAM103に記憶させる。
【0033】
第1GPU105、第2GPU106、第3GPU107、及び第4GPU108は、描画処理においてクライアント機器300に対して提供するゲーム画面の生成を行う。GPUの各々は、ゲーム画面の描画領域としてビデオメモリ(第1VRAM109、第2VRAM110、第3VRAM111、及び第4VRAM112)が接続されている。また各GPUはキャッシュメモリを有している。各GPUは、接続されたVRAMに対して描画を行う場合、描画オブジェクトのキャッシュメモリへの展開を行なった後、該展開後の描画オブジェクトを対応するVRAMに書き込む。なお、本実施形態では1つのGPUに対して1つのビデオメモリが接続されるものとして説明するが、本発明の実施はこれに限られない。即ち、GPUに対して接続されるビデオメモリの数は、任意の数であってよい。
【0034】
<センタサーバ200の構成>
また、本実施形態のセンタサーバ200の機能構成について説明する。図3は、本発明の実施形態に係るセンタサーバ200の機能構成を示すブロック図である。
【0035】
センタCPU201は、センタサーバ200が有する各ブロックの動作を制御する。具体的にはセンタCPU201は、例えばセンタROM202やセンタ記録媒体204からゲーム処理のプログラムを読み出し、センタRAM203に展開して実行することにより各ブロックの動作を制御する。
【0036】
センタROM202は、例えば書き換え可能な不揮発性メモリである。センタROM202は、ゲーム処理のプログラムに限らず他のプログラムが記憶されていてもよい。またセンタROM202は、センタサーバ200が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【0037】
センタRAM203は、揮発性メモリである。センタRAM203は、ゲーム処理のプログラムの展開領域としてだけでなく、センタサーバ200が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【0038】
センタ記録媒体204は、例えばHDD等の、センタサーバ200に着脱可能に接続される記録装置である。本実施形態ではセンタ記録媒体204は、ゲームを利用するユーザやクライアント機器を管理するデータベース、接続された各クライアント機器に提供するゲーム画面の生成に必要となるゲーム上の各種情報を管理するデータベース等として用いられる。
【0039】
センタ通信部205は、センタサーバ200が備える通信インタフェースである。センタ通信部205は、ネットワーク400を介して接続した描画サーバ100やクライアント機器300との間で、データ送受信を行う。なお、センタ通信部205は通信部113と同様に、通信仕様に従ったデータ形式の変換を行う。
【0040】
<ゲーム処理>
このような構成をもつ本実施形態の描画システムのセンタサーバ200において実行される基本的なゲーム処理について、図4のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、センタCPU201が、例えばセンタ記録媒体204に記憶されている対応する処理プログラムを読み出し、センタRAM203に展開して実行することにより実現することができる。
【0041】
なお、本ゲーム処理は、例えばセンタサーバ200が起動された際に開始され、提供するゲームの1フレームごとに繰り返し実行されるものとして説明する。また、以下の説明ではクライアント機器300a乃至eは既にセンタサーバ200に対して接続しているものとする。センタサーバ200は本ゲーム処理において、各クライアント機器に対してゲーム画面の提供を行う。
【0042】
S401で、センタCPU201は、各クライアント機器300においてなされた操作入力の情報を受信したか否かを判断する。具体的にはセンタCPU201は、センタ通信部205において受信されてセンタRAM203に記憶された情報が、クライアント機器300においてなされた操作入力の情報であるか否かを判断する。
【0043】
クライアント機器300においてなされた操作入力の情報は、例えば図5(a)に示されるようなデータ構造であってよい。本実施形態では操作入力の情報は、図5(a)に示されるように、
・操作入力がなされたクライアント機器の識別情報(IPアドレスやユーザ識別情報等
)
・操作入力により入力された移動量及び移動方向
・選択されたアクションの識別情報
・ゲーム画面の描画範囲(カメラパラメータ等)
・クライアント機器の表示装置における表示設定(画面表示解像度、色数等)
等の情報が含まれるものとする。なお、センタサーバ200が各クライアント機器300においてなされた操作入力として受信する情報のデータ構造はこれに限られるものではなく、ゲームによって予め定められたデータ構造であってよい。
【0044】
また本実施形態では、クライアント機器300において例えばユーザによりなされた操作を、ゲーム内での数値やパラメータに変換した情報がセンタサーバ200に送信されるものとして説明するが、これに限られるものではない。即ち、操作入力の情報は、ユーザがボタン等を操作することによりクライアント機器で検出された入力信号を示す情報であってもよい。この場合、センタCPU201が受信した入力信号を示す情報と、クライアント機器の種類に応じて、ゲーム内での数値やパラメータに変換する処理を行えばよい。
【0045】
センタCPU201は、クライアント機器300においてなされた操作入力の情報を受信したと判断した場合は処理をS402に移し、受信していないと判断した場合は処理をS403に移す。
【0046】
S402で、センタCPU201は、S402で受信したクライアント機器300における操作入力の情報に基づいて、ゲーム情報を更新する。具体的にはセンタCPU201は、例えば該クライアント機器300のユーザの操作対象であるゲーム内のキャラクタに対応する状態情報をセンタ記録媒体204から読み出す。キャラクタの状態情報は、例えばマップ上のキャラクタの位置(座標情報)やキャラクタの視線方向、キャラクタ動作等、ユーザの操作により変更可能なキャラクタの動作や容姿の情報を指すものとする。
【0047】
センタCPU201は受信した操作入力の情報を参照し、状態情報に含まれるパラメータのうちの操作入力により変化するパラメータを、受信した操作入力の情報で更新する。このようにすることで、センタCPU201は、クライアント機器300においてなされた操作入力の情報を、ゲームに反映させることができる。
【0048】
なお、センタCPU201は、S402で受信したクライアント機器300における操作入力の情報のうち、キャラクタの状態情報の更新に用いられない情報については、クライアント機器の識別情報に関連付けて例えばセンタ記録媒体204に記録するものとする。
【0049】
S403で、センタCPU201は、各クライアント機器300のユーザの操作対象のキャラクタ以外の、ゲーム内で状態を管理する描画オブジェクトの状態情報を更新する。ゲーム内で状態を管理する描画オブジェクトは、例えばNPC(Non Player Character)と呼ばれるユーザの操作非対象のキャラクタ、地形等の背景オブジェクト等である。ゲーム内で状態を管理する描画オブジェクトは、時間経過やユーザの操作対象のキャラクタの動作によって変化する。このためセンタCPU201は、本ステップにおいて時間経過やS402で更新したキャラクタの状態情報に応じて、ゲーム内で状態を管理する描画オブジェクトの状態情報を更新する。
【0050】
S404で、センタCPU201は、各クライアント機器300に対して提供するゲーム画面に含まれる描画オブジェクトを特定する。ゲーム画面に含まれる描画オブジェクトは、上述したゲーム内で状態を管理する描画オブジェクト、及びユーザの操作対象のキャラクタの描画オブジェクトである。
【0051】
具体的にはセンタCPU201は、現在センタサーバ200に接続されているクライアント機器300を1つずつ選択し、該クライアント機器300の識別情報が関連付けられたゲーム画面の描画範囲の情報を、センタ記録媒体204から読み出す。上述したようにゲーム画面の描画範囲の情報は、ゲーム画面についてのカメラパラメータを含んでいる。センタCPU201は該カメラパラメータを参照し、該カメラによる描画範囲に状態情報の座標情報が含まれるキャラクタ等の描画オブジェクトを、ゲーム画面に含まれる描画オブジェクトとして特定する。なお、描画オブジェクトには識別情報が割り当てられており、センタCPU201は、特定したゲーム画面に含まれる描画オブジェクトの識別情報を、クライアント機器の識別情報に関連付けてセンタ記録媒体204に記録する。
【0052】
S405で、センタCPU201は、全クライアント機器300に対して提供するゲーム画面の描画命令を描画サーバ100に送信し、描画サーバ100に描画処理を実行させる。具体的にはまずセンタCPU201は、各クライアント機器300の識別情報に関連付けてセンタ記録媒体204に記録されている、該クライアント機器300に提供するゲーム画面に含まれる描画オブジェクトの識別情報を読み出す。またセンタCPU201は、ゲーム画面に含まれる描画オブジェクトの各々に設定されている詳細情報をセンタ記録媒体204より読み出す。そしてセンタCPU201は、各クライアント機器300に提供するゲーム画面に含まれる描画オブジェクトの識別情報、及び各描画オブジェクトの詳細情報を、クライアント機器300の識別情報に関連付け、描画命令としてセンタ通信部205を介してセンタサーバ200に送信する。このとき、センタCPU201は、各クライアント機器の識別情報に関連付けられた、ゲーム画面の描画範囲の情報及びクライアント機器の表示装置における表示設定の情報をセンタ記録媒体204より読み出し、同様に描画サーバ100に送信するものとする。
【0053】
即ち、1つのクライアント機器に対して提供するゲーム画面の描画のためにセンタサーバ200に対して送信される描画命令は、図5(b)に示されるように、該クライアント機器の識別情報に関連付けられた、
・ゲーム画面に含まれる各描画オブジェクトの識別情報
・ゲーム画面に含まれる各描画オブジェクトについての詳細情報
・ゲーム画面に含まれる各描画オブジェクトの状態情報
・ゲーム画面の描画範囲及び表示設定の情報
を含んでいる。なお、ゲーム画面の描画範囲となるカメラパラメータや表示設定の情報等は、例えばカメラ位置が変化しないゲームや表示解像度が固定のゲームの場合、描画命令に含まれなくてもよい。
【0054】
なお、本実施形態ではクライアント機器300ごとに描画命令が描画サーバ100に送信されるものとして説明するが、複数あるいは全てのクライアント機器300についての描画命令が同時に送信されてもよいことは容易に理解されよう。
【0055】
S406で、センタCPU201は、描画命令に応じて描画サーバ100が生成したゲーム画面を、描画サーバ100から受信したか否かを判断する。具体的にはセンタCPU201は、描画サーバ100が生成して出力した各クライアント機器300のゲーム画面を、センタ通信部205が受信したか否かを判断する。センタCPU201は、ゲーム画面を受信したと判断した場合は処理をS407に移し、受信していないと判断した場合は本ステップの処理を繰り返す。即ち、本ステップでは各クライアント機器300のゲーム画面を受信するまで待機する。
【0056】
なお、本ステップにおいて受信するゲーム画面は、直前のS404において描画サーバ100に送信された描画命令によって生成されたゲーム画面であることが好ましいが、これに限られなくてもよい。即ち、本ゲーム処理は1フレームごとに実行されるため、ゲーム画面の描画が提供するゲームのフレームレートで規定される1フレーム時間内に完了しない場合、本ステップで受信されるゲーム画面は、現フレームよりも数フレーム前のフレームで送信された描画命令に応じて生成された画面であってもよい。
【0057】
S407で、センタCPU201は、S406で受信したゲーム画面を対応するクライアント機器300に対して配信する。具体的にはセンタCPU201は、センタ通信部205が受信してセンタRAM203に記憶されたゲーム画面の例えばヘッダ部に含まれるクライアント機器300の識別情報を参照する。そしてセンタCPU201は、該識別情報で示されるクライアント機器300に対して、センタ通信部205を介してゲーム画面を送信し、本ゲーム処理を完了する。
【0058】
このように、センタサーバ200は描画サーバ100に対して描画命令を行うことで、各クライアント機器300においてなされた操作入力が反映されたゲーム画面を生成させ、得られたゲーム画面を各クライアント機器300に配信することができる。
【0059】
しかしながら、クライアント機器300の数や描画範囲に含まれる描画オブジェクトの数によっては、クライアント機器300においてなされた操作入力が反映されたゲーム画面の生成に時間を要することになる。このことは、クライアント機器300のユーザに対してゲームのレスポンスが悪いという印象を与えてしまうことにつながる。本実施形態では、以下に示すように描画命令に含まれる描画オブジェクトの詳細情報を判断することで、描画サーバ100における描画処理に要する時間を短縮する方法について説明する。
【0060】
描画処理では、各描画オブジェクトについて、詳細情報に含まれる「モデルデータを特定する識別情報」、「テクスチャデータを特定する識別情報」、「描画用プログラムの指定情報」、及び「描画用プログラムで用いられる演算用データ」を読み出して描画処理を行う。即ち、ゲーム画面に含まれる描画オブジェクトが複数存在する場合、描画オブジェクトを1つずつ選択して詳細情報を読み出し、該詳細情報に応じて描画を行なった後、次の描画オブジェクトについての描画が行われる。つまり、描画サーバ100では描画処理中、描画する描画オブジェクトを切り替える度に、モデルデータやテクスチャデータのGPUへの転送及びコンバート、描画用プログラムの読み出し、演算用データの設定等、初期化に係る処理が実行されることになる。このように1つのゲーム画面の描画処理においては、1つの描画オブジェクトの描画における初期化に係る処理の時間(切り替えコスト)が、ゲーム画面の描画範囲に含まれる描画オブジェクトの数だけ必要となる。また複数のクライアント機器300に配信するゲーム画面を同時に生成する場合は、切り替えコストはさらに多くなる。
【0061】
一方、ゲーム画面の生成においては、特に背景等に、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトが存在することがある。例えばゲーム画面内に含まれる樹木のオブジェクト等は、数パターンのモデルデータに対して1つのテクスチャデータを使い回して描画されている。また、例えば共通の材質や質感を有するオブジェクトや、同一の光源下に存在するオブジェクトについては、同一の描画用プログラムや演算用データが使用されている。また、異なるクライアント機器に提供されるゲーム画面であっても、例えばゲーム内のマップ上におけるカメラ位置や方向が類似するゲーム画面については、描画範囲に存在する描画オブジェクトは共通しており、詳細情報も同一である可能性がある。
【0062】
本実施形態の描画処理では、このように詳細情報により示される少なくとも一部のデータが共通する描画オブジェクトについては連続する描画順を割り当てることで、描画処理中の切り替えコストを抑える。即ち、描画する描画オブジェクトを切り替える際に、先に描画した描画オブジェクトについて行われた演算結果や読み出されたデータを利用することで、共通する処理に要する時間を短縮し、切り替えコストを低減する。
【0063】
<描画処理>
以下、本実施形態の描画サーバ100の描画処理について、図6のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、CPU101が、例えばROM102に記憶されている対応する処理プログラムを読み出し、RAM103に展開して実行することにより実現することができる。なお、本描画処理は、例えばセンタサーバ200からの描画命令を受信した際に開始されるものとして説明する。なお、以下の説明では、上述のゲーム処理と同様に5台のクライアント機器300a乃至eに提供するゲーム画面の生成を、描画サーバ100が行うものとして説明する。
【0064】
S601で、CPU101は、クライアント機器300a乃至eに提供するゲーム画面の生成を、描画サーバ100が有するGPUに分類する。即ち、本ステップにおいてCPU101は受信した描画命令を、第1GPU105、第2GPU106、第3GPU107、及び第4GPU108のうち、いずれのGPUで処理するかを決定する。
【0065】
1つのGPUに対してゲーム画面の生成を割り当てるクライアント機器の分類方法については、例えば以下の方法が考えられる。
【0066】
1.ゲーム画面を規定するカメラパラメータ(描画範囲)
各クライアント機器300に提供するゲーム画面は、カメラパラメータによりゲーム画面の描画範囲(視野)が規定される。1つのカメラについての視野は、通常四角錐あるいは四角錐台で規定されるが、該視野が重複するゲーム画面については、同一の描画オブジェクトが含まれると考えられる。このため、同一のGPUにゲーム画面の生成を割り当てるクライアント機器は、視野の重複を考慮して分類することで描画処理の効率化が望める。具体的には、例えば視野で規定される四角錐を2次元平面に投影した三角形を、各クライアント機器に提供するゲーム画面を規定するカメラの座標及び方向に従って算出し、該三角形の範囲が所定の割合以上重複するゲーム画面を1つのグループとして分類し、同一のGPUに描画処理を割り当てればよい。
【0067】
また簡易的には、ゲーム画面を規定するカメラ座標が近いクライアント機器については、ゲーム画面の描画内容が類似することが期待される。このため、ゲーム画面を規定するカメラ座標の距離が所定距離以内のゲーム画面を1つのグループとして分類し、同一のGPUに描画処理を割り当ててもよい。
【0068】
またゲーム内のマップでは、例えば、山、森、海等、同様の背景オブジェクトが使用されるエリアが存在する。即ち、ゲーム画面を規定するカメラの座標が、このような背景オブジェクトが配置された特定のエリアに存在する、あるいはカメラの方向が該特定のエリアの方向を向いている場合、生成されるゲーム画面には共通の背景オブジェクトが含まれる。つまり、共通の背景オブジェクトが含まれるゲーム画面については1つのグループとして、同一のGPUに描画処理を割り当てることで、描画処理の効率化が望める。
【0069】
また、背景についてはゲーム内のマップの様々なエリアにおいて同一の描画オブジェクトが使用される可能性がある。即ち、ゲーム画面を規定するカメラの座標及び方向が異なっていたとしても、同一の背景オブジェクトが描画範囲に含まれることもあるため、1つのGPUで生成するゲーム画面のカメラ位置等は必ずしも近接していなくてもよい。
【0070】
割り当てるGPUの情報は、例えばカメラの座標及び方向情報の組み合わせについて、描画処理を行うGPUを予め定めた情報が、ルックアップテーブルとして記録媒体104に記録されていてもよい。また割り当てるGPUの情報は、例えばカメラの位置及び方向の値を引数とする関数によって、処理を行うGPUの情報が得られるように構成されてもよい。
【0071】
2.描画範囲に含まれる描画オブジェクトの詳細情報の組み合わせ
描画処理における切り替えコストは、描画順が連続する描画オブジェクトについて、詳細情報の一致度が高いほど低減される。このためセンタCPU201は、全クライアント機器300に提供するゲーム画面の各々について、ゲーム画面に含まれる全描画オブジェクトの詳細情報を参照し、ゲーム画面間での描画オブジェクトの一致度を詳細情報レベルで算出する。そして該一致度が高いゲーム画面の生成を1つのグループに分類し、同一のGPUに描画処理を割り当てればよい。
【0072】
なお、詳細情報の一致度については、例えば各ゲーム画面に含まれる描画オブジェクトを、詳細情報のうちのテクスチャデータやモデルデータ等の組み合わせで分布をとり、該分布の類似性として求めてもよい。また、例えば各ゲーム画面に含まれる描画オブジェクトのうち、詳細情報により示される特定の属性のデータについて分類し、各集合に属する描画オブジェクトの数が閾値以上の分類についてのみ、ゲーム画面間において総当たりで詳細情報を比較することで、詳細情報の一致度を算出してもよい。
【0073】
3.ユーザの操作対象のキャラクタのイベント参加有無
ゲームにおいては、マップ上の特定のポイントに存在する等、特定の条件を満たした場合にイベントが発生し、ゲーム画面が通常とは異なる画面に強制的に遷移することがある。例えば敵キャラクタ等との戦闘イベントでは、ユーザの操作対象のキャラクタは戦闘専用のフィールドにおいて敵キャラクタとの戦闘を行うことになる。このようなイベントは、マップ上の任意の位置において同時発生することが考えられるため、同一種類のイベントが発生しているクライアント機器300に提供するゲーム画面については1つのグループとして、同一のGPUに描画処理を割り当てることで、切り替えコストの低減が見込める。
【0074】
4.ゲーム進行状況
またストーリー進行が定められている種類のゲームについては、ゲーム進行状況によって描画されるオブジェクトの種類が限定されることが考えられる。例えばフィールドが建物内→広場→草原→森のように進行するストーリーの場合、フィールドが切り替わるごとにグループを分類しなおし、異なるGPUにゲーム画面の描画を割り当ててもよい。
【0075】
このように、ゲーム画面に含まれる描画オブジェクトの類似性を判断基準として、描画内容が類似する複数のグループに分類し、1つのグループについてゲーム画面の描画を同一のGPUに割り当てる。そして、後述する描画順決定処理を実行することにより、各GPUにおけるゲーム画面の生成をより効率的に行うことができる。なお、上記のクライアント機器300に提供するゲーム画面の生成を行うGPUの決定方法は例示を目的としたものであり、これ以外にも描画内容が類似していると思われるゲーム画面の描画を同一のGPUに割り当てることで描画処理の効率化が望める方法が用いられてよい。
【0076】
本実施形態では、ゲーム画面を規定するカメラの位置及び座標情報に応じて描画処理を行うGPUを決定する、上記1の方法を使用するものとして説明する。また以下では、5つのクライアント機器300a乃至eに提供するゲーム画面の生成は1つのグループに分類され、第1GPU105で全て行われるものとする。なお、1つのグループに分類されるゲーム画面の数(クライアント機器の数)は、GPUの処理能力及びVRAMの容量により決定される。また各グループに分類されたクライアント機器の情報は、例えば1つのグループIDを有するテーブルに、クライアント機器の識別情報が追加されてRAM103に記憶されることにより管理されればよい。
【0077】
S602で、CPU101は、各GPUに割り当てられたグループの各々について、描画する全てのゲーム画面に含まれる描画オブジェクトを対象として、描画オブジェクトの描画順を決定する描画順決定処理を実行する。
【0078】
(描画順決定処理)
ここで、本実施形態の描画順決定処理について、図7のフローチャートを用いて詳細を説明する。なお、以下の説明では第1GPU105で描画を行う1つのグループのゲーム画面を対象として、該ゲーム画面に含まれる描画オブジェクトに対して描画順を決定する処理について説明するが、他のGPUについても同様に処理すればよいことは容易に理解されよう。
【0079】
S701で、CPU101は、第1GPU105で描画を行う1つのグループのゲーム画面に含まれる全描画オブジェクトについて、2つの描画オブジェクトで構成される全ての組み合わせのペアを作成する。
【0080】
S702で、CPU101は、S701で作成された全てのペアについて、詳細情報の優先度が高い属性の順に傾斜配分された得点を用いて、2つの描画オブジェクトの詳細情報の一致度をスコアリングする。本実施形態では詳細情報により示される各データの属性について、以下の順番で優先度が設けられる。
1.テクスチャデータを特定する識別情報
2.モデルデータを特定する識別情報
3.使用する描画用プログラムの指定情報
4.描画用プログラムで用いられる演算用データの指定情報
【0081】
詳細情報により示される各データの属性の優先度は、該属性のデータを読み出してキャッシュメモリに展開した際の、メモリ上のデータサイズに応じて定められている。上位の属性のデータほどデータサイズが大きく、異なるデータに切り替えた際にキャッシュメモリへの展開、キャッシュメモリからの新規読み出し、及びパラメータの設定等に時間を要する、即ち切り替えコストが高い属性のデータとなる。つまり、優先度の高い属性のデータについて切り替え頻度を低くする(再利用頻度を高くする)描画順で描画を行うことで、切り替えコストを効率的に低減することができる。
【0082】
即ち、本ステップのスコアリングにより、詳細情報の一致度が高い、即ち優先度の高い属性データについて最利用頻度を高くすることで切り替えコストが低くなる描画オブジェクトのペアほど、高いスコアが付される。
【0083】
S703で、CPU101は、全てのペアについての一致度のスコアを参照し、第1GPU105で描画を行う1つのグループのゲーム画面に含まれる全描画オブジェクトの描画順を決定する。具体的にはCPU101は、全描画オブジェクトを描画順に並べた場合に連続する描画オブジェクトの組み合わせについてのスコアの総和が最も高くなる描画順を決定する。
【0084】
ここで、具体的な描画順の決定手順について図を用いて詳細を説明する。なお、以下では説明を簡単にするために、上述した詳細情報の4つの属性のうち、テクスチャデータ及びモデルデータの一致度を考慮して描画順を決定する方法について説明する。
【0085】
図8は、S703における描画オブジェクトの描画順決定手順の例に用いられる、各クライアント機器に提供するゲーム画面に含まれる描画オブジェクトを示している。図8の例では3つのクライアント機器に提供するゲーム画面を同一のGPUで生成する場合を示しており、各ゲーム画面に2つの描画オブジェクト、計6つの描画オブジェクトの描画をGPUが行う。
【0086】
CPU101により、全てのオブジェクトについて組み合わせ可能なペアを生成すると、その数は6C2=15になる。即ち、CPU101は15通りのペアの全てについて、一致度のスコアリングを行う。本実施形態では、詳細情報の各属性が一致した場合の加点は、テクスチャデータの一致を2点、モデルデータの一致を1点として計算する。このとき、各ペアのスコアは図9のようになる。
【0087】
CPU101は、まず最高点3のスコアを有するペアに着目する。本例では、最高点3を有するペアは(A−1,B−1)、(A−1,C−2)、及び(B−1,C−2)の3つである。このとき最高点を有するペアの数と、該ペアを構成する描画オブジェクト(3点オブジェクト)の数が等しいため、該ペアは全て同一の詳細情報を有する3点オブジェクトで構成されていることがわかる。そしてCPU101は、3点オブジェクトの各々について、該オブジェクトを含む他のペアのスコアを参照し、まず3点オブジェクトの描画順を決定する。
【0088】
3点オブジェクトを含む他のペアのスコアは、図9に示されるように次点の2か、A−2とのペアのスコア0である。即ち、描画順において3点オブジェクトに続く描画オブジェクトとして、A−2以外の描画オブジェクトを割り当てる場合は、描画オブジェクトに依らず切り替えコストは同一になる。このためCPU101は、上述した3つの3点オブジェクトの描画順を特に考慮せず、例えば識別情報のソート順で順番を決定する。
なお、このとき次点を有するペアが1つしかなかった場合は、3つの3点オブジェクトのうち、該ペアに含まれる描画オブジェクトが3点オブジェクトの描画順において最後である3番目に決定され、4番目に該ペアに含まれる他方の描画オブジェクトが割り当てられる。
【0089】
同様にCPU101は、次点のペアに含まれる3点オブジェクト以外の描画オブジェクト(2点オブジェクトB−2,C−1)についての描画順を決定する。図9に示されるように、2点オブジェクトを含む次点以下のペアは、描画オブジェクトA−2とのペアのみである。図示されるように描画オブジェクトA−2は2点オブジェクトのB−2とのペアのスコアのみ1である。このため、2点オブジェクトのうち描画オブジェクトB−2は、2点オブジェクトの中で最後の描画順である5番目に決定され、描画オブジェクトA−2は6番目に決定される。
【0090】
CPU101は、このような判断を繰り返すことにより、1つのグループのゲーム画面に含まれる全ての描画オブジェクトについて、描画順を決定できる。本例では、最終的には図10に示されるようにA−1→B−1→C−2→C−1→B−2→A−2として、CPU101は描画順を決定する。
【0091】
このようにすることで、1つのグループに分類されたゲーム画面に含まれる全描画オブジェクトに対して、切り替えコストを抑えた描画順を割り当てることができる。なお、描画順の割り当てについては、例えば描画順に描画オブジェクトの識別情報を関連付け、リストとして例えばRAM103に記憶すればよい。
【0092】
S602における描画順決定処理が完了した後、CPU101はS603で、決定した描画順に従って描画オブジェクトの描画を行い、各クライアント機器300に提供するゲーム画面を生成する。具体的にはCPU101は、描画順に従って描画オブジェクトの詳細情報を参照し、該詳細情報により特定されるデータを記録媒体104から読み出して描画を行うGPUに転送する。このときCPU101は、既に展開領域に展開されているデータと異なるデータのみを読み出して転送し、既に展開されているデータと共通のデータについては読み出しを行わず、既に展開されているデータを利用する。
【0093】
なお、ゲーム画面の生成には、各描画オブジェクトの座標情報や動作情報を含む状態情報、及びカメラパラメータを含むゲーム画面の描画範囲及び表示設定の情報が使用されるが、これらの使用は公知の処理内容であるため説明を省略する。
【0094】
S604で、CPU101は、各GPUが生成したゲーム画面について、ヘッダ部に提供するクライアント機器の識別情報を付し、通信部113を介してセンタサーバ200に送信する。
【0095】
このようにすることで、切り替えコストを抑えて描画処理を行えるため、ユーザの操作入力に対して、より応答性に優れたゲーム画面を、クライアント機器を操作するユーザに提供することができる。
【0096】
なお、本実施形態では単に「ゲーム画面」をセンタサーバ200からクライアント機器300に対して送信するものとして説明した。しかしながら「ゲーム画面」は、単に静止画像データであってもよいが、フレーム間予測等の更にデータサイズを減少させる符号化処理が適用された、動画データのフレーム画像データとして送信されてもよい。符号化処理については、描画サーバ100及びセンタサーバ200のいずれで行われてもよいことは言うまでもない。
【0097】
また、本実施形態では多人数同時参加型のネットワークゲームを例に、本発明の実施を説明した。しかしながら上述したように、本発明は1以上のクライアント機器に提供する画面を同時に作成することが可能な任意の機器及びシステムに適用可能なものであり、本発明の実施はこれに限られるものではない。例えば、描画システムにおいて、各クライアント機器に対してシングルユーザ対応のゲームコンテンツを独立して提供する場合、複数のクライアント機器には類似するゲーム画面が出力される可能性がある。即ち、マップ上の位置や方向が類似する、ゲームの進行が類似する、あるいは同一の動作を実行している場合に提供されるゲーム画面内には、共通する描画オブジェクトが含まれると考えられるため、本発明の適用により描画処理に係る効率化が図れる。
【0098】
また、本実施形態では描画システムにおいて描画サーバ100とセンタサーバ200とは分離されているものとして説明したが、本発明の実施はこれに限られない。即ち、本発明は描画サーバ100及びセンタサーバ200の機能を有する1つのサーバによって実施されてもよい。
【0099】
以上説明したように、本実施形態の描画制御装置は、1以上のクライアント機器に対してゲーム画面を提供する描画システムにおいて、応答性に優れた効率的な描画処理を行うことができる。具体的には描画制御装置は、クライアント機器に対して提供する画面の生成に用いられる複数の描画オブジェクトの各々について、識別情報と描画に必要となるデータを示す詳細情報とを取得する。そして複数の描画オブジェクトの各々の詳細情報を参照して、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当てるように、全描画オブジェクトの描画順を決定する。描画制御装置は、描画順に従って描画オブジェクトの詳細情報により示されるデータを読み出し、GPUに転送する。このとき、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既にGPUに転送されたデータと共通でないデータについてのみ読み出して転送する。
【0100】
このようにすることで、ゲーム画面の描画処理に要する時間を低減し、効率的な描画を行うことができる。
【0101】
[変形例]
上述した実施形態では、1つのグループに分類されたゲーム画面に含まれる全ての描画オブジェクトについて、全組み合わせのペアを作ってスコアリングした上で、描画順を決定する描画順決定処理について説明した。本変形例では、詳細情報の優先度が高い属性の順に描画オブジェクトをソートして分類することにより、簡易的にスコアリングを行う方法について説明する。
【0102】
(描画順決定処理)
以下、本変形例の描画順決定処理について、図11のフローチャートを用いて詳細を説明する。なお、以下の説明では第1GPU105で描画を行う1つのグループのゲーム画面を対象として、該ゲーム画面に含まれる描画オブジェクトに対して描画順を決定する処理について説明するが、他のGPUについても同様に処理すればよいことは容易に理解されよう。
【0103】
S1101で、CPU101は、第1GPU105で描画を行う1つのグループのゲーム画面に含まれる全描画オブジェクトについて、詳細情報により示される、優先度が高い属性の順に傾斜配分された得点によるスコアリングを1番高い属性のデータで分類する。本変形例でも詳細情報により示される各データの属性については、以下の順番で優先度が設けられる。
1.テクスチャデータを特定する識別情報
2.モデルデータを特定する識別情報
3.使用する描画用プログラムの指定情報
4.描画用プログラムで用いられる演算用データの指定情報
【0104】
即ち、本ステップではCPU101は、テクスチャデータを特定する識別情報で全描画オブジェクトを分類する。
【0105】
S1102で、CPU101は、S1101での分類により生成された同一のテクスチャデータを使用する描画オブジェクトの各集合について属するメンバ数を参照し、メンバ数が1である集合を特定する。そしてCPU101は、メンバ数が1である集合の描画オブジェクトを1つの集合(テクスチャ不一致集合)に統合する。
【0106】
S1103で、CPU101は、同一のテクスチャデータを使用する描画オブジェクトの集合及びテクスチャ不一致集合について、優先度が2番目に高いモデルデータを特定する識別情報で各集合の描画オブジェクトを分類する。即ち、本ステップにより、同一のテクスチャデータを使用する描画オブジェクトの集合及びテクスチャ不一致集合の各々に属する描画オブジェクトは、同一のモデルデータを使用する描画オブジェクトの子集合に分類される。
【0107】
S1104で、CPU101は、S1103での分類により生成された同一のモデルデータを使用する描画オブジェクトの各集合について属するメンバ数を参照し、メンバ数が1である集合を特定する。そしてCPU101は、同一のテクスチャデータを使用する描画オブジェクトの集合及びテクスチャ不一致集合の各々において、メンバ数が1である集合の描画オブジェクトを1つの集合(モデル不一致集合)に統合する。
【0108】
S1105で、CPU101は、集合分類が行われていない属性が存在するか否かを判断する。集合分類が行われていない属性が存在する場合、CPU101は集合分類が行われていない属性を優先度順に選択し、処理をS1103に戻す。即ち、次は同一のモデルデータを使用する描画オブジェクトの集合及びモデル不一致集合について、描画用プログラムの指定情報で各集合の描画オブジェクトを分類する。
【0109】
このように、S1101、S1102、及びS1103乃至S1105の繰り返し処理を行うことで詳細情報により示される各データの属性ごとに分類を行い、最終的に詳細情報により示されるデータのうち、少なくともいずれかのデータが一致する描画オブジェクトを集合にまとめることができる。
【0110】
なお、本ステップにおいてCPU101は、集合分類が行われていない属性が存在しないと判断した場合は、処理をS1106に移す。
【0111】
S1106で、CPU101は、第1GPU105で描画を行う1つのグループのゲーム画面に含まれる、全描画オブジェクトに対して描画順を決定する。つまりCPU101は、S1101乃至S1105で行われた描画オブジェクトの分類の情報に従い、切り替えコストが低い描画順を決定する。
【0112】
具体的にはCPU101は、まず優先度が1番高い「テクスチャデータを特定する識別情報」について分類された集合のうち、テクスチャ不一致集合以外の1つの集合を選択する。そして該集合に含まれる子集合を順に選択して、該子集合内の描画オブジェクトに描画順を割り当てていく。このとき子集合の選択順は、例えば2進数を用いて集合を表し、該値の降順に集合を選択すればよい。例えば、優先度が2番目に高い属性が同一である集合については23、優先度が3番目に高い属性が同一である集合については22、優先度が4番目に高い属性が同一である集合については21、優先度が1番低い属性が同一である集合については20を加点するスコアリングを行い、スコアの降順で描画順を決定すればよい。
【0113】
また、1つの「テクスチャデータを特定する識別情報」について分類された集合に対して、描画オブジェクトの描画順の決定が完了した場合、次の同一のテクスチャデータを使用する集合について同様に描画順を決定する。また、テクスチャ不一致集合以外の集合に対して、描画オブジェクトの描画順の決定が完了した場合、テクスチャ不一致集合に含まれる描画オブジェクトについても同様に描画順を決定する。
【0114】
このようにすることで、全描画オブジェクトに対して、切り替えコストを抑えた描画順を割り当てることができる。
【技術分野】
【0001】
本発明は、描画制御装置、その制御方法、プログラム、記録媒体、描画サーバ、及び描画システムに関し、特にネットワーク接続されたクライアント機器に対して、描画した画面を提供する技術に関する。
【背景技術】
【0002】
ネットワーク接続可能なパーソナルコンピュータ(PC)等のクライアント機器が普及している。このような機器の普及により、インターネットにおけるネットワーク人口は増加している。近年では、ネットワークユーザに対する、インターネットを利用した様々なサービスが展開されており、ゲーム等のエンターテインメントサービスも提供されている。
【0003】
ネットワークユーザに対するサービスの1つとして、MMORPG(Massively Multiplayer Online Role-Playing Game)等の多人数同時参加型のネットワークゲームがある。多人数同時参加型のネットワークゲームでは、ユーザは使用するクライアント機器を、ゲームを提供するサーバ機器に接続することで、該サーバ機器に接続されているクライアント機器を使用するユーザとの対戦プレイや協力プレイを行うことができる。
【0004】
一般的な多人数参加型のネットワークゲームでは、クライアント機器はサーバ機器との間でゲームの描画に必要なデータの送受信を行う。クライアント機器は、受信した描画に必要なデータを用いて描画処理を実行し、生成したゲーム画面をクライアント機器に接続された表示装置に提示することで、ユーザにゲーム画面を提供する。また、ユーザが入力インタフェースを操作することで入力された情報はサーバ機器に送信され、サーバ機器における演算処理に使用されたり、サーバ機器に接続された他のクライアント機器に伝送されたりする。
【0005】
しかしながら、このようなクライアント機器で描画処理を行うネットワークゲームの中は、ユーザが十分な描画性能を行うPCや専用のゲーム機の使用が必要となるものがある。このため、ネットワークゲーム(1コンテンツ)のユーザ数は、コンテンツが要求するクライアント機器の性能に依存してしまう。即ち、例えば美麗なグラフィックを提供するゲーム等の高い描画性能が要求されるゲームでは、ユーザ数を増加させることが困難である。
【0006】
これに対し、近年ではクライアント機器の描画性能等の処理能力に依存せずに、ユーザがプレイ可能なゲームも提供されている(特許文献1)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】国際公開第2009/138878号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1のようなゲームでは、サーバ機器はクライアント機器においてなされた操作の情報を取得し、該情報を用いて描画処理を実行して得られたゲーム画面を、クライアント機器に対して提供している。即ち、クライアント機器においてなされた操作に応じて描画処理をサーバ機器において行う場合、ユーザがストレスなくプレイを行うためにはレスポンスを速く、つまり操作を反映したゲーム画面の提供を速くする必要がある。
【0009】
特に、多人数同時参加型のネットワークゲームでは、サーバ機器は複数のクライアント機器に対して提供するゲーム画面を同時に生成するため、複数のゲーム画面の描画処理に要する時間を低減することが望まれる。しかしながら、特許文献1にはゲーム画面の描画処理の効率化についての具体的な方法については言及されていなかった。
【0010】
本発明は、上述の問題点に鑑みてなされたものであり、1以上のクライアント機器に対してゲーム画面を提供する描画システムにおいて、応答性に優れた効率的な描画処理を行うことを目的とする。
【課題を解決するための手段】
【0011】
前述の目的を達成するために、本発明の描画制御装置は、以下の構成を備える。
クライアント機器に対して提供する画面の生成に用いられる複数の描画オブジェクトの情報を取得して記憶手段に記憶する取得手段であって、各描画オブジェクトの情報は、該描画オブジェクトの識別情報と、該描画オブジェクトの描画に必要となるデータを示す詳細情報とで構成される取得手段と、取得手段により取得された複数の描画オブジェクトの各々の詳細情報を参照して複数の描画オブジェクトの描画順を決定する決定手段と、決定手段により決定された描画順に従って描画オブジェクトの識別情報を取得し、該識別情報に対応する描画オブジェクトの詳細情報により示されるデータをデータ記憶手段より読み出し、複数の描画オブジェクトの描画を順に行って画面を生成する描画手段に転送する転送手段と、を有し、決定手段は、複数の描画オブジェクトのうち、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当て、転送手段は、描画順に従って描画を行う際に、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既に描画手段に転送されたデータと共通でないデータについて、データ記憶手段から読み出して転送することを特徴とする。
【0012】
また前述の目的を達成するために、本発明の描画システムは、以下の構成を備える。
センタサーバに対して接続された1以上のクライアント機器の各々に対して、描画サーバで生成された画面を提供する描画システムであって、センタサーバは、1以上のクライアント機器から入力データを受信する受信手段と、1以上のクライアント機器の各々について、受信手段により受信された入力データに応じて、該クライアント機器に対して提供する画面に含まれる描画オブジェクトを特定する特定手段と、特定手段により特定された、1以上のクライアント機器に対して提供する画面に含まれる複数の描画オブジェクトの情報を描画サーバに送信する送信手段であって、各描画オブジェクトの情報は、該描画オブジェクトの識別情報と、該描画オブジェクトの描画に必要となるデータを示す詳細情報とで構成される送信手段と、描画サーバにおいて描画された、1以上のクライアント機器の各々に対して提供する画面を受信し、対応するクライアント機器に対して配信する配信手段と、を有し、描画サーバは、送信手段により送信された複数の描画オブジェクトの情報を取得して記憶手段に記憶する取得手段と、複数の描画オブジェクトの描画を順に行って、1以上のクライアント機器の各々に対して提供する画面を生成する描画手段と、取得手段により取得された複数の描画オブジェクトの各々の詳細情報を参照して複数の描画オブジェクトの描画順を決定する決定手段と、決定手段により決定された描画順に従って描画オブジェクトの識別情報を取得し、該識別情報に対応する描画オブジェクトの詳細情報により示されるデータをデータ記憶手段より読み出し、描画手段に転送する転送手段と、を有し、決定手段は、複数の描画オブジェクトのうち、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当て、転送手段は、描画順に従って描画を行う際に、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既に描画手段に転送されたデータと共通でないデータについて、データ記憶手段から読み出して転送することを特徴とする。
【発明の効果】
【0013】
このような構成により本発明によれば、1以上のクライアント機器に対してゲーム画面を提供する描画システムにおいて、応答性に優れた効率的な描画処理を行うことが可能となる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施形態に係る描画システムのシステム構成を示した図
【図2】本発明の実施形態に係る描画サーバ100の機能構成を示したブロック図
【図3】本発明の実施形態に係るセンタサーバ200の機能構成を示したブロック図
【図4】本発明の実施形態に係るセンタサーバ200のゲーム処理を例示したフローチャート
【図5】本発明の実施形態に係る操作入力の情報及び描画命令のデータ構造を例示した図
【図6】本発明の実施形態に係る描画サーバ100の描画処理を例示したフローチャート
【図7】本発明の実施形態に係る描画サーバ100の描画順決定処理を例示したフローチャート
【図8】本発明の実施形態に係る描画順決定処理を説明するための図
【図9】本発明の実施形態に係る描画順決定処理を説明するための別の図
【図10】本発明の実施形態に係る描画順決定処理により決定された描画順を説明するための図
【図11】本発明の変形例に係る描画サーバ100の描画順決定処理を例示したフローチャート
【発明を実施するための形態】
【0015】
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、描画システムの一例としての、1以上のクライアント機器の接続を受け付け可能なセンタサーバと、1以上のクライアント機器の各々に提供する画面を同時に生成可能な描画サーバとに、本発明を適用した例を説明する。しかし、本発明は、1以上のクライアント機器に提供する画面を同時に作成することが可能な任意の機器及びシステムに適用可能である。
【0016】
また、本明細書において、センタサーバがクライアント機器に対して提供する「サービス」とは、上述したような多人数同時参加型のネットワークゲームであるものとする。描画システムでは、クライアント機器に対して提供するゲーム画面が描画サーバにおいて生成され、該ゲーム画面はセンタサーバを介してクライアント機器に配信されるものとする。しかしながら、描画システムはこのようなサービスの提供に限らず、クライアント機器に対して、画面を描画して配信する構成であればよい。
【0017】
<描画システムの構成>
図1は、本発明の実施形態に係る描画システムのシステム構成を示す図である。
【0018】
図示されるように、サービス提供を受けるクライアント機器300a乃至eと、サービス提供を行うセンタサーバ200とは、インターネット等のネットワーク400を介して接続されている。また同様にクライアント機器300に対して提供する画面を描画する描画サーバ100は、ネットワーク400を介してセンタサーバ200に接続されている。なお、以下の説明では特に指定のない限り「クライアント機器300」と称した場合は、クライアント機器300a乃至eの全てを指すものとする。
【0019】
クライアント機器300は、例えばPC、家庭用ゲーム機、携帯ゲーム機に限らず、携帯電話、PDF、タブレット等の機器であってよい。本実施形態の描画システムは、クライアント機器においてなされた操作入力に応じたゲーム画面を描画サーバ100が生成し、センタサーバ200がクライアント機器300に配信する。このため、クライアント機器300はゲーム画面の生成を行う描画機能を有するものでなくてよい。即ち、クライアント機器300は、操作入力を行うユーザインタフェース及び画面の表示を行う表示装置を有する機器、あるいは該ユーザインタフェース及び表示装置が接続可能な機器であって、受信したゲーム画面を、表示装置を用いて表示可能な機器であればよい。つまり本発明は、ゲーム画面の生成に係る描画処理がビデオストリームのデコードに係る処理に比べて多くのハードウェアリソースを使用することに着目し、サーバ側で生成したゲーム画面をクライアント機器に送信することで、クライアント機器の有する描画性能に依存しないゲームの提供を行う。
【0020】
センタサーバ200は、ゲーム処理プログラムの実行及び管理、描画サーバ100への描画処理命令、クライアント機器300とのデータ送受信を行う。具体的にはセンタサーバ200では、クライアント機器300に対して提供するサービスである、多人数同時参加型ネットワークゲームのゲーム処理が実行される。
【0021】
センタサーバ200は、例えば各クライアント機器のユーザが操作するキャラクタのマップ上の位置や方向、各キャラクタに対して提供するイベント等の情報を管理する。そしてセンタサーバ200は、管理しているキャラクタの状態に応じたゲーム画面の生成を描画サーバ100に実行させる。例えばセンタサーバ200に対して、接続されている各クライアント機器においてなされたユーザの操作入力の情報がネットワーク400を介して入力されると、センタサーバ200では該情報を管理しているキャラクタの情報に反映させる処理が実行される。そしてセンタサーバ200は、操作入力の情報が反映されたキャラクタの情報に基づいてゲーム画面に描画する描画オブジェクトを決定し、描画サーバ100に対して描画命令を行う。
【0022】
描画サーバ100は、描画処理の実行を担うサーバであり、本実施形態では後述するように4つのGPUを有する。描画サーバ100は、センタサーバ200より受けた描画命令に応じてゲーム画面の描画を行い、生成したゲーム画面をセンタサーバ200に出力する。なお、描画サーバ100は、複数のゲーム画面を同時に作成可能であるものとする。描画サーバ100は、各ゲーム画面について描画サーバ100から受信した、ゲーム画面に含まれる描画オブジェクトの識別情報、及び各描画オブジェクトの描画に必要なデータを示す詳細情報に基づいて、GPUでゲーム画面の描画処理を実行する。
【0023】
本実施形態では、「描画オブジェクトの描画に必要なデータを示す詳細情報」には次の属性のデータを示す情報が含まれるものとする。
・モデルデータを特定する識別情報
・テクスチャデータを特定する識別情報
・使用する描画用プログラムの指定情報(シェーダ等)
・描画用プログラムで用いられる演算用データの指定情報(光源強度、光源ベクトル、
回転行列等)
【0024】
なお、本実施形態では上記の情報を含む詳細情報がセンタサーバ200から描画サーバ100に伝送されるものとして説明するが、詳細情報に含まれる情報は上記に限られない。例えば、詳細情報には上記の5つの情報の少なくともいずれかが含まれていてもよいし、上記以外に描画オブジェクトの描画処理において用いられる情報が含まれていてもよい。また演算用データとは、描画処理において演算に用いられる定数や変数等の数値を含むものとして、以下説明する。
【0025】
センタサーバ200は、送信した描画オブジェクトの識別情報及び詳細情報を含む描画命令に応じて描画サーバ100から受信したゲーム画面を、対応するクライアント機器に対して配信する。このようにすることで、本実施形態の描画システムはクライアント機器においてなされた操作入力に応じたゲーム画面を生成し、クライアント機器の表示装置を介してユーザにゲーム画面を提供することができる。
【0026】
なお、本実施形態では描画システムは、1つの描画サーバ100と1つのセンタサーバ200とで構成されるものとして説明するが、本発明の実施はこれに限られない。例えば、複数のセンタサーバ200に対して1つの描画サーバ100が割り当てられている構成であってもよいし、複数のセンタサーバ200に対して複数の描画サーバ100が割り当てられている構成であってもよい。またセンタサーバ200は、描画サーバ100あるいは描画サーバ100の各GPUにおいて同時生成しているゲーム画面の数の情報に応じて、描画命令を行う描画サーバ100あるいは描画サーバ100のGPUを指定してもよい。
【0027】
<描画サーバ100の構成>
図2は、本発明の実施形態に係る描画サーバ100の機能構成を示すブロック図である。
【0028】
CPU101は、描画サーバ100が有する各ブロックの動作を制御する。具体的にはCPU101は、例えばROM102や記録媒体104に記憶されている描画処理の動作プログラムを読み出し、RAM103に展開して実行することにより、各ブロックの動作を制御する。
【0029】
ROM102は、例えば書き換え可能な不揮発性メモリである。ROM102は、描画処理の動作プログラムに加え、他の動作プログラムや描画サーバ100が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【0030】
RAM103は、揮発性メモリである。RAM103は、動作プログラムの展開領域としてだけでなく、描画サーバ100が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【0031】
記録媒体104は、例えばHDD等の、描画サーバ100に着脱可能に接続される記録装置である。本実施形態では記録媒体104には、描画処理において画面の生成に用いる、以下のデータが記憶されているものとする。
・モデルデータ
・テクスチャデータ
・描画用プログラム
・描画用プログラムで用いられる演算用データ
【0032】
通信部113は、描画サーバ100が備える通信インタフェースである。通信部113は、ネットワーク400を介して接続したセンタサーバ200等の、他の機器間でのデータ送受信を行う。データ送信時には通信部113は、ネットワーク400あるいは送信先の機器との間で定められたデータ伝送形式にデータを変換し、送信先の機器へのデータ送信を行う。またデータ受信時には通信部113は、ネットワーク400を介して受信したデータを、描画サーバ100において読み取り可能な任意のデータ形式に変換し、例えばRAM103に記憶させる。
【0033】
第1GPU105、第2GPU106、第3GPU107、及び第4GPU108は、描画処理においてクライアント機器300に対して提供するゲーム画面の生成を行う。GPUの各々は、ゲーム画面の描画領域としてビデオメモリ(第1VRAM109、第2VRAM110、第3VRAM111、及び第4VRAM112)が接続されている。また各GPUはキャッシュメモリを有している。各GPUは、接続されたVRAMに対して描画を行う場合、描画オブジェクトのキャッシュメモリへの展開を行なった後、該展開後の描画オブジェクトを対応するVRAMに書き込む。なお、本実施形態では1つのGPUに対して1つのビデオメモリが接続されるものとして説明するが、本発明の実施はこれに限られない。即ち、GPUに対して接続されるビデオメモリの数は、任意の数であってよい。
【0034】
<センタサーバ200の構成>
また、本実施形態のセンタサーバ200の機能構成について説明する。図3は、本発明の実施形態に係るセンタサーバ200の機能構成を示すブロック図である。
【0035】
センタCPU201は、センタサーバ200が有する各ブロックの動作を制御する。具体的にはセンタCPU201は、例えばセンタROM202やセンタ記録媒体204からゲーム処理のプログラムを読み出し、センタRAM203に展開して実行することにより各ブロックの動作を制御する。
【0036】
センタROM202は、例えば書き換え可能な不揮発性メモリである。センタROM202は、ゲーム処理のプログラムに限らず他のプログラムが記憶されていてもよい。またセンタROM202は、センタサーバ200が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【0037】
センタRAM203は、揮発性メモリである。センタRAM203は、ゲーム処理のプログラムの展開領域としてだけでなく、センタサーバ200が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【0038】
センタ記録媒体204は、例えばHDD等の、センタサーバ200に着脱可能に接続される記録装置である。本実施形態ではセンタ記録媒体204は、ゲームを利用するユーザやクライアント機器を管理するデータベース、接続された各クライアント機器に提供するゲーム画面の生成に必要となるゲーム上の各種情報を管理するデータベース等として用いられる。
【0039】
センタ通信部205は、センタサーバ200が備える通信インタフェースである。センタ通信部205は、ネットワーク400を介して接続した描画サーバ100やクライアント機器300との間で、データ送受信を行う。なお、センタ通信部205は通信部113と同様に、通信仕様に従ったデータ形式の変換を行う。
【0040】
<ゲーム処理>
このような構成をもつ本実施形態の描画システムのセンタサーバ200において実行される基本的なゲーム処理について、図4のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、センタCPU201が、例えばセンタ記録媒体204に記憶されている対応する処理プログラムを読み出し、センタRAM203に展開して実行することにより実現することができる。
【0041】
なお、本ゲーム処理は、例えばセンタサーバ200が起動された際に開始され、提供するゲームの1フレームごとに繰り返し実行されるものとして説明する。また、以下の説明ではクライアント機器300a乃至eは既にセンタサーバ200に対して接続しているものとする。センタサーバ200は本ゲーム処理において、各クライアント機器に対してゲーム画面の提供を行う。
【0042】
S401で、センタCPU201は、各クライアント機器300においてなされた操作入力の情報を受信したか否かを判断する。具体的にはセンタCPU201は、センタ通信部205において受信されてセンタRAM203に記憶された情報が、クライアント機器300においてなされた操作入力の情報であるか否かを判断する。
【0043】
クライアント機器300においてなされた操作入力の情報は、例えば図5(a)に示されるようなデータ構造であってよい。本実施形態では操作入力の情報は、図5(a)に示されるように、
・操作入力がなされたクライアント機器の識別情報(IPアドレスやユーザ識別情報等
)
・操作入力により入力された移動量及び移動方向
・選択されたアクションの識別情報
・ゲーム画面の描画範囲(カメラパラメータ等)
・クライアント機器の表示装置における表示設定(画面表示解像度、色数等)
等の情報が含まれるものとする。なお、センタサーバ200が各クライアント機器300においてなされた操作入力として受信する情報のデータ構造はこれに限られるものではなく、ゲームによって予め定められたデータ構造であってよい。
【0044】
また本実施形態では、クライアント機器300において例えばユーザによりなされた操作を、ゲーム内での数値やパラメータに変換した情報がセンタサーバ200に送信されるものとして説明するが、これに限られるものではない。即ち、操作入力の情報は、ユーザがボタン等を操作することによりクライアント機器で検出された入力信号を示す情報であってもよい。この場合、センタCPU201が受信した入力信号を示す情報と、クライアント機器の種類に応じて、ゲーム内での数値やパラメータに変換する処理を行えばよい。
【0045】
センタCPU201は、クライアント機器300においてなされた操作入力の情報を受信したと判断した場合は処理をS402に移し、受信していないと判断した場合は処理をS403に移す。
【0046】
S402で、センタCPU201は、S402で受信したクライアント機器300における操作入力の情報に基づいて、ゲーム情報を更新する。具体的にはセンタCPU201は、例えば該クライアント機器300のユーザの操作対象であるゲーム内のキャラクタに対応する状態情報をセンタ記録媒体204から読み出す。キャラクタの状態情報は、例えばマップ上のキャラクタの位置(座標情報)やキャラクタの視線方向、キャラクタ動作等、ユーザの操作により変更可能なキャラクタの動作や容姿の情報を指すものとする。
【0047】
センタCPU201は受信した操作入力の情報を参照し、状態情報に含まれるパラメータのうちの操作入力により変化するパラメータを、受信した操作入力の情報で更新する。このようにすることで、センタCPU201は、クライアント機器300においてなされた操作入力の情報を、ゲームに反映させることができる。
【0048】
なお、センタCPU201は、S402で受信したクライアント機器300における操作入力の情報のうち、キャラクタの状態情報の更新に用いられない情報については、クライアント機器の識別情報に関連付けて例えばセンタ記録媒体204に記録するものとする。
【0049】
S403で、センタCPU201は、各クライアント機器300のユーザの操作対象のキャラクタ以外の、ゲーム内で状態を管理する描画オブジェクトの状態情報を更新する。ゲーム内で状態を管理する描画オブジェクトは、例えばNPC(Non Player Character)と呼ばれるユーザの操作非対象のキャラクタ、地形等の背景オブジェクト等である。ゲーム内で状態を管理する描画オブジェクトは、時間経過やユーザの操作対象のキャラクタの動作によって変化する。このためセンタCPU201は、本ステップにおいて時間経過やS402で更新したキャラクタの状態情報に応じて、ゲーム内で状態を管理する描画オブジェクトの状態情報を更新する。
【0050】
S404で、センタCPU201は、各クライアント機器300に対して提供するゲーム画面に含まれる描画オブジェクトを特定する。ゲーム画面に含まれる描画オブジェクトは、上述したゲーム内で状態を管理する描画オブジェクト、及びユーザの操作対象のキャラクタの描画オブジェクトである。
【0051】
具体的にはセンタCPU201は、現在センタサーバ200に接続されているクライアント機器300を1つずつ選択し、該クライアント機器300の識別情報が関連付けられたゲーム画面の描画範囲の情報を、センタ記録媒体204から読み出す。上述したようにゲーム画面の描画範囲の情報は、ゲーム画面についてのカメラパラメータを含んでいる。センタCPU201は該カメラパラメータを参照し、該カメラによる描画範囲に状態情報の座標情報が含まれるキャラクタ等の描画オブジェクトを、ゲーム画面に含まれる描画オブジェクトとして特定する。なお、描画オブジェクトには識別情報が割り当てられており、センタCPU201は、特定したゲーム画面に含まれる描画オブジェクトの識別情報を、クライアント機器の識別情報に関連付けてセンタ記録媒体204に記録する。
【0052】
S405で、センタCPU201は、全クライアント機器300に対して提供するゲーム画面の描画命令を描画サーバ100に送信し、描画サーバ100に描画処理を実行させる。具体的にはまずセンタCPU201は、各クライアント機器300の識別情報に関連付けてセンタ記録媒体204に記録されている、該クライアント機器300に提供するゲーム画面に含まれる描画オブジェクトの識別情報を読み出す。またセンタCPU201は、ゲーム画面に含まれる描画オブジェクトの各々に設定されている詳細情報をセンタ記録媒体204より読み出す。そしてセンタCPU201は、各クライアント機器300に提供するゲーム画面に含まれる描画オブジェクトの識別情報、及び各描画オブジェクトの詳細情報を、クライアント機器300の識別情報に関連付け、描画命令としてセンタ通信部205を介してセンタサーバ200に送信する。このとき、センタCPU201は、各クライアント機器の識別情報に関連付けられた、ゲーム画面の描画範囲の情報及びクライアント機器の表示装置における表示設定の情報をセンタ記録媒体204より読み出し、同様に描画サーバ100に送信するものとする。
【0053】
即ち、1つのクライアント機器に対して提供するゲーム画面の描画のためにセンタサーバ200に対して送信される描画命令は、図5(b)に示されるように、該クライアント機器の識別情報に関連付けられた、
・ゲーム画面に含まれる各描画オブジェクトの識別情報
・ゲーム画面に含まれる各描画オブジェクトについての詳細情報
・ゲーム画面に含まれる各描画オブジェクトの状態情報
・ゲーム画面の描画範囲及び表示設定の情報
を含んでいる。なお、ゲーム画面の描画範囲となるカメラパラメータや表示設定の情報等は、例えばカメラ位置が変化しないゲームや表示解像度が固定のゲームの場合、描画命令に含まれなくてもよい。
【0054】
なお、本実施形態ではクライアント機器300ごとに描画命令が描画サーバ100に送信されるものとして説明するが、複数あるいは全てのクライアント機器300についての描画命令が同時に送信されてもよいことは容易に理解されよう。
【0055】
S406で、センタCPU201は、描画命令に応じて描画サーバ100が生成したゲーム画面を、描画サーバ100から受信したか否かを判断する。具体的にはセンタCPU201は、描画サーバ100が生成して出力した各クライアント機器300のゲーム画面を、センタ通信部205が受信したか否かを判断する。センタCPU201は、ゲーム画面を受信したと判断した場合は処理をS407に移し、受信していないと判断した場合は本ステップの処理を繰り返す。即ち、本ステップでは各クライアント機器300のゲーム画面を受信するまで待機する。
【0056】
なお、本ステップにおいて受信するゲーム画面は、直前のS404において描画サーバ100に送信された描画命令によって生成されたゲーム画面であることが好ましいが、これに限られなくてもよい。即ち、本ゲーム処理は1フレームごとに実行されるため、ゲーム画面の描画が提供するゲームのフレームレートで規定される1フレーム時間内に完了しない場合、本ステップで受信されるゲーム画面は、現フレームよりも数フレーム前のフレームで送信された描画命令に応じて生成された画面であってもよい。
【0057】
S407で、センタCPU201は、S406で受信したゲーム画面を対応するクライアント機器300に対して配信する。具体的にはセンタCPU201は、センタ通信部205が受信してセンタRAM203に記憶されたゲーム画面の例えばヘッダ部に含まれるクライアント機器300の識別情報を参照する。そしてセンタCPU201は、該識別情報で示されるクライアント機器300に対して、センタ通信部205を介してゲーム画面を送信し、本ゲーム処理を完了する。
【0058】
このように、センタサーバ200は描画サーバ100に対して描画命令を行うことで、各クライアント機器300においてなされた操作入力が反映されたゲーム画面を生成させ、得られたゲーム画面を各クライアント機器300に配信することができる。
【0059】
しかしながら、クライアント機器300の数や描画範囲に含まれる描画オブジェクトの数によっては、クライアント機器300においてなされた操作入力が反映されたゲーム画面の生成に時間を要することになる。このことは、クライアント機器300のユーザに対してゲームのレスポンスが悪いという印象を与えてしまうことにつながる。本実施形態では、以下に示すように描画命令に含まれる描画オブジェクトの詳細情報を判断することで、描画サーバ100における描画処理に要する時間を短縮する方法について説明する。
【0060】
描画処理では、各描画オブジェクトについて、詳細情報に含まれる「モデルデータを特定する識別情報」、「テクスチャデータを特定する識別情報」、「描画用プログラムの指定情報」、及び「描画用プログラムで用いられる演算用データ」を読み出して描画処理を行う。即ち、ゲーム画面に含まれる描画オブジェクトが複数存在する場合、描画オブジェクトを1つずつ選択して詳細情報を読み出し、該詳細情報に応じて描画を行なった後、次の描画オブジェクトについての描画が行われる。つまり、描画サーバ100では描画処理中、描画する描画オブジェクトを切り替える度に、モデルデータやテクスチャデータのGPUへの転送及びコンバート、描画用プログラムの読み出し、演算用データの設定等、初期化に係る処理が実行されることになる。このように1つのゲーム画面の描画処理においては、1つの描画オブジェクトの描画における初期化に係る処理の時間(切り替えコスト)が、ゲーム画面の描画範囲に含まれる描画オブジェクトの数だけ必要となる。また複数のクライアント機器300に配信するゲーム画面を同時に生成する場合は、切り替えコストはさらに多くなる。
【0061】
一方、ゲーム画面の生成においては、特に背景等に、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトが存在することがある。例えばゲーム画面内に含まれる樹木のオブジェクト等は、数パターンのモデルデータに対して1つのテクスチャデータを使い回して描画されている。また、例えば共通の材質や質感を有するオブジェクトや、同一の光源下に存在するオブジェクトについては、同一の描画用プログラムや演算用データが使用されている。また、異なるクライアント機器に提供されるゲーム画面であっても、例えばゲーム内のマップ上におけるカメラ位置や方向が類似するゲーム画面については、描画範囲に存在する描画オブジェクトは共通しており、詳細情報も同一である可能性がある。
【0062】
本実施形態の描画処理では、このように詳細情報により示される少なくとも一部のデータが共通する描画オブジェクトについては連続する描画順を割り当てることで、描画処理中の切り替えコストを抑える。即ち、描画する描画オブジェクトを切り替える際に、先に描画した描画オブジェクトについて行われた演算結果や読み出されたデータを利用することで、共通する処理に要する時間を短縮し、切り替えコストを低減する。
【0063】
<描画処理>
以下、本実施形態の描画サーバ100の描画処理について、図6のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、CPU101が、例えばROM102に記憶されている対応する処理プログラムを読み出し、RAM103に展開して実行することにより実現することができる。なお、本描画処理は、例えばセンタサーバ200からの描画命令を受信した際に開始されるものとして説明する。なお、以下の説明では、上述のゲーム処理と同様に5台のクライアント機器300a乃至eに提供するゲーム画面の生成を、描画サーバ100が行うものとして説明する。
【0064】
S601で、CPU101は、クライアント機器300a乃至eに提供するゲーム画面の生成を、描画サーバ100が有するGPUに分類する。即ち、本ステップにおいてCPU101は受信した描画命令を、第1GPU105、第2GPU106、第3GPU107、及び第4GPU108のうち、いずれのGPUで処理するかを決定する。
【0065】
1つのGPUに対してゲーム画面の生成を割り当てるクライアント機器の分類方法については、例えば以下の方法が考えられる。
【0066】
1.ゲーム画面を規定するカメラパラメータ(描画範囲)
各クライアント機器300に提供するゲーム画面は、カメラパラメータによりゲーム画面の描画範囲(視野)が規定される。1つのカメラについての視野は、通常四角錐あるいは四角錐台で規定されるが、該視野が重複するゲーム画面については、同一の描画オブジェクトが含まれると考えられる。このため、同一のGPUにゲーム画面の生成を割り当てるクライアント機器は、視野の重複を考慮して分類することで描画処理の効率化が望める。具体的には、例えば視野で規定される四角錐を2次元平面に投影した三角形を、各クライアント機器に提供するゲーム画面を規定するカメラの座標及び方向に従って算出し、該三角形の範囲が所定の割合以上重複するゲーム画面を1つのグループとして分類し、同一のGPUに描画処理を割り当てればよい。
【0067】
また簡易的には、ゲーム画面を規定するカメラ座標が近いクライアント機器については、ゲーム画面の描画内容が類似することが期待される。このため、ゲーム画面を規定するカメラ座標の距離が所定距離以内のゲーム画面を1つのグループとして分類し、同一のGPUに描画処理を割り当ててもよい。
【0068】
またゲーム内のマップでは、例えば、山、森、海等、同様の背景オブジェクトが使用されるエリアが存在する。即ち、ゲーム画面を規定するカメラの座標が、このような背景オブジェクトが配置された特定のエリアに存在する、あるいはカメラの方向が該特定のエリアの方向を向いている場合、生成されるゲーム画面には共通の背景オブジェクトが含まれる。つまり、共通の背景オブジェクトが含まれるゲーム画面については1つのグループとして、同一のGPUに描画処理を割り当てることで、描画処理の効率化が望める。
【0069】
また、背景についてはゲーム内のマップの様々なエリアにおいて同一の描画オブジェクトが使用される可能性がある。即ち、ゲーム画面を規定するカメラの座標及び方向が異なっていたとしても、同一の背景オブジェクトが描画範囲に含まれることもあるため、1つのGPUで生成するゲーム画面のカメラ位置等は必ずしも近接していなくてもよい。
【0070】
割り当てるGPUの情報は、例えばカメラの座標及び方向情報の組み合わせについて、描画処理を行うGPUを予め定めた情報が、ルックアップテーブルとして記録媒体104に記録されていてもよい。また割り当てるGPUの情報は、例えばカメラの位置及び方向の値を引数とする関数によって、処理を行うGPUの情報が得られるように構成されてもよい。
【0071】
2.描画範囲に含まれる描画オブジェクトの詳細情報の組み合わせ
描画処理における切り替えコストは、描画順が連続する描画オブジェクトについて、詳細情報の一致度が高いほど低減される。このためセンタCPU201は、全クライアント機器300に提供するゲーム画面の各々について、ゲーム画面に含まれる全描画オブジェクトの詳細情報を参照し、ゲーム画面間での描画オブジェクトの一致度を詳細情報レベルで算出する。そして該一致度が高いゲーム画面の生成を1つのグループに分類し、同一のGPUに描画処理を割り当てればよい。
【0072】
なお、詳細情報の一致度については、例えば各ゲーム画面に含まれる描画オブジェクトを、詳細情報のうちのテクスチャデータやモデルデータ等の組み合わせで分布をとり、該分布の類似性として求めてもよい。また、例えば各ゲーム画面に含まれる描画オブジェクトのうち、詳細情報により示される特定の属性のデータについて分類し、各集合に属する描画オブジェクトの数が閾値以上の分類についてのみ、ゲーム画面間において総当たりで詳細情報を比較することで、詳細情報の一致度を算出してもよい。
【0073】
3.ユーザの操作対象のキャラクタのイベント参加有無
ゲームにおいては、マップ上の特定のポイントに存在する等、特定の条件を満たした場合にイベントが発生し、ゲーム画面が通常とは異なる画面に強制的に遷移することがある。例えば敵キャラクタ等との戦闘イベントでは、ユーザの操作対象のキャラクタは戦闘専用のフィールドにおいて敵キャラクタとの戦闘を行うことになる。このようなイベントは、マップ上の任意の位置において同時発生することが考えられるため、同一種類のイベントが発生しているクライアント機器300に提供するゲーム画面については1つのグループとして、同一のGPUに描画処理を割り当てることで、切り替えコストの低減が見込める。
【0074】
4.ゲーム進行状況
またストーリー進行が定められている種類のゲームについては、ゲーム進行状況によって描画されるオブジェクトの種類が限定されることが考えられる。例えばフィールドが建物内→広場→草原→森のように進行するストーリーの場合、フィールドが切り替わるごとにグループを分類しなおし、異なるGPUにゲーム画面の描画を割り当ててもよい。
【0075】
このように、ゲーム画面に含まれる描画オブジェクトの類似性を判断基準として、描画内容が類似する複数のグループに分類し、1つのグループについてゲーム画面の描画を同一のGPUに割り当てる。そして、後述する描画順決定処理を実行することにより、各GPUにおけるゲーム画面の生成をより効率的に行うことができる。なお、上記のクライアント機器300に提供するゲーム画面の生成を行うGPUの決定方法は例示を目的としたものであり、これ以外にも描画内容が類似していると思われるゲーム画面の描画を同一のGPUに割り当てることで描画処理の効率化が望める方法が用いられてよい。
【0076】
本実施形態では、ゲーム画面を規定するカメラの位置及び座標情報に応じて描画処理を行うGPUを決定する、上記1の方法を使用するものとして説明する。また以下では、5つのクライアント機器300a乃至eに提供するゲーム画面の生成は1つのグループに分類され、第1GPU105で全て行われるものとする。なお、1つのグループに分類されるゲーム画面の数(クライアント機器の数)は、GPUの処理能力及びVRAMの容量により決定される。また各グループに分類されたクライアント機器の情報は、例えば1つのグループIDを有するテーブルに、クライアント機器の識別情報が追加されてRAM103に記憶されることにより管理されればよい。
【0077】
S602で、CPU101は、各GPUに割り当てられたグループの各々について、描画する全てのゲーム画面に含まれる描画オブジェクトを対象として、描画オブジェクトの描画順を決定する描画順決定処理を実行する。
【0078】
(描画順決定処理)
ここで、本実施形態の描画順決定処理について、図7のフローチャートを用いて詳細を説明する。なお、以下の説明では第1GPU105で描画を行う1つのグループのゲーム画面を対象として、該ゲーム画面に含まれる描画オブジェクトに対して描画順を決定する処理について説明するが、他のGPUについても同様に処理すればよいことは容易に理解されよう。
【0079】
S701で、CPU101は、第1GPU105で描画を行う1つのグループのゲーム画面に含まれる全描画オブジェクトについて、2つの描画オブジェクトで構成される全ての組み合わせのペアを作成する。
【0080】
S702で、CPU101は、S701で作成された全てのペアについて、詳細情報の優先度が高い属性の順に傾斜配分された得点を用いて、2つの描画オブジェクトの詳細情報の一致度をスコアリングする。本実施形態では詳細情報により示される各データの属性について、以下の順番で優先度が設けられる。
1.テクスチャデータを特定する識別情報
2.モデルデータを特定する識別情報
3.使用する描画用プログラムの指定情報
4.描画用プログラムで用いられる演算用データの指定情報
【0081】
詳細情報により示される各データの属性の優先度は、該属性のデータを読み出してキャッシュメモリに展開した際の、メモリ上のデータサイズに応じて定められている。上位の属性のデータほどデータサイズが大きく、異なるデータに切り替えた際にキャッシュメモリへの展開、キャッシュメモリからの新規読み出し、及びパラメータの設定等に時間を要する、即ち切り替えコストが高い属性のデータとなる。つまり、優先度の高い属性のデータについて切り替え頻度を低くする(再利用頻度を高くする)描画順で描画を行うことで、切り替えコストを効率的に低減することができる。
【0082】
即ち、本ステップのスコアリングにより、詳細情報の一致度が高い、即ち優先度の高い属性データについて最利用頻度を高くすることで切り替えコストが低くなる描画オブジェクトのペアほど、高いスコアが付される。
【0083】
S703で、CPU101は、全てのペアについての一致度のスコアを参照し、第1GPU105で描画を行う1つのグループのゲーム画面に含まれる全描画オブジェクトの描画順を決定する。具体的にはCPU101は、全描画オブジェクトを描画順に並べた場合に連続する描画オブジェクトの組み合わせについてのスコアの総和が最も高くなる描画順を決定する。
【0084】
ここで、具体的な描画順の決定手順について図を用いて詳細を説明する。なお、以下では説明を簡単にするために、上述した詳細情報の4つの属性のうち、テクスチャデータ及びモデルデータの一致度を考慮して描画順を決定する方法について説明する。
【0085】
図8は、S703における描画オブジェクトの描画順決定手順の例に用いられる、各クライアント機器に提供するゲーム画面に含まれる描画オブジェクトを示している。図8の例では3つのクライアント機器に提供するゲーム画面を同一のGPUで生成する場合を示しており、各ゲーム画面に2つの描画オブジェクト、計6つの描画オブジェクトの描画をGPUが行う。
【0086】
CPU101により、全てのオブジェクトについて組み合わせ可能なペアを生成すると、その数は6C2=15になる。即ち、CPU101は15通りのペアの全てについて、一致度のスコアリングを行う。本実施形態では、詳細情報の各属性が一致した場合の加点は、テクスチャデータの一致を2点、モデルデータの一致を1点として計算する。このとき、各ペアのスコアは図9のようになる。
【0087】
CPU101は、まず最高点3のスコアを有するペアに着目する。本例では、最高点3を有するペアは(A−1,B−1)、(A−1,C−2)、及び(B−1,C−2)の3つである。このとき最高点を有するペアの数と、該ペアを構成する描画オブジェクト(3点オブジェクト)の数が等しいため、該ペアは全て同一の詳細情報を有する3点オブジェクトで構成されていることがわかる。そしてCPU101は、3点オブジェクトの各々について、該オブジェクトを含む他のペアのスコアを参照し、まず3点オブジェクトの描画順を決定する。
【0088】
3点オブジェクトを含む他のペアのスコアは、図9に示されるように次点の2か、A−2とのペアのスコア0である。即ち、描画順において3点オブジェクトに続く描画オブジェクトとして、A−2以外の描画オブジェクトを割り当てる場合は、描画オブジェクトに依らず切り替えコストは同一になる。このためCPU101は、上述した3つの3点オブジェクトの描画順を特に考慮せず、例えば識別情報のソート順で順番を決定する。
なお、このとき次点を有するペアが1つしかなかった場合は、3つの3点オブジェクトのうち、該ペアに含まれる描画オブジェクトが3点オブジェクトの描画順において最後である3番目に決定され、4番目に該ペアに含まれる他方の描画オブジェクトが割り当てられる。
【0089】
同様にCPU101は、次点のペアに含まれる3点オブジェクト以外の描画オブジェクト(2点オブジェクトB−2,C−1)についての描画順を決定する。図9に示されるように、2点オブジェクトを含む次点以下のペアは、描画オブジェクトA−2とのペアのみである。図示されるように描画オブジェクトA−2は2点オブジェクトのB−2とのペアのスコアのみ1である。このため、2点オブジェクトのうち描画オブジェクトB−2は、2点オブジェクトの中で最後の描画順である5番目に決定され、描画オブジェクトA−2は6番目に決定される。
【0090】
CPU101は、このような判断を繰り返すことにより、1つのグループのゲーム画面に含まれる全ての描画オブジェクトについて、描画順を決定できる。本例では、最終的には図10に示されるようにA−1→B−1→C−2→C−1→B−2→A−2として、CPU101は描画順を決定する。
【0091】
このようにすることで、1つのグループに分類されたゲーム画面に含まれる全描画オブジェクトに対して、切り替えコストを抑えた描画順を割り当てることができる。なお、描画順の割り当てについては、例えば描画順に描画オブジェクトの識別情報を関連付け、リストとして例えばRAM103に記憶すればよい。
【0092】
S602における描画順決定処理が完了した後、CPU101はS603で、決定した描画順に従って描画オブジェクトの描画を行い、各クライアント機器300に提供するゲーム画面を生成する。具体的にはCPU101は、描画順に従って描画オブジェクトの詳細情報を参照し、該詳細情報により特定されるデータを記録媒体104から読み出して描画を行うGPUに転送する。このときCPU101は、既に展開領域に展開されているデータと異なるデータのみを読み出して転送し、既に展開されているデータと共通のデータについては読み出しを行わず、既に展開されているデータを利用する。
【0093】
なお、ゲーム画面の生成には、各描画オブジェクトの座標情報や動作情報を含む状態情報、及びカメラパラメータを含むゲーム画面の描画範囲及び表示設定の情報が使用されるが、これらの使用は公知の処理内容であるため説明を省略する。
【0094】
S604で、CPU101は、各GPUが生成したゲーム画面について、ヘッダ部に提供するクライアント機器の識別情報を付し、通信部113を介してセンタサーバ200に送信する。
【0095】
このようにすることで、切り替えコストを抑えて描画処理を行えるため、ユーザの操作入力に対して、より応答性に優れたゲーム画面を、クライアント機器を操作するユーザに提供することができる。
【0096】
なお、本実施形態では単に「ゲーム画面」をセンタサーバ200からクライアント機器300に対して送信するものとして説明した。しかしながら「ゲーム画面」は、単に静止画像データであってもよいが、フレーム間予測等の更にデータサイズを減少させる符号化処理が適用された、動画データのフレーム画像データとして送信されてもよい。符号化処理については、描画サーバ100及びセンタサーバ200のいずれで行われてもよいことは言うまでもない。
【0097】
また、本実施形態では多人数同時参加型のネットワークゲームを例に、本発明の実施を説明した。しかしながら上述したように、本発明は1以上のクライアント機器に提供する画面を同時に作成することが可能な任意の機器及びシステムに適用可能なものであり、本発明の実施はこれに限られるものではない。例えば、描画システムにおいて、各クライアント機器に対してシングルユーザ対応のゲームコンテンツを独立して提供する場合、複数のクライアント機器には類似するゲーム画面が出力される可能性がある。即ち、マップ上の位置や方向が類似する、ゲームの進行が類似する、あるいは同一の動作を実行している場合に提供されるゲーム画面内には、共通する描画オブジェクトが含まれると考えられるため、本発明の適用により描画処理に係る効率化が図れる。
【0098】
また、本実施形態では描画システムにおいて描画サーバ100とセンタサーバ200とは分離されているものとして説明したが、本発明の実施はこれに限られない。即ち、本発明は描画サーバ100及びセンタサーバ200の機能を有する1つのサーバによって実施されてもよい。
【0099】
以上説明したように、本実施形態の描画制御装置は、1以上のクライアント機器に対してゲーム画面を提供する描画システムにおいて、応答性に優れた効率的な描画処理を行うことができる。具体的には描画制御装置は、クライアント機器に対して提供する画面の生成に用いられる複数の描画オブジェクトの各々について、識別情報と描画に必要となるデータを示す詳細情報とを取得する。そして複数の描画オブジェクトの各々の詳細情報を参照して、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当てるように、全描画オブジェクトの描画順を決定する。描画制御装置は、描画順に従って描画オブジェクトの詳細情報により示されるデータを読み出し、GPUに転送する。このとき、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既にGPUに転送されたデータと共通でないデータについてのみ読み出して転送する。
【0100】
このようにすることで、ゲーム画面の描画処理に要する時間を低減し、効率的な描画を行うことができる。
【0101】
[変形例]
上述した実施形態では、1つのグループに分類されたゲーム画面に含まれる全ての描画オブジェクトについて、全組み合わせのペアを作ってスコアリングした上で、描画順を決定する描画順決定処理について説明した。本変形例では、詳細情報の優先度が高い属性の順に描画オブジェクトをソートして分類することにより、簡易的にスコアリングを行う方法について説明する。
【0102】
(描画順決定処理)
以下、本変形例の描画順決定処理について、図11のフローチャートを用いて詳細を説明する。なお、以下の説明では第1GPU105で描画を行う1つのグループのゲーム画面を対象として、該ゲーム画面に含まれる描画オブジェクトに対して描画順を決定する処理について説明するが、他のGPUについても同様に処理すればよいことは容易に理解されよう。
【0103】
S1101で、CPU101は、第1GPU105で描画を行う1つのグループのゲーム画面に含まれる全描画オブジェクトについて、詳細情報により示される、優先度が高い属性の順に傾斜配分された得点によるスコアリングを1番高い属性のデータで分類する。本変形例でも詳細情報により示される各データの属性については、以下の順番で優先度が設けられる。
1.テクスチャデータを特定する識別情報
2.モデルデータを特定する識別情報
3.使用する描画用プログラムの指定情報
4.描画用プログラムで用いられる演算用データの指定情報
【0104】
即ち、本ステップではCPU101は、テクスチャデータを特定する識別情報で全描画オブジェクトを分類する。
【0105】
S1102で、CPU101は、S1101での分類により生成された同一のテクスチャデータを使用する描画オブジェクトの各集合について属するメンバ数を参照し、メンバ数が1である集合を特定する。そしてCPU101は、メンバ数が1である集合の描画オブジェクトを1つの集合(テクスチャ不一致集合)に統合する。
【0106】
S1103で、CPU101は、同一のテクスチャデータを使用する描画オブジェクトの集合及びテクスチャ不一致集合について、優先度が2番目に高いモデルデータを特定する識別情報で各集合の描画オブジェクトを分類する。即ち、本ステップにより、同一のテクスチャデータを使用する描画オブジェクトの集合及びテクスチャ不一致集合の各々に属する描画オブジェクトは、同一のモデルデータを使用する描画オブジェクトの子集合に分類される。
【0107】
S1104で、CPU101は、S1103での分類により生成された同一のモデルデータを使用する描画オブジェクトの各集合について属するメンバ数を参照し、メンバ数が1である集合を特定する。そしてCPU101は、同一のテクスチャデータを使用する描画オブジェクトの集合及びテクスチャ不一致集合の各々において、メンバ数が1である集合の描画オブジェクトを1つの集合(モデル不一致集合)に統合する。
【0108】
S1105で、CPU101は、集合分類が行われていない属性が存在するか否かを判断する。集合分類が行われていない属性が存在する場合、CPU101は集合分類が行われていない属性を優先度順に選択し、処理をS1103に戻す。即ち、次は同一のモデルデータを使用する描画オブジェクトの集合及びモデル不一致集合について、描画用プログラムの指定情報で各集合の描画オブジェクトを分類する。
【0109】
このように、S1101、S1102、及びS1103乃至S1105の繰り返し処理を行うことで詳細情報により示される各データの属性ごとに分類を行い、最終的に詳細情報により示されるデータのうち、少なくともいずれかのデータが一致する描画オブジェクトを集合にまとめることができる。
【0110】
なお、本ステップにおいてCPU101は、集合分類が行われていない属性が存在しないと判断した場合は、処理をS1106に移す。
【0111】
S1106で、CPU101は、第1GPU105で描画を行う1つのグループのゲーム画面に含まれる、全描画オブジェクトに対して描画順を決定する。つまりCPU101は、S1101乃至S1105で行われた描画オブジェクトの分類の情報に従い、切り替えコストが低い描画順を決定する。
【0112】
具体的にはCPU101は、まず優先度が1番高い「テクスチャデータを特定する識別情報」について分類された集合のうち、テクスチャ不一致集合以外の1つの集合を選択する。そして該集合に含まれる子集合を順に選択して、該子集合内の描画オブジェクトに描画順を割り当てていく。このとき子集合の選択順は、例えば2進数を用いて集合を表し、該値の降順に集合を選択すればよい。例えば、優先度が2番目に高い属性が同一である集合については23、優先度が3番目に高い属性が同一である集合については22、優先度が4番目に高い属性が同一である集合については21、優先度が1番低い属性が同一である集合については20を加点するスコアリングを行い、スコアの降順で描画順を決定すればよい。
【0113】
また、1つの「テクスチャデータを特定する識別情報」について分類された集合に対して、描画オブジェクトの描画順の決定が完了した場合、次の同一のテクスチャデータを使用する集合について同様に描画順を決定する。また、テクスチャ不一致集合以外の集合に対して、描画オブジェクトの描画順の決定が完了した場合、テクスチャ不一致集合に含まれる描画オブジェクトについても同様に描画順を決定する。
【0114】
このようにすることで、全描画オブジェクトに対して、切り替えコストを抑えた描画順を割り当てることができる。
【特許請求の範囲】
【請求項1】
クライアント機器に対して提供する画面の生成に用いられる複数の描画オブジェクトの情報を取得して記憶手段に記憶する取得手段であって、各描画オブジェクトの情報は、該描画オブジェクトの識別情報と、該描画オブジェクトの描画に必要となるデータを示す詳細情報とで構成される取得手段と、
前記取得手段により取得された前記複数の描画オブジェクトの各々の詳細情報を参照して前記複数の描画オブジェクトの描画順を決定する決定手段と、
前記決定手段により決定された描画順に従って描画オブジェクトの識別情報を取得し、該識別情報に対応する描画オブジェクトの詳細情報により示されるデータをデータ記憶手段より読み出し、前記複数の描画オブジェクトの描画を順に行って画面を生成する描画手段に転送する転送手段と、を有し、
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当て、
前記転送手段は、描画順に従って描画を行う際に、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既に前記描画手段に転送されたデータと共通でないデータについて、前記データ記憶手段から読み出して転送する
ことを特徴とする描画制御装置。
【請求項2】
描画オブジェクトの詳細情報は、該描画オブジェクトの描画に必要となる複数の属性のデータを示し、
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示される、優先度が高い属性のデータが共通である描画オブジェクトに対し、優先して描画順を割り当てる
ことを特徴とする請求項1に記載の描画制御装置。
【請求項3】
前記優先度は、詳細情報により示される複数の属性のデータを前記データ記憶手段より読み出して展開領域に展開した際に、データの占有する領域が大きい属性ほど高く設定されることを特徴とする請求項2に記載の描画制御装置。
【請求項4】
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示されるデータが共通する属性の数が多い描画オブジェクトに対し、優先して描画順を割り当てることを特徴とする請求項2または3に記載の描画制御装置。
【請求項5】
前記描画オブジェクトの詳細情報は、テクスチャデータ、モデルデータ、描画用プログラム、及び描画演算用データの少なくともいずれかを示すことを特徴とする請求項1乃至4のいずれか1項に記載の描画制御装置。
【請求項6】
前記取得手段は、複数のクライアント機器に対して提供する画面の生成に用いられる描画オブジェクトの情報を取得し、
前記決定手段は、前記複数のクライアント機器に対して提供する画面の生成に用いられる全ての描画オブジェクトについて描画順を決定する
ことを特徴とする請求項1乃至5のいずれか1項に記載の描画制御装置。
【請求項7】
描画制御装置の取得手段が、クライアント機器に対して提供する画面の生成に用いられる複数の描画オブジェクトの情報を取得して記憶手段に記憶する取得工程であって、各描画オブジェクトの情報は、該描画オブジェクトの識別情報と、該描画オブジェクトの描画に必要となるデータを示す詳細情報とで構成される取得工程と、
前記描画制御装置の決定手段が、前記取得工程において取得された前記複数の描画オブジェクトの各々の詳細情報を参照して前記複数の描画オブジェクトの描画順を決定する決定工程と、
前記描画制御装置の転送手段が、前記決定工程において決定された描画順に従って描画オブジェクトの識別情報を取得し、該識別情報に対応する描画オブジェクトの詳細情報により示されるデータをデータ記憶手段より読み出し、前記複数の描画オブジェクトの描画を順に行って画面を生成する描画手段に転送する転送工程と、を有し、
前記決定手段は前記決定工程において、前記複数の描画オブジェクトのうち、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当て、
前記転送手段は前記転送工程において、描画順に従って描画を行う際に、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既に前記描画手段に転送されたデータと共通でないデータについて、前記データ記憶手段から読み出して転送する
ことを特徴とする描画制御装置の制御方法。
【請求項8】
コンピュータを、請求項1乃至6のいずれか1項に記載の描画制御装置の各手段として機能させるためのプログラム。
【請求項9】
請求項8に記載のプログラムを記録した記録媒体。
【請求項10】
請求項1乃至6のいずれか1項に記載の描画制御装置を備えることを特徴とする描画サーバ。
【請求項11】
センタサーバに対して接続された1以上のクライアント機器の各々に対して、描画サーバで生成された画面を提供する描画システムであって、
前記センタサーバは、
前記1以上のクライアント機器から入力データを受信する受信手段と、
前記1以上のクライアント機器の各々について、前記受信手段により受信された入力データに応じて、該クライアント機器に対して提供する画面に含まれる描画オブジェクトを特定する特定手段と、
前記特定手段により特定された、前記1以上のクライアント機器に対して提供する画面に含まれる複数の描画オブジェクトの情報を前記描画サーバに送信する送信手段であって、各描画オブジェクトの情報は、該描画オブジェクトの識別情報と、該描画オブジェクトの描画に必要となるデータを示す詳細情報とで構成される送信手段と、
前記描画サーバにおいて描画された、前記1以上のクライアント機器の各々に対して提供する画面を受信し、対応するクライアント機器に対して配信する配信手段と、を有し、
前記描画サーバは、
前記送信手段により送信された前記複数の描画オブジェクトの情報を取得して記憶手段に記憶する取得手段と、
前記複数の描画オブジェクトの描画を順に行って、前記1以上のクライアント機器の各々に対して提供する画面を生成する描画手段と、
前記取得手段により取得された前記複数の描画オブジェクトの各々の詳細情報を参照して前記複数の描画オブジェクトの描画順を決定する決定手段と、
前記決定手段により決定された描画順に従って描画オブジェクトの識別情報を取得し、該識別情報に対応する描画オブジェクトの詳細情報により示されるデータをデータ記憶手段より読み出し、前記描画手段に転送する転送手段と、を有し、
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当て、
前記転送手段は、描画順に従って描画を行う際に、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既に前記描画手段に転送されたデータと共通でないデータについて、前記データ記憶手段から読み出して転送する
ことを特徴とする描画システム。
【請求項12】
描画オブジェクトの詳細情報は、該描画オブジェクトの描画に必要となる複数の属性のデータを示し、
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示される、優先度が高い属性のデータが共通である描画オブジェクトに対し、優先して描画順を割り当てる
ことを特徴とする請求項11に記載の描画システム。
【請求項13】
前記優先度は、詳細情報により示される複数の属性のデータを前記データ記憶手段より読み出して展開領域に展開した際に、データの占有する領域が大きい属性ほど高く設定されることを特徴とする請求項12に記載の描画システム。
【請求項14】
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示されるデータが共通する属性の数が多い描画オブジェクトに対し、優先して描画順を割り当てることを特徴とする請求項12または13に記載の描画システム。
【請求項15】
前記描画オブジェクトの詳細情報は、テクスチャデータ、モデルデータ、描画用プログラム、及び描画演算用データの少なくともいずれかを示すことを特徴とする請求項11乃至14のいずれか1項に記載の描画システム。
【請求項16】
前記特定手段は、前記受信手段により受信された入力データに応じて変化する、前記1以上のクライアント機器の各々の画面を規定するカメラパラメータを参照し、該カメラパラメータで特定される描画範囲が所定量重複するクライアント機器をグループとして、グループ内のクライアント機器に対して提供する画面に含まれる描画オブジェクトを特定することを特徴とする請求項11乃至15のいずれか1項に記載の描画システム。
【請求項17】
前記特定手段は、前記受信手段により受信された入力データに応じて変化する、前記1以上のクライアント機器の各々の画面を規定するカメラ座標を参照し、カメラ座標が所定距離以内であるクライアント機器をグループとして、グループ内のクライアント機器に対して提供する画面に含まれる描画オブジェクトを特定することを特徴とする請求項11乃至15のいずれか1項に記載の描画システム。
【請求項18】
前記取得手段は、複数のクライアント機器に対して提供する画面の生成に用いられる描画オブジェクトの情報を取得し、
前記決定手段は、前記複数のクライアント機器に対して提供する画面の生成に用いられる全ての描画オブジェクトの描画順を決定し、
前記描画手段は、前記複数のクライアント機器の各々に対して提供する画面の描画を同時に行う
ことを特徴とする請求項11乃至17のいずれか1項に記載の描画システム。
【請求項1】
クライアント機器に対して提供する画面の生成に用いられる複数の描画オブジェクトの情報を取得して記憶手段に記憶する取得手段であって、各描画オブジェクトの情報は、該描画オブジェクトの識別情報と、該描画オブジェクトの描画に必要となるデータを示す詳細情報とで構成される取得手段と、
前記取得手段により取得された前記複数の描画オブジェクトの各々の詳細情報を参照して前記複数の描画オブジェクトの描画順を決定する決定手段と、
前記決定手段により決定された描画順に従って描画オブジェクトの識別情報を取得し、該識別情報に対応する描画オブジェクトの詳細情報により示されるデータをデータ記憶手段より読み出し、前記複数の描画オブジェクトの描画を順に行って画面を生成する描画手段に転送する転送手段と、を有し、
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当て、
前記転送手段は、描画順に従って描画を行う際に、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既に前記描画手段に転送されたデータと共通でないデータについて、前記データ記憶手段から読み出して転送する
ことを特徴とする描画制御装置。
【請求項2】
描画オブジェクトの詳細情報は、該描画オブジェクトの描画に必要となる複数の属性のデータを示し、
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示される、優先度が高い属性のデータが共通である描画オブジェクトに対し、優先して描画順を割り当てる
ことを特徴とする請求項1に記載の描画制御装置。
【請求項3】
前記優先度は、詳細情報により示される複数の属性のデータを前記データ記憶手段より読み出して展開領域に展開した際に、データの占有する領域が大きい属性ほど高く設定されることを特徴とする請求項2に記載の描画制御装置。
【請求項4】
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示されるデータが共通する属性の数が多い描画オブジェクトに対し、優先して描画順を割り当てることを特徴とする請求項2または3に記載の描画制御装置。
【請求項5】
前記描画オブジェクトの詳細情報は、テクスチャデータ、モデルデータ、描画用プログラム、及び描画演算用データの少なくともいずれかを示すことを特徴とする請求項1乃至4のいずれか1項に記載の描画制御装置。
【請求項6】
前記取得手段は、複数のクライアント機器に対して提供する画面の生成に用いられる描画オブジェクトの情報を取得し、
前記決定手段は、前記複数のクライアント機器に対して提供する画面の生成に用いられる全ての描画オブジェクトについて描画順を決定する
ことを特徴とする請求項1乃至5のいずれか1項に記載の描画制御装置。
【請求項7】
描画制御装置の取得手段が、クライアント機器に対して提供する画面の生成に用いられる複数の描画オブジェクトの情報を取得して記憶手段に記憶する取得工程であって、各描画オブジェクトの情報は、該描画オブジェクトの識別情報と、該描画オブジェクトの描画に必要となるデータを示す詳細情報とで構成される取得工程と、
前記描画制御装置の決定手段が、前記取得工程において取得された前記複数の描画オブジェクトの各々の詳細情報を参照して前記複数の描画オブジェクトの描画順を決定する決定工程と、
前記描画制御装置の転送手段が、前記決定工程において決定された描画順に従って描画オブジェクトの識別情報を取得し、該識別情報に対応する描画オブジェクトの詳細情報により示されるデータをデータ記憶手段より読み出し、前記複数の描画オブジェクトの描画を順に行って画面を生成する描画手段に転送する転送工程と、を有し、
前記決定手段は前記決定工程において、前記複数の描画オブジェクトのうち、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当て、
前記転送手段は前記転送工程において、描画順に従って描画を行う際に、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既に前記描画手段に転送されたデータと共通でないデータについて、前記データ記憶手段から読み出して転送する
ことを特徴とする描画制御装置の制御方法。
【請求項8】
コンピュータを、請求項1乃至6のいずれか1項に記載の描画制御装置の各手段として機能させるためのプログラム。
【請求項9】
請求項8に記載のプログラムを記録した記録媒体。
【請求項10】
請求項1乃至6のいずれか1項に記載の描画制御装置を備えることを特徴とする描画サーバ。
【請求項11】
センタサーバに対して接続された1以上のクライアント機器の各々に対して、描画サーバで生成された画面を提供する描画システムであって、
前記センタサーバは、
前記1以上のクライアント機器から入力データを受信する受信手段と、
前記1以上のクライアント機器の各々について、前記受信手段により受信された入力データに応じて、該クライアント機器に対して提供する画面に含まれる描画オブジェクトを特定する特定手段と、
前記特定手段により特定された、前記1以上のクライアント機器に対して提供する画面に含まれる複数の描画オブジェクトの情報を前記描画サーバに送信する送信手段であって、各描画オブジェクトの情報は、該描画オブジェクトの識別情報と、該描画オブジェクトの描画に必要となるデータを示す詳細情報とで構成される送信手段と、
前記描画サーバにおいて描画された、前記1以上のクライアント機器の各々に対して提供する画面を受信し、対応するクライアント機器に対して配信する配信手段と、を有し、
前記描画サーバは、
前記送信手段により送信された前記複数の描画オブジェクトの情報を取得して記憶手段に記憶する取得手段と、
前記複数の描画オブジェクトの描画を順に行って、前記1以上のクライアント機器の各々に対して提供する画面を生成する描画手段と、
前記取得手段により取得された前記複数の描画オブジェクトの各々の詳細情報を参照して前記複数の描画オブジェクトの描画順を決定する決定手段と、
前記決定手段により決定された描画順に従って描画オブジェクトの識別情報を取得し、該識別情報に対応する描画オブジェクトの詳細情報により示されるデータをデータ記憶手段より読み出し、前記描画手段に転送する転送手段と、を有し、
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示される少なくとも一部のデータが共通である描画オブジェクトに対して連続する描画順を割り当て、
前記転送手段は、描画順に従って描画を行う際に、描画順において連続する描画オブジェクトの詳細情報により示されるデータのうち、既に前記描画手段に転送されたデータと共通でないデータについて、前記データ記憶手段から読み出して転送する
ことを特徴とする描画システム。
【請求項12】
描画オブジェクトの詳細情報は、該描画オブジェクトの描画に必要となる複数の属性のデータを示し、
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示される、優先度が高い属性のデータが共通である描画オブジェクトに対し、優先して描画順を割り当てる
ことを特徴とする請求項11に記載の描画システム。
【請求項13】
前記優先度は、詳細情報により示される複数の属性のデータを前記データ記憶手段より読み出して展開領域に展開した際に、データの占有する領域が大きい属性ほど高く設定されることを特徴とする請求項12に記載の描画システム。
【請求項14】
前記決定手段は、前記複数の描画オブジェクトのうち、詳細情報により示されるデータが共通する属性の数が多い描画オブジェクトに対し、優先して描画順を割り当てることを特徴とする請求項12または13に記載の描画システム。
【請求項15】
前記描画オブジェクトの詳細情報は、テクスチャデータ、モデルデータ、描画用プログラム、及び描画演算用データの少なくともいずれかを示すことを特徴とする請求項11乃至14のいずれか1項に記載の描画システム。
【請求項16】
前記特定手段は、前記受信手段により受信された入力データに応じて変化する、前記1以上のクライアント機器の各々の画面を規定するカメラパラメータを参照し、該カメラパラメータで特定される描画範囲が所定量重複するクライアント機器をグループとして、グループ内のクライアント機器に対して提供する画面に含まれる描画オブジェクトを特定することを特徴とする請求項11乃至15のいずれか1項に記載の描画システム。
【請求項17】
前記特定手段は、前記受信手段により受信された入力データに応じて変化する、前記1以上のクライアント機器の各々の画面を規定するカメラ座標を参照し、カメラ座標が所定距離以内であるクライアント機器をグループとして、グループ内のクライアント機器に対して提供する画面に含まれる描画オブジェクトを特定することを特徴とする請求項11乃至15のいずれか1項に記載の描画システム。
【請求項18】
前記取得手段は、複数のクライアント機器に対して提供する画面の生成に用いられる描画オブジェクトの情報を取得し、
前記決定手段は、前記複数のクライアント機器に対して提供する画面の生成に用いられる全ての描画オブジェクトの描画順を決定し、
前記描画手段は、前記複数のクライアント機器の各々に対して提供する画面の描画を同時に行う
ことを特徴とする請求項11乃至17のいずれか1項に記載の描画システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−245363(P2012−245363A)
【公開日】平成24年12月13日(2012.12.13)
【国際特許分類】
【出願番号】特願2012−170334(P2012−170334)
【出願日】平成24年7月31日(2012.7.31)
【分割の表示】特願2011−260976(P2011−260976)の分割
【原出願日】平成23年11月29日(2011.11.29)
【出願人】(592044813)株式会社スクウェア・エニックス・ホールディングス (115)
【Fターム(参考)】
【公開日】平成24年12月13日(2012.12.13)
【国際特許分類】
【出願日】平成24年7月31日(2012.7.31)
【分割の表示】特願2011−260976(P2011−260976)の分割
【原出願日】平成23年11月29日(2011.11.29)
【出願人】(592044813)株式会社スクウェア・エニックス・ホールディングス (115)
【Fターム(参考)】
[ Back to top ]