(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-29
(45)【発行日】2024-11-07
(54)【発明の名称】情報処理プログラム、情報処理システム、および情報処理方法
(51)【国際特許分類】
A63F 13/5255 20140101AFI20241030BHJP
G06F 3/0484 20220101ALI20241030BHJP
A63F 13/5252 20140101ALI20241030BHJP
A63F 13/55 20140101ALI20241030BHJP
G06T 19/00 20110101ALI20241030BHJP
【FI】
A63F13/5255
G06F3/0484
A63F13/5252
A63F13/55
G06T19/00 300A
(21)【出願番号】P 2023017466
(22)【出願日】2023-02-08
【審査請求日】2023-11-06
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】宮本 茂
(72)【発明者】
【氏名】神門 有史
【審査官】嶋田 行志
(56)【参考文献】
【文献】特開2009-056181(JP,A)
【文献】特開2014-235538(JP,A)
【文献】特開2005-230263(JP,A)
【文献】特開2006-280447(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-A63F 13/98
G06F 3/00-G06F 3/18
G06T 19/00-G06T 19/20
YouTube
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
仮想空間を、前記仮想空間
の第1カメラ方向を向い
た仮想カメラによって撮影して描画した第1の表示を行わせ、
前記第1の表示中に
入力されたユーザによる操作に応じてプレイヤオブジェクトを前記仮想空間内において移動させ、
前記ユーザによる操作に応じて、前記仮想空間を俯瞰的に表した第2の表示に切り替え、
前記第2の表示中に、前記ユーザによる操作に基づいて、前記第2の表示上の方向である第2カメラ方向を指定し、
前記第2の表示中に、前記ユーザによる操作に応じて、前記第1の表示に切り替え、
前記第1の表示への切替後の所定期間に、前記仮想カメラの向きを、前記第1カメラ方向から、前記第2カメラ方向に基づいた方向まで変化させて前記仮想空間を撮影して描画する処理を実行させる、情報処理プログラム。
【請求項2】
前記第2の表示は、前記仮想空間を上方から見た場合の地形を表現した平面画像の表示である、請求項1に記載の情報処理プログラム。
【請求項3】
前記第2カメラ方向は、前記第2の表示中に、前記ユーザが前記仮想空間の所定の地点を指定して第1の操作を行うことによって決定される、請求項1に記載の情報処理プログラム。
【請求項4】
前記第2カメラ方向は、前記プレイヤオブジェクトの位置から、前記ユーザが指定した前記仮想空間の所定の地点へ向かう方向である、請求項3に記載の情報処理プログラム。
【請求項5】
前記第2の表示中に、第2の操作を前記第1の操作と選択的に受け付け、前記仮想空間の所定の地点を指定して当該第2の操作がされた場合、前記第2の表示から前記第1の表示への切替後に、前記プレイヤオブジェクトを前記指定した地点に移動させる、請求項3に記載の情報処理プログラム。
【請求項6】
前記第2の表示中に、前記ユーザが指定した前記仮想空間の所定の地点が前記プレイヤオブジェクトが到達できない地点である場合は、前記第1の操作の受け付けを制限する、請求項4に記載の情報処理プログラム
【請求項7】
前記第2の表示においては、前記仮想空間の一部が表示されており、前記ユーザによる操作に応じて、当該仮想空間の表示範囲を変更する、請求項1に記載の情報処理プログラム。
【請求項8】
前記第2の表示において、前記仮想カメラの撮像方向を示す方向画像を表示し、
前記ユーザによる操作に応じて、前記方向画像が示す方向が変更されるように、方向画像の表示位置を変更する、請求項1に記載の情報処理プログラム。
【請求項9】
前記第1の表示において、前記プレイヤオブジェクトが前記仮想カメラの注視点として設定され、
前記仮想カメラの撮像方向に対応する成分であるヨー成分の角度のみ変更し、ピッチ成分およびロール成分は変更しないようにして、前記第1カメラ方向から前記第2カメラ方向に基づいた方向まで当該仮想カメラを回転させる、請求項1に記載の情報処理プログラム。
【請求項10】
前記第1カメラ方向は、前記仮想空間における鉛直下方向ではない所定の方向である、請求項1に記載の情報処理プログラム。
【請求項11】
コンピュータを備えた情報処理システムであって、
前記コンピュータは、
仮想空間を、前記仮想空間
の第1カメラ方向を向い
た仮想カメラによって撮影して描画した第1の表示を行い、
前記第1の表示中に
入力されたユーザによる操作に応じてプレイヤオブジェクトを前記仮想空間内において移動させ、
前記ユーザによる操作に応じて、前記仮想空間を俯瞰的に表した第2の表示に切り替え、
前記第2の表示中に、前記ユーザによる操作に基づいて、前記第2の表示上の方向である第2カメラ方向を指定し、
前記第2の表示中に、前記ユーザによる操作に応じて、前記第1の表示に切り替え、
前記第1の表示への切替後の所定期間に、前記仮想カメラの向きを、前記第1カメラ方向から、前記第2カメラ方向に基づいた方向まで変化させて前記仮想空間を撮影して描画する処理を実行する、情報処理システム。
【請求項12】
コンピュータに、
仮想空間を、前記仮想空間
の第1カメラ方向を向い
た仮想カメラによって撮影して描画した第1の表示を行わせ、
前記第1の表示中に
入力されたユーザによる操作に応じてプレイヤオブジェクトを前記仮想空間内において移動させ、
前記ユーザによる操作に応じて、前記仮想空間を俯瞰的に表した第2の表示に切り替え、
前記第2の表示中に、前記ユーザによる操作に基づいて、前記第2の表示上の方向である第2カメラ方向を指定し、
前記第2の表示中に、前記ユーザによる操作に応じて、前記第1の表示に切り替え、
前記第1の表示への切替後の所定期間に、前記仮想カメラの向きを、前記第1カメラ方向から、前記第2カメラ方向に基づいた方向まで変化させて前記仮想空間を撮影して描画する処理を実行させる、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、仮想空間内においてユーザの操作に基づいてプレイヤオブジェクトを移動させ、当該仮想空間を仮想カメラで撮影して描画する情報処理に関する。
【背景技術】
【0002】
従来から、一人称視点や三人称視点によって仮想三次元空間を表示して進行するゲームが知られている。また、このようなゲームの操作にタッチパネルを用いるゲームも知られている。例えば、モバイル端末で実行されるゲームにおいて、タッチ操作によって仮想カメラの撮像方向を調整可能なゲームも知られている(例えば特許文献1)。また、このようなゲームにおいて、ゲーム世界の全体あるいは一部を示すマップ画像を表示するゲームも知られている。例えば、「ミニマップ」を上記3D画面の左上方や右上方等に重畳表示するようなゲームも知られている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のようなゲームにおいて、ゲームにまだ慣れていないユーザは、仮想3次元空間における空間認識が十分にできない場合がある。このようなユーザにとっては、例えばタッチ操作で仮想カメラの向きを変えようとした場合に、プレイヤキャラクタが仮想3次元空間でどの方向を向いているのかを把握しつつ、自身が希望する方向に撮像方向を変えることが容易ではない場合がある。また、例えば、ミニマップを用いて仮想カメラの視野情報を提示することも考えられるが、ミニマップと仮想3次元空間の両方を見ながら操作することはやはり容易ではなかった。
【0005】
それ故に、本開示における目的は、3次元の画像として仮想空間が表示される画面における仮想カメラの撮像方向をユーザが変更したい場合に、正確かつ容易な撮像方向指示操作を可能としつつ、当該撮像方向をどのように変えたのかをユーザにより認識させやすくする情報処理プログラム、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0007】
(構成1)
構成1は、仮想空間内においてユーザの操作に基づいてユーザオブジェクトを移動させ、当該仮想空間を仮想カメラで撮影して描画する処理をコンピュータに実行させる情報処理プログラムであって、コンピュータに、仮想空間の所定の第1カメラ方向を向いた仮想カメラによって当該仮想空間を撮影して描画した第1の表示を行わせ、第1の表示中に、ユーザによる操作に応じて、仮想空間を俯瞰的に表した第2の表示に切り替え、第2の表示中に、ユーザによる操作に基づいて第2の表示上の方向である第2カメラ方向を指定し、第2の表示中に、ユーザによる操作に応じて第1の表示に切り替え、第1の表示への切替後の所定期間に、仮想カメラの向きを、第1カメラ方向から第2カメラ方向に基づいた方向まで変化させて仮想空間を撮影して描画する処理を実行させる。
【0008】
上記構成によれば、仮想空間を俯瞰した表示において、仮想空間内で向きたい方向を指定可能とすると共に、第2の表示から第1の表示に切り替えられてから、所定時間かけて仮想カメラの向きを変更させる。これにより、仮想カメラの向きがどのように変わったのかをユーザに認識させ、ユーザの方向感覚が損われないようにすることができる。
【0009】
(構成2)
構成2は、上記構成1において、第2の表示は、仮想空間を上方から見た場合の地形を表現した平面画像の表示であってもよい。
【0010】
上記構成によれば、仮想空間を平面画像で表示するため、仮想空間内の地形や位置関係をユーザに把握させやすい形で提示できる。また、第1の表示において見えていない地点のある方向を第2カメラ方向として指定することもできる。
【0011】
(構成3)
構成3は、上記構成1において、第2カメラ方向は、第2の表示中に、ユーザが仮想空間の所定の地点を指定して第1の操作を行うことによって決定されてもよい。
【0012】
上記構成によれば、例えばプレイヤが移動したいと考えている地点を所定の地点として指定することができる。そして、当該地点を基準として第2カメラ方向を決めることができる。
【0013】
(構成4)
構成4は、上記構成3において、第2カメラ方向は、プレイヤキャラクタの位置から、ユーザが指定した仮想空間の所定の地点へ向かう方向であってもよい。
【0014】
上記構成によれば、第1の表示において、ユーザが指定した所定の地点が、プレイヤキャラクタの位置から見てどの方向にあるのかをわかりやすく提示できる。
【0015】
(構成5)
構成5は、上記構成3において、第2の表示中に、第2の操作を第1の操作と選択的に受け付けてもよい。そして、仮想空間の所定の地点を指定して当該第2の操作がされた場合、第2の表示から第1の表示への切替後に、プレイヤキャラクタを当該指定した地点に移動させてもよい。
【0016】
上記構成によれば、第2の表示中に所定の地点を指定して第2の操作を行うだけで、第1の表示に戻った後、自動的にプレイヤキャラクタを当該所定の地点まで移動させることができる。これにより、プレイヤの利便性を向上できる。また、第2の表示において、上記第1の操作を行った場合は、仮想カメラの向きだけ変化させることができる。そのため、ユーザは、第1の操作と第2の操作を使い分けることで、第2の表示から第1の表示に戻った際の制御を選ぶことができる。
【0017】
(構成6)
構成6は、上記構成4において、第2の表示中に、ユーザが指定した仮想空間の所定の地点がプレイヤオブジェクトが到達できない地点である場合は、第1の操作の受け付けを制限してもよい。
【0018】
上記構成によれば、第2の表示中に、プレイヤオブジェクトが移動不可の地点をユーザが指定している場合は、自動的に移動させる制御が選択できないようにする。これにより、第2の表示から第1の表示に切り替えた際に、到達できない場所に向けてプレイヤオブジェクトが移動しようとするという、無駄な動作が行われることを抑制できる。
【0019】
(構成7)
構成7は、上記構成1において、第2の表示においては、仮想空間の一部が表示されており、ユーザによる操作に応じて、当該仮想空間の表示範囲を変更してもよい。
【0020】
上記構成によれば、第1の表示では見えていない地点の方向を指定することができる。
【0021】
(構成8)
構成8は、上記構成1から7のいずれかにおいて、第2の表示において、仮想カメラの撮像方向を示す方向画像を表示してもよい。そして、ユーザによる操作に応じて、当該方向画像が示す方向が変更されるように、方向画像の表示位置を変更してもよい。
【0022】
上記構成によれば、第2の表示中に、所定の地点を指定することなく、仮想カメラの向きを直接的にユーザの操作で変更することができる。
【0023】
(構成9)
構成9は、上記構成1から8のいずれかにおいて、第1の表示において、プレイヤキャラクタが仮想カメラの注視点として設定されてもよい。そして、仮想カメラの撮像方向に対応する成分であるヨー成分の角度のみ変更し、ピッチ成分およびロール成分は変更しないようにして、第1カメラ方向から第2カメラ方向に基づいた方向まで当該仮想カメラを回転させてもよい。
【0024】
(構成10)
構成10は、上記構成1から9のいずれかにおいて、第1カメラ方向は、仮想空間における鉛直下方向ではない所定の方向であってもよい。
【0025】
上記構成によれば、立体感、奥行き感のある3次元画像を第1の表示としてユーザに提示する。そして、第2の表示から第1の表示に切り替わったときに、所定期間かけて向きを変化させるため、仮想3次元空間での方向感覚を損なわせることなく、向きの変化をユーザに把握させることができる。
【発明の効果】
【0026】
本開示によれば、俯瞰的に仮想空間を示した第2の表示を用いて、正確かつ容易に所定の方向を指定できるようにするとともに、第1の表示に切り替わった際に所定期間かけて仮想カメラの向きを変化させることで、仮想カメラの向きの変化をユーザに把握させやすくできる。
【図面の簡単な説明】
【0027】
【
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
【
図2】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
【
図6】本体装置2の内部構成の一例を示すブロック図
【
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
【
図13】本実施形態に係る処理の概要を説明するための図
【
図15】本実施形態に係る処理の概要を説明するための図
【
図17】本実施形態に係る処理の概要を説明するための図
【
図18】DRAM85に記憶される各種データの一例を示すメモリマップ
【
図20】本実施形態に係るゲーム処理の詳細を示すフローチャート
【
図23】オート回転制御処理の詳細を示すフローチャート
【
図24】マップ画面処理の詳細を示すフローチャート
【
図25】マップ画面処理の詳細を示すフローチャート
【発明を実施するための形態】
【0028】
以下、一実施形態について説明する。
【0029】
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0030】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0031】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0032】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0033】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0034】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0035】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0036】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0037】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0038】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0039】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0040】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、
図4における上下方向(
図4に示すz軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0041】
左コントローラ3は、方向入力デバイスの一例である左アナログスティック(以下、左スティックと呼ぶ)32を備える。
図4に示すように、左スティック32は、ハウジング31の主面に設けられる。左スティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、左スティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、左スティック32を押下する入力が可能である。
【0042】
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33~36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。更に、左コントローラ3は、録画ボタン37および-(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0043】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0044】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、
図5における上下方向(
図5に示すz軸方向)に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0045】
右コントローラ4は、左コントローラ3と同様、方向入力部として右アナログスティック(以下、右スティックと呼ぶ)52を備える。本実施形態においては、右スティック52は、左コントローラ3の左スティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53~56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。更に、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。
【0046】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0047】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0048】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0049】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0050】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0051】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0052】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0053】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0054】
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0055】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0056】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0057】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0058】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0059】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0060】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0061】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0062】
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。
図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
【0063】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0064】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、左スティック32を備える。各ボタン103および左スティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0065】
左コントローラ3は、慣性センサを備える。具体的には、左コントローラ3は、加速度センサ104を備える。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、
図4に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ105は、所定の3軸(例えば、
図4に示すxyz軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
【0066】
通信制御部101は、各入力部(具体的には、各ボタン103、左スティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0067】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103および左スティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
【0068】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0069】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0070】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、右スティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0071】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0072】
[本実施形態における情報処理の概要]
次に、本実施形態に係るゲームシステム1で実行される情報処理の動作概要を説明する。本実施形態では、情報処理の一例として、仮想3次元空間(以下、単に仮想空間と呼ぶ)内に存在するプレイヤキャラクタオブジェクト(以下、プレイヤキャラと呼ぶ)をユーザが操作して遊ぶゲーム処理を想定して説明する。より具体的には、本実施形態に係る処理は、主に当該仮想空間における仮想カメラの制御に関する処理である。
【0073】
図8は、本実施形態に係るゲームのゲーム画面の一例である。
図8の例では、仮想空間の一部が3次元画像として表示されている。また、
図8では、プレイヤキャラ、および、岩オブジェクトも表示されている。
図8で示すように、本実施形態では、ゲーム画面は三人称視点で描画される。具体的には、仮想カメラの注視点として、プレイヤキャラが設定されている。また、仮想カメラはプレイヤキャラから、プレイヤキャラの全身が映るような距離だけ離れた位置に配置されている。初期の配置位置は、プレイヤキャラの後方である。また、仮想カメラが配置される高さは、ある程度地面に近い高さであり、仮想カメラの向きについては、地面と略水平方向になるような向きとなっている。そのため、基本的には、プレイヤキャラの背面側の全身が表示されつつ、プレイヤキャラの前方方向(奥行き方向)の様子が表示されるようなゲーム画面となる。また、プレイヤキャラが移動すれば、仮想カメラは、原則的には、その後方から、一定の距離を保ちながら追従移動する。そのため、プレイヤキャラの移動によってプレイヤキャラの向きが変われば、プレイヤキャラの背後に回り込むように仮想カメラが移動する。
【0074】
また、仮に、プレイヤキャラを移動させずに、仮想カメラの撮像方向(以下、仮想カメラの向きと呼ぶ)だけを変更した場合は、仮想カメラが、向きを変えながらプレイヤキャラの周囲を回るように移動する。
図9に、この場合の仮想カメラの動きの例を示す。
図9に示すように、プレイヤキャラから一定の距離を保ちつつ、仮想カメラの向きが常にプレイヤキャラのほうを向くように変化しながら、注視点であるプレイヤキャラを中心とする円周に沿うようにして仮想カメラが移動することになる。つまり、仮想カメラの向きが変われば、仮想カメラの位置も変化するものとなっている。
【0075】
なお、本実施形態では、仮想カメラの位置については、プレイヤキャラの背後となる位置がデフォルト位置であるが、場合によっては、プレイヤキャラの背後ではない位置に仮想カメラを配置したまま、プレイヤキャラに追従移動させる場合もあり得る。例えば、仮想カメラの向きがプレイヤキャラの右側となる方向のまま、プレイヤキャラの移動に伴って仮想カメラを移動させる場合もあり得る。この場合は、プレイヤキャラの左側面を映した状態で、仮想カメラがいわばプレイヤキャラと並列して移動しているような状況となり得る。
【0076】
本実施形態に係るゲームでは、上記
図8のようなゲーム画面において、ユーザの操作に基づき、プレイヤキャラを仮想空間内の様々な場所に移動させることが可能である。ここで、本ゲームの仮想空間は広大な空間を想定している。この点、
図8のような、仮想空間の一部が3次元画像として表示されるゲーム画面から得られる情報量だけでは仮想空間の全貌を把握することは困難である。そのため、本ゲームでは、仮想空間の全体的な地理や地形をユーザに把握させやすくする等の目的で、
図8のようなゲーム画面とは別に、「マップ画面」と呼ばれる、仮想空間を俯瞰して示した画面が表示可能である。なお、以下の説明では、
図8のようなゲーム画面のことを「通常画面」と呼ぶ。
【0077】
次に、上記のマップ画面に関して説明する。
図10は、マップ画面の一例である。
図10では、マップ画像が全画面表示の態様で示されている。当該マップ画像は、上記仮想空間を真上から俯瞰した場合の地形を表現した平面画像である。また、
図10の例では、画面の表示範囲内に仮想空間の全体が表示されているわけではなく、その一部分のみが示されており、画面スクロールすることが可能である。また、
図10では、プレイヤキャラを示すプレイヤアイコンと、カーソルとが表示されている。また、略扇形状のフラスタム画像が、プレイヤキャラに隣接するようにして表示されている。また、
図10の例では、プレイヤアイコンの略右上に、上記岩オブジェクトに対応する画像が表示されている。さらに、画面内の右側には、岩山をモチーフにした地形オブジェクトに対応する地形画像も表示されている。本例では、当該地形オブジェクトは、プレイヤキャラのいる地面よりもある程度高い位置に地表部分を有するようなオブジェクトであるとする。
【0078】
なお、当該マップ画面において用いるマップ画像については、上記仮想カメラで当該仮想空間を俯瞰で撮像した画像を用いてもよいし、仮想空間を上方から透視投影で撮影した画像を用いてもよい。また、マップ画面用に別途用意した、俯瞰した仮想空間を抽象化した画像(イラスト化した画像等)を用いてもよい。本実施形態では、マップ画面用に別途用意された、俯瞰した仮想空間を抽象化した画像を用いるものとする。
【0079】
次に、当該マップ画面においてユーザが可能な操作に関して説明する。まず、本実施形態では、上記マップ画面において、ユーザは、左スティック32を操作することで、上記カーソルをマップ画像上で移動させることができる。例えば、
図10では、カーソルは画面の左上端近傍に表示されている。この状態から左スティック32を右下に傾けると、
図11に示すように、カーソルを右下方向に移動させることができる。ここで、本実施形態では、カーソルの移動に伴い、上記フラスタム画像の表示位置も変化する。具体的には、上記
図11で示されるように、カーソルのある方向にフラスタム画像の先端部分が向くようにして、表示位置が変化する。つまり、カーソルの移動に連動するようにして、フラスタム画像の先端部分の向きも変化するよう制御されているため、仮想カメラがどの方向を向くことになるのかユーザが理解しやすくなる。なお、本実施形態ではフラスタム画像をカーソルの移動に連動させて回転させるが、別の実施形態ではフラスタム画像は回転させないようにしてもよい。マップ画面においてフラスタム画像は回転させないようにすることで、その時点ではまだ仮想カメラが回転していないことをユーザに認識させることができる。
【0080】
また、ユーザは、所定の操作を行うことで、当該マップ画面の表示を終了して、通常画面に切り替えることができる。本実施形態では、このマップ画面表示を終了する操作として、複数の操作方法が利用可能である。具体的には、Aボタン53を押す操作(以下、オート移動指示操作)、ZLボタン39を押す操作(以下、オート回転指示操作)、Bボタン54を押す操作(以下、単純終了操作)のいずれかの操作によって、マップ画面から通常画面に切り替えることができる。以下、各操作に関して説明する。
【0081】
[オート移動指示操作について]
まず、Aボタン53によるオート移動指示操作について説明する。マップ画面においてユーザがAボタン53を押下すると、マップ画面から通常画面に切り替え、「オート移動制御」を開始することができる。オート移動制御は、マップ画面から通常画面に切り替わった後、マップ画面におけるカーソルの位置に対応する仮想空間内の地点(以下、カーソル地点と呼ぶ)に向けて、プレイヤキャラを自動的に移動させるという制御である。より具体的には、Aボタン53が押下されたとき、仮想空間内におけるプレイヤキャラの現在位置から、Aボタン53が押下されたときにおける上記カーソル地点までの経路が算出される。この経路は、障害物を避けながら最短で到達する経路として算出される。例えば、上記
図11のような位置関係を例にすると、プレイヤキャラが現在位置からカーソル地点に直線的に移動するのではなく、上記地形オブジェクトに接触しないように回り込んでカーソル地点に移動するような経路が算出される。そして、この経路に沿って、プレイヤキャラが自動的に移動する。つまり、ユーザは、マップ画面で、移動したい地点にカーソルを動かしてAボタン53を押下することで、マップ画面から通常画面に切り替えると共に、カーソル地点に向けて自動的にプレイヤキャラを移動させることができる。つまり、ユーザは、仮想空間の全体的な地形が把握しやすいマップ画面において移動先を指定し、自動的にプレイヤキャラクタを移動させることができる。これにより、ユーザの利便性を向上できる。なお、本例では、オート移動制御中は、ユーザが所定の「オート移動解除操作」を行うまでは、ユーザによるプレイヤキャラの移動操作は受け付けられないものとする。また、オート移動制御中の仮想カメラは、プレイヤキャラの背後から追従するように動作制御される。
【0082】
なお、仮想空間内には、様々な地形やその高低差等もあり、マップ画面上でカーソルのある地点が、仮想空間においてはプレイヤキャラが到達できない地点の場合もあり得る。このような到達地点をカーソルが指定している状態でAボタン53が押下された際は、オート移動制御ができない旨のメッセージが表示され、マップ画面は終了しないような制御が行われる。
【0083】
[オート回転指示操作について]
次に、マップ画面においてZLボタン39の押下によるオート回転指示操作を行った場合の動作について説明する。本実施形態では、オート回転指示操作が行われた場合は、通常画面に戻った後、上記カーソル地点に仮想カメラが向くように、所定時間(例えば1~2秒程度)かけて仮想カメラの向きを変化させる制御(以下、オート回転制御と呼ぶ)が行われる。つまり、通常画面に切り替わった後、上記のようなオート移動制御までは行わないが、仮想カメラの向きだけをカーソル地点に向けるという制御が行われる。換言すれば、仮想空間内において、カーソル地点のある方向がどの方向であるかをユーザに伝えるだけとし、移動するかどうかは、その後のユーザの判断に委ねるものである。
【0084】
また、上記仮想カメラの向きの変更について補足する。本実施形態では、仮想カメラの向きを、仮想空間の鉛直方向をy軸、奥行き方向(撮像方向)をz軸、この2軸に直交する軸をx軸とした3軸成分で捉えた場合の、y軸周りの回転だけ行うことで、仮想カメラの向きを変化させる。換言すれば、仮想カメラのヨー成分(z軸成分)をカーソル地点の方向を向く角度に変化させ、ピッチ成分、ロール成分は変化させない。また、上記のように注視点はプレイヤキャラであるため、当該仮想カメラの向きの変化に伴い、仮想カメラの位置は変化することになる(上記
図9参照)。
【0085】
ここで、本実施形態では、上記オート回転指示操作でマップ画面を終了させて通常画面に切り替えた際、仮想カメラをカーソル地点の方向に瞬時に向かせるのではなく、上記のようにある程度時間をかけてカーソル地点のある方向に向かせるような制御を行う。これは、以下のような理由による。仮に、マップ画面が終了して通常画面に切り替わった時点で、仮想カメラが既にカーソル地点を向いている場合を想定する。この場合、マップ画面の表示前と表示終了後とで、ユーザにとって、どの向きからどの向きに変化したのかが判別しにくい場合があり得る。また、マップ画面を表示する前に向いていた方向がどの方向であったのか、わかりにくいとも考えられる。そのため、場合によっては、3次元画像で仮想空間が表示される通常画面において、ユーザの方向感覚を損なわせてしまい、仮想空間内で道に迷うという状況になる可能性がある。特に、仮想空間内において、目印となり得るランドマークが見えるような場所であればまだしも、そのようなランドマーク的なオブジェクトもなく、似たような風景に囲まれているような場所では、通常画面における方向感覚が掴みにくくなりやすいと考えられる。そこで、本実施形態では、マップ画面から通常画面に切り替わった際に、マップ画面に遷移する前に向いていた方向から、カーソル地点のある方向まで少し時間をかけて仮想カメラの向きおよび位置を変化させるよう制御する。これにより、マップ画面から通常画面に切り替わった際に、ユーザの方向感覚を損なわないようにしながら、カーソル地点の方向をユーザに伝えることができる。
【0086】
なお、本実施形態では、上記オート回転指示操作によってマップ画面から通常画面に切り替わった際、プレイヤキャラの向きについても、カーソル地点を向くように制御する。このようにプレイヤキャラの向きも変えることで、方向の変化をよりわかりやすく伝えることができる。また、ユーザ自身による、プレイヤキャラの向きの変更操作を省略させることもでき、ユーザの利便性を向上できる。但し、他の実施形態では、オート回転指示操作によって通常画面に切り替えた場合、プレイヤキャラの向きは変化しなくてもよい。この場合は、例えばマップ画面に入る前はプレイヤキャラの背中が映っていた画面から、プレイヤキャラの側面や前面が映っているような画面に変化し得る。この場合は、マップ画面の表示前後にかかる向きの差をユーザに伝えやすいという点で有利である。この場合でも、ある程度時間をかけて仮想カメラの向きを変化させるため、プレイヤキャラの向きと仮想カメラの向きとの差を視覚的に伝えることができ、仮想空間内における位置関係をユーザに把握させやすくすることができる。
【0087】
図12~
図17に、上記オート回転指示操作によってマップ画面から通常画面に切り替えた際の画面例を示す。
図12は、オート回転指示操作によって通常画面に切り替えた直後の画面例である。また、
図13は、当該
図12の画面における仮想カメラとプレイヤキャラとの位置および向きの関係を俯瞰して示した模式図である。このときは、仮想カメラの向きはマップ画面を表示する直前における向きとなっている。この後、例えば1~2秒程度の時間をかけて、当該仮想カメラの向きが、カーソル地点を向くように変化していく。
図14は、仮想カメラの向きがカーソル地点に向く途中の段階での画面例である。また、
図15は、当該
図14における仮想カメラとプレイヤキャラクタの位置、向きの関係を俯瞰して示した模式図である。この時点では、仮想カメラの向きはまだカーソル地点に向ききっていない状態である。そして、
図16は、仮想カメラの向きがカーソル地点を向いた状態の画面例である。また、
図17は、当該
図16における仮想カメラとプレイヤキャラクタの位置、向きの関係を俯瞰して示した模式図である。このように仮想カメラの向きがカーソル地点を向ききれば、オート回転制御は終了する。
【0088】
また、図示は省略したが、上記マップ画面においては、上記オート移動指示操作、およびオート回転指示操作の2つの操作についての操作ガイドを表示してもよい。この際、カーソルがオート移動制御ができないような地点を指定している間は、オート移動指示操作の操作ガイドについては表示しないようにしてもよい。
【0089】
[単純終了操作について]
次に、Bボタン54を押下してマップ画面を終了させる単純終了操作について説明する。この場合は、マップ画面上でのカーソルの位置にかかわらず、仮想カメラの位置・向きについてはマップ画面表示前の状態から変化させないまま、通常画面が表示される。いわば、単にマップ画面を閉じるだけの操作となる。
【0090】
[本実施形態の仮想カメラ制御処理の詳細]
次に、
図18~
図25を参照して、本実施形態におけるゲーム処理について、より詳細に説明する。
【0091】
[使用データについて]
まず、本処理にて用いられる各種データに関して説明する。
図18は、本体装置2のDRAM85に記憶される各種データの一例を示すメモリマップである。本体装置2のDRAM85には、ゲームプログラム301、プレイヤキャラクタデータ302、地形オブジェクトデータ303、仮想カメラデータ304、操作データ305、マップフラグ306、オート移動フラグ307、オート移動制御用データ308、オート回転フラグ309、オート回転制御用データ310が少なくとも記憶されている。
【0092】
ゲームプログラム301は、本実施形態における仮想カメラ制御処理を含むゲーム処理を実行するためのプログラムである。
【0093】
プレイヤキャラクタデータ302は、上記プレイヤキャラに関するデータである。プレイヤキャラクタデータ302には、プレイヤキャラの位置を示すデータや、プレイヤキャラの姿勢を示すデータ等が含まれている。
【0094】
地形オブジェクトデータ303は、仮想空間内に配置される各種の地形オブジェクトのデータである。地形オブジェクトデータ303には、各地形オブジェクトを一意に識別するためのIDや、配置位置を示す情報や、その形状・外観を示すモデルデータや画像データ等が含まれる。
【0095】
仮想カメラデータ304は、仮想カメラを制御するためのデータである。仮想カメラデータ304には、仮想カメラの位置、姿勢(俯角)、画角、移動速度等を示すデータが含まれる。
【0096】
操作データ305は、ユーザが操作するコントローラから得られるデータである。すなわち、ユーザが行った操作内容を示すデータである。
図19に、操作データ305のデータ構成の一例を示す。操作データ305には、デジタルボタンデータ351と、右スティックデータ352と、左スティックデータ353と、右慣性センサデータ354と、左慣性センサデータ355とが少なくとも含まれている。デジタルボタンデータ351は、コントローラが有する各種ボタンの押下状態を示すデータである。右スティックデータ352は、上記右スティック52に対する操作内容を示すためのデータである。具体的には、x、yの2次元のデータが含まれる。左スティックデータ353は、上記左スティック32に対する操作内容を示すためのデータである。右慣性センサデータ354は、右コントローラ4の加速度センサ114や角速度センサ115の慣性センサの検出結果を示すデータである。具体的には、3軸の加速度データや3軸の角速度データが含まれる。左慣性センサデータ355は、左コントローラ3の加速度センサ104や角速度センサ105の慣性センサの検出結果を示すデータである。
【0097】
図18に戻り、マップフラグ306は、上記通常画面を表示するかマップ画面を表示するかを判別するために用いられるフラグである。マップ画面を表示する場合はマップフラグ306にオンが設定される。
【0098】
オート移動フラグ307は、上記オート移動制御を実行するか否かを判別するために用いるフラグである。オート移動フラグ307がオンの場合は、オート移動制御を行うことを示す。
【0099】
オート移動制御用データ308は、オート移動制御を行う際に用いられる各種データである。具体的には、上記カーソル地点までの経路を示す経路情報等がオート移動制御用データ308に含まれる。
【0100】
オート回転フラグ309は、上記オート回転制御を実行するか否かを判別するために用いるフラグである。オート回転フラグ309がオンの場合は、オート回転制御を行うことを示す。
【0101】
オート回転制御用データ310は、上記オート回転制御を行う際に用いるデータである。オート回転制御用データ310には、プレイヤキャラの位置から見て上記カーソル地点のある向きである「目標方向」を示すデータや、オート回転制御中における仮想カメラの単位時間当たりの回転速度や移動方向、移動速度を示すデータ等が含まれる。
【0102】
その他、図示は省略するが、ゲーム処理に必要な各種データもDRAM85に格納される。
【0103】
[プロセッサ81が実行する処理の詳細]
次に、本実施形態における仮想カメラ制御処理の詳細を説明する。本実施形態では、1以上のプロセッサが1以上のメモリに記憶された上記プログラムを読み込んで実行することにより、以下に示すフローチャートが実現される。なお、以下に示すフローチャートは、処理過程の単なる一例にすぎない。そのため、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判定ステップで利用される閾値も、単なる一例であり、必要に応じて他の値を採用してもよい。
【0104】
図20は、本実施形態に係るゲーム処理の詳細を示すフローチャートである。なお、当該フローチャートに係る処理は、1フレーム毎に繰り返し実行される。なお、当該処理の実行に先立って、仮想空間内には、所定の地形オブジェクトおよびプレイヤキャラは配置済みであるとする。
【0105】
ゲーム処理が開始すると、まず、ステップS1で、プロセッサ81は、各種データを初期化し、プレイヤキャラの位置に基づいて決定される仮想カメラの位置から仮想空間の様子を撮像する。さらに、プロセッサ81は、撮像した画像を上記通常画面として表示する。そして、ユーザからの操作を待ち受ける。
【0106】
次に、ステップS2で、プロセッサ81は、マップフラグ306がオンか否かを判定する。当該判定の結果、オンではない場合は(ステップS2でNO)、ステップS3で、プロセッサ81は、通常画面処理を行う、一方、マップフラグ306がオンの場合は(ステップS2でYES)、ステップS4で、プロセッサ81は、マップ画面処理を行う。以下、各処理の詳細について説明する。
【0107】
[通常画面の処理]
図21および
図22は、上記ステップS3に係る通常画面処理の詳細を示すフローチャートである。まず、ステップS11で、プロセッサ81は、オート回転フラグ309がオンか否か判定する。当該判定の結果、オフの場合は(ステップS11でNO)、ステップS12で、プロセッサ81は、操作データ305を取得する。
【0108】
次に、ステップS13で、プロセッサ81は、操作データ305に基づき、マップ画面に移行するための操作が行われた否かを判定する。当該判定の結果、マップ画面に移行するための操作が行われていない場合は(ステップS13でNO)、次に、ステップS14で、プロセッサ81は、オート移動フラグ307がオンか否かを判定する。当該判定の結果、オート移動フラグ307がオフの場合は(ステップS14でNO)、次に、ステップS15で、プロセッサ81は、操作データ305に基づき、プレイヤキャラの移動操作が行われたか否かを判定する。プレイヤキャラの移動操作が行われた場合は(ステップS15でYES)、ステップS16で、プロセッサ81は、操作データ305に基づいて、プレイヤキャラの移動制御を行う。一方、プレイヤキャラの移動操作が行われていない場合は(ステップS15でNO)、上記ステップS16の処理はスキップされる。
【0109】
次に、
図22のステップS17で、プロセッサ81は、操作データ305に基づいて、移動以外のプレイヤキャラの各種動作を制御する。例えば、プロセッサ81は、プレイヤキャラの攻撃動作やジャンプ動作等を制御する。また、プロセッサ81は、仮想カメラデータ304に基づき、仮想カメラの制御も行う。例えば、プレイヤキャラが移動した場合は、プロセッサ81は、仮想カメラがプレイヤキャラに追従するように、仮想カメラデータ304の内容を適宜設定する。そして、プロセッサ81は、仮想カメラデータ304に基づいて仮想カメラの位置や向きを変更する。
【0110】
次に、ステップS18で、プロセッサ81は、プレイヤキャラ以外の各種オブジェクトの動作制御を行う。
【0111】
次に、ステップS19で、プロセッサ81は、仮想空間を仮想カメラで撮像する。さらに、プロセッサ81は、当該撮像画像に基づいて上記通常画面として表示するゲーム画像を生成する。そして、プロセッサ81は、当該ゲーム画像をディスプレイ12、あるいは据え置き型モニタ等に出力する。その後、プロセッサ81は、通常画面処理を終了する。
【0112】
[オート回転制御]
次に、上記ステップS11の判定の結果、オート回転フラグ309がオンの場合の処理について説明する(ステップS11でYES)。この場合は、上記マップ画面の表示が上記オート回転指示操作によって終了された後の状態と考えられる。そのため、ステップS21で、プロセッサ81は、上述したようなオート回転制御を行うためのオート回転制御処理を実行する。
【0113】
図23は、オート回転制御処理の詳細を示すフローチャートである。まず、ステップS31で、プロセッサ81は、オート回転制御用データ310に基づいて、仮想カメラを制御する。すなわち、プロセッサ81は、オート回転制御用データ310に基づき、仮想カメラの向きおよび位置を変更する。
【0114】
次に、ステップS32で、プロセッサ81は、プレイヤキャラの正面側が上記目標方向を向いているか否かを判定する。当該判定の結果、目標方向を向いていない場合は(ステップS32でNO)、ステップS33で、プロセッサ81は、プレイヤキャラが目標方向を向くように、プレイヤキャラの姿勢を変更する。一方、目標方向を向いている場合は(ステップS32でYES)、上記ステップS33の処理はスキップされる。
【0115】
次に、ステップS34で、プロセッサ81は、仮想カメラの向きが上記目標方向になっているか否かを判定する。当該判定の結果、仮想カメラの向きが目標方向になっている場合は(ステップS34でYES)、ステップS35で、プロセッサ81は、オート回転フラグ309にオフを設定する。一方、仮想カメラの向きが目標方向になっていない場合は(ステップS34でNO)、当該ステップS35の処理はスキップされる。
【0116】
その後、プロセッサ81は、オート回転制御処理を終了する。
【0117】
図21に戻り、オート回転制御処理が終われば、プロセッサ81は、上記ステップS18に処理を進める。ここで、本実施形態では、オート回転制御中はユーザからの操作を受け付けないようにしている。この点、他の実施形態では、オート回転制御中においても、ユーザの操作を受け付けるようにしてもよい。また、この場合に、仮想カメラの姿勢を変更する操作が当該ユーザの操作として検出された場合は、その時点でオート回転制御を中断し、当該ユーザの操作内容に基づいて仮想カメラの姿勢を変更してもよい。
【0118】
[マップ画面への移行処理]
次に、上記ステップS13の判定の結果、マップ画面移行操作が行われた場合の処理について説明する(ステップS13でYES)。この場合は、ステップS22で、プロセッサ81は、マップフラグ306にオンを設定する。次に、ステップS23で、プロセッサ81は、プレイヤキャラの現在位置に基づいて上述したようなマップ画面を生成し、表示する。例えば、プロセッサ81は、上記プレイヤアイコンの表示位置がマップ画面の略中央になるように、マップ画面におけるマップ画像の表示範囲を決定する。そして、プロセッサ81は、当該決定した範囲のマップ画像を表示する。その後、プロセッサ81は、通常画面処理を終了する。
【0119】
[オート移動制御]
次に、上記ステップS14の判定の結果、オート移動フラグ307がオンの場合の処理について説明する(ステップS14でYES)。この場合は、上記マップ画面の表示が上記オート移動指示操作によって終了された後の状態と考えられる。この場合は、まず、ステップS24で、プロセッサ81は、オート移動制御用データ308に基づいて、プレイヤキャラを移動させる。さらに、プロセッサ81は、仮想カメラがプレイヤキャラの背後からに追従移動するように、仮想カメラを制御する。
【0120】
次に、ステップS25で、プロセッサ81は、操作データ305に基づき、オート移動解除操作が行われたか否かを判定する。当該判定の結果、オート移動解除操作が行われた場合は(ステップS25でYES)、ステップS26で、プロセッサ81は、オート移動フラグ307にオフを設定する。更に、プレイヤキャラの移動を停止させる。その後、上記ステップS18に処理が進められる。一方、オート移動解除操作が行われていない場合は(ステップS25でNO)、上記ステップS26の処理はスキップされる。その後、上記ステップS18に処理が進められる。
【0121】
なお、本実施形態では、オート移動制御中は、オート移動解除操作以外の操作を受け付けない例を挙げている。この点、他の実施形態では、オート移動制御中でも、移動以外の動作については可能なようにしてもよい。
【0122】
以上で、通常画面処理の詳細説明を終了する。
【0123】
[マップ画面の処理]
次に、上記ステップS4のマップ画面処理の詳細について説明する。
図24および
図25は、マップ画面処理の詳細を示すフローチャートである。まず、ステップS41で、プロセッサ81は、操作データ305を取得する、次に、ステップS42で、プロセッサ81は、操作データ305に基づき、上記カーソルを移動させる操作が行われたか否かを判定する。当該判定の結果、カーソルを移動させる操作が行われた場合は(ステップS42でYES)、ステップS43で、プロセッサ81は、操作内容に従ってカーソルをマップ画面上で移動させる。この際、マップ画面上におけるカーソルの座標については、一時的にDRAM85に記憶される。その後、後述のステップS58に処理が進められる。
【0124】
一方、上記ステップS42の判定の結果、カーソルを移動させる操作が行われていない場合は(ステップS42でNO)、ステップS44で、プロセッサ81は、操作データ305に基づき、マップ画面のスクロール操作が行われたか否かを判定する。スクロール操作が行われていた場合は(ステップS44でYES)、ステップS45で、プロセッサ81は、操作内容に従ってマップ画面をスクロールさせる。これにより、ユーザは、例えば通常画面では表示されていない地点や、プレイヤキャラの現在位置から遠く離れている地点を、カーソルで指定することも可能となる。その後、後述のステップS58に処理が進められる。
【0125】
一方、上記ステップS44の判定の結果、スクロール操作が行われていない場合は(ステップS44でNO)、ステップS46で、プロセッサ81は、操作データ305に基づき、オート回転指示操作が行われたか否かを判定する。本例では、ZLボタン39が押下されたか否かが判定される。当該判定の結果、オート回転指示操作が行われた場合は(ステップS46でYES)、ステップS47で、プロセッサ81は、オート回転フラグ309にオンを設定する。
【0126】
次に、ステップS48で、プロセッサ81は、マップ画面上でのカーソルの座標に基づいて、上記目標方向を決定する。具体的は、プロセッサ81は、マップ画面上でのカーソルの座標に対応する仮想空間内の位置を、上記カーソル地点として算出する。次に、プロセッサ81は、仮想空間内のプレイヤキャラの現在位置と上記カーソル地点とに基づいて、上記目標方向を決定する。
【0127】
次に、ステップS49で、プロセッサ81は、上記目標方向に基づき、オート回転制御用データ310を設定する。具体的には、プロセッサ81は、仮想カメラの向きが現在の向きから目標方向に所定時間かけて変化するように、単位時間あたりの向きの変化量を算出する。また、仮想カメラの向きの変化に伴い、上記のように仮想カメラの位置も変化させるが、これについても、プロセッサ81は、単位時間あたりの移動量を算出する。そして、プロセッサ81は、当該算出結果を示すデータをオート回転制御用データ310として設定する。その後、後述するステップS55に処理が進められる。
【0128】
一方、上記ステップS46の判定の結果、オート回転指示操作が行われていない場合は(ステップS46でNO)、
図25のステップS50で、プロセッサ81は、オート移動指示操作が行われたか否かを操作データ305に基づいて判定する。本例では、Aボタン53が押下されたか否かが判定される。当該判定の結果、オート移動指示操作が行われていた場合は(ステップS50でYES)、ステップS51で、プロセッサ81は、カーソル地点が、プレイヤキャラが移動可能な場所であるか否かを判定する。当該判定の結果、移動可能な場所ではない場合は(ステップS51でNO)、ステップS52で、プロセッサ81は、オート移動制御ができない旨のメッセージを表示するための設定を行う。その後、後述のステップS58に処理が進められる。
【0129】
一方、カーソル地点が、プレイヤキャラが移動可能な場所である場合は(ステップS51でYES)、ステップS53で、プロセッサ81は、マップ画面におけるカーソルの座標に基づき、オート移動制御用データ308を設定する。具体的には、プロセッサ81は、カーソルの座標に基づいて上記カーソル地点を算出する。次に、プロセッサ81は、プレイヤキャラの現在位置から当該カーソル地点に到達する経路を算出する。そして、プロセッサ81は、当該経路を示す情報をオート移動制御用データ308として設定する。
【0130】
次に、ステップS54で、プロセッサ81は、オート移動フラグ307にオンを設定する。
【0131】
次に、ステップS55で、プロセッサ81は、マップ画面を終了して通常画面を表示する。この時点で表示される通常画面は、マップ画面が表示される直前の仮想カメラの位置および向きで撮像された画像に基づくものとなる。
【0132】
次に、ステップS56で、プロセッサ81は、マップフラグ306にオフを設定する。その後、プロセッサ81は、マップ画面処理を終了する。
【0133】
一方、上記ステップS50の判定の結果、オート移動指示操作が行われていない場合は(ステップS50でNO)、ステップS57で、プロセッサ81は、上記単純終了操作が行われたか否かを操作データ305に基づき判定する。本例では、Bボタン54が押下されたか否かが判定される。当該判定の結果、単純終了操作が行われた場合は(ステップS57でYES)、上記ステップS55に処理が進められる。その結果、マップ画面が終了することになる。一方、単純終了操作が行われていない場合は(ステップS57でNO)、ステップS58で、プロセッサ81は、マップ画面を表示する。この際、上記ステップS52でオート移動制御ができない旨のメッセージの表示設定がされていれば、マップ画面上に当該メッセージも表示される。また、カーソルが移動されていたり、画面スクロール操作が行われていれば、その操作内容が反映されたマップ画面が表示される。その後、プロセッサ81は、マップ画面処理を終了する。
【0134】
図20に戻り、通常画面処理、またはマップ画面処理が終了すれば、次に、ステップS5で、プロセッサ81は、ゲームを終了するための条件が満たされたか否かを判定する。例えば、ゲームを終了するための操作が行われたか否かが判定される。当該判定の結果、ゲーム終了条件が満たされていない場合は(ステップS5でNO)、上記ステップS2に戻り、処理が繰り返される。ゲーム終了条件が満たされた場合は(ステップS5でYES)、プロセッサ81は、当該ゲーム処理を終了する。
【0135】
以上で、本実施形態に係るゲーム処理の詳細説明を終了する。
【0136】
このように、本実施形態では、上記のような通常画面とマップ画面とを切り替え可能なゲームにおいて、マップ画面から通常画面に戻った際に、マップ画面において指定した地点に仮想カメラの向きを向けるような制御を行う。また、瞬時に向きを変化させるのではなく、ある程度時間をかけて、向きが変化していく様子をユーザに示すようにしている。これにより、撮像方向がどのように変化したのかをユーザに把握させることができる。
【0137】
また、例えばスマートフォン等の携帯型情報処理装置において、タッチ操作を用いてゲーム処理を行う場合、例えば、タッチ操作で仮想カメラの撮像方向を変化させ、タッチオフで撮像方向を元に戻すというような操作が採用されることもある。このような操作を想定すると、表示画面が比較的小さいサイズであることと、タッチ操作の際は例えば指で画面が隠れてしまうこともあることから、仮想カメラの向きを変更した際に、どの方向を向いているのかの把握が困難な場合もある。この点、本実施形態の処理であれば、仮想カメラの向きをどのように変化させたのかが把握しやすくなるため、本実施形態のような処理は、上記のようなタッチ操作を用いるゲーム処理等にも有用である。
【0138】
また、仮想空間を俯瞰的に表示するマップ画面においてカーソルを動かすことで、仮想カメラが向く方向を指定できるため、正確かつ容易に仮想カメラを向かせたい向きを指定できる。
【0139】
[変形例]
なお、上記実施形態では、マップ画面において、フラスタム画像を表示していた。当該フラスタム画像は、マップ画面上においてカーソルのある位置を向くよう制御されるが、このことは、当該フラスタム画像が、オート回転制御による仮想カメラの向き(上記目標方向)を示すものであるともいえる。この点に関して、他の実施形態では、例えば右スティックxxの操作等で、直接的に当該フラスタム画像をユーザアイコン周りに回転可能なようにしてもよい。例えば、マップ画面において上記のようなカーソルは用いずに、上記フラスタム画像をユーザの操作に基づいて操作可能とすることで、上記目標方向を直接的にユーザが指定可能なようにしてもよい。
【0140】
また、マップ画面において仮想カメラの向きを示す画像については、上記のような扇形のフラスタム画像に限らず、例えば矢印の画像等を用いてもよい。
【0141】
また、上記実施形態では、上記通常画面が三人称視点の画面であるゲーム処理を例示したが、上記通常画面が一人称視点の画面である情報処理についても、上述したような処理は適用可能である。一人称視点の画面の場合は、上記オート回転制御については、仮想カメラの位置は変えずに、上記ヨー成分の角度のみを変化させるような制御が行われればよい。
【0142】
また、上記通常画面における仮想カメラの向きについて、上記の例では地面と略水平方向となるような向きである場合を例示した。これに限らず、他の実施形態では、少なくとも鉛直方向(真下方向)以外の向きであってもよい。
【0143】
また、もし通常画面において仮想カメラの向きを鉛直下方向にすることが可能なゲームの場合は、次のように処理してもよい。例えば、上記通常画面において、ユーザの操作によって仮想カメラの位置や姿勢を制御可能なゲーム処理を想定する。このようなゲームにおいて、注視点はプレイヤキャラのまま、仮想カメラを仮想空間内の上方に移動させることで、仮想カメラの向きを鉛直下方向に変化させ、結果的に、
図26に示すように、通常画面が仮想空間を俯瞰的に示した表示になることもあり得る。このような仮想カメラ操作が可能な場合であって、通常画面が俯瞰的な表示となっている状態で上記マップ画面に移行し、上記オート回転指示操作で通常画面に戻った場合を想定する。この場合は、
図27に示すように、上記目標方向が画面座標系における上方向に来るように仮想カメラを回転させてもよい。
図27の例は、上記
図26における右方向となる地点をカーソル地点として指定した場合の例である。つまり、マップ画面に移行した際の仮想カメラの向きが鉛直下方向を向いていた場合は、オート回転指示操作で通常画面に戻った際、仮想カメラをz軸周りで回転させる、すなわち、ピッチ成分の角度を変化させるように制御してもよい。また、マップ画面に移行した際の仮想カメラの向きが鉛直下方向以外の向きであれば、上述したような処理でy軸周りで回転させるようにすればよい。
【0144】
また、上記実施形態においては、ゲーム処理に係る一連の処理を単一の本体装置2で実行される場合を説明した。他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。また、いわゆるクラウドゲーミングの構成としてもよい。例えば、本体装置2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種ゲーム処理が実行され、その実行結果が動画・音声として本体装置2にストリーミング配信されるような構成としてもよい。
【符号の説明】
【0145】
1 ゲームシステム
2 本体装置
3 左コントローラ
4 右コントローラ
81 プロセッサ
84 フラッシュメモリ
85 DRAM