(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-14
(45)【発行日】2024-02-22
(54)【発明の名称】情報処理プログラム、情報処理システム、情報処理装置、および情報処理方法
(51)【国際特許分類】
A63F 13/358 20140101AFI20240215BHJP
A63F 13/211 20140101ALI20240215BHJP
A63F 13/58 20140101ALI20240215BHJP
A63F 13/812 20140101ALI20240215BHJP
【FI】
A63F13/358
A63F13/211
A63F13/58
A63F13/812 D
(21)【出願番号】P 2022049677
(22)【出願日】2022-03-25
【審査請求日】2023-01-16
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】伊庭 啓介
【審査官】西村 民男
(56)【参考文献】
【文献】特開2022-017984(JP,A)
【文献】特開2020-146441(JP,A)
【文献】特開2019-005534(JP,A)
【文献】特開2018-196578(JP,A)
【文献】特開2011-143104(JP,A)
【文献】特開2010-134800(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24,13/00-13/98
G06T 1/00,11/60-13/80,
17/05,19/00-19/20
H04L 67/131
(57)【特許請求の範囲】
【請求項1】
第1情報処理装置のコンピュータを、
第2情報処理装置と通信する通信手段、
仮想空間において、前記第1情報処理装置への操作に基づいて制御される自キャラクタオブジェクト、前記第2情報処理装置から受信したデータに基づいて制御される相手キャラクタオブジェクト、移動オブジェクトを制御する制御手段、
前記第2情報処理装置との通信における遅延時間を算出する遅延時間算出手段、
操作装置から取得した操作データが所定条件を満たす場合、当該操作データに基づいて、前記仮想空間において前記自キャラクタオブジェクトに前記移動オブジェクトに対する第1アクションを実行させるとともに、前記移動オブジェクトの移動を開始させる移動オブジェクト移動開始手段、
移動が開始された前記移動オブジェクトの移動速度を、第1の場合において、前記遅延時間に基づいて算出され、当該移動オブジェクトの移動が開始されてから経過した時間に応じて変化される第1補正値に基づいて減少させて、当該移動オブジェクトを移動させ、第2の場合において、前記遅延時間に基づいて算出され、当該移動オブジェクトの移動が開始されてから経過した時間に応じて変化されない第2補正値に基づいて減少させて、当該移動オブジェクトを移動させる、移動速度調整手段、
前記第2情報処理装置から受信したデータに基づいて、前記相手キャラクタオブジェクトに、前記制御手段によって移動する前記移動オブジェクトに対する第2アクションを実行させる第2アクション実行手段として機能させる、情報処理プログラム。
【請求項2】
前記移動速度調整手段は、前記遅延時間が長いほど前記移動オブジェクトの移動速度の減少量が大きくなるように、当該移動オブジェクトを減速させる、請求項1に記載の情報処理プログラム。
【請求項3】
前記移動速度調整手段は、前記第1の場合において、前記移動オブジェクトの移動が開始されてから経過した時間に応じて変化する反映率に基づいて前記第1補正値を変化させることで、当該移動オブジェクトを減速させる、請求項1又は2に記載の情報処理プログラム。
【請求項4】
前記第1補正値は、所定のタイミングまでは時間経過に応じて前記移動オブジェクトの移動速度がより大きく減少するように変化し、当該所定のタイミング以降は固定される、請求項1~3の何れかに記載の情報処理プログラム。
【請求項5】
第1情報処理装置のコンピュータを、移動が開始された前記移動オブジェクトが所定の位置に到達するまでにかかる到達時間を算出する到達時間算出手段として機能させ、
前記第1補正値は、前記到達時間に基づいて算出される前記所定のタイミングまでは時間経過に応じて変化し、当該所定のタイミング以降は固定される、請求項4に記載の情報処理プログラム。
【請求項6】
前記移動速度調整手段は、
前記第1の場合において、前記移動オブジェクトの第1移動速度であって、時間経過に応じて減少する当該第1移動速度を、さらに前記第1補正値に基づいて減速させ、
前記第2の場合において、前記移動オブジェクトの第2移動速度であって、時間経過に応じて減少する当該第2移動速度を、さらに前記第2補正値に基づいて減速させる、請求項1~5の何れかに記載の情報処理プログラム。
【請求項7】
前記移動速度調整手段は、前記第1の場合における前記第1移動速度を、前記第2の場合における前記第2移動速度よりも遅く設定した上で、当該第2移動速度を前記第2補正値に基づいて減速させる、請求項6に記載の情報処理プログラム。
【請求項8】
前記移動速度調整手段は、前記第2の場合における前記第2移動速度を、前記第1の場合における前記第1移動速度よりも遅く設定した上で、当該第2移動速度を前記第2補正値に基づいて減速させる、請求項6に記載の情報処理プログラム。
【請求項9】
前記操作装置は慣性センサを備え、
前記操作データは、前記慣性センサの出力に基づいたデータを含む、請求項1~8の何れかに記載の情報処理プログラム。
【請求項10】
前記コンピュータを、バドミントンゲームを実行するゲーム実行手段としてさらに機能させる、請求項1~9の何れかに記載の情報処理プログラム。
【請求項11】
前記移動オブジェクト移動開始手段は、前記操作データに基づいて決定される移動経路に向けて前記移動オブジェクトの移動を開始させ、
前記移動速度調整手段は、前記移動オブジェクトの移動速度を減少させつつ、前記移動経路に沿って当該移動オブジェクトを移動させる、請求項1~10の何れかに記載の情報処理プログラム。
【請求項12】
プロセッサを備える第1情報処理装置の情報処理システムであって、
前記プロセッサは、
第2情報処理装置と通信し、
仮想空間において、前記第1情報処理装置への操作に基づいて制御される自キャラクタオブジェクト、前記第2情報処理装置から受信したデータに基づいて制御される相手キャラクタオブジェクト、移動オブジェクトを制御し、
前記第2情報処理装置との通信における遅延時間を算出し、
操作装置から取得した操作データが所定条件を満たす場合、当該操作データに基づいて、前記仮想空間において前記自キャラクタオブジェクトに前記移動オブジェクトに対する第1アクションを実行させるとともに、前記移動オブジェクトの移動を開始させ、
移動が開始された前記移動オブジェクトの移動速度を、第1の場合において、前記遅延時間に基づいて算出され、当該移動オブジェクトの移動が開始されてから経過した時間に応じて変化される第1補正値に基づいて減少させて、当該移動オブジェクトを移動させ、第2の場合において、前記遅延時間に基づいて算出され、当該移動オブジェクトの移動が開始されてから経過した時間に応じて変化されない第2補正値に基づいて減少させて、当該移動オブジェクトを移動させ、
前記第2情報処理装置から受信したデータに基づいて、前記相手キャラクタオブジェクトに
、移動する前記移動オブジェクトに対する第2アクションを実行させる、情報処理システム。
【請求項13】
プロセッサを備える第1情報処理装置であって、
前記プロセッサは、
第2情報処理装置と通信し、
仮想空間において、前記第1情報処理装置への操作に基づいて制御される自キャラクタオブジェクト、前記第2情報処理装置から受信したデータに基づいて制御される相手キャラクタオブジェクト、移動オブジェクトを制御し、
前記第2情報処理装置との通信における遅延時間を算出し、
操作装置から取得した操作データが所定条件を満たす場合、当該操作データに基づいて、前記仮想空間において前記自キャラクタオブジェクトに前記移動オブジェクトに対する第1アクションを実行させるとともに、前記移動オブジェクトの移動を開始させ、
移動が開始された前記移動オブジェクトの移動速度を、第1の場合において、前記遅延時間に基づいて算出され、当該移動オブジェクトの移動が開始されてから経過した時間に応じて変化される第1補正値に基づいて減少させて、当該移動オブジェクトを移動させ、第2の場合において、前記遅延時間に基づいて算出され、当該移動オブジェクトの移動が開始されてから経過した時間に応じて変化されない第2補正値に基づいて減少させて、当該移動オブジェクトを移動させ、
前記第2情報処理装置から受信したデータに基づいて、前記相手キャラクタオブジェクトに
、移動する前記移動オブジェクトに対する第2アクションを実行させる、第1情報処理装置。
【請求項14】
第1情報処理装置のコンピュータに、
第2情報処理装置と通信させ、
仮想空間において、前記第1情報処理装置への操作に基づいて制御される自キャラクタオブジェクト、前記第2情報処理装置から受信したデータに基づいて制御される相手キャラクタオブジェクト、移動オブジェクトを制御させ、
前記第2情報処理装置との通信における遅延時間を算出させ、
操作装置から取得した操作データが所定条件を満たす場合、当該操作データに基づいて、前記仮想空間において前記自キャラクタオブジェクトに前記移動オブジェクトに対する第1アクションを実行させるとともに、前記移動オブジェクトの移動を開始させ、
移動が開始された前記移動オブジェクトの移動速度を、第1の場合において、前記遅延時間に基づいて算出され、当該移動オブジェクトの移動が開始されてから経過した時間に応じて変化される第1補正値に基づいて減少させて、当該移動オブジェクトを移動させ、第2の場合において、前記遅延時間に基づいて算出され、当該移動オブジェクトの移動が開始されてから経過した時間に応じて変化されない第2補正値に基づいて減少させて、当該移動オブジェクトを移動させ、
前記第2情報処理装置から受信したデータに基づいて、前記相手キャラクタオブジェクトに
、移動する前記移動オブジェクトに対する第2アクションを実行させる、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、スポーツゲーム等の情報処理に関する。
【背景技術】
【0002】
従来から、自装置と相手装置とのゲーム状況を同期しつつ、オブジェクトの位置を移動させるゲーム処理が知られている(例えば特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記したゲーム処理のようにゲーム状況の同期を行う場合に、自装置と相手装置との通信遅延時間に応じて自装置におけるオブジェクトの移動速度を下げる補正を行うことで、相手装置と同期する方法が考えられる。しかし、画一的に移動速度を下げて補正した場合、オブジェクトの移動に違和感が生じることがあった。
【0005】
それ故に、本発明の目的は、自装置におけるオブジェクトの移動速度を下げることで相手装置と同期する場合に、オブジェクトの移動に違和感が生じることを防止できる情報処理プログラム、情報処理システム、情報処理装置、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0007】
構成例の一例は、第1情報処理装置のコンピュータを、通信手段、制御手段、遅延時間算出手段、移動オブジェクト移動開始手段、移動速度調整手段、第2アクション実行手段として機能させる情報処理プログラムである。通信手段は、第2情報処理装置と通信する。制御手段は、仮想空間において、第1情報処理装置への操作に基づいて制御される自キャラクタオブジェクト、第2情報処理装置から受信したデータに基づいて制御される相手キャラクタオブジェクト、移動オブジェクトを制御する。遅延時間算出手段は、第2情報処理装置との通信における遅延時間を算出する。移動オブジェクト移動開始手段は、操作装置から取得した操作データが所定条件を満たす場合、当該操作データに基づいて、仮想空間において自キャラクタオブジェクトに移動オブジェクトに対する第1アクションを実行させるとともに、移動オブジェクトの移動を開始させる。移動速度調整手段は、移動が開始された移動オブジェクトの移動速度を、第1の場合において、遅延時間に基づいて算出され、当該移動オブジェクトの移動が開始されてから経過した時間に応じて変化される第1補正値に基づいて減少させて、当該移動オブジェクトを移動させ、第2の場合において、遅延時間に基づいて算出され、当該移動オブジェクトの移動が開始されてから経過した時間に応じて変化されない第2補正値に基づいて減少させて、当該移動オブジェクトを移動させる。第2アクション実行手段は、第2情報処理装置から受信したデータに基づいて、相手キャラクタオブジェクトに、制御手段によって移動する移動オブジェクトに対する第2アクションを実行させる。
【0008】
上記構成によれば、移動オブジェクトの移動速度を、移動オブジェクトの移動開始からの経過時間に応じて変化される第1補正値に基づいて減少調整させる場合と、当該経過時間に応じて変化されない第2補正値に基づいて減少調整させる場合とがあるので、移動オブジェクトの移動に違和感が生じることを防止することができる。
【0009】
他の構成例として、移動速度調整手段は、遅延時間が長いほど移動オブジェクトの移動速度の減少量が大きくなるように、当該移動オブジェクトを減速させてもよい。
【0010】
上記構成によれば、第2情報処理装置からの応答を待つために必要な時間を確保できる。
【0011】
他の構成例として、移動速度調整手段は、第1の場合において、移動オブジェクトの移動が開始されてから経過した時間に応じて変化する反映率に基づいて第1補正値を変化させることで、当該移動オブジェクトを減速させてもよい。
【0012】
上記構成によれば、反映率に基づいて移動オブジェクトを徐々に減速調整することができる。
【0013】
他の構成例として、第1補正値は、所定のタイミングまでは時間経過に応じて移動オブジェクトの移動速度がより大きく減少するように変化し、当該所定のタイミング以降は固定されてもよい。
【0014】
上記構成によれば、移動オブジェクトの本来の移動速度を、所定のタイミングまでに、所望の割合の移動速度まで低下させることができるため、第2情報処理装置からの応答を待つために必要な時間を早めに確保することができる。
【0015】
他の構成例として、第1情報処理装置のコンピュータを、移動が開始された移動オブジェクトが所定の位置に到達するまでにかかる到達時間を算出する到達時間算出手段として機能させ、第1補正値は、到達時間に基づいて算出される所定のタイミングまでは時間経過に応じて変化し、当該所定のタイミング以降は固定されてもよい。
【0016】
上記構成によれば、移動オブジェクトの本来の移動速度を、移動オブジェクトが所定の位置に到達するまでにかかる到達時間に基づいて算出される所定のタイミングまでに、所望の割合の移動速度まで低下させることができる。
【0017】
他の構成例として、移動速度調整手段は、第1の場合において、移動オブジェクトの第1移動速度であって、時間経過に応じて減少する当該第1移動速度を、さらに第1補正値に基づいて減速させ、第2の場合において、移動オブジェクトの第2移動速度であって、時間経過に応じて減少する当該第2移動速度を、さらに第2補正値に基づいて減速させてもよい。
【0018】
上記構成によれば、時間経過に応じて減少する第1移動速度および第2移動速度を、それぞれ、さらに減速する調整を行うことができる。
【0019】
他の構成例として、移動速度調整手段は、第1の場合における第1移動速度を、第2の場合における第2移動速度よりも遅く設定した上で、当該第2移動速度を第2補正値に基づいて減速させてもよい。
【0020】
上記構成によれば、第2の場合における第2移動速度は(相対的に)速いので、第2の場合において第2補正値に基づいて第2移動速度を一律に変更しても違和感なく速度調整ができる。
【0021】
他の構成例として、移動速度調整手段は、第2の場合における第2移動速度を、第1の場合における第1移動速度よりも遅く設定した上で、当該第2移動速度を第2補正値に基づいて減速させてもよい。
【0022】
上記構成によれば、第2の場合における第2移動速度は(相対的に)遅いので、第2の場合において第2補正値に基づいて第2移動速度を一律に変更しても違和感なく速度調整ができる。
【0023】
他の構成例として、操作装置は慣性センサを備え、操作データは、慣性センサの出力に基づいたデータを含んでもよい。
【0024】
上記構成によれば、操作装置自体を動かすことによって操作を行うことができる。
【0025】
他の構成例として、コンピュータを、バドミントンゲームを実行するゲーム実行手段としてさらに機能させてもよい。
【0026】
上記構成によれば、移動オブジェクトが移動開始してから急激に減速するバドミントンゲームにおいて、移動オブジェクトの移動に違和感が生じることを防止することができる。
【0027】
他の構成例として、移動オブジェクト移動開始手段は、操作データに基づいて決定される移動経路に向けて移動オブジェクトの移動を開始させ、移動速度調整手段は、移動オブジェクトの移動速度を減少させつつ、移動経路に沿って当該移動オブジェクトを移動させてもよい。
【発明の効果】
【0028】
本実施形態によれば、自装置におけるオブジェクトの移動速度を下げることで相手装置と同期する場合に、オブジェクトの移動に違和感が生じることを防止できる情報処理プログラム、情報処理システム、情報処理装置、および情報処理方法を提供することができる。
【図面の簡単な説明】
【0029】
【
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
【
図2】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
【
図6】本体装置2の内部構成の一例を示すブロック図
【
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
【
図9】自キャラクタがショットした場合の通信遅延等について説明するための図
【
図10】バドミントンゲーム画像の一例について説明するための図
【
図11】通信遅延時間(RTT)とシャトルの移動速度の補正率との関係について説明するための図
【
図12】時間経過と、補正率を反映する反映率との関係について説明するための図
【
図13】時間経過と、シャトルの移動速度の調整率との関係について説明するための図
【
図14】時間経過と、シャトルの移動速度の調整率との関係について説明するための図
【
図15】バドミントンゲーム画像の一例について説明するための図
【
図16】DRAM85に記憶される各種データの例を示す図
【発明を実施するための形態】
【0030】
以下、一実施形態について説明する。
【0031】
[情報処理システムのハードウェア構成]
【0032】
以下、本実施形態の一例に係る情報処理システム(ゲームシステム)について説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0033】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0034】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0035】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0036】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0037】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0038】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0039】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0040】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0041】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0042】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0043】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、
図4における上下方向(
図4に示すz軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0044】
左コントローラ3は、方向入力デバイスの一例である左アナログスティック(以下、左スティックと呼ぶ)32を備える。
図4に示すように、左スティック32は、ハウジング31の主面に設けられる。左スティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、左スティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、左スティック32を押下する入力が可能である。
【0045】
左コントローラ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プログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0046】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0047】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、
図5における上下方向(
図5に示すz軸方向)に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0048】
右コントローラ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を備える。
【0049】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0050】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0051】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central
Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0052】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0053】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0054】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0055】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、例えばWi-Fiの規格に準拠した方式により無線LANに接続して、外部装置(他の本体装置2)とインターネット通信等を行う。また、ネットワーク通信部82は、他の本体装置2と近距離無線通信(例えば、赤外線通信)を行うこともできる。
【0056】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0057】
プロセッサ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は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0058】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0059】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0060】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0061】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0062】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0063】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0064】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0065】
左コントローラ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(登録商標)の規格に従って行われる。
【0066】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0067】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、左スティック32を備える。各ボタン103および左スティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0068】
左コントローラ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へ出力される。
【0069】
通信制御部101は、各入力部(具体的には、各ボタン103、左スティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0070】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103および左スティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
【0071】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0072】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0073】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、右スティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0074】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0075】
[本実施形態におけるゲーム処理の概要]
次に、本実施形態に係るゲームシステム1で実行されるゲーム処理の動作概要を説明する。上記のように、上記ゲームシステム1では、本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能な構成となっている。本体装置2に左コントローラ3および右コントローラ4を装着した状態でゲームを遊ぶ場合は、ゲーム画像はディスプレイ12に出力される。また、左コントローラ3および右コントローラ4をそれぞれ外した状態の本体装置2単体がクレードルに装着された場合は、本体装置2が、クレードルを介してゲーム画像を据置型モニタ等に出力することもできる。本実施形態では、後者の態様でゲームプレイを行う場合を例に説明する。具体的には、左コントローラ3および右コントローラ4をそれぞれ外した状態の本体装置2単体がクレードルに装着され、本体装置2が、クレードルを介してゲーム画像等を据置型モニタ等に出力する態様である。また、右利きのプレイヤが、右手に右コントローラ4を把持している態様で、ゲームをプレイする場合を想定する。なお、左コントローラ3については本実施形態では使用しないものとするが、例えばプレイヤが左利きの場合は、右コントローラ4の代わりに左コントローラ3を用いる態様で、以下に説明するような処理が行われてもよい。
【0076】
[本実施形態で想定するゲームについて]
次に、本実施形態にかかるゲームシステム1で実行されるゲーム処理(情報処理の一例)の概要を説明する。まず、
図8に示すように、本実施形態で想定するゲームは、一例として、シングルスのバドミントンをモチーフにしたバドミントンゲームである。具体的には、本ゲームでは、仮想的な人型のオブジェクトである2つの選手キャラクタオブジェクト(「キャラクタ」という場合がある)を、仮想空間内に用意されたバドミントンコートの自分側コートと相手側コートにそれぞれ1つ配置して、バドミントンゲームが行われる。
【0077】
また、本ゲームは、インターネット等のネットワークを介して又は近距離無線通信等によって2人のユーザでプレイすることが可能である。本実施形態では、1人のユーザが1人のキャラクタを担当して操作する場合を想定する。なお、相手のユーザがいない場合には、相手のキャラクタはコンピュータにより自動で動作する。
【0078】
[本実施形態のゲーム処理の概要]
次に、本実施形態にかかるゲームシステム1で実行されるゲーム処理の概要を説明する。
図8に示すように、本ゲームでは、仮想空間内に配置された地面オブジェクトの一部がバドミントンコート201となっている。また、バドミントンコート201には、自分側コートにユーザが操作するキャラクタオブジェクト(「自キャラクタ」という場合がある)202が配置され、相手側コートに相手のキャラクタオブジェクト(「相手キャラクタ」という場合がある)203が配置される。そして、自キャラクタ202と相手キャラクタ203とで、シャトルオブジェクト(移動オブジェクト;「シャトル」という場合がある)200をバドミントンラケット(「ラケット」という場合がある)で打ち合ってバドミントンゲームが進行する。また、本ゲームでは、キャラクタ(自キャラクタ202、相手キャラクタ203)はシャトル200を打つべき位置(当該キャラクタがシャトルを打つことが可能な所定の位置関係となる位置)にコンピュータにより自動的に移動し、ユーザ(プレイヤ)は、把持した右コントローラ4を適切なタイミング(例えば、当該位置関係となっている期間内のタイミング)で振る操作を行うことによって当該キャラクタにラケットを振る動作を行わせて、シャトルを打つことができる。なお、右コントローラ4を振る操作ではなく、右コントローラ4の所定のボタンを押下する操作を行うことによってキャラクタにラケットを振る動作を行わせて、シャトルを打つことができるものとしてもよい。
【0079】
また、仮想空間に配置される仮想カメラは、自キャラクタ202の背後側の上方からバドミントンコート201を含む領域が撮影範囲に含まれるように見下ろして撮影して、
図8に示すようなゲーム画像を生成する。また、仮想カメラは、自キャラクタ202の左右の移動(
図8のX軸方向の移動)に合わせて左右に移動して、自キャラクタ202の背後側の上方から仮想空間を撮影する。
【0080】
図9は、ユーザが操作するゲームシステム1(「自装置」という場合がある)と相手ユーザが操作するゲームシステム1(「相手装置」という場合がある)との通信遅延に関して説明するための通信タイミングチャートである。以下、
図9を参照して、自装置においてユーザの操作により自キャラクタ202が相手側コートに向けてショットを打って、相手装置において相手ユーザの操作により相手キャラクタ203が自分側コートに向けて当該ショットを打ち返した場合について説明する。
【0081】
まず、
図9に示すように、T1において、自装置の仮想空間(ゲーム空間)で自キャラクタ202が相手側コートに向けてショットを打つと、自装置の仮想空間でシャトル200の移動が開始されると共に自キャラクタ202がショットを打ったことを示すショットデータが相手装置に送信される。ここで、インターネットを介して通信が行われている場合等には、自装置と相手装置との通信における往復遅延時間(Round-Trip Time:「RTT」という場合がある)が発生し、又、当該往復遅延時間が長い場合がある。このため、
図9に示すように、T1において、自装置から送信されたショットデータは、T2において相手装置に受信されて、相手装置の仮想空間でシャトル200の移動が開始される。その後、T3において、相手装置の仮想空間で相手ユーザの操作により相手キャラクタ203(相手装置にとっては自キャラクタ202)がシャトル200を打ち返すと、相手キャラクタ203がショットを打ったことを示すショットデータが自装置に送信される。その後、RTTの影響により、相手装置から送信されたショットデータは、T4において自装置に受信される。
【0082】
ここで、
図9に示すように、自装置の仮想空間をシャトル200が移動する時間(T1~T4の期間)は、相手装置の仮想空間をボール50が移動する時間(T2~T3の期間)よりも長くなる。このことから、自装置の仮想空間におけるシャトル200の移動速度と相手装置の仮想空間におけるシャトル200の移動速度とが同じである場合、自装置のゲーム画像において、不自然な表示が行われる場合がある。
図10は、このような場合に生じ得る自装置の不自然なゲーム画像の表示について説明するための図である。
【0083】
まず、
図10(1)に示すように、シャトル200の移動速度が相手装置の仮想空間のシャトル200の移動速度と同じであることから、自装置の仮想空間(ゲーム画像)において、相手キャラクタ203の位置を通り過ぎて相手キャラクタ203がショットを打ち返せなかった表示が行われる。その後、
図10のT3において相手キャラクタ203によりシャトル200が打ち返されて、自装置の仮想空間において、
図10(2)に示すように、ショットを打ち返せなかったはずの相手キャラクタ203がショットを打ち返すということが起きてしまう場合がある。
【0084】
そこで、本ゲーム処理では、自装置の仮想空間において、RTTの長さに応じて、自キャラクタ202が打ったシャトル200を本来の移動速度(「基準移動速度」という場合がある)から減速させるための補正率を決定する。そして、特定のショット(後述するミスショットおよびスーパースマッシュ)については、シャトル200が打たれてからコートに着地するまでの全期間において、基準移動速度に補正率を一律に反映して、シャトル200の移動速度を基準移動速度に対して一律の割合で減速する調整を行う。一方、上記特定のショット以外のショット(後述するクリア、ロブ、スマッシュ等)については、シャトル200が打たれてから所定の時間が経過するタイミング(所定のタイミング)までに、基準移動速度に補正率を徐々に反映させるための反映率を用いて補正率を基準移動速度に反映させ、最終的に補正率を完全に反映させる。その後、シャトル200が着地(所定の位置に到着)するまでの期間において、完全に反映させた補正率を固定して、シャトル200の移動速度を基準移動速度に対して一律の割合で減速する調整を行う。以下、
図11~
図14を参照して具体的に説明する。
【0085】
図11は、RTTと補正率との関係を示すグラフの一例である。補正率は、自装置の仮想空間(ゲーム画像)において、自キャラクタ202が打ったシャトル200を、本来の移動速度(基準移動速度)に対してどの程度遅く移動させるかを示すパラメータである。なお、本来の移動速度(基準移動速度)は、通信遅延がない場合(つまり、近距離無線通信等を用いてオフラインでバドミントンゲームを行う場合)のシャトル200の移動速度とも言える。
図11に示すように、補正率は、RTTの増加に応じて線形的(直線的)に増加する。例えば、RTTが400ミリ秒の場合、補正率は50%である。なお、補正率は、RTTの増加に応じて曲線的に増加してもよい。例えば、補正率は、最初は傾きが小さく、RTTの増加に応じて徐々に傾きが増加していく曲線で増加してもよいし、最初は傾きが大きく、RTTの増加に応じて徐々に傾きが減少していく曲線で増加してもよい。
【0086】
図12は、時間経過と反映率との関係を示すグラフの一例である。反映率は、自装置の仮想空間(ゲーム画像)において、シャトル200の本来の移動速度(基準移動速度)に対して、補正率を、時間経過に応じて徐々に反映させるためのパラメータである。
図12に示すように、反映率は、T1(反映完了時間)までに100%になるように、時間経過に応じて線形的(直線的)に増加する。ここで、T1(反映完了時間)は、自装置の仮想空間において、シャトル200が打たれてから着地するまでの時間(「飛行時間」又は「到達時間」という場合がある)の所定割合の時間である。T1(反映完了時間)は、例えば相手キャラクタ203がシャトル200を打ち返すことができる位置(例えば、ネット際)にシャトル200が到達するまでの時間であり、例えば飛行時間の40%の時間である。なお、反映率は、時間経過に応じて曲線的に増加してもよい。例えば、反映率は、最初は傾きが大きく、RTTの増加に応じて徐々に傾きが減少していく曲線で増加してもよいし、最初は傾きが小さく、RTTの増加に応じて徐々に傾きが増加していく曲線で増加してもよい。
【0087】
図13は、自装置の仮想空間(ゲーム画像)において、自キャラクタ202が打った、ミスショットおよびスーパースマッシュ以外のショット(つまり、クリア、ロブ、スマッシュ等)を、本来の移動速度(基準移動速度)に対して減速させる調整について説明するためのグラフの一例である。ここで、基準移動速度は、現実のバドミントンと同様に、シャトル200が打たれた直後は速く、その後大きく減速していく速度である。
【0088】
クリアは、オーバーハンドストロークで打つ(ラケットを振り下ろす)ショットであり、相手側コートの奥に向けて高く打ち上げるショットである。ロブ(ロビング)は、アンダーハンドストロークで打つ(ラケットを振り上げる)ショットであり、シャトルを高く打ち返すショットである。スマッシュは、オーバーハンドストロークで打つショットであり、高い打点で相手側コートに打ち下ろすように強く打って得点を狙うショットである。ミスショットは、ショットを打つタイミングが適切ではないが打てた場合(自キャラクタ202とシャトル200との間隔が或る程度遠い場合)において、遅い速度で山なりに移動するショットある。スーパースマッシュは、相手キャラクタ203が打ったミスショットを打ち返すスマッシュであり、スマッシュよりも更に速いショットである。ここで、ショットの移動速度の大小関係は、ミスショット<クリア≦ロブ<スマッシュ<スーパースマッシュある。
【0089】
図13に示すように、グラフの横軸は時間であり、縦軸は調整率である。調整率は、補正率(
図11参照)に、時間経過に応じて増加する反映率(
図12参照)を乗算したパラメータであり、上記した基準移動速度に対して速度を減少させる調整を行う度合いを示すパラメータである。なお、調整率を反映係数と呼んでもよい。
【0090】
図13のグラフにおいて、調整率0%は、基準移動速度に対して速度を減少させる調整を行わない場合の移動速度(つまり、基準移動速度)に対応する。また、
図13のグラフにおいて、実線Aは、自装置の仮想空間(ゲーム画像)において、自キャラクタ202が打ったシャトル200の移動速度であって、基準移動速度に対して減速させる調整を行った移動速度(「調整移動速度」という場合がある)に対応する。なお、調整率0%上の実線Bは、相手装置の仮想空間(ゲーム画像)において、相手キャラクタ203(つまり、自装置における自キャラクタ202)が打ったシャトル200の移動速度(つまり、基準移動速度)に対応する。
【0091】
図13のグラフのT1において、自キャラクタ202がショット(ミスショットおよびスーパースマッシュ以外のショット)を打つと、シャトル200の移動速度を、基準移動速度に対して減速させる調整が実行される。具体的には、自装置の仮想空間において、シャトル200が打たれて移動開始するT1から着地するT5までの期間(飛行期間、到達時間)にわたって、基準移動速度に調整率(補正率×反映率)を乗算した調整移動速度(実線A)でシャトル200を移動させる。
図13では、一例として、
図11に示した補正率が50%である場合を示している。また、
図13のT3は、反映率が100%になる時間(
図12のT1)に対応しており、補正率50%の反映を完了させる時間である。
【0092】
なお、
図13に示すように、相手装置の仮想空間(ゲーム画像)では、(
図9を用いて既に説明したように)T1からRTT/2だけ遅れたT2においてシャトル200が移動開始し、T5からRTT/2だけ早いT4においてシャトル200が着地することとなる(実線B参照)。
【0093】
以上のように、自装置の仮想空間(ゲーム画像)において、ミスショットおよびスーパースマッシュ以外のショットについて、シャトル200が移動開始してから所定のタイミング(T3)までの期間に調整率を徐々に上げることによって、移動速度を基準移動速度から徐々に低下させる。そして、所定のタイミング(T3)以降は、調整率を固定して、移動速度を基準移動速度から一律に低下させる。このことにより、
図10を用いて説明した不自然な表示を防止しつつ、ショットを打った直後に急激にシャトル200の移動速度が低下する違和感のある表示を行うことなく、又、ショットを打った際の爽快感を残すことができる。
【0094】
図14は、自装置の仮想空間(ゲーム画像)において、自キャラクタ202が打った、ミスショット又はスーパースマッシュを、本来の移動速度(基準移動速度)に対して減速させる調整について説明するためのグラフの一例である。
図14のグラフは、
図13のグラフに対して、実線Aが直線である点が異なる。具体的には、
図14のグラフにおいて、反映率が常に100%に固定されることによって、調整率(補正率×反映率)が固定されている。このことから、自キャラクタ202がミスショット又はスーパースマッシュを打つと、シャトル200の移動速度を、基準移動速度に対して常に一律に減速させる調整が実行される。なお、調整率を固定するにあたって、他の計算式や処理を用いても良い。
【0095】
以上のように、自装置の仮想空間(ゲーム画像)において、ミスショット又はスーパースマッシュについて、シャトル200の飛行期間全体に亘って調整率を固定して、移動速度を基準移動速度から一律に低下させる。ここで、スーパースマッシュは、スマッシュよりも基準移動速度が速く、最も速いショットであるので、
図14に示したように基準移動速度に対して常に一律に減速させる調整を行っても違和感のある表示にはならない。また、ミスショットは、最も遅いショットであるので、
図14に示したように基準移動速度に対して常に一律に減速させる調整を行っても違和感のある表示にはならない。このことにより、ミスショットおよびスーパースマッシュについては、基準移動速度に対して常に一律に減速させる調整を行って違和感のある表示を行うことなく、
図10を用いて説明した不自然な表示を防止することができる。
【0096】
以上のように、本実施形態では、ショットの種類に応じてシャトル200の移動速度の調整方法を異ならせることによって、違和感のある表示を行うことなく、
図10を用いて説明した不自然な表示を防止している。
【0097】
なお、
図13の実線Aで示す調整率(補正率×反映率)を「第1補正値」と呼んでもよいし、
図13の実線Aで示す調整率(補正率×反映率)を算出するために用いられる反映率を「第1補正値」と呼んでもよい。また、
図14の実線Aで示す調整率(補正率×反映率)を「第2補正値」と呼んでもよいし、
図14の実線Aで示す調整率(補正率×反映率)を算出するために用いられる反映率を「第2補正値」と呼んでもよい。
【0098】
図15は、
図10を用いて説明した不自然な表示を上記した処理を行うことによって防止した場合の自装置のゲーム画像の表示について説明するための図である。
図15に示すように、自装置の仮想空間(ゲーム画像)において、シャトル200を減速調整することによって相手キャラクタ203の位置をシャトル200が通り過ぎる前に(
図15(1)参照)相手キャラクタ203がショットを打ち返すこととなり(
図15(2)参照)、
図10を用いて説明した不自然なゲーム画像の表示を防止することができる。
【0099】
[本実施形態の情報処理の詳細]
次に、
図13~
図16を参照して、本実施形態の情報処理について詳細に説明する。
【0100】
[使用データについて]
本ゲーム処理において用いられる各種データに関して説明する。
図16、ゲームシステム1のDRAM85に記憶されるデータの一例を示している。
図16示すように、DRAM85には、少なくともプログラム記憶領域301とデータ記憶領域302が設けられる。プログラム記憶領域301には、ゲームプログラム401が格納される。データ記憶領域302には、試合制御用データ402、画像データ408、仮想カメラ制御用データ409、操作データ410、送信用データ411よび受信データ412等が格納される。試合制御用データ402には、選手キャラクタデータ403、シャトルデータ404、シャトル速度調整用データ405等が含まれる。
【0101】
ゲームプログラム401は、本ゲーム処理を実行するためのゲームプログラムである。
【0102】
選手キャラクタデータ403は、選手キャラクタに関するデータである。選手キャラクタデータ403には、自キャラクタ202および相手キャラクタ203の現在の位置や姿勢、現在の動作状態等、試合中の選手キャラクタの動作を制御するための各種のデータが含まれる。
【0103】
シャトルデータ404は、シャトル200に関するデータである。シャトルデータ404には、シャトル200の位置、移動方向、移動経路、本来の移動速度(基準移動速度)等のシャトル200の動作を制御するための各種データが含まれる。また、シャトルデータ404には、ミスショットであるか否かを示す情報が含まれている。
【0104】
シャトル速度調整用データ405は、
図11~
図14等を用いて説明したシャトル200の移動速度調整(自装置の仮想空間におけるシャトル200の移動速度調整)を行うためのデータである。具体的には、補正率および反映率を決定するためのデータ等である(
図11、
図12参照)。
【0105】
画像データ408は、選手キャラクタ、シャトル、バドミントンコート等の画像データである。
【0106】
仮想カメラ制御用データ409は、仮想空間に配置される仮想カメラの動きを制御するためのデータである。具体的には、仮想カメラの位置・姿勢、画角、撮像方向等を指定するデータである。
【0107】
操作データ410は、左コントローラ3および右コントローラ4に対して行われた操作の内容を示すデータである。例えば、左コントローラ3および右コントローラ4の動きや姿勢変化、各種ボタンに対する押下状態等に対する入力状態を示すデータが含まれる。当該操作データの内容は、左コントローラ3および右コントローラ4からの信号に基づき、所定の周期で更新される。
【0108】
送信用データ411は、他のゲームシステム1に送信するためのデータであり、少なくとも、送信元を特定するための情報と、操作データ410の内容を含むデータである。
【0109】
受信データ412は、他のゲームシステム1から受信した送信用データを、当該他のゲームシステム1毎に(つまり、送信元が)識別可能なように記憶したデータである。
【0110】
その他、DRAM85には、ゲーム処理で用いられる各種のデータが必要に応じて記憶される。
【0111】
[ゲーム処理の詳細について]
次に、フローチャートを参照して、本実施形態に係るゲーム処理の詳細を説明する。
図17および
図18は、本実施形態に係るゲーム処理の詳細を示すフローチャートの一例である。
【0112】
まず、本ゲーム処理が開始されると、
図17のステップS100において、プロセッサ81は、試合開始処理を行う。例えば、プロセッサ81は、試合開始を示す演出を表示部(据置型モニタ等)に表示する。その後、処理はステップS200に移る。
【0113】
ステップS200において、プロセッサ81は、試合制御処理を行う。
図18は、試合制御処理を示すフローチャートの一例である。以下、
図18を参照して、試合制御処理について説明する。なお、以下では、
図18を参照して本ゲーム処理における典型的な処理について説明するが、試合制御処理等の実行中には、毎フレーム(つまり、所定時間間隔で)、操作データの取得、仮想空間の各オブジェクトの制御、および画像の表示等が行われる。
【0114】
図18のステップS201において、プロセッサ81は、オブジェクト動作処理を行う。例えば、プロセッサ81は、操作データ410に基づいて、自キャラクタ202がショットを打つ動作を行い、当該ショットに応じてシャトル200を移動させる制御を行う。また例えば、プロセッサ81は、相手キャラクタ203が打ったショットを打ち返すべき位置に、自動的に自キャラクタ202を移動させる制御(オート移動制御)を行う。また例えば、プロセッサ81は、相手装置との間で、所定時間間隔(例えば、10ミリ秒間隔)で選手キャラクタ(自キャラクタ202又は相手キャラクタ203)の位置、姿勢および動作(例えば、ショットを打つアクション)等を示すデータを送受信して、自装置の仮想空間と相手装置の仮想空間との間で、選手キャラクタの位置、姿勢およびアクション等について同期する。このように、プロセッサ81は、自装置の仮想空間において、自キャラクタ202、相手キャラクタ203およびシャトル200等を動作させる処理を行う。その後、処理はステップS202に移る。
【0115】
ステップS202において、プロセッサ81は、操作データ410等に基づいて、自キャラクタ202がショットしたか否かを判定する。具体的には、プロセッサ81は、ショット成功タイミング又はミスショットタイミングでコントローラが振り操作をされたか否かを判定する。ショット成功タイミングは、ショットを正常に打つことに成功する所定のタイミング(例えば、自キャラクタ202とシャトル200との距離が1メートル未満であるタイミング)である。ショット成功タイミングでコントローラの振り操作が行われることで、ショット(ミスショット以外のショット)を打つことに成功する。ミスショットタイミングは、ショットを正常に打つことに失敗したがミスショットを打つことには成功する所定のタイミング(例えば、自キャラクタ202とシャトル200との距離が1メートル以上で1.3メートル以下であるタイミング)である。ミスショットタイミングでコントローラの振り操作が行われることで、ミスショットを打つこととなる。ステップS202での判定がYESの場合、処理はステップS203に移り、この判定がNOの場合、処理は
図17のステップS300に移る。
【0116】
ステップS203において、プロセッサ81は、RTTを計測する。その後、処理はステップS204に移る。なお、RTTの計測タイミングは、下記のステップS204の処理において補正率を決定する以前の任意のタイミングでよい。
【0117】
ステップS204において、プロセッサ81は、シャトル速度調整用データ405に基づいて、
図11を用いて説明したように、ステップS203で計測したRTTに応じて補正率を決定する。その後、処理はステップS205に移る。
【0118】
ステップS205において、プロセッサ81は、操作データ410およびシャトルデータ404等に基づいて、ステップS202で判定したショットの種類を決定する。具体的には、プロセッサ81は、コントローラを振り上げるアンダーハンドストロークで打つ操作が行われた場合には、ロブに決定する。また、プロセッサ81は、コントローラを振り降ろすオーバーハンドストロークで打つ操作であって、コントローラが振られた際のシャトル位置が所定の高さ未満である場合には、クリアに決定する。また、プロセッサ81は、コントローラを振り降ろすオーバーハンドストロークで打つ操作であって、コントローラが振られた際のシャトル位置が上記した所定の高さ以上である場合には、スマッシュに決定する。また、プロセッサ81は、上記したスマッシュを打つ操作が行われた場合であって、打ち返す対象のショットがミスショットである場合には、スーパースマッシュに決定する。また、プロセッサ81は、オーバーハンドストローク又はアンダーハンドストロークで打つ操作が行われた場合であって、ミスショットタイミングで操作が行われた場合には、ミスショットに決定する。その後、処理はステップS206に移る。
【0119】
ステップS206において、プロセッサ81は、ステップS205で決定したショットの種類が、ミスショット又はスーパースマッシュであるか否かを判定する。ステップS206での判定がYESの場合、処理はステップS213に移り、この判定がNOの場合、処理はステップS207に移る。
【0120】
ステップS207において、プロセッサ81は、シャトルデータ404等に基づいて、ステップS205で決定したショットが打たれてから着地するまでの時間(飛行時間、到達時間)を算出する。具体的には、プロセッサ81は、ステップS205で決定したショットの種類に応じたシャトル200の移動経路およびステップS203で計測したRTT(
図13参照)等に基づいて、ショットが打たれてから着地するまでの時間を算出する。その後、処理はステップS208に移る。
【0121】
ステップS208において、プロセッサ81は、ステップS207で算出した飛行時間に基づいて、基準移動速度に対して補正率を100%反映させるまでの時間(反映完了時間;
図12および
図13参照)を決定して、反映率の変化態様(
図12参照)を決定する。具体的には、プロセッサ81は、上記した飛行時間の所定割合の時間(例えば、40%の時間)を反映完了時間として決定して、反映率の変化態様を決定する。する。その後、処理はステップS209に移る。
【0122】
ステップS209において、プロセッサ81は、自装置の仮想空間(ゲーム画像)において、自キャラクタ202にシャトル200を打つアクション(ミスショットおよびスーパーショット以外のショットを打つアクション)を実行させ、移動経路に向けてシャトル200の移動を開始する。その後、処理はステップS210に移る。
【0123】
ステップS210において、プロセッサ81は、反映率を用いて補正率を徐々に反映しながらシャトルを移動する。具体的には、プロセッサ81は、
図11~
図13を用いて説明したように、ステップS208で決定した反映率の変化態様(
図12参照)を用いて、ステップS204で決定した補正率を基準移動速度に徐々に反映しながら、自装置の仮想空間においてシャトル200を移動経路に沿って移動させる(
図13のT1~T3の期間を参照)。その後、処理はステップS211に移る。
【0124】
ステップS211において、プロセッサ81は、ステップS210において反映する反映率が100%になったか否かを判定する、言い換えると、
図12のT1および
図13のT3で示す反映完了時間が経過したか否かを判定する。ステップS211での判定がYESの場合、処理はステップS212に移り、この判定がNOの場合、処理はステップS210に戻る。
【0125】
一方、ステップS213において、プロセッサ81は、自装置の仮想空間において、自キャラクタ202にシャトル200を打つアクション(ミスショットおよびスーパーショットを打つアクション)を実行させ、移動経路に向けてシャトル200の移動を開始する。その後、処理はステップS212に移る。
【0126】
ステップS212において、プロセッサ81は、自装置の仮想空間において、反映率100%を維持した速度で、シャトル200を移動経路に沿って移動させる(
図13のT3~T5の期間、および、
図14のT1~T5の期間を参照)。その後、処理は
図17のステップS300に移る。
【0127】
図17のステップS300において、プロセッサ81は、試合が終了する得点を自キャラクタ202又は相手キャラクタ203が獲得する等の試合終了条件を満たしたか否かを判定する。この判定がYESの場合、処理はステップS400に移り、この判定がNOの場合、処理はステップS200に戻る。
【0128】
ステップS400において、プロセッサ81は、試合終了を示す演出を表示部に表示する等の試合終了処理を行う。その後、本ゲーム処理は終了する。
【0129】
以上に説明したように、本実施形態によれば(
図13参照)、自装置の仮想空間(ゲーム画像)において、ミスショットおよびスーパースマッシュ以外のショットについて、シャトル200が移動開始してから所定のタイミング(T3)までの期間に調整率を徐々に上げることによって、移動速度を基準移動速度から徐々に低下させる。そして、所定のタイミング(T3)以降は、調整率を固定して、移動速度を基準移動速度から一律に低下させる。このことにより、
図10を用いて説明した不自然な表示を防止しつつ、ショットを打った直後に急激にシャトル200の移動速度が低下する違和感のある表示を行うことなく、又、ショットを打った直後のシャトル200のスピード感(爽快感)を残すことができる。
【0130】
また、本実施形態によれば(
図14参照)、自装置の仮想空間(ゲーム画像)において、ミスショット又はスーパースマッシュについて、シャトル200の飛行期間全体に亘って調整率を固定して、移動速度を基準移動速度から一律に低下させる。ここで、スーパースマッシュは、スマッシュよりも基準移動速度が速く、最も速いショットであるので、
図14に示したように基準移動速度に対して常に一律に減速させる調整を行っても違和感のある表示にはならない。また、ミスショットは、最も遅いショットであるので、
図14に示したように基準移動速度に対して常に一律に減速させる調整を行っても違和感のある表示にはならない。このことにより、ミスショットおよびスーパースマッシュについては、基準移動速度に対して常に一律に減速させる調整を行って違和感のある表示を行うことなく、
図10を用いて説明した不自然な表示を防止することができる。
【0131】
このように、本実施形態によれば、ショットの種類に応じてシャトル200の移動速度の調整方法を異ならせることによって、違和感のある表示を防止しつつ、
図10を用いて説明した不自然な表示を防止できる。
【0132】
[変形例]
なお、上記した本実施形態では、バドミントンゲームを例に挙げて説明した。しかし、これには限らず、例えば、テニスゲーム、卓球ゲーム、バレーボールゲーム等であってもよい。
【0133】
また、上記した本実施形態では、自装置の仮想空間(ゲーム画像)において、相手装置から受信したデータによって相手キャラクタ203が制御される例を挙げた。しかし、例えば、自装置の仮想空間において、通常は相手装置から受信したデータによって相手キャラクタ203が制御され、特定の場合には、受信したデータに基づいて相手キャラクタ203(例えば、相手キャラクタ203の動作や位置等)が調整されてもよい。
【0134】
また、上記した本実施形態では、自装置の仮想空間において、自キャラクタ202が打ったシャトルの移動方向や移動経路は、操作データによって決定される例を挙げた(
図18もS202、S209等参照)。しかし、シャトルの移動方向や移動経路は、自キャラクタ202のショットを打つアクションによって決定されてもよい。例えば、操作データに応じてショットを打つアクションの態様(種類等)が決定され、決定されたアクションの態様に応じてシャトルの移動方向や移動経路が決定されてもよい。
【0135】
また、上記した本実施形態では、自キャラクタ202がショットを打つタイミングで計測した最新のRTTを使用する例を挙げた(
図13のS202、S203等参照)。しかし、例えば、自キャラクタ202がショットを打つタイミングで計測した直近の所定数のRTTの平均値を使用してもよい。また、例えば、定期的に計測したRTTの平均値を使用してもよい。
【0136】
また、上記した本実施形態においては、ゲーム処理にかかる一連の処理が単一のゲーム装置(本体装置)2で実行される場合を説明した。他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。また、いわゆるクラウドゲーミングの構成としてもよい。例えば、ゲーム装置(本体装置)2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種ゲーム処理が実行され、その実行結果が動画・音声としてゲーム装置(本体装置)2にストリーミング配信されるような構成としてもよい。
【符号の説明】
【0137】
1 ゲームシステム
3、4 コントローラ
12 ディスプレイ
81 プロセッサ
82 ネットワーム通信部
83 コントローラ通信部
85 DRAM
200 シャトル
202、203 キャラクタ