(57)【特許請求の範囲】
【請求項１】
同一の静的データを使用し得るコンテンツに係る複数のプロセスであって、各々の処理内容に基づいて該コンテンツについて予め定められた静的データを動的に処理する複数のプロセスを独立して実行する情報処理装置であって、
前記複数のプロセスのうちのいずれかのプロセスから、静的データの共有メモリへの展開要求を受信する受信手段と、
前記展開要求がなされた静的データを前記共有メモリに展開する展開手段と、
前記共有メモリに展開された静的データを特定する情報を、前記展開要求を行ったプロセスに通知する通知手段と、
前記展開手段と前記通知手段とを制御する制御手段と、を有し、
前記制御手段は、
前記展開要求がなされた静的データがまだ前記共有メモリに展開されていないと判断した場合に、前記展開手段に、該静的データを前記共有メモリに展開させた後に、前記通知手段に、前記展開手段により前記共有メモリに展開された該静的データを特定する情報を前記展開要求を行ったプロセスに通知させ、
前記展開要求がなされた静的データが既に前記共有メモリに展開されていると判断した場合に、前記通知手段に、既に前記共有メモリに展開された該静的データを特定する情報を前記展開要求を行ったプロセスに通知させる
ことを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記展開要求がなされた静的データが既に前記共有メモリに展開されていると判断した場合に、該静的データを前記共有メモリに展開させないように前記展開手段を制御することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記共有メモリに展開された静的データを特定する情報は、該静的データについてのメモリハンドルであることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記共有メモリに展開された静的データごとに、該静的データについてのメモリハンドルを管理する管理手段を有することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
同一の静的データを使用し得るコンテンツに係る複数のプロセスであって、各々の処理内容に基づいて該コンテンツについて予め定められた静的データを動的に処理する複数のプロセスを独立して実行する情報処理装置の制御方法であって、
前記複数のプロセスのうちのいずれかのプロセスから、静的データの共有メモリへの展開要求を受信する受信工程と、
前記展開要求がなされた静的データを前記共有メモリに展開する展開工程と、
前記共有メモリに展開された静的データを特定する情報を、前記展開要求を行ったプロセスに通知する通知工程と、
前記展開工程と前記通知工程とを制御する制御工程と、を有し、
前記制御工程において、
前記展開要求がなされた静的データがまだ前記共有メモリに展開されていないと判断された場合に、前記展開工程において、該静的データを前記共有メモリに展開させた後に、前記通知工程において、前記展開工程で前記共有メモリに展開された該静的データを特定する情報を前記展開要求を行ったプロセスに通知させ、
前記展開要求がなされた静的データが既に前記共有メモリに展開されていると判断された場合に、前記通知工程において、既に前記共有メモリに展開された該静的データを特定する情報を前記展開要求を行ったプロセスに通知させる
ことを特徴とする情報処理装置の制御方法。
【請求項６】
コンピュータを、請求項１乃至４のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【請求項７】
請求項６に記載のプログラムが記録されたコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法、プログラム、及び記録媒体に関し、特に共有メモリへの静的データの展開技術に関する。
【背景技術】
【０００２】
ネットワーク接続可能なパーソナルコンピュータ（ＰＣ）等のクライアント機器が普及している。このような機器の普及により、インターネットにおけるネットワーク人口は増加している。近年では、ネットワークユーザに対する、インターネットを利用した様々なサービスが展開されており、ゲーム等のエンターテインメントサービスも提供されている。
【０００３】
ネットワークユーザに対するサービスの１つとして、ＭＭＯＲＰＧ（Massively Multiplayer Online Role-Playing Game）等の多人数同時参加型のネットワークゲームがある。多人数同時参加型のネットワークゲームでは、ユーザは使用するクライアント機器を、ゲームを提供するサーバ機器に接続することで、該サーバ機器に接続されているクライアント機器を使用するユーザとの対戦プレイや協力プレイを行うことができる。
【０００４】
一般的な多人数参加型のネットワークゲームでは、クライアント機器はサーバ機器との間でゲームの描画に必要なデータの送受信を行う。クライアント機器は、受信した描画に必要なデータを用いて描画処理を実行し、生成したゲーム画面をクライアント機器に接続された表示装置に提示することで、ユーザにゲーム画面を提供する。また、ユーザが入力インタフェースを操作することで入力された情報はサーバ機器に送信され、サーバ機器における演算処理に使用されたり、サーバ機器に接続された他のクライアント機器に伝送されたりする。
【０００５】
しかしながら、このようなクライアント機器で描画処理を行うネットワークゲームの中には、十分な描画性能を有するＰＣや専用のゲーム機をユーザが使用することが必要となるものがある。このため、ネットワークゲーム（１コンテンツ）のユーザ数は、コンテンツが要求するクライアント機器の性能に依存してしまう。高性能の機器は当然高価であり、該機器を所有できるユーザも限られる。即ち、例えば美麗なグラフィックを提供するゲーム等の高い描画性能が要求されるゲームでは、ユーザ数を増加させることが困難である。
【０００６】
これに対し、近年ではクライアント機器の描画性能等の処理能力に依存せずに、ユーザがプレイ可能なゲームも提供されている。国際公開第２００９／１３８８７８号のようなゲームでは、サーバ機器はクライアント機器においてなされた操作の情報を取得し、該情報を用いて描画処理を実行して得られたゲーム画面を、クライアント機器に対して提供している。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
家庭用のゲーム機器について提供される従来のゲームでは、該ゲームのゲームプロセスにおいて静的データを利用することがある。このとき静的データは、記録媒体から読み出され、ゲーム機器のメモリに展開されることで利用可能となる。例えば描画処理においては、同一のモデルデータを画面内に複数配置したり、連続するフレームで繰り返し使用することがある。このため、メモリに展開された静的データは一時的に保持され、再利用される。
【０００８】
一方で、国際公開第２００９／１３８８７８号のようなゲームでは、サーバ機器は接続された各クライアント機器にゲーム画面を提供するために、同一のゲームコンテンツをクライアント機器ごとに独立して処理する。このとき、サーバ機器に接続されるクライアント機器の数は多数であるため、静的データの展開に用いられるメモリはクライアント機器ごとに設けられるのではない。つまり、メモリは複数のクライアント機器についてのゲームプロセス間で共有して使用されることになる。
【０００９】
しかしながら、このように同一のゲームコンテンツについて複数のゲームプロセス間でメモリを共有する場合、メモリには同一の静的データが複数展開されることになる。即ち国際公開第２００９／１３８８７８号のようなゲームにおいて、１つのクライアント機器についてのゲームプロセスは、利用する静的データが、他のクライアント機器についてのゲームプロセスによって既にメモリに展開されているかを知る術がなかった。つまり、メモリに展開されている静的データを独立処理される複数のゲームプロセスが共用することは、これまでなされていなかった。
【００１０】
本発明は、上述の問題点に鑑みてなされたものである。本発明は、独立実行される複数の処理においてメモリに展開された静的データを共用する情報処理装置、制御方法、プログラム、及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の態様は、同一の静的データを使用し得るコンテンツに係る複数のプロセスであって、各々の処理内容に基づいて該コンテンツについて予め定められた静的データを動的に処理する複数のプロセスを独立して実行する情報処理装置であって、複数のプロセスのうちのいずれかのプロセスから、静的データの共有メモリへの展開要求を受信する受信手段と、展開要求がなされた静的データを共有メモリに展開する展開手段と、共有メモリに展開された静的データを特定する情報を、展開要求を行ったプロセスに通知する通知手段と、展開手段と通知手段とを制御する制御手段と、を有し、制御手段は、展開要求がなされた静的データがまだ共有メモリに展開されていないと判断した場合に、展開手段に、該静的データを共有メモリに展開させた後に、通知手段に、展開手段により共有メモリに展開された該静的データを特定する情報を展開要求を行ったプロセスに通知させ、展開要求がなされた静的データが既に共有メモリに展開されていると判断した場合に、通知手段に、既に共有メモリに展開された該静的データを特定する情報を展開要求を行ったプロセスに通知させる情報処理装置を提供する。
【００１２】
本発明の更なる特徴は、以下の例示的な実施形態の記載から（添付の図面を参照して）明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係るゲーム提供システムのシステム構成を示した図
【図２】本発明の実施形態に係るゲームサーバ１００の機能構成を示したブロック図
【図３】本発明の実施形態に係るゲームサーバ１００において実行される、展開管理処理を例示したフローチャート
【図４】本発明の実施形態に係る展開管理処理で用いられる管理テーブルを例示した図
【発明を実施するための形態】
【００１４】
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、情報処理装置の一例としての１つのゲームコンテンツに係るゲーム提供サービスを行うゲームサーバ１００に本発明を適用した例を説明する。しかし、本発明は、静的データを使用する複数のプロセスを独立して実行することが可能な任意の機器に適用可能である。
【００１５】
《ゲーム提供システムの構成》
図１は、本発明の実施形態に係るゲーム提供システムのシステム構成を示す図である。
【００１６】
図示されるように、ゲームサーバ１００には、ネットワーク３００を介して複数のクライアント機器２００が接続されている。本実施形態ではゲームサーバ１００は、接続されているクライアント機器２００の各々について、ゲームコンテンツに係るゲーム画面を提供するゲーム処理を独立して実行する。即ち、ゲームサーバ１００では、接続されているクライアント機器２００の数と同数のゲーム処理が実行されるものとする。
【００１７】
クライアント機器２００の各々についてのゲーム処理では、クライアント機器２００においてなされた操作入力を受信し、該操作に応じたゲーム画面が１フレームごとに描画される。ゲームサーバ１００は、例えば描画したゲーム画面を符号化し、符号化動画データとしてゲーム画面を各クライアント機器２００に対して送信すればよい。このときクライアント機器２００は、ゲームサーバ１００から符号化動画データを受信すると、該データを復号して再生することで、操作入力に応じて変化したゲーム画面をユーザに対して提供することができる。
【００１８】
なお、本実施形態のゲーム提供システムにおいて、ゲーム画面の提供を受けるクライアント機器２００は、例えばＰＣ、家庭用ゲーム機、携帯ゲーム機、携帯電話、ＰＤＡ、タブレット等の、操作入力可能かつゲームサーバ１００から送信されたゲーム画面を表示可能な機器であればよい。
【００１９】
〈ゲームサーバ１００の構成〉
図２は、本発明の実施形態に係るゲームサーバ１００の機能構成を示すブロック図である。
【００２０】
ＣＰＵ１０１は、ゲームサーバ１００が有する各ブロックの動作を制御する。具体的にはＣＰＵ１０１は、例えばＲＯＭ１０２に記憶されているゲーム処理等の動作プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより、各ブロックの動作を制御する。
【００２１】
ＲＯＭ１０２は、例えば書き換え可能な不揮発性メモリである。ＲＯＭ１０２は、ゲーム処理等の動作プログラムに加え、ゲームサーバ１００が有する各ブロックの動作において必要となる定数等の情報を記憶する。
【００２２】
ＲＡＭ１０３は、揮発性メモリである。ＲＡＭ１０３は、動作プログラムの展開領域としてだけでなく、ゲームサーバ１００が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【００２３】
ＧＰＵ１０４は、接続されたクライアント機器２００において表示されるゲーム画面の生成を行う。ＧＰＵ１０４には、ＶＲＡＭ１０８が接続される。ＧＰＵ１０４は、ＣＰＵ１０１より描画命令及びゲーム画面の描画に用いるカメラの位置及び方向の情報（視点情報）を受信すると、該描画命令に係る描画オブジェクトのデータ（静的データ）を例えば後述する記録媒体１０９から読み出し、ＧＰＵメモリ１０５に展開する。ＧＰＵ１０４は、接続されたＶＲＡＭ１０８に対して描画を行う場合、ＧＰＵメモリ１０５に展開された描画オブジェクトをキャッシュメモリ１０７に複製する。その後、ＧＰＵメモリ１０５は、複製された描画オブジェクトに対して生成する画面用の処理を適用して、ＶＲＡＭ１０８に書き込む。
【００２４】
なお、本実施形態では記録媒体１０９からＧＰＵメモリ１０５への描画オブジェクトの格納は、展開管理部１０６により管理される。展開管理部１０６は、ＧＰＵ１０４から描画オブジェクトの展開要求を受け取ると、対象の描画オブジェクトのデータを記録媒体１０９から読み出し、ＧＰＵメモリ１０５に展開する。そして展開管理部１０６は、ＧＰＵメモリ１０５に展開した対象の描画オブジェクトについて、そのメモリハンドルをＧＰＵ１０４に返す。このようにすることでＧＰＵ１０４は、ＧＰＵメモリ１０５に展開された対象の描画オブジェクトを特定することができ、描画処理に用いることができる。
【００２５】
記録媒体１０９は、例えばＨＤＤ等の、ゲームサーバ１００に着脱可能に接続される記録装置である。本実施形態では記録媒体１０９には、画面の描画処理において用いられる、各描画オブジェクトのデータや、画面に表現される３次元シーンに配置された光源情報等が記録されているものとする。
【００２６】
通信部１１０は、ゲームサーバ１００が有する通信インタフェースである。本実施形態では通信部１１０は、ネットワーク３００を介して接続したクライアント機器２００等の、他の機器との間におけるデータ送受信を行う。なお、通信部１１０は、通信仕様に従ったデータ形式の変換を行う。本実施形態でゲームサーバ１００とクライアント機器２００との間で送信されるデータは、ＧＰＵ１０４により生成されたゲーム画面を不図示の符号化部により符号化した符号化動画データ、及びクライアント機器２００においてなされた操作入力のデータである。
【００２７】
《展開管理処理》
このような構成をもつ本実施形態のゲーム提供システムのゲームサーバ１００において実行される展開管理処理について、図３のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。なお、本展開管理処理は、例えばゲームサーバ１００が起動された際に開始され、繰り返し実行されるものとして説明する。
【００２８】
Ｓ３０１で、展開管理部１０６は、ＧＰＵ１０４から描画オブジェクトの展開要求がなされたか否かを判断する。具体的には、展開管理部１０６が描画オブジェクトの展開要求がなされたと判断した場合は、ＣＰＵ１０１は処理をＳ３０２に移す。また展開管理部１０６が描画オブジェクトの展開要求がなされていないと判断した場合は、ＣＰＵ１０１は本展開管理処理を完了する。
【００２９】
Ｓ３０２で、展開管理部１０６は、展開要求がなされた描画オブジェクトが、既にＧＰＵメモリ１０５に展開されているか否かを判断する。本実施形態のゲームサーバ１００では、展開管理部１０６は既にＧＰＵメモリ１０５に展開した描画オブジェクトを、例えばＲＡＭ１０３に格納された管理テーブルによって管理する。管理テーブルは、例えば図４に示されるように、既に展開された描画オブジェクトの静的データのファイル名を管理するものとする。即ち、本ステップにおいて展開管理部１０６は、展開要求がなされた描画オブジェクトのデータに対応するファイル名が管理テーブルに存在するか否かを判断する。展開要求がなされた描画オブジェクトが既にＧＰＵメモリ１０５に展開されていると展開管理部１０６が判断した場合、ＣＰＵ１０１は処理をＳ３０５に移す。また展開要求がなされた描画オブジェクトがまだＧＰＵメモリ１０５に展開されていないと展開管理部１０６が判断した場合、ＣＰＵ１０１は処理をＳ３０３に移す。
【００３０】
Ｓ３０３で、展開管理部１０６は、展開要求がなされた描画オブジェクトを記録媒体１０９から読み出し、ＧＰＵメモリ１０５に展開する。
【００３１】
Ｓ３０４で、展開管理部１０６は、ＧＰＵメモリ１０５に展開された描画オブジェクトについて、その展開箇所を示すメモリハンドルをＧＰＵ１０４に返す。また展開管理部１０６は、該展開箇所を示すメモリハンドルを、展開要求がなされた描画オブジェクトのデータのファイル名に関連付けて管理テーブルに登録し、本展開管理処理を完了する。なお、本実施形態では管理テーブルには、描画オブジェクトのファイル名に関連付けて、その展開箇所を示すメモリハンドルが管理されるものとして説明するが、本発明の実施はこれに限られるものではない。管理テーブルでは描画オブジェクトのファイル名に限らず、例えば描画オブジェクトの識別ＩＤ等、描画オブジェクトを一意に特定可能な情報が管理されればよい。また展開箇所を示す情報もメモリハンドルに限らず、例えばポインタ等の展開箇所を特定可能な情報であればよい。また、これらの情報は管理テーブルとして管理されなくともよく、展開管理部１０６により参照可能な情報として保持されるものであればよい。
【００３２】
一方、Ｓ３０２において展開要求がなされた描画オブジェクトが既にＧＰＵメモリ１０５に展開されていると判断した場合、展開管理部１０６はＳ３０５で、該描画オブジェクトの展開箇所を示すメモリハンドルをＧＰＵ１０４に返し、本展開管理処理を完了する。
【００３３】
このようにすることで、本実施形態のゲームサーバ１００は、接続された複数のクライアント機器２００について、各機器のゲーム画面を生成するゲーム処理が並列実行される場合であっても、ＧＰＵメモリ１０５に同一の描画オブジェクトが複数展開されることを回避することができる。この結果、ＧＰＵメモリ１０５に設ける必要があるメモリ容量を低減することができ、ＧＰＵの回路規模を低減することができる。また記録媒体１０９からの描画オブジェクトのデータを読み出す頻度も低減することができるため、処理に要する時間の短縮や、頻繁なアクセスによる記録媒体１０９の動作寿命の低下等を防ぐことができる。
【００３４】
なお、本実施形態のゲームサーバ１００では、展開管理処理として記録媒体１０９からのＧＰＵメモリ１０５へのデータの展開を例に説明したが、本発明の実施はこれに限られるものではない。共有メモリへの重複しないデータの展開は、例えばＧＰＵメモリ１０５からキャッシュメモリ１０７へのデータ複製時に用いられてもよい。またＧＰＵに限らず、ＲＡＭ１０３等の独立した複数の処理により並行利用されることが想定される共有メモリに、静的データを展開する際に用いられてもよい。
【００３５】
以上説明したように、本実施形態の情報処理装置は、独立実行される複数の処理においてメモリに展開された静的データを共用することができる。具体的には情報処理装置は、複数のプロセスのうちのいずれかのプロセスから、静的データの共有メモリへの展開要求がなされると、展開要求がなされた静的データが既に共有メモリに展開されているか否かを判断する。情報処理装置は、展開要求がなされた静的データがまだ共有メモリに展開されていないと判断した場合に、該静的データを共有メモリに展開させた後に、共有メモリに展開された該静的データを特定する情報を展開要求を行ったプロセスに通知する。また情報処理装置は、展開要求がなされた静的データが既に共有メモリに展開されていると判断した場合に、既に共有メモリに展開された該静的データを特定する情報を展開要求を行ったプロセスに通知する。
【００３６】
［その他の実施形態］
本発明は例示的な実施形態を参照して示されたが、本発明が上記の実施形態に制限されるものではないことは理解されるべきである。以下の特許請求の範囲は、全てのこのような変形例や同等の構造及び機能を包含するように、最も広い解釈が与えられるべきである。
【００３７】
本出願は、その全体が本明細書により参照によって組み込まれる２０１１年１１月７日に出願された米国特許仮出願第６１／５５６４３８号の利益を主張する。
【図１】
0005754059.tif 000002
【図２】
0005754059.tif 000003
【図３】
0005754059.tif 000004
【図４】
0005754059.tif 000005