(57)【要約】【課題】プレイヤーが直観的に操作でき、ゲームが行われる空間の広い範囲を視認すると同時に、操作するキャラクタの近くの状況を詳細に知ることができる２次元ゲームを提供する。【解決手段】ゲームに登場する複数のオブジェクトを双曲平面上に配置し、オブジェクトのうちプレイヤーが操作するキャラクタを、プレイヤーの指示に従い移動、または回転させ、各オブジェクトを、プレイヤーごとに、プレイヤーが操作するキャラクタを中心としたポアンカレ円板モデル上に表す。【選択図】    図５
2009066137.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置とこのサーバ装置と通信する１以上のクライアント装置とを含むゲーム装置であって、
前記サーバ装置は、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第１記憶手段を具備し、
前記クライアント装置は、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段を具備し、
前記サーバ装置は、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第１取得手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第１記憶手段に記憶させる設定手段と、
前記第１記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の２つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、
をさらに具備し、
前記クライアント装置は、
前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得する第２取得手段と、
前記第２取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第１変換手段と、
前記各オブジェクトの形状を記憶する第２記憶手段と、
前記第１変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第２記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第２変換手段と、
前記第２変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段と、をさらに具備することを特徴とするゲーム装置。
【請求項２】
１以上のプレイヤーが操作するゲーム装置であって、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、衝突判定領域、および形状とのデータを記憶する記憶手段と、
前記オブジェクトのうちの各プレイヤーに操作される各キャラクタの移動指示および回転指示を受け付ける受付手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記記億手段に記憶させる設定手段と、
前記記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の２つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、
前記記憶手段によって記憶された複数のオブジェクトの位置および向きを、各プレイヤーに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第１変換手段と、
前記第１変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、各プレイヤーに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第２変換手段と、
前記第２変換手段によって得られた、複数のオブジェクトの形状を、プレイヤーごとに、ポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を、プレイヤーごとに、表示する表示手段と、を具備することを特徴とするゲーム装置。
【請求項３】
サーバ装置とこのサーバ装置と通信する１以上のクライアント装置とを含むゲーム装置でのゲーム方法であって、
前記サーバ装置では、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第１記憶手段を用意し、
前記クライアント装置では、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付け、
前記サーバ装置では、さらに、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得し、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第１記憶手段に記憶させ、
前記第１記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の２つのオブジェクトの間で衝突が発生したか否かを判定し、
前記クライアント装置では、さらに、
前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得し、
前記取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換し、
前記各オブジェクトの形状を記憶する第２記憶手段を用意し、
前記座標変換によって得られた、複数のオブジェクトの位置および向きを使用して、前記第２記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換し、
前記変換によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写し、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示することを特徴とするゲーム方法。
【請求項４】
サーバ装置とこのサーバ装置と通信する１以上のクライアント装置とを含むゲーム装置で使用するプログラムであって、
前記サーバ装置では、
コンピュータを、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第１記憶手段として機能させ、
前記クライアント装置では、
コンピュータを、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段として機能させ、
前記サーバ装置では、さらに、
コンピュータを、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第１取得手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第１記憶手段に記憶させる設定手段と、
前記第１記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の２つのオブジェクトの間で衝突が発生したか否かを判定する判定手段として機能させ、
前記クライアント装置では、さらに、
コンピュータを、
前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得する第２取得手段と、
前記第２取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第１変換手段と、
前記各オブジェクトの形状を記憶する第２記憶手段と、
前記第１変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第２記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第２変換手段と、
前記第２変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段として機能させるためのプログラム。
【請求項５】
１以上のクライアント装置と通信するサーバ装置であって、
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第１記憶手段と、
すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第１取得手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第１記憶手段に記憶させる設定手段と、
前記第１記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の２つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、を具備することを特徴とするサーバ装置。
【請求項６】
ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶するサーバ装置と通信する１以上のクライアント装置であって、
前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段と、
前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し移動および回転後の前記各キャラクタの位置および向きを設定し、前記各オブジェクトの位置と衝突判定領域とに応じて任意の２つのオブジェクトの間で衝突が発生したか否かを判定するサーバ装置から、前記複数のオブジェクトの位置および向きを取得する第２取得手段と、
前記第２取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第１変換手段と、
前記各オブジェクトの形状を記憶する第２記憶手段と、
前記第１変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第２記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第２変換手段と、
前記第２変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、
前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段と、を具備することを特徴とするクライアント装置。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータを使用したゲーム装置、方法およびプログラムに関する。
【背景技術】
【０００２】
コンピュータを使用したゲームには、ユークリッド平面上でゲームを行ういわゆる２次元ゲームと、３次元ユークリッド空間上でゲームを行ういわゆる３次元ゲームとがある。いずれのゲームでも、プレイヤーは、ゲーム装置に付属のコントローラを用いて、ゲームに登場する１つのキャラクタを操作する。コントローラは、通常、前後左右など、２次元の方向を入力可能な方向入力装置を備えている。前記の２次元ゲームでは、キャラクタの移動範囲が２次元に限定されるため、プレイヤーがコントローラの方向入力装置を介して入力した方向と、キャラクタの移動方向を一致させることができる。このため直観的な操作が可能となり、初心者でも操作しやすい特徴がある。３次元ゲームでは、キャラクタを３次元空間上で動かすために、操作方法が複雑になるという欠点がある。
【０００３】
従来の２次元ゲームのように、ユークリッド平面上でゲームを行い、その様子を一定の縮尺で、ユークリッド平面で構成されるディスプレイ上の画面に表示した場合、ゲームが行われる空間のうち、画面の外にはみ出た範囲をプレイヤーは視認することができない。このため、画面の外の範囲にゲームを進める上で必要な情報が存在しても、プレイヤーはこの情報に気づくことはない。これを解決するために、より広い範囲を表示するために画面に表示する際の縮尺を小さくすると、全てのオブジェクトが小さく表示されてしまう。その結果、プレイヤーが操作するキャラクタの詳細な形状などの重要な情報を得ることができなくなったり、ゲームのスピード感が失われるという問題がある。異なる解決手法として、ディスプレイ上に大きな縮尺のメイン画面と小さな縮尺のサブ画面を同時に表示する手法もある。しかし、プレイヤーは２つの画面を交互に見る必要が生じ、ゲームへの集中力が削がれるという問題がある。
【０００４】
また、コンピュータを使用したゲームには、複数のプレイヤーで技量を競う、いわゆる対戦型と呼ばれるゲーム形式があり、対戦などの目的で、２次元ゲームに、複数のプレイヤーが同時に参加することがある。この場合、各プレイヤーが操作する全てのキャラクタを、同時に画面に表示しなければならないため、個々のキャラクタの移動範囲が制限される。各プレイヤーに個別の画面を提示すれば、それぞれの画面を別々にスクロールさせることにより、広い移動範囲を確保することもできる。しかし、他のプレイヤーが操作するキャラクタが画面の外に位置する場合、このキャラクタを視認できないことから不具合が起こる。例えば、画面の外から攻撃を受けるという理不尽な事態が発生する。また、この状態では、異なるプレイヤーに提示する画面の間で表示される範囲が異なるため、あるプレイヤーが視認できるオブジェクトが別のプレイヤーには見えなくなる不公平も生じる。
【０００５】
対戦型の２次元ゲームにおいても、ゲームが行われる空間の、画面に表示する際の縮尺を小さくすることにより、全てのキャラクタを表示することが可能になる。しかし、全てのオブジェクトが小さく表示されることになり、ゲームでのスピード感を損ないプレイヤーを満足させない原因となってしまう。
【０００６】
また、３次元ゲームでは、通常、近くのオブジェクトが大きく、遠くのオブジェクトが小さく表示されるが、自キャラクタの背後が死角となって画面では見えないという欠点が存在する。
【０００７】
上記のゲームはユークリッド空間上で行われている。ユークリッド空間は通常人間が生活する上で常識的な感覚で理解できる空間であるが、現実世界を記述するためにユークリッド空間ではない非ユークリッド空間を必要とする場合もある。例えば、重力を記述するためには非ユークリッド空間であるリーマン空間は必須である。
【０００８】
非ユークリッド空間に含まれる双曲平面を利用した表示手法がある。複数の文字列を、似た属性を持つものが近くなるように双曲平面上に配置し、ポアンカレ円板上に表す（例えば、非特許文献１参照）。この場合、円板の中心は必要に応じて変更でき、文字列の大きさは円板上の場所に依存せず一定で、表示される向きも一定である。
【０００９】
他に、複数の写真を、似た属性を持つものが近くなるように双曲平面上に配置し、ポアンカレ円板上に表す手法もある（例えば、非特許文献２参照）。この場合、円板の中心は必要に応じて変更でき、写真の大きさはポアンカレ円板上の場所に依存して拡大・縮小されるが、表示される向きは傾いたりせず一定である。
【非特許文献１】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.
【非特許文献２】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.
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述のように双曲平面を利用した表示手法はあるが、ゲームでの表示に双曲平面を利用する技術はない。  
また、現在のゲーム装置では、上述したように、以下のような問題がある。プレイヤーが操作するキャラクタの詳細な形状などの重要な情報を得ることができなくなったり、ゲームのスピード感が失われる。また、他のプレイヤーが操作するキャラクタが画面の外に位置する場合、このキャラクタを視認できないことから不具合が起こる。異なるプレイヤーに提示される画面の間で表示される範囲が異なるため、あるプレイヤーが視認できるオブジェクトが別のプレイヤーには見えなくなる不公平が生じる。３次元ゲームでは、背後が見えない上、自キャラクタを直観的に操作することが難しい。
【００１１】
この発明は、上述した事情を考慮してなされたものであり、プレイヤーが直観的に操作でき、ゲームが行われる空間上の広い範囲を視認すると同時に操作するキャラクタの近くの状況を詳細に知ることが可能な、２次元ゲームを実現するゲーム装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述の課題を解決するため、本発明のゲーム装置は、サーバ装置とこのサーバ装置と通信する１以上のクライアント装置とを含むゲーム装置であって、
前記サーバ装置は、ゲームに登場する、双曲平面上に配置される複数のオブジェクトの位置、向き、および衝突判定領域とのデータを記憶する第１記憶手段を具備し、
前記クライアント装置は、前記オブジェクトのうちのそのクライアント装置に操作されるキャラクタの移動指示および回転指示を受け付ける受付手段を具備し、
前記サーバ装置は、すべての前記クライアントから、前記オブジェクトのうちの各クライアントに操作される各キャラクタの移動指示および回転指示を取得する第１取得手段と、前記移動指示および前記回転指示に応じて前記各キャラクタの移動および回転を計算し、移動および回転後の前記各キャラクタの位置および向きを設定し、前記第１記憶手段に記憶させる設定手段と、前記第１記憶手段によって記憶された、前記各オブジェクトの位置と衝突判定領域とに応じて、任意の２つのオブジェクトの間で衝突が発生したか否かを判定する判定手段と、をさらに具備し、
前記クライアント装置は、前記サーバ装置から、前記複数のオブジェクトの位置および向きを取得する第２取得手段と、前記第２取得手段が取得した複数のオブジェクトの位置および向きを、そのクライアントに操作されるキャラクタを中心としたローカル座標系における位置および向きに座標変換する第１変換手段と、前記各オブジェクトの形状を記憶する第２記憶手段と、前記第１変換手段によって得られた、複数のオブジェクトの位置および向きを使用して、前記第２記憶手段によって記憶されたこれらの複数のオブジェクトの形状を、そのクライアントに操作されるキャラクタを中心としたローカル座標系における複数のオブジェクトの形状に変換する第２変換手段と、前記第２変換手段によって得られた、複数のオブジェクトの形状をポアンカレ円板モデルに写す写像手段と、前記ポアンカレ円板モデル上に前記複数のオブジェクトの形状を表示する表示手段と、をさらに具備することを特徴とする。
【発明の効果】
【００１３】
本発明のゲーム装置、方法およびプログラムによれば、プレイヤーに、そのプレイヤーが操作するキャラクタの近くの詳細な状況を提示しつつ、ゲームが行われる空間上の広い範囲を提示することができる。このとき、従来の２次元ゲームが持つものと同様の、直観的な操作性を確保することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照しながら本発明の実施形態に係るゲーム装置、方法およびプログラムについて詳細に説明する。なお、以下の実施形態中では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。  
まず、本実施形態の概要を説明する。  
本実施形態のゲーム装置は、ゲームが非ユークリッド空間である双曲平面上で行われるように双曲面モデルを使用してオブジェクト、背景を制御する。  
ここで、双曲平面は、２次元双曲空間とも言い、球面などと同じく、曲面の一種である（例えば、河野俊丈：曲面の幾何構造とモジュライ、日本評論社、ｐｐ．１０−１３、１９９７参照）。双曲平面の一例を図１に示す。双曲面モデルは、通常は、３次元ユークリッド空間上の二葉双曲面上に表したモデルを示すが（例えば、谷口雅彦、奥村善英：双曲幾何学への招待−複素数で視る−、培風館、ｐｐ．８５−８６、１９９６参照）、本実施形態では、双曲平面上のオブジェクトの向きを一葉双曲面上に表すことも含む。このモデルでは、後述する、オブジェクトの移動、ローカル変換などの計算が容易になる特徴がある。二葉双曲面と一葉双曲面の一例をそれぞれ図２、図３に示す。
【００１５】
なお、双曲面モデルを用いたオブジェクト、背景の制御方法は、実施形態の一例であり、他の方法を用いても本発明の実施は可能である。例えば、オブジェクトの位置を極座標で表し、双曲平面上の余弦定理を用いてオブジェクトを移動させることもできる。
【００１６】
本実施形態では、背景として、画面を飾るために１枚の大きなラスタ画像を貼り付けることはせず、小さな画像を複数配置して背景とする。この小さな画像を配置する際に必要な位置および向きのデータをまとめたものを背景要素と呼ぶ。背景要素は、画面に表示される際に貼り付けられるテクスチャに関連付けられる。  
オブジェクトは、ゲームの中で互いに干渉する物体を示し、位置、向き、および、衝突判定領域を定めるデータを有する。オブジェクトは、画面に表示される際に貼り付けるテクスチャに関連付けられる。なお、後述のキャラクタはオブジェクトに含まれる。  
キャラクタは、オブジェクトのうち、複雑な思考ルーチンに挙動を操作されるものを示す。すなわち、本実施形態では、プレイヤーが操作するオブジェクトと、コンピュータが操作するオブジェクトがキャラクタに対応する。
【００１７】
本実施形態のゲーム装置は、ゲームが行われている双曲平面を、各プレイヤーが操作するキャラクタを中心としたポアンカレ円板モデル上に写し、各円板のすべて、または一部分を画面として各プレイヤーに提示する。  
ここで、ポアンカレ円板モデルは、双曲平面をユークリッド平面上に表したモデルであり、ポアンカレ円板上に写された図形は元の双曲平面上の図形と比較して以下の特徴がある（例えば、河野俊丈：曲面の幾何構造とモジュライ、日本評論社、ｐｐ１０−１３、１９９７参照）。  
特徴１  中心から離れるにつれ縮尺が小さくなる  
特徴２  全ての点で角が正しく表される  
特徴３  中心からの方位が正しく表される  
特徴４  双曲平面上の円がこのモデルでも円として表される  
これらの特徴により、以下の利点を生む。
【００１８】
特徴１により、ゲームが行われる空間のうちの広い範囲を画面に提示しつつ、自キャラクタの近くの詳細な状況を提示することが可能になる。このことについて図４（ａ）、図４（ｂ）を参照して説明する。図４（ａ）は本実施形態のゲーム装置による表示であり、図４（ｂ）は従来のゲーム装置によるユークリッド平面上のゲームによる表示である。図４（ａ）では、自キャラクタ、近くのオブジェクト、および、背景を大きく表示しつつ、広い範囲が提示されている。多くのコンピュータゲームでは、プレイヤーは自キャラクタ近くの状況は詳細に知る必要があるが、遠くの状況については詳細に知る必要はない。特徴１により、１枚の連続した画面から、自キャラクタ近くの詳細な状況を知ると同時に、従来のゲームでは画面の外にはみ出すような遠くの状況を大まかに知ることができる。近くのオブジェクトが大きく、遠くのオブジェクトが小さく表示されるという点では、３次元ゲームも同様だが、３次元ゲームでは自キャラクタの背後が死角になるという欠点がある。これに対し、本実施形態のゲーム装置による表示では背後も表示できる。
【００１９】
特徴２により、各オブジェクトは、局所的にはその形状を歪めることなく画面に表示される。仮に、ゲームをユークリッド平面上で行い、その様子を、ある点から離れるにつれて縮尺が小さくなるように、別のユークリッド平面からなる画面に写像した場合は、このような効果は得られない。オブジェクトが大きく歪んで表示されることになり、プレイヤーがオブジェクトの種類を見誤る原因となる。
【００２０】
特徴３により、プレイヤーは、自キャラクタ以外のオブジェクトが自キャラクタに向かっているか否かを容易に判断することができる。例えば、シューティングゲームにおいて、プレイヤーは敵機や敵の弾丸が自機に向かってくるか否かを直観的に判断することができる。また、コントローラの方向入力装置の入力方向と、画面上の自キャラクタ移動方向を一致させることができ、直観的な操作が可能になる。  
特徴４により、全てのプレイヤーに双曲平面上の同一の範囲を提示することが可能になり、対戦するプレイヤー間に有利不利を生じない。
【００２１】
次に、本実施形態のゲーム装置について図５を参照して説明する。  
本実施形態のゲーム装置は、一例として、図５に示すように、サーバクライアント型の装置を使用して行う。サーバ５０１は、オブジェクトに関するデータのうち、グローバル座標系における配置を定める位置と向き、衝突判定領域を定めるデータ、オブジェクトの移動の速さ、および、オブジェクトが回転する際の角速度を記憶している。各クライアント５０２、５０３は、背景要素の、グローバル座標系における配置を定める位置および向きと、背景要素およびオブジェクトの形状を定める頂点データを記憶している。
【００２２】
サーバ５０１は、オブジェクトの位置と向きをフレームごとに更新する。同時に衝突判定を行い、衝突で消滅すべきオブジェクトを削除し、生成すべきオブジェクトを新規作成する。そして、サーバ５０１は、各クライアントへ全オブジェクトの位置と向きとを無線または有線で送信する。
【００２３】
クライアント５０２、５０３は、自キャラクタを中心とするローカル座標系を設定し、サーバから送信されてきた全オブジェクトの位置と向き、およびクライアントが記憶する全背景要素の位置と向きとを、ローカル変換し、これらデータと、背景要素の頂点データおよびオブジェクトの頂点データとを組み合わせて画面上に各背景要素と各オブジェクトとの形状を描画する。
【００２４】
次に、本実施形態のゲーム装置の詳細について図６を参照して説明する。  
本実施形態のゲーム装置は、サーバ５０１と少なくとも１つ以上のクライアント５０２を含む。サーバ５０１は、ＣＰＵ６０１、プログラム記録部６０２、データ更新部６０３、Ｉ／Ｏポート６０４を含み、各クライアント５０２、５０３は、ＣＰＵ６１１、プログラム記録部６１２、データ記録部６１３、Ｉ／Ｏポート６１４、ＧＰＵ６１５、入力部６１６、出力部６１７を含む。また、サーバ５０１と各クライアント５０２、５０３とは、有線または無線により接続されている。接続は図６では６００で示されている。
【００２５】
接続６００は、無線通信手段、有線通信手段、またはそれらを組み合わせたものによる、サーバとクライアントとの通信を可能にする手段であり、インターネット回線を含む。
【００２６】
ＣＰＵ６０１は、フレームごとに、データ更新部６０３に格納されているオブジェクトデータを入力として、プログラム記録部６０２に格納されているプログラムを使用して演算する。この演算により、フレームごとに、ゲームが行われる双曲平面上の全てのオブジェクトの位置と向きを算出し、また、各オブジェクトが別のオブジェクトと衝突したかを判定する。衝突判定は、例えば、各キャラクタが他のキャラクタに衝突したかを判定したり、各キャラクタが弾丸などのオブジェクトに当たったかを判定する。なお、ＣＰＵ６０１は、高速な演算が必要なため、行列演算ユニットを備えたものであることが望ましい。
【００２７】
プログラム記録部６０２は、ＣＰＵ６０１が演算する際に使用するプログラムを記録している。プログラム記録部６０２は、フレームごとに、ゲームが行われる双曲平面上の全てのオブジェクトの位置と向きを算出し、オブジェクト同士の衝突を判定するためのプログラムを記録している。具体的なプログラムの内容については後に詳細に説明する。なお、プログラム記録部６０２は、ＲＯＭまたはＲＡＭにより構成され、ＲＡＭの場合はプログラム記録部６０２が備えている他の記録媒体（例えば、ハードディスク）からプログラムをロードする。
【００２８】
データ更新部６０３は、ＣＰＵ６０１で計算されたフレームについて、各オブジェクトの位置と向き、各オブジェクトの衝突判定領域、オブジェクトの移動の速さ、および、オブジェクトが回転する際の角速度を記録している。データ更新部６０３が記憶しているデータは、フレームごとにＣＰＵ６０１が計算した結果に更新される。しかし、衝突判定領域、オブジェクトの移動の速さ、および、オブジェクトが回転する際の角速度は、これらの値をフレーム間で変化させない場合には、更新せず一定値でもよい。具体的なデータについての一例は後に詳細に説明する。なお、データ更新部６０３はＲＡＭにより構成される。
【００２９】
Ｉ／Ｏポート６０４は、ＣＰＵ６０１が計算した、各オブジェクトの位置および向きを各クライアント５０２、５０３に送信する。また、Ｉ／Ｏポート６０４は、各クライアント５０２、５０３が入力部６１６を使用して操作した内容を取得する。
【００３０】
ＣＰＵ６１１は、データ記録部６１３に記録された、全ての背景要素のグローバル座標系における位置および向きと、Ｉ／Ｏポート６１４を介して受信した、全てのオブジェクトのグローバル座標系における位置および向きとを、プログラム記録部６１２に格納されているプログラムを使用して、ローカル座標系における位置および向きに座標変換する。なお、ＣＰＵ６１１は、高速な演算が必要なため、行列演算ユニットを備えたものであることが望ましい。
【００３１】
プログラム記録部６１２は、グローバル座標系における位置および向きを、各クライアント５０２、５０３の自キャラクタを中心とするローカル座標系における位置および向きに座標変換するためのプログラムを記録している。なお、プログラム記録部６１２は、ＲＯＭまたはＲＡＭにより構成され、ＲＡＭの場合はプログラム記録部６１２が備えている他の記録媒体（例えば、ハードディスク）からプログラムをロードする。また、接続６００を介してサーバ５０１からプログラムをダウンロードしてもよい。
【００３２】
データ記録部６１３は、全ての背景要素の位置、向き、頂点、その背景要素に貼り付けるテクスチャを関連付けて背景データとして記録している。他に、データ記録部６１３は、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャを関連付けてオブジェクトデータとして記録している。なお、データ記録部６１３はＲＡＭにより構成される。
【００３３】
Ｉ／Ｏポート６１４は、各オブジェクトのグローバル座標系における位置および向きをサーバ５０１から取得したり、各クライアント５０２、５０３が入力部６１６を使用して操作した内容をサーバ５０１へ送信する。
【００３４】
ＧＰＵ６１５は、ＣＰＵ６１１が計算したローカル座標系における全ての背景要素の位置および向きと、ローカル座標系における全てのオブジェクトの位置および向きとを使用して、データ記録部６１３に記録されている背景要素とオブジェクトの頂点を、各クライアント５０２、５０３の自キャラクタを中心とするローカル座標系における頂点へモデリング変換する。その後、ＧＰＵ６１５は、モデリング変換された全ての背景要素と全てのオブジェクトの頂点をポアンカレ円板モデルに写す。さらに、ＧＰＵ６１５は、ゲームが行われている、予め定められた範囲のみをポアンカレ円板モデルから抜き出す。最後に、ＧＰＵ６１５は、全ての背景要素と全てのオブジェクトの頂点に沿って、各背景要素と各オブジェクトに対応するテクスチャを貼り付け、この内容を出力部６１７に出力する。また、ＧＰＵ６１５は、テクスチャを用いずに、オブジェクトを直線で構成されるベクタ画像で描いてもよい。なお、ここではＣＰＵ６１１とＧＰＵ６１５と分けているが、ＧＰＵ６１５を設けず、ＧＰＵ６１５の機能を全てＣＰＵ６１１に代行させることができる。
【００３５】
入力部６１６は、各クライアント５０２、５０３が自キャラクタを動かしたり、シューティングゲームであれば弾丸を発射したりするためのコントローラである。  
出力部６１７は、ＧＰＵ６１５が作成した画像を表示するディスプレイである。
【００３６】
次に、サーバ５０１の動作の一例について図７を参照して説明する。  
以下のステップＳ７０１からステップＳ７０３は初期設定である。背景、オブジェクトの位置と向きを設定する（ステップＳ７０１）。これらの設定は、ゲームが開始される前に、予め初期設定として定まっているデータがプログラム記録部６０２またはデータ更新部６０３に記憶されている。ステップＳ７０１ではＣＰＵ６０１がこの初期設定を読み込む。
【００３７】
ステップＳ７０２とステップＳ７０３は、上記のように、クライアント５０２、５０３がデータ記録部６１３に背景データとオブジェクトデータを持っている場合には必要ない。クライアント５０２、５０３が背景データとオブジェクトデータを持っていない場合には、サーバ５０１が背景データとオブジェクトデータをデータ更新部６０３等のメモリに有していて、ＣＰＵ６０１がこのメモリから背景データとオブジェクトデータとをクライアント５０２、５０３に送信する。すなわち、サーバ５０１が、全ての背景要素の頂点と、各背景要素に貼り付けるテクスチャと、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャとをクライアント５０２、５０３へ送信する（ステップＳ７０２）。サーバ５０１が、全ての背景要素の位置、向きをクライアント５０２、５０３へ送信する（ステップＳ７０３）。
【００３８】
以下ステップＳ７０４からステップＳ７１１は、１つのフレームについてサーバ５０１が行う処理である。換言すれば、フレームごとにサーバ５０１はステップＳ７０４からステップＳ７１１の処理を行う。
【００３９】
ＣＰＵ６０１は、フレームごとに、データ更新部６０３に格納されているオブジェクトデータのうち、位置と向きをＩ／Ｏポート６０４を経由してクライアント５０２、５０３に送信する（ステップＳ７０４）。
【００４０】
サーバ５０１は、例えば、クライアント５０２、５０３のいずれかからのゲーム終了の指示があった場合、ゲームで予め決められている時間が経過した場合、または、ゲームで予め決められている終了ルールに合致した場合には、ＣＰＵ６０１がゲームを終了すると判定する（ステップＳ７０５）。終了ルールとは、例えば、２人で対戦している場合にはどちらか一方の所有している機が全滅した場合ゲームを終了する等、である。
【００４１】
サーバ５０１がゲームを終了すると判定した場合には、クライアント５０２、５０３にゲームを終了する旨の信号を送信し、ゲームを終了する（ステップＳ７０６）。
【００４２】
一方、サーバ５０１がゲームを終了しないと判定した場合には、Ｉ／Ｏポート６０４がクライアント５０２、５０３から入力部６１６で入力された指示を受信し、ＣＰＵ６０１がこれらの指示を受け取る（ステップＳ７０７）。この指示には、例えば、キャラクタを動かす、キャラクタを回転させる、があり、これら指示に基づきデータ更新部６０３に記憶された各キャラクタの移動の速さおよび角速度が更新される。ＣＰＵ６０１は、データ更新部６０３を入力しプログラム記録部６０２のプログラムを使用して、オブジェクトを移動、回転させる（ステップＳ７０８）。このとき、データ更新部６０３に記憶された各オブジェクトの位置および向きが更新される。ＣＰＵ６０１は、データ更新部６０３のデータを入力しプログラム記録部６０２のプログラムを使用して、オブジェクトの衝突、タイマーイベントが発生したか否かを判定する（ステップＳ７０９）。タイマーイベントには、例えば、キャラクタが衝突して爆炎が発生し、一定時間後に爆炎が消える等、がある。
【００４３】
ステップＳ７０９で衝突、タイマーイベントが発生しなかったと判定された場合には、ステップＳ７０４に戻る。ステップＳ７０９で衝突、タイマーイベントが発生したと判定された場合には、衝突、タイマーイベントが発生したオブジェクトに対応するオブジェクトデータをデータ更新部６０３から削除する（ステップＳ７１０）。ＣＰＵ６０１は、削除されたオブジェクトの代わりになるオブジェクトのオブジェクトデータ（位置、向き、衝突判定領域、移動の速さ、角速度）を生成し、データ更新部６０３に書き込む（ステップＳ７１１）。
【００４４】
次に、各クライアント５０２、５０３の動作の一例について図８を参照して説明する。  
Ｉ／Ｏポート６１４が、サーバ５０１から、全ての背景要素の頂点と、各要素に貼り付けるテクスチャと、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャとを受信し、これらのデータをデータ記録部６１３に格納する（ステップＳ８０１）。Ｉ／Ｏポート６１４が、サーバ５０１から、全ての背景要素の位置、向きを受信し、これらのデータをデータ記録部６１３に格納する（ステップＳ８０２）。これらのステップＳ８０１、Ｓ８０２は、予めデータ記録部６１３が、全ての背景要素それぞれの位置、向き、頂点、その要素に貼り付けるテクスチャを関連付けて背景データとして記録して、全てのオブジェクトの頂点と、各オブジェクトに貼り付けるテクスチャを関連付けてオブジェクトデータとして記録していれば、不要である。
【００４５】
Ｉ／Ｏポート６１４が、サーバ５０１から、全てのオブジェクトの位置、向きを示すオブジェクトデータを受信する（ステップＳ８０３）。ＣＰＵ６１１は、プログラム記録部６１２に格納されているプログラムを使用して、サーバ５０１からステップＳ８０２で受信した全ての背景要素の位置、向きをローカル変換すると同時に、ステップＳ８０３で受信した全てのオブジェクトの位置、向きをローカル変換する（ステップＳ８０４）。ＧＰＵ６１５は、データ記録部６１３に記録されている背景要素とオブジェクトの頂点を、各クライアント５０２、５０３の自キャラクタを中心とするローカル座標系における頂点へモデリング変換する（ステップＳ８０５）。ＧＰＵ６１５は、モデリング変換された全ての背景要素と全てのオブジェクトの頂点をポアンカレ円板モデルに写す（ステップＳ８０６）。ＧＰＵ６１５は、拡大、平行移動により、ゲームが行われている、予め定められた範囲のみをポアンカレ円板モデルから抜き出す（ステップＳ８０７）。ＧＰＵ６１５は、全ての背景要素と全てのオブジェクトの頂点に沿って、各背景要素と各オブジェクト対応するテクスチャを貼り付ける（ステップＳ８０８）。ＣＰＵ６１１が、Ｉ／Ｏポート６１４を経由してサーバ５０１からゲーム終了の信号を受信したか否か判定する（ステップＳ８０９）。ゲーム終了の信号を受信したと判定した場合にはゲームを終了し、ゲーム終了の信号を受信しなかったと判定した場合には入力部６１６により入力されたプレイヤーの指示をＩ／Ｏポート６１４を経由してサーバ５０１に送信し、ステップＳ８０３に戻る（ステップＳ８１０）。
【００４６】
次に、ＣＰＵ６０１、ＣＰＵ６１１、ＧＰＵ６１５が行う演算について詳細に説明する。  
一般に、ｍ次元（ｍ：自然数）双曲空間上のオブジェクトの位置は、最低ｍ個の実数変数で表すことができるが、ｍ＋１個の実数変数を使用することでオブジェクトの移動などを、行列を使用した高速演算で行うことが可能になることが知られている（例えば、J. Weeks, “Real-Time Rendering in Curved Spaces,” IEEE Computer Graphics and Applications, pp. 90-99, 2002.を参照）。２次元双曲空間である双曲平面の場合は、本実施形態のように、双曲面モデルを用いる方法がこの方法に相当する。
【００４７】
本実施形態のゲーム装置で行うゲームでは、全オブジェクトはガウス曲率Ｋ＝−１の２次元の双曲平面上に配置される。なお、本実施形態ではガウス曲率をＫ＝−１に限っているが、モデルを拡大・縮小することで他の負の定曲率を持つ空間にも対応できる。本実施形態では、計算機内部で双曲面モデルを用いるが、その際用いる変数を直接設定するのは難しい。そこで初期設定時には極座標などの理解し易い変数を入力し、それを元に、計算機内部用の変数を算出する。表１に、例としてあるオブジェクトΦの入力用の変数と計算機内部用の変数を示す。この例では、Φは円形の衝突判定領域を有するものとしている。
【表１】
2009066137.tif 000003
【００４８】
（オブジェクトの配置）  
サーバ５０１のデータ更新部６０３には、ゲームに登場する全てのオブジェクトの、位置および向きのデータが格納される。あるオブジェクトΦの位置のデータは、（ｘΦ，ｙΦ，ｚΦ）と３変数を使用して表され、データ更新部６０３に格納される。
【００４９】
初期設定時に、オブジェクトデータの入力値として、Φの位置が図９（ａ）に示すように極座標（ｄΦ，δΦ）で与えられた場合には、
【数１】
2009066137.tif 000004
【００５０】
とすることでこれらの値を求めることができる。このとき（ｘΦ，ｙΦ，ｚΦ）は３次元ユークリッド空間上の二葉双曲面ｚ２＝ｘ２＋ｙ２＋１上の点であり、オブジェクトの中心となる点を一意に定める。なお、本実施形態の双曲線モデル上で双曲平面上の点を定める二葉双曲面上の座標を「位置座標」と呼ぶ。
【００５１】
また、Φの向きも３変数を用いて（ａΦ，ｂΦ，ｃΦ）と表され、データ更新部６０３に格納される。初期設定時に、図９（ａ）のようにΦの向きが双曲平面上の角度θΦで入力された場合、（１）式で得られた値を用いて、
【数２】
2009066137.tif 000005
【００５２】
とすることでこれらの値を求めることができる。このとき（ａΦ，ｂΦ，ｃΦ）は一葉双曲面ｚ２＝ｘ２＋ｙ２−１上の点であり、オブジェクトの前後方向に伸びる測地線を一意に定める。なお、本実施形態の双曲線モデル上で双曲平面上の測地線を定める一葉双曲面上の座標を「向き座標」と呼ぶ。
【００５３】
１つのオブジェクトは位置を表すための１つの位置座標と向きを表すための１つの向き座標を持ち、双曲平面上で、この向き座標が定める測地線はこの位置座標が定める点を通るものとする。このとき、位置座標（ｘΦ，ｙΦ，ｚΦ）と向き座標（ａΦ，ｂΦ，ｃΦ）との間にはｃΦｚΦ＝ａΦｘΦ＋ｂΦｙΦの関係が成り立ち、後述するオブジェクトの移動での変換、オブジェクトの回転での変換、ローカル座標への変換を経てもこの関係は保存される。
【００５４】
各クライアントのデータ記録部６１３に格納される全ての背景要素の位置と向きを表すデータも、オブジェクトの場合と同様に設定する。
【００５５】
（オブジェクトの移動）  
サーバ５０１のデータ更新部６０３のオブジェクトデータを入力として、プログラム記録部６０２が格納しているプログラムを使用してＣＰＵ６０１が計算するオブジェクトの移動について説明する。  
オブジェクトΦが、その向き座標が定める測地線に沿って移動する場合、移動する前の位置座標を（ｘΦ０，ｙΦ０，ｚΦ０）、移動後の位置座標を（ｘΦ１，ｙΦ１，ｚΦ１）とする。移動後の位置座標は、オブジェクトΦの向き座標（ａΦ，ｂΦ，ｃΦ）を使用して移動前の位置座標を変換することによって得られる。
【数３】
2009066137.tif 000006
【００５６】
ここで、ｅとｆは移動の速さを表す変数であり、双曲面上のオブジェクトの速さｖからｅ＝sinh ｖ、ｆ＝cosh ｖと算出される。速さが一定の場合はこれらの値を予め求めておき、プログラム記録部６０２に含まれるプログラムまたはデータ更新部６０３に含めていてもよい。また、オブジェクトが、同一の測地線に沿って移動を繰り返す場合は、１回目の変換に用いた行列をデータ更新部６０３に記憶させ、２回目以降の変換時に再度用いることで、計算量を抑えることができる。
【００５７】
（オブジェクトの回転）  
サーバ５０１のデータ更新部６０３のオブジェクトデータを入力として、プログラム記録部６０２が格納しているプログラムを使用してＣＰＵ６０１が計算するオブジェクトの回転について説明する。  
オブジェクトΦが、その位置座標が定める点を中心として回転する場合、回転する以前の向き座標を（ａΦ０，ｂΦ０，ｃΦ０）、回転後の向き座標を（ａΦ１，ｂΦ１，ｃΦ１）とする。回転後の向き座標は、オブジェクトΦの位置座標（ｘΦ，ｙΦ，ｚΦ）を使用して回転以前の向き座標を変換することによって得られる。
【数４】
2009066137.tif 000007
【００５８】
ここで、ｇとｈは角速度を表す変数であり、双曲平面上の角速度ωとｇ＝sin ω、ｈ＝cos ωの関係にある。角速度が一定ならばこれらの値を予め求めておき、プログラム記録部６０２に含まれるプログラムまたはデータ更新部６０３に含めていてもよい。また、オブジェクトが、同一の点を中心とした回転を繰り返す場合は、１回目の変換に用いた行列をデータ更新部６０３に記憶させ、２回目以降の変換時に再度用いることで、計算量を抑えることができる。また、角度ωの回転、距離ｖの移動、角度−ωの回転を１フレーム内で行うことで、オブジェクトを任意方向へ移動させることが可能になる。これをプレイヤーが操作するキャラクタに適用すれば、コントローラの方向入力装置の入力方向と、キャラクタの移動方向を一致させることができる。
【００５９】
（衝突判定）  
サーバ５０１のデータ更新部６０３のオブジェクトデータを入力として、プログラム記録部６０２が格納しているプログラムを使用してＣＰＵ６０１が計算するオブジェクトが別のオブジェクトに衝突するかを判定する手法について説明する。  
衝突判定を行う２つのオブジェクトの衝突判定領域を、双曲平面上の円で定める場合、衝突判定領域のデータとして、円の半径を表す、２変数からなる配列（ｐΦ，ｑΦ）を、データ更新部６０３に格納する。初期設定時に、半径が双曲平面上の距離ｒΦとして入力された場合、
【数５】
2009066137.tif 000008
【００６０】
とすることでこれらの値が得られる。オブジェクトΦと、位置座標が（ｘΨ，ｙΨ，ｚΨ）であり、衝突判定領域データとして半径を表す配列（ｐΨ，ｑΨ）を持つ、Φと異なるオブジェクトΨとが衝突する場合に成立する式は次のようになる。
【数６】
2009066137.tif 000009
【００６１】
この式は、ユークリッド空間での場合の（ｘEΦ−ｘEΨ）２＋（ｙEΦ−ｙEΨ）２≦（ｒΦ＋ｒΨ）２に対応する。これは、ユークリッド空間での、位置（ｘEΦ，ｙEΦ）と半径ｒΦのオブジェクトと位置（ｘEΨ，ｙEΨ）と半径ｒΨのオブジェクトが衝突する場合の式である。ここでは、各オブジェクトの衝突判定領域が１つの円で定められるものとして衝突判定を行ったが、各オブジェクトの衝突判定領域を複数の円で定めてもよい。その場合は、予め各オブジェクトを中心とするローカル座標系に円の中心座標を定めておき、それらをグローバル変換することで個々の円の衝突判定を行う。
【００６２】
また、衝突判定領域が、測地線に囲まれた、双曲平面上の多角形で構成されるオブジェクト同士の衝突判定を行うこともできる。
【００６３】
多角形で衝突判定領域が定められるオブジェクトの衝突判定について図１０を参照して説明する。  
第１オブジェクト１０００の衝突判定領域は、点１００１、１００２、１００３、１００４を頂点とする双曲平面上の多角形で定められ、第２オブジェクト１０５０の衝突判定領域は、点１０５１、１０５２、１０５３を頂点とする双曲平面上の多角形で定められる。
【００６４】
第１オブジェクトの多角形を構成する線分のいずれかと、第２オブジェクトの多角形を構成する線分のいずれかが交差する場合に衝突判定の結果は真となり、それ以外の場合は偽となる。
【００６５】
片方の多角形が、もう片方の多角形に内包される場合は衝突しているにもかかわらず、衝突判定の結果は偽となるが、オブジェクトの移動がフレームレートに対して十分遅い場合はこのようなことは起こらないため、ここでは考えない。
【００６６】
図１０では点１００１と点１００２を結ぶ線分と、点１０５１と点１０５２を結ぶ線分が交差すると同時に、点１００１と点１００２を結ぶ線分と、点１０５３と点１０５１を結ぶ線分が交差しており、衝突判定の結果は真となる。
【００６７】
衝突判定のための演算は、すべてサーバの中で行う。サーバ内のデータ更新部６０３には、図１１に示すようにすべてのオブジェクトの位置座標と向き座標と共に、衝突判定領域を定める多角形の、頂点のデータが収められている。
【００６８】
あるオブジェクトΦのｍ個目の頂点のデータは、Φを中心とするローカル座標系における位置座標（ｘΦｍ，ｙΦｍ，ｚΦｍ）で構成される。
【００６９】
次に、多角形で衝突判定領域が定められるオブジェクトの衝突判定の一例について図１２を参照して説明する。図１２では、ｍは第１オブジェクトに所属する頂点の番号を、Ｍは頂点の総数を表す。また、ｎは第２オブジェクトに所属する頂点の番号を、Ｎは頂点の総数を表す。
【００７０】
２つのオブジェクトに所属するすべての頂点の位置座標をグローバル変換する（ステップＳ１２０１）。例えばある頂点の位置座標が（ｘΦｍ，ｙΦｍ，ｚΦｍ）である場合は、その頂点が所属するオブジェクトの位置座標（ｘΦ，ｙΦ，ｚΦ）と向き座標（ａΦ，ｂΦ，ｃΦ）から成る行列を用いて次式の（７）式のように変換し、グローバル座標系における頂点の位置座標（ｘΦｍＧ，ｙΦｍＧ，ｚΦｍＧ）を得る。
【数７】
2009066137.tif 000010
【００７１】
次に、ｎ＝１と設定し（ステップＳ１２０２）、ｍ＝１と設定し（ステップＳ１２０３）、ステップＳ１２０４に進む。ステップＳ１２０４では、多角形を構成する線分の交差判定を行う。すなわち、第１オブジェクトの線分ｍと第２オブジェクトの線分ｎが交差するかどうかを判定する（ステップＳ１２０４）。図１２の例ではｎ＝ｍ＝１から交差判定が開始される。第１オブジェクトの多角形を構成するｍ番目の線分は、グローバル変換後の位置座標（ｘΦｍＧ，ｙΦｍＧ，ｚΦｍＧ）のｍ番目の頂点と、グローバル変換後の位置座標（ｘΦｍ＋１Ｇ，ｙΦｍ＋１Ｇ，ｚΦｍ＋１Ｇ）のｍ＋１番目の頂点に終端される。第２オブジェクトの多角形を構成するｎ番目の線分は、グローバル変換後の位置座標（ｘΨｎＧ，ｙΨｎＧ，ｚΨｎＧ）のｎ番目の頂点と、グローバル変換後の位置座標（ｘΨｎ＋１Ｇ，ｙΨｎ＋１Ｇ，ｚΨｎ＋１Ｇ）のｎ＋１番目の頂点に終端される。次式の（８）式と（９）式の双方を満たすとき、これら２つの線分は交差していると判定できる。
【数８】
2009066137.tif 000011
【００７２】
【数９】
2009066137.tif 000012
【００７３】
ただし、Ｍ＋１番目の頂点とは１番目の頂点のことを指し、Ｎ＋１番目の頂点とは１番目の頂点のことを指す。また（８）式と（９）式では、｜Ａ｜はＡの行列式を示す。
【００７４】
ステップＳ１２０４で交差すると判定された場合には、衝突判定は真であるとし、ステップＳ１２０４で交差しないと判定された場合には、ステップＳ１２０５に進む。ｍ＝Ｍであるかどうかを判定し（ステップＳ１２０５）、ｍ＝Ｍである場合にはステップＳ１２０７に進み、一方、ｎ＝Ｍでない場合にはステップＳ１２０６に進む。ｍにｍ＋１を代入してステップＳ１２０４に戻る（ステップＳ１２０６）。ｎ＝Ｎであるかどうかを判定し（ステップＳ１２０７）、ｎ＝Ｎである場合には衝突判定は偽であるとし、ｎ＝Ｎでない場合にはステップＳ１２０８に進む。ｎにｎ＋１を代入してステップＳ１２０３に戻る（ステップＳ１２０８）。
【００７５】
第１オブジェクトの線分と第２オブジェクトの線分の、すべての組み合わせについて交差を判定し、１組でも交差していた時点で衝突判定の結果を真とし終了する。交差する組が１つもない場合は結果を偽とし終了する。
【００７６】
シューティングゲーム等では、レーザービームのように、その幅と比較して長さが極端に大きいオブジェクトと、他のオブジェクトのとの衝突判定を行わなければならない場合がある。
【００７７】
位置座標が（ｘΦ，ｙΦ，ｚΦ）である、第１オブジェクトΦがあり、その衝突判定領域が、１つの、（ｘΦ，ｙΦ，ｚΦ）で定められる点を中心とする双曲平面上の円で定められ、その円の半径は双曲平面上の距離ｒΦであるとする。
【００７８】
また、向き座標が（ａΨ，ｂΨ，ｃΨ）である、第２オブジェクトΨがあり、その衝突判定領域が、１本の、（ａΨ，ｂΨ，ｃΨ）で定められる測地線から、双曲平面上の距離ｗΨまでの領域を含む、ベルト状の領域であるとする。
【００７９】
これら２つのオブジェクトは、（１０）式を満たすときに衝突していると判定される。
【数１０】
2009066137.tif 000013
【００８０】
ここでｐΦ＝sinh ｒΦ、ｑΦ＝cosh ｒΦであり、ｕΨ＝sinh ｗΨ、ｖΨ＝cosh ｗΨである。
【００８１】
（ローカル座標への変換）  
各クライアント５０２、５０３のＣＰＵ６１１が、各クライアントに納められた背景データとサーバ５０１からのオブジェクトデータを入力として、プログラム記録部６１２が格納しているプログラムを使用してローカル座標に座標変換するための手法について説明する。  
位置座標（ｘΦ，ｙΦ，ｚΦ）と向き座標（ａΦ，ｂΦ，ｃΦ）はそれぞれグローバル座標系におけるオブジェクトΦの位置と向きを表す。これらを、キャラクタΨを中心とするローカル座標系における位置座標（ｘΦＬ，ｙΦＬ，ｚΦＬ）と向き座標（ａΦＬ，ｂΦＬ，ｃΦＬ）に変換する。ともにΨの位置座標（ｘΨ，ｙΨ，ｚΨ）と向き座標（ａΨ，ｂΨ，ｃΨ）の成分からなる同一の行列を使用して変換される。
【数１１】
2009066137.tif 000014
【００８２】
【数１２】
2009066137.tif 000015
【００８３】
他の全てのオブジェクトについても、また、Ψを操作するクライアントに納められた全ての背景要素についても、同一の行列を用いて位置座標と向き座標をローカル変換する。この変換を経ても、各背景要素および各オブジェクト間の、双曲平面上の位置と向きの関係は保たれる。
【００８４】
（オブジェクト形状の再構成）  
ＧＰＵ６１５が、ＣＰＵ６１１が計算したローカル座標系におけるオブジェクトの位置と向きを使用して、データ記録部６１３に記録されている背景要素とオブジェクトの形状を表す頂点を、各クライアントのキャラクタを中心とするローカル座標系へモデリング変換する手法について説明する。
【００８５】
オブジェクトΦの形状を表す各頂点は、Φを中心とするローカル座標系における位置座標（ｘｖｎ，ｙｖｎ，ｚｖｎ）で表され、データ記録部６１３に格納されている。初期設定時に、図９（ｂ）に示すようにΦの形状を表す頂点が、例えば、極座標（ｄｖｎ，δｖｎ）で入力された場合、
【数１３】
2009066137.tif 000016
【００８６】
としてこれらの値を得る。オブジェクトΦの形状をキャラクタΨを中心とするローカル座標系に再構成する場合、次式のようにΨを中心とするローカル座標系におけるΦの位置座標（ｘΦＬ，ｙΦＬ，ｚΦＬ）と向き座標（ａΦＬ，ｂΦＬ，ｃΦＬ）の成分からなる行列を使用してΦの形状を表す頂点の位置座標（ｘｖｎ，ｙｖｎ，ｚｖｎ）を変換し、Ψを中心とするローカル座標系におけるΦの形状を表す頂点の位置座標（ｘｖｎＬ，ｙｖｎＬ，ｚｖｎＬ）を得る。背景要素についても同様に計算する。
【数１４】
2009066137.tif 000017
【００８７】
（画面描画）  
ＧＰＵ６１５が、ローカル座標に変換された全ての背景要素と全てのオブジェクトの頂点をポアンカレ円板モデルに写す。さらに、ＧＰＵ６１５は、ゲームが行われている双曲平面上の、予め定められた範囲のみをポアンカレ円板モデルから抜き出すことについて説明する。
【００８８】
キャラクタΨを操作するプレイヤーに提示する画面を描画する。まず、Ψを中心とするローカル座標系における位置座標（ｘｖｎＬ，ｙｖｎＬ，ｚｖｎＬ）で表される、ある頂点を次式でΨを中心とするポアンカレ円板上の点（Ｘ，Ｙ）に写す。
【数１５】
2009066137.tif 000018
【００８９】
続いて、グローバル座標系におけるキャラクタΨの位置座標（ｘΨ，ｙΨ，ｚΨ）、向き座標（ａΨ，ｂΨ，ｃΨ）を使用して、次式により画面上の点（Ｘｓｃｒ，Ｙｓｃｒ）を得る。
【数１６】
2009066137.tif 000019
【００９０】
（１６）式によりポアンカレ円板上から、座標（０，０）を中心とする半径１の円上に、予め定められた範囲のみを抜き出し、画面として表示することができる。ここで、ｐｅｎｄ＝sinh ｒｅｎｄ、ｑｅｎｄ＝cosh ｒｅｎｄであり、表示する範囲はグローバル座標系における中心点から、双曲平面上で半径ｒｅｎｄに限るものとしている。もちろん、この半径は任意に値を設定することができ、表示する範囲を自由に設定することができる。
【００９１】
以上に示した実施形態によれば、ゲームが行われている空間のうち、広い範囲を画面としてディスプレイ上に表示することが可能になるため、複数のプレイヤーが操作するキャラクタの全てを同時に視認することが可能になる。このときそれぞれの画面には自キャラクタを中心とするポアンカレ円板モデルを使用しているため、自キャラクタの近くの状況は詳細に知ることができる。画面として表示する範囲を双曲平面上のある円の中に限った場合は、双曲平面上の円はポアンカレ円板モデル上でも円として表されることを利用し、ディスプレイ上の円形の領域を、画面として各プレイヤーに提示することにより、全てのプレイヤーが双曲平面上の同一の範囲のみを視認することができ、不公平が生じない。
【００９２】
また、オブジェクトの衝突判定領域を、複雑な形状に設定した上で衝突判定が可能なため、従来、ユークリッド平面上で行われていた様々なジャンルのゲームを、双曲平面上で行うことができる。
【００９３】
また、上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述した実施形態のゲーム装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷなど）、半導体メモリ、又はこれに類する記録媒体に記録される。コンピュータまたは組み込みシステムが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をＣＰＵで実行させれば、上述した実施形態のゲーム装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合又は読み込む場合はネットワークを通じて取得又は読み込んでもよい。  
また、記憶媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワーク等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行してもよい。  
さらに、本願発明における記憶媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、ＬＡＮやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。  
また、記憶媒体は１つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本発明における記憶媒体に含まれ、媒体の構成は何れの構成であってもよい。
【００９４】
なお、本願発明におけるコンピュータまたは組み込みシステムは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。  
また、本願発明の実施形態におけるコンピュータとは、ゲーム専用機に限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の実施形態における機能を実現することが可能な機器、装置を総称している。
【００９５】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、サーバをクライアントのうちの１つの筐体内に設置し、そのクライアントとＣＰＵやその他の機器を共有してもよい。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００９６】
【図１】双曲平面の一例を示す図。
【図２】二葉双曲面の一例を示す図。
【図３】一葉双曲面の一例を示す図。
【図４】（ａ）は実施形態のゲーム装置による表示の一例を示す図、（ｂ）は従来のユークリッド平面上のゲームによる表示の一例を示す図。
【図５】実施形態のゲーム装置の概略とデータの流れの概要を示す図。
【図６】実施形態のゲーム装置のブロック図。
【図７】図６のサーバの動作の一例を示すフローチャート。
【図８】図６のクライアントの動作の一例を示すフローチャート。
【図９】（ａ）はオブジェクトの位置と向きの入力変数を示す図、（ｂ）はオブジェクトの頂点の入力変数を示す図。
【図１０】多角形の衝突判定領域を持つオブジェクトの衝突判定の概要を示す図。
【図１１】多角形の衝突判定領域を持つオブジェクトのデータ構造を示す図。
【図１２】多角形の衝突判定領域を持つオブジェクトの衝突判定の一例を示すフローチャート。
【符号の説明】
【００９７】
５０１・・・サーバ、５０２、５０３・・・クライアント、６０１、６１１・・・ＣＰＵ、６０２、６１２・・・プログラム記録部、６０３・・・データ更新部、６０４、６１４・・・Ｉ／Ｏポート、６１３・・・データ記録部、６１５・・・ＧＰＵ、６１６・・・入力部、６１７・・・出力部。
【図１】
2009066137.tif 000020
【図２】
2009066137.tif 000021
【図３】
2009066137.tif 000022
【図４】
2009066137.tif 000023
【図５】
2009066137.tif 000024
【図６】
2009066137.tif 000025
【図７】
2009066137.tif 000026
【図８】
2009066137.tif 000027
【図９】
2009066137.tif 000028
【図１０】
2009066137.tif 000029
【図１１】
2009066137.tif 000030
【図１２】
2009066137.tif 000031