(57)【特許請求の範囲】
【請求項１】
３次元空間内に配置されたオブジェクトのデータを保持する保持部に保持されたデータを参照して、前記３次元空間内に配置されたオブジェクトをレンダリングする機能と、
２次元平面内の２本の座標軸に平行な方向を入力する入力装置により入力可能な方向に、前記３次元空間内に設定された３本の座標軸に平行な方向のいずれかを割り当て、前記入力装置から方向の入力を受け付けると、入力された方向に割り当てられた方向へ移動対象を移動させる機能と、
前記３本の座標軸に平行な方向のうち、前記入力装置により入力可能な方向に割り当てられた方向を識別可能な態様で前記移動対象を表示させ、又は、前記入力装置により入力可能な方向に割り当てられた方向を示す図形を前記移動対象の近傍に表示させる機能と、
をコンピュータに実現させることを特徴とするゲーム制御プログラム。
【請求項２】
前記移動対象を移動させる機能は、前記３本の座標軸に平行な方向のうち、前記レンダリングする機能により生成された２次元の画面において、前記入力装置により入力可能な方向のそれぞれとのなす角度が最も小さい方向を、前記入力装置により入力可能な方向に割り当てることを特徴とする請求項１に記載のゲーム制御プログラム。
【請求項３】
視点位置又は視線方向の変更指示を受け付けて、前記視点位置又は前記視線方向を変更する機能を更にコンピュータに実現させ、
前記移動対象を移動させる機能は、所定のタイミングで、前記３本の座標軸に平行な方向と前記入力装置により入力可能な方向とのなす角を再評価し、前記入力装置により入力可能な方向に割り当てる方向を変更することを特徴とする請求項１又は２に記載のゲーム制御プログラム。
【請求項４】
前記レンダリングする機能は、平行投影変換により前記オブジェクトをレンダリングすることを特徴とする請求項１から３のいずれかに記載のゲーム制御プログラム。
【請求項５】
３次元空間内に配置されたオブジェクトのデータを保持する保持部と、
前記保持部に保持されたデータを参照して、前記３次元空間内に配置されたオブジェクトをレンダリングするレンダリング部と、
２次元平面内の２本の座標軸に平行な方向を入力する入力装置により入力可能な方向に、前記３次元空間内に設定された３本の座標軸に平行な方向のいずれかを割り当て、前記入力装置から方向の入力を受け付けると、入力された方向に割り当てられた方向へ移動対象を移動させる制御部と、を備え、
前記制御部は、前記３本の座標軸に平行な方向のうち、前記入力装置により入力可能な方向に割り当てられた方向を識別可能な態様で前記移動対象を表示させ、又は、前記入力装置により入力可能な方向に割り当てられた方向を示す図形を前記移動対象の近傍に表示させる
ことを特徴とするゲーム装置。
【請求項６】
コンピュータに備えられたレンダリング部が、３次元空間内に配置されたオブジェクトのデータを保持する保持部に保持されたデータを参照して、前記３次元空間内に配置されたオブジェクトをレンダリングするステップと、
コンピュータに備えられた制御部が、２次元平面内の２本の座標軸に平行な方向を入力する入力装置により入力可能な方向に、前記３次元空間内に設定された３本の座標軸に平行な方向のいずれかを割り当て、前記入力装置から方向の入力を受け付けると、入力された方向に割り当てられた方向へ移動対象を移動させるステップと、
前記制御部が、前記３本の座標軸に平行な方向のうち、前記入力装置により入力可能な方向に割り当てられた方向を識別可能な態様で前記移動対象を表示させ、又は、前記入力装置により入力可能な方向に割り当てられた方向を示す図形を前記移動対象の近傍に表示させるステップと、
を備えることを特徴とするゲーム制御方法。
【請求項７】
請求項１から４のいずれかに記載のゲーム制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム制御技術に関し、とくに、３次元空間内に作成されたオブジェクトの上をキャラクタに移動させるゲームを制御するゲーム装置、ゲーム制御方法、及びゲーム制御プログラムに関する。
【背景技術】
【０００２】
「だまし絵」は、平行投影変換の特性を巧みに利用して、現実にはあり得ない不思議な３次元世界を２次元平面上に表現している。例えば、エッシャーの「上昇と下降」は、実際には高さの異なる位置にある階段を、あたかもつながっているかのように描くことで、１周すると元の位置に戻り、無限に上昇又は下降し続ける不思議な階段を表現している。
【０００３】
本発明者は、上述しただまし絵のトリックを利用した全く新しいゲームを想到し、下記ＵＲＬにて公開している。
【非特許文献１】藤木淳（Jun Fujiki）、「OLE Coordinate System」、［online］、平成１８年１０月６日、藤木淳（Jun Fujiki）、［平成２０年２月１５日検索］、インターネット＜URL：http://tserve01.aid.design.kyushu-u.ac.jp/~fujiki/ole_coordinate_system/index.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明者らは、このような新しいゲームにおいて、プレイヤーの利便性を向上させる技術を想到するに至った。
【０００５】
本発明はこうした状況に鑑みてなされたものであり、その目的は、より娯楽性の高いゲーム制御技術を提供することにある。
【課題を解決するための手段】
【０００６】
本発明のある態様は、ゲーム制御プログラムに関する。このゲーム制御プログラムは、視点位置及び視線方向を設定し、３次元空間内に配置されたオブジェクトのデータを保持する保持部に保持されたデータを参照して、前記３次元空間内に配置されたオブジェクトをレンダリングする機能と、方向を入力する入力装置により入力可能な方向のそれぞれに、前記３次元空間内に設定された３本の座標軸に平行な方向のいずれかを割り当て、前記入力装置から方向の入力を受け付けると、入力された方向に割り当てられた方向へポインタを移動させる機能と、をコンピュータに実現させることを特徴とする。
【０００７】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００８】
本発明によれば、より娯楽性の高いゲーム制御技術を提供することができる。
【発明を実施するための最良の形態】
【０００９】
（第１の実施の形態）
実施の形態に係るゲーム装置は、３次元空間内に配置された立体的な通路に沿ってキャラクタを所定の位置に移動させるゲームを提供する。本実施の形態のゲームにおいては、だまし絵のトリックを応用した、現実の３次元空間ではあり得ない新しい規則に則ってキャラクタを移動させる。まず、ゲームの概要について説明する。
【００１０】
図１は、実施の形態に係るゲーム装置により制御されるゲームにおける３次元空間の例を示す。３次元空間内には、立方体のブロック８０と、高さの異なる位置に配置されたブロック間をつなぐ階段８１とを組み合わせて形成された複数の通路８６及び８７が設けられている。通路上には、通路の上底面に沿って自動的に移動するキャラクタであるキャスト８４と、静止したキャラクタであるエコー８５が配置されており、プレイヤーは、キャスト８４がエコー８５に接触するようにキャスト８４を移動させる。通路上には、更に、キャスト８４を通路の上底面から離れる方向へ移動させる機能が割り当てられる。具体的には、キャスト８４を跳躍させる機能を有するファン８２と、キャスト８４を落下させる機能を有するホール８３が配置されている。なお、ブロック８０は、３次元空間内に設定された３本の座標軸のそれぞれに平行な辺を有する平行六面体であってもよく、直交座標系においては直方体であってもよいが、本実施の形態では理解を容易にするために立方体とする。
【００１１】
キャスト８４が配置された通路８６と、エコー８５が配置された通路８７は、３次元空間内では離間しているので、キャスト８４が通路８６に沿って移動している限り、エコー８５に接触することはない。しかし、本実施の形態では、以下の５つの新しい規則を採用し、空間的に離間した通路間をキャスト８４が移動することを可能とする。
【００１２】
１．主観的移動
図２（ａ）（ｂ）は、本実施の形態で採用される第１の規則を説明するための図である。図２（ａ）において、ブロック９０ａとブロック９０ｂは高さの異なる位置に配置されているが、図２（ｂ）に示したように視点を移動すると、あたかもつながっているかのように見える。本実施の形態では、このように、あたかもつながっているかのように見えるブロック同士を、実際につながっているものとして扱い、ブロック９０ａからブロック９０ｂへのキャスト８４の移動を可能とする。この規則を「主観的移動」と呼ぶ。
【００１３】
２．主観的着地
図３（ａ）（ｂ）は、本実施の形態で採用される第２の規則を説明するための図である。図３（ａ）において、ホール８３が設けられたブロック９１ａとブロック９１ｂとは同じ高さに配置されているが、図３（ｂ）に示したように視点を移動すると、ブロック９１ｂはブロック９１ａの真下にあるかのように見える。本実施の形態では、このように、ホール８３からキャスト８４が落下したとき、あたかも足下にあるかのように見えるブロック９１ｂに、キャスト８４が実際に着地することを可能とする。この規則を「主観的着地」と呼ぶ。
【００１４】
３．主観的存在
図４（ａ）（ｂ）は、本実施の形態で採用される第３の規則を説明するための図である。図４（ａ）において、ブロック９２ａとブロック９２ｂは、空間的に離間した位置に配置されているが、図４（ｂ）に示したように視点を移動すると、ブロック９２ａとブロック９２ｂの間の隙間がオブジェクト９２ｃにより隠され、あたかもつながっているかのように見える。本実施の形態では、このように、他のオブジェクトにより隠された位置に、ブロックが存在しているものとして扱い、ブロック９２ａからブロック９２ｂへのキャスト８４の移動を可能とする。この規則を「主観的存在」と呼ぶ。
【００１５】
４．主観的不在
図５（ａ）（ｂ）は、本実施の形態で採用される第４の規則を説明するための図である。図５（ａ）において、ブロック９３ａにはホール８３が設けられているが、図５（ｂ）に示したように視点を移動すると、ブロック９３ａに設けられたホール８３が他の通路により隠され、あたかもホール８３が存在しないかのように見える。本実施の形態では、このように、他のオブジェクトにより隠されたファン８２及びホール８３を、実際に存在しないものとして扱い、ファン８２及びホール８３の機能を発現しない。この規則を「主観的不在」と呼ぶ。
【００１６】
５．主観的跳躍
図６（ａ）（ｂ）は、本実施の形態で採用される第５の規則を説明するための図である。図６（ａ）において、ファン８２が設けられたブロック９４ａとブロック９４ｂとは空間的に大きく離間した位置に配置されているが、図６（ｂ）に示したように視点を移動すると、ブロック９４ａとブロック９４ｂとの間の距離が縮まったかのように見える。本実施の形態では、このように、ファン８２によりキャスト８４が跳躍したとき、あたかもファン８２の近くに存在するように見えるブロック９４ｂに、キャスト８４が実際に着地することを可能とする。この規則を「主観的跳躍」と呼ぶ。
【００１７】
上述した５つの規則を用いることにより、プレイヤーは、３次元空間内では実際には離間した通路間であっても、視点位置を操作することでキャスト８４を移動させることができる。
【００１８】
図７は、実施の形態に係るゲーム装置１０の構成を示す。ゲーム装置１０は、コントローラ２０、入力受付部３０、制御部４０、形状データ保持部６０、画面生成部６６、及び表示装置６８を備える。これらの構成は、ハードウエアコンポーネントでいえば、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００１９】
入力受付部３０は、プレイヤーが操作するコントローラ２０から入力される制御信号を受け付ける。制御部４０は、入力受付部３０が受け付けたプレイヤーからの操作入力に基づいて視点位置を制御しつつ、３次元空間内に配置された立体的な通路に沿ってキャストを移動させるゲームを進行させる。形状データ保持部６０は、３次元空間内に配置されたオブジェクトのデータを保持する。画面生成部６６は、制御部４０により制御されるゲームの画面を生成し、表示装置６８に表示させる。
【００２０】
図８は、コントローラ２０の外観を示す。コントローラ２０の上面には、十字キー２１、△ボタン２２、□ボタン２３、○ボタン２４、×ボタン２５、アナログスティック２６及び２７が設けられている。また、コントローラ２０の側面には、Ｌボタン２８及びＲボタン２９が設けられている。本実施の形態では、十字キー２１及びアナログスティック２６及び２７には、視点位置を入力した方向へ移動させる機能が、Ｒボタン２９には、視点位置の移動を高速化する機能が、それぞれ割り当てられている。また、△ボタン２２には、キャスト８４を停止させる機能が、×ボタン２５には、キャスト８４の移動を高速化する機能が、それぞれ割り当てられている。また、□ボタン２３には、後述するように、主観的移動が可能なブロックの探索を要求する機能が、○ボタン２４には、探索対象を変更する機能が、それぞれ割り当てられている。
【００２１】
図９は、コントローラ２０の別の例を示す。図９は、携帯型のゲーム装置１０の外観を示しており、ゲーム装置１０の上面には、コントローラ２０と表示装置６８が設けられている。図８に示したコントローラ２０と同様の機能を有する部材には、同じ符号を付している。
【００２２】
形状データ保持部６０は、３次元空間内に配置されたオブジェクトのデータを保持する。形状データ保持部６０は、ブロック８０や階段８１などのオブジェクトの中心位置の３次元ワールド座標、キャスト８４やエコー８５などのキャラクタの現在位置の３次元ワールド座標、ファン８２及びホール８３が配置されたブロック８０の識別情報などを保持する。また、形状データ保持部６０は、ブロック８０、階段８１、ファン８２、ホール８３、キャスト８４、エコー８５などの３次元形状データを保持する。
【００２３】
本実施の形態では、同じ形状の立方体のブロック８０を３次元空間に配置する。これにより、プレイヤーが通路の立体的な形状を把握しやすくなるとともに、上述した規則が適用されやすいようにすることができる。また、レンダリングの負荷を低減させることができる。また、３次元格子の決まった位置にブロック８０が配置されるので、立方体の各辺を単位ベクトルとする座標系における座標でブロック８０の位置を表現してもよい。これにより、データ量を低減することができるとともに、後述する探索の処理負荷を低減させることができる。
【００２４】
視点変更部４１は、入力受付部３０から伝達される、プレイヤーが入力した視点位置又は視線方向の変更指示を受け付けて、３次元空間をレンダリングするための視点位置又は視線方向を変更する。視点変更部４１は、３次元空間内に設定された所定位置を中心とした球面に沿って視点位置を移動させてもよい。このとき、視点位置から所定位置への方向を視線方向としてもよい。視点変更部４１は、変更した視点位置を第１レンダリング部４２及び第２レンダリング部４３へ通知する。
【００２５】
図１０は、視点変更部４１の動作について説明するための図である。視点変更部４１は、コントローラ２０の十字キー２１又はアナログスティック２６による方向の入力を受け付けると、点９６を中心とした球面に沿って、入力された方向へ視点位置９５を移動させる。視点位置９５から中心の点９６へ向かう方向が視線方向となる。球の半径は、３次元空間に配置されたオブジェクト全体の大きさなどに応じて、例えば全体が画面におさまるように伸縮されてもよい。なお、本実施の形態では、視点変更部４１が視点位置を変更するが、別の例では、オブジェクトのワールド座標に回転変換を施すことにより、３次元空間を回転させてもよい。
【００２６】
視点変更部４１は、視線方向が、キャスト８４が移動するブロック８０の上底面に平行又は垂直となる状態が所定時間以上維持されることを禁止する。このように視点位置を制限する理由を以下に述べる。
【００２７】
図１１（ａ）（ｂ）は、視点位置を真横に移動させることを禁止する理由を説明するための図である。図１１（ａ）に示した３次元空間を矢印の方向、すなわち真横から見たとき、図１１（ｂ）に示すように、通路８６の上面と通路８７の上面は一致するので、主観的移動により通路８６と通路８７の間を容易に行き来することができてしまう。また、通路の上面に配置されるファン８２及びホール８３は全て見えなくなるので、主観的不在により全てのファン８２及びホール８３は機能しなくなる。このように、水平方向に視点位置を移動させることを許すと、ゲームが極端に容易になってしまうことがある。
【００２８】
図１２（ａ）（ｂ）は、視点位置を真上に移動させることを禁止する理由を説明するための図である。図１２（ａ）に示した３次元空間を矢印の方向、すなわち真上から見たとき、図１２（ｂ）に示すように、実際には高さの異なる位置に配置されたブロック９４ａを含む通路とブロック９４ｂを含む通路がつながって見えるので、主観的移動によりブロック９４ａとブロック９４との間を容易に行き来することができてしまう。このように、真上又は真下に視点位置を移動させることを許すと、ゲームが極端に容易になってしまうことがある。
【００２９】
以上のように、本実施の形態のゲームでは、主観的移動によりつながって見える通路間を移動することができるという規則を採用しているため、真上、真下、真横という特定の方向に視点位置を移動することを許すと、ゲームの難易度が極端に変わってしまうという新たな問題が生じる。したがって、視点変更部４１は、図１０に示すように、視点位置の変更を、上方向は水平から６５°まで、下方向は水平から４０°までの範囲に制限し、それ以上視点位置を変更する指示入力があっても無視して、上記の範囲外に視点位置を変更することを禁止する。また、真横の方向を含む水平から上下５°以内の範囲内に視点位置が入ったとき、視点位置を範囲外へ強制的に移動させる。
【００３０】
図１３は、視点位置を下方向へ移動させたときの視点変更部４１の動作を説明するための図である。プレイヤーが、視点位置を位置９５から下方向へ移動させたとき、視点変更部４１は、水平方向から上へ５°の位置９７ａまでは視点位置を連続的に下方向へ移動させる。位置９７ａにおいて、更に視点位置を下方向へ移動させる操作入力を受け付けると、視点変更部４１は、視点位置を水平方向から下へ５°の位置９７ｂまで強制的に移動させ、位置９７ａから位置９７ｂまでの間における視点位置の停止を禁止する。視点変更部４１は、位置９７ａから位置９７ｂまで非連続的に視点位置をジャンプさせてもよいし、連続的にスライドさせてもよい。いずれにしても、水平方向すなわち真横の位置に視点位置が停止させないように視点位置を制御する。
【００３１】
後者の例において、視点変更部４１は、位置９７ａから位置９７ｂまで連続的に視点位置を変更している間に、プレイヤーから視点位置を下方向以外の方向へ変更させる指示入力を受け付けると、新たに入力された方向へ視点位置を移動させつつ、水平方向から上下へ５°の範囲から外れるように視点位置を移動させてもよい。例えば、位置９７ａから位置９７ｂまで視点位置を変更している間に、上方向へ視点位置を変更させる指示入力を受け付けると、その時点の位置から移動方向を上方向へ切り替え、位置９７ａまで視点位置を連続的に変更する。また、右方向へ視点位置を変更させる指示入力を受け付けると、その時点の位置から移動方向を右下方向へ切り替え、水平方向から下へ５°の位置まで視点位置を移動させる。要は、水平方向から上下へ５°の範囲内に所定時間以上視点位置が維持されないようにすればよい。
【００３２】
図１４は、視点位置を上方向に移動させたときの視点変更部４１の動作を説明するための図である。プレイヤーが、視点位置を位置９５から上方向へ移動させたとき、視点変更部４１は、水平方向から上へ６５°の位置９８ａまでは視点位置を連続的に上方向へ移動させる。位置９８ａにおいて、更に視点位置を上方向へ移動させる操作入力を受け付けると、視点変更部４１は、それを無視し、真上への視点位置の移動を禁止する。
【００３３】
図１５は、視点位置を上方向に移動させたときの視点変更部４１の動作の別の例を示す。位置９８ａにおいて、更に視点位置を上方向へ移動させる操作入力を受け付けると、視点変更部４１は、視点位置を逆側の位置９８ｂまで強制的に移動させ、位置９８ａから位置９８ｂまでの間における視点位置の停止を禁止する。この場合、そのまま視点位置を逆側へ移動させると、画面の上下方向が逆転し、操作入力の方向と視点位置の移動方向とが逆転してしまうので、画面の上下方向を反転させてもよい。
【００３４】
第１レンダリング部４２は、視点変更部４１から視点位置を取得し、形状データ保持部６０に保持されたデータを参照して、３次元空間に配置されたオブジェクトを平行投影変換によりレンダリングする。第１レンダリング部４２は、通知された視点位置から３次元空間内に設定された所定位置へ向かう方向を視線方向に設定してレンダリングしてもよい。すなわち、第１レンダリング部４２は、視点位置から所定位置へ向かうベクトルを法線ベクトルとする平面を投影面として３次元空間を投影する。
【００３５】
第２レンダリング部４３は、第１レンダリング部４２と同様に、視点変更部４１から視点位置を取得し、形状データ保持部６０に保持されたデータを参照して、ブロック８０及び階段８１をレンダリングする。第２レンダリング部４３は、各ピクセルの画素値を算出して表示画面を生成するのではなく、各ピクセルにブロックのＩＤ、面のＩＤ、Ｚ値を格納する。第２レンダリング部４３は、さらに、ファン８２やホール８３の有無を示す情報を各ピクセルに格納してもよい。このレンダリング結果は、後述するように、キャラクタ制御部４４により利用される。第２レンダリング部４３の機能の一部又は全部が、第１レンダリング部４２と共有されてもよい。
【００３６】
キャラクタ制御部４４は、３次元空間内に配置されたブロック８０により形成された通路の上底面に沿ってキャスト８４などのキャラクタを移動させる。キャラクタ制御部４４は、キャスト８４を所定の速度で移動させ、第１レンダリング部４２がレンダリングを行う時間間隔に合わせてキャストの現在位置の３次元ワールド座標を算出し、形状データ保持部６０を更新する。キャラクタ制御部４４は、プレイヤーが×ボタン２５を押下している間は、通常よりも速い速度でキャスト８４を移動させる。キャラクタ制御部４４は、プレイヤーが△ボタン２２を押下すると、キャスト８４の移動を停止させ、プレイヤーが再び△ボタン２２を押下すると、キャスト８４の移動を再開させる。
【００３７】
キャラクタ制御部４４は、キャスト８４がブロック８０の中央を通過する前に、キャスト８４を次に移動させるブロックを判定する。キャラクタ制御部４４は、キャスト８４の足下にあるブロックの前後左右に隣接するブロック又は階段が存在するか否かを次のように判定し、移動先のブロックを決定する。
【００３８】
キャラクタ制御部４４は、まず、キャスト８４の足下にあるブロックを基準にして、進行方向の左側に隣接するブロックが存在するか否かを判定する。キャラクタ制御部４４は、３次元空間内において左側に隣接するブロックが実際に存在する場合は、そのブロックを移動先に設定する。キャラクタ制御部４４は、３次元空間内において左側に隣接するブロックにファン８２又はホール８３が配置されていても、レンダリングされた２次元平面においてオブジェクトにより隠されて見えない場合は、それらの機能を発現させない（主観的不在）。
【００３９】
キャラクタ制御部４４は、３次元空間内において左側に隣接するブロックの位置に、実際にはブロックが存在しなくても、その位置に仮想ブロックを配置したとき、２次元平面に仮想ブロックが描画されるはずの位置から第１の範囲内に描画されているブロックがあれば、そのブロックが、３次元空間内において左側に隣接する位置に実際に存在するものとして、そのブロックを移動先に設定する（主観的移動）。キャラクタ制御部４４は、第２レンダリング部４３のレンダリング結果を参照して移動先のブロックのＩＤを取得し、更に形状データ保持部６０を参照してそのブロックの３次元ワールド座標を取得することにより、そのブロックに移動した後のキャスト８４の現在位置の３次元ワールド座標を算出する。
【００４０】
キャラクタ制御部４４は、３次元空間内において左側に隣接するブロックの位置が、レンダリングされた２次元平面においてオブジェクトにより隠されて見えない場合は、実際にその位置にブロックが存在しなくても、ブロックが存在するものとして、そのブロックを移動先に設定する（主観的存在）。キャラクタ制御部４４は、実際には存在しないブロックの上を主観的存在によりキャスト８４が通過している間に、キャスト８４の足下にブロックが存在していないことが見える位置に視点位置が変更された場合、キャスト８４をその位置から下方へ落下させる。このとき、キャスト８４がホール８３から落下するときと同様に、２次元平面内でキャスト８４の下方にブロックが存在すれば、そのブロックにキャスト８４を着地させる。
【００４１】
キャラクタ制御部４４は、進行方向の左側に隣接するブロックが存在しなければ、前、右、後ろの順に移動先のブロックを探索する。キャラクタ制御部４４は、キャスト８４が前後左右に隣接するいずれのブロックにも移動できないと判定した場合、キャスト８４をその位置に留まらせる。
【００４２】
キャラクタ制御部４４は、キャスト８４がファン８２の上を通過したとき、ファン８２に設定された初速度でキャスト８４を跳躍させる。ただし、キャラクタ制御部４４は、３次元空間内でキャスト８４の軌跡を計算するのではなく、レンダリングされた２次元空間内で軌跡を計算する。キャラクタ制御部４４は、第２レンダリング部４３によりレンダリングされた２次元平面のデータを参照して、跳躍したキャスト８４が落下するときの軌跡上にブロックが存在するか否かを判定し、ブロックが存在すれば、キャスト８４をそのブロックに着地させる。このとき、キャラクタ制御部４４は、落下するキャスト８４が画面で最も手前になるようにＺ値を設定し、ブロックのＺ値にかかわらず２次元平面内で軌跡上に存在するブロックに着地させる。キャラクタ制御部４４は、形状データ保持部６０を参照して、着地したブロックのＩＤからキャスト８４の現在位置の３次元ワールド座標を算出し、形状データ保持部６０を更新する。
【００４３】
キャラクタ制御部４４は、キャスト８４がホール８３の上を通過したとき、キャスト８４をホール８３の下方へ落下させる。キャラクタ制御部４４は、ホール８３が設けられたブロックと３次元空間内で一体になっているオブジェクトよりも下方へ落下して、キャスト８４が全て見えるようになった後、２次元平面内でキャスト８４の下方にブロックが存在するか否かを判定し、ブロックが存在すればキャスト８４をそのブロックに着地させる。キャラクタ制御部４４は、形状データ保持部６０を参照して、着地したブロックのＩＤからキャスト８４の現在位置の３次元ワールド座標を算出し、形状データ保持部６０を更新する。
【００４４】
探索部４５は、レンダリングされた２次元平面における距離が所定の範囲内にあるブロックの組を探索し、探索されたブロック同士が２次元平面において隣接して描画されるように、視点位置又は視線方向を変更する。より具体的には、探索部４５は、探索対象となるブロックに隣接する位置に仮想ブロックを配置したとき、２次元平面における仮想ブロックとの距離が第１の範囲よりも長い第２の範囲内にあるブロックを探索する。該当するブロックがあれば、探索部４５は、探索されたブロックと仮想ブロックとの距離が第１の範囲内になるように、視点位置又は視線方向を変更する。探索部４５は、任意のタイミングで探索を行ってもよいし、視点位置が変更された後に探索を行ってもよいし、プレイヤーが□ボタン２３を押下して探索を要求したときに探索を行ってもよい。
【００４５】
図１６（ａ）（ｂ）は、探索部４５の動作を説明するための図である。図１６（ａ）において、探索部４５は、探索を要求する指示入力を受け付けると、まず、その時点でキャスト８４が存在するブロック９０ａを探索対象とする。探索部４５は、ブロック９０ａを基準として、キャスト８４の進行方向の左側に仮想ブロック９９ａを仮想的に配置させ、第２レンダリング部４３により生成された２次元平面において、仮想ブロック９９ａから第２の範囲内に描画されているブロックが存在するか否かを判定する。図１６（ａ）の例では、仮想ブロック９９ａの近隣にはブロックは存在しないので、つづいて、ブロック９０ａを基準として、キャスト８４の進行方向の前方に仮想ブロック９９ｂを仮想的に配置させ、２次元平面において仮想ブロック９９ｂから第２の範囲内に描画されているブロックが存在するか否かを判定する。図１６（ａ）の例では、ブロック９０ｂは仮想ブロック９９ｂの近傍に描画されているので、探索部４５は、ブロック９０ｂを探索結果として取得する。このように、探索部４５は、探索対象ブロックの前後左右に隣接する位置に仮想ブロック９９ａ〜９９ｄを仮想的に配置し、２次元平面において仮想ブロック９９ａ〜９９９ｄから第２の範囲内に描画されているブロックを探索する。このとき、仮想ブロック９９ｄの位置には、３次元空間において実際にブロックが配置されているので、仮想ブロック９９ｄは探索対象外とする。
【００４６】
探索されたブロック９０ｂは、２次元平面において、仮想ブロック９９ｂから第１の範囲以上離間しているので、このままでは、キャラクタ制御部４４はブロック９０ａとブロック９０ｂが隣接しているとは判定しないので、主観的移動が成立しない。探索部４５は、探索されたブロック９０ｂが探索対象のブロック９０ａに隣接して描画されるように、視点位置を変更させる。具体的には、ブロック９０ｂと仮想ブロック９９ｂの中心間を結ぶベクトルが視線方向と平行になるように、球面の中心の点９６からそのベクトルに平行な直線を引いて、球面との交点を視点位置とすればよい。これにより、２次元平面においてそれらのブロックは同じ位置にレンダリングされることになるので、図１６（ｂ）に示すように、ブロック９０ａとブロック９０ｂが隣接しているように描画され、これらのブロック間で主観的移動が成立する。
【００４７】
ブロック９０ａから主観的移動が可能なブロックが発見されなかった場合は、探索部４５は、キャスト８４が次に移動するブロックを探索対象として、再び探索を行う。探索部４５は、このように、キャスト８４の現在位置から所定の範囲内にあるブロック、例えば、キャスト８４が移動する予定の５つ先のブロックまでを探索対象として探索を行ってもよい。
【００４８】
プレイヤーが視点位置の変更により主観的移動を成立させるためには、ブロック同士が隣接して見えるように視点位置を微妙に調整する必要があるが、操作体系に不慣れなプレイヤーには微妙な調整が困難な場合がある。本実施の形態では、ブロック同士が隣接して見えるように視点位置を自動的に変更するので、プレイヤーの利便性を向上させることができる。また、探索対象をキャストの周囲に限定することで、キャストから遠く離れたブロックが偶然近接して描画されていたために、視点位置が意図しない位置に自動的に変更され、プレイヤーが混乱することを防ぐことができる。さらに、探索部４５は、キャラクタ制御部４４がキャスト８４の移動先のブロックを判定するときと同様に、キャスト８４が存在するブロックを基準として、進行方向の左、前、右、後ろの順に主観的移動が可能なブロックを探索するので、プレイヤーがキャスト８４を移動させようとしているブロックを優先的に探索し、主観的移動が成立するように視点位置を移動させることができる。これにより、プレイヤーの利便性を向上させることができる。
【００４９】
（第２の実施の形態）
つづいて、上述したゲーム装置において用いられる３次元空間を構築する技術について説明する。図１７は、第２の実施の形態に係るゲーム装置１０の構成を示す。本実施の形態のゲーム装置１０は、図７に示した第１の実施の形態のゲーム装置１０の構成に比して、制御部４０が、キャラクタ制御部４４及び探索部４５に代えて、カーソル制御部４６、スナップ制御部４７、及び編集部４８を備える。その他の構成及び動作は、第１の実施の形態と同様である。なお、第１の実施の形態のゲーム装置１０と、第２の実施の形態のゲーム装置１０は、同一のゲーム装置により実現されてもよいし、異なるゲーム装置により実現されてもよい。
【００５０】
カーソル制御部４６は、３次元空間を編集するための画面において、ユーザの操作に応じてカーソルを移動させる。スナップ制御部４７は、３次元空間を編集するための画面において、ユーザがカーソルを最寄りのオブジェクトへスナップさせる指示を入力したときに、カーソルの現在位置から最も近いオブジェクトを判定して、その位置にカーソルを移動させる。編集部４８は、３次元空間を編集するための画面において、ユーザの操作に応じてブロックや階段などのオブジェクトを配置させたり削除したりする。
【００５１】
図１８は、３次元空間を編集するための画面の例を示す。編集画面７０には、３次元空間に配置するオブジェクトを選択するための選択画面７１と、オブジェクトの配置位置を選択するためのカーソル７２が表示されている。編集画面７０において、コントローラ２０のアナログスティック２６及び２７には、視点位置を入力した方向へ移動させる機能が、十字キー２１には、カーソル７２を入力した方向へ移動させる機能が、それぞれ割り当てられている。また、Ｒボタン２９には、視点位置の移動を高速化する機能が、Ｌボタン２８には、オブジェクトの向きを変更する機能が、それぞれ割り当てられている。また、△ボタン２２には、選択画面７１をアクティブにして配置するオブジェクトを変更する機能が、○ボタン２４には、選択されているオブジェクトをカーソル７２の位置に配置させる機能が、×ボタン２５には、カーソル７２の位置に既に配置されているオブジェクトを削除する機能が、それぞれ割り当てられている。また、□ボタン２３には、後述するように、カーソル７２の位置を、既に配置されたオブジェクトのうちカーソル７２の現在位置に最も近い位置に移動させる機能が割り当てられている。
【００５２】
編集部４８は、○ボタン２４の入力を受け付けると、現在のカーソル７２の位置の座標をカーソル制御部４６から取得し、取得した座標と、現在選択されているオブジェクトの種別を、形状データ保持部６０に記録する。編集部４８は、×ボタン２５の入力を受け付けると、現在のカーソル７２の位置の座標をカーソル制御部４６から取得し、取得した座標に既に配置されているオブジェクトを形状データ保持部６０から検索し、既にオブジェクトが配置されていれば、そのオブジェクトのデータを形状データ保持部６０から削除する。
【００５３】
視点変更部４１は、第１の実施の形態と同様に、コントローラ２０のアナログスティック２６及び２７の入力を受け付けて、指示された方向へ視点を移動させる。第１レンダリング部４２及び第２レンダリング部４３は、第１の実施の形態と同様に、視点変更部４１から視点位置を取得し、形状データ保持部６０に保持されたデータを参照して、３次元空間に既に配置されたオブジェクトを平行投影変換によりレンダリングする。
【００５４】
カーソル制御部４６は、３次元空間に設定された３本の座標軸に平行な方向へカーソル７２を移動させる。本実施の形態では、カーソル７２は、直行座標軸Ｘ、Ｙ、Ｚに平行な単位長の辺を有する立方体、すなわち単位格子であり、３次元空間内を、直行座標軸に沿って前（Ｙ軸正方向）後（Ｙ軸負方向）左（Ｘ軸正方向）右（Ｘ軸負方向）上（Ｚ軸正方向）下（Ｚ軸負方向）の６方向に単位長ずつ移動される。カーソル制御部４６は、十字キー２１の上下左右の４つのボタンのそれぞれに、これらの６方向のうち４方向を割り当てて、入力された方向にカーソル７２を移動させる。
【００５５】
より具体的には、カーソル制御部４６は、Ｘ軸正負、Ｙ軸正負、Ｚ軸正負の６方向のうち、第２レンダリング部４３により生成された２次元平面において、上下左右の方向とのなす角度が最も小さい方向へ移動させる機能を、十字キー２１の上下左右のそれぞれのボタンに割り当てる。例えば、図１８の例では、十字キー２１の上ボタンはＺ軸正方向に、左ボタンはＹ軸負方向に、下ボタンはＺ軸負方向に、右ボタンはＹ軸正方向に、それぞれ割り当てられる。これにより、十字キー２１の入力方向と、編集画面上においてカーソル７２が移動する方向がほぼ一致するので、直感的に分かりやすいユーザインタフェースを提供することができる。
【００５６】
カーソル制御部４６は、３次元空間における６つの単位ベクトル、すなわち、（１，０，０）、（−１，０，０）、（０，１，０）、（０，−１，０）、（０，０，１）、（０，０，−１）を、第２レンダリング部４３により２次元平面にレンダリングさせ、２次元平面における４つの単位ベクトル、すなわち、（１，０）、（−１，０）、（０，１）、（０，−１）とのなす角度を算出することにより、上下左右のそれぞれの方向に最も近い方向を判定してもよい。
【００５７】
カーソル制御部４６は、カーソル７２又はカーソル７２の近傍に表示されるオブジェクトを、カーソルが移動する方向を識別可能な態様で表示させる。例えば、図１８の例では、十字キー２１による移動が、Ｚ軸正負方向とＹ軸正負方向に割り当てられているので、カーソル７２の立方体のうち、Ｙ軸及びＺ軸に垂直な面の中心付近に図形７３が表示されている。カーソル制御部４６は、カーソル７２の６面のうち、十字キー２１による移動が割り当てられている方向に垂直な４面を他の面とは異なる色で描画してもよい。また、十字キー２１による移動が割り当てられている方向を示す矢印などを表示してもよい。これにより、ユーザは、十字キー２１の入力によりカーソル７２が移動する方向を視覚的に分かりやすく把握することができる。
【００５８】
ユーザは、図１８の編集画面においては、カーソル７２をＸ軸に平行な方向へ移動させることはできないが、アナログスティック２６又は２７を用いて視点位置を変更することにより、Ｘ軸に平行な方向へカーソル７２を移動させることが可能となる。例えば、図１８の編集画面において、アナログスティック２６を右方向へ入力し、Ｚ軸の回りに反時計回りに視点位置を移動させると、図１９に示した編集画面になる。
【００５９】
カーソル制御部４６は、視点位置の変更に伴って、３本の座標軸のそれぞれの正負の方向と、編集画面上における上下方向との間のなす角を再評価し、十字キー２１に割り当てる移動方向を変更する。図１９の編集画面では、十字キー２１の上ボタンはＺ軸正方向に、左ボタンはＸ軸負方向に、下ボタンはＺ軸負方向に、右ボタンはＸ軸正方向に、それぞれ割り当てられる。このように、ユーザは、視点位置を変更しながら、任意の位置にカーソル７２を移動させることができる。カーソル制御部４６は、視点位置が変更されたときに、十字キー２１に割り当てる移動方向を再評価してもよいし、所定のタイミングで、例えば、所定の時間間隔で定期的に、十字キー２１に割り当てる移動方向を再評価してもよい。
【００６０】
図２０（ａ）（ｂ）（ｃ）（ｄ）は、スナップ制御部４７の動作を説明するための図である。本実施の形態では、第１レンダリング部４２が平行投影変換により３次元空間をレンダリングしているので、奥行きを把握するのが比較的難しい。例えば、図２０（ａ）に示すように、カーソル７２が、既に配置されているオブジェクトから離れた位置にあるときに、カーソル７２の位置を把握しづらいことがある。したがって、スナップ制御部４７は、□ボタン２３の入力を受け付けると、編集画面において、カーソル７２の現在位置から最も近い位置にあるオブジェクトの位置にカーソル７２を移動させる機能を提供する。
【００６１】
補助線を付した図２０（ｂ）や、視点位置を移動させた図２０（ｃ）を参照すると、３次元空間内においてカーソル７２の位置から最も近い位置にあるオブジェクトの位置は、位置７５ではなく位置７４であることが分かるが、本実施の形態では、３次元空間における実際の距離ではなく、レンダリングされた２次元平面における見た目の距離が近い位置７４にカーソル７２を移動させる。これにより、ユーザは、カーソル７２の３次元空間内における位置を正確に把握しなくても、編集画面において、カーソル７２をスナップさせたいオブジェクトに見た目に近い位置にカーソル７２を移動させて□ボタン２３を押せば、所望の位置にカーソル７２を移動させることができるので、直感的に分かりやすいユーザインタフェースを提供することができる。なお、図２０（ｃ）の編集画面において、□ボタン２３が押された場合は、スナップ制御部４７は、見た目もカーソル７２の現在位置から最も近い位置７５にカーソル７２を移動させる。
【００６２】
スナップ制御部４７は、第２レンダリング部４３によりレンダリングされた２次元平面において、カーソル７２の現在位置と、既に配置されているブロックなどのオブジェクトの配置位置の座標値を取得し、２次元平面において、カーソル７２の現在位置からの距離が最も近いオブジェクトを判定し、判定されたオブジェクトの３次元空間における位置を形状データ保持部６０から読み出して、その位置にカーソル７２を移動させる。
【００６３】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、その各構成要素や各処理プロセスの組合せにいろいろな変形が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【００６４】
【図１】実施の形態に係るゲーム装置により制御されるゲームにおける３次元空間の例を示す図である。
【図２】図２（ａ）（ｂ）は、本実施の形態で採用される第１の規則を説明するための図である。
【図３】図３（ａ）（ｂ）は、本実施の形態で採用される第２の規則を説明するための図である。
【図４】図４（ａ）（ｂ）は、本実施の形態で採用される第３の規則を説明するための図である。
【図５】図５（ａ）（ｂ）は、本実施の形態で採用される第４の規則を説明するための図である。
【図６】図６（ａ）（ｂ）は、本実施の形態で採用される第５の規則を説明するための図である。
【図７】実施の形態に係るゲーム装置の構成を示す図である。
【図８】コントローラの外観を示す図である。
【図９】コントローラの別の例を示す図である。
【図１０】視点変更部の動作について説明するための図である。
【図１１】図１１（ａ）（ｂ）は、視点位置を真横に移動させることを禁止する理由を説明するための図である。
【図１２】図１２（ａ）（ｂ）は、視点位置を真上に移動させることを禁止する理由を説明するための図である。
【図１３】視点位置を下方向へ移動させたときの視点変更部の動作を説明するための図である。
【図１４】視点位置を上方向に移動させたときの視点変更部の動作を説明するための図である。
【図１５】視点位置を上方向に移動させたときの視点変更部の動作の別の例を示す図である。
【図１６】図１６（ａ）（ｂ）は、探索部の動作を説明するための図である。
【図１７】第２の実施の形態に係るゲーム装置の構成を示す図である。
【図１８】３次元空間を編集するための画面の例を示す図である。
【図１９】３次元空間を編集するための画面の例を示す図である。
【図２０】図２０（ａ）（ｂ）（ｃ）（ｄ）は、スナップ制御部の動作を説明するための図である。
【符号の説明】
【００６５】
１０  ゲーム装置、２０  コントローラ、３０  入力受付部、４０  制御部、４１  視点変更部、４２  第１レンダリング部、４３  第２レンダリング部、４４  キャラクタ制御部、４５  探索部、４６  カーソル制御部、４７  スナップ制御部、４８  編集部。
【図１】
0005506158.tif 000002
【図２】
0005506158.tif 000003
【図３】
0005506158.tif 000004
【図４】
0005506158.tif 000005
【図５】
0005506158.tif 000006
【図６】
0005506158.tif 000007
【図７】
0005506158.tif 000008
【図８】
0005506158.tif 000009
【図９】
0005506158.tif 000010
【図１０】
0005506158.tif 000011
【図１１】
0005506158.tif 000012
【図１２】
0005506158.tif 000013
【図１３】
0005506158.tif 000014
【図１４】
0005506158.tif 000015
【図１５】
0005506158.tif 000016
【図１６】
0005506158.tif 000017
【図１７】
0005506158.tif 000018
【図１８】
0005506158.tif 000019
【図１９】
0005506158.tif 000020
【図２０】
0005506158.tif 000021