IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 任天堂株式会社の特許一覧

特開2022-160997情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法
<>
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図1
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図2
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図3
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図4
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図5
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図6
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図7
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図8
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図9
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図10
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図11
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図12
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図13
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図14
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図15
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図16
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図17
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図18
  • 特開-情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022160997
(43)【公開日】2022-10-20
(54)【発明の名称】情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法
(51)【国際特許分類】
   A63F 13/428 20140101AFI20221013BHJP
   A63F 13/211 20140101ALI20221013BHJP
   A63F 13/55 20140101ALI20221013BHJP
   G06F 3/0484 20220101ALI20221013BHJP
【FI】
A63F13/428
A63F13/211
A63F13/55
G06F3/0484
【審査請求】未請求
【請求項の数】12
【出願形態】OL
【公開請求】
(21)【出願番号】P 2022018213
(22)【出願日】2022-02-08
(71)【出願人】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】特許業務法人 小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】辰田 英之
(72)【発明者】
【氏名】正岡 隆史
(72)【発明者】
【氏名】吉川 和宏
(72)【発明者】
【氏名】鈴木 亮祐
【テーマコード(参考)】
5E555
【Fターム(参考)】
5E555AA09
5E555AA12
5E555BA20
5E555BB20
5E555CA06
5E555CA12
5E555CA17
5E555CA44
5E555DB32
5E555DB53
5E555DB57
5E555DD07
5E555EA07
5E555FA00
(57)【要約】
【課題】プレイヤが意図していない操作がゲーム処理に反映されるのを防止できる情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法を提供すること。
【解決手段】ゲームの実行中において、慣性センサの出力に基づいたデータを少なくとも含む操作データに基づいて、ゲームの実行中の所定条件を満たしているタイミングにおいて第1方向に入力装置が動かされたと判定された場合、第1の種類の処理を実行する。また、操作データに基づいて、所定条件を満たしているタイミングにおいて第2方向に入力装置が動かされたと判定された場合であって、更に所定の保留期間中において第1方向に入力装置が動かされたと判定された場合は、第1の種類の処理を実行する。当該所定の保留期間中において第1方向に入力装置が動かされていないと判定された場合は、当該所定の保留期間が経過した後に、第2の種類の処理を実行する。
【選択図】図19
【特許請求の範囲】
【請求項1】
慣性センサを備える入力装置と情報処理装置とを含む情報処理システムであって、
前記情報処理装置は、
ゲームを実行し、
前記慣性センサの出力に基づいたデータを少なくとも含む操作データを取得し、
前記操作データに基づいて、前記ゲームの実行中の所定条件を満たしているタイミングにおいて前記入力装置が第1方向に動かされたと判定された場合、前記ゲームにおける第1の種類の処理を実行し、
前記操作データに基づいて、前記所定条件を満たしているタイミングにおいて前記入力装置が第2方向に動かされたと判定された場合であって、
更に所定の保留期間中において前記入力装置が前記第1方向に動かされたと判定された場合は、前記第1の種類の処理を実行し、
更に前記所定の保留期間中において前記入力装置が前記第1方向に動かされなかったと判定された場合は、当該所定の保留期間が経過した後に、前記ゲームにおける第2の種類の処理を実行する、情報処理システム。
【請求項2】
前記情報処理装置は、更に、
前記所定の保留期間中において、前記入力装置が前記第1方向に動かされたと判定された場合、当該所定の保留期間が経過する前に、前記第1の種類の処理を実行する、請求項1に記載の情報処理システム。
【請求項3】
前記ゲームにおける前記第1の種類の処理は、当該ゲームにおける前記第2の種類の処理よりも、当該ゲームをプレイするプレイヤにとって有利となるように前記ゲームを進行させる処理である、請求項1または2のいずれかに記載の情報処理システム。
【請求項4】
前記情報処理装置は、更に、
前記ゲームにおいて所定のゲームイベントに関する処理を実行し、
前記所定のゲームイベントの内容に基づいて、前記入力装置が前記第1方向に動かされたと判定される第1判定条件、および、前記入力装置が前記第2方向に動かされたと判定される第2判定条件を設定する、請求項1~3のいずれかに記載の情報処理システム。
【請求項5】
前記情報処理装置は、更に、
前記ゲームにおいて、前記仮想空間において移動オブジェクトを移動させる処理を実行し、
前記仮想空間に配置されるプレイヤオブジェクトの位置と、前記移動オブジェクトの位置とに基づいて、前記第1判定条件と前記第2判定条件とを設定する、請求項4に記載の情報処理システム。
【請求項6】
前記情報処理装置は、更に、
前記ゲームにおいて、前記移動オブジェクトの移動方向に基づいて算出されるプレイヤ移動先位置に向けて、前記プレイヤオブジェクトを移動させる、請求項5に記載の情報処理システム。
【請求項7】
前記情報処理装置は、更に、
前記ゲームにおいて、前記移動オブジェクトの移動方向に基づいて算出されるプレイヤ移動先位置に基づいて、前記第1判定条件と前記第2判定条件とを設定する、請求項6に記載の情報処理システム。
【請求項8】
前記入力装置が前記第1方向に動かされたと判定された場合、前記移動オブジェクトに対する第1アクションを前記プレイヤオブジェクトに実行させる処理を、前記第1の種類の処理として実行し、
前記入力装置が前記第2方向に動かされたと判定された場合、前記第1アクションとは異なる第2アクションを前記プレイヤオブジェクトに実行させる処理を、前記第2の種類の処理として実行する、請求項5に記載の情報処理システム。
【請求項9】
前記ゲームにおける第1の種類の処理は、取得した前記操作データに基づいて算出される、少なくとも前記所定条件を満たしているタイミングを含む判定期間における前記入力装置の姿勢に基づいて実行される、請求項1~8のいずれかに記載の情報処理システム。
【請求項10】
慣性センサを備える入力装置と接続可能な情報処理装置のコンピュータに実行させる情報処理プログラムであって、
前記コンピュータに、
ゲームを実行させ、
前記慣性センサの出力に基づいたデータを少なくとも含む操作データを前記入力装置から取得させ、
前記操作データに基づいて、前記ゲームの実行中の所定条件を満たしているタイミングにおいて前記入力装置が第1方向に動かされたと判定された場合、前記ゲームにおける第1の種類の処理を実行させ、
前記操作データに基づいて、前記所定条件を満たしているタイミングにおいて前記入力装置が第2方向に動かされたと判定された場合であって、
更に所定の保留期間中において前記入力装置が前記第1方向に動かされたと判定された場合は、前記第1の種類の処理を実行させ、
更に前記所定の保留期間中において前記入力装置が前記第1方向に動かされなかったと判定された場合は、当該所定の保留期間が経過した後に、前記ゲームにおける第2の種類の処理を実行させる、情報処理プログラム。
【請求項11】
慣性センサを備える入力装置とコンピュータとを備える情報処理装置であって、
前記コンピュータは、
ゲームを実行し、
前記慣性センサの出力に基づいたデータを少なくとも含む操作データを取得し、
前記操作データに基づいて、前記ゲームの実行中の所定条件を満たしているタイミングにおいて前記入力装置が第1方向に動かされたと判定された場合、前記ゲームにおける第1の種類の処理を実行し、
前記操作データに基づいて、前記所定条件を満たしているタイミングにおいて前記入力装置が第2方向に動かされたと判定された場合であって、
更に所定の保留期間中において前記入力装置が前記第1方向に動かされたと判定された場合は、前記第1の種類の処理を実行し、
更に前記所定の保留期間中において前記入力装置が前記第1方向に動かされなかったと判定された場合は、当該所定の保留期間が経過した後に、前記ゲームにおける第2の種類の処理を実行する、情報処理装置。
【請求項12】
慣性センサを備える入力装置と接続可能な情報処理装置のコンピュータに実行させる情報処理方法であって、
前記コンピュータに、
ゲームを実行させ、
前記慣性センサの出力に基づいたデータを少なくとも含む操作データを前記入力装置から取得させ、
前記操作データに基づいて、前記ゲームの実行中の所定条件を満たしているタイミングにおいて前記入力装置が第1方向に動かされたと判定された場合、前記ゲームにおける第1の種類の処理を実行させ、
前記操作データに基づいて、前記所定条件を満たしているタイミングにおいて前記入力装置が第2方向に動かされたと判定された場合であって、
更に所定の保留期間中において前記入力装置が前記第1方向に動かされたと判定された場合は、前記第1の種類の処理を実行させ、
更に前記所定の保留期間中において前記入力装置が前記第1方向に動かされなかったと判定された場合は、当該所定の保留期間が経過した後に、前記ゲームにおける第2の種類の処理を実行させる、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、慣性センサを備える入力装置を利用するゲーム処理に関する。
【背景技術】
【0002】
従来から、慣性センサを用いた入力を行わせるゲームであって、正解方向が予め定められており、当該正解方向への入力があった場合にゲームを先に進めることが可能なゲーム処理が知られている(例えば特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2021-23667号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のゲームでは、正解方向への方向入力を判定しやすいように閾値を調整することで、プレイヤが意図しない操作がゲーム処理に反映されることを防止している。
【0005】
この点につき、ゲーム処理の内容によっては、プレイヤが意図しない操作がゲーム処理に反映されることを防止するために、より適切な手法を用いる余地があった。
【0006】
それ故に、本開示における目的は、プレイヤが意図していない操作がゲーム処理に反映されることを防止できる情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法を提供することである。
【課題を解決するための手段】
【0007】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0008】
構成例の一例は、操作装置と、プロセッサを備える情報処理装置とを備えるスポーツゲームシステムである。情報処理装置は、以下の処理を実行する。まず、ゲームを実行する。当該ゲームの実行中において、慣性センサの出力に基づいたデータを少なくとも含む操作データを取得する。操作データに基づいて、ゲームの実行中の所定条件を満たしているタイミングにおいて入力装置が第1方向に動かされたと判定された場合、ゲームにおける第1の種類の処理を実行する。また、操作データに基づいて、所定条件を満たしているタイミングにおいて入力装置が第2方向に動かされたと判定された場合であって、更に所定の保留期間中において入力装置が第1方向に動かされたと判定された場合は、第1の種類の処理を実行する。一方、所定の保留期間中において入力装置が第1方向に動かされなかったと判定された場合は、当該所定の保留期間が経過した後に、ゲームにおける第2の種類の処理を実行する。
【0009】
上記構成例によれば、第1方向ではなく第2方向に入力装置が動かされたと判定された場合、その後に保留期間を設けて、第1方向への動きについての再判定の機会をプレイヤに提供している。そして、保留期間中に、第1方向に入力装置が動かされた場合には、当該第1方向に対応した第1の種類の処理を実行する。これにより、第1方向へ動かす意図を有するプレイヤが入力装置を動かしたとき、その動きの過程において、プレイヤが意図していない方向である第2方向への入力装置の動きが検出されても、第1方向への動きについて再判定する機会が提供されることになる。その結果、第1方向への動きが検出でき、これをゲーム処理に反映させることができる。
【0010】
他の構成例として、情報処理装置は、更に、所定の保留期間中において、入力装置が第1方向に動かされたと判定された場合、当該所定の保留期間が経過する前に、第1の種類の処理を実行してもよい。
【0011】
上記構成例によれば、保留期間中に第1方向への入力が検出され次第、速やかに第1の種類の処理を実行できる。これにより、プレイヤに自身の操作に対するレスポンスの遅れを感じさせる可能性を軽減できる。
【0012】
他の構成例として、ゲームにおける第1の種類の処理は、当該ゲームにおける第2の種類の処理よりも、当該ゲームをプレイするプレイヤにとって有利となるようにゲームを進行させる処理であってもよい。
【0013】
上記構成例によれば、プレイヤにとって有利な処理が実行されやすい状態とすることができる。
【0014】
他の構成例として、情報処理装置は、更に、ゲームにおいて所定のゲームイベントに関する処理を実行し、当該所定のゲームイベントの内容に基づいて、入力装置が第1方向に動かされたと判定される第1判定条件、および、入力装置が第2方向に動かされたと判定される第2判定条件を設定してもよい。
【0015】
上記構成例によれば、ゲームイベント毎に第1方向と判定される方向と第2方向と判定される方向とを動的に変化させることができる。これにより、ゲーム展開に応じた方向設定ができ、ゲームの興趣性を向上できる。
【0016】
他の構成例として、ゲームにおいて、仮想空間において移動オブジェクトを移動させる処理を実行し、仮想空間に配置されるプレイヤオブジェクトの位置と、移動オブジェクトの位置とに基づいて、第1判定条件と第2判定条件とを設定してもよい。
【0017】
上記構成例によれば、プレイヤオブジェクトと移動オブジェクトとの位置関係に基づいて第1判定条件と第2判定条件を設定するため、両者の位置関係と各判定条件の内容との間でプレイヤに違和感を与えないような判定条件が設定できる。
【0018】
他の構成例として、情報処理装置は、更に、ゲームにおいて、移動オブジェクトの移動方向に基づいて算出されるプレイヤ移動先位置に向けて、プレイヤオブジェクトを移動させてもよい。
【0019】
上記構成例によれば、入力装置を動かす操作にプレイヤが集中しやすい状況を作り出すことができる。
【0020】
他の構成例として、情報処理装置は、更に、ゲームにおいて、移動オブジェクトの移動方向に基づいて算出されるプレイヤ移動先位置に基づいて、第1判定条件と第2判定条件とを設定してもよい。
【0021】
上記構成例によれば、第1判定条件と第2判定条件の設定に関して、移動オブジェクトとプレイヤオブジェクトの位置関係に照らして違和感のない条件を設定できる。
【0022】
他の構成例として、入力装置が第1方向に動かされたと判定された場合は、移動オブジェクトに対する第1アクションをプレイヤオブジェクトに実行させる処理を、第1の種類の処理として実行し、入力装置が第2方向に動かされたと判定された場合は、第1アクションとは異なる第2アクションをプレイヤオブジェクトに実行させる処理を、第2の種類の処理として実行してもよい。
【0023】
上記構成例によれば、第1方向と第2方向とでそれぞれで異なるアクションをプレイヤオブジェクトに行わせることができる。
【0024】
他の構成例として、ゲームにおける第1の種類の処理は、取得した操作データに基づいて算出される、少なくとも上記所定条件を満たしているタイミングを含む判定期間における入力装置の姿勢に基づいて実行されてもよい。
【0025】
上記構成例によれば、入力装置の姿勢に基づいて、第1の種類の処理内容を変化させることができ、ゲームの興趣性を向上できる。
【発明の効果】
【0026】
本実施形態によれば、プレイヤが意図しない操作を行った場合でも、修正できる機会をプレイヤに提供でき、ユーザビリティを向上させることができる。
【図面の簡単な説明】
【0027】
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
図2】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
図3】本体装置2の一例を示す六面図
図4】左コントローラ3の一例を示す六面図
図5】右コントローラ4の一例を示す六面図
図6】本体装置2の内部構成の一例を示すブロック図
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
図8】本実施形態に係るゲーム画面の一例
図9】プレイヤキャラクタ201のいる仮想空間を俯瞰した模式図
図10】プレイヤキャラクタ201のいる仮想空間を俯瞰した模式図
図11】コントローラの振り方について説明するための図
図12】コントローラの振り方について説明するための図
図13】コントローラの振り方について説明するための図
図14】DRAM85に記憶される各種データの一例を示すメモリマップ
図15】操作データ307の一例
図16】本実施形態に係るテニスゲーム処理の詳細を示すフローチャート
図17】相手キャラクタ制御処理の詳細を示すフローチャート
図18】プレイヤキャラ制御処理の詳細を示すフローチャート
図19】プレイヤキャラ制御処理の詳細を示すフローチャート
【発明を実施するための形態】
【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で実行されるゲーム処理の動作概要を説明する。上記のように、上記ゲームシステム1では、本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能な構成となっている。本体装置2に左コントローラ3および右コントローラ4を装着した状態でゲームを遊ぶ場合は、ゲーム画像はディスプレイ12に出力される。また、左コントローラ3および右コントローラ4をそれぞれ外した状態の本体装置2単体がクレードルに装着された場合は、本体装置2が、クレードルを介してゲーム画像を据置型モニタ等に出力することもできる。本実施形態では、後者の態様でゲームプレイを行う場合を例に説明する。具体的には、左コントローラ3および右コントローラ4をそれぞれ外した状態の本体装置2単体がクレードルに装着され、本体装置2が、クレードルを介してゲーム画像等を据置型モニタ等に出力する態様である。また、右利きのプレイヤが、右手に右コントローラ4を把持している態様で、ゲームをプレイする場合を想定する。なお、左コントローラ3については本実施形態では使用しないものとするが、例えばプレイヤが左利きの場合は、右コントローラ4の代わりに左コントローラ3を用いる態様で、以下に説明するような処理が行われてもよい。
【0073】
[想定するゲームについて]
本実施形態で想定するゲームは、仮想3次元空間内において対戦するテニスゲームである。また、本実施形態では、一例として、シングルスの試合で、対CPU戦を行う場合を例として説明する。もちろん、他のプレイヤが対戦相手を操作する、プレイヤ同士の対戦形式でもよい。また、プレイヤ同士の対戦の場合、1台のゲーム装置を用いて2人のプレイヤで対戦プレイしてもよいし、2台のゲーム装置をネットワーク経由で接続した通信対戦プレイであってもよい。また、シングルスではなくダブルスの試合であってもよい。
【0074】
図8に、本実施形態に係るテニスゲームのゲーム画像の一例を示す。図8で示すゲーム画像は、3次元仮想空間(仮想テニスコート)を仮想カメラで撮像した画像である。当該ゲーム画像(仮想テニスコート内)には、2体の選手キャラクタが表示されている。仮想テニスコートの手前側のコート(自側コート)には、プレイヤの操作対象であるプレイヤキャラクタオブジェクト(以下、プレイヤキャラクタと呼ぶ)201が配置されている。また、ネット越しの奥行き側のコート(相手側コート)には、対戦相手となる選手キャラクタ(以下、相手キャラクタ)202が配置されている。また、各選手キャラクタは、テニスラケットオブジェクト(以下、単にラケット)を右手に持っている。その他、ゲーム画像には、移動オブジェクトであるテニスボールオブジェクト(以下、単にボールと呼ぶ)203も表示されている。
【0075】
本実施形態に係るテニスゲームの基本的な仕様・操作方法について説明する。まず、本テニスゲームでは、プレイヤは、ラケットに見立てた右コントローラ4を振ることで、プレイヤキャラクタ201に、その振り方向に応じた方向へラケットを振らせることができる。以下では、プレイヤキャラクタ201がラケットを振る動作のことを、ラケットスイングモーションと呼ぶ。また、本テニスゲームでは、プレイヤキャラクタ201の移動はオートで制御される。つまり、ボール203の移動軌道(移動方向)に応じて、ボール203を打ち返せるような位置に向けてプレイヤキャラクタ201は自側コート内で自動的に移動する(以下、このような移動のことをオート移動と呼ぶ)。そのため、プレイヤは、移動操作については考慮せず、ボール203が来たタイミングに合わせて右コントローラ4を振る、という操作に集中すればよいゲームとなっている。例えば、プレイヤキャラクタ201が自側コート内の左側に位置する場合に、ボール203が自側コート内の右側に向けて移動する場合には、プレイヤキャラクタ201は、ボール203を打ち返せるような位置(例えば、ボール203の軌道の左側の任意の位置)を算出し、算出された位置に向けてオート移動を行うように制御される。オート移動先の位置を算出する際には、プレイヤキャラクタ201に対して設定される移動速度、ボール203の移動方向や移動速度、ボール203が移動を開始する時点におけるプレイヤキャラクタ201の位置などのパラメータが用いられてよい。なお、プレイヤキャラクタ201のオート移動先の位置を算出する際、ボール203の軌道の左右のどちら側をオート移動先と指定するかに関し、自側コートのX軸における中央部分に近い位置が優先的にオート移動先の位置となるように算出してよい。例えば、ボール203が移動を開始する時点におけるプレイヤキャラクタ201の位置が、自側コートの右端付近に位置する場合であって、ボール203がプレイヤキャラクタ201の現在位置の左側を通過する軌道で移動する場合には、ボール203の軌道の左側の任意の位置をオート移動先の位置として算出してもよい。これにより、なるべくプレイヤキャラクタ201がコート中央付近に位置するようにプレイヤキャラクタ201の位置を制御することができる。なお、ボール203の移動する軌道から見てコート中央側の位置に移動する時間がない場合には、代わりに、ボール203の移動する軌道から見てコート端側の位置をオート移動先の位置として算出してもよい。
【0076】
本実施形態では、左コントローラ3、または、右コントローラ4(以下、コントローラという)は、上述の方法で本体装置2に対し、慣性センサの出力を含む操作データを送信する。そして、操作データが振り操作に関する条件を満たす場合には、コントローラに対して振り操作が行われたものと判定する。振り操作に関する条件は適宜設定されてよいが、例えば本実施形態では、操作データが、前記慣性センサの所定軸に係る加速度の大きさが閾値を超えている場合に、コントローラに対する振り操作が行われたものと判定しても良い。そして、コントローラに対する振り操作が行われたものと判定された場合、本体装置2は、コントローラから取得した操作データに基づいて、コントローラが現実空間においてどの方向に対して振られたかどうかを判定する処理を行う。例えば、コントローラ(または慣性センサ)のZ軸方向を回転軸として、コントローラが現実空間において左を向くように回転されるような動きがあったことを操作データが示す場合には、「左方向」への振り操作があったものと判定される。同様に、コントローラが現実空間において右を向くように回転されるような動きがあったことを操作データが示す場合には、「右方向」への振り操作があったものと判定される。また、他の実施形態では、コントローラから取得した操作データに応じて「上方向」「下方向」等、異なる方向への振り操作があったことが判別可能とされても良い。なお、ここに記載するコントローラの振り方向の判定に係る処理は一例であり、他の態様であってもよい。
【0077】
ここで、本実施形態では、相手キャラクタ202の打ったボール203に対してコントローラを振る方向(以下、振り方向)に関して、ボール203とプレイヤキャラクタ201との位置関係に応じて「正解方向」が決められる。「正解方向」は、ボール203を打ち返すことが可能な振り方向である。本実施形態における正解方向は、「左方向」か「右方向」の2択となる場合を例として説明する。また、以下の説明では、正解方向ではない方向については、「不正解方向」と呼ぶ。そして、上記2つの振り方向のうち、いずれが正解方向となるかは、ボール203とプレイヤキャラクタ201との位置関係に応じて決まる。具体的には、自側コートに向けて飛んでくるボール203が、プレイヤキャラクタ201のオート移動先の位置から見て右側に向かって移動している場合は、左方向へとラケット(コントローラ)を振る方向(左向きのベクトルを含む振り方向)が正解方向となり、それ以外の方向(右向きのベクトルを含む振り方向)は不正解方向として扱われる。逆に、ボール203が、プレイヤキャラクタ201のオート移動先の位置から見て左側に向かって移動している場合は、右方向へとラケット(コントローラ)を振る方向(右向きのベクトルを含む振り方向)が正解方向となる。換言すれば、オート移動先の位置を中心としてx軸方向に沿って延びる直線があるとした場合に、ボール203がこの直線を通過したと仮定した場合の通過位置(ボール203の移動軌道との交点)が、当該オート移動先の位置から見て右側になるか左側になるかで、正解方向が決まる。
【0078】
図9および図10に、正解方向の一例を示す。図9は、上記3次元仮想空間を俯瞰し、ボール203とプレイヤキャラクタ201との位置関係を示す模式図である。図9では、ボール203はプレイヤキャラクタ201のオート移動先の位置の右側に向けて飛んできている。この場合、「正解方向」としてプレイヤが行う振り動作は、「左方向」とされる。これは、いわば、テニスにおけるフォアハンドでボールを打つような振り方となる。そして、コントローラに対する振り操作があったと判定される場合、先述のように、コントローラが現実空間においてどの方向に対して振られたかどうかを判定することで、「正解方向」への振り操作があったか否かを判定する。図9の場合においては、コントローラの振り方向の判定処理において、「左方向」への振り操作があったものと判定された場合、「正解方向」への振り操作があったものと判定される。一方で、「正解方向」としてプレイヤが行う振り動作が「左方向」とされる場合において、コントローラの振り方向の判定処理において、「右方向」への振り操作があったものと判定された場合、「正解方向」とは異なる「不正解方向」への振り操作があったものと判定される。
【0079】
逆に、図10に示すように、ボール203がプレイヤキャラクタ201のオート移動先の位置の左側に向けて飛んできている場合は、「右方向」が「正解方向」となる。この場合は、コントローラが「右方向」に対して振られたと判定された場合には、「正解方向」への振り操作があったものと判定される。この場合、プレイヤは、コントローラを左から右に振るような振り動作を行う必要がある。これは、テニスにおけるバックハンドでボールを打つような振り方となる。一方で、「右方向」が「正解方向」とされる場合において、コントローラの振り方向の判定処理において、「左方向」への振り操作があったものと判定された場合、「不正解方向」への振り操作があったものと判定される。
【0080】
そのため、実際のゲームプレイにおいては、プレイヤは、まず、ボール203がプレイヤキャラクタ201のオート移動先の位置の右側に来るのか左側に来るのかを見て、正解方向が右になるか左になるかを判断することが要求される。更に、プレイヤは、正解方向への振り操作(右向きの振り、または、左向きの振り)を、適切なタイミング(ラケットをボール203に当てることができるようなタイミング)で行うことが要求される。そして、プレイヤが正解方向にコントローラを振れば、プレイヤキャラクタ201は、当該正解方向に応じたラケットスイングモーションを行う。この際、適切なタイミングで振られていれば、その結果、ラケットとボール203とが衝突し、ボール203を打ち返すことができる。以下の説明では、ラケットとボール203とが衝突してボール203を打つことを「ショット」と呼ぶ。
【0081】
次に、本実施形態における処理の概要・原理について説明する。以下に説明する処理は、次のような問題点に鑑みたものである。まず、ボール203を打ち返そうとするプレイヤが、右コントローラ4を振るときのプレイヤの右腕の動きを想定する。例えば、上記図9で示したような、ボール203がプレイヤキャラクタ201のオート移動先の位置の右側に向けて飛んできている状況を想定する。そして、この場合において、打ち返しの操作を行う前のプレイヤの姿勢を俯瞰した場合、図11のような姿勢であるとする。図11では、右手に右コントローラ4を把持しているプレイヤの様子を示している。この状態から、右コントローラ4をラケットに見立てて打ち返そうとした場合、プレイヤの右腕の動きとしては、図12図13に示すような動きが想定される。すなわち、図12に示すように、プレイヤは、一旦、右コントローラ4を自身の後方に向けて振りかぶる動作(以下、予備動作)を行ってから、図13に示すように、自身の前方に向けて右コントローラ4を振る動作(以下、本振り動作)を行うことが想定される。この場合、当該打ち返しの一連の動作に係る振り方向に着目すると、図12のように、予備動作として一旦、右の成分を含む方向へ向かうような振り動作が発生した後、図13のように、本振り動作として左の成分を含む方向へ向かうような振り動作が発生しているといえる。つまり、本振り動作として、ボール203の移動方向とは逆方向成分を含むような振り動作を行う前に、ボール203の移動方向の順方向成分を含む振り動作が予備動作として行われることが考えられる。このような一連の振り動作が行われた場合、ゲーム処理において、図12のような予備動作における振り方向が、ラケットスイングモーションの基となる振り操作、すなわち、上記本振り動作として誤認識される可能性がある。つまり、プレイヤは単に予備動作をして右コントローラ4を振りかぶったつもりであるにもかかわらず、この時点で、プレイヤがラケットを振る操作として右コントローラ4を不正解方向に振ったものと判定されてしまい、その結果、ミスショットとして扱われてしまう虞があった。例えば、上記図9のような状況で、フォアハンドで打ち返すつもりのプレイヤが上記予備動作の動きを行ったタイミングで、プレイヤキャラクタ201が(プレイヤの意に反して)バックハンドでラケットをスイングするモーションを行ってしまう虞があった。
【0082】
上記のような点に鑑みて、本実施形態では、振り操作判定に関して、以下のような処理を行っている。まず、振り操作が検出された場合、ボール203の移動軌跡とプレイヤキャラクタ201の位置関係から、その振り方向が上記のような処理によって、正解方向か否かが判定される。その結果、正解方向ではない場合は、振り操作は検出されているものの、ラケットスイングモーションの実行は一旦保留される。その後、所定の期間(以下、保留期間)を設け、この期間の間に、改めて正解方向への振り操作が検出されれば、これをラケットスイングモーションの基とする振り操作として用いる。つまり、プレイヤに、保留期間として、正解方向への振り操作の再判定の機会を与えている。そして、保留期間中に正解方向への振り操作が検出されれば、プレイヤキャラクタ201に、正解方向へのラケットスイングモーション(第1のアクション)を行わせる。一方、この保留期間中にも正解方向への振り操作が検出されなければ、プレイヤキャラクタ201に不正解方向へのラケットスイングモーション(第2のアクション)を行わせる。これにより、プレイヤが上記のような予備動作に係る振り操作を行っても、これがすぐにプレイヤキャラクタ201のラケットスイングモーションに反映されないようにすることができる(誤検出防止)。そして、その後に本振り動作に係る振り操作が検出されれば、これをラケットスイングモーションに反映させることが可能となる。そのため、プレイヤが意図していない振り操作が誤検出されることを防ぎ、プレイヤの振り操作の意図をより正確に反映できるテニスゲームが提供できる。
【0083】
なお、この保留期間について、本実施形態では、1フレーム1/60秒(60fps)とした場合、4フレーム分としている。この保留期間が長すぎると、プレイヤが本振り動作を行ったタイミングと、プレイヤキャラクタ201がラケットスイングモーションを開始するときのタイムラグが大きくなりすぎ、プレイヤに違和感を与える虞もある。また、短すぎると、上記のような誤検出の可能性が高まる。両者のバランスを考慮すると、上記保留期間を4フレーム程度とすれば、プレイヤに違和感を与えずに誤検出を防ぐことが可能であると考えられる。なお、他の実施形態では、ゲーム内容やフレームレートに応じて、保留期間の長さは適宜調整してもよい。
【0084】
[本実施形態のテニスゲーム処理の詳細]
次に、図14図19を参照して、本実施形態におけるテニスゲーム処理についてより詳細に説明する。
【0085】
[使用データについて]
まず、本テニスゲーム処理にて用いられる各種データに関して説明する。図14は、本体装置2のDRAM85に記憶される各種データの一例を示すメモリマップである。本体装置2のDRAM85には、ゲームプログラム301、プレイヤキャラクタデータ302、相手キャラクタデータ303、ボール移動パラメータ304、保留期間フラグ305、振り判定用データ306、操作データ307等が記憶されている。
【0086】
ゲームプログラム301は、本実施形態におけるテニスゲーム処理を実行するためのプログラムである。
【0087】
プレイヤキャラクタデータ302は、上記プレイヤキャラクタ201に関するデータである。プレイヤキャラクタデータ302には、プレイヤキャラクタ201の3次元モデルのモデリングデータや、ラケットスイングモーションを再生するためのモーションデータ、上記オート移動を制御するための各種のデータ(例えば現在位置、オート移動先の位置等)が含まれている。なお、ラケットスイングモーションに関して、本実施形態では、複数の振り方向に応じたラケットスイングモーションがそれぞれ予め定義され、上記モーションデータとして記憶されているものとする。そして、ゲーム処理においては、振り方向に応じたモーションデータが適宜読み出され、そのモーションを再生する処理が行われる。
【0088】
相手キャラクタデータ303は、上記相手キャラクタ202に関するデータである。その内容は、上記プレイヤキャラクタデータ302と同様のものが記憶される。
【0089】
ボール移動パラメータ304は、ボール203の移動制御を行うためのデータである。ボール移動パラメータ304には、例えばボールの移動軌道や移動速度を示す各種のパラメータが含まれる。
【0090】
保留期間フラグ305は、ゲーム処理において、現在が保留期間中であるか否かを示すためのフラグである。保留期間中である場合は、保留期間フラグ305にオンが設定される。また、初期値としてオフが設定される。
【0091】
振り判定用データ306は、振り操作が行われたか否かを判定するためのデータであり、また、振り操作に係る内容を示すデータである。具体的には、振り判定用データ306は、上記各慣性センサから得られた加速度データや角速度データを所定の期間分(例えば数十フレーム分)溜め込むことが可能なバッファである。本実施形態では、当該振り判定用データ306を用いて、上記のような振り操作を検出したり、どのような動きの振り操作が行われたのかを判定したりする。
【0092】
操作データ307は、上記コントローラから得られるデータであり、ユーザの操作内容を示すデータである。図15に、操作データ307のデータ構成の一例を示す。操作データ307には、デジタルボタンデータ321と、右スティックデータ322と、左スティックデータ323と、右慣性センサデータ324と、左慣性センサデータ325とが少なくとも含まれている。デジタルボタンデータ321は、コントローラが有する各種ボタンの押下状態を示すデータである。右スティックデータ322は、上記右スティック52に対する操作内容を示すためのデータである。具体的には、x、yの2次元のデータが含まれる。左スティックデータ323は、上記左スティック32に対する操作内容を示すためのデータである。右慣性センサデータ324は、右コントローラ4の加速度センサ114や角速度センサ115の慣性センサの検出結果を示すデータである。具体的には、3軸の加速度データや3軸の角速度データが含まれる。左慣性センサデータ325は、左コントローラ3の加速度センサ104や角速度センサ105の慣性センサの検出結果を示すデータである。
【0093】
その他、ゲーム処理に必要な各種データも適宜生成され、DRAM85に格納される。
【0094】
[プロセッサ81が実行する処理の詳細]
次に、本実施形態におけるテニスゲーム処理の詳細を説明する。なお、ここでは、サーブが開始されてから、1ポイント(最小単位の得点)が得られるまでの1プレイ分の処理について説明し、その他のゲーム処理に関しては説明は割愛する(テニスゲーム全体としては、この1プレイ分の処理がゲームセットになるまで繰り返されるような処理となる)。また、以下に示すフローチャートは、処理過程の単なる一例にすぎない。そのため、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判定ステップで利用される閾値も、単なる一例であり、必要に応じて他の値を採用してもよい。
【0095】
[相手キャラクタの制御]
図16は、本実施形態に係るテニスゲーム処理(1プレイ分)の詳細を示すフローチャートである。プレイが開始されると、まず、ステップS1で、プロセッサ81は、相手キャラクタ制御処理を実行する。図17は、当該相手キャラクタ制御処理の詳細を示すフローチャートである。まず、ステップS21で、プロセッサ81は、相手キャラクタ202の動作制御を行う。本実施形態では、対CPU戦を例示するため、AI制御が行われるものとする。具体的には、相手キャラクタ202について、オート移動の制御、ラケットスイングモーションの実行制御等が行われる。
【0096】
次に、ステップS22で、プロセッサ81は、相手キャラクタ202によるショットが発生したか否かを判定する。当該判定の結果、相手側のショットが発生した場合は(ステップS22でYES)、ステップS23で、プロセッサ81は、そのショットの内容に基づき、ボール203の移動軌道や移動速度を算出し、ボール移動パラメータ304に設定する。なお、ここで算出されるボール203の移動軌道は、プレイヤ側のコートに向かってボール203が移動するような軌道になる。また、この移動軌道により、上記正解方向も導出されることになる。そのため、当該相手キャラクタ202のショットに伴うボール移動パラメータ304の算出は、上記正解方向および不正解方向が決定(設定)される処理であるとも言える。一方、上記判定の結果、ショットが発生していない場合は(ステップS22でNO)、上記ステップS23の処理はスキップされる。以上で、相手キャラクタ制御処理は終了する。
【0097】
[プレイヤキャラクタの制御]
図16に戻り、次に、ステップS2で、プロセッサ81は、プレイヤキャラ制御処理を実行する。この処理は、プレイヤキャラクタ201の動作を制御するための処理である。
【0098】
図18図19は、上記プレイヤキャラ制御処理の詳細を示すフローチャートである。まず、ステップS31で、プロセッサ81は、現在、正解方向または不正解方向のいずれかのラケットスイングモーションを再生中の状態であるか否かを判定する。当該判定の結果、ラケットスイングモーション中ではない場合は(ステップS31でNO)、次に、ステップS32で、プロセッサ81は、プレイヤキャラクタ201についてのオート移動制御を行う。具体的には、プロセッサ81は、ボール移動パラメータ304に基づいてボールの移動先を算出し、更に、ボール203を打ち返せるような位置を上記オート移動先の位置として算出する。そして、プロセッサ81は、当該オート移動先の位置に向けてプレイヤキャラクタ201を移動させる。
【0099】
次に、ステップS33で、プロセッサ81は、操作データ307を取得する。
【0100】
次に、ステップS34で、プロセッサ81は、保留期間フラグ305に基づき、現在保留期間中であるか否かを判定する。当該判定の結果、保留期間中ではない場合は(ステップS34でNO)、次に、ステップS35で、プロセッサ81は、振り判定用データ306に基づき、振り操作が行われたか否かを判定する。振り操作の検出手法はどのような手法でもよいが、例えば、上記操作データ307に含まれる加速度データが示す加速度の変化が第1の閾値以上になったときに、振り状態が開始されたと判定してもよい。更に、振り状態開始と判定された後に当該加速度データが示す加速度の大きさがピークに達した後、当該加速度の大きさがある程度減衰したときに、振り状態が終了と判定してもよい。そして、振り状態の終了をもって、振り操作が行われたと判定してもよい。また、この他、例えば、上記振り状態が開始されたと判定された時点で、振り操作が行われたと判定するようにしてもよい。
【0101】
上記判定の結果、振り操作が行われた場合は(ステップS35でYES)、ステップS36で、プロセッサ81は、正解方向への振り操作が行われたか否かを判定する。具体的には、プロセッサ81は、振り判定用データ306に基づいて、過去数フレーム分に係る右コントローラ4の姿勢変化等を判別し、これに基づいて振り方向を算出する。更に、プロセッサ81は、ボール203とプレイヤキャラクタ201との位置関係に基づき、上述のような正解方向を判定する。そして、プロセッサ81は、両者を比較して、正解方向へ向けての振り操作が行われたか否かを判定する。上記のように、本実施形態では、x軸成分に着目して正解方向への振りか否かを判定する。例えば、プロセッサ81は、3軸のベクトルとして振り方向を算出し、このうちx軸ベクトルが右向きか左向きかを見ることで、正解方向への振りか否かを判定する。
【0102】
上記判定の結果、正解方向への振り操作が行われた場合は(ステップS36でYES)、ステップS37で、プロセッサ81は、プレイヤキャラクタ201について、正解方向に応じたラケットスイングモーションを開始する。具体的には、プロセッサ81は、今回正解方向として扱われる振り方向に応じて予め定義されているモーションデータをプレイヤキャラクタデータ302から読み出す。そして、プロセッサ81は、当該モーションデータで定義されているモーションをプレイヤキャラクタ201に開始させる制御を行う。なお、当該ラケットスイングモーションについて、他の実施形態では、予め定義されているモーションデータを用いるのではなく、振り操作の内容に応じてモーションの内容を動的に決定するようにしてもよい。例えば、上記振り操作の内容(右コントローラ4の姿勢変化)に応じてプレイヤキャラクタ201に行わせるモーションを算出し、上記モーションテータとして一時的にDRAM85に記憶するようにしてもよい。また、更に他の実施形態で、例えば、上記のように振り状態が開始されたと判定された時点で振り操作が行われたと判定する場合は、振り状態と判定されている間の毎フレームにおける右コントローラ4の姿勢に応じて、リアルタイムでプレイヤキャラクタ201の姿勢(右腕やラケットの姿勢)を変化させるような制御を行ってもよい。
【0103】
一方、上記判定の結果、正解方向への振り操作ではない場合は(ステップS36でNO)、ステップS38で、プロセッサ81は、保留期間フラグ305にオンを設定する。つまり、保留期間を有効化する。その後、プレイヤキャラ制御処理は終了する。
【0104】
一方、上記ステップS35の判定の結果、振り操作が行われていない場合は(ステップS35でNO)、プレイヤキャラ制御処理は終了する。
【0105】
次に、上記ステップS34の判定の結果、現在が保留期間中であると判定された場合の処理について説明する(ステップS34でYES)。この場合は、まず、図19のステップS39で、プロセッサ81は、保留期間中に正解方向への振り操作が行われたか否かを判定する。振り方向の判定手法は、上記の手法と同様である。当該判定の結果、行われなかった場合は(ステップS39でNO)、ステップS40で、プロセッサ81は、保留期間が経過したか否かを判定する。その結果、まだ経過していない場合は(ステップS40でNO)、プロセッサ81は、プレイヤキャラ制御処理を終了する。一方、経過していた場合は(ステップS40でYES)、ステップS41で、プロセッサ81は、不正解方向へのラケットスイングモーションを開始する。次に、ステップS42で、プロセッサ81は、保留期間フラグ305にオフを設定する。つまり、保留期間を解除する。その後、プロセッサ81は、プレイヤキャラ制御処理を終了する。
【0106】
一方、上記ステップS39の判定の結果、保留期間中に正解方向への振り操作が行われた場合は(ステップS39でYES)、図18のステップS43で、プロセッサ81は、保留期間フラグにオフを設定する。つまり、この時点で保留期間が残っていても(経過していなくても)、保留期間を解除する処理が行われる。その後、上記ステップS37に処理が進められ、正解方向に応じたラケットスイングモーションが開始される。
【0107】
次に、上記ステップS31の判定の結果、正解方向または不正解方向へのラケットスイングモーション中と判定された場合の処理について説明する。この場合は、図19のステップS44で、プロセッサ81は、現在再生中のラケットスイングモーションの再生を継続する。つまり、ラケットを移動させる処理が実行される。
【0108】
次に、ステップS45で、プロセッサ81は、プレイヤキャラクタ201においてショットが発生したか否かを判定する。つまり、プレイヤキャラクタ201のラケットとボール203との衝突が発生したか否かを判定する。なお、当該ショットが発生するのは、適切なタイミングでラケットスイングモーションが行われた場合だけである。適切なタイミングとは、プレイヤキャラクタ201とボール203との位置関係が、ラケットが届くような位置にボール203が来ているような位置関係になっているタイミングである。そのため、適切ではないタイミングで正解方向に右コントローラ4が振られた場合は、正解方向へのラケットスイングモーション自体は行われるが、ラケットはボール203に衝突せずに空振りするという結果となる。また、不正解方向へのラケットスイングモーションが行われた場合、基本的には、ラケットとボール203が衝突することはないため、ショットは発生しない。つまり、不正解方向へのラケットスイングモーションの実行は、振るタイミングにかかわらず、ミスショット/空振りの処理であるともいえる。このことは、換言すれば、正解方向へのラケットスイングモーションは、ショットを発生させ得る処理であり(適切なタイミングで行われていればショットが発生する)、ショットが発生することが無い不正解方向へのラケットスイングモーションに比べると、プレイヤにとって有利となる処理ともいえる。なお、他の実施形態では、不正解方向への振り操作が行われた場合であっても、振り操作が適切なタイミングで行われていた場合には、ボール203とラケットを衝突させ、ショットを発生させる処理を実行してもよい。これにより、初心者がゲームをプレイする場合であっても、ゲームを進行させやすくすることができる。ただし、その場合には、ボールの移動方向や移動速度等を調整することで、対戦相手がゲームにおいて有利となるように調整してもよい。
【0109】
上記判定の結果、プレイヤキャラクタ201においてショットが発生した場合は(ステップS45でYES)、ステップS46で、プロセッサ81は、振り判定用データ306から算出され得る振り操作の内容に基づいて、ボール203の移動軌道や移動速度等を算出し、ボール移動パラメータ304に設定する。具体的には、振り操作中における右コントローラ4の姿勢変化に基づき、ボール203の移動軌道や移動速度を算出する。この際、例えば、振り操作中における手首のひねり等を当該姿勢変化に基づいて判定し、ボール203にトップスピンやバックスピンがかかった時のような移動軌跡を算出してもよい。換言すれば、当該処理は、ショットが発生した際における振り操作の内容(姿勢変化)に基づいて、ボール203への回転のかけ方等、そのショットの内容を決定する処理といえる。
【0110】
一方、上記判定の結果、プレイヤキャラクタ201においてショットが発生していない場合は(ステップS45でNO)、上記ステップS46の処理はスキップされる。その後、プロセッサ81は、プレイヤキャラ制御処理を終了する。
【0111】
[ボールの移動制御]
図16に戻り、次に、ステップS3で、プロセッサ81は、ボール移動制御処理を実行する。具体的には、プロセッサ81は、ボール移動パラメータ304に内容に基づいて、ボール203を移動させる。
【0112】
[その他の各種ゲーム処理]
次に、ステップS4で、プロセッサ81は、その他の各種のゲーム処理を実行する。例えば、プロセッサ81は、BGMや効果音等を制御するための音声制御処理等を適宜実行する。
【0113】
[画像出力制御]
次にステップS5で、プロセッサ81は、ゲーム画像を生成して出力する処理を実行する。具体的には、プロセッサ81は、上記のゲーム処理が反映された仮想ゲーム空間を仮想カメラで撮像する。更に、プロセッサ81は、当該撮像画像に基づいてゲーム画像を生成し、本体装置2に接続されている所定のモニタ等に出力する。
【0114】
[1プレイの終了判定]
次に、ステップS6で、プロセッサ81は、1プレイが終了する条件が満たされたか否かを判定する。例えば、いずれかのコートに入ったボール203が2回バウンドする前に返球できかったか否か、等が判定される。当該終了条件が満たされた場合は(ステップS6でYES)、ステップS7で、プロセッサ81は、いずれのコート側でボール203が2バウンドしたのかに応じて、プレイヤまたは対戦相手に得点を加算する処理を行う。その後、プロセッサ81は、1プレイ分のテニスゲーム処理を終了する。一方、まだ終了条件が満たされていない場合は(ステップS6でNO)、上記ステップS1に戻り、処理が繰り返される。
【0115】
以上で、1プレイ分に係るテニスゲーム処理の詳細説明を終了する。
【0116】
このように、本実施形態では、上記のようなテニスゲームにおいて、正解方向への振りを判定する際に、保留期間を設けている。これにより、仮に不正解方向への振りが検出されたとしても、これを即時に採用はせず、振り直しの機会をプレイヤに与えることができる。その結果、上記予備動作のような、プレイヤにとって意図していない振り操作が上記本振り動作として誤検出されることを防ぎ、プレイヤが本来意図しているであろう振り操作の検出精度を高めることができる。本実施形態の処理は、例えば、テニスのラケットを振るような操作について、より効果的に誤検出を防止できる。
【0117】
[変形例]
なお、上記実施形態では、プレイヤキャラクタ201等の移動について、オート移動制御する例を示したが、他の実施形態では、オート移動制御による移動中に、手動による移動制御を反映させるようにしてもよい。これにより、プレイヤキャラクタ201の移動動作について、移動先等の微調整を行わせることが可能となる。
【0118】
また、本実施形態では、正解方向について、x軸方向(左右方向)に着目して判定する例を挙げた。他の実施形態では、ゲーム内容やゲームバランスに鑑みて、例えば上記図9図10におけるx軸、z軸の2軸方向(xz平面上での方向)に着目して判定するようにしてもよいし、xyzの3軸を用いた3次元の方向で判定するようにしてもよい。また、本実施形態では、テニスゲームの性質上、ボール203の移動方向と逆方向の成分を含む方向を正解方向としているが、他の実施形態では、ゲームの内容等に応じて、所定の方向を正解方向として設定してもよい。
【0119】
また、上記正解方向に関して、上記の例では正解方向が1つの場合(2択の内の1つである場合)を想定した例を挙げたが、正解方向の判定について2軸以上の方向成分を用いる場合は、正解方向として複数の方向を判定可能としてもよい。
【0120】
また、他の実施形態では、プレイヤが行う振り操作を認識するための期間を限定するようにしてもよい。例えば、プレイヤキャラクタ201を中心とした所定範囲内にボール203が存在しているような状態(つまり、ボール203がある程度プレイヤキャラクタ201の近くにあるような位置関係である状態)のときのみ、上記のような振り操作に関する各種処理を行うようにしてもよい。この場合は、例えばボール203が相手側コートにある間は、右コントローラ4が振られても、振り操作が検出されないようにしてもよい。
【0121】
また、上記保留期間に関して、上記実施形態では一例として4フレームの期間を挙げた。当該保留期間については、静的な(固定の)期間とする他、ゲーム展開等に応じて動的に変化させるようにしてもよい。プレイヤ個々の振り方のクセによって、上述した予備動作の大きさがプレイヤによって異なることも考えられる。そのため、各プレイヤの振り方のクセに応じて最適化された保留期間となるよう、当該保留期間をゲーム処理中に動的に調整するようにしてもよい。例えば、試合中に、保留期間が有効化されてから正解方向への振り操作が検出されるまで期間の長さの統計をとり、4フレームぎりぎりで正解方向への振り操作が検出されることが多い場合は、試合が進むにつれて、保留期間を1~2フレーム分長くする等の調整を行ってもよい。更には、このようにプレイヤ毎に調整した保留期間をパーソナルデータとしてセーブデータ等に保存しておき、次回以降のプレイにおいて、試合開始時から、そのプレイヤに最適化された保留期間が適用されるようにしてもよい。また、更に他の実施形態では、上記保留期間について、試合開始前等に、所定の設定用画面においてプレイヤが手動で調整可能なように構成してもよい。例えば、所定の設定用画面において、実際にラケットを振るような操作をプレイヤに行わせながら保留期間を計測してもよい。そして、その計測結果をプレイヤに提示し、プレイヤが最適と考える保留期間を試合で使用するように設定可能としてもよい。
【0122】
また、上記ではテニスゲームを例示したが、この他、ラケットまたはこれに相当するような道具を振るようなスポーツゲーム全般についても、上記の処理は適用可能である。例えば卓球、バドミントン、野球(特に、バットを振る操作)等のスポーツゲームにも適用可能である。また、上記正解方向等の振り方向の扱いに関しては、ゲームの内容に応じて、上記右方向/左方向の代わりに上方向/下方向を用いてもよい。
【0123】
また、上記実施形態においては、テニスゲーム処理に係る一連の処理を単一の本体装置2で実行される場合を説明した。他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。また、いわゆるクラウドゲーミングの構成としてもよい。例えば、本体装置2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種ゲーム処理が実行され、その実行結果が動画・音声として本体装置2にストリーミング配信されるような構成としてもよい。
【符号の説明】
【0124】
1 ゲームシステム
2 本体装置
3 左コントローラ
4 右コントローラ
81 プロセッサ
84 フラッシュメモリ
85 DRAM
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19