(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-22
(45)【発行日】2024-07-30
(54)【発明の名称】ゲームプログラム、ゲームシステム、ゲーム装置、およびゲーム方法
(51)【国際特許分類】
A63F 13/54 20140101AFI20240723BHJP
A63F 13/577 20140101ALI20240723BHJP
A63F 13/56 20140101ALI20240723BHJP
A63F 13/57 20140101ALI20240723BHJP
A63F 13/55 20140101ALI20240723BHJP
【FI】
A63F13/54
A63F13/577
A63F13/56
A63F13/57
A63F13/55
(21)【出願番号】P 2022199094
(22)【出願日】2022-12-14
【審査請求日】2023-05-22
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】速水 駿
【審査官】三村 拓哉
(56)【参考文献】
【文献】特開2003-181135(JP,A)
【文献】特開2007-212635(JP,A)
【文献】特開2007-037664(JP,A)
【文献】特開2003-340150(JP,A)
【文献】特開2007-307006(JP,A)
【文献】特開平8-329273(JP,A)
【文献】0-5 壁への接触はなぜダメなのか,頭文字D THE ARCADE まとめ・攻略サイト[online],2022年05月18日,[2024年03月05日検索], <URL: https://web.archive.org/20220518080408/https://inidarcade-summary.com/?page_id=1962>,特に本文、図面を参照。(なお、URLの「20220518080408」から読み取れる協定世界時2022年05月18日08時04分08秒に相当する日本標準時2022年05月18日17時04分08秒には当該ウェブページが公開されていたといえる。)
【文献】[実況]ゼルダの伝説 #31[藤岡弘状態],YouTube[online][video],2017年04月04日,[2024年02月28日検索], <URL: https://www.youtube.com/watch?v=xNfd28octe4>,特に動画時間[06:05]-[07:36]を参照
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-13/98
(57)【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータに、
仮想空間内において第1のオブジェクトの運動を制御させ、
前記第1のオブジェクトと他のオブジェクトとが接触し、かつ相対的に静止していない場合において、
前記第1のオブジェクトと前記他のオブジェクトの接触点を算出させ、
前記接触点における前記第1のオブジェクトと前記他のオブジェクトの速度の差を示す第1の速度と、前記第1のオブジェクトの重心または所定の基準点と前記他のオブジェクトの重心または所定の基準点の速度の差を示す第2の速度とを対比させ、
前記第1の速度、または前記第2の速度に対する前記第1の速度の割合が、
0を含む第1の範囲内となる第1の条件を満たした場合に、
前記第1のオブジェクトが前記他のオブジェクト上を転がっていると判定させ、前記第1のオブジェクトに関する第1の処理を行わせ、
0を含まない第2の範囲内となる第2の条件を満たした場合に、
前記第1のオブジェクトが前記他のオブジェクトに対して擦れて、または滑って移動していると判定させ、前記第1のオブジェクトに関する第2の処理を行わせる、ゲームプログラム。
【請求項2】
前記第1の処理は、前記第1のオブジェクトに関連付けられた第1の音を出力させる処理であって、
前記第2の処理は、前記第1のオブジェクトに関連付けられた、前記第1の音とは異なる第2の音を出力させる処理である、請求項1に記載のゲームプログラム。
【請求項3】
前記コンピュータにさらに、
前記第2の条件が満たされる場合において、
前記第1のオブジェクトの重心または所定の基準点に対する前記第1のオブジェクトにおける接触点の速度の正負に基づいて、前記第1のオブジェクトが前記他のオブジェクトに対して擦れながらまたは滑りながら回転する方向を判定させる、請求項
1に記載のゲームプログラム。
【請求項4】
前記第2の範囲は、前記第1の速度、または前記第2の速度に対する前記第1の速度の割合が、前記第1の範囲以外となる範囲である、請求項1に記載のゲームプログラム。
【請求項5】
前記第2の範囲は、前記第1の速度、または前記第2の速度に対する前記第1の速度の割合が、前記第1の範囲に少なくとも一部が含まれる範囲であり、
前記第1の条件および前記第2の条件の両方が満たされた場合、前記コンピュータに、前記第1の処理および前記第2の処理の両方を行わせる、請求項1に記載のゲームプログラム。
【請求項6】
前記コンピュータに、
前記第1のオブジェクトの前記運動を、少なくとも仮想的な動力、仮想的な重力、衝突に基づいた物理演算に基づいて制御させる、請求項2に記載のゲームプログラム。
【請求項7】
前記他のオブジェクトは、前記仮想空間内において移動しないオブジェクトであって、
前記第1の速度は、前記第1のオブジェクト
の前記接触点の速度であって、
前記第2の速度は、前記第1のオブジェクトの重心または所定の基準点の速度である、請求項1~6のいずれかに記載のゲームプログラム。
【請求項8】
前記他のオブジェクトは、前記仮想空間内の地形オブジェクトである、請求項7に記載のゲームプログラム。
【請求項9】
前記他のオブジェクトは、前記仮想空間内において移動するオブジェクトであって、
前記第1の速度は、前記第1のオブジェクトと前記他のオブジェクトの前記接触点における相対速度であって、
前記第2の速度は、前記第1のオブジェクトの重心または所定の基準点と前記他のオブジェクトの重心または所定の基準点との相対速度である、請求項1~6のいずれかに記載のゲームプログラム。
【請求項10】
プロセッサを備えたゲームシステムであって、
前記プロセッサは、
仮想空間内において第1のオブジェクトの運動を制御し、
前記第1のオブジェクトと他のオブジェクトとが接触し、かつ相対的に静止していない場合において、
前記第1のオブジェクトと前記他のオブジェクトの接触点を算出し、
前記接触点における前記第1のオブジェクトと前記他のオブジェクトの速度の差を示す第1の速度と、前記第1のオブジェクトの重心または所定の基準点と前記他のオブジェクトの重心または所定の基準点の速度の差を示す第2の速度とを対比し、
前記第1の速度、または前記第2の速度に対する前記第1の速度の割合が、
0を含む第1の範囲内となる第1の条件を満たした場合に、
前記第1のオブジェクトが前記他のオブジェクト上を転がっていると判定し、前記第1のオブジェクトに関する第1の処理を行い、
0を含まない第2の範囲内となる第2の条件を満たした場合に、
前記第1のオブジェクトが前記他のオブジェクトに対して擦れて、または滑って移動していると判定し、前記第1のオブジェクトに関する第2の処理を行う、ゲームシステム。
【請求項11】
前記第1の処理は、前記第1のオブジェクトに関連付けられた第1の音を出力させる処理であって、
前記第2の処理は、前記第1のオブジェクトに関連付けられた、前記第1の音とは異なる第2の音を出力させる処理である、請求項10に記載のゲームシステム。
【請求項12】
前記プロセッサはさらに、
前記第2の条件が満たされる場合において、
前記第1のオブジェクトの重心または所定の基準点に対する前記第1のオブジェクトにおける接触点の速度の正負に基づいて、前記第1のオブジェクトが前記他のオブジェクトに対して擦れながらまたは滑りながら回転する方向を判定する、請求項
10に記載のゲームシステム。
【請求項13】
前記第2の範囲は、前記第1の速度、または前記第2の速度に対する前記第1の速度の割合が、前記第1の範囲以外となる範囲である、請求項10に記載のゲームシステム。
【請求項14】
前記第2の範囲は、前記第1の速度、または前記第2の速度に対する前記第1の速度の割合が、前記第1の範囲に少なくとも一部が含まれる範囲であり、
前記第1の条件および前記第2の条件の両方が満たされた場合、前記プロセッサは、前記第1の処理および前記第2の処理の両方を行う、請求項10に記載のゲームシステム。
【請求項15】
前記プロセッサは、
前記第1のオブジェクトの前記運動を、少なくとも仮想的な動力、仮想的な重力、衝突に基づいた物理演算に基づいて制御する、請求項11に記載のゲームシステム。
【請求項16】
前記他のオブジェクトは、前記仮想空間内において移動しないオブジェクトであって、
前記第1の速度は、前記第1のオブジェクト
の前記接触点の速度であって、
前記第2の速度は、前記第1のオブジェクトの重心または所定の基準点の速度である、請求項10~15のいずれかに記載のゲームシステム。
【請求項17】
前記他のオブジェクトは、前記仮想空間内の地形オブジェクトである、請求項16に記載のゲームシステム。
【請求項18】
前記他のオブジェクトは、前記仮想空間内において移動するオブジェクトであって、
前記第1の速度は、前記第1のオブジェクトと前記他のオブジェクトの前記接触点における相対速度であって、
前記第2の速度は、前記第1のオブジェクトの重心または所定の基準点と前記他のオブジェクトの重心または所定の基準点との相対速度である、請求項10~15のいずれかに記載のゲームシステム。
【請求項19】
プロセッサを備えたゲーム装置であって、
前記プロセッサは、
仮想空間内において第1のオブジェクトの運動を制御し、
前記第1のオブジェクトと他のオブジェクトとが接触し、かつ相対的に静止していない場合において、
前記第1のオブジェクトと前記他のオブジェクトの接触点を算出し、
前記接触点における前記第1のオブジェクトと前記他のオブジェクトの速度の差を示す第1の速度と、前記第1のオブジェクトの重心または所定の基準点と前記他のオブジェクトの重心または所定の基準点の速度の差を示す第2の速度とを対比し、
前記第1の速度、または前記第2の速度に対する前記第1の速度の割合が、
0を含む第1の範囲内となる第1の条件を満たした場合に、
前記第1のオブジェクトが前記他のオブジェクト上を転がっていると判定し、前記第1のオブジェクトに関する第1の処理を行い、
0を含まない第2の範囲内となる第2の条件を満たした場合に、
前記第1のオブジェクトが前記他のオブジェクトに対して擦れて、または滑って移動していると判定し、前記第1のオブジェクトに関する第2の処理を行う、ゲーム装置。
【請求項20】
前記第1の処理は、前記第1のオブジェクトに関連付けられた第1の音を出力させる処理であって、
前記第2の処理は、前記第1のオブジェクトに関連付けられた、前記第1の音とは異なる第2の音を出力させる処理である、請求項19に記載のゲーム装置。
【請求項21】
情報処理装置のコンピュータに、
仮想空間内において第1のオブジェクトの運動を制御させ、
前記第1のオブジェクトと他のオブジェクトとが接触し、かつ相対的に静止していない場合において、
前記第1のオブジェクトと前記他のオブジェクトの接触点を算出させ、
前記接触点における前記第1のオブジェクトと前記他のオブジェクトの速度の差を示す第1の速度と、前記第1のオブジェクトの重心または所定の基準点と前記他のオブジェクトの重心または所定の基準点の速度の差を示す第2の速度とを対比させ、
前記第1の速度、または前記第2の速度に対する前記第1の速度の割合が、
0を含む第1の範囲内となる第1の条件を満たした場合に、
前記第1のオブジェクトが前記他のオブジェクト上を転がっていると判定させ、前記第1のオブジェクトに関する第1の処理を行わせ、
0を含まない第2の範囲内となる第2の条件を満たした場合に、
前記第1のオブジェクトが前記他のオブジェクトに対して擦れて、または滑って移動していると判定させ、前記第1のオブジェクトに関する第2の処理を行わせる、ゲーム方法。
【請求項22】
前記第1の処理は、前記第1のオブジェクトに関連付けられた第1の音を出力させる処理であって、
前記第2の処理は、前記第1のオブジェクトに関連付けられた、前記第1の音とは異なる第2の音を出力させる処理である、請求項21に記載のゲーム方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ゲーム等の情報処理に関する。
【背景技術】
【0002】
従来から、操作入力に基づいて、仮想空間内のオブジェクトを能動的に転がすと共に転がり音(効果音)を出力するゲーム処理が知られている(例えば特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記したゲーム処理は、転がり以外の運動、例えば擦れたり滑ったりする運動に対する効果音には対応していない。また、近年では物理演算によってオブジェクトの挙動を制御すること多いが、そのような制御において、転がっている場合と擦れたり滑ったりしている場合等、運動の状況を判別して適切に効果音を出力するには改善が必要であった。
【0005】
それ故に、本発明の目的は、仮想空間内のオブジェクトが、他のオブジェクトとの関係において多様な運動をする場合において、それぞれの場合に応じた処理を適切に行うことができるゲームプログラム、ゲームシステム、ゲーム装置およびゲーム方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0007】
構成例の一例は、情報処理装置のコンピュータに、仮想空間内において第1のオブジェクトの運動を制御させ、第1のオブジェクトと他のオブジェクトとが接触し、かつ相対的に静止していない場合において、第1のオブジェクトと他のオブジェクトの接触点を算出させ、接触点における第1のオブジェクトと他のオブジェクトの速度の差を示す第1の速度と、第1のオブジェクトの重心または所定の基準点と前記他のオブジェクトの重心または所定の基準点の速度の差を示す第2の速度とを対比させ、第1の速度、または第2の速度に対する第1の速度の割合が、0を含む第1の範囲内となる第1の条件を満たした場合に、第1のオブジェクトに関する第1の処理を行わせ、0を含まない第2の範囲内となる第2の条件を満たした場合に、第1のオブジェクトに関する第2の処理を行わせるゲームプログラムである。
【0008】
上記構成によれば、オブジェクトの運動の種類に応じて異なる処理を行うことができる。
【0009】
他の構成例として、第1の処理は、第1のオブジェクトに関連付けられた第1の音を出力させる処理であって、第2の処理は、第1のオブジェクトに関連付けられた、第1の音とは異なる第2の音を出力させる処理であってもよい。
【0010】
上記構成によれば、オブジェクトの運動の種類に応じて異なる効果音を発生させることができる。
【0011】
他の構成例として、第1の処理は、第1のオブジェクトが他のオブジェクト上を転がっている場合に行われる処理であって、第2の処理は、第1のオブジェクトが他のオブジェクトに対して擦れて、または滑って移動している場合に行われる処理であってもよい。
【0012】
上記構成によれば、転がる音や、擦れる(滑る)音をオブジェクトの挙動に合わせて使い分けることができる。
【0013】
他の構成例として、コンピュータにさらに、第2の条件が満たされる場合において、第1のオブジェクトの重心または所定の基準点に対する第1のオブジェクトにおける接触点の速度の正負に基づいて、第1のオブジェクトが他のオブジェクトに対して擦れながらまたは滑りながら回転する方向を判定させてもよい。
【0014】
上記構成によれば、擦れながら(滑りながら)生じたオブジェクトの回転方向を判定できる。
【0015】
他の構成例として、第2の範囲は、第1の速度、または第2の速度に対する第1の速度の割合が、第1の範囲以外となる範囲であってもよい。
【0016】
上記構成によれば、転がる音と擦れる(滑る)音を連続して出力できる。
【0017】
他の構成例として、コンピュータに、第1のオブジェクトの運動を、少なくとも仮想的な動力、仮想的な重力、衝突に基づいた物理演算に基づいて制御させてもよい。
【0018】
上記構成によれば、物理演算に応じて転がる音や擦れる(滑る)音を出力できる。
【0019】
他の構成例として、他のオブジェクトは、仮想空間内において移動しないオブジェクトであって、第1の速度は、第1のオブジェクト接触点の速度であって、第2の速度は、第1のオブジェクトの重心または所定の基準点の速度であってもよい。
【0020】
他の構成例として、他のオブジェクトは、仮想空間内の地形オブジェクトであってもよい。
【0021】
上記構成によれば、地形オブジェクト上を運動するオブジェクトについて、転がる音や擦れる(滑る)音を出力できる。
【0022】
他の構成例として、他のオブジェクトは、仮想空間内において移動するオブジェクトであって、第1の速度は、第1のオブジェクトと他のオブジェクトの接触点における相対速度であって、第2の速度は、第1のオブジェクトの重心または所定の基準点と他のオブジェクトの重心または所定の基準点との相対速度であってもよい。
【0023】
上記構成によれば、移動するオブジェクト上を運動するオブジェクトについて、転がる音や擦れる(滑る)音を出力できる。
【発明の効果】
【0024】
本実施形態によれば、仮想空間内のオブジェクトが、他のオブジェクトとの関係において多様な運動をする場合において、それぞれの場合に応じた処理を適切に行うことができるゲームプログラム、ゲームシステム、ゲーム装置およびゲーム方法を提供することができる。
【図面の簡単な説明】
【0025】
【
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
【
図2】本体装置2の内部構成の一例を示すブロック図
【
図3】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
【
図4】転がり/滑りの判定について説明するための図
【
図5】転がり/滑りの判定について説明するための図
【
図6】順回転しながら滑る場合の判定について説明するための図
【
図7】逆回転しながら滑る場合の判定について説明するための図
【
図8】転がり/滑りの判定について説明するための図
【
図9】転がり/滑りの判定について説明するための図
【
図10】順回転しながら滑る場合の判定について説明するための図
【
図11】逆回転しながら滑る場合の判定について説明するための図
【
図12】転がり判定されて転がり音が出力される場合の一例について説明するための図
【
図13】滑り判定されて滑り音が出力される場合の一例について説明するための図
【
図14】DRAM85に記憶される各種データの例を示す図
【発明を実施するための形態】
【0026】
以下、一実施形態について説明する。
【0027】
[情報処理システムのハードウェア構成]
【0028】
以下、本実施形態の一例に係る情報処理システム(ゲームシステム)について説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0029】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0030】
また、本体装置2は、スピーカを備えており、スピーカから効果音等の音が出力される。
【0031】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための左側端子と、本体装置2が右コントローラ4と有線通信を行うための右側端子を備える。
【0032】
また、本体装置2は、スロットを備える。スロットは、本体装置2のハウジングの上側面に設けられる。スロットは、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。
【0033】
左コントローラ3および右コントローラ4は、それぞれ、各種操作ボタン等を備える。各種操作ボタン等は、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0034】
また、左コントローラ3および右コントローラ4は、それぞれ、本体装置2と有線通信を行うための端子を備える。
【0035】
図2は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0036】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0037】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0038】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0039】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、例えばWi-Fiの規格に準拠した方式により無線LANに接続して、外部装置(他の本体装置2)とインターネット通信等を行う。また、ネットワーク通信部82は、他の本体装置2と近距離無線通信(例えば、赤外線通信)を行うこともできる。
【0040】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0041】
プロセッサ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は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0042】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0043】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0044】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0045】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0046】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0047】
図3は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図2で示しているため
図3では省略している。
【0048】
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。
図3に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
【0049】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0050】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、左スティック32を備える。各ボタン103および左スティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0051】
左コントローラ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へ出力される。
【0052】
通信制御部101は、各入力部(具体的には、各ボタン103、左スティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0053】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103および左スティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
【0054】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0055】
図3に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0056】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、右スティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0057】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0058】
[本実施形態で想定するゲームについて]
次に、本実施形態にかかるゲームシステム1で実行されるゲーム処理(情報処理の一例)の概要を説明する。本実施形態で想定するゲームは、例えば、様々なオブジェクトが配置された仮想空間(ゲーム空間)内を、プレイヤの操作に応じて動作するプレイヤオブジェクト(「キャラクタ」という場合がある)が移動等して所定の目的を達成するロールプレイングゲームである。なお、本ゲームは、ロールプレイングゲームに限られず、他の種類のゲーム(対戦ゲーム等)であってもよい。
【0059】
[本実施形態のゲーム処理の概要]
本ゲーム処理では、プレイヤ(ユーザ)の操作に応じてキャラクタの動作等を制御し、仮想カメラで仮想空間を撮影してディスプレイ12に表示してゲームを進行する。また、本ゲーム処理では、物理演算を行う。つまり、本ゲーム処理では、仮想空間内において、各オブジェクトの運動を、仮想的な動力、重力、衝突等に基づいた物理演算によって制御する。そして、物理演算によって制御される各オブジェクトの動作に応じて、適切な処理を実行することができる。
【0060】
具体的には、オブジェクト同士の関係性に基づいて、一方のオブジェクトが他方のオブジェクト上を転がっているか滑っているかを判定して、転がっている場合には転がり音をスピーカ88から出力し、滑っている場合(擦れて移動している場合)には滑り音をスピーカ88から出力する。以下、図を参照して具体的に説明する。なお、転がり音や滑り音をスピーカから出力する代わりに(又はそれに加えて)、他の処理(転がりや滑りに応じたバーチャルエフェクトを表示する処理等)を行ってもよい。
【0061】
[移動しないオブジェクト上をオブジェクトが移動する場合]
まず、
図4~
図7を参照して、移動しないオブジェクト上(表面)をオブジェクトが移動する場合について、説明する。本説明では、一例として、地面オブジェクト300上を球形状のオブジェクト(「球オブジェクト」という場合がある)200が移動している場合を用いて説明する。
【0062】
図4は、地面オブジェクト300上を球オブジェクト200が(滑ることなく)転がって移動する場合について説明するための図である。
図4では、地面オブジェクト300上の球オブジェクト200がX軸方向に(滑ることなく)転がって移動している。また、
図4において、G1は球オブジェクト200の重心であり、Cは球オブジェクト200と地面オブジェクト300との接触点であり、Aは球オブジェクト200表面の点である。そして、
図4において、球オブジェクト200が転がることに応じて、点Aの位置が移動している。
【0063】
図4に示すように、球オブジェクト200が滑ることなく転がってX軸方向に移動する場合には、接触点Cにおいて滑り(擦れ)が生じていない。このことから、球オブジェクト200における接触点Cの部分は、移動しない地面オブジェクト300における接触点Cの部分に対して動いていないと言える。言い換えると、接触点Cにおける球オブジェクト200の速度は0(ゼロ)である。このことから、接触点Cにおける球オブジェクト200の速度が0の場合、球オブジェクト200が地面オブジェクト300上を滑ることなく転がっていると判定できる。
【0064】
図5は、地面オブジェクト300上を球オブジェクト200が滑りながら(擦れながら)移動する場合について説明するための図である。
図5では、地面オブジェクト300上の球オブジェクト200がX軸方向に滑りながら移動している。また、
図5において、G1は球オブジェクト200の重心であり、Cは球オブジェクト200と地面オブジェクト300との接触点であり、Aは球オブジェクト200表面の点である。そして、
図5において、球オブジェクト200が全く回転することなく滑って移動しているので、点Aは接触点Cと同じ位置のままとなっている。
【0065】
図5に示すように、球オブジェクト200が全く回転することなく滑りながらX軸方向に移動する場合には、接触点Cにおいて滑り(擦れ)が生じている。このことから、球オブジェクト200における接触点Cの部分は、移動しない地面オブジェクト300における接触点Cの部分に対して動いていると言える。言い換えると、接触点Cにおける球オブジェクト200の速度は0(ゼロ)ではない。このことから、接触点Cにおける球オブジェクト200の速度が0ではない場合、球オブジェクト200が地面オブジェクト300上を滑っていると判定できる。
【0066】
図6は、地面オブジェクト300上を球オブジェクト200が順回転しながら滑って移動する場合について説明するための図である。
図6では、地面オブジェクト300上の球オブジェクト200がX軸方向に、順回転しながら滑って移動している。また、
図6において、G1は球オブジェクト200の重心であり、Cは球オブジェクト200と地面オブジェクト300との接触点であり、Aは球オブジェクト200表面の点である。そして、
図6において、球オブジェクト200が順回転することに応じて、点Aの位置が移動している。
【0067】
図6に示すように、球オブジェクト200が順回転しながら滑ってX軸方向に移動する場合には、接触点Cにおいて滑り(擦れ)が生じている。このことから、
図5の場合と同様に、接触点Cにおける球オブジェクト200の速度は0(ゼロ)ではない。また、
図6に示すように、球オブジェクト200の重心G1の位置を基準にすると、点AのX軸方向の速度はマイナスの値となる。このことから、接触点Cにおける球オブジェクト200の速度が0ではなく、又、球オブジェクト200の重心G1の位置を基準にして点AのX軸方向の速度がマイナスである場合、球オブジェクト200が地面オブジェクト300上を順回転しながら滑っていると判定できる。
【0068】
図7は、地面オブジェクト300上を球オブジェクト200が逆回転しながら滑って移動する場合について説明するための図である。
図7では、地面オブジェクト300上の球オブジェクト200がX軸方向に、逆回転しながら滑って移動している。また、
図6において、G1は球オブジェクト200の重心であり、Cは球オブジェクト200と地面オブジェクト300との接触点であり、Aは球オブジェクト200表面の点である。そして、
図7において、球オブジェクト200が逆回転することに応じて、点Aの位置が移動している。
【0069】
図7に示すように、球オブジェクト200が逆回転しながら滑ってX軸方向に移動する場合には、接触点Cにおいて滑り(擦れ)が生じている。このことから、
図5の場合と同様に、接触点Cにおける球オブジェクト200の速度は0(ゼロ)ではない。また、
図7に示すように、球オブジェクト200の重心G1(又は球オブジェクト200全体)の位置を基準にすると、点AのX軸方向の速度はプラスの値となる。このことから、接触点Cにおける球オブジェクト200の速度が0ではなく、又、球オブジェクト200の重心G1の位置を基準にして点AのX軸方向の速度がプラスである場合、球オブジェクト200が地面オブジェクト300上を逆回転しながら滑っていると判定できる。
【0070】
[移動しているオブジェクト上をオブジェクトが移動する場合]
次に、
図8~
図11を参照して、移動しているオブジェクト上(表面)をオブジェクトが移動する場合について、説明する。本説明では、一例として、移動しているオブジェクト(「移動オブジェクト」という場合がある)400上を球オブジェクト200が移動している場合を用いて説明する。なお、移動しているオブジェクト400は、例えば、移動する船の甲板である。また、
図4~
図7を用いて説明した地面オブジェクト300上を球オブジェクト200が移動している場合は、以下の説明において、移動オブジェクト400が移動しない場合(静止している場合)と考えることができる。
【0071】
図8は、移動オブジェクト400上を球オブジェクト200が(滑ることなく)転がって移動する場合について説明するための図である。
図8では、X軸のマイナス方向に移動する移動オブジェクト400上を、球オブジェクト200がX軸のプラス方向に(滑ることなく)転がって移動している。なお、
図8において、移動オブジェクト400は、破線で示す位置から実線で示す位置に移動している。また、
図8において、G1は球オブジェクト200の重心であり、G2は移動オブジェクト400の重心であり、Cは球オブジェクト200とオブジェクト400との接触点であり、Aは球オブジェクト200表面の点である。そして、
図8において、球オブジェクト200が移動オブジェクト400上を転がることに応じて、点Aの位置が移動している。
【0072】
図8に示すように、球オブジェクト200が移動オブジェクト400上を滑ることなく転がってX軸方向に移動する場合には、
図4と同様に、接触点Cにおいて滑り(擦れ)が生じていない。このことから、球オブジェクト200における接触点Cの部分は、移動オブジェクト400における接触点Cの部分に対して動いていないと言える。言い換えると、接触点Cにおいて、球オブジェクト200の速度と移動オブジェクト400の速度との差は0(ゼロ)である。このことから、接触点Cにおいて球オブジェクト200の速度と移動オブジェクト400の速度との差が0の場合、球オブジェクト200が移動オブジェクト400上を滑ることなく転がっていると判定できる。
【0073】
図9は、移動オブジェクト400上を球オブジェクト200が滑りながら(擦れながら)移動する場合について説明するための図である。
図9では、X軸のマイナス方向に移動する移動オブジェクト400上を、球オブジェクト200がX軸のプラス方向に滑りながら移動している。また、
図9において、G1は球オブジェクト200の重心であり、G2は移動オブジェクト400の重心であり、Cは球オブジェクト200と移動オブジェクト400との接触点であり、Aは球オブジェクト200表面の点である。そして、
図9において、球オブジェクト200が全く回転することなく滑って移動しているので、点Aは接触点Cと同じ位置のままとなっている。
【0074】
図9に示すように、球オブジェクト200が全く回転することなく滑りながらX軸のプラス方向に移動する場合には、
図5と同様に、接触点Cにおいて滑り(擦れ)が生じている。このことから、球オブジェクト200における接触点Cの部分は、移動オブジェクト400における接触点Cの部分に対して動いていると言える。言い換えると、接触点Cにおいて、球オブジェクト200の速度と移動オブジェクト400の速度との差は0(ゼロ)ではない。このことから、接触点Cにおいて球オブジェクト200の速度と移動オブジェクト400の速度との差が0ではない場合、球オブジェクト200が移動オブジェクト400上を滑っていると判定できる。
【0075】
図10は、移動オブジェクト400上を球オブジェクト200が順回転しながら滑って移動する場合について説明するための図である。
図10では、X軸のマイナス方向に移動する移動オブジェクト400上を、球オブジェクト200がX軸のプラス方向に、順回転しながら滑って移動している。また、
図10において、G1は球オブジェクト200の重心であり、G2は移動オブジェクト400の重心であり、Cは球オブジェクト200と移動オブジェクト400との接触点であり、Aは球オブジェクト200表面の点である。そして、
図10において、球オブジェクト200が順回転することに応じて、点Aの位置が移動している。
【0076】
図10に示すように、球オブジェクト200が順回転しながら滑ってX軸のプラス方向に移動する場合には、
図9と同様に、接触点Cにおいて滑り(擦れ)が生じている。このことから、
図9の場合と同様に、接触点Cにおいて球オブジェクト200の速度と移動オブジェクト400の速度との差は0(ゼロ)ではない。また、
図10に示すように、球オブジェクト200の重心G1の位置を基準にすると、点AのX軸方向の速度はマイナスの値となる。このことから、接触点Cにおいて球オブジェクト200の速度と移動オブジェクト400の速度との差が0ではなく、又、球オブジェクト200の重心G1の位置を基準にして点AのX軸方向の速度がマイナスの値である場合、球オブジェクト200が移動オブジェクト400上を順回転しながら滑っていると判定できる。
【0077】
図11は、移動オブジェクト400上を球オブジェクト200が逆回転しながら滑って移動する場合について説明するための図である。
図11では、X軸のマイナス方向に移動する移動オブジェクト400上を、球オブジェクト200がX軸のプラス方向に、逆回転しながら滑って移動している。また、
図11において、G1は球オブジェクト200の重心であり、G2は移動オブジェクト400の重心であり、Cは球オブジェクト200と移動オブジェクト400との接触点であり、Aは球オブジェクト200表面の点である。そして、
図11において、球オブジェクト200が逆回転することに応じて、点Aの位置が移動している。
【0078】
図11に示すように、球オブジェクト200が逆回転しながら滑ってX軸のプラス方向に移動する場合には、
図9と同様に、接触点Cにおいて滑り(擦れ)が生じている。このことから、
図9の場合と同様に、接触点Cにおいて球オブジェクト200の速度と移動オブジェクト400の速度との差は0(ゼロ)ではない。また、
図11に示すように、球オブジェクト200の重心G1の位置を基準にすると、点AのX軸方向の速度はプラスの値となる。このことから、接触点Cにおいて球オブジェクト200の速度と移動オブジェクト400の速度との差が0ではなく、又、球オブジェクト200の重心G1の位置を基準にして点AのX軸方向の速度がプラスの値である場合、球オブジェクト200が移動オブジェクト400上を逆回転しながら滑っていると判定できる。
【0079】
以上に説明した内容をまとめると、下記のようになる。
(1)接触点Cにおける球オブジェクト200の速度(X軸方向の速度)と移動オブジェクト400の速度(X軸方向の速度)との差(「第1の速度」という場合がある)が0の場合、球オブジェクト200が移動オブジェクト400上を滑ることなく転がっていると判定できる(
図8参照)。
(2)第1の速度が0ではない場合、球オブジェクト200が移動オブジェクト400上を滑っていると判定できる(
図9参照)。
(3)球オブジェクト200が移動オブジェクト400上を滑っていると判定した場合において、球オブジェクト200の重心G1の位置を基準にして点AのX軸方向の速度(「第3の速度」という場合がある)がマイナスの値である場合、球オブジェクト200が移動オブジェクト400上を順回転しながら滑っていると判定できる(
図10参照)。
(4)球オブジェクト200が移動オブジェクト400上を滑っていると判定した場合において、第3の速度がプラスの値である場合、球オブジェクト200が移動オブジェクト400上を逆回転しながら滑っていると判定できる(
図11参照)。
【0080】
[オブジェクトの重心の相対速度を考慮する方法]
次に、以上に説明したオブジェクトの状態の判定(転がっているか滑っているかの判定)に、オブジェクトの重心の相対速度を考慮する方法について説明する。
【0081】
具体的には(
図10参照)、第1の速度を、球オブジェクト200の重心G1と移動オブジェクト400の重心G2とのX軸方向の速度差(重心G1と重心G2のX軸方向の相対速度:「第2の速度」という場合がある)で除算した値の絶対値(「割合値」という場合がある)が所定値D(例えば、D=0.5)以下の場合、球オブジェクト200が移動オブジェクト400上を滑ることなく転がっていると判定する。つまり、下記(数式1)が満たされる場合、球オブジェクト200が移動オブジェクト400上を滑ることなく転がっていると判定する。
|第1の速度/第2の速度|≦D・・・(数式1)
【0082】
一方で(
図11参照)、上記した絶対値が所定値D(例えば、D=0.5)より大きい場合、球オブジェクト200が移動オブジェクト400上を滑っていると判定する。つまり、下記(数式2)が満たされる場合、球オブジェクト200が移動オブジェクト400上を滑っていると判定する。
|第1の速度/第2の速度|>D・・・(数式2)
【0083】
上記のようにオブジェクトの重心の相対速度を考慮することによって、第2の速度が大きくなるに従って転がりと判定され易くなる。このことによって、両オブジェクトの相対速度が大きく、オブジェクトの転がりが起こっているのか否かがプレイヤに分かり難い(見えにくい)状況において、転がっていると判定して後述する転がり音を出力する制御を行って違和感が生じることを回避できる。
【0084】
ここで、上記のようにオブジェクトの重心の相対速度を考慮する方法においても、既に説明した球オブジェクト200が移動オブジェクト400上を順回転しながら滑っていると判定する方法が適用できる(
図10参照)。同様に、上記のようにオブジェクトの重心の相対速度を考慮する方法においても、既に説明した球オブジェクト200が移動オブジェクト400上を逆回転しながら滑っていると判定する方法が適用できる(
図11参照)。
【0085】
なお、以上に説明した、オブジェクトの重心の相対速度を考慮する方法と考慮しない方法は、何れか一方を使用してもよいし、両方を使用してもよい。
【0086】
次に、以上に説明した転がりや滑りの判定結果を用いた制御の一例について説明する。
図12は、オブジェクトが転がっていると判定した場合の処理の一例について説明するための図である。
図13は、オブジェクトが滑っていると判定した場合の処理の一例について説明するための図である。
図12に示すように、プレイヤキャラクタ202が地面オブジェクト300上で球オブジェクト200を転がしている場合において、以上に説明した方法によって、球オブジェクト200が(滑ることなく)転がっていると判定された場合、スピーカから転がり音が出力される。一方で、
図13に示すように、プレイヤキャラクタ202が地面オブジェクト300上で球オブジェクト200を引っ張って滑らせている場合において、以上に説明した方法によって、球オブジェクト200が滑っていると判定された場合、スピーカから滑り音が出力される。また、球オブジェクト200が滑っていると判定された場合において、球オブジェクト200が順回転していると判定された場合にはスピーカから順回転の滑り音が出力され、球オブジェクト200が逆回転していると判定された場合にはスピーカから逆回転の滑り音が出力される。なお、上記した転がり音の代わりに(又は転がり音に加えて)、例えば球オブジェクト200に対して、所定のバーチャルエフェクトを表示させてもよい。また、上記した滑り音の代わりに(又は滑り音に加えて)、例えば球オブジェクト200に対して、上記した所定のバーチャルエフェクトとは異なるバーチャルエフェクトを表示せいてもよい。
【0087】
[本実施形態の情報処理の詳細]
次に、
図14~
図17を参照して、本実施形態の情報処理について詳細に説明する。
【0088】
[使用データについて]
本ゲーム処理において用いられる各種データに関して説明する。
図14は、ゲームシステム1のDRAM85に記憶されるデータの一例を示している。
図14示すように、DRAM85には、少なくともプログラム記憶領域301とデータ記憶領域302が設けられる。プログラム記憶領域301には、ゲームプログラム401が格納される。データ記憶領域302には、ゲーム制御用データ402、画像データ408、仮想カメラ制御用データ409、操作データ410、送信用データ411および受信データ412等が格納される。ゲーム制御用データ402には、オブジェクトデータ403が含まれる。
【0089】
ゲームプログラム401は、本ゲーム処理を実行するためのゲームプログラムである。ゲームプログラム401には、仮想空間(ゲーム空間)内において各オブジェクトの動きを現実世界のように再現する物理演算を行う物理演算プログラムが含まれている。
【0090】
オブジェクトデータ403は、仮想空間に配置されるオブジェクトのデータであり、プレイヤキャラクタ、他のキャラクタ、アイテム、地面、岩、石、木、建物等のオブジェクトのデータである。また、オブジェクトデータ403は、各オブジェクトの形状、位置、姿勢、移動状態、動作状態、属性等を示すデータである。また、上記した物理演算プログラムは、オブジェクトデータ403を用いて物理演算を行う。
【0091】
画像データ408は、背景やバーチャルエフェクト等の画像データである。
【0092】
仮想カメラ制御用データ409は、仮想空間に配置される仮想カメラの動きを制御するためのデータである。具体的には、仮想カメラの位置・姿勢、画角、撮像方向等を指定するデータである。
【0093】
操作データ410は、左コントローラ3および右コントローラ4に対して行われた操作の内容を示すデータである。例えば、左コントローラ3および右コントローラ4の動きや姿勢変化、各種ボタンに対する押下状態等に対する入力状態を示すデータが含まれる。当該操作データの内容は、左コントローラ3および右コントローラ4からの信号に基づき、所定の周期で更新される。
【0094】
送信用データ411は、他のゲームシステム1に送信するためのデータであり、少なくとも、送信元を特定するための情報と、操作データ410の内容を含むデータである。
【0095】
受信データ412は、他のゲームシステム1から受信した送信用データを、当該他のゲームシステム1毎に(つまり、送信元が)識別可能なように記憶したデータである。
【0096】
その他、DRAM85には、ゲーム処理で用いられる各種のデータが必要に応じて記憶される。
【0097】
[ゲーム処理の詳細について]
次に、フローチャートを参照して、本実施形態に係るゲーム処理の詳細を説明する。
図15~
図17は、本実施形態に係るゲーム処理の詳細を示すフローチャートの一例である。
【0098】
まず、本ゲーム処理が開始されると、
図15のステップS100において、プロセッサ81は、ゲーム開始処理を行う。例えば、プロセッサ81は、ゲーム処理の開始を示す演出を表示部(ディスプレイ12等)に表示する。その後、処理はステップS200に移る。
【0099】
ステップS200において、プロセッサ81は、ゲーム制御処理を行う。具体的には、プロセッサ81は、プレイヤの操作に基づいて仮想空間内でプレイヤキャラクタを動作させる等して、ゲームを進行する処理を行う。また、プロセッサ81は、オブジェクトデータ403等に基づいて物理演算を行うことで、仮想空間内において各オブジェクトの動きを現実世界のように再現する。なお、ゲーム制御処理の実行中には、毎フレーム(つまり、所定時間間隔で)、操作データの取得、仮想空間の各オブジェクトの制御、および画像の表示等が行われる。
【0100】
また、ステップS200のゲーム制御処理において、プロセッサ81は、物理演算の結果に基づいて、オブジェクトについての転がり/滑り音処理を実行する。
図16は、転がり/滑り音処理のフローチャートの一例である。
【0101】
図16のステップS501において、プロセッサ81は、オブジェクトデータ403等に基づいて、相対的に静止していないオブジェクト間の接触点C(
図8等参照)を算出する。その後、処理は、ステップS502に移る。なお、オブジェクト間の接触点Cの算出は、接触した両オブジェクトが静止している期間においても実行されてよい。
【0102】
ステップS502において、プロセッサ81は、オブジェクトデータ403等に基づいて、ステップS501で算出した接触点Cにおける両オブジェクト(互いに接触しているオブジェクト)の速度差(第1の速度)を算出する。具体的には、プロセッサ81は、
図8等を用いて説明したように、接触点Cにおける球オブジェクト200の速度(X軸方向の速度)と移動オブジェクト400の速度(X軸方向の速度)との差(第1の速度)を算出する。その後、処理は、ステップS503に移る。
【0103】
ステップS503において、プロセッサ81は、ステップS502で算出した第1の速度が0であるか否かを判定する。この判定がYESの場合、処理はステップS504に移り、NOの場合、処理はステップS505に移る。
【0104】
ステップS504において、プロセッサ81は、オブジェクトが転がっていると判定し、
図12を用いて説明したように、スピーカから転がり音を出力させる。その後、処理はステップS501に戻る。
【0105】
ステップS505において、プロセッサ81は、オブジェクトデータ403等に基づいて、オブジェクトの回転の有無および回転方向を算出する。具体的には、プロセッサ81は、
図10および
図11を用いて説明したように、球オブジェクト200の重心G1の位置を基準にして点AのX軸方向の速度(第3の速度)が0である場合はオブジェクトが回転せず滑っていると判定し、第3の速度がマイナスである場合はオブジェクトが順回転しながら滑っていると判定し、第3の速度がプラスである場合はオブジェクトが逆回転しながら滑っていると判定する。その後、処理はステップS506に移る。
【0106】
ステップS506において、プロセッサ81は、
図13を用いて説明したように、オブジェクトが滑っていると判定し、スピーカから滑り音を出力させる。また、プロセッサ81は、ステップS505の判定に基づいて、スピーカから出力させる滑り音を変化させる。例えば、オブジェクトが順回転している場合には比較的高い滑り音を出力させ、オブジェクトが逆回転している場合には比較的低い滑り音を出力させる。その後、処理はステップS501に戻る。
【0107】
また、ステップS200のゲーム制御処理において、プロセッサ81は、物理演算の結果に基づいて、他の転がり/滑り音処理を実行することもできる。
図17は、他の転がり/滑り音処理のフローチャートの一例である。
【0108】
図17のフローチャートは、
図16のフローチャートのステップS503を、ステップS601~S603に置き換えたものである。そこで、以下ではステップS601~S603について説明し、他のステップの説明は省略する。
【0109】
ステップS601において、プロセッサ81は、オブジェクトデータ403等に基づいて、ステップS501で算出した接触点Cで接触する両オブジェクト(互いに接触しているオブジェクト)の重心の速度差(第2の速度)を算出する。具体的には、プロセッサ81は、既に説明したように、球オブジェクト200の重心G1と移動オブジェクト400の重心G2とのX軸方向の速度差(第2の速度)を算出する(
図8等参照)。その後、処理は、ステップS602に移る。
【0110】
ステップS602において、プロセッサ81は、割合値を算出する。具体的には、プロセッサ81は、既に説明したように、第1の速度を第2の速度で除算した値の絶対値(割合値)を算出する。その後、処理は、ステップS603に移る。
【0111】
ステップS603において、プロセッサ81は、ステップS602で算出した割合値が所定数D(例えば、D=0.5)以下であるか否かを判定する。この判定がYESの場合、処理はステップS504に移り、NOの場合、処理はステップS505に移る。
【0112】
以上で、転がり/滑り音処理についての説明は終わる。なお、
図16を用いて説明した転がり/滑り音処理と、
図17を用いて説明した転がり/滑り音処理は、何れか一方が実行されてもよいし、両方が実行されてもよい。
【0113】
説明は
図15に戻り、ステップS300において、プロセッサ81は、ゲーム処理終了条件を満たしたか否かを判定する。この判定がYESの場合、処理はステップS400に移り、この判定がNOの場合、処理はステップS200に戻ってゲームが継続される。
【0114】
ステップS400において、プロセッサ81は、ゲーム処理を終了するゲーム終了処理を行う。その後、本ゲーム処理は終了する。
【0115】
以上に説明したように、本実施形態によれば、オブジェクトが他のオブジェクト上を転がっているのか滑っているのかを判定し、その判定に応じて転がり音又は滑り音を出力することができる(
図16、
図17等参照)。また、本実施形態によれば、オブジェクトの重心の相対速度を考慮することによって、第2の速度が大きくなるに従って転がりと判定され易くなる(
図17等参照)。このことによって、両オブジェクトの相対速度が大きく、オブジェクトの転がりが起こっているのか否かがプレイヤに分かり難い(見えにくい)状況において、転がっていると判定して転がり音を出力する制御を行って違和感が生じることを回避できる。
【0116】
[変形例]
なお、上記した本実施形態では、オブジェクトの重心(G1、G2)を用いて、第2の速度等を算出する例を挙げた。しかし、重心の代わりに、所定の基準点(オブジェクトの速度を表すことができる点)を用いてもよい。例えば、重心の代わりに、オブジェクトの中心点(図形的な中心点)や、物理演算においてオブジェクトの回転中心として計算される点を用いてもよい。
【0117】
また、上記した本実施形態では、オブジェクトの重心の相対速度を考慮してオブジェクトの状態の判定(転がっているか滑っているかの判定)を行う場合に(
図8~
図11、
図17参照)、上記した(数式1・・・|第1の速度/第2の速度|≦D)および(数式2・・・|第1の速度/第2の速度|>D)において、同じ値D(例えばD=0.5)を用いる例を挙げた。しかし、(数式1)および(数式2)について異なるDの値を用いてもよい。例えば、下記のように、(数式2)に対して、D(例えばD=0.5)の代わりに、Dとは異なるD’(D’>D、又は、D’<D)を用いた(数式2’)を用いてもよい。
|第1の速度/第2の速度|>D’・・・(数式2’)
上記(数式2’)においてD’>Dである場合には、(数式1)および(数式2’)の何れにも当てはまらない場合(期間)が生じる。そして、この何れにも当てはまらない場合(期間)において、転がり音および滑り音の両方を出力しない構成としてもよいし、これに加えて、転がり音および滑り音の何れとも異なる他の音を出力する構成としてもよい。一方、上記(数式2’)においてD’<Dである場合には、(数式1)および(数式2’)の両方に当てはまる場合(期間)が生じる。そして、この両方に当てはまる場合(期間)において、転がり音および滑り音の両方を出力する構成としてもよい。
【0118】
また、上記した本実施形態において、上記した(数式1)および(数式2)について第1の速度の絶対値および第2の速度の絶対値の両方が、所定の閾値以下の場合には、移動オブジェクト400に対して球オブジェクト200が動いていないとみなして(判定して)、転がり音および滑り音の何れも出力しない構成としてもよい。
【0119】
また、上記した本実施形態においては、ゲーム処理にかかる一連の処理が単一のゲーム装置2で実行される場合を説明した。他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。また、いわゆるクラウドゲーミングの構成としてもよい。例えば、ゲーム装置2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種ゲーム処理が実行され、その実行結果が動画・音声としてゲーム装置2にストリーミング配信されるような構成としてもよい。
【0120】
以上、本実施形態および変形例について説明したが、これらの説明はあらゆる点において例示にすぎず、その範囲を限定しようとするものではない。また、本実施形態および変形例について、種々の改良や変形を行うことができることは言うまでもない。
【符号の説明】
【0121】
1 ゲームシステム
3、4 コントローラ
12 ディスプレイ
81 プロセッサ
85 DRAM
200、202、300、400 オブジェクト
C 接触点
G1、G2 重心