ゲーム装置、方法およびプログラム
【課題】プレイヤーが直観的に操作でき、ゲームが行われる空間の広い範囲を視認すると同時に、操作するキャラクタの近くの状況を詳細に知ることができる2次元ゲームを提供する。
【解決手段】ゲームに登場する複数のオブジェクトを双曲平面上に配置し、オブジェクトのうちプレイヤーが操作するキャラクタを、プレイヤーの指示に従い移動、または回転させ、各オブジェクトを、プレイヤーごとに、プレイヤーが操作するキャラクタを中心としたポアンカレ円板モデル上に表す。
【解決手段】ゲームに登場する複数のオブジェクトを双曲平面上に配置し、オブジェクトのうちプレイヤーが操作するキャラクタを、プレイヤーの指示に従い移動、または回転させ、各オブジェクトを、プレイヤーごとに、プレイヤーが操作するキャラクタを中心としたポアンカレ円板モデル上に表す。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータを使用したゲーム装置、方法およびプログラムに関する。
【背景技術】
【0002】
コンピュータを使用したゲームには、ユークリッド平面上でゲームを行ういわゆる2次元ゲームと、3次元ユークリッド空間上でゲームを行ういわゆる3次元ゲームとがある。いずれのゲームでも、プレイヤーは、ゲーム装置に付属のコントローラを用いて、ゲームに登場する1つのキャラクタを操作する。コントローラは、通常、前後左右など、2次元の方向を入力可能な方向入力装置を備えている。前記の2次元ゲームでは、キャラクタの移動範囲が2次元に限定されるため、プレイヤーがコントローラの方向入力装置を介して入力した方向と、キャラクタの移動方向を一致させることができる。このため直観的な操作が可能となり、初心者でも操作しやすい特徴がある。3次元ゲームでは、キャラクタを3次元空間上で動かすために、操作方法が複雑になるという欠点がある。
【0003】
従来の2次元ゲームのように、ユークリッド平面上でゲームを行い、その様子を一定の縮尺で、ユークリッド平面で構成されるディスプレイ上の画面に表示した場合、ゲームが行われる空間のうち、画面の外にはみ出た範囲をプレイヤーは視認することができない。このため、画面の外の範囲にゲームを進める上で必要な情報が存在しても、プレイヤーはこの情報に気づくことはない。これを解決するために、より広い範囲を表示するために画面に表示する際の縮尺を小さくすると、全てのオブジェクトが小さく表示されてしまう。その結果、プレイヤーが操作するキャラクタの詳細な形状などの重要な情報を得ることができなくなったり、ゲームのスピード感が失われるという問題がある。異なる解決手法として、ディスプレイ上に大きな縮尺のメイン画面と小さな縮尺のサブ画面を同時に表示する手法もある。しかし、プレイヤーは2つの画面を交互に見る必要が生じ、ゲームへの集中力が削がれるという問題がある。
【0004】
また、コンピュータを使用したゲームには、複数のプレイヤーで技量を競う、いわゆる対戦型と呼ばれるゲーム形式があり、対戦などの目的で、2次元ゲームに、複数のプレイヤーが同時に参加することがある。この場合、各プレイヤーが操作する全てのキャラクタを、同時に画面に表示しなければならないため、個々のキャラクタの移動範囲が制限される。各プレイヤーに個別の画面を提示すれば、それぞれの画面を別々にスクロールさせることにより、広い移動範囲を確保することもできる。しかし、他のプレイヤーが操作するキャラクタが画面の外に位置する場合、このキャラクタを視認できないことから不具合が起こる。例えば、画面の外から攻撃を受けるという理不尽な事態が発生する。また、この状態では、異なるプレイヤーに提示する画面の間で表示される範囲が異なるため、あるプレイヤーが視認できるオブジェクトが別のプレイヤーには見えなくなる不公平も生じる。
【0005】
対戦型の2次元ゲームにおいても、ゲームが行われる空間の、画面に表示する際の縮尺を小さくすることにより、全てのキャラクタを表示することが可能になる。しかし、全てのオブジェクトが小さく表示されることになり、ゲームでのスピード感を損ないプレイヤーを満足させない原因となってしまう。
【0006】
また、3次元ゲームでは、通常、近くのオブジェクトが大きく、遠くのオブジェクトが小さく表示されるが、自キャラクタの背後が死角となって画面では見えないという欠点が存在する。
【0007】
上記のゲームはユークリッド空間上で行われている。ユークリッド空間は通常人間が生活する上で常識的な感覚で理解できる空間であるが、現実世界を記述するためにユークリッド空間ではない非ユークリッド空間を必要とする場合もある。例えば、重力を記述するためには非ユークリッド空間であるリーマン空間は必須である。
【0008】
非ユークリッド空間に含まれる双曲平面を利用した表示手法がある。複数の文字列を、似た属性を持つものが近くなるように双曲平面上に配置し、ポアンカレ円板上に表す(例えば、非特許文献1参照)。この場合、円板の中心は必要に応じて変更でき、文字列の大きさは円板上の場所に依存せず一定で、表示される向きも一定である。
【0009】
他に、複数の写真を、似た属性を持つものが近くなるように双曲平面上に配置し、ポアンカレ円板上に表す手法もある(例えば、非特許文献2参照)。この場合、円板の中心は必要に応じて変更でき、写真の大きさはポアンカレ円板上の場所に依存して拡大・縮小されるが、表示される向きは傾いたりせず一定である。
【非特許文献1】J. A. Walter and H. Ritter, “On Interactive Visualization of High-dimensional Data using the Hyperbolic Plane,” Proceedings of the Eighth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp. 123-132, 2002.
【非特許文献2】J. A. Walter, D. Wessling, K. Essig and H. Ritter, “Interactive Hyperbolic Image Browsing - Towards an Integrated Multimedia Navigator,” Proceedings of the Seventh International Workshop on Multimedia Data Mining in conjunction with KDD 2006, pp. 101-108, 2006.
【発明の開示】
【発明が解決しようとする課題】
【0010】
上述のように双曲平面を利用した表示手法はあるが、ゲームでの表示に双曲平面を利用する技術はない。
また、現在のゲーム装置では、上述したように、以下のような問題がある。プレイヤーが操作するキャラクタの詳細な形状などの重要な情報を得ることができなくなったり、ゲームのスピード感が失われる。また、他のプレイヤーが操作するキャラクタが画面の外に位置する場合、このキャラクタを視認できないことから不具合が起こる。異なるプレイヤーに提示される画面の間で表示される範囲が異なるため、あるプレイヤーが視認できるオブジェクトが別のプレイヤーには見えなくなる不公平が生じる。3次元ゲームでは、背後が見えない上、自キャラクタを直観的に操作することが難しい。
【0011】
この発明は、上述した事情を考慮してなされたものであり、プレイヤーが直観的に操作でき、ゲームが行われる空間上の広い範囲を視認すると同時に操作するキャラクタの近くの状況を詳細に知ることが可能な、2次元ゲームを実現するゲーム装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上述の課題を解決するため、本発明のゲーム装置は、サーバ装置とこのサーバ装置と通信する1以上のクライアント装置とを含むゲーム装置であって、
前記サーバ装置は、ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第1記憶手段を具備し、
前記クライアント装置は、前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段を具備し、
前記サーバ装置は、すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第1取得手段と、前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第1記憶手段に記憶させる設定手段と、前記第1記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、をさらに具備し、
前記クライアント装置は、前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得する第2取得手段と、前記第2取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第1変換手段と、前記各オブジェクトの形状を記憶する第2記憶手段と、前記第1変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第2記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第2変換手段と、前記第2変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段と、をさらに具備することを特徴とする。
【発明の効果】
【0013】
本発明のゲーム装置、方法およびプログラムによれば、プレイヤーに、そのプレイヤーが操作するキャラクタの近くの詳細な状況を提示しつつ、ゲームが行われる空間上の広い範囲を提示することができる。このとき、従来の2次元ゲームが持つものと同様の、直観的な操作性を確保することができる。
【発明を実施するための最良の形態】
【0014】
以下、図面を参照しながら本発明の実施形態に係るゲーム装置、方法およびプログラムについて詳細に説明する。なお、以下の実施形態中では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
まず、本実施形態の概要を説明する。
本実施形態のゲーム装置は、ゲームが非ユークリッド空間である双曲平面上で行われるように双曲面モデルを使用してオブジェクト、背景を制御する。
ここで、双曲平面は、2次元双曲空間とも言い、球面などと同じく、曲面の一種である(例えば、河野俊丈:曲面の幾何構造とモジュライ、日本評論社、pp.10−13、1997参照)。双曲平面の一例を図1に示す。双曲面モデルは、通常は、3次元ユークリッド空間上の二葉双曲面上に表したモデルを示すが(例えば、谷口雅彦、奥村善英:双曲幾何学への招待−複素数で視る−、培風館、pp.85−86、1996参照)、本実施形態では、双曲平面上のオブジェクトの向きを一葉双曲面上に表すことも含む。このモデルでは、後述する、オブジェクトの移動、ローカル変換などの計算が容易になる特徴がある。二葉双曲面と一葉双曲面の一例をそれぞれ図2、図3に示す。
【0015】
なお、双曲面モデルを用いたオブジェクト、背景の制御方法は、実施形態の一例であり、他の方法を用いても本発明の実施は可能である。例えば、オブジェクトの位置を極座標で表し、双曲平面上の余弦定理を用いてオブジェクトを移動させることもできる。
【0016】
本実施形態では、背景として、画面を飾るために1枚の大きなラスタ画像を貼り付けることはせず、小さな画像を複数配置して背景とする。この小さな画像を配置する際に必要な位置および向きのデータをまとめたものを背景要素と呼ぶ。背景要素は、画面に表示される際に貼り付けられるテクスチャに関連付けられる。
オブジェクトは、ゲームの中で互いに干渉する物体を示し、位置、向き、および、衝突判定領域を定めるデータを有する。オブジェクトは、画面に表示される際に貼り付けるテクスチャに関連付けられる。なお、後述のキャラクタはオブジェクトに含まれる。
キャラクタは、オブジェクトのうち、複雑な思考ルーチンに挙動を操作されるものを示す。すなわち、本実施形態では、プレイヤーが操作するオブジェクトと、コンピュータが操作するオブジェクトがキャラクタに対応する。
【0017】
本実施形態のゲーム装置は、ゲームが行われている双曲平面を、各プレイヤーが操作するキャラクタを中心としたポアンカレ円板モデル上に写し、各円板のすべて、または一部分を画面として各プレイヤーに提示する。
ここで、ポアンカレ円板モデルは、双曲平面をユークリッド平面上に表したモデルであり、ポアンカレ円板上に写された図形は元の双曲平面上の図形と比較して以下の特徴がある(例えば、河野俊丈:曲面の幾何構造とモジュライ、日本評論社、pp10−13、1997参照)。
特徴1 中心から離れるにつれ縮尺が小さくなる
特徴2 全ての点で角が正しく表される
特徴3 中心からの方位が正しく表される
特徴4 双曲平面上の円がこのモデルでも円として表される
これらの特徴により、以下の利点を生む。
【0018】
特徴1により、ゲームが行われる空間のうちの広い範囲を画面に提示しつつ、自キャラクタの近くの詳細な状況を提示することが可能になる。このことについて図4(a)、図4(b)を参照して説明する。図4(a)は本実施形態のゲーム装置による表示であり、図4(b)は従来のゲーム装置によるユークリッド平面上のゲームによる表示である。図4(a)では、自キャラクタ、近くのオブジェクト、および、背景を大きく表示しつつ、広い範囲が提示されている。多くのコンピュータゲームでは、プレイヤーは自キャラクタ近くの状況は詳細に知る必要があるが、遠くの状況については詳細に知る必要はない。特徴1により、1枚の連続した画面から、自キャラクタ近くの詳細な状況を知ると同時に、従来のゲームでは画面の外にはみ出すような遠くの状況を大まかに知ることができる。近くのオブジェクトが大きく、遠くのオブジェクトが小さく表示されるという点では、3次元ゲームも同様だが、3次元ゲームでは自キャラクタの背後が死角になるという欠点がある。これに対し、本実施形態のゲーム装置による表示では背後も表示できる。
【0019】
特徴2により、各オブジェクトは、局所的にはその形状を歪めることなく画面に表示される。仮に、ゲームをユークリッド平面上で行い、その様子を、ある点から離れるにつれて縮尺が小さくなるように、別のユークリッド平面からなる画面に写像した場合は、このような効果は得られない。オブジェクトが大きく歪んで表示されることになり、プレイヤーがオブジェクトの種類を見誤る原因となる。
【0020】
特徴3により、プレイヤーは、自キャラクタ以外のオブジェクトが自キャラクタに向かっているか否かを容易に判断することができる。例えば、シューティングゲームにおいて、プレイヤーは敵機や敵の弾丸が自機に向かってくるか否かを直観的に判断することができる。また、コントローラの方向入力装置の入力方向と、画面上の自キャラクタ移動方向を一致させることができ、直観的な操作が可能になる。
特徴4により、全てのプレイヤーに双曲平面上の同一の範囲を提示することが可能になり、対戦するプレイヤー間に有利不利を生じない。
【0021】
次に、本実施形態のゲーム装置について図5を参照して説明する。
本実施形態のゲーム装置は、一例として、図5に示すように、サーバクライアント型の装置を使用して行う。サーバ501は、オブジェクトに関するデータのうち、グローバル座標系における配置を定める位置と向き、衝突判定領域を定めるデータ、オブジェクトの移動の速さ、および、オブジェクトが回転する際の角速度を記憶している。各クライアント502、503は、背景要素の、グローバル座標系における配置を定める位置および向きと、背景要素およびオブジェクトの形状を定める頂点データを記憶している。
【0022】
サーバ501は、オブジェクトの位置と向きをフレームごとに更新する。同時に衝突判定を行い、衝突で消滅すべきオブジェクトを削除し、生成すべきオブジェクトを新規作成する。そして、サーバ501は、各クライアントへ全オブジェクトの位置と向きとを無線または有線で送信する。
【0023】
クライアント502、503は、自キャラクタを中心とするローカル座標系を設定し、サーバから送信されてきた全オブジェクトの位置と向き、およびクライアントが記憶する全背景要素の位置と向きとを、ローカル変換し、これらデータと、背景要素の頂点データおよびオブジェクトの頂点データとを組み合わせて画面上に各背景要素と各オブジェクトとの形状を描画する。
【0024】
次に、本実施形態のゲーム装置の詳細について図6を参照して説明する。
本実施形態のゲーム装置は、サーバ501と少なくとも1つ以上のクライアント502を含む。サーバ501は、CPU601、プログラム記録部602、データ更新部603、I/Oポート604を含み、各クライアント502、503は、CPU611、プログラム記録部612、データ記録部613、I/Oポート614、GPU615、入力部616、出力部617を含む。また、サーバ501と各クライアント502、503とは、有線または無線により接続されている。接続は図6では600で示されている。
【0025】
接続600は、無線通信手段、有線通信手段、またはそれらを組み合わせたものによる、サーバとクライアントとの通信を可能にする手段であり、インターネット回線を含む。
【0026】
CPU601は、フレームごとに、データ更新部603に格納されているオブジェクトデータを入力として、プログラム記録部602に格納されているプログラムを使用して演算する。この演算により、フレームごとに、ゲームが行われる双曲平面上の全てのオブジェクトの位置と向きを算出し、また、各オブジェクトが別のオブジェクトと衝突したかを判定する。衝突判定は、例えば、各キャラクタが他のキャラクタに衝突したかを判定したり、各キャラクタが弾丸などのオブジェクトに当たったかを判定する。なお、CPU601は、高速な演算が必要なため、行列演算ユニットを備えたものであることが望ましい。
【0027】
プログラム記録部602は、CPU601が演算する際に使用するプログラムを記録している。プログラム記録部602は、フレームごとに、ゲームが行われる双曲平面上の全てのオブジェクトの位置と向きを算出し、オブジェクト同士の衝突を判定するためのプログラムを記録している。具体的なプログラムの内容については後に詳細に説明する。なお、プログラム記録部602は、ROMまたはRAMにより構成され、RAMの場合はプログラム記録部602が備えている他の記録媒体(例えば、ハードディスク)からプログラムをロードする。
【0028】
データ更新部603は、CPU601で計算されたフレームについて、各オブジェクトの位置と向き、各オブジェクトの衝突判定領域、オブジェクトの移動の速さ、および、オブジェクトが回転する際の角速度を記録している。データ更新部603が記憶しているデータは、フレームごとにCPU601が計算した結果に更新される。しかし、衝突判定領域、オブジェクトの移動の速さ、および、オブジェクトが回転する際の角速度は、これらの値をフレーム間で変化させない場合には、更新せず一定値でもよい。具体的なデータについての一例は後に詳細に説明する。なお、データ更新部603はRAMにより構成される。
【0029】
I/Oポート604は、CPU601が計算した、各オブジェクトの位置および向きを各クライアント502、503に送信する。また、I/Oポート604は、各クライアント502、503が入力部616を使用して操作した内容を取得する。
【0030】
CPU611は、データ記録部613に記録された、全ての背景要素のグローバル座標系における位置および向きと、I/Oポート614を介して受信した、全てのオブジェクトのグローバル座標系における位置および向きとを、プログラム記録部612に格納されているプログラムを使用して、ローカル座標系における位置および向きに座標変換する。なお、CPU611は、高速な演算が必要なため、行列演算ユニットを備えたものであることが望ましい。
【0031】
プログラム記録部612は、グローバル座標系における位置および向きを、各クライアント502、503の自キャラクタを中心とするローカル座標系における位置および向きに座標変換するためのプログラムを記録している。なお、プログラム記録部612は、ROMまたはRAMにより構成され、RAMの場合はプログラム記録部612が備えている他の記録媒体(例えば、ハードディスク)からプログラムをロードする。また、接続600を介してサーバ501からプログラムをダウンロードしてもよい。
【0032】
データ記録部613は、全ての背景要素の位置、向き、頂点、その背景要素に貼り付けるテクスチャを関連付けて背景データとして記録している。他に、データ記録部613は、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャを関連付けてオブジェクトデータとして記録している。なお、データ記録部613はRAMにより構成される。
【0033】
I/Oポート614は、各オブジェクトのグローバル座標系における位置および向きをサーバ501から取得したり、各クライアント502、503が入力部616を使用して操作した内容をサーバ501へ送信する。
【0034】
GPU615は、CPU611が計算したローカル座標系における全ての背景要素の位置および向きと、ローカル座標系における全てのオブジェクトの位置および向きとを使用して、データ記録部613に記録されている背景要素とオブジェクトの頂点を、各クライアント502、503の自キャラクタを中心とするローカル座標系における頂点へモデリング変換する。その後、GPU615は、モデリング変換された全ての背景要素と全てのオブジェクトの頂点をポアンカレ円板モデルに写す。さらに、GPU615は、ゲームが行われている、予め定められた範囲のみをポアンカレ円板モデルから抜き出す。最後に、GPU615は、全ての背景要素と全てのオブジェクトの頂点に沿って、各背景要素と各オブジェクトに対応するテクスチャを貼り付け、この内容を出力部617に出力する。また、GPU615は、テクスチャを用いずに、オブジェクトを直線で構成されるベクタ画像で描いてもよい。なお、ここではCPU611とGPU615と分けているが、GPU615を設けず、GPU615の機能を全てCPU611に代行させることができる。
【0035】
入力部616は、各クライアント502、503が自キャラクタを動かしたり、シューティングゲームであれば弾丸を発射したりするためのコントローラである。
出力部617は、GPU615が作成した画像を表示するディスプレイである。
【0036】
次に、サーバ501の動作の一例について図7を参照して説明する。
以下のステップS701からステップS703は初期設定である。背景、オブジェクトの位置と向きを設定する(ステップS701)。これらの設定は、ゲームが開始される前に、予め初期設定として定まっているデータがプログラム記録部602またはデータ更新部603に記憶されている。ステップS701ではCPU601がこの初期設定を読み込む。
【0037】
ステップS702とステップS703は、上記のように、クライアント502、503がデータ記録部613に背景データとオブジェクトデータを持っている場合には必要ない。クライアント502、503が背景データとオブジェクトデータを持っていない場合には、サーバ501が背景データとオブジェクトデータをデータ更新部603等のメモリに有していて、CPU601がこのメモリから背景データとオブジェクトデータとをクライアント502、503に送信する。すなわち、サーバ501が、全ての背景要素の頂点と、各背景要素に貼り付けるテクスチャと、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャとをクライアント502、503へ送信する(ステップS702)。サーバ501が、全ての背景要素の位置、向きをクライアント502、503へ送信する(ステップS703)。
【0038】
以下ステップS704からステップS711は、1つのフレームについてサーバ501が行う処理である。換言すれば、フレームごとにサーバ501はステップS704からステップS711の処理を行う。
【0039】
CPU601は、フレームごとに、データ更新部603に格納されているオブジェクトデータのうち、位置と向きをI/Oポート604を経由してクライアント502、503に送信する(ステップS704)。
【0040】
サーバ501は、例えば、クライアント502、503のいずれかからのゲーム終了の指示があった場合、ゲームで予め決められている時間が経過した場合、または、ゲームで予め決められている終了ルールに合致した場合には、CPU601がゲームを終了すると判定する(ステップS705)。終了ルールとは、例えば、2人で対戦している場合にはどちらか一方の所有している機が全滅した場合ゲームを終了する等、である。
【0041】
サーバ501がゲームを終了すると判定した場合には、クライアント502、503にゲームを終了する旨の信号を送信し、ゲームを終了する(ステップS706)。
【0042】
一方、サーバ501がゲームを終了しないと判定した場合には、I/Oポート604がクライアント502、503から入力部616で入力された指示を受信し、CPU601がこれらの指示を受け取る(ステップS707)。この指示には、例えば、キャラクタを動かす、キャラクタを回転させる、があり、これら指示に基づきデータ更新部603に記憶された各キャラクタの移動の速さおよび角速度が更新される。CPU601は、データ更新部603を入力しプログラム記録部602のプログラムを使用して、オブジェクトを移動、回転させる(ステップS708)。このとき、データ更新部603に記憶された各オブジェクトの位置および向きが更新される。CPU601は、データ更新部603のデータを入力しプログラム記録部602のプログラムを使用して、オブジェクトの衝突、タイマーイベントが発生したか否かを判定する(ステップS709)。タイマーイベントには、例えば、キャラクタが衝突して爆炎が発生し、一定時間後に爆炎が消える等、がある。
【0043】
ステップS709で衝突、タイマーイベントが発生しなかったと判定された場合には、ステップS704に戻る。ステップS709で衝突、タイマーイベントが発生したと判定された場合には、衝突、タイマーイベントが発生したオブジェクトに対応するオブジェクトデータをデータ更新部603から削除する(ステップS710)。CPU601は、削除されたオブジェクトの代わりになるオブジェクトのオブジェクトデータ(位置、向き、衝突判定領域、移動の速さ、角速度)を生成し、データ更新部603に書き込む(ステップS711)。
【0044】
次に、各クライアント502、503の動作の一例について図8を参照して説明する。
I/Oポート614が、サーバ501から、全ての背景要素の頂点と、各要素に貼り付けるテクスチャと、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャとを受信し、これらのデータをデータ記録部613に格納する(ステップS801)。I/Oポート614が、サーバ501から、全ての背景要素の位置、向きを受信し、これらのデータをデータ記録部613に格納する(ステップS802)。これらのステップS801、S802は、予めデータ記録部613が、全ての背景要素それぞれの位置、向き、頂点、その要素に貼り付けるテクスチャを関連付けて背景データとして記録して、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャを関連付けてオブジェクトデータとして記録していれば、不要である。
【0045】
I/Oポート614が、サーバ501から、全てのオブジェクトの位置、向きを示すオブジェクトデータを受信する(ステップS803)。CPU611は、プログラム記録部612に格納されているプログラムを使用して、サーバ501からステップS802で受信した全ての背景要素の位置、向きをローカル変換すると同時に、ステップS803で受信した全てのオブジェクトの位置、向きをローカル変換する(ステップS804)。GPU615は、データ記録部613に記録されている背景要素とオブジェクトの頂点を、各クライアント502、503の自キャラクタを中心とするローカル座標系における頂点へモデリング変換する(ステップS805)。GPU615は、モデリング変換された全ての背景要素と全てのオブジェクトの頂点をポアンカレ円板モデルに写す(ステップS806)。GPU615は、拡大、平行移動により、ゲームが行われている、予め定められた範囲のみをポアンカレ円板モデルから抜き出す(ステップS807)。GPU615は、全ての背景要素と全てのオブジェクトの頂点に沿って、各背景要素と各オブジェクト対応するテクスチャを貼り付ける(ステップS808)。CPU611が、I/Oポート614を経由してサーバ501からゲーム終了の信号を受信したか否か判定する(ステップS809)。ゲーム終了の信号を受信したと判定した場合にはゲームを終了し、ゲーム終了の信号を受信しなかったと判定した場合には入力部616により入力されたプレイヤーの指示をI/Oポート614を経由してサーバ501に送信し、ステップS803に戻る(ステップS810)。
【0046】
次に、CPU601、CPU611、GPU615が行う演算について詳細に説明する。
一般に、m次元(m:自然数)双曲空間上のオブジェクトの位置は、最低m個の実数変数で表すことができるが、m+1個の実数変数を使用することでオブジェクトの移動などを、行列を使用した高速演算で行うことが可能になることが知られている(例えば、J. Weeks, “Real-Time Rendering in Curved Spaces,” IEEE Computer Graphics and Applications, pp. 90-99, 2002.を参照)。2次元双曲空間である双曲平面の場合は、本実施形態のように、双曲面モデルを用いる方法がこの方法に相当する。
【0047】
本実施形態のゲーム装置で行うゲームでは、全オブジェクトはガウス曲率K=−1の2次元の双曲平面上に配置される。なお、本実施形態ではガウス曲率をK=−1に限っているが、モデルを拡大・縮小することで他の負の定曲率を持つ空間にも対応できる。本実施形態では、計算機内部で双曲面モデルを用いるが、その際用いる変数を直接設定するのは難しい。そこで初期設定時には極座標などの理解し易い変数を入力し、それを元に、計算機内部用の変数を算出する。表1に、例としてあるオブジェクトΦの入力用の変数と計算機内部用の変数を示す。この例では、Φは円形の衝突判定領域を有するものとしている。
【表1】
【0048】
(オブジェクトの配置)
サーバ501のデータ更新部603には、ゲームに登場する全てのオブジェクトの、位置および向きのデータが格納される。あるオブジェクトΦの位置のデータは、(xΦ,yΦ,zΦ)と3変数を使用して表され、データ更新部603に格納される。
【0049】
初期設定時に、オブジェクトデータの入力値として、Φの位置が図9(a)に示すように極座標(dΦ,δΦ)で与えられた場合には、
【数1】
【0050】
とすることでこれらの値を求めることができる。このとき(xΦ,yΦ,zΦ)は3次元ユークリッド空間上の二葉双曲面z2=x2+y2+1上の点であり、オブジェクトの中心となる点を一意に定める。なお、本実施形態の双曲線モデル上で双曲平面上の点を定める二葉双曲面上の座標を「位置座標」と呼ぶ。
【0051】
また、Φの向きも3変数を用いて(aΦ,bΦ,cΦ)と表され、データ更新部603に格納される。初期設定時に、図9(a)のようにΦの向きが双曲平面上の角度θΦで入力された場合、(1)式で得られた値を用いて、
【数2】
【0052】
とすることでこれらの値を求めることができる。このとき(aΦ,bΦ,cΦ)は一葉双曲面z2=x2+y2−1上の点であり、オブジェクトの前後方向に伸びる測地線を一意に定める。なお、本実施形態の双曲線モデル上で双曲平面上の測地線を定める一葉双曲面上の座標を「向き座標」と呼ぶ。
【0053】
1つのオブジェクトは位置を表すための1つの位置座標と向きを表すための1つの向き座標を持ち、双曲平面上で、この向き座標が定める測地線はこの位置座標が定める点を通るものとする。このとき、位置座標(xΦ,yΦ,zΦ)と向き座標(aΦ,bΦ,cΦ)との間にはcΦzΦ=aΦxΦ+bΦyΦの関係が成り立ち、後述するオブジェクトの移動での変換、オブジェクトの回転での変換、ローカル座標への変換を経てもこの関係は保存される。
【0054】
各クライアントのデータ記録部613に格納される全ての背景要素の位置と向きを表すデータも、オブジェクトの場合と同様に設定する。
【0055】
(オブジェクトの移動)
サーバ501のデータ更新部603のオブジェクトデータを入力として、プログラム記録部602が格納しているプログラムを使用してCPU601が計算するオブジェクトの移動について説明する。
オブジェクトΦが、その向き座標が定める測地線に沿って移動する場合、移動する前の位置座標を(xΦ0,yΦ0,zΦ0)、移動後の位置座標を(xΦ1,yΦ1,zΦ1)とする。移動後の位置座標は、オブジェクトΦの向き座標(aΦ,bΦ,cΦ)を使用して移動前の位置座標を変換することによって得られる。
【数3】
【0056】
ここで、eとfは移動の速さを表す変数であり、双曲面上のオブジェクトの速さvからe=sinh v、f=cosh vと算出される。速さが一定の場合はこれらの値を予め求めておき、プログラム記録部602に含まれるプログラムまたはデータ更新部603に含めていてもよい。また、オブジェクトが、同一の測地線に沿って移動を繰り返す場合は、1回目の変換に用いた行列をデータ更新部603に記憶させ、2回目以降の変換時に再度用いることで、計算量を抑えることができる。
【0057】
(オブジェクトの回転)
サーバ501のデータ更新部603のオブジェクトデータを入力として、プログラム記録部602が格納しているプログラムを使用してCPU601が計算するオブジェクトの回転について説明する。
オブジェクトΦが、その位置座標が定める点を中心として回転する場合、回転する以前の向き座標を(aΦ0,bΦ0,cΦ0)、回転後の向き座標を(aΦ1,bΦ1,cΦ1)とする。回転後の向き座標は、オブジェクトΦの位置座標(xΦ,yΦ,zΦ)を使用して回転以前の向き座標を変換することによって得られる。
【数4】
【0058】
ここで、gとhは角速度を表す変数であり、双曲平面上の角速度ωとg=sin ω、h=cos ωの関係にある。角速度が一定ならばこれらの値を予め求めておき、プログラム記録部602に含まれるプログラムまたはデータ更新部603に含めていてもよい。また、オブジェクトが、同一の点を中心とした回転を繰り返す場合は、1回目の変換に用いた行列をデータ更新部603に記憶させ、2回目以降の変換時に再度用いることで、計算量を抑えることができる。また、角度ωの回転、距離vの移動、角度−ωの回転を1フレーム内で行うことで、オブジェクトを任意方向へ移動させることが可能になる。これをプレイヤーが操作するキャラクタに適用すれば、コントローラの方向入力装置の入力方向と、キャラクタの移動方向を一致させることができる。
【0059】
(衝突判定)
サーバ501のデータ更新部603のオブジェクトデータを入力として、プログラム記録部602が格納しているプログラムを使用してCPU601が計算するオブジェクトが別のオブジェクトに衝突するかを判定する手法について説明する。
衝突判定を行う2つのオブジェクトの衝突判定領域を、双曲平面上の円で定める場合、衝突判定領域のデータとして、円の半径を表す、2変数からなる配列(pΦ,qΦ)を、データ更新部603に格納する。初期設定時に、半径が双曲平面上の距離rΦとして入力された場合、
【数5】
【0060】
とすることでこれらの値が得られる。オブジェクトΦと、位置座標が(xΨ,yΨ,zΨ)であり、衝突判定領域データとして半径を表す配列(pΨ,qΨ)を持つ、Φと異なるオブジェクトΨとが衝突する場合に成立する式は次のようになる。
【数6】
【0061】
この式は、ユークリッド空間での場合の(xEΦ−xEΨ)2+(yEΦ−yEΨ)2≦(rΦ+rΨ)2に対応する。これは、ユークリッド空間での、位置(xEΦ,yEΦ)と半径rΦのオブジェクトと位置(xEΨ,yEΨ)と半径rΨのオブジェクトが衝突する場合の式である。ここでは、各オブジェクトの衝突判定領域が1つの円で定められるものとして衝突判定を行ったが、各オブジェクトの衝突判定領域を複数の円で定めてもよい。その場合は、予め各オブジェクトを中心とするローカル座標系に円の中心座標を定めておき、それらをグローバル変換することで個々の円の衝突判定を行う。
【0062】
また、衝突判定領域が、測地線に囲まれた、双曲平面上の多角形で構成されるオブジェクト同士の衝突判定を行うこともできる。
【0063】
多角形で衝突判定領域が定められるオブジェクトの衝突判定について図10を参照して説明する。
第1オブジェクト1000の衝突判定領域は、点1001、1002、1003、1004を頂点とする双曲平面上の多角形で定められ、第2オブジェクト1050の衝突判定領域は、点1051、1052、1053を頂点とする双曲平面上の多角形で定められる。
【0064】
第1オブジェクトの多角形を構成する線分のいずれかと、第2オブジェクトの多角形を構成する線分のいずれかが交差する場合に衝突判定の結果は真となり、それ以外の場合は偽となる。
【0065】
片方の多角形が、もう片方の多角形に内包される場合は衝突しているにもかかわらず、衝突判定の結果は偽となるが、オブジェクトの移動がフレームレートに対して十分遅い場合はこのようなことは起こらないため、ここでは考えない。
【0066】
図10では点1001と点1002を結ぶ線分と、点1051と点1052を結ぶ線分が交差すると同時に、点1001と点1002を結ぶ線分と、点1053と点1051を結ぶ線分が交差しており、衝突判定の結果は真となる。
【0067】
衝突判定のための演算は、すべてサーバの中で行う。サーバ内のデータ更新部603には、図11に示すようにすべてのオブジェクトの位置座標と向き座標と共に、衝突判定領域を定める多角形の、頂点のデータが収められている。
【0068】
あるオブジェクトΦのm個目の頂点のデータは、Φを中心とするローカル座標系における位置座標(xΦm,yΦm,zΦm)で構成される。
【0069】
次に、多角形で衝突判定領域が定められるオブジェクトの衝突判定の一例について図12を参照して説明する。図12では、mは第1オブジェクトに所属する頂点の番号を、Mは頂点の総数を表す。また、nは第2オブジェクトに所属する頂点の番号を、Nは頂点の総数を表す。
【0070】
2つのオブジェクトに所属するすべての頂点の位置座標をグローバル変換する(ステップS1201)。例えばある頂点の位置座標が(xΦm,yΦm,zΦm)である場合は、その頂点が所属するオブジェクトの位置座標(xΦ,yΦ,zΦ)と向き座標(aΦ,bΦ,cΦ)から成る行列を用いて次式の(7)式のように変換し、グローバル座標系における頂点の位置座標(xΦmG,yΦmG,zΦmG)を得る。
【数7】
【0071】
次に、n=1と設定し(ステップS1202)、m=1と設定し(ステップS1203)、ステップS1204に進む。ステップS1204では、多角形を構成する線分の交差判定を行う。すなわち、第1オブジェクトの線分mと第2オブジェクトの線分nが交差するかどうかを判定する(ステップS1204)。図12の例ではn=m=1から交差判定が開始される。第1オブジェクトの多角形を構成するm番目の線分は、グローバル変換後の位置座標(xΦmG,yΦmG,zΦmG)のm番目の頂点と、グローバル変換後の位置座標(xΦm+1G,yΦm+1G,zΦm+1G)のm+1番目の頂点に終端される。第2オブジェクトの多角形を構成するn番目の線分は、グローバル変換後の位置座標(xΨnG,yΨnG,zΨnG)のn番目の頂点と、グローバル変換後の位置座標(xΨn+1G,yΨn+1G,zΨn+1G)のn+1番目の頂点に終端される。次式の(8)式と(9)式の双方を満たすとき、これら2つの線分は交差していると判定できる。
【数8】
【0072】
【数9】
【0073】
ただし、M+1番目の頂点とは1番目の頂点のことを指し、N+1番目の頂点とは1番目の頂点のことを指す。また(8)式と(9)式では、|A|はAの行列式を示す。
【0074】
ステップS1204で交差すると判定された場合には、衝突判定は真であるとし、ステップS1204で交差しないと判定された場合には、ステップS1205に進む。m=Mであるかどうかを判定し(ステップS1205)、m=Mである場合にはステップS1207に進み、一方、n=Mでない場合にはステップS1206に進む。mにm+1を代入してステップS1204に戻る(ステップS1206)。n=Nであるかどうかを判定し(ステップS1207)、n=Nである場合には衝突判定は偽であるとし、n=Nでない場合にはステップS1208に進む。nにn+1を代入してステップS1203に戻る(ステップS1208)。
【0075】
第1オブジェクトの線分と第2オブジェクトの線分の、すべての組み合わせについて交差を判定し、1組でも交差していた時点で衝突判定の結果を真とし終了する。交差する組が1つもない場合は結果を偽とし終了する。
【0076】
シューティングゲーム等では、レーザービームのように、その幅と比較して長さが極端に大きいオブジェクトと、他のオブジェクトのとの衝突判定を行わなければならない場合がある。
【0077】
位置座標が(xΦ,yΦ,zΦ)である、第1オブジェクトΦがあり、その衝突判定領域が、1つの、(xΦ,yΦ,zΦ)で定められる点を中心とする双曲平面上の円で定められ、その円の半径は双曲平面上の距離rΦであるとする。
【0078】
また、向き座標が(aΨ,bΨ,cΨ)である、第2オブジェクトΨがあり、その衝突判定領域が、1本の、(aΨ,bΨ,cΨ)で定められる測地線から、双曲平面上の距離wΨまでの領域を含む、ベルト状の領域であるとする。
【0079】
これら2つのオブジェクトは、(10)式を満たすときに衝突していると判定される。
【数10】
【0080】
ここでpΦ=sinh rΦ、qΦ=cosh rΦであり、uΨ=sinh wΨ、vΨ=cosh wΨである。
【0081】
(ローカル座標への変換)
各クライアント502、503のCPU611が、各クライアントに納められた背景データとサーバ501からのオブジェクトデータを入力として、プログラム記録部612が格納しているプログラムを使用してローカル座標に座標変換するための手法について説明する。
位置座標(xΦ,yΦ,zΦ)と向き座標(aΦ,bΦ,cΦ)はそれぞれグローバル座標系におけるオブジェクトΦの位置と向きを表す。これらを、キャラクタΨを中心とするローカル座標系における位置座標(xΦL,yΦL,zΦL)と向き座標(aΦL,bΦL,cΦL)に変換する。ともにΨの位置座標(xΨ,yΨ,zΨ)と向き座標(aΨ,bΨ,cΨ)の成分からなる同一の行列を使用して変換される。
【数11】
【0082】
【数12】
【0083】
他の全てのオブジェクトについても、また、Ψを操作するクライアントに納められた全ての背景要素についても、同一の行列を用いて位置座標と向き座標をローカル変換する。この変換を経ても、各背景要素および各オブジェクト間の、双曲平面上の位置と向きの関係は保たれる。
【0084】
(オブジェクト形状の再構成)
GPU615が、CPU611が計算したローカル座標系におけるオブジェクトの位置と向きを使用して、データ記録部613に記録されている背景要素とオブジェクトの形状を表す頂点を、各クライアントのキャラクタを中心とするローカル座標系へモデリング変換する手法について説明する。
【0085】
オブジェクトΦの形状を表す各頂点は、Φを中心とするローカル座標系における位置座標(xvn,yvn,zvn)で表され、データ記録部613に格納されている。初期設定時に、図9(b)に示すようにΦの形状を表す頂点が、例えば、極座標(dvn,δvn)で入力された場合、
【数13】
【0086】
としてこれらの値を得る。オブジェクトΦの形状をキャラクタΨを中心とするローカル座標系に再構成する場合、次式のようにΨを中心とするローカル座標系におけるΦの位置座標(xΦL,yΦL,zΦL)と向き座標(aΦL,bΦL,cΦL)の成分からなる行列を使用してΦの形状を表す頂点の位置座標(xvn,yvn,zvn)を変換し、Ψを中心とするローカル座標系におけるΦの形状を表す頂点の位置座標(xvnL,yvnL,zvnL)を得る。背景要素についても同様に計算する。
【数14】
【0087】
(画面描画)
GPU615が、ローカル座標に変換された全ての背景要素と全てのオブジェクトの頂点をポアンカレ円板モデルに写す。さらに、GPU615は、ゲームが行われている双曲平面上の、予め定められた範囲のみをポアンカレ円板モデルから抜き出すことについて説明する。
【0088】
キャラクタΨを操作するプレイヤーに提示する画面を描画する。まず、Ψを中心とするローカル座標系における位置座標(xvnL,yvnL,zvnL)で表される、ある頂点を次式でΨを中心とするポアンカレ円板上の点(X,Y)に写す。
【数15】
【0089】
続いて、グローバル座標系におけるキャラクタΨの位置座標(xΨ,yΨ,zΨ)、向き座標(aΨ,bΨ,cΨ)を使用して、次式により画面上の点(Xscr,Yscr)を得る。
【数16】
【0090】
(16)式によりポアンカレ円板上から、座標(0,0)を中心とする半径1の円上に、予め定められた範囲のみを抜き出し、画面として表示することができる。ここで、pend=sinh rend、qend=cosh rendであり、表示する範囲はグローバル座標系における中心点から、双曲平面上で半径rendに限るものとしている。もちろん、この半径は任意に値を設定することができ、表示する範囲を自由に設定することができる。
【0091】
以上に示した実施形態によれば、ゲームが行われている空間のうち、広い範囲を画面としてディスプレイ上に表示することが可能になるため、複数のプレイヤーが操作するキャラクタの全てを同時に視認することが可能になる。このときそれぞれの画面には自キャラクタを中心とするポアンカレ円板モデルを使用しているため、自キャラクタの近くの状況は詳細に知ることができる。画面として表示する範囲を双曲平面上のある円の中に限った場合は、双曲平面上の円はポアンカレ円板モデル上でも円として表されることを利用し、ディスプレイ上の円形の領域を、画面として各プレイヤーに提示することにより、全てのプレイヤーが双曲平面上の同一の範囲のみを視認することができ、不公平が生じない。
【0092】
また、オブジェクトの衝突判定領域を、複雑な形状に設定した上で衝突判定が可能なため、従来、ユークリッド平面上で行われていた様々なジャンルのゲームを、双曲平面上で行うことができる。
【0093】
また、上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述した実施形態のゲーム装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フレキシブルディスク、ハードディスクなど)、光ディスク(CD−ROM、CD−R、CD−RW、DVD−ROM、DVD±R、DVD±RWなど)、半導体メモリ、又はこれに類する記録媒体に記録される。コンピュータまたは組み込みシステムが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をCPUで実行させれば、上述した実施形態のゲーム装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合又は読み込む場合はネットワークを通じて取得又は読み込んでもよい。
また、記憶媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワーク等のMW(ミドルウェア)等が本実施形態を実現するための各処理の一部を実行してもよい。
さらに、本願発明における記憶媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、LANやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本発明における記憶媒体に含まれ、媒体の構成は何れの構成であってもよい。
【0094】
なお、本願発明におけるコンピュータまたは組み込みシステムは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。
また、本願発明の実施形態におけるコンピュータとは、ゲーム専用機に限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の実施形態における機能を実現することが可能な機器、装置を総称している。
【0095】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、サーバをクライアントのうちの1つの筐体内に設置し、そのクライアントとCPUやその他の機器を共有してもよい。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【0096】
【図1】双曲平面の一例を示す図。
【図2】二葉双曲面の一例を示す図。
【図3】一葉双曲面の一例を示す図。
【図4】(a)は実施形態のゲーム装置による表示の一例を示す図、(b)は従来のユークリッド平面上のゲームによる表示の一例を示す図。
【図5】実施形態のゲーム装置の概略とデータの流れの概要を示す図。
【図6】実施形態のゲーム装置のブロック図。
【図7】図6のサーバの動作の一例を示すフローチャート。
【図8】図6のクライアントの動作の一例を示すフローチャート。
【図9】(a)はオブジェクトの位置と向きの入力変数を示す図、(b)はオブジェクトの頂点の入力変数を示す図。
【図10】多角形の衝突判定領域を持つオブジェクトの衝突判定の概要を示す図。
【図11】多角形の衝突判定領域を持つオブジェクトのデータ構造を示す図。
【図12】多角形の衝突判定領域を持つオブジェクトの衝突判定の一例を示すフローチャート。
【符号の説明】
【0097】
501・・・サーバ、502、503・・・クライアント、601、611・・・CPU、602、612・・・プログラム記録部、603・・・データ更新部、604、614・・・I/Oポート、613・・・データ記録部、615・・・GPU、616・・・入力部、617・・・出力部。
【技術分野】
【0001】
本発明は、コンピュータを使用したゲーム装置、方法およびプログラムに関する。
【背景技術】
【0002】
コンピュータを使用したゲームには、ユークリッド平面上でゲームを行ういわゆる2次元ゲームと、3次元ユークリッド空間上でゲームを行ういわゆる3次元ゲームとがある。いずれのゲームでも、プレイヤーは、ゲーム装置に付属のコントローラを用いて、ゲームに登場する1つのキャラクタを操作する。コントローラは、通常、前後左右など、2次元の方向を入力可能な方向入力装置を備えている。前記の2次元ゲームでは、キャラクタの移動範囲が2次元に限定されるため、プレイヤーがコントローラの方向入力装置を介して入力した方向と、キャラクタの移動方向を一致させることができる。このため直観的な操作が可能となり、初心者でも操作しやすい特徴がある。3次元ゲームでは、キャラクタを3次元空間上で動かすために、操作方法が複雑になるという欠点がある。
【0003】
従来の2次元ゲームのように、ユークリッド平面上でゲームを行い、その様子を一定の縮尺で、ユークリッド平面で構成されるディスプレイ上の画面に表示した場合、ゲームが行われる空間のうち、画面の外にはみ出た範囲をプレイヤーは視認することができない。このため、画面の外の範囲にゲームを進める上で必要な情報が存在しても、プレイヤーはこの情報に気づくことはない。これを解決するために、より広い範囲を表示するために画面に表示する際の縮尺を小さくすると、全てのオブジェクトが小さく表示されてしまう。その結果、プレイヤーが操作するキャラクタの詳細な形状などの重要な情報を得ることができなくなったり、ゲームのスピード感が失われるという問題がある。異なる解決手法として、ディスプレイ上に大きな縮尺のメイン画面と小さな縮尺のサブ画面を同時に表示する手法もある。しかし、プレイヤーは2つの画面を交互に見る必要が生じ、ゲームへの集中力が削がれるという問題がある。
【0004】
また、コンピュータを使用したゲームには、複数のプレイヤーで技量を競う、いわゆる対戦型と呼ばれるゲーム形式があり、対戦などの目的で、2次元ゲームに、複数のプレイヤーが同時に参加することがある。この場合、各プレイヤーが操作する全てのキャラクタを、同時に画面に表示しなければならないため、個々のキャラクタの移動範囲が制限される。各プレイヤーに個別の画面を提示すれば、それぞれの画面を別々にスクロールさせることにより、広い移動範囲を確保することもできる。しかし、他のプレイヤーが操作するキャラクタが画面の外に位置する場合、このキャラクタを視認できないことから不具合が起こる。例えば、画面の外から攻撃を受けるという理不尽な事態が発生する。また、この状態では、異なるプレイヤーに提示する画面の間で表示される範囲が異なるため、あるプレイヤーが視認できるオブジェクトが別のプレイヤーには見えなくなる不公平も生じる。
【0005】
対戦型の2次元ゲームにおいても、ゲームが行われる空間の、画面に表示する際の縮尺を小さくすることにより、全てのキャラクタを表示することが可能になる。しかし、全てのオブジェクトが小さく表示されることになり、ゲームでのスピード感を損ないプレイヤーを満足させない原因となってしまう。
【0006】
また、3次元ゲームでは、通常、近くのオブジェクトが大きく、遠くのオブジェクトが小さく表示されるが、自キャラクタの背後が死角となって画面では見えないという欠点が存在する。
【0007】
上記のゲームはユークリッド空間上で行われている。ユークリッド空間は通常人間が生活する上で常識的な感覚で理解できる空間であるが、現実世界を記述するためにユークリッド空間ではない非ユークリッド空間を必要とする場合もある。例えば、重力を記述するためには非ユークリッド空間であるリーマン空間は必須である。
【0008】
非ユークリッド空間に含まれる双曲平面を利用した表示手法がある。複数の文字列を、似た属性を持つものが近くなるように双曲平面上に配置し、ポアンカレ円板上に表す(例えば、非特許文献1参照)。この場合、円板の中心は必要に応じて変更でき、文字列の大きさは円板上の場所に依存せず一定で、表示される向きも一定である。
【0009】
他に、複数の写真を、似た属性を持つものが近くなるように双曲平面上に配置し、ポアンカレ円板上に表す手法もある(例えば、非特許文献2参照)。この場合、円板の中心は必要に応じて変更でき、写真の大きさはポアンカレ円板上の場所に依存して拡大・縮小されるが、表示される向きは傾いたりせず一定である。
【非特許文献1】J. A. Walter and H. Ritter, “On Interactive Visualization of High-dimensional Data using the Hyperbolic Plane,” Proceedings of the Eighth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp. 123-132, 2002.
【非特許文献2】J. A. Walter, D. Wessling, K. Essig and H. Ritter, “Interactive Hyperbolic Image Browsing - Towards an Integrated Multimedia Navigator,” Proceedings of the Seventh International Workshop on Multimedia Data Mining in conjunction with KDD 2006, pp. 101-108, 2006.
【発明の開示】
【発明が解決しようとする課題】
【0010】
上述のように双曲平面を利用した表示手法はあるが、ゲームでの表示に双曲平面を利用する技術はない。
また、現在のゲーム装置では、上述したように、以下のような問題がある。プレイヤーが操作するキャラクタの詳細な形状などの重要な情報を得ることができなくなったり、ゲームのスピード感が失われる。また、他のプレイヤーが操作するキャラクタが画面の外に位置する場合、このキャラクタを視認できないことから不具合が起こる。異なるプレイヤーに提示される画面の間で表示される範囲が異なるため、あるプレイヤーが視認できるオブジェクトが別のプレイヤーには見えなくなる不公平が生じる。3次元ゲームでは、背後が見えない上、自キャラクタを直観的に操作することが難しい。
【0011】
この発明は、上述した事情を考慮してなされたものであり、プレイヤーが直観的に操作でき、ゲームが行われる空間上の広い範囲を視認すると同時に操作するキャラクタの近くの状況を詳細に知ることが可能な、2次元ゲームを実現するゲーム装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上述の課題を解決するため、本発明のゲーム装置は、サーバ装置とこのサーバ装置と通信する1以上のクライアント装置とを含むゲーム装置であって、
前記サーバ装置は、ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第1記憶手段を具備し、
前記クライアント装置は、前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段を具備し、
前記サーバ装置は、すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第1取得手段と、前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第1記憶手段に記憶させる設定手段と、前記第1記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、をさらに具備し、
前記クライアント装置は、前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得する第2取得手段と、前記第2取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第1変換手段と、前記各オブジェクトの形状を記憶する第2記憶手段と、前記第1変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第2記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第2変換手段と、前記第2変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段と、をさらに具備することを特徴とする。
【発明の効果】
【0013】
本発明のゲーム装置、方法およびプログラムによれば、プレイヤーに、そのプレイヤーが操作するキャラクタの近くの詳細な状況を提示しつつ、ゲームが行われる空間上の広い範囲を提示することができる。このとき、従来の2次元ゲームが持つものと同様の、直観的な操作性を確保することができる。
【発明を実施するための最良の形態】
【0014】
以下、図面を参照しながら本発明の実施形態に係るゲーム装置、方法およびプログラムについて詳細に説明する。なお、以下の実施形態中では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
まず、本実施形態の概要を説明する。
本実施形態のゲーム装置は、ゲームが非ユークリッド空間である双曲平面上で行われるように双曲面モデルを使用してオブジェクト、背景を制御する。
ここで、双曲平面は、2次元双曲空間とも言い、球面などと同じく、曲面の一種である(例えば、河野俊丈:曲面の幾何構造とモジュライ、日本評論社、pp.10−13、1997参照)。双曲平面の一例を図1に示す。双曲面モデルは、通常は、3次元ユークリッド空間上の二葉双曲面上に表したモデルを示すが(例えば、谷口雅彦、奥村善英:双曲幾何学への招待−複素数で視る−、培風館、pp.85−86、1996参照)、本実施形態では、双曲平面上のオブジェクトの向きを一葉双曲面上に表すことも含む。このモデルでは、後述する、オブジェクトの移動、ローカル変換などの計算が容易になる特徴がある。二葉双曲面と一葉双曲面の一例をそれぞれ図2、図3に示す。
【0015】
なお、双曲面モデルを用いたオブジェクト、背景の制御方法は、実施形態の一例であり、他の方法を用いても本発明の実施は可能である。例えば、オブジェクトの位置を極座標で表し、双曲平面上の余弦定理を用いてオブジェクトを移動させることもできる。
【0016】
本実施形態では、背景として、画面を飾るために1枚の大きなラスタ画像を貼り付けることはせず、小さな画像を複数配置して背景とする。この小さな画像を配置する際に必要な位置および向きのデータをまとめたものを背景要素と呼ぶ。背景要素は、画面に表示される際に貼り付けられるテクスチャに関連付けられる。
オブジェクトは、ゲームの中で互いに干渉する物体を示し、位置、向き、および、衝突判定領域を定めるデータを有する。オブジェクトは、画面に表示される際に貼り付けるテクスチャに関連付けられる。なお、後述のキャラクタはオブジェクトに含まれる。
キャラクタは、オブジェクトのうち、複雑な思考ルーチンに挙動を操作されるものを示す。すなわち、本実施形態では、プレイヤーが操作するオブジェクトと、コンピュータが操作するオブジェクトがキャラクタに対応する。
【0017】
本実施形態のゲーム装置は、ゲームが行われている双曲平面を、各プレイヤーが操作するキャラクタを中心としたポアンカレ円板モデル上に写し、各円板のすべて、または一部分を画面として各プレイヤーに提示する。
ここで、ポアンカレ円板モデルは、双曲平面をユークリッド平面上に表したモデルであり、ポアンカレ円板上に写された図形は元の双曲平面上の図形と比較して以下の特徴がある(例えば、河野俊丈:曲面の幾何構造とモジュライ、日本評論社、pp10−13、1997参照)。
特徴1 中心から離れるにつれ縮尺が小さくなる
特徴2 全ての点で角が正しく表される
特徴3 中心からの方位が正しく表される
特徴4 双曲平面上の円がこのモデルでも円として表される
これらの特徴により、以下の利点を生む。
【0018】
特徴1により、ゲームが行われる空間のうちの広い範囲を画面に提示しつつ、自キャラクタの近くの詳細な状況を提示することが可能になる。このことについて図4(a)、図4(b)を参照して説明する。図4(a)は本実施形態のゲーム装置による表示であり、図4(b)は従来のゲーム装置によるユークリッド平面上のゲームによる表示である。図4(a)では、自キャラクタ、近くのオブジェクト、および、背景を大きく表示しつつ、広い範囲が提示されている。多くのコンピュータゲームでは、プレイヤーは自キャラクタ近くの状況は詳細に知る必要があるが、遠くの状況については詳細に知る必要はない。特徴1により、1枚の連続した画面から、自キャラクタ近くの詳細な状況を知ると同時に、従来のゲームでは画面の外にはみ出すような遠くの状況を大まかに知ることができる。近くのオブジェクトが大きく、遠くのオブジェクトが小さく表示されるという点では、3次元ゲームも同様だが、3次元ゲームでは自キャラクタの背後が死角になるという欠点がある。これに対し、本実施形態のゲーム装置による表示では背後も表示できる。
【0019】
特徴2により、各オブジェクトは、局所的にはその形状を歪めることなく画面に表示される。仮に、ゲームをユークリッド平面上で行い、その様子を、ある点から離れるにつれて縮尺が小さくなるように、別のユークリッド平面からなる画面に写像した場合は、このような効果は得られない。オブジェクトが大きく歪んで表示されることになり、プレイヤーがオブジェクトの種類を見誤る原因となる。
【0020】
特徴3により、プレイヤーは、自キャラクタ以外のオブジェクトが自キャラクタに向かっているか否かを容易に判断することができる。例えば、シューティングゲームにおいて、プレイヤーは敵機や敵の弾丸が自機に向かってくるか否かを直観的に判断することができる。また、コントローラの方向入力装置の入力方向と、画面上の自キャラクタ移動方向を一致させることができ、直観的な操作が可能になる。
特徴4により、全てのプレイヤーに双曲平面上の同一の範囲を提示することが可能になり、対戦するプレイヤー間に有利不利を生じない。
【0021】
次に、本実施形態のゲーム装置について図5を参照して説明する。
本実施形態のゲーム装置は、一例として、図5に示すように、サーバクライアント型の装置を使用して行う。サーバ501は、オブジェクトに関するデータのうち、グローバル座標系における配置を定める位置と向き、衝突判定領域を定めるデータ、オブジェクトの移動の速さ、および、オブジェクトが回転する際の角速度を記憶している。各クライアント502、503は、背景要素の、グローバル座標系における配置を定める位置および向きと、背景要素およびオブジェクトの形状を定める頂点データを記憶している。
【0022】
サーバ501は、オブジェクトの位置と向きをフレームごとに更新する。同時に衝突判定を行い、衝突で消滅すべきオブジェクトを削除し、生成すべきオブジェクトを新規作成する。そして、サーバ501は、各クライアントへ全オブジェクトの位置と向きとを無線または有線で送信する。
【0023】
クライアント502、503は、自キャラクタを中心とするローカル座標系を設定し、サーバから送信されてきた全オブジェクトの位置と向き、およびクライアントが記憶する全背景要素の位置と向きとを、ローカル変換し、これらデータと、背景要素の頂点データおよびオブジェクトの頂点データとを組み合わせて画面上に各背景要素と各オブジェクトとの形状を描画する。
【0024】
次に、本実施形態のゲーム装置の詳細について図6を参照して説明する。
本実施形態のゲーム装置は、サーバ501と少なくとも1つ以上のクライアント502を含む。サーバ501は、CPU601、プログラム記録部602、データ更新部603、I/Oポート604を含み、各クライアント502、503は、CPU611、プログラム記録部612、データ記録部613、I/Oポート614、GPU615、入力部616、出力部617を含む。また、サーバ501と各クライアント502、503とは、有線または無線により接続されている。接続は図6では600で示されている。
【0025】
接続600は、無線通信手段、有線通信手段、またはそれらを組み合わせたものによる、サーバとクライアントとの通信を可能にする手段であり、インターネット回線を含む。
【0026】
CPU601は、フレームごとに、データ更新部603に格納されているオブジェクトデータを入力として、プログラム記録部602に格納されているプログラムを使用して演算する。この演算により、フレームごとに、ゲームが行われる双曲平面上の全てのオブジェクトの位置と向きを算出し、また、各オブジェクトが別のオブジェクトと衝突したかを判定する。衝突判定は、例えば、各キャラクタが他のキャラクタに衝突したかを判定したり、各キャラクタが弾丸などのオブジェクトに当たったかを判定する。なお、CPU601は、高速な演算が必要なため、行列演算ユニットを備えたものであることが望ましい。
【0027】
プログラム記録部602は、CPU601が演算する際に使用するプログラムを記録している。プログラム記録部602は、フレームごとに、ゲームが行われる双曲平面上の全てのオブジェクトの位置と向きを算出し、オブジェクト同士の衝突を判定するためのプログラムを記録している。具体的なプログラムの内容については後に詳細に説明する。なお、プログラム記録部602は、ROMまたはRAMにより構成され、RAMの場合はプログラム記録部602が備えている他の記録媒体(例えば、ハードディスク)からプログラムをロードする。
【0028】
データ更新部603は、CPU601で計算されたフレームについて、各オブジェクトの位置と向き、各オブジェクトの衝突判定領域、オブジェクトの移動の速さ、および、オブジェクトが回転する際の角速度を記録している。データ更新部603が記憶しているデータは、フレームごとにCPU601が計算した結果に更新される。しかし、衝突判定領域、オブジェクトの移動の速さ、および、オブジェクトが回転する際の角速度は、これらの値をフレーム間で変化させない場合には、更新せず一定値でもよい。具体的なデータについての一例は後に詳細に説明する。なお、データ更新部603はRAMにより構成される。
【0029】
I/Oポート604は、CPU601が計算した、各オブジェクトの位置および向きを各クライアント502、503に送信する。また、I/Oポート604は、各クライアント502、503が入力部616を使用して操作した内容を取得する。
【0030】
CPU611は、データ記録部613に記録された、全ての背景要素のグローバル座標系における位置および向きと、I/Oポート614を介して受信した、全てのオブジェクトのグローバル座標系における位置および向きとを、プログラム記録部612に格納されているプログラムを使用して、ローカル座標系における位置および向きに座標変換する。なお、CPU611は、高速な演算が必要なため、行列演算ユニットを備えたものであることが望ましい。
【0031】
プログラム記録部612は、グローバル座標系における位置および向きを、各クライアント502、503の自キャラクタを中心とするローカル座標系における位置および向きに座標変換するためのプログラムを記録している。なお、プログラム記録部612は、ROMまたはRAMにより構成され、RAMの場合はプログラム記録部612が備えている他の記録媒体(例えば、ハードディスク)からプログラムをロードする。また、接続600を介してサーバ501からプログラムをダウンロードしてもよい。
【0032】
データ記録部613は、全ての背景要素の位置、向き、頂点、その背景要素に貼り付けるテクスチャを関連付けて背景データとして記録している。他に、データ記録部613は、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャを関連付けてオブジェクトデータとして記録している。なお、データ記録部613はRAMにより構成される。
【0033】
I/Oポート614は、各オブジェクトのグローバル座標系における位置および向きをサーバ501から取得したり、各クライアント502、503が入力部616を使用して操作した内容をサーバ501へ送信する。
【0034】
GPU615は、CPU611が計算したローカル座標系における全ての背景要素の位置および向きと、ローカル座標系における全てのオブジェクトの位置および向きとを使用して、データ記録部613に記録されている背景要素とオブジェクトの頂点を、各クライアント502、503の自キャラクタを中心とするローカル座標系における頂点へモデリング変換する。その後、GPU615は、モデリング変換された全ての背景要素と全てのオブジェクトの頂点をポアンカレ円板モデルに写す。さらに、GPU615は、ゲームが行われている、予め定められた範囲のみをポアンカレ円板モデルから抜き出す。最後に、GPU615は、全ての背景要素と全てのオブジェクトの頂点に沿って、各背景要素と各オブジェクトに対応するテクスチャを貼り付け、この内容を出力部617に出力する。また、GPU615は、テクスチャを用いずに、オブジェクトを直線で構成されるベクタ画像で描いてもよい。なお、ここではCPU611とGPU615と分けているが、GPU615を設けず、GPU615の機能を全てCPU611に代行させることができる。
【0035】
入力部616は、各クライアント502、503が自キャラクタを動かしたり、シューティングゲームであれば弾丸を発射したりするためのコントローラである。
出力部617は、GPU615が作成した画像を表示するディスプレイである。
【0036】
次に、サーバ501の動作の一例について図7を参照して説明する。
以下のステップS701からステップS703は初期設定である。背景、オブジェクトの位置と向きを設定する(ステップS701)。これらの設定は、ゲームが開始される前に、予め初期設定として定まっているデータがプログラム記録部602またはデータ更新部603に記憶されている。ステップS701ではCPU601がこの初期設定を読み込む。
【0037】
ステップS702とステップS703は、上記のように、クライアント502、503がデータ記録部613に背景データとオブジェクトデータを持っている場合には必要ない。クライアント502、503が背景データとオブジェクトデータを持っていない場合には、サーバ501が背景データとオブジェクトデータをデータ更新部603等のメモリに有していて、CPU601がこのメモリから背景データとオブジェクトデータとをクライアント502、503に送信する。すなわち、サーバ501が、全ての背景要素の頂点と、各背景要素に貼り付けるテクスチャと、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャとをクライアント502、503へ送信する(ステップS702)。サーバ501が、全ての背景要素の位置、向きをクライアント502、503へ送信する(ステップS703)。
【0038】
以下ステップS704からステップS711は、1つのフレームについてサーバ501が行う処理である。換言すれば、フレームごとにサーバ501はステップS704からステップS711の処理を行う。
【0039】
CPU601は、フレームごとに、データ更新部603に格納されているオブジェクトデータのうち、位置と向きをI/Oポート604を経由してクライアント502、503に送信する(ステップS704)。
【0040】
サーバ501は、例えば、クライアント502、503のいずれかからのゲーム終了の指示があった場合、ゲームで予め決められている時間が経過した場合、または、ゲームで予め決められている終了ルールに合致した場合には、CPU601がゲームを終了すると判定する(ステップS705)。終了ルールとは、例えば、2人で対戦している場合にはどちらか一方の所有している機が全滅した場合ゲームを終了する等、である。
【0041】
サーバ501がゲームを終了すると判定した場合には、クライアント502、503にゲームを終了する旨の信号を送信し、ゲームを終了する(ステップS706)。
【0042】
一方、サーバ501がゲームを終了しないと判定した場合には、I/Oポート604がクライアント502、503から入力部616で入力された指示を受信し、CPU601がこれらの指示を受け取る(ステップS707)。この指示には、例えば、キャラクタを動かす、キャラクタを回転させる、があり、これら指示に基づきデータ更新部603に記憶された各キャラクタの移動の速さおよび角速度が更新される。CPU601は、データ更新部603を入力しプログラム記録部602のプログラムを使用して、オブジェクトを移動、回転させる(ステップS708)。このとき、データ更新部603に記憶された各オブジェクトの位置および向きが更新される。CPU601は、データ更新部603のデータを入力しプログラム記録部602のプログラムを使用して、オブジェクトの衝突、タイマーイベントが発生したか否かを判定する(ステップS709)。タイマーイベントには、例えば、キャラクタが衝突して爆炎が発生し、一定時間後に爆炎が消える等、がある。
【0043】
ステップS709で衝突、タイマーイベントが発生しなかったと判定された場合には、ステップS704に戻る。ステップS709で衝突、タイマーイベントが発生したと判定された場合には、衝突、タイマーイベントが発生したオブジェクトに対応するオブジェクトデータをデータ更新部603から削除する(ステップS710)。CPU601は、削除されたオブジェクトの代わりになるオブジェクトのオブジェクトデータ(位置、向き、衝突判定領域、移動の速さ、角速度)を生成し、データ更新部603に書き込む(ステップS711)。
【0044】
次に、各クライアント502、503の動作の一例について図8を参照して説明する。
I/Oポート614が、サーバ501から、全ての背景要素の頂点と、各要素に貼り付けるテクスチャと、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャとを受信し、これらのデータをデータ記録部613に格納する(ステップS801)。I/Oポート614が、サーバ501から、全ての背景要素の位置、向きを受信し、これらのデータをデータ記録部613に格納する(ステップS802)。これらのステップS801、S802は、予めデータ記録部613が、全ての背景要素それぞれの位置、向き、頂点、その要素に貼り付けるテクスチャを関連付けて背景データとして記録して、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャを関連付けてオブジェクトデータとして記録していれば、不要である。
【0045】
I/Oポート614が、サーバ501から、全てのオブジェクトの位置、向きを示すオブジェクトデータを受信する(ステップS803)。CPU611は、プログラム記録部612に格納されているプログラムを使用して、サーバ501からステップS802で受信した全ての背景要素の位置、向きをローカル変換すると同時に、ステップS803で受信した全てのオブジェクトの位置、向きをローカル変換する(ステップS804)。GPU615は、データ記録部613に記録されている背景要素とオブジェクトの頂点を、各クライアント502、503の自キャラクタを中心とするローカル座標系における頂点へモデリング変換する(ステップS805)。GPU615は、モデリング変換された全ての背景要素と全てのオブジェクトの頂点をポアンカレ円板モデルに写す(ステップS806)。GPU615は、拡大、平行移動により、ゲームが行われている、予め定められた範囲のみをポアンカレ円板モデルから抜き出す(ステップS807)。GPU615は、全ての背景要素と全てのオブジェクトの頂点に沿って、各背景要素と各オブジェクト対応するテクスチャを貼り付ける(ステップS808)。CPU611が、I/Oポート614を経由してサーバ501からゲーム終了の信号を受信したか否か判定する(ステップS809)。ゲーム終了の信号を受信したと判定した場合にはゲームを終了し、ゲーム終了の信号を受信しなかったと判定した場合には入力部616により入力されたプレイヤーの指示をI/Oポート614を経由してサーバ501に送信し、ステップS803に戻る(ステップS810)。
【0046】
次に、CPU601、CPU611、GPU615が行う演算について詳細に説明する。
一般に、m次元(m:自然数)双曲空間上のオブジェクトの位置は、最低m個の実数変数で表すことができるが、m+1個の実数変数を使用することでオブジェクトの移動などを、行列を使用した高速演算で行うことが可能になることが知られている(例えば、J. Weeks, “Real-Time Rendering in Curved Spaces,” IEEE Computer Graphics and Applications, pp. 90-99, 2002.を参照)。2次元双曲空間である双曲平面の場合は、本実施形態のように、双曲面モデルを用いる方法がこの方法に相当する。
【0047】
本実施形態のゲーム装置で行うゲームでは、全オブジェクトはガウス曲率K=−1の2次元の双曲平面上に配置される。なお、本実施形態ではガウス曲率をK=−1に限っているが、モデルを拡大・縮小することで他の負の定曲率を持つ空間にも対応できる。本実施形態では、計算機内部で双曲面モデルを用いるが、その際用いる変数を直接設定するのは難しい。そこで初期設定時には極座標などの理解し易い変数を入力し、それを元に、計算機内部用の変数を算出する。表1に、例としてあるオブジェクトΦの入力用の変数と計算機内部用の変数を示す。この例では、Φは円形の衝突判定領域を有するものとしている。
【表1】
【0048】
(オブジェクトの配置)
サーバ501のデータ更新部603には、ゲームに登場する全てのオブジェクトの、位置および向きのデータが格納される。あるオブジェクトΦの位置のデータは、(xΦ,yΦ,zΦ)と3変数を使用して表され、データ更新部603に格納される。
【0049】
初期設定時に、オブジェクトデータの入力値として、Φの位置が図9(a)に示すように極座標(dΦ,δΦ)で与えられた場合には、
【数1】
【0050】
とすることでこれらの値を求めることができる。このとき(xΦ,yΦ,zΦ)は3次元ユークリッド空間上の二葉双曲面z2=x2+y2+1上の点であり、オブジェクトの中心となる点を一意に定める。なお、本実施形態の双曲線モデル上で双曲平面上の点を定める二葉双曲面上の座標を「位置座標」と呼ぶ。
【0051】
また、Φの向きも3変数を用いて(aΦ,bΦ,cΦ)と表され、データ更新部603に格納される。初期設定時に、図9(a)のようにΦの向きが双曲平面上の角度θΦで入力された場合、(1)式で得られた値を用いて、
【数2】
【0052】
とすることでこれらの値を求めることができる。このとき(aΦ,bΦ,cΦ)は一葉双曲面z2=x2+y2−1上の点であり、オブジェクトの前後方向に伸びる測地線を一意に定める。なお、本実施形態の双曲線モデル上で双曲平面上の測地線を定める一葉双曲面上の座標を「向き座標」と呼ぶ。
【0053】
1つのオブジェクトは位置を表すための1つの位置座標と向きを表すための1つの向き座標を持ち、双曲平面上で、この向き座標が定める測地線はこの位置座標が定める点を通るものとする。このとき、位置座標(xΦ,yΦ,zΦ)と向き座標(aΦ,bΦ,cΦ)との間にはcΦzΦ=aΦxΦ+bΦyΦの関係が成り立ち、後述するオブジェクトの移動での変換、オブジェクトの回転での変換、ローカル座標への変換を経てもこの関係は保存される。
【0054】
各クライアントのデータ記録部613に格納される全ての背景要素の位置と向きを表すデータも、オブジェクトの場合と同様に設定する。
【0055】
(オブジェクトの移動)
サーバ501のデータ更新部603のオブジェクトデータを入力として、プログラム記録部602が格納しているプログラムを使用してCPU601が計算するオブジェクトの移動について説明する。
オブジェクトΦが、その向き座標が定める測地線に沿って移動する場合、移動する前の位置座標を(xΦ0,yΦ0,zΦ0)、移動後の位置座標を(xΦ1,yΦ1,zΦ1)とする。移動後の位置座標は、オブジェクトΦの向き座標(aΦ,bΦ,cΦ)を使用して移動前の位置座標を変換することによって得られる。
【数3】
【0056】
ここで、eとfは移動の速さを表す変数であり、双曲面上のオブジェクトの速さvからe=sinh v、f=cosh vと算出される。速さが一定の場合はこれらの値を予め求めておき、プログラム記録部602に含まれるプログラムまたはデータ更新部603に含めていてもよい。また、オブジェクトが、同一の測地線に沿って移動を繰り返す場合は、1回目の変換に用いた行列をデータ更新部603に記憶させ、2回目以降の変換時に再度用いることで、計算量を抑えることができる。
【0057】
(オブジェクトの回転)
サーバ501のデータ更新部603のオブジェクトデータを入力として、プログラム記録部602が格納しているプログラムを使用してCPU601が計算するオブジェクトの回転について説明する。
オブジェクトΦが、その位置座標が定める点を中心として回転する場合、回転する以前の向き座標を(aΦ0,bΦ0,cΦ0)、回転後の向き座標を(aΦ1,bΦ1,cΦ1)とする。回転後の向き座標は、オブジェクトΦの位置座標(xΦ,yΦ,zΦ)を使用して回転以前の向き座標を変換することによって得られる。
【数4】
【0058】
ここで、gとhは角速度を表す変数であり、双曲平面上の角速度ωとg=sin ω、h=cos ωの関係にある。角速度が一定ならばこれらの値を予め求めておき、プログラム記録部602に含まれるプログラムまたはデータ更新部603に含めていてもよい。また、オブジェクトが、同一の点を中心とした回転を繰り返す場合は、1回目の変換に用いた行列をデータ更新部603に記憶させ、2回目以降の変換時に再度用いることで、計算量を抑えることができる。また、角度ωの回転、距離vの移動、角度−ωの回転を1フレーム内で行うことで、オブジェクトを任意方向へ移動させることが可能になる。これをプレイヤーが操作するキャラクタに適用すれば、コントローラの方向入力装置の入力方向と、キャラクタの移動方向を一致させることができる。
【0059】
(衝突判定)
サーバ501のデータ更新部603のオブジェクトデータを入力として、プログラム記録部602が格納しているプログラムを使用してCPU601が計算するオブジェクトが別のオブジェクトに衝突するかを判定する手法について説明する。
衝突判定を行う2つのオブジェクトの衝突判定領域を、双曲平面上の円で定める場合、衝突判定領域のデータとして、円の半径を表す、2変数からなる配列(pΦ,qΦ)を、データ更新部603に格納する。初期設定時に、半径が双曲平面上の距離rΦとして入力された場合、
【数5】
【0060】
とすることでこれらの値が得られる。オブジェクトΦと、位置座標が(xΨ,yΨ,zΨ)であり、衝突判定領域データとして半径を表す配列(pΨ,qΨ)を持つ、Φと異なるオブジェクトΨとが衝突する場合に成立する式は次のようになる。
【数6】
【0061】
この式は、ユークリッド空間での場合の(xEΦ−xEΨ)2+(yEΦ−yEΨ)2≦(rΦ+rΨ)2に対応する。これは、ユークリッド空間での、位置(xEΦ,yEΦ)と半径rΦのオブジェクトと位置(xEΨ,yEΨ)と半径rΨのオブジェクトが衝突する場合の式である。ここでは、各オブジェクトの衝突判定領域が1つの円で定められるものとして衝突判定を行ったが、各オブジェクトの衝突判定領域を複数の円で定めてもよい。その場合は、予め各オブジェクトを中心とするローカル座標系に円の中心座標を定めておき、それらをグローバル変換することで個々の円の衝突判定を行う。
【0062】
また、衝突判定領域が、測地線に囲まれた、双曲平面上の多角形で構成されるオブジェクト同士の衝突判定を行うこともできる。
【0063】
多角形で衝突判定領域が定められるオブジェクトの衝突判定について図10を参照して説明する。
第1オブジェクト1000の衝突判定領域は、点1001、1002、1003、1004を頂点とする双曲平面上の多角形で定められ、第2オブジェクト1050の衝突判定領域は、点1051、1052、1053を頂点とする双曲平面上の多角形で定められる。
【0064】
第1オブジェクトの多角形を構成する線分のいずれかと、第2オブジェクトの多角形を構成する線分のいずれかが交差する場合に衝突判定の結果は真となり、それ以外の場合は偽となる。
【0065】
片方の多角形が、もう片方の多角形に内包される場合は衝突しているにもかかわらず、衝突判定の結果は偽となるが、オブジェクトの移動がフレームレートに対して十分遅い場合はこのようなことは起こらないため、ここでは考えない。
【0066】
図10では点1001と点1002を結ぶ線分と、点1051と点1052を結ぶ線分が交差すると同時に、点1001と点1002を結ぶ線分と、点1053と点1051を結ぶ線分が交差しており、衝突判定の結果は真となる。
【0067】
衝突判定のための演算は、すべてサーバの中で行う。サーバ内のデータ更新部603には、図11に示すようにすべてのオブジェクトの位置座標と向き座標と共に、衝突判定領域を定める多角形の、頂点のデータが収められている。
【0068】
あるオブジェクトΦのm個目の頂点のデータは、Φを中心とするローカル座標系における位置座標(xΦm,yΦm,zΦm)で構成される。
【0069】
次に、多角形で衝突判定領域が定められるオブジェクトの衝突判定の一例について図12を参照して説明する。図12では、mは第1オブジェクトに所属する頂点の番号を、Mは頂点の総数を表す。また、nは第2オブジェクトに所属する頂点の番号を、Nは頂点の総数を表す。
【0070】
2つのオブジェクトに所属するすべての頂点の位置座標をグローバル変換する(ステップS1201)。例えばある頂点の位置座標が(xΦm,yΦm,zΦm)である場合は、その頂点が所属するオブジェクトの位置座標(xΦ,yΦ,zΦ)と向き座標(aΦ,bΦ,cΦ)から成る行列を用いて次式の(7)式のように変換し、グローバル座標系における頂点の位置座標(xΦmG,yΦmG,zΦmG)を得る。
【数7】
【0071】
次に、n=1と設定し(ステップS1202)、m=1と設定し(ステップS1203)、ステップS1204に進む。ステップS1204では、多角形を構成する線分の交差判定を行う。すなわち、第1オブジェクトの線分mと第2オブジェクトの線分nが交差するかどうかを判定する(ステップS1204)。図12の例ではn=m=1から交差判定が開始される。第1オブジェクトの多角形を構成するm番目の線分は、グローバル変換後の位置座標(xΦmG,yΦmG,zΦmG)のm番目の頂点と、グローバル変換後の位置座標(xΦm+1G,yΦm+1G,zΦm+1G)のm+1番目の頂点に終端される。第2オブジェクトの多角形を構成するn番目の線分は、グローバル変換後の位置座標(xΨnG,yΨnG,zΨnG)のn番目の頂点と、グローバル変換後の位置座標(xΨn+1G,yΨn+1G,zΨn+1G)のn+1番目の頂点に終端される。次式の(8)式と(9)式の双方を満たすとき、これら2つの線分は交差していると判定できる。
【数8】
【0072】
【数9】
【0073】
ただし、M+1番目の頂点とは1番目の頂点のことを指し、N+1番目の頂点とは1番目の頂点のことを指す。また(8)式と(9)式では、|A|はAの行列式を示す。
【0074】
ステップS1204で交差すると判定された場合には、衝突判定は真であるとし、ステップS1204で交差しないと判定された場合には、ステップS1205に進む。m=Mであるかどうかを判定し(ステップS1205)、m=Mである場合にはステップS1207に進み、一方、n=Mでない場合にはステップS1206に進む。mにm+1を代入してステップS1204に戻る(ステップS1206)。n=Nであるかどうかを判定し(ステップS1207)、n=Nである場合には衝突判定は偽であるとし、n=Nでない場合にはステップS1208に進む。nにn+1を代入してステップS1203に戻る(ステップS1208)。
【0075】
第1オブジェクトの線分と第2オブジェクトの線分の、すべての組み合わせについて交差を判定し、1組でも交差していた時点で衝突判定の結果を真とし終了する。交差する組が1つもない場合は結果を偽とし終了する。
【0076】
シューティングゲーム等では、レーザービームのように、その幅と比較して長さが極端に大きいオブジェクトと、他のオブジェクトのとの衝突判定を行わなければならない場合がある。
【0077】
位置座標が(xΦ,yΦ,zΦ)である、第1オブジェクトΦがあり、その衝突判定領域が、1つの、(xΦ,yΦ,zΦ)で定められる点を中心とする双曲平面上の円で定められ、その円の半径は双曲平面上の距離rΦであるとする。
【0078】
また、向き座標が(aΨ,bΨ,cΨ)である、第2オブジェクトΨがあり、その衝突判定領域が、1本の、(aΨ,bΨ,cΨ)で定められる測地線から、双曲平面上の距離wΨまでの領域を含む、ベルト状の領域であるとする。
【0079】
これら2つのオブジェクトは、(10)式を満たすときに衝突していると判定される。
【数10】
【0080】
ここでpΦ=sinh rΦ、qΦ=cosh rΦであり、uΨ=sinh wΨ、vΨ=cosh wΨである。
【0081】
(ローカル座標への変換)
各クライアント502、503のCPU611が、各クライアントに納められた背景データとサーバ501からのオブジェクトデータを入力として、プログラム記録部612が格納しているプログラムを使用してローカル座標に座標変換するための手法について説明する。
位置座標(xΦ,yΦ,zΦ)と向き座標(aΦ,bΦ,cΦ)はそれぞれグローバル座標系におけるオブジェクトΦの位置と向きを表す。これらを、キャラクタΨを中心とするローカル座標系における位置座標(xΦL,yΦL,zΦL)と向き座標(aΦL,bΦL,cΦL)に変換する。ともにΨの位置座標(xΨ,yΨ,zΨ)と向き座標(aΨ,bΨ,cΨ)の成分からなる同一の行列を使用して変換される。
【数11】
【0082】
【数12】
【0083】
他の全てのオブジェクトについても、また、Ψを操作するクライアントに納められた全ての背景要素についても、同一の行列を用いて位置座標と向き座標をローカル変換する。この変換を経ても、各背景要素および各オブジェクト間の、双曲平面上の位置と向きの関係は保たれる。
【0084】
(オブジェクト形状の再構成)
GPU615が、CPU611が計算したローカル座標系におけるオブジェクトの位置と向きを使用して、データ記録部613に記録されている背景要素とオブジェクトの形状を表す頂点を、各クライアントのキャラクタを中心とするローカル座標系へモデリング変換する手法について説明する。
【0085】
オブジェクトΦの形状を表す各頂点は、Φを中心とするローカル座標系における位置座標(xvn,yvn,zvn)で表され、データ記録部613に格納されている。初期設定時に、図9(b)に示すようにΦの形状を表す頂点が、例えば、極座標(dvn,δvn)で入力された場合、
【数13】
【0086】
としてこれらの値を得る。オブジェクトΦの形状をキャラクタΨを中心とするローカル座標系に再構成する場合、次式のようにΨを中心とするローカル座標系におけるΦの位置座標(xΦL,yΦL,zΦL)と向き座標(aΦL,bΦL,cΦL)の成分からなる行列を使用してΦの形状を表す頂点の位置座標(xvn,yvn,zvn)を変換し、Ψを中心とするローカル座標系におけるΦの形状を表す頂点の位置座標(xvnL,yvnL,zvnL)を得る。背景要素についても同様に計算する。
【数14】
【0087】
(画面描画)
GPU615が、ローカル座標に変換された全ての背景要素と全てのオブジェクトの頂点をポアンカレ円板モデルに写す。さらに、GPU615は、ゲームが行われている双曲平面上の、予め定められた範囲のみをポアンカレ円板モデルから抜き出すことについて説明する。
【0088】
キャラクタΨを操作するプレイヤーに提示する画面を描画する。まず、Ψを中心とするローカル座標系における位置座標(xvnL,yvnL,zvnL)で表される、ある頂点を次式でΨを中心とするポアンカレ円板上の点(X,Y)に写す。
【数15】
【0089】
続いて、グローバル座標系におけるキャラクタΨの位置座標(xΨ,yΨ,zΨ)、向き座標(aΨ,bΨ,cΨ)を使用して、次式により画面上の点(Xscr,Yscr)を得る。
【数16】
【0090】
(16)式によりポアンカレ円板上から、座標(0,0)を中心とする半径1の円上に、予め定められた範囲のみを抜き出し、画面として表示することができる。ここで、pend=sinh rend、qend=cosh rendであり、表示する範囲はグローバル座標系における中心点から、双曲平面上で半径rendに限るものとしている。もちろん、この半径は任意に値を設定することができ、表示する範囲を自由に設定することができる。
【0091】
以上に示した実施形態によれば、ゲームが行われている空間のうち、広い範囲を画面としてディスプレイ上に表示することが可能になるため、複数のプレイヤーが操作するキャラクタの全てを同時に視認することが可能になる。このときそれぞれの画面には自キャラクタを中心とするポアンカレ円板モデルを使用しているため、自キャラクタの近くの状況は詳細に知ることができる。画面として表示する範囲を双曲平面上のある円の中に限った場合は、双曲平面上の円はポアンカレ円板モデル上でも円として表されることを利用し、ディスプレイ上の円形の領域を、画面として各プレイヤーに提示することにより、全てのプレイヤーが双曲平面上の同一の範囲のみを視認することができ、不公平が生じない。
【0092】
また、オブジェクトの衝突判定領域を、複雑な形状に設定した上で衝突判定が可能なため、従来、ユークリッド平面上で行われていた様々なジャンルのゲームを、双曲平面上で行うことができる。
【0093】
また、上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述した実施形態のゲーム装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フレキシブルディスク、ハードディスクなど)、光ディスク(CD−ROM、CD−R、CD−RW、DVD−ROM、DVD±R、DVD±RWなど)、半導体メモリ、又はこれに類する記録媒体に記録される。コンピュータまたは組み込みシステムが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をCPUで実行させれば、上述した実施形態のゲーム装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合又は読み込む場合はネットワークを通じて取得又は読み込んでもよい。
また、記憶媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワーク等のMW(ミドルウェア)等が本実施形態を実現するための各処理の一部を実行してもよい。
さらに、本願発明における記憶媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、LANやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本発明における記憶媒体に含まれ、媒体の構成は何れの構成であってもよい。
【0094】
なお、本願発明におけるコンピュータまたは組み込みシステムは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。
また、本願発明の実施形態におけるコンピュータとは、ゲーム専用機に限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の実施形態における機能を実現することが可能な機器、装置を総称している。
【0095】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、サーバをクライアントのうちの1つの筐体内に設置し、そのクライアントとCPUやその他の機器を共有してもよい。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【0096】
【図1】双曲平面の一例を示す図。
【図2】二葉双曲面の一例を示す図。
【図3】一葉双曲面の一例を示す図。
【図4】(a)は実施形態のゲーム装置による表示の一例を示す図、(b)は従来のユークリッド平面上のゲームによる表示の一例を示す図。
【図5】実施形態のゲーム装置の概略とデータの流れの概要を示す図。
【図6】実施形態のゲーム装置のブロック図。
【図7】図6のサーバの動作の一例を示すフローチャート。
【図8】図6のクライアントの動作の一例を示すフローチャート。
【図9】(a)はオブジェクトの位置と向きの入力変数を示す図、(b)はオブジェクトの頂点の入力変数を示す図。
【図10】多角形の衝突判定領域を持つオブジェクトの衝突判定の概要を示す図。
【図11】多角形の衝突判定領域を持つオブジェクトのデータ構造を示す図。
【図12】多角形の衝突判定領域を持つオブジェクトの衝突判定の一例を示すフローチャート。
【符号の説明】
【0097】
501・・・サーバ、502、503・・・クライアント、601、611・・・CPU、602、612・・・プログラム記録部、603・・・データ更新部、604、614・・・I/Oポート、613・・・データ記録部、615・・・GPU、616・・・入力部、617・・・出力部。
【特許請求の範囲】
【請求項1】
サーバ装置とこのサーバ装置と通信する1以上のクライアント装置とを含むゲーム装置であって、
前記サーバ装置は、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第1記憶手段を具備し、
前記クライアント装置は、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段を具備し、
前記サーバ装置は、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第1取得手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第1記憶手段に記憶させる設定手段と、
前記第1記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、
をさらに具備し、
前記クライアント装置は、
前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得する第2取得手段と、
前記第2取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第1変換手段と、
前記各オブジェクトの形状を記憶する第2記憶手段と、
前記第1変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第2記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第2変換手段と、
前記第2変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段と、をさらに具備することを特徴とするゲーム装置。
【請求項2】
1以上のプレイヤーが操作するゲーム装置であって、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、衝突判定領域、および形状とのデータを記憶する記憶手段と、
前記オブジェクトのうちの各プレイヤーに操作される各キャラクタの移動指示および回転指示を受け付ける受付手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記記億手段に記憶させる設定手段と、
前記記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、
前記記憶手段によって記憶された複数のオブジェクトの位置および向きを、各プレイヤーに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第1変換手段と、
前記第1変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、各プレイヤーに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第2変換手段と、
前記第2変換手段によって得られた、複数のオブジェクトの形状を、プレイヤーごとに、ポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を、プレイヤーごとに、表示する表示手段と、を具備することを特徴とするゲーム装置。
【請求項3】
サーバ装置とこのサーバ装置と通信する1以上のクライアント装置とを含むゲーム装置でのゲーム方法であって、
前記サーバ装置では、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第1記憶手段を用意し、
前記クライアント装置では、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付け、
前記サーバ装置では、さらに、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得し、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第1記憶手段に記憶させ、
前記第1記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定し、
前記クライアント装置では、さらに、
前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得し、
前記取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換し、
前記各オブジェクトの形状を記憶する第2記憶手段を用意し、
前記座標変換によって得られた、複数のオブジェクトの位置および向きを使用して、前記第2記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換し、
前記変換によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写し、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示することを特徴とするゲーム方法。
【請求項4】
サーバ装置とこのサーバ装置と通信する1以上のクライアント装置とを含むゲーム装置で使用するプログラムであって、
前記サーバ装置では、
コンピュータを、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第1記憶手段として機能させ、
前記クライアント装置では、
コンピュータを、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段として機能させ、
前記サーバ装置では、さらに、
コンピュータを、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第1取得手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第1記憶手段に記憶させる設定手段と、
前記第1記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定する判定手段として機能させ、
前記クライアント装置では、さらに、
コンピュータを、
前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得する第2取得手段と、
前記第2取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第1変換手段と、
前記各オブジェクトの形状を記憶する第2記憶手段と、
前記第1変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第2記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第2変換手段と、
前記第2変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段として機能させるためのプログラム。
【請求項5】
1以上のクライアント装置と通信するサーバ装置であって、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第1記憶手段と、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第1取得手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第1記憶手段に記憶させる設定手段と、
前記第1記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、を具備することを特徴とするサーバ装置。
【請求項6】
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶するサーバ装置と通信する1以上のクライアント装置であって、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し移動および回転後の前記各キャラクタの位置および向きを設定し、前記各オブジェクトの位置と衝突判定領域とに応じて任意の2つのオブジェクトの間で衝突が発生したか否かを判定するサーバ装置から、前記複数のオブジェクトの位置および向きを取得する第2取得手段と、
前記第2取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第1変換手段と、
前記各オブジェクトの形状を記憶する第2記憶手段と、
前記第1変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第2記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第2変換手段と、
前記第2変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段と、を具備することを特徴とするクライアント装置。
【請求項1】
サーバ装置とこのサーバ装置と通信する1以上のクライアント装置とを含むゲーム装置であって、
前記サーバ装置は、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第1記憶手段を具備し、
前記クライアント装置は、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段を具備し、
前記サーバ装置は、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第1取得手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第1記憶手段に記憶させる設定手段と、
前記第1記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、
をさらに具備し、
前記クライアント装置は、
前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得する第2取得手段と、
前記第2取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第1変換手段と、
前記各オブジェクトの形状を記憶する第2記憶手段と、
前記第1変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第2記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第2変換手段と、
前記第2変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段と、をさらに具備することを特徴とするゲーム装置。
【請求項2】
1以上のプレイヤーが操作するゲーム装置であって、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、衝突判定領域、および形状とのデータを記憶する記憶手段と、
前記オブジェクトのうちの各プレイヤーに操作される各キャラクタの移動指示および回転指示を受け付ける受付手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記記億手段に記憶させる設定手段と、
前記記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、
前記記憶手段によって記憶された複数のオブジェクトの位置および向きを、各プレイヤーに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第1変換手段と、
前記第1変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、各プレイヤーに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第2変換手段と、
前記第2変換手段によって得られた、複数のオブジェクトの形状を、プレイヤーごとに、ポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を、プレイヤーごとに、表示する表示手段と、を具備することを特徴とするゲーム装置。
【請求項3】
サーバ装置とこのサーバ装置と通信する1以上のクライアント装置とを含むゲーム装置でのゲーム方法であって、
前記サーバ装置では、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第1記憶手段を用意し、
前記クライアント装置では、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付け、
前記サーバ装置では、さらに、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得し、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第1記憶手段に記憶させ、
前記第1記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定し、
前記クライアント装置では、さらに、
前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得し、
前記取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換し、
前記各オブジェクトの形状を記憶する第2記憶手段を用意し、
前記座標変換によって得られた、複数のオブジェクトの位置および向きを使用して、前記第2記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換し、
前記変換によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写し、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示することを特徴とするゲーム方法。
【請求項4】
サーバ装置とこのサーバ装置と通信する1以上のクライアント装置とを含むゲーム装置で使用するプログラムであって、
前記サーバ装置では、
コンピュータを、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第1記憶手段として機能させ、
前記クライアント装置では、
コンピュータを、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段として機能させ、
前記サーバ装置では、さらに、
コンピュータを、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第1取得手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第1記憶手段に記憶させる設定手段と、
前記第1記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定する判定手段として機能させ、
前記クライアント装置では、さらに、
コンピュータを、
前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得する第2取得手段と、
前記第2取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第1変換手段と、
前記各オブジェクトの形状を記憶する第2記憶手段と、
前記第1変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第2記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第2変換手段と、
前記第2変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段として機能させるためのプログラム。
【請求項5】
1以上のクライアント装置と通信するサーバ装置であって、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第1記憶手段と、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第1取得手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第1記憶手段に記憶させる設定手段と、
前記第1記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の2つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、を具備することを特徴とするサーバ装置。
【請求項6】
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶するサーバ装置と通信する1以上のクライアント装置であって、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し移動および回転後の前記各キャラクタの位置および向きを設定し、前記各オブジェクトの位置と衝突判定領域とに応じて任意の2つのオブジェクトの間で衝突が発生したか否かを判定するサーバ装置から、前記複数のオブジェクトの位置および向きを取得する第2取得手段と、
前記第2取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第1変換手段と、
前記各オブジェクトの形状を記憶する第2記憶手段と、
前記第1変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第2記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第2変換手段と、
前記第2変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段と、を具備することを特徴とするクライアント装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2009−66137(P2009−66137A)
【公開日】平成21年4月2日(2009.4.2)
【国際特許分類】
【出願番号】特願2007−236904(P2007−236904)
【出願日】平成19年9月12日(2007.9.12)
【出願人】(507306229)
【Fターム(参考)】
【公開日】平成21年4月2日(2009.4.2)
【国際特許分類】
【出願日】平成19年9月12日(2007.9.12)
【出願人】(507306229)
【Fターム(参考)】
[ Back to top ]