[go: up one dir, main page]

JP6832712B2 - 振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法 - Google Patents

振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法 Download PDF

Info

Publication number
JP6832712B2
JP6832712B2 JP2017003757A JP2017003757A JP6832712B2 JP 6832712 B2 JP6832712 B2 JP 6832712B2 JP 2017003757 A JP2017003757 A JP 2017003757A JP 2017003757 A JP2017003757 A JP 2017003757A JP 6832712 B2 JP6832712 B2 JP 6832712B2
Authority
JP
Japan
Prior art keywords
vibration
unit
vibration data
data
controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017003757A
Other languages
English (en)
Other versions
JP2018112953A (ja
Inventor
圭 山下
圭 山下
孝文 青木
孝文 青木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2017003757A priority Critical patent/JP6832712B2/ja
Priority to US15/867,785 priority patent/US10639546B2/en
Priority to EP18151335.9A priority patent/EP3348313B1/en
Publication of JP2018112953A publication Critical patent/JP2018112953A/ja
Application granted granted Critical
Publication of JP6832712B2 publication Critical patent/JP6832712B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/25Output arrangements for video game devices
    • A63F13/28Output arrangements for video game devices responding to control signals received from the game device for affecting ambient conditions, e.g. for vibrating players' seats, activating scent dispensers or affecting temperature or light
    • A63F13/285Generating tactile feedback signals via the game input device, e.g. force feedback
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/23Input arrangements for video game devices for interfacing with the game device, e.g. specific interfaces between game controller and console
    • A63F13/235Input arrangements for video game devices for interfacing with the game device, e.g. specific interfaces between game controller and console using a wireless connection, e.g. infrared or piconet
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/24Constructional details thereof, e.g. game controllers with detachable joystick handles
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/90Constructional details or arrangements of video game devices not provided for in groups A63F13/20 or A63F13/25, e.g. housing, wiring, connections or cabinets
    • A63F13/92Video game devices specially adapted to be hand-held while playing

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • User Interface Of Digital Computer (AREA)

Description

この発明は振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法に関し、特にたとえば、振動モータを備える装置の振動を制御する、振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法に関する。
背景技術の一例が特許文献1に開示される。この特許文献1には、敵キャラクタの表示態様の違いに応じて振動を変化させるゲーム装置が開示されている。具体的には、プレイヤないしプレイヤキャラクタが敵キャラクタを攻撃すると、敵キャラクタがゲーム画面の奥に存在する(Z値が大きい)場合には、当該敵キャラクタに小さいダメージが与えられるとともに、ゲーム装置に弱い振動が与えられる。逆に、敵キャラクタがゲーム画面の手前に存在する(Z値が小さい)場合には、当該キャラクタに大きいダメージが与えられるとともに、ゲーム装置に強い振動が与えられる。
特開2006−68210号公報
特許文献1では、プレイヤは、振動により、ダメージの大きさを知覚するが、敵キャラクタに与えられるダメージの大きさはZ値の大きさによって決定されるため、Z値が同じ範囲であれば、敵キャラクタの位置に関係無く同じ強さの振動が与えられる。このように、振動によって、プレイヤが知覚する情報は比較的単純であるため、改善の余地があった。
それゆえに、この発明の主たる目的は、新規な、振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法を提供することである。
また、この発明の他の目的は、仮想空間における多様な状況に応じた振動を提示することができる、振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法を提供することである。
第1の発明は、振動源配置部と、振動データ生成部と、受容部設定部と、変化部と、振動制御部と、2つの振動部を備える、振動制御システムである。振動源配置部は、仮想空間内に振動源を配置する。振動データ生成部は、振動源から発生される振動に対応する振動データを生成する。受容部設定部は、振動源からの振動を受容する受容部を仮想空間内に設定する。変化部は、振動源配置部によって配置された振動源と受容部設定部によって設定された受容部との間の空間状況に基づいて、振動データ生成部によって生成された振動データを変化させる。振動制御部は、変化部によって変化された振動データに従って振動部を振動させる。2つの振動部は、使用時に左右に配置される。受容部設定部は、2つの振動部の各々に対応して仮想空間に2つの受容部を設定する。変化部は、振動源と一方の受容部との間の空間状況に基づいて、振動データ生成部によって生成された振動データを変化させた第1変化振動データを生成するとともに、振動源と他方の受容部との間の空間状況に基づいて、振動データ生成部によって生成された振動データを変化させた第2変化振動データを生成する。振動制御部は、第1変化振動データに従って一方の振動部を振動させ、第2変化振動データに従って他方の振動部を振動させる。
また、2つの受容部は、仮想のプレイヤの左右に合わせて配置される。受容部設定部は、受容部とは別の受容部を仮想のプレイヤに設定する。変化部は、振動源と受容部との間の空間状況に基づいて変化させた振動データを、受容部と別の受容部との間の空間状況に基づいてさらに変化させる。
第1の発明によれば、仮想空間内に振動を受容する受容部を設定し、振動源で発生される振動に対応する振動データを振動源と受容部の間の空間状況に基づいて変化させて振動部を振動させるので、仮想空間における多様な状況に応じた振動を提示することができる。
また、第1の発明によれば、2つの振動部に対応して2つの受容部を設け、各受容部について空間状況に基づいて振動データを変化させるので、振動によるステレオ感を得ることができる。
さらに、第1の発明によれば、受容部は仮想のプレイヤに関連して配置することもできる。
さらにまた、第1の発明によれば、振動源から受容部に伝達される振動に対応する振動データが変化され、さらに受容部から別の受容部に伝達される振動に対応する振動データが変化されるので、たとえば、プレイヤオブジェクトが感じる振動を表現しつつ、プレイヤ自身が仮想空間にいてプレイヤオブジェクトを操作している印象を感じさせることができる。
第2の発明は、第1の発明に従属し、振動源は仮想空間内に配置されたオブジェクトに対応する。
第3の発明は、第1または第2の発明に従属し、プレイヤオブジェクト配置部をさらに備える。プレイヤオブジェクト配置部は、プレイヤの操作に応じて、少なくとも仮想空間を移動するプレイヤオブジェクトを当該仮想空間に配置する。受容部設定部は、プレイヤオブジェクト配置部によって配置されたプレイヤオブジェクトに関連して、受容部を設定する。
第3の発明によれば、仮想空間内に配置されるプレイヤオブジェクトに関連して受容部が設定されるので、プレイヤオブジェクトに伝達される振動をプレイヤに知覚させることができる。
第4の発明は、第1ないし第3の発明のいずれかに従属し、振動源配置部は、仮想空間に複数の振動源を配置する。振動データ生成部は、複数の振動源の各々から発生される振動に対応する振動データを生成する。変化部は、複数の振動源の各々と受容部との間の空間状況に基づいて、各々の振動データを変化させる。合成部は変化された各々の振動データを合成する。振動制御部は、合成部によって合成された振動データ基づいて振動部を振動させる。
第4の発明によれば、複数の振動源で振動が発生される場合であっても、仮想空間における多様な状況に応じた振動を提示することができる。
の発明は、第ないし第の発明に従属し、変化部は、2つの受容部のうちの一方の受容部に受容される振動と他方の受容部に受容される振動との差が大きくなるように振動データを変化させる。
の発明によれば、2つの振動部で発生される振動の差を大きくすることができるため、2つの振動部が1つの筐体で構成される装置または複数の筐体が一体化された装置に設けられる場合にもステレオ感を得ることができる。
の発明は、第1ないし第の発明のいずれかに従属し、空間状況は振動源と受容部の間の媒体を含み、変化部は、媒体に応じて振動データの変化率を変化させる。
の発明によれば、現実世界において振動が伝達される場合と同様に、仮想空間において振動を伝達させることができる。
の発明は、第1ないし第の発明のいずれかに従属し、振動データは、振動波形の周波数と振幅の値の組についてのデータである。変化部は、空間状況に応じて、周波数および振幅の少なくとも一方を変化させる。
の発明によれば、振動波形の周波数と振幅の少なくとも一方を変化させることにより、受容部に受容される振動を変化させることができる。
の発明は、第の発明に従属し、変化部は、周波数毎に、振幅の変化率を変化させる。たとえば、周波数が高い場合には、周波数が低い場合と比較して、振動を減衰させる量(減衰率)が大きく設定される。
の発明は、第3の明に従属し、変化部は、プレイヤオブジェクトの状態に応じて振動データを変化させる。
の発明によれば、オブジェクトの状態に応じて振動データを変化させることもできるので、仮想空間における多様な状況に応じた振動を提示することができる。
10の発明は、第3の明に従属し、変化部は、プレイヤオブジェクトの状態に応じて振動データの変化率を変える。
10の発明によれば、オブジェクトの状態に応じて変化率を変えることができるので、仮想空間における多様な状況に応じた振動を提示することができる。
11の発明は、振動源配置部と、振動データ生成部と、受容部設定部と、変化部と、振動制御部と、2つの振動部を備える、振動制御装置である。振動源配置部は、仮想空間内に振動源を配置する。振動データ生成部は、振動源から発生される振動に対応する振動データを生成する。受容部設定部は、振動源からの振動を受容する受容部を仮想空間内に設定する。変化部は、振動源配置部によって配置された振動源と受容部設定部によって設定された受容部との間の空間状況に基づいて、振動データ生成部によって生成された振動データを変化させる。振動制御部は、変化部によって変化された振動データに従って振動部を振動させる。2つの振動部は、使用時に左右に配置される。受容部設定部は、2つの振動部の各々に対応して仮想空間に2つの受容部を設定する。変化部は、振動源と一方の受容部との間の空間状況に基づいて、振動データ生成部によって生成された振動データを変化させた第1変化振動データを生成するとともに、振動源と他方の受容部との間の空間状況に基づいて、振動データ生成部によって生成された振動データを変化させた第2変化振動データを生成する。振動制御部は、第1変化振動データに従って一方の振動部を振動させ、第2変化振動データに従って他方の振動部を振動させる。
また、2つの受容部は、仮想のプレイヤの左右に合わせて配置される。受容部設定部は、受容部とは別の受容部を仮想のプレイヤに設定する。変化部は、振動源と受容部との間の空間状況に基づいて変化させた振動データを、受容部と別の受容部との間の空間状況に基づいてさらに変化させる。
12の発明は、使用時に左右に配置される2つの振動部を備える振動制御装置によって実行される振動制御プログラムであって、振動制御装置のプロセッサに、仮想空間内に振動源を配置する振動源配置ステップと、振動源から発生される振動に対応する振動データを生成する振動データ生成ステップと、振動源からの振動を受容する受容部を仮想空間内に設定する受容部設定ステップと、振動源配置ステップにおいて配置した振動源と受容部設定ステップにおいて設定した受容部との間の空間状況に基づいて、振動データ生成ステップにおいて生成した振動データを変化させる変化ステップと、変化ステップにおいて変化させた振動データに従って振動部を振動させる振動制御ステップを実行させ、受容部設定ステップは、2つの振動部の各々に対応して仮想空間に2つの受容部を設定し、変化ステップは、振動源と一方の受容部との間の空間状況に基づいて、振動データ生成ステップにおいて生成した振動データを変化させた第1変化振動データを生成するとともに、振動源と他方の受容部との間の空間状況に基づいて、振動データ生成ステップにおいて生成した振動データを変化させた第2変化振動データを生成し、振動制御ステップは、第1変化振動データに従って一方の振動部を振動させ、第2変化振動データに従って他方の振動部を振動させ、2つの受容部は、仮想のプレイヤの左右に合わせて配置され、受容部設定ステップは、受容部とは別の受容部を仮想のプレイヤに設定し、変化ステップは、振動源と受容部との間の空間状況に基づいて変化させた振動データを、受容部と別の受容部との間の空間状況に基づいてさらに変化させる、振動制御プログラムである。
13の発明は、使用時に左右に配置される2つの振動部を備える振動制御装置の振動制御方法であって、(a)仮想空間内に振動源を配置するステップと、(b)振動源から発生される振動に対応する振動データを生成するステップと、(c)振動源からの振動を受容する受容部を仮想空間内に設定するステップと、(d)ステップ(a)において配置した振動源とステップ(c)において設定した受容部との間の空間状況に基づいて、ステップ(b)において生成した振動データを変化させるステップと、(e)ステップ(d)において変化させた振動データに従って振動部を振動させるステップを含み、ステップ(c)は、2つの振動部の各々に対応して仮想空間に2つの受容部を設定し、ステップ(d)は、振動源と一方の受容部との間の空間状況に基づいて、振動データ生成ステップにおいて生成した振動データを変化させた第1変化振動データを生成するとともに、振動源と他方の受容部との間の空間状況に基づいて、振動データ生成ステップにおいて生成した振動データを変化させた第2変化振動データを生成し、ステップ(e)は、第1変化振動データに従って一方の振動部を振動させ、第2変化振動データに従って他方の振動部を振動させ、2つの受容部は、仮想のプレイヤの左右に合わせて配置され、ステップ(c)は、受容部とは別の受容部を仮想のプレイヤに設定し、ステップ(d)は、振動源と受容部との間の空間状況に基づいて変化させた振動データを、受容部と別の受容部との間の空間状況に基づいてさらに変化させる、振動制御方法である。
11ないし第13の発明においても、第1の発明と同様に、仮想空間における多様な状況に応じた振動を提示することができる。
また、第11ないし第13の発明においても、第1の発明と同様に、振動によるステレオ感を得ることができる。
さらに、第11ないし第13の発明においても、第1の発明と同様に、受容部は仮想のプレイヤに関連して配置することもできる。
さらにまた、第11ないし第13の発明においても、第1の発明と同様に、たとえば、プレイヤオブジェクトが感じる振動を表現しつつ、プレイヤ自身が仮想空間にいてプレイヤオブジェクトを操作している印象を感じさせることができる。
この発明によれば、仮想空間における多様な状況に応じた振動を提示することができる。
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
図1はゲーム装置の外観構成の限定しない一例を示す図解図である。 図2は図1に示すゲーム装置において本体装置からコントローラを分離した状態の限定しない一例を示す図解図である。 図3は図1および図2に示すゲーム装置の電気的な構成の限定しない一例を示すブロック図である。 図4は図1ないし図3に示す第1コントローラの電気的な構成の限定しない一例を示すブロック図である。 図5は図1ないし図3に示す第2コントローラの電気的な構成の限定しない一例を示すブロック図である。 図6は図1に示すゲーム装置の使用態様の限定しない一例を示す図解図である。 図7は図1に示すゲーム装置の使用態様の他の例を示す図解図である。 図8は図1に示すゲーム装置の使用態様のその他の例を示す図解図である。 図9は図1に示すゲーム装置の使用態様のさらに他の例を示す図解図である。 図10は図9に示す第3コントローラの電気的な構成の限定しない一例を示すブロック図である。 図11は図1ないし図3に示す表示装置に表示されるゲーム画面の限定しない一例を示す図解図である。 図12は仮想空間における振動源および受容部の設定方法の限定しない一例を説明するための図解図である。 図13は振動源から受容部に伝達される振動を減衰させる減衰係数の距離に対する変化を示すグラフである。 図14は仮想空間における振動源および振動の受容部の設定方法の限定しない他の例を説明するための図解図である。 図15は仮想空間における振動源および振動の受容部の設定方法の限定しないその他の例を説明するための図解図である。 図16は図3に示すゲーム装置のRAMのメモリマップの限定しない一例を示す図解図である。 図17は図3に示すCPUのゲーム全体処理の限定しない一例を示すフロー図である。 図18は図3に示すCPUの振動制御処理の限定しない一例を示すフロー図である。 図19は第2実施例において振動源から受容部に伝達される振動の算出方法を説明するための図解図である。 図20は第2実施例において振動源から受容部に伝達される振動の算出する場合において、左右の受容部を通る直線に対する左右の振動部の中点と振動源を結ぶ直線の角度に応じた減衰係数の変化を示すグラフである。 図21は第3実施例において振動源と受容部の距離の算出方法を説明するための図解図である。 図22は第4実施例において振動源から受容部に伝達される振動の算出方法を説明するための図解図である。
[第1実施例]
図1を参照して、限定しない一例のゲーム装置10は本体装置10aを含む。本体装置10aは、振動制御装置としても機能する。この本体装置10aには、表示装置12が設けられる。表示装置12は、LCDであるが、有機ELを用いたディスプレイであってもよい。また、ゲーム装置10は、第1コントローラ14および第2コントローラ16を含み、図2からも分かるように、第1コントローラ(左コントローラ)14は本体装置10aの左側に着脱可能に設けられ、第2コントローラ(右コントローラ)16は本体装置10aの右側に着脱可能に設けられる。
なお、この第1実施例では、情報処理装置の一例としてゲーム装置10について説明するが、本体装置10aは、スマートフォンおよびタブレット端末などを用いることができる。ただし、スマートフォンおよびタブレット端末を用いる場合には第1コントローラ14および第2コントローラ16を着脱可能な構成を別途設ける必要がある。
詳細は後述するが、第1コントローラ14および第2コントローラ16は、本体装置10aに装着した状態で使用することができ、また、本体装置10aから分離(離脱)した状態で使用することもできる。第1コントローラ14および第2コントローラ16を本体装置10aから分離した場合には、一人のプレイヤ(または、ユーザ)が第1コントローラ14および第2コントローラ16の両方を使用することができる。
なお、この第1実施例では、第1コントローラ14および第2コントローラ16は、共に本体装置10aに装着され、共に本体装置10aから分離されるものとする。
図1に戻って、第1コントローラ14には、各種の操作ボタン14aが設けられるとともに、アナログスティック14bが設けられる。詳細な説明は省略するが、操作ボタン14aおよびアナログスティック14bは、第1コントローラ14の筐体のうち、本体装置10aに装着される面以外のいずれかの面に設けることができる。操作ボタン14aは、本体装置10aで実行される各種プログラムに応じた指示を行うために設けられる。アナログスティック14bは、傾倒することにより方向を指示することができる。ただし、アナログスティック14bに代えてスライドスティックが設けられてもよい。また、アナログスティック14bは、押圧することにより、操作ボタンとしても機能するようにしてもよい。また、第1コントローラ14の筐体内には、この第1コントローラ14(本体装置10aに装着される場合も含む)を把持するプレイヤに振動を提示するための振動モータ(振動子)14cが設けられる。これらのことは、後述する第2コントローラ16についても同じである。
第1コントローラ14と同様に、第2コントローラ16には、各種の操作ボタン16aが設けられるとともに、アナログスティック16bが設けられる。さらに、第2コントローラ16の筐体内には、振動モータ16cが設けられる。
また、図示は省略するが、本体装置10aの底面には、充電台50と接続するためのコネクタおよびスピーカ38(図3参照)の音を放出すための放音孔が設けられる。ただし、本体装置10aの底面は、表示装置12の表示面に垂直な面であり、図1において、下側に位置する面である。たとえば、図1に示すゲーム装置10をプレイヤが使用する場合には、上記のコネクタおよび放音孔は、プレイヤ側を向く。
さらに、図2に示すように、本体装置10aの左側面にはレール部材10bが設けられ、本体装置10aの右側面にはレール部材10cが設けられる。一方、第1コントローラ14の筐体の長手方向の一方側面(図2では右側面)にはスライダ14dが設けられ、第2コントローラ16の筐体の長手方向の一方側面(図2では左側面)にはスライダ16dが設けられる。
レール部材10bはスライダ14dと係合可能に構成され、レール部材10cはスライダ16dと係合可能に構成される。つまり、レール部材10bとスライダ14dによってスライド機構が形成され、レール部材10cとスライダ16dによってスライド機構が形成される。このため、第1コントローラ14および第2コントローラ16は、それぞれ、本体装置10aにスライド可能であり、着脱可能に設けられる。
なお、レール部材(10b,10c)をコントローラ(14,16)側に設けて、スライダ(14d,16d)を本体装置10a側に設けるようにしてもよい。また、本体装置10aに第1コントローラ14および第2コントローラ16を着脱する機構は他の機構が採用されてもよい。たとえば、他の機構としては、本体装置10aに設けた凹部(または、凸部)に嵌合する凸部(または、凹部)を、第1コントローラ14および第2コントローラ16の筐体のそれぞれに設けるようにしてもよい。
図3は図1および図2に示したゲーム装置10の電気的な構成を示すブロック図である。図3に示すように、ゲーム装置10は、CPU20を含み、CPU20には、RAM22、フラッシュメモリ24、コントローラ通信部26、左側端子28、右側端子30、表示ドライバ32、ディジタル・アナログ(D/A)変換器34および下側端子36が接続される。また、表示ドライバ32には表示装置12が接続され、D/A変換器34にはスピーカ38が接続される。これらのコンポーネントが本体装置10aの内部に設けられる。ただし、左側端子28、右側端子30および下側端子36の接続部(接続端子)は、本体装置10aから露出するように設けられる。
上述したように、ゲーム装置10は、第1コントローラ14および第2コントローラ16を含み、これらが本体装置10aに装着されている場合には、第1コントローラ14は左側端子28と電気的に接続され、第2コントローラ16は右側端子30と電気に接続される。
また、ゲーム装置10が充電台(クレードル)50に載置される場合には、下側端子36は、充電台50に設けられた接続プラグ(図示せず)と接続される。この場合、充電台50から下側端子36を介してゲーム装置10に電力が供給され、本体装置10aに内蔵されたバッテリが充電されるとともに、本体装置10aと接続される第1コントローラ14および第2コントローラ16に内蔵されたバッテリが充電される。
図示は省略するが、充電台50はHDMI(登録商標)ケーブルのような信号ケーブルを用いてテレビジョン受像機に接続可能であり、この場合、本体装置10aから下側端子36を介して出力されるAV(音声および画像(映像))データは、充電台50を介してテレビジョン受像機に与えられる。したがって、テレビジョン受像機の表示部(モニタ)にゲーム画面が表示されるとともに、テレビジョン受像機のスピーカから音声または/および音楽が出力される。
CPU20は、ゲーム装置10の全体的な制御を司る。RAM22は、揮発性の記憶装置であり、CPU20のワーキング領域およびバッファ領域として使用される。フラッシュメモリ24は、不揮発性の記憶装置であり、ゲーム装置10で実行される各種プログラム(情報処理プログラム)およびセーブデータなどを記憶する。
なお、上記の情報処理プログラムは、一例として、ゲームのアプリケーションプログラムであるが、これに限定される必要は無い。アプリケーションプログラムは、文書作成プログラム、電子メールプログラム、お絵描きプログラム、文字練習プログラム、語学トレーニングプログラム、学習プログラムなどの他のプログラムでもよい。
以下において、本体装置10aが、第1コントローラ14および第2コントローラ16との間の通信を行う構成について説明する。
この第1実施例において、第1コントローラ14および第2コントローラ16が本体装置10aと分離状態にある場合には、本体装置10aは、第1コントローラ14および第2コントローラ16と無線通信を行う。一方、第1コントローラ14および第2コントローラ16が本体装置10aに装着されている場合には、本体装置10aは、第1コントローラ14および第2コントローラ16と有線通信を行う。
コントローラ通信部26は、第1コントローラ14および第2コントローラ16と無線通信を行う。本体装置10aと各コントローラ(14,16)との通信方式は任意の方式を採用することができるが、この第1実施例では、Bluetooth(登録商標)の規格に従う通信方式が採用される。
左側端子28は、第1コントローラ14が本体装置10aに装着されている場合に、CPU20と第1コントローラ14で有線通信を行うための端子であり、CPU20は、左側端子28を介して第1コントローラ14との間でデータを送受信する。
右側端子30は、第2コントローラ16が本体装置10aに装着されている場合に、CPU20と第2コントローラ16で有線通信を行うための端子であり、CPU20は、右側端子30を介して第2コントローラ16との間でデータを送受信する。
この第1実施例において、CPU20から各コントローラ(14,16)に送信されるのは、各コントローラ(14,16)を振動させるための振動データである。振動データは、CPU20が、振動データを生成するプログラムを実行したり、保存された振動データを読み出したりして生成される。また、振動データは、振動波形(アナログ信号の波形)を示すデータであり、振動波形そのものの信号(振動信号)でも良いし、振動波形をデジタル化したものでも良いし、周波数を示す値と振幅を示す値の組でも良い。一方、各コントローラ(14,16)から送信されるのは、当該各コントローラ(14,16)に設けられた各操作ボタン(14a,16a)およびアナログスティック(14b,16b)を操作した場合の操作データである。ただし、CPU20と各コントローラ(14,16)の間で、各種制御信号等の他のデータを送受信するようにしても良い。
このように、本体装置10aは、第1コントローラ14および第2コントローラ16との間で、有線通信および無線通信を行うことができる。
なお、図示は省略するが、左側端子28は、充電台50からの電源を供給するための電源ラインを第1コントローラ14に内蔵されるバッテリの充電回路に接続する。このことは、右側端子30についても同様である。
表示ドライバ32は、GPUおよびVRAMを含み、CPU20の指示の下、表示装置12に表示するゲーム画面(ゲーム画像)についての画像データをVRAM上に生成し、表示装置12に出力する。D/A変換器34は、CPU20から出力される音声データをアナログの音声信号に変換してスピーカ38に出力する。
なお、上述したように、テレビジョン受像機のモニタにゲーム画面を表示するとともに、テレビジョン受像機のスピーカから音声を出力する場合には、CPU20は、AVデータを下側端子36および充電台50を介してテレビジョン受像機に送信する。
下側端子36は、充電台50と接続するための端子であり、充電台50に内蔵される電力供給回路からの電源ラインをゲーム装置10(本体装置10a)に内蔵されるバッテリを充電するための充電回路に接続するための端子である。また、下側端子36は、充電台50との間で有線通信するための端子でもある。
なお、図3に示すゲーム装置10の電気的な構成は一例であり、限定されるべきでない。たとえば、入力手段として、タッチパネルをさらに設けてもよい。この場合、タッチパネルは、表示装置12上に設けられる。または、タッチパネルが表示装置12と一体的に構成されたタッチディスプレイが設けられてもよい。また、ゲーム装置10の向き(姿勢)または/および動きを検出するための慣性センサ(加速度センサまたは/およびジャイロセンサ)が設けられてもよい。
図4は、図1ないし図3に示した第1コントローラ14の電気的な構成を示すブロック図である。図4に示すように、第1コントローラ14は、コントローラ制御部70を含み、コントローラ制御部70には、端子72、通信モジュール74、メモリ76、操作ボタン群78、アナログスティック80および振動部82が接続される。
コントローラ制御部70は、たとえば、マイクロコンピュータで構成され、第1コントローラ14を全体制御する。端子72は、第1コントローラ14が本体装置10aに装着されている場合に、本体装置10aの左側端子28と電気的に接続するために設けられる。通信モジュール74は、第1コントローラ14が本体装置10aから分離されている場合に、本体装置10aと通信可能に接続するために設けられる。上述したように、本体装置10aに設けられるコントローラ通信部26は、Bluetooth(登録商標)の規格に従う無線通信方式を採用するため、通信モジュール74も、Bluetooth(登録商標)の規格に従う無線通信方式を採用する。
したがって、コントローラ制御部70は、第1コントローラ14が本体装置10aに装着されている場合には、操作ボタン群78または/およびアナログスティック80の操作データを受け付けて、受け付けた操作データを端子72から出力する。一方、コントローラ制御部70は、第1コントローラ14が本体装置10aから分離されている場合には、上記のような操作データを受け付けて、受け付けた操作データを通信モジュール74から上記の無線通信方式に従って本体装置10aに送信する。
また、コントローラ制御部70は、第1コントローラ14が本体装置10aに装着されている場合には、端子72から入力される振動データを受信(取得)する。一方、コントローラ制御部70は、第1コントローラ14が本体装置10aから分離されている場合には、上記のような振動データを通信モジュール74で受信し、取得する。
メモリ76は、たとえば、フラッシュメモリ等の不揮発性の記憶装置であり、ファームウェアおよび第1コントローラ14の識別情報(コントローラID)を記憶する。コントローラ制御部70は、メモリ76に記憶されるファームウェアを実行することによって各種の処理を実行する。また、コントローラ制御部70は、第1コントローラ14を本体装置10aと無線通信可能に接続したとき、コントローラIDを本体装置10aに通知する。
操作ボタン群78は、上述した各種の操作ボタン14aに相当し、アナログスティック80は、上述したアナログスティック14bに相当する。操作ボタン群78およびアナログスティック80に対して行なわれた操作に関する情報(操作データ)は、所定周期でコントローラ制御部70に繰り返し出力される。
振動部82は、モータドライバ82aおよび振動モータ82bを含み、モータドライバ82aがコントローラ制御部70によって制御される。コントローラ制御部70は、本体装置10aから送信される振動データに従って振動モータ82bを制御する。すなわち、コントローラ制御部70は、本体装置10aから振動データを受信(取得)すると、取得した振動データをモータドライバ82aに出力する。モータドライバ82aは、コントローラ制御部70からの振動データから振動モータ82bを振動させるための駆動信号を生成し、生成した駆動信号を振動モータ82bに与える。このため、振動モータ82bは、本体装置10aからの振動データに従って動作する。
たとえば、振動モータ82bは、リニアモータであり、音声信号のようなアナログ信号(振動信号)の入力波形(振動波形)に応じたパターンで出力(振動)する。ただし、この第1実施例では、振動データは、アナログ信号(振動信号)の各時点の信号値(周波数および振幅)に対応する、周波数の値と振幅に対応する電圧値の組についてのデータである。振動モータ82bとしてのリニアモータは、振動信号の各時点での信号値に応じて、振動データが示す電圧値を、振動データが示す周波数で増減するように印加することで、内部の錘の位置を変えることにより、入力波形に応じたパターンで出力する。
なお、振動モータ82bは、振幅を調整可能なモータであればよく、たとえば、圧電素子またはボイスコイルまたは超音波などで振動を発生させるモータを用いることができる。
また、図4に示す第1コントローラ14の電気的な構成は一例であり、限定されるべきでない。たとえば、第1コントローラ14の向き(姿勢)または/および動きを検出するための慣性センサ(加速度センサまたは/およびジャイロセンサ)が設けられてもよい。
図5は、図1ないし図3に示した第2コントローラ16の電気的な構成を示すブロック図である。図5に示すように、第2コントローラ16は、コントローラ制御部90を含み、コントローラ制御部90には、端子92、通信モジュール94、メモリ96、操作ボタン群98、アナログスティック100および振動部102が接続される。
図5に示すように、この第1実施例では、第2コントローラ16の電気的な構成は、図4に示した第1コントローラ14の電気的な構成と同じであるため、各コンポーネントについての説明は省略する。
なお、この第1実施例では、第1コントローラ14および第2コントローラ16の電気的な構成を同じにしてあるが、同じである必要はない。
図6はゲーム装置10の使用態様の一例(第1態様)を示す図解図である。図6に示すように、第1態様のゲーム装置10では、第1コントローラ14および第2コントローラ16は、本体装置10aに装着された状態で使用される。この場合、プレイヤは両手でゲーム装置10を把持し、左手で第1コントローラ14を操作するとともに、右手で第2コントローラ16を操作する。つまり、ゲーム装置10は携帯型のゲーム装置として機能する。
したがって、第1コントローラ14が操作されると、操作データがコントローラ制御部70から端子72および左側端子28を介してCPU20に入力される。同様に、第2コントローラ16が操作されると、操作データがコントローラ制御部90から端子92および右側端子30を介してCPU20に入力される。
また、CPU20からの振動データは、左側端子28および第1コントローラ14の端子72を介してコントローラ制御部70に入力される。同様に、CPU20からの振動データは、右側端子30および第2コントローラ16の端子92を介してコントローラ制御部90に入力される。
第1コントローラ14では、コントローラ制御部70はモータドライバ82aに振動データを入力し、モータドライバ82aは振動データに従って振動モータ82bを駆動する。また、第2コントローラ16では、コントローラ制御部90はモータドライバ102aに振動データを入力し、モータドライバ102aは振動データに従って振動モータ102bを駆動する。
第1コントローラ14に設けられた振動モータ82bが駆動すると、振動モータ82bによって発生される振動がゲーム装置10を把持する両手に伝達される。また、第2コントローラ16に設けられた振動モータ102bが駆動すると、振動モータ102bによって発生される振動がゲーム装置10を把持する両手に伝達される。つまり、プレイヤは、振動を両手で知覚する。
なお、振動モータ82bと振動モータ102bは、同時に駆動されてもよいし、別々に振動されてもよい。また、振動モータ82bと振動モータ102bには、同じ内容(周波数および電圧値)の振動データが入力されてもよいし、異なる内容の振動データが入力されてもよい。これらのことは後述する第2態様および第3態様についても同じである。
図7はゲーム装置10の使用態様の他の例(第2態様)を示す図解図である。図7に示すように、第2態様のゲーム装置10では、第1コントローラ14および第2コントローラ16は、本体装置10aから分離された状態で使用される。この場合、プレイヤは、左手で第1コントローラ14を把持し、右手で第2コントローラ16を把持し、本体装置10aは机または台の上に立てた状態で載置される。ただし、本体装置10aを立てた状態とは、本体装置10aに設けられた表示装置12の表示面が水平面に対して垂直な状態または垂直から少し傾斜した状態を意味する。たとえば、本体装置10aを充電台50に載置することにより、本体装置10aを立てた状態にすることができる。
第2態様において、第1コントローラ14が操作されると、コントローラ制御部70からの操作データが通信モジュール74から送信され、コントローラ通信部26で受信され、CPU20に入力される。同様に、第2コントローラ16が操作されると、コントローラ制御部90からの操作データが通信モジュール94から送信され、コントローラ通信部26で受信され、CPU20に入力される。
また、CPU20からの振動データは、コントローラ通信部26から送信され、第1コントローラ14の通信モジュール74で受信され、コントローラ制御部70に入力される。同様に、CPU20からの振動データは、コントローラ通信部26から送信され、第2コントローラ16の通信モジュール94で受信され、コントローラ制御部90に入力される。
第1態様で説明したように、第1コントローラ14の振動モータ82bはコントローラ制御部70からの振動データに従って駆動され、第2コントローラ16の振動モータ102bはコントローラ制御部90からの振動データに従って駆動される。
第1コントローラ14に設けられた振動モータ82bが駆動すると、振動モータ82bによって発生される振動が第1コントローラ14を把持する左手に伝達され、第2コントローラ16に設けられた振動モータ102bが駆動すると、振動モータ102bによって発生される振動が第2コントローラ16を把持する右手に伝達される。つまり、プレイヤは、振動を左手および右手のそれぞれで知覚する。
なお、第1コントローラ14および第2コントローラ16を本体装置10aから分離して使用する場合には、無線通信可能に接続する必要がある。この第1実施例では、Bluetooth(登録商標)の規格に従って無線通信を行うため、ゲーム装置10(本体装置10a)の電源をオンしたとき、または、ゲームのようなアプリケーションを開始するときに、本体装置10aはコントローラ(14,16など)と接続する(ペアリング)。
この場合、本体装置10a(親機)はコントローラ(14,16などの子機)を検索可能なモード(ペアリングモード)に設定され、一方、コントローラ(14,16など)も所定の操作ボタン(14a,16aなど)を操作することにより、本体装置10aを検索可能なペアリングモードに設定される。本体装置10aは、所定の信号を発信しているコントローラ(14,16など)を検索し、コントローラ(14,16など)を検出すると、接続を実行する。接続が完了すると、本体装置10aは、接続されたコントローラ(14,16など)の識別情報(コントローラID)を登録する。後述する第3コントローラ120などの別のコントローラが無線通信可能に本体装置10aに接続される場合についても同様である。
図8はゲーム装置10の使用態様のその他の例(第3態様)を示す図解図である。図8に示すように、第3態様のゲーム装置10では、第2態様の場合と同様に、第1コントローラ14および第2コントローラ16は、本体装置10aから分離された状態で使用される。ただし、第3態様では、第1コントローラ14および第2コントローラ16は、接続部材18を用いて連結され、第1コントローラ14および第2コントローラ16が一体的に設けられた1つのコントローラ(以下、「コントローラ110」と呼ぶことがある)として使用される。
詳細な説明は省略するが、接続部材18は、四角柱の形状または中空の六面体の形状に形成されており、レール部材10bと同じレール部材が第1コントローラ14を着脱する面(第1の側面)に設けられるとともに、レール部材10cと同じレール部材が第2コントローラ16を着脱する面(第2の側面)に設けられる。ただし、第1の側面は、第2の側面と反対側の面である。
第3態様では、プレイヤは、コントローラ110を両手で把持し、左手で第1コントローラ14を操作するとともに、右手で第2コントローラ16を操作する。また、第2態様と同様に、本体装置10aは机または台の上に立てた状態で載置される。
したがって、第1コントローラ14が操作されると、コントローラ制御部70からの操作データが通信モジュール74から送信され、コントローラ通信部26で受信され、CPU20に入力される。同様に、第2コントローラ16が操作されると、コントローラ制御部90からの操作データが通信モジュール94から送信され、コントローラ通信部26で受信され、CPU20に入力される。
また、CPU20からの振動データは、コントローラ通信部26から送信され、第1コントローラ14の通信モジュール74で受信され、コントローラ制御部70に入力される。同様に、CPU20からの振動データは、コントローラ通信部26から送信され、第2コントローラ16の通信モジュール94で受信され、コントローラ制御部90に入力される。
この場合にも、第1態様で説明したように、第1コントローラ14の振動モータ82bはコントローラ制御部70からの振動データに従って駆動され、第2コントローラ16の振動モータ102bはコントローラ制御部90からの振動データに従って駆動される。
第1コントローラ14に設けられた振動モータ82bが駆動すると、振動モータ82bによって発生される振動がコントローラ110を把持する両手に伝達される。また、第2コントローラ16に設けられた振動モータ102bが駆動すると、振動モータ102bによって発生される振動がコントローラ110を把持する両手に伝達される。つまり、プレイヤは、振動を両手で知覚する。
図9はゲーム装置10の使用態様のさらに他の例(第4態様)を示す図解図である。図9に示すように、第4態様のゲーム装置10では、第1コントローラ14および第2コントローラ16に代えて、第3コントローラ120が使用される。この場合、本体装置10aと第3コントローラ120によってゲーム装置10が構成される。
なお、図9に示す例では、第1コントローラ14および第2コントローラ16を本体装置10aから分離してあるが、第1コントローラ14および第2コントローラ16を使用しない場合には、これらは本体装置10aに装着された状態であってもよい。
第4態様では、プレイヤは、第3コントローラ120を両手で把持して操作する。また、第2態様および第3態様と同様に、本体装置10aは机または台の上に立てた状態で載置される。
第3コントローラ120は、各種の操作ボタン120aおよび左右2つのアナログスティック(左側アナログスティック158および右側アナログスティック160)120bを備える。また、第3コントローラ120は、左右2つのグリップ部のそれぞれの内部に振動モータ(振動モータ162bおよび振動モータ164b)120cが設けられる。このような構成の第3コントローラ120は、操作する機能および振動を知覚させる機能については、第3態様のコントローラ110と同様であるが、このコントローラ110よりも把持し易いコントローラと言える。
図10は、第3コントローラ120の電気的な構成を示すブロック図である。図10に示すように、第3コントローラ120は、コントローラ制御部150を含み、コントローラ制御部150には、通信モジュール152、メモリ154、操作ボタン群156、左側アナログスティック158、右側アナログスティック160、左側振動部162および右側振動部164が接続される。左側振動部162は、モータドライバ162aおよび振動モータ162bを含み、モータドライバ162aがコントローラ制御部150に接続される。また、右側振動部164は、モータドライバ164aおよび振動モータ164bを含み、モータドライバ164aがコントローラ制御部150に接続される。また、操作ボタン群156が各種の操作ボタン120aに相当する。
図10に示す各コンポーネントは、図4に示した第1コントローラ14に設けられる各コンポーネントと同様の機能を有するため、重複する説明は省略することにする。
なお、第3コントローラ120は、本体装置10aに装着しないため、端子72および端子92のような端子は設けられていない。ただし、第3コントローラ120を、信号ケーブルを用いて本体装置10aと接続可能にする場合には、信号ケーブルを接続するための端子が本体装置10aおよび第3コントローラ120のそれぞれに設けられる。
第4態様では、第3コントローラ120が操作されると、コントローラ制御部150からの操作データが通信モジュール152から送信され、コントローラ通信部26で受信され、CPU20に入力される。
また、CPU20からの振動データは、コントローラ通信部26から送信され、第3コントローラ120の通信モジュール152で受信され、コントローラ制御部150に入力される。第3コントローラ120では、コントローラ制御部150が振動データに従って、左側振動部162の振動モータ162bを駆動し、右側振動部164の振動モータ164bを駆動する。ただし、CPU20から送信される振動データは、振動モータ162bおよび振動モータ164bで同じ内容でもよいし、それぞれ異なる内容でもよい。
第3コントローラ120の左側のグリップ部に設けられた振動モータ162bが駆動すると、振動モータ162bによって発生される振動が第3コントローラ120を把持する両手に伝達される。また、第3コントローラ120に設けられた振動モータ164bが駆動すると、振動モータ164bによって発生される振動が第3コントローラ120を把持する両手に伝達される。つまり、プレイヤは、振動を両手で知覚する。
この第1実施例では、第1コントローラ14および第2コントローラ16とは別のコントローラとして図9に示すような形状の第3コントローラ120を使用するようにしてあるが、別のコントローラの形状は限定される必要はない。たとえば、モデルガンの形状、アニメキャラクタまたはゲームキャラクタを模した形状、楽器を模した形状または筆記用具を模した形状のような他の形状のコントローラが使用されてもよい。このように、筐体の形状が他の形状であるコントローラのみならず、第1コントローラ14または/および第2コントローラ16をアタッチメントに装着したコントローラも別のコントローラとして使用することができる。たとえば、自動車、航空機などのハンドルを模した形状のアタッチメント、モデルガンの形状のアタッチメント、剣を模した形状のアタッチメントなどを用いることができる。
この第1実施例では、アプリケーションプログラムからオペレーティングシステムに振動データが入力される。そして、オペレーティングシステムから第1コントローラ14、第2コントローラ16および第3コントローラ120に振動データが送信される。アプリケーションプログラムおよびオペレーティングシステムは、それぞれ、CPU20によって実行されるため、CPU20は、アプリケーション実行部として機能するとともに、オペレーティングシステム実行部として機能する。また、オペレーティングシステム実行部は、本体機能を制御するため、CPU20は、振動モータ82b、102b、162b、164bの振動を制御する振動制御部としても機能する。
上述したように、この第1実施例では、ゲーム装置10の使用態様に応じて使用されるコントローラが異なる場合があり、また、第1コントローラ14および第2コントローラ16に振動データを送信するときの通信方法が異なる場合がある。このため、この第1実施例では、振動制御を有するアプリケーションの開始時または所定のイベントが発生したときなどのタイミングで、ゲーム装置10の使用態様を判別するようにしてある。
ただし、ゲーム装置10の使用態様を判別する前に、第1コントローラ14および第2コントローラ16が本体装置10aに装着されているかどうかが判断されるとともに、第1コントローラ14および第2コントローラ16が本体装置10aから分離されている場合には、本体装置10aと第1コントローラ14、第2コントローラ16および別のコントローラ(第3コントローラ120)との間でペアリング処理が実行される。
たとえば、ゲームのアプリケーションプログラムが実行される場合には、プレイヤは、ゲーム装置10の使用態様の設定画面(図示せず)を参照して、第1態様−第4態様のいずれの使用態様でゲームをプレイするのかを選択する。また、第4態様においては、第3コントローラ120などの別のコントローラの種類を選択できる場合もある。この選択結果が本体機能を制御するオペレーティングシステムに通知される。ただし、アプリケーションプログラムの種類によっては、予め決定されたゲーム装置10の使用態様または/および第3コントローラ120などの別のコントローラの使用の有無が強制的に選択されることもある。
第1態様でゲーム装置10が使用される場合には、CPU20は、振動データを有線通信で第1コントローラ14および第2コントローラ16に送信する。また、第2態様または第3態様でゲーム装置10が使用される場合には、CPU20は、振動データを無線通信で第1コントローラ14および第2コントローラ16に送信する。第1コントローラ14では、コントローラ制御部70からの振動データに従って振動モータ82bが駆動され、第2コントローラ16では、コントローラ制御部90からの振動データに従って振動モータ102bが駆動される。振動データに含まれる振幅を示す電圧値の印加電圧が振動モータ82bおよび振動モータ102bに印加される。ただし、振動データで指定する電圧値に対して振幅が一意に決まるわけではなく、実際の振動の振幅は、振動の周波数や装置の筐体の特性によって定まる。
また、第4態様でゲーム装置10が使用され、別のコントローラとして第3コントローラ120が使用される場合には、CPU20は、振動データを無線通信で第3コントローラ120に送信する。第3コントローラ120では、コントローラ制御部150からの振動データに従って振動モータ162bおよび振動モータ164bが駆動される。第4態様においても、振動データに含まれる振幅を示す電圧値の印加電圧が振動モータ162bおよび振動モータ164bに印加される。
上述したゲーム装置10(本体装置10a)では、或るゲームのアプリケーション(ゲームプログラム)を実行した場合に、仮想空間内(仮想ゲーム空間内)で進行するゲームをプレイすることができる。詳細な説明および図示は省略するが、この第1実施例では、仮想空間は、3次元の仮想空間である。図11には、この第1実施例のゲームにおいて、表示装置12に表示されるゲーム画面200の一例が表示される。詳細な説明は省略するが、仮想空間内に、草木(花も含む)オブジェクト、地形オブジェクトおよび建物オブジェクトのような仮想オブジェクトが設けられるとともに、プレイヤオブジェクト(プレイヤキャラクタ)202が配置される。また、仮想空間内には、敵オブジェクト(敵キャラクタ)204および村人オブジェクト(村人キャラクタ)などのノンプレイヤオブジェクト(ノンプレイヤキャラクタ)も配置される。図示は省略するが、仮想空間内には、アイテムオブジェクト(アイテムキャラクタ)が配置されることもある。
たとえば、プレイヤオブジェクト202は、プレイヤの操作に従って、仮想空間内に設定されたマップ内を自由に移動することができる。プレイヤオブジェクト202は、仮想空間内において、敵オブジェクト204と闘ったり、アイテムを取得したり、アイテムを使用したり、目的の場所ないし位置に到達したりして、最終的な目的を達成する。
また、プレイヤオブジェクト202の体力値が無くなった場合、または、プレイヤオブジェクト202が敵オブジェクト204に倒された場合には、ゲームオーバーになる。ただし、プレイヤオブジェクト202の残機を設定しておき、一定回数のミスを許容するようにしてもよい。かかる場合には、プレイヤオブジェクト202の残機数が0になった場合に、ゲームオーバーになる。
ゲーム中では、仮想空間内に振動を発生するキャラクタないしオブジェクト(以下、「振動源のオブジェクト」ということがある)が配置(出現)され、振動源のオブジェクトを含むゲーム画面200が表示されることがある。振動源は、ゲーム画面200に表示されている場合および所定のイベントが発生した場合に振動を発生させる。
たとえば、敵オブジェクト204が振動源であれば、敵オブジェクト204が仮想空間内に配置(出現)され、ゲーム画面200に表示されている状態において、敵オブジェクト204が咆哮した(大きい声を発した)場合および敵オブジェクト204が足踏みした場合などに、振動が発生される。また、爆弾オブジェクトのような所定のアイテムが振動源であれば、爆弾オブジェクトが仮想空間内に配置(出現)され、ゲーム画面200に表示されている状態において、爆弾オブジェクトが爆発した場合に、振動が発生される。
ただし、これらは一例であり、敵オブジェクト204およびアイテム以外のキャラクタないしオブジェクトが振動源のオブジェクトに設定されている場合もある。
振動が発生される場合には、振動データがゲームのアプリケーションプログラムで生成されまたは読み出され、オペレーティングシステムに送信される。オペレーティングシステムは、アプリケーションプログラムからの振動データに従って振動モータ82b、102b、162b、164bを駆動する。
この第1実施例では、図12に示すように、仮想空間内に、振動源VSのオブジェクトおよび振動源VSで発生された振動を受容する受容部(第1実施例では、受容部Lおよび受容部R)が設定される。ただし、振動源VSのオブジェクトはゲームの開発者等によって予め設定されており、また、受容部はゲームの開発者等によって決定された方法でゲーム空間内に設定される。
図12は仮想空間を真上から見た場合の図解図である。仮想空間にはプレイヤオブジェクト202および敵オブジェクト204に加えて、仮想カメラ210が配置される。ただし、図12では、敵オブジェクト204を円で示してある。なお、図12では、振動の発生および受容に関係の無いキャラクタおよびオブジェクトを省略してある。
図12に示すように、プレイヤオブジェクト202の前方に敵オブジェクト204が配置され、プレイヤオブジェクト202の後方に仮想カメラ210が配置される。仮想カメラ210の左右方向における画角の左端と右端を破線で示してある。図12では、三人称視点のゲームの場合について示してあるが、一人称視点のゲームの場合には、プレイヤオブジェクト202の頭部の位置が仮想カメラ210の位置に一致するように、プレイヤオブジェクト202および仮想カメラ210が配置される。以下で説明する内容は、一人称視点のゲームの場合にも、同様に適用可能である。
上述したように、この第1実施例では、第1態様−第3態様でゲーム装置10を使用する場合には、第1コントローラ14および第2コントローラ16が使用され、2つの振動モータ82b、102bがそれぞれ振動される。また、第4態様でゲーム装置10を使用し、第3コントローラ120を使用する場合にも、2つの振動モータ162b、164bがそれぞれ振動される。
したがって、仮想空間には、左右二つの受容部Lおよび受容部Rが設定され、振動源VSで発生された振動が受容部Lおよび受容部Rのそれぞれで受容され、受容部Lおよび受容部Rのそれぞれで受容された振動が使用時に左右に配置される2つの振動部で発生される。第1態様−第3態様では、受容部Lで受容される振動が振動部82(第1コントローラ14)で発生され、受容部Rで受容される振動が振動部102(第2コントローラ16)で発生される。また、第4態様で、第3コントローラ120が使用される場合には、受容部Lで受容された振動が左側振動部162(左側のグリップ)で発生され、受容部Rで受容された振動が右側振動部164(右側のグリップ)で発生される。
図12に示す例では、振動源VSは、仮想空間における敵オブジェクト204の行動によって生じる振動を発生するものであり、敵オブジェクト204の位置に設定される。受容部Lは、プレイヤオブジェクト202の左手の位置に設定され、受容部Rは、プレイヤオブジェクト202の右手の位置に設定される。つまり、第1実施例では、振動源VS、受容部Lおよび受容部Rは、それぞれ点で表され、図12においては、それぞれ×印で示してある。このことは、後述する図14、図15、図19、図21および図22に示される×印について同じである。
また、受容部Lで受容される振動の大きさは、振動源VSと受容部Lの間における仮想空間の状況(空間状況または空間状態)に応じて振動源VSで発生される振動が減衰することにより決定される。同様に、受容部Rで受容される振動の大きさは、振動源VSと受容部Rの間における空間状況または空間状態(以下、単に「空間状況」という)に応じて振動源VSで発生される振動が減衰されることにより決定される。
ここで、本明細書においては、空間状況とは、振動源VSと受容部Lおよび受容部Rのそれぞれの距離dを意味する。図12に示すように、振動源VSと受容部Lの距離dを距離dと表記し、振動源VSと受容部Rの距離dを距離dと表記することがある。さらに、空間状況は、振動源VSと受容部Lおよび受容部Rのそれぞれの間の伝達媒体の情報を含んでもよい。また、第1実施例においては、振動は仮想空間内において空中を伝達されるものとする。
この第1実施例では、振動源VSからの振動は、距離dの2乗に反比例して減衰され、受容部Lおよび受容部Rにそれぞれ伝達される。上述したように、振動データは周波数の値と振幅を示す電圧値の組についてのデータあるため、一例として、電圧値が距離dの2乗に反比例して低減される。低減される電圧値、すなわち、コントローラ(14,16,120)に送信される振動データの電圧値は、数式1に従って算出される。数1において、Vは低減された電圧値であり、cは減衰係数であり、Voは振動源VSで発生される振動に対応する振動データの電圧値(低減される前の電圧値)である。
[数式1]
V=c×Vo
図13は距離dに応じた減衰係数cの変化を示すグラフである。図13において、実線で示すように、この第1実施例では、減衰係数cは距離dの2乗に反比例して変化される。
なお、物理法則に従う場合には、上記のように、減衰係数cは距離dの2乗に反比例する値であるが、仮想空間においては、減衰係数cは距離dに反比例して減衰されてもよい。
また、上記のように、減衰係数cが距離dの2乗に反比例させると、距離dが小さい場合に、減衰係数cが1を超えてしまう。このため、減衰係数cが1を超えないように、別の方法で算出されてもよい。
たとえば、距離dに調整値(たとえば、1)を加えるようにしてもよい。かかる場合には、図13の一点鎖線で示すように、距離dの2乗に反比例させる場合の波形を距離dが1だけ左にずれた波形となり、距離dが小さくても、減衰係数cが1を超えることがない。
また他の方法としては、減衰係数cが1でクランプされるようにしてもよい。かかる場合には、図13の点線で示すように、距離dの2乗に反比例させるが、距離dが1未満では、減衰係数cが1で固定される。
さらに他の方法としては、減衰係数cが1を超えない別の関数で算出されるようにしてもよい。たとえば、別の関数は、指数関数exp(−d)であり、図13の破線で示すように、距離dの大きさに拘わらず1を超えることはない。
また、振動は単に減衰されるのみならず、距離dが所定値(限界距離D)を超える場合には、振動を発生させない(減衰係数cを計算しない)ようにしてもよい。図13を用いて説明した減衰係数cは距離dが無限大に近づいても0にはならず、減衰係数cが所定値(たとえば、0.1)を下回るとほぼ変化がないため、距離dの違いに応じた振動を提示するのは困難である。また、減衰係数cを計算しないでよい範囲を設けることで、計算処理負荷を軽減することもできる。
ただし、限界距離Dを超えたところで急に減衰係数cが0になってしまうと、振動が急に途絶えることとなり、プレイヤは違和感ないし不連続感を覚えるため、このような不都合を回避するように、限界距離Dにおいて0になるような単調減少関数(たとえば、1−d/D)の値を減衰係数cに乗算した減衰係数を採用してもよい。
なお、この第1実施例では、振動データの周波数の値に関係無く、減衰係数cを用いて振幅を示す電圧値を低減させるようにしてあるが、これに限定される必要はない。周波数が大きい場合には、周波数が低い場合に比べて、振動の減衰量(減衰率)が大きいため、周波数が高くなるにつれて、振動の減衰率が大きくなるような別の関数の値を減衰係数cに乗算した減衰係数を採用するようにしてもよい。この場合、上記の単調減少関数の値がさらに乗算されてもよい。
また、振動データは受容部Lおよび受容部Rのそれぞれについて算出されるため、減衰係数cも受容部Lおよび受容部Rのそれぞれについて算出される。以下、各減衰係数cを区別する必要がある場合には、受容部Lについての振動データ(以下、「左側振動データ」と呼ぶことがある)を算出するための減衰係数cを減衰係数cと表記し、受容部Rについての振動データ(以下、「右側振動データ」と呼ぶことがある)を算出するための減衰係数cを減衰係数cと表記ことにする。
以上のように、図12(および後述する図14)に示す例では、受容部Lおよび受容部Rは、プレイヤオブジェクト202の左手および右手の位置に基づいて設定される。なお、図12に示す例では、受容部Lおよび受容部Rは、プレイヤオブジェクト202の左手および右手と同じ位置に設定されるが、これに限定される必要はない。たとえば、後述する図14の例のように、受容部Lおよび受容部Rは、プレイヤオブジェクト202の左手および右手の位置に基づいて決まる、左手および右手の位置以外の位置に設定しても良い。
また、プレイヤオブジェクト202が左手および右手を有していない場合には、プレイヤオブジェクトの左右に備わった所定の部位を左手および右手とみなして、当該部位の位置に基づいて受容部Lおよび受容部Rを設定してもよい。たとえば、プレイヤオブジェクト202が自動車を模したオブジェクトである場合には、左側および右側の車輪(前輪または後輪)の位置に、または、左側および右側のヘッドライトの位置に受容部Lおよび受容部Rを設定してもよい。
また、プレイヤオブジェクト202が剣のオブジェクトまたは/および盾のオブジェクトを持つ場合には、プレイヤオブジェクト202の手の描画処理が省かれることがある。かかる場合には、プレイヤオブジェクト202の左手および右手に相当する位置に受容部Lおよび受容部Rを設定してもよい。具体的には、剣のオブジェクトの柄に対応する位置に受容部L(または受容部R)を設定し、盾のオブジェクトの持ち手に対応する位置に受容部R(または受容部L)を設定してもよい。
図14は仮想空間における受容部Lおよび受容部Rの設定方法の他の例を示す図解図である。図14に示す例では、プレイヤオブジェクト202の左手および右手の位置を用いて、左手および右手の位置以外の位置に、受容部Lおよび受容部Rが設定される場合の例が示される。
なお、図14に示す例では、上述したように、プレイヤオブジェクト202の手の位置に設定される受容部Lおよび受容部Rを受容部L1および受容部R1と表記し、プレイヤオブジェクト202の手以外の位置に設定される受容部Lおよび受容部Rには、別の数字を付加して表記することにより、異なる位置に設定される受容部Lおよび受容部Rを識別するようにしてある。以下、第1実施例においては、異なる位置に設定される受容部Lおよび受容部Rを識別可能に表記する場合も同様に、付加される数字を変えることにする。
図14に示すように、仮想カメラ210の位置(視点位置)とプレイヤオブジェクト202の左手の位置を通る直線上の位置に受容部L2が設定され、視点位置とプレイヤオブジェクト202の右手の位置を通る直線上の位置に受容部R2が設定されてもよい。たとえば、受容部L2の位置は、視点位置とプレイヤオブジェクト202の左手の位置の中点であり、受容部R2の位置は、視点位置とプレイヤオブジェクト202の右手の位置の中点であるが、中点に限定される必要はない。
また、図14に示すように、プレイヤオブジェクト202の左手の位置と右手の位置を通る直線上であり、左手の位置および右手の位置以外の位置に、受容部L3および受容部R3が設定されてもよい。図14に示す例では、受容部L3は仮想カメラ210の画角の左端よりも外側(左側)に設定され、受容部R3は仮想カメラ210の画角の右端よりも外側(右側)に設定される。ただし、これは一例であり、受容部L3は画角の左端の線上の位置に設定されてもよいし、画角の左端とプレイヤオブジェクト202の左手の間の位置に設定されてもよい。同様に、受容部R3は画角の右端の線上の位置に設定されてもよいし、画角の右端とプレイヤオブジェクト202の右手の間の位置に設定されてもよい。
なお、上述したように、プレイヤオブジェクト202が自動車の場合には、自動車の左右の車輪または左右のヘッドライトの位置に基づいて受容部L2、L3および受容部R2、R3が設定されてもよい。
図15は仮想空間における受容部Lおよび受容部Rの設定方法のその他の例を示す図解図である。図15に示す例では、プレイヤオブジェクト202の左手および右手の位置に関係なく、受容部Lおよび受容部Rが設定される場合の例が示される。具体的には、図15に示す例では、プレイヤオブジェクト202の向きまたは仮想カメラ210の向きに応じて、受容部Lおよび受容部Rが設定される。
図15に示すように、プレイヤオブジェクト202の顔または胴体が向いている方向と直交する面上であり、プレイヤオブジェクト202を基準にした左右の点に受容部L4および受容部R4が設定されてもよい。図15に示す例では、受容部L4は仮想カメラ210の画角の左端とプレイヤオブジェクト202の間の位置に設定され、受容部R4は仮想カメラ210の画角の右端とプレイヤオブジェクト202の間の位置に設定される。ただし、受容部L4は画角の左端の線上に設定されてもよいし、画角の左端の外側(左側)に設定されてもよい。また、受容部R4は画角の右端の線上に設定されてもよいし、画角の右端の外側(右側)に設定されてもよい。
なお、上述したように、プレイヤオブジェクト202が自動車または飛行機の場合には、自動車または飛行機の進行方向に直交する面上であり、自動車および飛行機を基準にした左右の点に受容部L4および受容部R4が設定されてもよい。
また、図15に示すように、仮想カメラ210が向いている方向(カメラ方向)と直交する面上であり、仮想カメラ210の位置(視点位置)を基準とした左右の点に受容部L5および受容部R5が設定されてもよい。図15に示す例では、受容部L5は仮想カメラ210の画角の左端の外側(左側)の位置に設定され、受容部R5は仮想カメラ210の画角の右端の外側(右側)の位置に設定される。ただし、受容部L5は、仮想カメラ210の画角の左端の線上に設定されてもよいし、仮想カメラ210の画角の左端と仮想カメラ210の間の位置に設定されてもよい。また、受容部R5は、仮想カメラ210の画角の右端の線上に設定されてもよいし、仮想カメラ210の画角の右端と仮想カメラ210の間の位置に設定されてもよい。プレイヤオブジェクト202の手の位置または向いている方向に基づいて受容部Lおよび受容部Rを設定する場合には、プレイヤオブジェクト202が感じる振動をプレイヤに感じさせることができ、プレイヤ自身がプレイヤオブジェクト202になったような印象を持たせて、ゲームの臨場感を高めることができる。また、仮想カメラ210の向きに基づいて受容部Lおよび受容部Rを設定する場合には、プレイヤオブジェクト202を後ろから操作しているプレイヤ自身が感じる振動を表現することで、プレイヤ自身が仮想空間内にいるかのような印象を持たせることができる。
図15に示す例によって受容部Lおよび受容部Rの位置を設定することによって、プレイヤオブジェクト202の手の位置が高速に変化して、距離d、dが短時間で頻繁に変化するような場合であっても、計算処理の負荷を大きくすることなく受容部Lおよび受容部Rの位置を算出できる。また、仮想カメラ210の向きに基づいた受容部Lおよび受容部Rの設定は、プレイヤオブジェクト202の位置や向きが頻繁に変化する場合にも計算処理の負荷を大きくすることなく受容部Lおよび受容部Rの位置を算出できる。また、計算処理の負荷低減の目的ではなく、ゲームの開発者等がプレイヤに持たせたい印象に合わせて、プレイヤオブジェクト202の手の位置に拘わらず受容部Lおよび受容部Rを設定する場合もある。
以上のように、図12、図14および図15を用いて、受容部Lおよび受容部Rを仮想空間に設定する複数の例を説明した。一般的に、受容部Lと受容部Rの距離が長くなると、距離dと距離dが同じでない場合には、結果として、振動モータ82b、162bに与えられる左側振動データと振動モータ102b、164bに与えられる右側振動データの差異が大きくなり、ステレオ効果が強調されると考えられる。ステレオ効果をどの程度強調または緩和するかについては、ゲーム体験とのバランスを考慮して、ゲーム毎にまたはゲーム内のシーン毎に最適な位置に受容部Lおよび受容部Rが設定される。
図16は図3に示したRAM22のメモリマップ300の一例を示す図解図である。図16に示すように、RAM22は、プログラム記憶領域302およびデータ記憶領域304を含む。プログラム記憶領域302には、各種プログラムが記憶される。各種プログラムは、ゲーム装置10に電源が投入された後の適宜のタイミングでフラッシュメモリ24からその一部または全部が読み出されてRAM22に記憶される。
なお、各種プログラムは、フラッシュメモリ24に代えて、ゲーム装置10に着脱可能なメモリまたは光ディスクから取得されても良いし、ゲーム装置10が他の情報処理装置(コンピュータ)との通信機能を備える場合には、当該他の情報処理装置から、直接的にまたはネットワークを介して取得(ダウンロード)されてもよい。
図16に示すように、プログラム記憶領域302には、メイン処理プログラム302a、画像生成プログラム302b、画像表示プログラム302c、通信プログラム302d、操作検出プログラム302e、使用態様判別プログラム302f、振動制御プログラム302gおよびアプリケーションプログラム302hなどが記憶される。
メイン処理プログラム302aは、ゲーム装置10の動作のメインルーチンを処理するためのプログラム(オペレーティングシステム)である。画像生成プログラム302bは、ポリゴンデータやテクスチャデータなどのデータを含む画像生成用データ304bを用いて、表示装置12に表示する画像に対応する画像データを生成するためのプログラムである。画像表示プログラム302cは、画像生成プログラム302bに従って生成した画像データを表示装置12に出力するためのプログラムである。
通信プログラム302dは、第1コントローラ14、第2コントローラ16および第3コントローラ120などのコントローラとの間でデータの送受信(通信)を行うためのプログラムである。操作検出プログラム302eは、第1コントローラ14、第2コントローラ16および第3コントローラ120などのコントローラからの操作データを検出し、操作データバッファ304aに記憶するためのプログラムである。ただし、各コントローラから送信される操作データには、当該コントローラを個別に識別可能な情報が付加される。
使用態様判別プログラム302fは、ゲーム装置10の使用態様を判別するためのプログラムである。ただし、使用態様判別プログラム302fは、第3コントローラ120を使用するかどうかについても判別する。つまり、使用態様判別プログラム302fでは、第1コントローラ14、第2コントローラ16およびこれらと異なる別のコントローラ(第3コントローラ120)の使用態様が判別される。
振動制御プログラム302gは、アプリケーションプログラム302hからの要求に応じて、本体装置10aに通信可能に接続されたコントローラ(14,16,120)に設けられる振動モータ82b、102b、162b、164b(14c,16c,120c)を駆動制御するためのプログラムである。この第1実施例では、第1態様−第3態様の場合には、アプリケーションプログラム302hから第1コントローラ14の振動モータ82bを駆動させるための左側振動データ304jがオペレーティングシステムに入力されるとともに、第2コントローラ16の振動モータ102bを駆動させるための右側振動データ304kがオペレーティングシステムに入力される。また、第4態様の場合には、アプリケーションプログラム302hから第3コントローラ120の振動モータ162bを駆動させるための左側振動データ304jがオペレーティングシステムに入力されるとともに、第3コントローラ120の振動モータ164bを駆動させるための右側振動データ304kがオペレーティングシステムに入力される。
アプリケーションプログラム302hは、上述したように、ゲームなどのアプリケーションについてのプログラムである。ただし、この第1実施例では、アプリケーションプログラム302hの実行中に、振動を提示することがオペレーティングシステムに要求(指示)されるとともに、振動データがオペレーティングシステムに入力されることがある。ただし、振動を提示する場合には、振動源VSで発生された振動に対応する振動データ(振動源振動データ304g)から、受容部Lおよび受容部Rのそれぞれに伝達される振動に対応する左側振動データ304jおよび右側振動データ304kが数式1に従って算出される。このとき、振動源VSと受容部Lの距離dおよび振動源VSと受容部Rとの距離dが算出され、受容部Lに伝達される振動を算出するための減衰係数cおよび受容部Rに伝達される振動を算出するための減衰係数cも算出される。また、この明細書においては、アプリケーションプログラム302iは、本体機能には含まれないプログラムを意味することにする。
なお、図示等は省略するが、プログラム記憶領域302には、メッセージの送受信を行う他の本体機能についてのプログラムも記憶される。また、プログラム記憶領域302には、アプリケーションプログラム302hとは異なる他のアプリケーションプログラムが記憶されることもある。
データ記憶領域304には、操作データバッファ304a、画像生成用データ304b、使用態様データ304c、第3コントローラ使用データ304d、振動源位置データ304e、受容部位置データ304f、振動源振動データ304g、距離データ304h、減衰係数データ304i、左側振動データ304jおよび右側振動データ304kなどが記憶される。
操作データバッファ304aは、操作検出プログラム302eによって検出された操作データを時系列に従って記憶する。画像生成用データ304bは、表示装置12に表示する画像(ゲーム画面200などの画面)に対応する画像データを生成するためのポリゴンデータおよびテクスチャデータなどのデータである。
使用態様データ304cは、使用態様判別プログラム302fに従って判別されたゲーム装置10の使用態様についてのデータである。たとえば、使用態様データ304cは、2ビットのレジスタで構成され、第1態様が判別されるとレジスタに“00”が設定され、第2態様が判別されるとレジスタに“01”が設定され、第3態様が判別されるとレジスタに“10”が設定され、第4態様が判別されるとレジスタに“11”が設定される。
第3コントローラ使用データ304dは、第3コントローラ120を使用するかどうかを判別するためのデータである。振動源位置データ304eは、アプリケーションプログラム302hを実行することによって仮想空間に出現(配置)された振動源VSの位置(座標)についてのデータである。受容部位置データ304fは、アプリケーションプログラム302hを実行することによって仮想空間に設定された受容部Lおよび受容部Rのそれぞれについての位置(座標)についてのデータである。
振動源振動データ304gは、アプリケーションプログラム302hが実行されることによって振動源VSから発生される振動に対応する振動データである。距離データ304hは、振動源VSと受容部Lとの距離dについてのデータおよび振動源VSと受容部Rとの距離dについてのデータである。減衰係数データ304iは、受容部Lに伝達される振動、すなわち、振動モータ82bまたは振動モータ162bを駆動する左側振動データ304jを算出するための減衰係数cについてのデータおよび受容部Rに伝達される振動、すなわち、振動モータ102bまたは振動モータ164bを駆動する右側振動データ304kを算出するための減衰係数cについてのデータである。
左側振動データ304jは、振動モータ82bまたは振動モータ162bを駆動させるための振動データである。右側振動データ304kは、振動モータ102bまたは振動モータ164bを駆動するための振動データである。
図示は省略するが、データ記憶領域304には、ゲーム装置10の動作を制御するために、必要な他のデータが記憶されたり、必要なカウンタ(タイマ)が設けられたりする。
図17は図3に示したCPU20のゲーム全体処理についての限定しない一例を示すフロー図である。たとえば、ゲーム全体処理は、ゲームのアプリケーションプログラム(ここでは、アプリケーションプログラム302h)に従って実行される。なお、この第1実施例では、基本的には、図17に示すフロー図の各ステップの処理をCPU20が実行するものとして説明するが、CPU20以外のプロセッサや専用回路が一部のステップを実行するようにしてもよい(図18も同様)。
プレイヤによってアプリケーションプログラム302hの実行が指示されると、CPU20は、ゲーム全体処理を開始し、ステップS1で、初期処理を実行する。初期処理では、たとえば、CPU20は、ゲーム画面200を生成および表示するための仮想空間を構築し、この仮想空間に登場するプレイヤオブジェクト202および敵オブジェクト204等の各キャラクタないし各オブジェクトを初期位置に配置する。また、CPU20は、ゲーム処理(S5)で用いる各種パラメータの初期値を設定する。
なお、詳細な説明は省略するが、ゲーム全体処理の開始に先立って、ゲーム装置10の使用態様が判別される。ただし、ゲーム装置10の使用態様が判別される前に、第1コントローラ14および第2コントローラ16が本体装置10aに装着されているかどうかが判断され、第1コントローラ14および第2コントローラ16が本体装置10aから分離されている場合には、本体装置10aと第1コントローラ14、第2コントローラ16および別のコントローラ(第3コントローラ120)との間でペアリング処理が実行される。ゲーム装置10の使用態様が判別されると、判別された使用態様に応じた使用態様データ304cがデータ記憶領域304に記憶される。また、第3コントローラ120の使用の有無に応じた第3コントローラ使用データ304dがデータ記憶領域304に記憶される。
続いて、CPU20は、ステップS3で、コントローラ(14,16,120)から送信されてくる操作データを取得し、ステップS5で、ゲーム処理を実行する。たとえば、ゲーム処理では、操作データに従ってプレイヤオブジェクト202を移動させるなどの任意のアクションを実行する。また、アプリケーションプログラム302hに従って敵オブジェクト204を移動させるなどの任意のアクションを実行する。さらに、必要に応じて、アイテムを仮想空間に出現させる(配置する)。さらにまた、必要に応じて、振動源VSから振動を発生させる。
次のステップS7では、CPU20およびGPUは、表示装置12に表示するためのゲーム画像を生成および表示する。簡単に説明すると、CPU20およびGPUは、ステップS5のゲーム処理の結果を表すデータおよび画像生成用データ304bをRAM22から読み出し、VRAMにゲーム画像データを生成し、表示装置12に出力する。
続いて、ステップS9では、振動源VSから振動を発生させるかどうかを判断する。ステップS9で“NO”であれば、つまり、振動源VSから振動を発生させない場合には、ステップS23に進む。一方、ステップS9で“YES”であれば、つまり、振動源VSから振動を発生する場合には、ステップS11で、振動源振動データ304gを生成する。ここでは、CPU20は、振動源VSから発生される振動に対応する振動データ(振動源振動データ304g)をデータ記憶領域304に記憶する。上述したように、振動源振動データ304gはCPU20によって生成されてもよいし、予めフラッシュメモリ24に記憶された振動源振動データ304gがCPU20によって読み出されてもよい。また、このとき、仮想空間における振動源VSの位置のデータ(振動源位置データ304e)もデータ記憶領域304に記憶される。
続くステップS13では、受容部Lおよび受容部Rを設定する。受容部Lおよび受容部Rは、上記のいずれかの方法で仮想空間に設定される。このとき、受容部Lの位置および受容部Rの位置のそれぞれについてのデータ(受容部位置データ304f)がデータ記憶領域304に記憶される。
次にステップS15では、振動源VSと受容部Lの距離dおよび振動源VSと受容部Rの距離dを算出する。このとき、距離dおよび距離dについてのデータ(距離データ304h)がデータ記憶領域304に記憶される。続いて、ステップS17では、減衰係数cを算出する。ここでは、受容部Lについての減衰係数cおよび受容部Rについての減衰係数cが算出され、減衰係数cおよび減衰係数cのデータ(減衰係数データ304i)がデータ記憶領域304に記憶される。
そして、ステップS19では、数1に基づいて、左側振動データ304jおよび右側振動データ304kを算出する。つまり、振動源VSで発生され受容部Lおよび受容部Rに伝達される振動に対応する振動データが算出される。算出された左側振動データ304jおよび右側振動データ304kは、データ記憶領域304に記憶される。
次のステップS21では、左側振動データ304jおよび右側振動データ304kを振動制御部(オペレーティングシステム)に送信する。このとき、コントローラ(14,16,120)を振動させることの指示も振動制御部に送信される。そして、ステップS23では、ゲームを終了するかどうかを判断する。ステップS23の判断は、たとえば、ゲームオーバーになったか否か、あるいは、プレイヤがゲームを中止する指示を行ったか否か等によって行われる。ステップS23で“NO”であれば、つまりゲームを終了しない場合には、ステップS3に戻る。一方、ステップS23で“YES”であれば、つまりゲームを終了する場合には、ゲーム全体処理を終了する。
図18は図3に示したCPU20の振動制御処理の限定しない一例を示すフロー図である。たとえば、CPU20は、アプリケーションプログラムから振動を発生させることを要求(指示)されると、振動制御処理を開始する。ただし、左側振動データ304jおよび右側振動データ304kのそれぞれについて、振動制御処理が並行して実行される。
図18に示すように、CPU20は、振動制御処理を開始すると、ステップS51で、アプリケーションプログラムから振動データが入力されたかどうかを判断する。ステップS51で“NO”であれば、つまり、アプリケーションプログラムから振動データが入力されていなければ、ステップS51に戻る。
一方、ステップS51で“YES”であれば、つまり、アプリケーションプログラムから振動データが入力されれば、ステップS53で、振動データ(左側振動データ304jまたは右側振動データ304k)を該当するコントローラ(14,16,120)に送信する。したがって、振動データを受信したコントローラ(14,16,120)では、振動データに従って、振動モータ(82b,102b,162b,164b)が駆動される。このため、振動モータ(82b,102b,162b,164b)は、振動信号に応じたパターンで出力(振動)する。
そして、ステップS55では、終了かどうかを判断する。ここでは、CPU20は、振動を提示する処理を有するアプリケーションが終了されたかどうか、または、当該アプリケーションにおいて振動を提示するシーンが終了されたかどうかを判断する。ステップS55で“NO”であれば、つまり、終了でなければ、ステップS51に戻る。一方、ステップS55で“YES”であれば、つまり、終了であれば、振動制御処理を終了する。
この第1実施例によれば、振動源から左右二つの受容部に伝達される振動を、振動源と左側の受容部の間の空間状況に基づいて算出するとともに、振動源と右側の受容部の間の空間状況に基づいて算出して、左右の振動部をそれぞれ振動させるので、仮想空間における多様な状況に応じた振動を提示することができる。
また、第1実施例によれば、左右の振動部をそれぞれ振動させるので、振動についてのステレオ効果を得ることができる。したがって、プレイヤは、ゲーム画面およびゲーム音声を視聴するのみならず、振動を知覚することにより、ゲームへの高い没入感を得ることができる。
なお、この第1実施例では、距離の2乗に反比例して振動を減衰させるため、電圧値を低減(変化)させるようにしてあるが、これに限定される必要はない。仮想空間の状況に応じて、周波数を変化させるようにしてもよい。たとえば、プレイヤオブジェクト202が振動源VSに接近する(距離が短い)場合には、周波数を高くし、プレイヤオブジェクト202が振動源VSから遠ざかる(距離が長い)場合には、周波数を低くしてもよい。また、プレイヤオブジェクト202の状態が変化される場合にも、周波数を変化させることもできる。たとえば、プレイヤオブジェクト202の大きさが変化する場合には、プレイヤオブジェクト202が大きくなったときに、周波数が低くされ、プレイヤオブジェクト202が小さくなったときに、周波数が高くしてもよい。また、プレイヤオブジェクト202が、敵オブジェクト204の攻撃を受けたときに、ダメージを受ける通常状態と、ダメージを受けない無敵状態との間で変化される場合には、無敵状態に変化したときに、通常状態のときよりも周波数が高くされ、通常状態に変化されたときに、元の周波数に戻すようにしてもよい。ただし、周波数の変化は上述した場合と高低が逆に変化されてもよい。このように、プレイヤオブジェクト202の状態に応じて振動データを変化させることもできる。このため、上述したように、周波数に応じて振幅の減衰率を変える場合には、プレイヤオブジェクト202の状態に応じて変化させることができる。つまり、プレイヤオブジェクト202の状態に応じて減衰率(変化率)を変えることができると言える。
また、振動源VSとしての敵オブジェクト204の状態が変化される場合には、振動源VSから発生される振動に対応する振動データが変化されてもよい。振動データを変化させる方法は、プレイヤオブジェクト202の状態が変化される場合と同様である。
このように、プレイヤオブジェクト202または/および敵オブジェクト204の状態に応じて、振動データが変化される。つまり、仮想空間に配置されるオブジェクトの状態に応じて振動データが変化される。このため、仮想空間に配置されるオブジェクトの状態についても、空間状況と言うことができる。
さらに、この第1実施例では、振動源VSと受容部(L、R)の距離(d、d)の2乗に反比例するように振動源VSで発生された振動を減衰させるようにしたが、これに限定される必要はない。たとえば、プレイヤオブジェクト202の左手に受容部L1が設定され、プレイヤオブジェクト202の右手に受容部R1が設定され、プレイヤオブジェクト202が剣のオブジェクトのような棒状のオブジェクトを右手(または左手)に持つ状況において、棒状のオブジェクトが振動源VSに触れる場合には、距離に反比例して振動源VSで発生された振動が減衰される。つまり、伝達媒体には、振動源VSと受容部Lの間に介在される物(オブジェクト)および振動源VSと受容部Rの間に介在される物(オブジェクト)が含まれる。ただし、伝達媒体は、振動源と受容部の間に介在される物(オブジェクト)に限定される必要はない。仮想空間において、気象を表現する場合には、気温または/および気圧の変化、大気中の現象などによって、減衰率を変化させてもよい。したがって、伝達媒体には、仮想空間における大気が含まれることがある。たとえば、大気中の現象は、雲の発生、降雨および風の発生のいずれか1つまたは2つ以上である。
さらにまた、この第1実施例では、第1態様−第4態様でゲーム装置10を使用する場合について説明したが、第2態様−第4態様では、本体装置10aとコントローラ(14、16、120)が通信可能に接続されて使用される。また、かかる場合には、本体装置10aを充電台を介してテレビジョン受像機と接続することにより、ゲーム画面およびゲーム音声をテレビジョン受像機から出力することもできる。したがって、第2態様−第4態様でゲーム装置10が使用される場合には、本体装置10aおよびコントローラ(14、16、120)を備えるゲームシステムが構成されているとも言える。また、上記のとおり、本体装置10aは振動制御装置としても機能するため、ゲームシステムは振動制御システムとしても機能する。
[第2実施例]
第2実施例のゲーム装置10は、左側振動データおよび右側振動データの算出方法が異なる以外は、第1実施例と同じであるため、異なる内容について説明することとし、重複した説明は省略する。
図19は第2実施例において振動源VSから受容部Lおよび受容部Rに伝達される振動に対応する振動データの算出方法を説明するための図解図である。第2実施例においても、第1実施例と同様に、振動源VSは、敵オブジェクト204などの所定のキャラクタないしオブジェクトに設定される。また、第2実施例においても、第1実施例と同様に、受容部Lおよび受容部Rはプレイヤオブジェクト202の手の位置(L1、R1)、プレイヤオブジェクト202の手の位置に基づく位置(L2、R2)、プレイヤオブジェクト202の手の位置に基づく他の位置(L3、R3)、プレイヤオブジェクト202の向き(プレイヤオブジェクト202の顔または胴体の向き)に基づく位置(L4、R4)または仮想カメラ210の向きに基づく位置(L5、R5)に設定される。なお、図19では、プレイヤオブジェクト202は省略してある。
この第2実施例では、振動源VSおよび受容部Lおよび受容部Rが設定されると、受容部Lの位置と受容部Rの位置との中点CPが算出される。振動源VSと中点CPを結ぶ直線が、受容部Lと受容部Rを通る直線に対してなす角度θに応じて減衰係数cが算出される。図19には、受容部Lについての減衰係数cを算出する場合の例が示される。この場合、図19からも分かるように、中点CPから受容部Lを見た方向が0°に設定され、中点CPから受容部Rを見た方向が180°に設定される。
以下に示す条件(1)−(3)をすべて満たす関数fが減衰係数cの算出に用いられる。
(1)定義域が[0°,180°]である。
(2)定義域におけて、関数fは広義の単調減少関数である。
(3)f(0°)≦1であり、かつ、f(180°)≧0である。
図20は、条件(1)−(3)を満たす関数f、f、fで算出した場合の角度θに対する減衰係数cの変化を示すグラフが示される。図20では、関数fで算出される減衰係数cの変化は実線で示され、関数fで算出される減衰係数cの変化は点線で示され、関数fで算出される減衰係数cの変化は一点鎖線で示される。ただし、関数fは数式で示され、関数fは数式で示され、関数fは数式で示される。
[数式
(θ)=1−θ/360
図20からも分かるように、関数fは、一次関数であり、最も単純な例と言える。この関数fを用いた場合には、振動源VSで発生される振動が角度θの大きさで受容部Lと受容部Rに分散されるように、減衰係数cが算出される。
[数式
(θ)=max(1−θ/150,0)
関数fは角度θが所定値(第2実施例では、150°)を超える場合には減衰係数cを0にするようにしてある。第3態様および第4態様の場合には、たとえば、左側の振動モータ82b、162bの振動が筐体を通して右手にも伝達される。このような使用態様においては、角度θが所定値を超える場合には、減衰係数cを0にすることにより、振動が発生される側とは反対側の手に振動が伝わり難くされる。つまり、左右の振動の差が強調される。
[数式
Figure 0006832712
図20からも分かるように、関数fは減衰係数cがS字状に変化する関数である。角度θが90°付近でグラフの傾きが急であるため、たとえば、プレイヤオブジェクト202の正面付近で振動源VSの位置が横方向に変化した場合に、その変化が強調されて、振動が伝達されるという利点がある。
図示は省略するが、受容部Rについての減衰係数cを算出する場合には、中点CPから受容部Rを見た方向が0°に設定され、中点CPから受容部Lを見た方向が180°に設定される。減衰係数cの算出方法は、減衰係数cの算出方法と同じである。
第2実施例では、関数f−fのいずれかに従って算出された減衰係数cおよび減衰係数cを用いて、左側振動データ304jおよび右側振動データ304kが算出される。したがって、厳密には、距離dおよび距離dを算出して左側振動データ304jおよび右側振動データ304kを算出する場合とは異なるが、第2実施例においても、近似的に振動のステレオ効果が得られる。
第2実施例によれば、振動源と2つの受容部の距離を算出しない場合であっても、仮想空間における多様な状況に応じた振動を提示することができる。
[第3実施例]
第3実施例のゲーム装置10は、振動源VSおよび受容部Lおよび受容部Rの設定方法が異なる以外は、第1実施例と同じであるため、異なる内容について説明することとし、重複した説明は省略する。
振動源VSは、点ではなく、線、面または立体である場合も考えられる。同様に、受容部Lおよび受容部Rもまた、点ではなく、線、面または立体である場合も考えられる。図21に示す例では、振動源V1と振動源V2が設けられ、プレイヤオブジェクト202の左手に受容部Lが設定され、プレイヤオブジェクト202が右手に持つ剣などの細長い棒状の道具(オブジェクト)206に受容部Rが設定される。
振動源VS1は長方形または直方体のキャラクタないしオブジェクトであり、この場合、振動源VS1と左手に設定された受容部Lの距離dL1は振動源VS1と受容部Lとの最短距離に決定され、減衰係数cL1が求められる。同様に、振動源VS1と受容部Rとの距離dR1は、振動源VS1とオブジェクト206の最短距離に決定され、減衰係数cR1が求められる。
また、振動源VS2は点であり、受容部Lも点であるため、実施例1と同様に、振動源VS2と受容部Lの距離dL2を用いて減衰係数cL2が求められる。振動源VS2と受容部Rとの距離dR2は、振動源VS2とオブジェクト206の最短距離に決定され、減衰係数cR2が求められる。
図21に示す例では、振動源VSの形状とゲーム画面200に描画されるオブジェクトの形状が同じ場合について説明してあるが、これらの形状は同じである必要はない。たとえば、振動を発生するオブジェクトとして敵オブジェクト204が描画される場合には、振動源VSとしての敵オブジェクト204の形状は、円、四角形、球または直方体(立方体)に近似されてよい。同様に、受容部Lおよび受容部Rの形状と、ゲーム画面200に描画される受容部Lおよび受容部Rに対応するキャラクタないしオブジェクトの形状も一致する必要はない。たとえば、オブジェクト206は、直線、長方形、長円または棒(直方体)の形状に近似されてよい。つまり、計算処理を軽減するために、振動源VSおよび受容部Lおよび受容部Rの形状は単純化することができる。
したがって、振動源VS1のように、厚みのある物体であっても、第1実施例で示したように、振動源VSを一点だけで近似する場合もある。第1実施例では、振動源VSを敵オブジェクト204の位置に近似してあるが、敵オブジェクト204の中心または重心の位置に近似することもできる。また、図21に示す例では、振動源VS1が長方形または直方体であるため、長方形のうち受容部(L,R)に最も近い辺の中心または直方体のうち受容部に最も近い面の中心点に、振動源VSを近似することもできる。また、幾何学的な意味の中心に限定される必要は無く、ゲームの文脈を考慮した上で、プレイヤの視点から見た場合の代表点として認識され易い点に振動源VSの位置が近似されてもよい。たとえば、振動源VSが敵オブジェクト204である場合には、敵オブジェクト204を見たときの特徴的な点(たとえば、口または鼻)を振動源VSの位置に近似することができる。
振動源VS1と振動源VS2が同時に振動を発生しない場合には、第1態様−第3態様では、振動源VS1からの振動に基づいて算出された左側振動データ304jが振動モータ82bに与えられるとともに、振動源VS1からの振動に基づいて算出された右側振動データ304kが振動モータ102bに与えられる。また、第1態様−第3態様では、振動源VS2からの振動に基づいて算出された左側振動データ304jが振動モータ82bに与えられるとともに、振動源VS2からの振動に基づいて算出された右側振動データ304kが振動モータ102bに与えられる。
また、振動源VS1と振動源VS2が同時に振動を発生しない場合には、第4態様では、振動源VS1からの振動に基づいて算出された左側振動データ304jが振動モータ162bに与えられるとともに、振動源VS1からの振動に基づいて算出された右側振動データ304kが振動モータ164bに与えられる。また、第4態様では、振動源VS2からの振動に基づいて算出された左側振動データ304jが振動モータ162bに与えられるとともに、振動源VS2からの振動に基づいて算出された右側振動データ304kが振動モータ164bに与えられる。
一方、振動源VS1と振動源VS2が同時に振動を発生する場合には、第1態様−第3態様では、振動源VS1からの振動に基づいて算出された左側振動データと振動源VS2からの振動に基づいて算出された左側振動データが合成された左側振動データ304jが振動モータ82bに与えられるとともに、振動源VS1からの振動に基づいて算出された右側振動データと振動源VS2からの振動に基づいて算出された右側振動データが合成された右側振動データ304kが振動モータ102bに与えられる。
また、振動源VS1と振動源VS2が同時に振動を発生する場合には、第4態様では、振動源VS1からの振動に基づいて算出された左側振動データと振動源VS2からの振動に基づいて算出された左側振動データが合成された左側振動データ304jが振動モータ162bに与えられるとともに、振動源VS1からの振動に基づいて算出された右側振動データと振動源VS2からの振動に基づいて算出された右側振動データが合成された右側振動データ304kが振動モータ164bに与えられる。
たとえば、振動データを合成する場合には、2つの振動データに含まれる周波数の平均値が算出されるとともに、2つの振動データに含まれる電圧値の平均値が算出される。ただし、振動データには、周波数と電圧値の組が複数含まれることがあるため、この場合には、各振動データに含まれる周波数と電圧値の組を周波数の大きさに従う順番(昇べきの順または降べきの順)に並べて、同じ順番の組同士の平均値が算出される。合成の方法は一例であり、限定される必要はない。振動データがアナログの振動信号(振動波形)である場合には、振動波形同士を合成するようにしてもよい。
ここでは、2つの振動源VS1および振動源VS2が同時に振動を発生する場合について説明してあるが、振動源VSが3つ以上の場合も同様である。
第3実施例においても、第1実施例と同様に、仮想空間における多様な状況に応じた振動を提示することができる。
なお、第1実施例および第2実施例では省略したが、振動源VSが複数存在する場合については、第3実施例で示した場合と同様に、複数の振動源VSからの振動を合成して、左側振動データ304jおよび右側振動データ304kが算出される。
[第4実施例]
第4実施例のゲーム装置10は、振動源VSから伝達される振動に二重に減衰係数を掛けるようにした以外は、第1実施例と同じであるため、異なる内容について説明することとし、重複した説明は省略する。
図22に示すように、第4実施例では、受容部Lおよび受容部Rとは別に、プレイヤ自身の左手および右手に相当する位置に、受容部L0および受容部R0が設定される。ただし、プレイヤの左手および右手に相当する位置は、次のように設定される。仮想のプレイヤ220の頭部が仮想カメラ210の位置に配置され、仮想のプレイヤ220の頭部(顔)の向きは仮想カメラ210の方向(視線方向)と同じに設定される。また、仮想のプレイヤ220の頭部と胴体の向きは同じである。さらに、仮想のプレイヤ220の左手は、胴体の左斜め前方であり、頭部よりも下方に設定され、仮想のプレイヤ220の右手は、胴体の右斜め前方であり、頭部よりも下方に設定される。
この第4実施例では、プレイヤオブジェクト202の左手に設定された受容部Lに伝達される振動がさらに仮想のプレイヤ220の左手に設定された受容部L0に伝達される。受容部Lに伝達される振動に対応する振動データは第1実施例で示した場合と同様に算出され、さらに、受容部L0に伝達される振動に対応する振動データは受容部Lを振動源VSと仮定して、第1実施例で示した場合と同様に算出される。つまり、振動源VSで発生される振動に対応する振動データに、振動源VSと受容部Lの距離dに基づいて算出された減衰係数cが乗算された後に、受容部Lと受容部L0の距離dL0に基づいて算出された減衰係数cL0が乗算され、左側振動データ304jが算出される。
同様に、プレイヤオブジェクト202の右手に設定された受容部Rに伝達される振動がさらに仮想のプレイヤ220の右手に設定された受容部R0に伝達される。受容部Rに伝達される振動に対応する振動データは第1実施例で示した場合と同様に算出され、さらに、受容部R0に伝達される振動に対応する振動データは受容部Rを振動源VSと仮定して、第1実施例で示した場合と同様に算出される。つまり、振動源VSで発生される振動に対応する振動データに、振動源VSと受容部Rの距離dに基づいて算出された減衰係数cが乗算された後に、受容部Rと受容部R0の距離dR0に基づいて算出された減衰係数cR0が乗算され、右側振動データ304kが算出される。
第1態様−第3態様では、上記のように算出された左側振動データ304jに従って振動モータ82bが駆動されるとともに、上記のように算出された右側振動データ304kに従って振動モータ102bが駆動される。また、第4態様では、上記のように算出された左側振動データ304jに従って振動モータ162bが駆動されるとともに、上記のように算出された右側振動データ304kに従って振動モータ164bが駆動される。
なお、第1実施例で示したように、仮想カメラ210の位置に基づいて受容部L5および受容部R5が設定される場合には、受容部L0および受容部R0は、受容部L5および受容部R5と同様の位置にされるため、上記のように、2段階で減衰係数cを乗算することには意味がない。
第4実施例においても、第1実施例と同様に、仮想空間における多様な状況に応じた振動を提示することができる。第4実施例のようにすることで、1段階目の計算で、プレイヤオブジェクトが感じる振動を表現しつつ、2段階目の計算により、プレイヤ自身が仮想空間にいてプレイヤオブジェクトを操作している印象を感じさせることができる。
なお、第4実施例の変形は、第3実施例にも適用することができる。
また、第4実施例では省略したが、振動源VSが複数存在する場合については、第3実施例で示した場合と同様に、複数の振動源VSからの振動を合成して、左側振動データおよび右側振動データが算出される。
なお、上述の各実施例では、アプリケーションから入力される振動データは、周波数を示す値および振幅を示す電圧値の組についてのデータであるが、上述したように、振動信号(振動波形)そのものを振動データとすることもできる。かかる場合には、本体装置に内蔵されるCPU20は、振動信号から振動データを生成するようにしてもよい。たとえば、振動信号を所定時間幅(たとえば、5msec〜数10msec)の区間に区切り、各区間について周波数分解し、たとえば、周波数分解の結果に含まれる周波数と振幅との組み合わせのうち、主たる成分が抽出され、抽出された成分が各区間における代表の値として決定する。その結果、振動信号に対応して、周波数を示す値と振幅を示す電圧値との組み合わせからなるデータの集合が振動データとして得られる。ただし、周波数と振幅の組み合わせのデータの集合を振動データとしてもよい。
また、上述の各実施例では、ゲーム装置を第1態様−第4態様で使用し、2つの振動部を同時に振動させる場合について説明したが、これに限定される必要はない。たとえば、第2態様でゲーム装置を使用する場合には、プレイヤは第1コントローラまたは第2コントローラを使用することができる。また、第4態様でゲーム装置を使用する場合には、第3コントローラとは異なり、振動部(振動モータ)を1つだけ備える場合もある。これらの場合には、受容部を1つ設定し、1つの振動源から1つの受容部に伝達される振動が振動部で発生されるようにしてもよい。また、複数の振動源から1つの受容部に伝達される振動を合成した振動が振動部で発生されるようにしてもよい。
さらに、上述の各実施例では、ゲーム装置を第1態様−第4態様で使用し、一人のプレイヤがゲームをプレイする場合について説明したが、これに限定される必要はない。ゲーム装置(本体装置)には、最大で8つのコントローラを接続することができるため、ゲーム装置を第2態様−第4態様で使用する場合には、第3コントローラのような別のコントローラをさらに接続して、複数のプレイヤでゲームのようなアプリケーションをプレイ(操作)することもできる。複数人でゲームをプレイする場合には、プレイヤ毎に使用するコントローラが選択される。このため、アプリケーションプログラムは、プレイヤ毎に使用するコントローラを識別する。また、この場合、アプリケーションプログラムは、各プレイヤのプレイヤオブジェクトが仮想空間に配置され、各プレイヤのプレイヤオブジェクトに対応して設定された受容部(L、R)に伝達される振動に対応する振動データ(左側振動データおよび右側振動データ)をそれぞれ算出し、オペレーティングシステムに、振動を提示するプレイヤが使用するコントローラに振動を発生させることを指示するとともに、算出した左側振動データおよび右側振動データを該当するコントローラに送る(入力)する。
また、上述の各実施例では、3次元の仮想空間に、振動源および受容部が設定される場合について説明したが、2次元の仮想空間に、振動源および受容部が設定されてもよい。この場合、たとえば、図12に示したように、プレイヤオブジェクト202および敵オブジェクト204を上方から見るように、それぞれ2次元の仮想空間に配置し、プレイヤオブジェクト202および敵オブジェクト204を上方から見た2次元のゲーム画面を表示装置12に表示する。また、敵オブジェクト204の位置に振動源VSが設定され、プレイヤオブジェクト202の左手の位置に受容部Lが設定され、プレイヤオブジェクト202の右手の位置に受容部Rが設定される。かかる場合にも、振動源VSと受容部Lとの距離dおよび振動源VSと受容部Rとの距離dが算出され、振動源VSから受容部Lに伝達される振動が距離dに基づいて減衰され、受容部Rに伝達される振動が距離dに基づいて減衰される。
なお、上述の各実施例で示した具体的な装置の外観および数値は一例であり、実際の製品に応じて適宜変更可能である。また、図17および図18に示したフロー図は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。
10 …ゲーム装置
10a …本体装置
12 …表示装置
14,16,110,120 …コントローラ
14a,16a,120a …操作ボタン
20 …CPU
22 …RAM
24 …フラッシュメモリ
26 …コントローラ通信部
28,30,72,92 …端子
70,90,150 …コントローラ制御部
74,94,152 …通信モジュール
76,96,154 …メモリ
78,98,156 …操作ボタン群
80,100,158,160(14b,16b,120b) …アナログスティック
82,102,162,164 …振動部
82b,102b,162b,164b(14c,16c,120c) …振動モータ

Claims (13)

  1. 仮想空間内に振動源を配置する振動源配置部と、
    前記振動源から発生される振動に対応する振動データを生成する振動データ生成部と、
    前記振動源からの振動を受容する受容部を前記仮想空間内に設定する受容部設定部と、
    前記振動源配置部によって配置された振動源と前記受容部設定部によって設定された受容部との間の空間状況に基づいて、前記振動データ生成部によって生成された振動データを変化させる変化部と、
    前記変化部によって変化された振動データに従って振動部を振動させる振動制御部と、
    使用時に左右に配置される2つの振動部を備え、
    前記受容部設定部は、前記2つの振動部の各々に対応して前記仮想空間に2つの前記受容部を設定し、
    前記変化部は、前記振動源と一方の前記受容部との間の前記空間状況に基づいて、前記振動データ生成部によって生成された振動データを変化させた第1変化振動データを生成するとともに、前記振動源と他方の前記受容部との間の前記空間状況に基づいて、前記振動データ生成部によって生成された振動データを変化させた第2変化振動データを生成し、
    前記振動制御部は、前記第1変化振動データに従って一方の前記振動部を振動させ、前記第2変化振動データに従って他方の前記振動部を振動させ、
    前記2つの受容部は、仮想のプレイヤの左右に合わせて配置され、
    前記受容部設定部は、前記受容部とは別の受容部を前記仮想のプレイヤに設定し、
    前記変化部は、前記振動源と前記受容部との間の空間状況に基づいて変化させた振動データを、前記受容部と前記別の受容部との間の空間状況に基づいてさらに変化させる、振動制御システム。
  2. 前記振動源は前記仮想空間内に配置されたオブジェクトに対応する、請求項1記載の振動制システム。
  3. プレイヤの操作に応じて、少なくとも前記仮想空間を移動するプレイヤオブジェクトを当該仮想空間に配置するプレイヤオブジェクト配置部をさらに備え、
    前記受容部設定部は、前記プレイヤオブジェクト配置部によって配置されたプレイヤオブジェクトに関連して、前記受容部を設定する、請求項1または2記載の振動制御システム。
  4. 前記振動源配置部は、前記仮想空間に複数の前記振動源を配置し、
    前記振動データ生成部は、前記複数の振動源の各々から発生される振動に対応する振動データを生成し、
    前記変化部は、前記複数の振動源の各々と前記受容部との間の空間状況に基づいて、各々の前記振動データを変化させ、
    前記変化された前記各々の振動データを合成する合成部をさらに備え、
    前記振動制御部は、前記合成部によって合成された振動データ基づいて振動部を振動させる、請求項1ないし3のいずれかに記載の振動制御システム。
  5. 前記変化部は、前記2つの受容部のうちの一方の前記受容部に受容される振動と他方の前記受容部に受容される振動との差が大きくなるように前記振動データを変化させる、請求項ないしのいずれかに記載の振動制御システム。
  6. 前記空間状況は、前記振動源と前記受容部との間の媒体を含み、
    前記変化部は、前記媒体に応じて前記振動データの変化率を変える、請求項1ないしのいずれかに記載の振動制御システム。
  7. 前記振動データは、振動波形の周波数と振幅の値の組についてのデータであり、
    前記変化部は、前記空間状況に応じて、前記周波数および前記振幅の少なくとも一方を変化させる、請求項1なしいのいずれかに記載の振動制御システム。
  8. 前記変化部は、前記周波数毎に、前記振幅の変化率を変化させる、請求項記載の振動制御システム。
  9. 前記変化部は、前記プレイヤオブジェクトの状態に応じて前記振動データを変化させる、請求項3記載の振動制御システム。
  10. 前記変化部は、前記プレイヤオブジェクトの状態に応じて前記振動データの変化率を変える、請求項3記載の振動制御システム。
  11. 仮想空間内に振動源を配置する振動源配置部と、
    前記振動源から発生される振動に対応する振動データを生成する振動データ生成部と、
    前記振動源からの振動を受容する受容部を前記仮想空間内に設定する受容部設定部と、
    前記振動源配置部によって配置された振動源と前記受容部設定部によって設定された受容部との間の空間状況に基づいて、前記振動データ生成部によって生成された振動データを変化させる変化部と、
    前記変化部によって変化された振動データに従って振動部を振動させる振動制御部と、
    使用時に左右に配置される2つの振動部を備え、
    前記受容部設定部は、前記2つの振動部の各々に対応して前記仮想空間に2つの前記受容部を設定し、
    前記変化部は、前記振動源と一方の前記受容部との間の前記空間状況に基づいて、前記振動データ生成部によって生成された振動データを変化させた第1変化振動データを生成するとともに、前記振動源と他方の前記受容部との間の前記空間状況に基づいて、前記振動データ生成部によって生成された振動データを変化させた第2変化振動データを生成し、
    前記振動制御部は、前記第1変化振動データに従って一方の前記振動部を振動させ、前記第2変化振動データに従って他方の前記振動部を振動させ、
    前記2つの受容部は、仮想のプレイヤの左右に合わせて配置され、
    前記受容部設定部は、前記受容部とは別の受容部を前記仮想のプレイヤに設定し、
    前記変化部は、前記振動源と前記受容部との間の空間状況に基づいて変化させた振動データを、前記受容部と前記別の受容部との間の空間状況に基づいてさらに変化させる、振動制御装置。
  12. 使用時に左右に配置される2つの振動部を備える振動制御装置によって実行される振動制御プログラムであって、
    前記振動制御装置のプロセッサに、
    仮想空間内に振動源を配置する振動源配置ステップと、
    前記振動源から発生される振動に対応する振動データを生成する振動データ生成ステップと、
    前記振動源からの振動を受容する受容部を前記仮想空間内に設定する受容部設定ステップと、
    前記振動源配置ステップにおいて配置した振動源と前記受容部設定ステップにおいて設定した受容部との間の空間状況に基づいて、前記振動データ生成ステップにおいて生成した振動データを変化させる変化ステップと、
    前記変化ステップにおいて変化させた振動データに従って振動部を振動させる振動制御ステップを実行させ、
    前記受容部設定ステップは、前記2つの振動部の各々に対応して前記仮想空間に2つの前記受容部を設定し、
    前記変化ステップは、前記振動源と一方の前記受容部との間の前記空間状況に基づいて、前記振動データ生成ステップにおいて生成した振動データを変化させた第1変化振動データを生成するとともに、前記振動源と他方の前記受容部との間の前記空間状況に基づいて、前記振動データ生成ステップにおいて生成した振動データを変化させた第2変化振動データを生成し、
    前記振動制御ステップは、前記第1変化振動データに従って一方の前記振動部を振動させ、前記第2変化振動データに従って他方の前記振動部を振動させ、
    前記2つの受容部は、仮想のプレイヤの左右に合わせて配置され、
    前記受容部設定ステップは、前記受容部とは別の受容部を前記仮想のプレイヤに設定し、
    前記変化ステップは、前記振動源と前記受容部との間の空間状況に基づいて変化させた振動データを、前記受容部と前記別の受容部との間の空間状況に基づいてさらに変化させる、振動制御プログラム。
  13. 使用時に左右に配置される2つの振動部を備える振動制御装置の振動制御方法であって、
    (a)仮想空間内に振動源を配置するステップと、
    (b)前記振動源から発生される振動に対応する振動データを生成するステップと、
    (c)前記振動源からの振動を受容する受容部を前記仮想空間内に設定するステップと、
    (d)前記ステップ(a)において配置した振動源と前記ステップ(c)において設定した受容部との間の空間状況に基づいて、前記ステップ(b)において生成した振動データを変化させるステップと、
    (e)前記ステップ(d)において変化させた振動データに従って振動部を振動させるステップを含み、
    前記ステップ(c)は、前記2つの振動部の各々に対応して前記仮想空間に2つの前記受容部を設定し、
    前記ステップ(d)は、前記振動源と一方の前記受容部との間の前記空間状況に基づいて、前記振動データ生成ステップにおいて生成した振動データを変化させた第1変化振動データを生成するとともに、前記振動源と他方の前記受容部との間の前記空間状況に基づいて、前記振動データ生成ステップにおいて生成した振動データを変化させた第2変化振動データを生成し、
    前記ステップ(e)は、前記第1変化振動データに従って一方の前記振動部を振動させ、前記第2変化振動データに従って他方の前記振動部を振動させ、
    前記2つの受容部は、仮想のプレイヤの左右に合わせて配置され、
    前記ステップ(c)は、前記受容部とは別の受容部を前記仮想のプレイヤに設定し、
    前記ステップ(d)は、前記振動源と前記受容部との間の空間状況に基づいて変化させた振動データを、前記受容部と前記別の受容部との間の空間状況に基づいてさらに変化させる、振動制御方法。
JP2017003757A 2017-01-13 2017-01-13 振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法 Active JP6832712B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017003757A JP6832712B2 (ja) 2017-01-13 2017-01-13 振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法
US15/867,785 US10639546B2 (en) 2017-01-13 2018-01-11 Vibration control system, vibration control apparatus, storage medium and vibration control method
EP18151335.9A EP3348313B1 (en) 2017-01-13 2018-01-12 Vibration control system, vibration control program and vibration control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017003757A JP6832712B2 (ja) 2017-01-13 2017-01-13 振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法

Publications (2)

Publication Number Publication Date
JP2018112953A JP2018112953A (ja) 2018-07-19
JP6832712B2 true JP6832712B2 (ja) 2021-02-24

Family

ID=60957185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017003757A Active JP6832712B2 (ja) 2017-01-13 2017-01-13 振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法

Country Status (3)

Country Link
US (1) US10639546B2 (ja)
EP (1) EP3348313B1 (ja)
JP (1) JP6832712B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11045723B1 (en) 2014-11-18 2021-06-29 Razer (Asia-Pacific) Pte. Ltd. Gaming controller for mobile device and method of operating a gaming controller
JP6975191B2 (ja) * 2019-02-27 2021-12-01 任天堂株式会社 ゲームプログラム、ゲーム装置、ゲームシステム、及びゲーム方法
US10953320B2 (en) 2019-03-18 2021-03-23 Motorola Mobility Llc Electronic device with reversible railed attachment connector system
JP7220616B2 (ja) 2019-04-19 2023-02-10 任天堂株式会社 ゲームプログラム、ゲームシステム、ゲーム装置およびゲーム制御方法
USD1053950S1 (en) * 2020-09-29 2024-12-10 Takumi Saito Remote control for gaming
USD953437S1 (en) * 2020-12-30 2022-05-31 Shenzhen Qixiong Technology Co., Ltd Game controller
CN115591225B (zh) * 2021-07-08 2023-12-08 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备和存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005085981A1 (en) * 2004-02-03 2005-09-15 Nokia Corporation Method and device for implementing vibration output commands in mobile terminal devices
US8547401B2 (en) * 2004-08-19 2013-10-01 Sony Computer Entertainment Inc. Portable augmented reality device and method
JP4473685B2 (ja) 2004-09-01 2010-06-02 任天堂株式会社 ゲーム装置およびゲームプログラム
JP5116208B2 (ja) * 2004-11-19 2013-01-09 株式会社ジャパンディスプレイイースト 画像信号表示装置
FR2902914A1 (fr) * 2006-06-27 2007-12-28 France Telecom Procede de codage de parametres d'animation d'un avatar, procede de decodage, signal et dispositifs correspondants
US8098235B2 (en) * 2007-09-28 2012-01-17 Immersion Corporation Multi-touch device having dynamic haptic effects
MY165469A (en) * 2011-06-28 2018-03-23 Sun Patent Trust Image decoding method, image coding method, image decoding apparatus, image coding apparatus, and image coding and decoding apparatus
KR101328054B1 (ko) * 2011-08-09 2013-11-08 엘지전자 주식회사 실감 진동을 발생시키는 영상표시장치 및 실감 진동 구현방법
KR102024006B1 (ko) * 2012-02-10 2019-09-24 삼성전자주식회사 진동 장치간 진동 전달을 제어하는 장치 및 방법
JP6264542B2 (ja) * 2014-01-30 2018-01-24 任天堂株式会社 情報処理装置、情報処理プログラム、情報処理システム、および情報処理方法
JP6322830B2 (ja) * 2014-05-09 2018-05-16 任天堂株式会社 情報処理装置、情報処理プログラム、情報処理システム、および情報処理方法
US9588586B2 (en) * 2014-06-09 2017-03-07 Immersion Corporation Programmable haptic devices and methods for modifying haptic strength based on perspective and/or proximity
JP6341417B2 (ja) * 2014-06-10 2018-06-13 任天堂株式会社 振動生成システム、振動生成プログラム、および振動生成方法
JP6445921B2 (ja) 2015-04-21 2018-12-26 任天堂株式会社 振動信号生成プログラム、振動信号生成システム、振動信号生成装置、振動信号生成方法、およびデータ出力プログラム

Also Published As

Publication number Publication date
EP3348313B1 (en) 2022-03-02
JP2018112953A (ja) 2018-07-19
EP3348313A1 (en) 2018-07-18
US10639546B2 (en) 2020-05-05
US20180200620A1 (en) 2018-07-19

Similar Documents

Publication Publication Date Title
JP6832712B2 (ja) 振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法
JP6588421B2 (ja) 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法
JP6877995B2 (ja) 振動制御システム、振動制御装置、振動制御プログラムおよび振動制御方法
CN107533233B (zh) 用于增强现实的系统和方法
US9884248B2 (en) Display control method for head-mounted display (HMD) and image generation device
JP6843530B2 (ja) ゲームシステム、方法、およびゲームプログラム
EP3343323B1 (en) Information processing program, information processing apparatus, information processing system, and information processing method
JP6147486B2 (ja) ゲームシステム、ゲーム処理制御方法、ゲーム装置、および、ゲームプログラム
JP2021501496A (ja) ロボットユーティリティ及びインターフェースデバイス
US9219961B2 (en) Information processing system, computer-readable non-transitory storage medium having stored therein information processing program, information processing control method, and information processing apparatus
US8628391B2 (en) Video game with helper role or obstructer role for second player having separate display
US10471346B2 (en) Information processing system, non-transitory storage medium having stored therein information processing program, information processing apparatus, and information processing method
JP6910809B2 (ja) シミュレーションシステム、プログラム及びコントローラ
JP6653293B2 (ja) 情報処理システム、情報処理プログラム、情報処理装置、および、情報処理方法
JP6055651B2 (ja) 情報処理システム、情報処理プログラム、情報処理制御方法、および情報処理装置
US10758819B2 (en) Game system, non-transitory storage medium having stored therein game program, information processing apparatus, and game control method
US10661163B2 (en) Video game with haptic signal that is disabled based on losing contact with a surface
JPWO2020026443A1 (ja) 触覚表現用振動制御システム、触覚表現用振動発生装置、触覚表現用振動制御装置、および触覚表現用振動制御方法
JP6829608B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
JP6973967B2 (ja) 情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
JP6842368B2 (ja) 情報処理プログラム、情報処理システム、情報処理装置、および情報処理方法
WO2023286191A1 (ja) 情報処理装置および駆動データ生成方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180205

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201218

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210202

R150 Certificate of patent or registration of utility model

Ref document number: 6832712

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250