(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-15
(45)【発行日】2023-11-24
(54)【発明の名称】情報処理システム、情報処理プログラム、情報処理方法、および、情報処理装置
(51)【国際特許分類】
A63F 13/285 20140101AFI20231116BHJP
A63F 13/23 20140101ALI20231116BHJP
G06F 3/01 20060101ALI20231116BHJP
【FI】
A63F13/285
A63F13/23
G06F3/01 560
(21)【出願番号】P 2020116256
(22)【出願日】2020-07-06
(62)【分割の表示】P 2019158232の分割
【原出願日】2019-08-30
【審査請求日】2022-06-09
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】青木 孝文
(72)【発明者】
【氏名】成瀬 文覚
(72)【発明者】
【氏名】浜上 宏樹
【審査官】前地 純一郎
(56)【参考文献】
【文献】特開2018-206012(JP,A)
【文献】特開2015-066292(JP,A)
【文献】特開2018-110653(JP,A)
【文献】特開2016-170589(JP,A)
【文献】特開2018-020088(JP,A)
【文献】中田一紀 外2名,ハプティックアクチュエータを利用した対話型音階提示システム,Human Interface 2018 TRANSBORDER [DVD-ROM] ヒューマンインタフェースシンポジウム2018 論文集,2018年09月07日,p.447~450
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-13/98
A63F 9/24
(57)【特許請求の範囲】
【請求項1】
振動子を備えるゲームコントローラと、当該ゲームコントローラと通信可能な装置とを含む情報処理システムであって、
振動に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数および/または振幅を示す第1変数と、当該期間に関する第2変数とを変数とするモデル関数を記憶する関数記憶部と、
前記第1変数の値と、前記第2変数の値とを決定する変数決定部と、
決定された前記第1変数の値と、決定された前記第2変数の値とを前記モデル関数に適用することによって得られる周波数および/または振幅の時間変化を示す関数によって規定される振動パターンを示す振動情報を生成する生成部と、
前記振動情報に基づいて前記振動子の振動を制御する振動制御部とを備える、情報処理システム。
【請求項2】
前記関数記憶部は、互いに異なる周波数および/または振幅の時間変化のモデルを示す複数種類のモデル関数を記憶し、
前記変数決定部は、前記複数種類のモデル関数のうち1つを指定する関数指定情報をさらに決定し、
前記生成部は、決定された前記第1変数の値と、決定された前記第2変数の値とを、決定された前記関数指定情報により指定されるモデル関数に適用することによって得られる周波数および/または振幅の時間変化を示す関数によって規定される振動パターンを示す前記振動情報を生成する、請求項1に記載の情報処理システム。
【請求項3】
前記第2変数は、前記モデル関数が示す時間変化のモデルの開始時点から振動が開始されるまでの時間を示す開始変数を含む、請求項1または請求項2に記載の情報処理システム。
【請求項4】
前記モデル関数は、前記第2変数の値が当該モデル関数に適用されることによって振動パターンの時間長さが決定される関数である、請求項1から請求項3のいずれか1項に記載の情報処理システム。
【請求項5】
前記第1変数は、振動の振幅に関する時間変化のモデルにおける終了時点の振幅を示す終了振幅変数を含む、請求項1から請求項4のいずれか1項に記載の情報処理システム。
【請求項6】
前記変数決定部は、前記第1変数の値と前記第2変数の値との組を複数組決定し、
前記生成部は、決定された複数組の前記第1変数の値と前記第2変数の値との組に基づく複数の振動パターンのうち、振動が生じる期間が互いに重複しない複数の振動パターンを統合することによって得られる1つの振動パターンを示す前記振動情報を生成する、請求項1から請求項5のいずれか1項に記載の情報処理システム。
【請求項7】
前記振動子は、2以上である第1所定数の振動情報にそれぞれ対応する各振動波形を合成した波形で振動可能であり、
前記変数決定部は、前記第1変数の値と前記第2変数の値との組を、前記第1所定数より大きい第2所定数決定し、
前記生成部は、決定された組に基づく前記第2所定数の振動パターンのうち2以上の振動パターンを統合して1つの振動パターンとすることによって、合わせて前記第1所定数の振動パターンを示す前記第1所定数の振動情報を生成する、請求項6に記載の情報処理システム。
【請求項8】
前記モデル関数は、繰り返し変数をさらに変数とし、
前記変数決定部は、前記繰り返し変数の値をさらに決定し、
前記生成部は、決定された前記第1変数の値と、決定された前記第2変数の値とを当該モデル関数に適用することによって得られる周波数および/または振幅の時間変化を示す関数によって規定される振動パターンを、決定された前記繰り返し変数が示す回数だけ繰り返すことによって得られる繰り返し振動パターンを示す振動情報を生成する、請求項1から請求項7のいずれか1項に記載の情報処理システム。
【請求項9】
前記装置は、
前記関数記憶部と、
前記変数決定部と、
前記生成部と、
前記振動情報を前記ゲームコントローラへ送信する送信部とを備え、
前記ゲームコントローラは、
前記装置から前記振動情報を受信する受信部と、
前記受信部によって受信された前記振動情報に基づいて前記振動子の振動を制御する前記振動制御部とを備える、請求項1から請求項8のいずれか1項に記載の情報処理システム。
【請求項10】
前記装置は、
前記変数決定部と、
決定された前記第1変数の値および前記第2変数の値を前記ゲームコントローラへ送信する送信部とを備え、
前記ゲームコントローラは、
前記装置から前記第1変数の値および前記第2変数の値を受信する受信部と、
前記受信部によって受信された前記第1変数の値および前記第2変数の値に基づいて前記振動情報を生成する前記生成部と、
前記振動制御部とを備える、請求項1から請求項8のいずれか1項に記載の情報処理システム。
【請求項11】
前記ゲームコントローラは本体装置と通信可能であり、
前記装置は前記本体装置とは別の装置である、請求項1から請求項10のいずれか1項に記載の情報処理システム。
【請求項12】
振動子を備えるゲームコントローラと通信可能な装置であって、
振動に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数および/または振幅を示す第1変数と、当該期間に関する第2変数とを変数とするモデル関数を記憶する関数記憶部と、
前記第1変数の値と、前記第2変数の値とを決定する変数決定部と、
決定された前記第1変数の値と、決定された前記第2変数の値とを前記モデル関数に適用することによって得られる周波数および/または振幅の時間変化を示す関数によって規定される振動パターンを示す振動情報を生成する生成部と、
前記振動情報を前記ゲームコントローラへ送信する送信部とを備える、装置。
【請求項13】
振動子を備えるゲームコントローラと通信可能な情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記情報処理装置は、振動に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数および/または振幅を示す第1変数と、当該期間に関する第2変数とを変数とするモデル関数を記憶し、
前記情報処理プログラムは、
前記第1変数の値と、前記第2変数の値とを決定する変数決定手段と、
決定された前記第1変数の値と、決定された前記第2変数の値とを前記モデル関数に適用することによって得られる周波数および/または振幅の時間変化を示す関数によって規定される振動パターンを示す振動情報を生成する生成手段として前記コンピュータを機能させ、
前記振動子は前記振動情報に基づいて制御される、情報処理プログラム。
【請求項14】
振動子を備えるゲームコントローラと、当該ゲームコントローラと通信可能な装置とを含む情報処理システムにおいて実行される情報処理方法であって、
前記情報処理システムは、振動に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数および/または振幅を示す第1変数と、当該期間に関する第2変数とを変数とするモデル関数を記憶しており、
前記第1変数の値と、前記第2変数の値とを決定する変数決定ステップと、
決定された前記第1変数の値と、決定された前記第2変数の値とを前記モデル関数に適用することによって得られる周波数および/または振幅の時間変化を示す関数によって規定される振動パターンを示す振動情報を生成する生成ステップと、
前記振動情報に基づいて前記振動子の振動を制御する振動制御ステップとを備える、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、振動子の振動を制御する情報処理システム、情報処理プログラム、情報処理方法、および、情報処理装置に関する。
【背景技術】
【0002】
従来、装置が備える振動子の振動を制御することが行われている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
多様な振動パターンで振動子を振動させる場合、振動子を備える装置は、多数の振動パターンを記憶しておかなければならず、振動子の制御に用いられるデータ量が増加するおそれがあった。
【0005】
それ故、本発明の目的は、振動子の制御に用いられるデータ量を少なくすることが可能な情報処理システム、情報処理プログラム、情報処理方法、および、情報処理装置を提供することである。
【課題を解決するための手段】
【0006】
上記の課題を解決すべく、本発明は、以下の(1)~(13)の構成を採用した。
【0007】
(1)
本発明の一例は、振動子を備える情報処理システムである。情報処理システムは、関数記憶部と、変数決定部と、生成部と、振動制御部とを備える。関数記憶部は、振動の周波数に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数を示す周波数変数と、当該期間に関する期間変数とを変数とする周波数モデル関数を記憶する。変数決定部は、周波数変数の値と、期間変数の値とを決定する。生成部は、決定された周波数変数の値と、決定された期間変数の値とを周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを示す振動情報を生成する。振動制御部は、振動情報に基づいて振動子の振動を制御する。
【0008】
上記(1)の構成によれば、周波数モデル関数を記憶しておき、周波数モデル関数に基づいて振動情報を生成することによって、振動子の制御に用いられるデータ量を少なくすることができる。
【0009】
(2)
関数記憶部は、互いに異なる周波数の時間変化のモデルを示す複数種類の周波数モデル関数を記憶してもよい。変数決定部は、複数種類の周波数モデル関数のうち1つを指定する関数指定情報をさらに決定してもよい。生成部は、決定された周波数変数の値と、決定された期間変数の値とを、決定された関数指定情報により指定される周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを示す振動情報を生成してもよい。
【0010】
上記(2)の構成によれば、複数の周波数モデル関数を用いることによって、振動子の制御に用いられるデータ量を抑えつつ、多様な振動パターンで振動子を振動させることができる。
【0011】
(3)
期間変数は、周波数モデル関数が示す時間変化のモデルの開始時点から振動が開始されるまでの時間を示す開始変数を含んでもよい。
【0012】
上記(3)の構成によれば、振動パターンにおいて振動が開始される時点を調節することができる。上記(3)の構成を後述する(7)の構成と組み合わせる場合には、複数の振動パターンにおける振動の開始時点の間隔を容易に調整することができる。
【0013】
(4)
周波数モデル関数は、期間変数の値が当該周波数モデル関数に適用されることによって振動パターンの時間長さが決定される関数であってもよい。
【0014】
上記(4)の構成によれば、記憶装置の容量によらず、時間が長い振動パターンを生成することができる。
【0015】
(5)
関数記憶部は、振動の振幅に関する時間変化のモデルを示し、振動の振幅を示す振幅変数を変数とする振幅モデル関数をさらに記憶してもよい。変数決定部は、振幅変数の値をさらに決定してもよい。生成部は、決定された周波数変数の値と、決定された期間変数の値とを周波数モデル関数に適用することによって得られる周波数の時間変化と、決定された振幅変数の値を振幅モデル関数に適用することによって得られる振幅の時間変化とによって規定される振動パターンを示す振動情報を生成してもよい。
【0016】
上記(5)の構成によれば、周波数に加えて、振幅が異なる振動パターンを関数によって規定することができ、より多様な振動パターンで振動子を振動させることができる。
【0017】
(6)
振幅変数は、振動の振幅に関する時間変化のモデルにおける終了時点の振幅を示す終了振幅変数を含んでもよい。
【0018】
上記(6)の構成によれば、2つの連続する振動パターンにおいて振動が連続するように振動パターンを規定することができ、生成可能な振動パターンのバリエーションを増やすことができる。
【0019】
(7)
変数決定部は、周波数変数の値と期間変数の値との組を複数組決定してもよい。
生成部は、決定された複数組の周波数変数の値と期間変数の値との組に基づく複数の振動パターンのうち、振動が生じる期間が互いに重複しない複数の振動パターンを統合することによって得られる1つの振動パターンを示す振動情報を生成してもよい。
【0020】
上記(7)の構成によれば、振動パターンを統合する計算処理を容易に行うことができる。
【0021】
(8)
振動子は、2以上である第1所定数の振動情報にそれぞれ対応する各振動波形を合成した波形で振動可能であってもよい。変数決定部は、周波数変数の値と期間変数の値との組を、第1所定数より大きい第2所定数決定してもよい。生成部は、決定された組に基づく第2所定数の振動パターンのうち2以上の振動パターンを統合して1つの振動パターンとすることによって、合わせて第1所定数の振動パターンを示す第1所定数の振動情報を生成してもよい。
【0022】
上記(8)の構成によれば、変数決定部により決定された変数の組に応じて規定される振動パターンの数によらず、振動子が対応可能な数(すなわち、第1所定数)の振動情報を生成することができる。
【0023】
(9)
周波数モデル関数は、繰り返し変数をさらに変数としてもよい。変数決定部は、繰り返し変数の値をさらに決定してもよい。生成部は、決定された周波数変数の値と、決定された期間変数の値とを当該周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを、決定された繰り返し変数が示す回数だけ繰り返すことによって得られる繰り返し振動パターンを示す振動情報を生成してもよい。
【0024】
上記(9)の構成によれば、ある態様の振動が繰り返されるような振動パターンをより少ないデータ量で生成することができる。
【0025】
(10)
情報処理システムは、振動子を備える第1装置と、当該第1装置と通信を行う第2装置とを含んでもよい。第2装置は、関数記憶部と、変数決定部と、生成部と、振動情報を第1装置へ送信する送信部とを備えてもよい。第1装置は、第2装置から振動情報を受信する受信部と、受信部によって受信された振動情報に基づいて振動子の振動を制御する振動制御部とを備えてもよい。
【0026】
上記(10)の構成によれば、第2装置における、振動子の制御に用いられるデータ量を少なくすることができる。
【0027】
(11)
情報処理システムは、振動子を備える第1装置と、当該第1装置と無線通信を行う第2装置とを含んでもよい。第2装置は、変数決定部と、決定された周波数変数の値および期間変数の値を第1装置へ送信する送信部とを備えてもよい。第1装置は、受信部と、生成部と、振動制御部とを備えてもよい。受信部は、第2装置から周波数変数の値および期間変数の値を受信する。生成部は、受信部によって受信された周波数変数の値および期間変数の値に基づいて振動情報を生成する。
【0028】
上記(11)の構成によれば、変数を示す情報が第2装置から第1装置へ送信されるので、装置間の通信量および通信の頻度の少なくとも一方を低減することができる。
【0029】
(12)
第1装置および第2装置は、第1モードと第2モードとを含む複数のモードで動作することが可能であってもよい。第1モードにおいて、第2装置の送信部は、変数決定部によって決定された周波数変数の値および期間変数の値を第1装置へ送信し、第1装置は、受信部によって受信された周波数変数の値および期間変数の値に基づいて生成部によって生成される振動情報に基づいて振動子の振動を制御する。第2モードにおいて、第2装置は、所定の振動パターンを示す振動情報を第1装置へ送信し、第1装置は、第2装置から送信されてくる振動情報に基づいて振動子の振動を制御する。
【0030】
上記(12)の構成によれば、関数を用いることによって、振動子の制御に用いられるデータ量を少なくすることができるとともに、関数から生成することができない振動パターンによっても振動子を振動させることができる。
【0031】
(13)
第1装置は、返信部をさらに備えてもよい。返信部は、周波数変数の値および期間変数の値が第2装置から受信されたことに応じて、当該第2装置へ返信を行う。送信部は、周波数変数の値および期間変数の値の送信に対する第1装置からの返信が送信から所定時間以内にない場合、当該周波数変数の値および当該期間変数の値を当該第1装置へ再送信してもよい。
【0032】
上記(13)の構成によれば、第1装置と第2装置との間で無線通信を行う場合において、振動子を振動させることができる可能性を向上することができる。
【0033】
本発明の他の一例は、上記(1)~(13)における情報処理システムが備える各部のうちいくつか(例えば、変数決定部および生成部)における処理を、情報処理装置のコンピュータに実行させる情報処理プログラムであってもよい。また、本発明の他の一例は、上記(1)~(13)における情報処理システムにおいて実行される情報処理方法であってもよい。また、本発明の他の一例は、上記(1)~(13)における関数記憶部と、生成部と、振動制御部とを備える情報処理装置であって、当該情報処理装置とは異なる他の装置から、周波数変数の値と、期間変数の値とを受信する受信部を備える情報処理装置であってもよい。また、本発明の他の一例は、周波数変数の値と期間変数の値とを上記情報処理装置へ送信する他の情報処理装置であってもよい。
【発明の効果】
【0034】
本発明によれば、振動子の制御に用いられるデータ量を少なくすることができる。
【図面の簡単な説明】
【0035】
【
図1】ゲームシステムに含まれる各装置の一例を示す図
【
図2】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
【
図3】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
【
図6】本体装置2の内部構成の一例を示すブロック図
【
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
【
図9】リング型拡張装置5の内部構成の一例を示すブロック図
【
図10】リング型拡張装置5をユーザが使用する様子の一例を示す図
【
図11】振動子117の振動制御に関するリング型拡張装置5および右コントローラ4の機能的構成を示すブロック図
【
図12】本実施形態において用いられる第1の振動モデルの一例を示す図
【
図13】本実施形態において用いられる第2の振動モデルの一例を示す図
【
図15】複数の振動パターンを統合した統合振動パターンの一例を示す図
【
図17】2つの振動パターンを示す振動情報に基づいて振動子を振動させる一例を示す図
【
図18】リング型拡張装置5によって実行される振動制御処理の一例を示すフローチャート
【
図19】振動子117の振動制御に関する本体装置2および右コントローラ4の機能的構成を示すブロック図
【
図20】変形例における振動制御処理の一例を示すフローチャート
【発明を実施するための形態】
【0036】
[1.ゲームシステムの構成]
以下、本実施形態の一例に係るゲームシステムについて説明する。
図1は、ゲームシステムに含まれる各装置の一例を示す図である。
図1に示すように、ゲームシステム1は、本体装置2と、左コントローラ3および右コントローラ4と、リング型拡張装置5とを含む。
【0037】
本体装置2は、情報処理装置の一例であり、本実施形態ではゲーム機本体として機能する。本体装置2には、左コントローラ3および右コントローラ4がそれぞれ着脱可能である(
図1および
図3参照)。つまり、ユーザは、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として使用することができる(
図2参照)。また、ユーザは、本体装置2と左コントローラ3および右コントローラ4とを別体として使用することもできる(
図3参照)。なお、以下においては、本体装置2と各コントローラ3および4とをまとめて、「ゲーム装置」と呼ぶことがある。
【0038】
リング型拡張装置5は、右コントローラ4に用いられる拡張装置の一例である。リング型拡張装置5は、右コントローラ4をリング型拡張装置5に装着した状態で使用される。このように、本実施形態においては、ユーザは、右コントローラ4をリング型拡張装置5に装着した状態で使用することもできる(
図10参照)。なお、リング型拡張装置5は、右コントローラ4に限らず、左コントローラ3を自身に装着することが可能であってもよい。
【0039】
[1-1.ゲーム装置の構成]
図2は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図2に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0040】
図3は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図2および
図3に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0041】
図4は、本体装置2の一例を示す六面図である。
図4に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0042】
図4に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。なお、本体装置2は画像を外部モニタに出力することもできる。
【0043】
本体装置2は、ハウジング11の内部においてスピーカを備えている。
図4に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカの出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0044】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0045】
図4に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0046】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向(すなわち、
図5に示すy軸方向)に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0047】
右コントローラ4は、方向入力部としてアナログスティック52を備える。
図5に示すように、アナログスティック52は、ハウジング51の主面に設けられる。ユーザは、アナログスティック52を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック52を押下する入力が可能である。
【0048】
また、右コントローラ4は、各種操作ボタンを備える。右コントローラ4は、ハウジング51の主面上に4つの操作ボタン53~56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。さらに、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、ハウジング51の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン65および第2Rボタン66を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0049】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0050】
図5に示すように、右コントローラ4は、通知用LED67を備える。通知用LED67は、ユーザに対して所定の情報を通知するための通知部である。通知用LED67は、上記スライダ62に設けられ、具体的には、スライダ62の装着面(すなわち、
図5に示すx軸正方向側を向く面)に設けられる。本実施形態においては、右コントローラ4は、通知用LED67として、4つのLEDを備える。上記所定の情報は、例えば、本体装置2によって右コントローラ4に対して付された番号や、右コントローラ4の電池残量に関する情報である。
【0051】
なお、左コントローラ3は、右コントローラ4と同様、アナログスティックおよび複数の操作ボタンを備える。また、左コントローラ3は、右コントローラ4と同様、本体装置2と有線通信を行うための端子を備える。
【0052】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図4に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0053】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0054】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0055】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0056】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0057】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0058】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0059】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0060】
右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。
図7に示すように、通信制御部111は、端子64を含む各構成要素に接続される。本実施形態においては、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部111は、右コントローラ4が本体装置2に対して行う通信方法を制御する。すなわち、右コントローラ4が本体装置2に装着されている場合、通信制御部111は、端子64を介して本体装置2と通信を行う。また、右コントローラ4が本体装置2から外されている場合、通信制御部111は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部111との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
【0061】
また、右コントローラ4は、例えばフラッシュメモリ等のメモリ112を備える。通信制御部111は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ112に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0062】
右コントローラ4は、各ボタン113(具体的には、ボタン53~58、60、61、65、および66)を備える。また、右コントローラ4は、アナログスティック(
図7では「スティック」と記載する)52を備える。各ボタン113およびアナログスティック52は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部111へ出力する。
【0063】
通信制御部111は、各入力部(具体的には、各ボタン113、および、アナログスティック52)から、入力に関する情報(具体的には、操作に関する情報)を取得する。通信制御部111は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0064】
上記操作データが本体装置2へ送信されることによって、本体装置2は、右コントローラ4に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン113およびアナログスティック52に対する操作を、操作データに基づいて判別することができる。
【0065】
右コントローラ4は、振動によってユーザに通知を行うための振動子117を備える。本実施形態においては、振動子117は、本体装置2からの指令によって制御される。すなわち、通信制御部111は、本体装置2からの上記指令を受け取ると、当該指令に従って振動子117を駆動させる。ここで、右コントローラ4は、コーデック部116を備える。通信制御部111は、上記指令を受け取ると、指令に応じた制御信号をコーデック部116へ出力する。コーデック部116は、通信制御部111からの制御信号から振動子117を駆動させるための駆動信号を生成して振動子117へ与える。これによって振動子117が動作する。
【0066】
振動子117は、より具体的にはリニア振動モータである。リニア振動モータは、回転運動をする通常のモータと異なり、入力される電圧に応じて所定方向に駆動されるため、入力される電圧の波形に応じた振幅および周波数で振動をさせることができる。本実施形態において、本体装置2から右コントローラ4に送信される振動制御信号は、単位時間ごとに周波数と振幅とを表すデジタル信号であってよい。別の実施形態においては、本体装置2から波形そのものを示す情報を送信するようにしてもよいが、振幅および周波数だけを送信することで通信データ量を削減することができる。また、さらにデータ量を削減するため、そのときの振幅および周波数の数値に替えて、前回の値からの差分だけを送信するようにしてもよい。この場合、コーデック部116は、通信制御部111から取得される振幅および周波数の値を示すデジタル信号をアナログの電圧の波形に変換し、当該波形に合わせて電圧を入力することで振動子117を駆動させる。したがって、本体装置2は、単位時間ごとに送信する振幅および周波数を変えることによって、そのときに振動子117を振動させる振幅および周波数を制御することができる。なお、本体装置2から右コントローラ4に送信される振幅および周波数は、1つに限らず、2つ以上送信するようにしてもよい。その場合、コーデック部116は、受信された複数の振幅および周波数それぞれが示す波形を合成することで、振動子117を制御する電圧の波形を生成することができる。
【0067】
右コントローラ4は、電力供給部118を備える。本実施形態において、電力供給部118は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、右コントローラ4の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0068】
なお、図示しないが、左コントローラ3は、
図7に示す右コントローラ4の各構成と同様の構成を備える。
【0069】
[1-2.リング型拡張装置の構成]
図8は、リング型拡張装置の一例を示す図である。なお、
図8は、右コントローラ4が装着された状態のリング型拡張装置5を示している。本実施形態においては、リング型拡張装置5は、右コントローラ4を装着可能な拡張装置である。詳細は後述するが、本実施形態においては、ユーザは、リング型拡張装置5に力を加えて変形させるという新規な操作を行う。ユーザは、例えばエクササイズを行う感覚でリング型拡張装置5を用いたフィットネス動作を行うことによって、リング型拡張装置5に対する操作を行うことができる。
【0070】
図8に示すように、リング型拡張装置5は、環状部201と、本体部202とを備える。環状部201は、環状の形状を有する。なお、本実施形態においては、環状部201は、後述する弾性部材および台座部によって環状に形成される。本実施形態においては、環状部201は円環状である。なお、他の実施形態においては、環状部201の形状は任意であり、例えば楕円環状であってもよい。
【0071】
本体部202は、環状部201に設けられる。本体部202は、図示しないレール部を有する。レール部は、右コントローラ4を装着可能な装着部の一例である。本実施形態においては、レール部は、右コントローラ4のスライダ62(
図5参照)に対してスライド可能に係合する。スライダ62がレール部材に対して所定の直線方向(すなわち、スライド方向)に挿入されることで、レール部材に対してスライダ62が当該直線方向にスライド移動が可能な状態でレール部材がスライダ62と係合する。なお、レール部は、コントローラのスライダに対してスライド可能に係合することが可能である点で、本体装置2が有するレール部と同様である。そのため、レール部は、本体装置2が有するレール部と同様の構成であってもよい。
【0072】
本実施形態においては、右コントローラ4は、係止部63を有する(
図5参照)。係止部63は、スライダ62から側方(すなわち、
図5に示すz軸正方向)に突出して設けられる。係止部63は、スライダ62の内部の方向へ移動可能であるとともに、上記側方へ突出した状態となる向きに(例えばバネによって)付勢されている。また、レール部には、切欠きが設けられる。スライダ62がレール部の奥まで挿入された状態において、係止部63は切欠きに係止する。レール部にスライダ62が係合した状態で係止部63が切欠きに係止することによって、本体部202に右コントローラ4が装着される。
【0073】
なお、右コントローラ4は、押下可能な解除ボタン69を備える(
図5参照)。上記係止部63は、解除ボタン69が押下されることに応じて、スライダ62の内部の方向へ移動し、スライダ62に対して突出しない(あるいは、ほとんど突出しない)状態となる。したがって、リング型拡張装置5の本体部202に右コントローラ4が装着された状態において、解除ボタン69が押下されると、係止部63は切欠きに係止しなくなる(あるいは、ほとんど係止しなくなる)。以上より、リング型拡張装置5の本体部202に右コントローラ4が装着される状態において、ユーザは、解除ボタン69を押下することによって右コントローラ4をリング型拡張装置5から容易に取り外すことができる。
【0074】
図8に示すように、リング型拡張装置5は、グリップカバー203および204を有する。グリップカバー203および204は、ユーザが把持するための部品である。本実施形態においては、グリップカバー203および204を設けることによって、ユーザはリング型拡張装置5を把持しやすくなっている。本実施形態においては、環状部201の左端付近の部分に左グリップカバー203が設けられ、環状部201の右端付近の部分に右グリップカバー204が設けられる。
【0075】
図9は、リング型拡張装置5が備える構成要素の電気的な接続関係を示すブロック図である。
図9に示すように、リング型拡張装置5は、歪み検出部211を備える。歪み検出部211は、環状部201が変形したことを検出する検出部の一例である。本実施形態においては、歪み検出部211は、歪みゲージを含む。歪み検出部211は、後述する弾性部材の変形に応じた台座部の歪みを示す信号(換言すれば、弾性部材の変形の大きさおよび変形の向きを示す信号)を出力する。
【0076】
ここで、本実施形態においては、環状部201は、弾性変形可能な弾性部と、台座部とを有する。台座部は、当該台座部と弾性部材とによって環が形成されるように当該弾性部材の両端部を保持する。なお、台座部は、本体部202の内部に設けられるので、
図8において図示されていない。台座部は、弾性部材よりも剛性が高い材質で構成される。例えば、弾性部材は、樹脂(具体的には、FRP(Fiber Reinforced Plastics))で構成され、台座部は、金属で構成される。上記歪みゲージは、台座部に設けられ、当該台座部の歪みを検出する。環状部201が定常状態から変形した場合、変形によって台座部に歪みが生じるので、歪みゲージによって台座部の歪みが検出される。検出された歪みに基づいて、環状部201が変形する向き(すなわち、2つのグリップカバー203および204が近づく向き、または、離れる向き)と、変形量とを算出することができる。
【0077】
なお、他の実施形態においては、歪み検出部211は、歪みゲージに代えて、環状部201が定常状態から変形したことを検出可能な任意のセンサを含んでもよい。例えば、検出部211は、環状部201が変形した場合に加わる圧力を検出する感圧センサを含んでもよいし、環状部201が曲げられた量を検出する曲げセンサを含んでもよい。
【0078】
リング型拡張装置5は、信号変換部212を備える。本実施形態においては、信号変換部212は、アンプと、ADコンバータとを含む。信号変換部212は、歪み検出部211に電気的に接続され、歪み検出部211の出力信号をアンプによって増幅し、ADコンバータによってAD変換を行う。信号変換部212は、歪み検出部211によって検出された歪み値を示すデジタル信号を出力する。なお、他の実施形態においては、信号変換部212はADコンバータを含まず、後述する制御部213がADコンバータを含んでいてもよい。
【0079】
リング型拡張装置5は、制御部213を備える。制御部213は、プロセッサとメモリとを備える処理回路であり、例えばMCU(Micro Controller Unit)である。制御部213は、信号変換部212に電気的に接続され、信号変換部212の出力信号が制御部213に入力される。また、リング型拡張装置5は、端子214を備える。端子214は、制御部213に電気的に接続される。リング型拡張装置5に右コントローラ4が装着されている場合、制御部213は、信号変換部212の出力信号が示す歪み値を示す情報(換言すれば、後述するリング操作データ)を、端子214を介して右コントローラ4へ送信する。
【0080】
リング型拡張装置5は、電力変換部215を備える。電力変換部215は、上記各部211~214に電気的に接続される。電力変換部215は、端子214を介して外部(すなわち、右コントローラ4)から供給される電力を、上記各部211~214に供給する。電力変換部215は、供給される電力について電圧等の調整を行って上記各部211~214に供給してもよい。
【0081】
なお、リング型拡張装置5が他の装置へ送信する「歪み検出部の検出結果に関するデータ」は、当該検出結果(本実施形態においては、台座部の歪みを示す、歪み検出部211の出力信号)そのものを示すデータであってもよいし、当該検出結果に対して何らかの処理(例えば、データ形式の変換、および/または、歪み値に対する計算処理等)が行われることによって得られるデータであってもよい。例えば、制御部213は、上記検出結果である歪み値に基づいて弾性部材の変形量を算出する処理を行ってもよく、このとき、「歪み検出部の検出結果に関するデータ」は、当該変形量を示すデータであってもよい。
【0082】
なお、他の実施形態においては、リング型拡張装置5は、電池を備え、当該電池の電力によって動作してもよい。また、リング型拡張装置5が備える電池は、右コントローラ4から供給される電力によって充電可能な充電池であってもよい。
【0083】
図10は、リング型拡張装置5をユーザが使用する様子の一例を示す図である。
図10に示すように、ユーザは、ゲーム装置(すなわち、本体装置2ならびに各コントローラ3および4)に加えて、リング型拡張装置5を用いてゲームを行うことができる。
【0084】
例えば
図10に示すように、ユーザは、右コントローラ4が装着されたリング型拡張装置5を両手で把持する。このとき、ユーザは、リング型拡張装置5に対する操作(例えば、リング型拡張装置5を変形させる操作、および、リング型拡張装置5を動かす操作)によって、ゲームを行うことができる。
【0085】
なお、
図10においては、ユーザがグリップカバー203および204を把持してリング型拡張装置5を押し込むことで変形させる動作を行う様子を例示している。この動作によって、ユーザは、両腕を鍛えるフィットネス動作をゲーム操作として行うことができる。なお、ユーザはリング型拡張装置5に対する種々の動作でゲーム操作を行うことができる。例えば、ユーザは、一方のグリップカバーを両手で把持し、他方のグリップカバーを腹部に当てた状態で、リング型拡張装置5を変形させる動作を行うこともできる。この動作によって、ユーザは、腕と腹筋を鍛えるフィットネス動作をゲーム操作として行うことができる。また、ユーザは、両足の内股にグリップカバー203および204を当ててリング型拡張装置5を足で挟んだ状態で、リング型拡張装置5を変形させる動作を行うこともできる。この動作によって、ユーザは、足の筋肉を鍛えるフィットネス動作をゲーム操作として行うことができる。このように、本実施形態によれば、円環状であるリング型拡張装置5を用いることによって、ユーザは多くの種類のフィットネス動作を行うことができる。
【0086】
[2.振動制御処理の概要]
次に、右コントローラ4の振動子117の振動を制御する処理について説明する。本実施形態においては、振動子117は、上述したように本体装置2からの指令によって制御される他、リング型拡張装置5からの指令(後述する振動情報)によっても制御される。以下、
図11~
図16を参照して、リング型拡張装置5が振動子117の振動を制御する処理について説明する。
【0087】
図11は、振動子117の振動制御に関するリング型拡張装置5および右コントローラ4の機能的構成を示すブロック図である。本実施形態においては、リング型拡張装置5が振動子117を振動させる処理については本体装置2は関連しない。ここで、本実施形態においては、右コントローラ4およびそれが装着されたリング型拡張装置5は、本体装置2とは独立して処理を実行する独立動作モードで動作することが可能である。独立動作モードにおいては、右コントローラ4は本体装置2と通信を行わずに動作する。本実施形態においては、リング型拡張装置5が振動子117を振動させる処理は、上記独立動作モードにおいて実行される。ただし、他の実施形態においては、リング型拡張装置5が振動子117を振動させる処理は、独立動作モードとは異なるモードにおいて実行されてもよく、右コントローラ4と本体装置2とが通信を行うモードにおいて実行されてもよい。
【0088】
図11に示すように、リング型拡張装置5は、関数記憶部301と、変数決定部302と、生成部303とを備える。本実施形態においては、関数記憶部301は、制御部213のメモリによって実現される。変数決定部302および生成部303は制御部213によって実現される。また、
図11に示すように、右コントローラ4は、上述の振動子117に加えて、振動制御部304を備える。本実施形態においては、振動制御部304は、通信制御部111およびコーデック部116によって実現される。
【0089】
関数記憶部301は、振動子117の振動パターンのモデル(以下、「振動モデル」と呼ぶ)を示す関数を記憶する。ここで、振動パターンとは、ある期間における、具体的な振幅値および/または周波数値の推移を指す便宜上の概念である(
図15および
図17参照)。また、振動モデルは、当該振動モデルに対して振幅および周波数の具体的な値が設定されることによって上記の振動パターンが規定されるものである。振動モデルは、期間、振幅、および/または、周波数の具体的な値は異なるが振幅および/または周波数の推移の傾向が共通する振動パターンを一般化したものを示す(
図12および
図13参照)。
【0090】
図12は、本実施形態において用いられる第1の振動モデルの一例を示す図である。
図12に示す第1の振動モデルは、開始時点から時間t1が経過するまでの期間は、振動を発生させず、時間t1が経過した時点から時間t2が経過するまでの期間は、振幅a1で、かつ、周波数f1で振動を行う振動パターンのモデルを示している。第1の振動モデルにおいて、振幅a1、時間t1、時間t2、および、周波数f1は、変数である。第1の振動モデルは、振動の振幅および周波数が上記のように推移する傾向を示すものであり、上記4つの変数に具体的な値を設定することによって、具体的な振動パターンが決定されることとなる。
【0091】
第1の振動モデルは、周波数を示す変数と、振幅を示す変数とを含む。したがって、第1の振動モデルは、下記の式(1)および(2)のように、周波数の時間変化の関数F(t)と、振幅の時間変化の関数A(t)とによって表すことができる。
F(t)=0(0≦t<t1),F(t)=f1(t1≦t<t2)…(1)
A(t)=0(0≦t<t1),A(t)=a1(t1≦t<t2)…(2)
なお、本実施形態においては、振動が発生していない(すなわち、振幅が0である)状態における振動の周波数を「0」と表す。本実施形態においては、上記F(t)のように、振動モデルを示す関数であって、周波数の時間変化の関数を、周波数モデル関数と呼ぶ。周波数モデル関数は、振動モデルにおけるある期間の周波数を示す変数(以下、周波数変数と呼ぶ。ここでは、変数f1)と当該期間に関する変数(以下、期間変数と呼ぶ。ここでは、変数t1およびt2)とを変数とする関数である。なお、周波数変数は、関数の出力となる変数(すなわち、上記F(t))を決定する変数であって、関数の出力となる変数自体ではない。また、期間に関する変数とは、期間を特定可能な変数であり、例えば、期間の開始時点、終了時点、または、長さを示す変数を含む意味である。本実施形態においては、期間変数である変数t1およびt2は時間の長さを示す変数であったが、期間変数は、振動モデルにおけるある時点(すなわち、開始時点からの経過時間)を示す変数であってもよい。
【0092】
また、本実施形態においては、上記A(t)のように、振動モデルを示す関数であって、振幅の時間変化の関数を、振幅モデル関数と呼ぶ。振幅モデル関数は、振動モデルにおけるある時点の振幅を示す変数(以下、振幅変数と呼ぶ。ここでは、変数a1)と、上記期間変数とを変数とする関数である。なお、本実施形態においては、振幅モデル関数は、振幅変数と、振幅変数が示す振幅に対応する期間に関する期間変数(ここでは、変数t1およびt2)とを変数とする。ただし、他の実施形態においては、振幅モデル関数は、期間変数を変数としないものであってもよい。例えば、振幅モデル関数は、振動パターンにおける全期間における振幅を示す振幅変数のみを変数とする関数であってもよい。
【0093】
図13は、本実施形態において用いられる第2の振動モデルの一例を示す図である。
図13に示す第2の振動モデルは、下記(a)~(c)のように振幅および周波数が推移する振動パターンのモデルを示している。
(a)開始時点から時間t4が経過するまでの期間は、振動を発生させない。
(b)時間t4が経過した時点から時間t5が経過するまでの期間は、一定の振幅a2で、かつ、周波数f2で振動を行う。
(c)時間t5が経過した時点から時間t6が経過するまでの期間は、振幅がa2から0まで減少し(具体的には、単位時間当たりの減少量が一定である減少態様で減少し)、かつ、周波数f2で振動を行う。
なお、時間t4,t5,およびt6と、周波数f2と、振幅a1とは、それぞれ変数である。第2の振動モデルは第1の振動モデルと同様、振動の振幅および周波数の推移する傾向を示すものであり、上記の変数に具体的な値を設定することによって、具体的な振動パターンが決定される。上記の第2の振動モデルについても第1の振動モデルと同様、周波数モデル関数と振幅モデル関数とによって示される。なお、第2の振動モデルによれば、例えば、変数t6を0にすることによって、第1の振動モデルと同様に、振幅が一定となる振動パターン(例えば、
図17に示すパターンB-D)を規定することも可能であるし、変数t5を0にすることによって、振幅が減少していく振動パターン(例えば、
図17に示すパターンA)を規定することも可能である。
【0094】
本実施形態においては、関数記憶部301は、振動モデルを示す関数として、周波数モデル関数と振幅モデル関数とを記憶する。具体的には、本実施形態においては、上記第1および第2の振動モデルが用いられるものとし、関数記憶部301は、第1の振動モデルを示す周波数モデル関数および振幅モデル関数と、第2の振動モデルを示す周波数モデル関数および振幅モデル関数とを記憶する。
【0095】
上記のように、本実施形態においては、ゲームシステム1は、振動子117を振動させる振動パターンのモデル(すなわち、振動モデル)を記憶する。ここで、仮に、振動子117を振動させる振動波形自体を示すデータを記憶しておくこととすると、複数種類の振動パターンで振動子117を振動させる場合、ゲームシステム1は、振動パターン毎にデータを記憶しておかなければならず、振動パターンの種類の増加に応じてデータ量が増大してしまう。これに対して、本実施形態においては、ゲームシステム1は、振動モデルを記憶しておき、振動モデルを用いて振動波形を生成する(詳細は後述する)。これによれば、振動波形のデータを記憶しておく場合に比べて、ゲームシステム1におけるデータ量を低減することができる。
【0096】
なお、他の実施形態においては、振動モデルは、周波数モデル関数と振幅モデル関数とのうちいずれか一方で示されるものであってもよい。例えば、他の実施形態においては、第1の振動モデルにおける振幅a1が固定値であるとした振動モデルが用いられてもよい。この振動モデルは、振幅変数を含まないので、周波数モデル関数のみによって示されることができる。したがって、このような振動モデルについては、関数記憶部301は周波数モデル関数のみを記憶すればよい。また、関数記憶部301は、周波数変数を含まない振動モデルについては、振幅モデル関数のみを記憶すればよい。
【0097】
また、ゲームシステム1において記憶される振動モデル(具体的には、周波数モデル関数および振幅モデル関数)の数は任意であり、関数記憶部301は、1つの振動モデルのみを記憶してもよいし、3つ以上の振動モデルを記憶してもよい。
【0098】
本実施形態においては、周波数モデル関数および振幅モデル関数は、期間変数が当該周波数モデル関数に適用されることによって振動パターンの時間長さが決定される関数である。例えば、第1の振動モデルについては、期間変数t1およびt2を決定することによって、振動パターンの時間長さは(t1+t2)に決定される。また、第2の振動モデルについては、期間変数t4~t6を決定することによって、振動パターンの時間長さは(t4+t5+t6)に決定される。ここで、振動子117を振動させる振動波形自体を示すデータを記憶しておく方法によれば、振動波形の時間が長くなるほどデータ量が大きくなるので、記憶装置の容量によっては、時間が長い振動波形を記憶することができなくなる可能性がある。これに対して、本実施形態においては、振動パターンの時間が長くなっても振動モデル(すなわち、周波数モデル関数および振幅モデル関数)のデータ量は実質的に変わらないので、ゲームシステム1は、記憶装置の容量によらず、時間が長い振動パターンを生成することができる。
【0099】
なお、他の実施形態においては、周波数モデル関数および振幅モデル関数により示される振動モデルは、振動パターンの時間長さが固定(すなわち、期間変数によって変化しない)であってもよい。例えば、
図12に示す振動モデルにおいて、振動パターンの時間長さ(t1+t2)が所定値に固定されてもよい。なお、このとき、期間変数t1およびt2は、(t1+t2)が一定となる条件下で設定可能となる。
【0100】
図11に示す変数決定部302は、振動モデルにおける変数の値を決定する。本実施形態においては、変数決定部302は、所定の振動条件が満たされたことに応じて、満たされた条件に応じた変数の値を決定する。振動条件は、振動子117に振動を行わせる条件である。ここで、本実施形態においては、リング型拡張装置5は、リング型拡張装置5に対する押し込み操作または引っ張り操作を検出し、操作回数をカウントする。なお、押し込み操作は、リング型拡張装置5の2つのグリップカバー203および204が互いに近づく方向に環状部201を変形させる操作である。また、引っ張り操作は、2つのグリップカバー203および204が互いに離れる方向に環状部201を変形させる操作である。第1の振動条件は、上記操作回数が所定の区切り回数(例えば、100,200,300,400回)となったことである。また、第2の振動条件は、上記操作回数が上限回数(例えば、500回)となったことである。本実施形態においては、変数決定部302は、第1の振動条件、または、第2の振動条件が満たされたことに応じて、満たされた条件に応じた値を決定する。これによって、振動条件が満たされたことに応じて、満たされた条件に応じた振動パターンで振動子117が振動する(詳細は後述する)。
【0101】
なお、振動条件は任意であり、他の実施形態においては、他の条件が用いられてもよい。例えば、振動条件は、上記押し込み操作または引っ張り操作が検出されたことであってもよいし、右コントローラ4の所定のボタンに対する操作が検出されたことであってもよい。
【0102】
本実施形態においては、変数決定部302は、振動条件が満たされた場合、対応情報に基づいて、用いるべき振動モデルと変数の値とを決定する。
図14は、対応情報の一例を示す図である。
図14に示すように、対応情報は、振動条件と、当該振動条件が満たされた場合に用いる振動モデルと、当該振動条件が満たされた場合に用いる各変数の値との対応付けを示す。変数決定部302は、対応情報を記憶しており、振動条件が満たされた場合、対応情報を参照して、用いるべき振動モデルと変数の値とを決定する。
【0103】
本実施形態においては、変数決定部302は、第1の振動条件が満たされた場合、第1の振動モデルを用いて規定される振動パターンの振動が行われるように変数を決定する。第1の振動モデルは、a1,f1,t1,t2という4つの変数を含むので、上記の場合、変数決定部302は、これら4つの変数の値を決定する。また、第2の振動条件が満たされた場合も同様に、変数決定部302は、第2の振動モデルを用いて規定される振動パターンの振動が行われるように、当該第2の振動モデルに含まれる各変数(具体的には、変数a2,f2,t4,t5,t6)を決定する。なお、
図14に示すように、1つの振動条件が満たされた場合において、変数決定部302は、振動モデルと各変数の値との組を複数組(
図14に示す例においては、4組)決定してもよい。また、
図14に示す例においては、1つの振動条件が満たされた場合に用いられる振動モデルは1種類であるとしたが、他の実施形態においては、1つの振動条件が満たされた場合複数種類の振動モデルが用いられてもよい。例えば、ある振動条件が満たされた場合に、変数決定部302は、第1の振動モデルとそれに対応する各変数の値との組、および、第2の振動モデルとそれに対応する各変数の値との組をそれぞれ決定してもよい。
【0104】
他の実施形態においては、リング型拡張装置5は、振動モデルに対して適用すべき変数の値を記憶する変数記憶部を備える構成であってもよい。このとき、変数決定部302は、振動条件が満たされた場合、関数記憶部301に記憶される関数のうちから振動条件に応じた関数を決定するとともに、変数記憶部に記憶される変数の値のうちから当該関数に適用すべき値を決定する。なお、本実施形態においては、変数決定部302は上記対応情報を記憶しており、振動モデルの関数に対して適用すべき変数の値を記憶していると言うことができるので、当該変数の値を記憶する変数記憶部を兼ねていると言うこともできる。
【0105】
なお、他の実施形態においては、リング型拡張装置5は、上記変数の値を予め記憶している必要はない。他の実施形態においては、変数決定部302は、計算によって変数の値を算出してもよく、例えば、上記操作回数から周波数変数の値を算出してもよい。このとき、変数決定部302は、操作回数から周波数変数の値を算出するための計算式を予め記憶しておき、振動条件が満たされた場合に変数の値を計算すればよい。
【0106】
変数決定部302は、以上のようにして振動モデルと変数の値とを決定すると、決定した振動モデル(すなわち、周波数モデル関数および/または振幅モデル関数)を指定する関数指定情報と、決定した変数の値を示す変数情報とを生成部303に渡す。
【0107】
生成部303は、関数記憶部301に記憶される関数と、変数決定部302によって決定された変数の値とに基づいて、振動情報を生成する。具体的には、生成部303は、決定された変数の値を周波数モデル関数に適用する(すなわち、代入する)ことによって得られる周波数の時間変化と、決定された変数の値を振幅モデル関数に適用することによって得られる振幅の時間変化とによって規定される振動パターンを示す振動情報を生成する。なお、上記振動情報の生成に用いられる周波数モデル関数および振幅モデル関数は、変数決定部302から送られる関数指定情報により示される関数である。生成部303は、生成された振動情報を振動制御部304に渡す。
【0108】
上記のように、本実施形態においては、関数記憶部301は、互いに異なる周波数の時間変化の振動モデル(すなわち、第1および第2の振動モデル)を示す複数種類の周波数モデル関数を記憶する。変数決定部302は、複数種類の周波数モデル関数のうち1つを指定する関数指定情報を決定する。生成部303は、決定された周波数変数の値と、決定された期間変数の値とを、関数指定情報により指定される周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを示す振動情報を生成する。したがって、本実施形態によれば、複数の振動モデルを用いることで、ゲームシステム1は、データ量を抑えつつ、多様な振動パターンで振動子117を振動させることができる。
【0109】
また、振動モデルと変数の値との組が複数組である場合、各組にそれぞれ対応する複数の振動パターンが規定される。この場合、生成部303は、必要に応じて、複数の振動パターンを1つに統合した統合振動パターンを示す振動情報を生成する。
【0110】
図15は、複数の振動パターンを統合した統合振動パターンの一例を示す図である。
図15は、上記第1の振動条件が満たされた場合に規定される4つの振動パターンを1つの統合振動パターンに統合する例を示している。
図15に示す例においては、変数決定部302から送られてくる4組の変数を示す変数情報に基づいて、4つの振動パターンA~Dが規定されるものとする。このとき、生成部303は、4つの振動パターンA~Dを統合した1つの統合振動パターンを示す振動情報を生成し、振動制御部304に渡す。そして、振動制御部304は、渡された振動情報に基づいて振動子117の振動パターンを指示する。
【0111】
複数の振動パターンを1つの統合振動パターンに統合する方法は任意である。本実施形態においては、
図15に示すように、生成部303は、振動が発生する期間が互いに重複しない複数の振動パターンを足し合わせることによって統合する。したがって、生成部303は、複数の振動パターンを容易に統合することができる。なお、他の実施形態においては、生成部303は、振動が発生する期間が互いに重複しない複数の振動パターンを単純に足し合わせるのではなく、適宜の演算を加えて統合してもよい。また、他の実施形態においては、生成部303は、振動が発生する期間が互いに重複する複数の振動パターンを統合してもよい。このとき、生成部303は、例えば、振動が発生する期間が互いに重複する期間においては、統合振動パターンにおける周波数を、重複する振動の周波数の平均値とし、統合振動パターンにおける振幅を、重複する振動の振幅の合計値(または平均値)としてもよい。
【0112】
また、上記のように、本実施形態においては、生成部303は、1つの周波数モデル関数に基づく複数の振動パターンを統合することによって得られる1つの統合振動パターンを示す振動情報を生成する。これによれば、ゲームシステム1は、1つの振動モデルから得られる複数の振動パターンを統合することで、より複雑な振動パターンで振動子117を振動させることができる。例えば、
図15に示す例においては、第1の振動モデルを用いて、次第に周波数を上げながら4回の振動が発生するという、複雑な振動パターンで振動子117を振動させることができる。すなわち、関数記憶部301は、1回の振動が発生する第1の振動モデルを記憶していれば、同様の傾向の振動が4回発生する振動モデルを別途記憶する必要が無い。
【0113】
ここで、本実施形態においては、振動モデルは、期間変数として、周波数モデル関数が示す時間変化のモデルにおける開始時点から振動が開始されるまでの時間を示す開始変数(上記変数t1およびt4)を含む。これによって、ゲームシステム1は、振動パターンにおいて振動が開始される時点を調節することができる。
【0114】
さらに、本実施形態においては、複数の振動パターンを統合する場合において上記開始変数が用いられるので、ゲームシステム1は、上記開始変数を適宜調節することによって、1つの振動パターンにおいて振動が開始される時点と、他の振動パターンにおいて振動が開始される時点との間隔を設定することができる。例えば、
図15に示す例においては、4つの振動パターンにおける変数t1を75[ms]間隔とすることによって、4回の振動が開始される間隔を容易に揃えることができる。ここで、
図15に示す4つの振動パターンで振動子117を振動させる場合において、仮に、4つの振動パターンについて個別に振動情報を生成してそれぞれ送信するとすれば、生成部303は、1つの振動パターンを示す振動情報を振動制御部304に送信するタイミングと、次の振動パターンを示す振動情報を振動制御部304に送信するタイミングとを調整することになり、振動情報の生成および送信の処理が煩雑になるおそれがある。これに対して、本実施形態においては、複数の振動パターンを統合する場合に上記開始変数を用いることで、複数の振動パターンにおける振動の開始時点の間隔を容易に調整することができる。
【0115】
本実施形態においては、生成部303は、振動パターンを示す振動情報として、所定期間(具体的には、1フレーム期間(例えば、10[ms]))毎の複数の単位振動情報を生成する。具体的には、生成部303は、1フレーム期間に1回の割合で、当該フレーム期間における振動パターンを示す単位振動情報を生成し、単位振動情報が生成される毎に当該単位振動情報を振動制御部304に渡す。なお、本実施形態においては、生成部303がリング型拡張装置5に設けられ、振動制御部304が右コントローラ4に設けられるので、単位振動情報はリング型拡張装置5から端子214を介して右コントローラ4へ送信される。なお、詳細は後述するが、生成部303は、1フレーム期間において、異なる振動パターンを示す2つの単位振動情報を振動制御部304へ送信してもよい。
【0116】
図16は、単位振動情報の生成方法の一例を示す図である。
図16に示す例では、開始時点からのフレーム期間p1~p10における振動パターンを示している。本実施形態においては、生成部303は、1フレーム期間毎に単位振動情報を生成する。ここで、生成部303は、ある1つのフレーム期間における振動パターンを示す単位振動情報として、当該振動パターンのうちで当該フレーム期間における部分の振幅および周波数を示す情報を生成する。例えば、
図16に示す例においては、期間p1において、生成部303は、振幅が0で、周波数が0であることを示す単位振動情報を生成する。また、期間p6においては、生成部303は、振幅が1で、周波数が523であることを示す単位振動情報を生成する。
【0117】
上記のように、本実施形態においては、生成部303は、振動パターンの全体を示す振動情報を一度に生成せず、1フレーム期間分の振動パターンを示す単位振動情報を繰り返し生成することによって、振動パターンの全体を示す振動情報を生成する。つまり、振動パターンが規定される期間において単位振動情報が繰り返し生成され、生成された複数の単位振動情報(換言すれば、複数の単位振動情報からなる振動情報)が当該振動パターンを示すこととなる。また、生成部303は、振動パターンを示す振動情報を単位振動情報に分割して振動制御部304へ送信すると言うことができる。
【0118】
上記のように、生成部303は、所定の単位期間(すなわち、フレーム期間)に1回の割合で単位振動情報を生成する。生成部303は、ある単位期間において単位振動情報を生成する場合、振動パターンのうちで当該単位期間における部分を示す単位振動情報を生成する。これによれば、生成された振動パターンの長さにかかわらず、単位時間あたりの振動情報のデータ量を低減することができる。
【0119】
また、本実施形態における振動情報(および単位振動情報)は、振動パターンの振幅および周波数の情報を含む。ここで、他の実施形態においては、振動情報は、他の情報を含んでいてもよい。例えば、本実施形態においては、振動制御部304は正弦波の振動波形で振動子117を振動させるものとするが、他の実施形態においては、振動制御部304は、複数種類の基本波形(例えば、正弦波および三角波)で振動子117を振動させることが可能であってもよい。このとき、生成部303が振動子117を振動させる基本波形を指定するようにしてもよい。すなわち、生成部303は、基本波形を示す情報を含む振動情報を生成してもよい。
【0120】
振動制御部304は、生成部303から送られた振動情報に基づいて振動子117の振動を制御する。すなわち、振動制御部304は、生成部303から送られた単位振動情報が示す振動パターンで振動子117を振動させる。具体的には、振動制御部304は、単位振動情報が示す振動パターンにより規定される振動波形を示す駆動信号を振動子117に与える。本実施形態においては、駆動信号は、単位振動情報により示される振幅および周波数の正弦波の振動波形で振動子117を振動させる電気信号である。
【0121】
なお、振動制御部304は、1フレーム期間毎に生成部303から単位振動情報を受信し、受信した単位振動情報に基づいて振動子117を振動させる。ここで、あるフレーム期間と次のフレーム期間との境界において振幅および/または周波数が急に変化すると、ノイズが発生したり、ユーザに違和感を与えたりするおそれがある。そのため、振動制御部304は、フレーム期間の境界において振幅および/または周波数が連続的に変化するように補間処理を行い、補間処理後の振幅および周波数を有する振動波形で振動子117を振動させるようにしてもよい。例えば、あるフレーム期間から次のフレーム期間において振幅および周波数が変化する場合、振動制御部304は、当該次のフレーム期間において、単位振動情報が示す振幅および周波数に次第に近づくように連続的に振幅および周波数が変化する駆動信号を生成してもよい。
【0122】
上述のように、本実施形態においては、生成部303は、1フレーム期間において2つの単位振動情報を振動制御部304へ送信することが可能である。2つの単位振動情報が送信されてくる場合、振動制御部304は、2つの単位振動情報が示す2つの振動波形を合成した振動波形で振動子117を振動させる。具体的には、振動制御部304は、2つの振動波形を合成した振動波形に対応する駆動信号を生成して振動子117に与える。このように、本実施形態においては、ゲームシステム1は、周波数が異なる2種類の振動波形を合成した振動波形で振動子117を振動させることができる。
【0123】
図17は、2つの振動パターンを示す振動情報に基づいて振動子を振動させる一例を示す図である。本実施形態においては、上記第2の振動条件が満たされた場合、変数決定部302は、第2の振動モデルを示す関数を指定する関数指定情報と、
図17に示すパターンA~Dの4つの振動パターンを表す4組の変数情報を生成部303に渡す。このとき、第2の振動モデルを示す周波数モデル関数および振幅モデル関数と、4組の変数情報とに基づいて、4つの振動パターンA~Dが規定される。ここで、振動パターンAは、振動が発生する期間が他の3つの振動パターンB~Dと重複し、振動パターンB~Dは、振動が発生する期間が互いに重複しないものとする(
図17参照)。また、振動パターンA~Dの周波数は、それぞれ、160[Hz],587[Hz],659[Hz],698[Hz]であるとする。
【0124】
上述のように、本実施形態においては、振動制御部304は、2つの単位振動情報が示す2つの振動波形を合成することが可能である一方、変数決定部302によって決定される変数に基づいて3つ以上の振動パターンが規定される場合がある(
図17)。この場合、生成部303は、3つ以上の振動パターンのうちいくつかを統合することで、2つの振動パターンを示す振動情報を生成する。なお、
図17に示す例においては、4つの振動パターンA~Dが統合された結果、2つの振動パターンを示す2つの振動情報が生成されるが、他の実施形態においては、統合の結果、1つの振動パターンを示す1つの振動情報が生成されてもよい。
【0125】
本実施形態においては、生成部303は、上記3つ以上の振動パターンのうち、振動が発生する期間が互いに重複しない振動パターンを統合した統合振動パターンを示す振動情報を生成する。
図17に示す例においては、生成部303は、振動が発生する期間が互いに重複しない振動パターンB~Dが統合された1つの統合振動パターンを示す振動情報を生成する(
図17に示す第2の振動パターン参照)。また、振動パターンAについては、振動パターンB~Dと振動が発生する期間が重複するので、生成部303は、振動パターンAについては統合せずにそのまま、振動パターンAを示す振動情報を生成する(
図17に示す第1の振動パターン参照)。生成部303は、上記2つの振動情報に対応する2つの単位振動情報を振動制御部304へ送信する。上記2つの単位振動情報を受信した振動制御部304は、2つの単位振動情報に基づく2つの振動波形を合成した振動波形で振動子117を振動させる(
図17に示す合成波形の振動パターン参照)。
【0126】
なお、3つ以上の振動パターンのうちでどの振動パターンを統合するかを決定する方法は任意である。例えば、3つ以上の振動パターンのうちで振動が発生する期間が互いに重複しない振動パターンの組が既知である場合、当該組に含まれる振動パターンが1つに統合されてもよい。また、周波数が所定の閾値以上である複数の振動パターンについては振動が発生する期間が互いに重複せず、かつ、周波数が所定の閾値未満である複数の振動パターンについては振動が発生する期間が互いに重複しない場合(つまり、そのような振動パターンが規定されるように変数が決定される場合)には、周波数が当該閾値以上である振動パターン同士が統合され、周波数が当該閾値未満である振動パターン同士が統合されてもよい。例えば、
図17に示す例においては、振動パターンAの周波数は160[Hz]であり、振動パターンB~Dの周波数は587~698[Hz]であるので、160[Hz]より大きく、587[Hz]より小さい閾値(例えば、320[Hz])が設定されてもよい。このとき、4つの振動パターンA~Dを、周波数が閾値未満のグループと、周波数が閾値以上のグループとに分けることができるので、生成部303は、グループに含まれる振動パターンを統合した統合振動パターンを示す振動情報を生成すればよい。
【0127】
上記のように、本実施形態においては、振動子117は、2以上である第1所定数(ここでは、2)の振動情報にそれぞれ対応する各振動波形を合成した波形で振動可能であり、変数決定部302は、周波数変数の値と期間変数の値との組として、第1所定数より大きい第2所定数(
図17に示す例では、4)の組を決定する。このとき、生成部303は、決定された組に基づく第2所定数の振動パターンのうち2以上の振動パターンを統合して1つの振動パターンとすることによって、合わせて第1所定数の振動パターンを示す第1所定数の振動情報を生成する。上記によれば、変数決定部302により決定された変数の組に応じて規定される振動パターンの数によらず、振動子117が対応可能な数(すなわち、第1所定数)の振動情報を生成することができる。
【0128】
また、本実施形態においては、生成部303は、複数の振動パターンのうち、振動が生じる期間が互いに重複しない複数の振動パターンを統合することによって得られる1つの振動パターンを示す振動情報を生成する。これによって、振動パターンを統合する計算処理が容易になる。
【0129】
[3.振動制御処理の具体例]
次に、振動制御処理の具体例について説明する。
図18は、リング型拡張装置5によって実行される振動制御処理の一例を示すフローチャートである。本実施形態においては、
図18に示す一連の振動制御処理は、上述の独立動作モードが開始されたことに応じて開始される。
【0130】
なお、本実施形態では、リング型拡張装置5の制御部213のプロセッサが、制御部213が備えるメモリに記憶されるプログラムを実行することによって、
図18に示す各ステップの処理を実行するものとして説明する。ただし、他の実施形態においては、上記各ステップの処理のうちの一部の処理を、制御部213のプロセッサとは別のプロセッサ(例えば、専用回路等)が実行するようにしてもよいし、右コントローラ4のプロセッサ(例えば、通信制御部111)が実行するようにしてもよい。また、
図18(後述する
図20についても同様である)に示す各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて(または代えて)別の処理が実行されてもよい。
【0131】
また、制御部213は、
図18に示す各ステップの処理を、メモリを用いて実行する。すなわち、制御部213は、各処理ステップによって得られる情報(換言すれば、データ)をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
【0132】
振動制御処理が開始されると、プロセッサは、ステップS1~S6の一連の処理を、1フレーム期間に1回の割合で繰り返し実行する。
【0133】
ステップS1において、プロセッサは、上述の振動条件のいずれかが満たされたか否かを判定する。本実施形態においては、ステップS1の判定は、リング型拡張装置5に対する操作回数に基づいて行うことができる。ここで、プロセッサは、歪み検出部211から出力される歪み値に基づいてリング型拡張装置5の変形量を算出し、当該変形量に基づいて押し込み操作または引っ張り操作を検出する。具体的には、トレーニング装置は、押し込み方向の変形量が所定の押し込み閾値よりも大きくなった場合、押し込み操作を検出し、引っ張り方向の変形量が所定の引っ張り閾値よりも大きくなった場合、引っ張り操作を検出する。さらに、プロセッサは、押し込み操作または引っ張り操作が1回検出される毎に、操作回数を1増加させるようにカウントを行う。そして、操作回数が上記区切り回数になった場合(すなわち、操作回数が区切り回数に等しくなった場合)、プロセッサは、第1の振動条件が満たされたと判断する。また、操作回数が上記上限回数になった場合(すなわち、操作回数が上限回数に等しくなった場合)、プロセッサは、第2の振動条件が満たされたと判断する。なお、ステップS1において振動条件が満たされたと判断されるのは、前回のステップS1から操作回数が増加した結果、区切り回数または上限回数に等しくなった場合である。前回のステップS1の判定から操作回数が増加していない場合は、操作回数が区切り回数または上限回数に等しいとしても振動条件はすでに満たされた後であるので、ステップS1の判定結果は否定となる。ステップS1の判定結果が肯定である場合、ステップS2の処理が実行される。一方、ステップS1の判定結果が否定である場合、ステップS2~S4の処理がスキップされて、後述のステップS5の処理が実行される。
【0134】
ステップS2において、プロセッサは、ステップS1で満たされた条件に基づいて振動モデルを決定する。上述のように、振動モデルは、対応情報を参照することによって決定される。ステップS2の次に、ステップS3の処理が実行される。
【0135】
ステップS3において、プロセッサは、ステップS1で満たされた条件に基づいて変数の値を決定する。上述のように、変数の値は、対応情報を参照することによって決定される。ステップS3の次に、ステップS4の処理が実行される。
【0136】
ステップS4において、プロセッサは、ステップS2で決定された振動モデルを示す関数(すなわち、周波数モデル関数および振幅モデル関数)と、ステップS3で決定された変数の値とに基づいて規定される振動パターンを示す振動情報を生成する。なお、振動情報の生成は、上記“[2.振動制御処理の概要]”で述べた方法に従って行われる。具体的には、プロセッサは、上記振動パターンについて、現在のフレーム期間における単位振動情報を生成する。すなわち、プロセッサは、振動パターンのうちで現在のフレーム期間における部分の振幅および周波数を示す単位振動情報を生成する。なお、現在のフレーム期間に対応する振動パターンが存在しない場合、プロセッサは、振幅および周波数が0であることを示す単位振動情報を生成してもよいし、単位振動情報を生成しないようにしてもよい。また、ステップS4において、プロセッサは、上述したように2つの単位振動情報を生成してもよい。ステップS4の次に、ステップS5の処理が実行される。
【0137】
ステップS5において、プロセッサは、ステップS4で生成された単位振動情報を右コントローラ4へ送信する。これに応じて、振動情報を受信した右コントローラ4は、当該振動情報に基づいて振動子117を振動させる。ステップS5の処理が1フレーム期間毎に繰り返し実行されることによって、ステップS4で生成された振動情報が示す振動パターンで振動子117が振動することとなる。ステップS5の次に、ステップS6の処理が実行される。
【0138】
ステップS6において、プロセッサは、振動制御処理を終了するか否かを判定する。例えば、プロセッサは、上記独立動作モードを終了する指示を示すユーザ入力が検出されたか否かを判定する。ステップS6の判定結果が肯定である場合、プロセッサは、振動制御処理を終了する。一方、ステップS6の判定結果が否定である場合、ステップS1の処理が再度実行される。以降、ステップS6の判定結果が肯定となるまで、プロセッサは、ステップS1~S6の一連の処理を繰り返し実行する。
【0139】
[4.本実施形態の作用効果および変形例]
上記実施形態においては、振動子117を備える情報処理システム(具体的には、ゲームシステム1)は、下記の構成を備える。
・振動の周波数に関する時間変化のモデルを示し、当該モデルにおけるある期間の周波数を示す周波数変数と、当該期間に関する期間変数とを変数とする周波数モデル関数を記憶する関数記憶部301
・周波数変数の値と、期間変数の値とを決定する変数決定部302
・決定された周波数変数の値と、決定された期間変数の値とを周波数モデル関数に適用することによって得られる周波数の時間変化によって規定される振動パターンを示す振動情報を生成する生成部303
・振動情報に基づいて振動子117の振動を制御する振動制御部304
上記の構成によれば、ゲームシステム1は、周波数モデル関数を記憶しておくことによって、周波数モデルを用いて振動情報を生成することができる。これによれば、複数種類の振動パターンで振動子117を振動させる場合において、振動子117を振動させるための振動波形のデータを記憶しておく方法に比べて、振動子117の制御に用いられるデータ量を少なくすることができる。
【0140】
また、上記実施形態においては、関数記憶部301は、振動の振幅に関する時間変化のモデルを示し、振動の振幅を示す振幅変数を変数とする振幅モデル関数をさらに記憶する。変数決定部302は、振幅変数の値をさらに決定する。生成部303は、決定された周波数変数の値と、決定された期間変数の値とを周波数モデル関数に適用することによって得られる周波数の時間変化と、決定された振幅変数の値を振幅モデル関数に適用することによって得られる振幅の時間変化とによって規定される振動パターンを示す振動情報を生成する。これによれば、情報処理システムは、周波数に加えて、振幅が異なる振動パターンを1つの振動モデルから生成することができ、より多様な振動パターンで振動子117を振動させることができる。
【0141】
なお、上記実施形態においては、情報処理システムは、振動子を備える第1装置(具体的には、右コントローラ4)と、当該第1装置と通信を行う第2装置(具体的には、リング型拡張装置5)とを含む。第2装置は、関数記憶部301と、変数決定部302と、生成部303と、振動情報を第1装置へ送信する送信部(具体的には、ステップS6を実行する制御部213)とを備える。第1装置は、第2装置から振動情報を受信する受信部(具体的には、端子64および通信制御部111)と、受信部によって受信された振動情報に基づいて振動子の振動を制御する振動制御部304とを備える。上記の構成によれば、第2装置における、振動子の制御に用いられるデータ量を少なくすることができる。これによれば、第2装置は記憶容量の大きい記憶装置を備える必要がないので、第2装置の製造コストを低減することができる。
【0142】
(本体装置2によって振動子117を制御する変形例)
上記実施形態においては、リング型拡張装置5が振動モデルを用いた振動パターンで右コントローラ4の振動子117を制御する場合を例として説明したが、他の実施形態においては、振動モデルを用いた振動パターンで本体装置2が振動子117を制御するようにしてもよい。以下、上記実施形態における変形例として、本体装置2が振動子117を制御する例について説明する。
【0143】
図19は、振動子117の振動制御に関する本体装置2および右コントローラ4の機能的構成を示すブロック図である。本変形例においては、本体装置2が右コントローラ4と無線通信を行い、当該右コントローラ4の振動子117を振動させる例について説明する。なお、本変形例においては、振動子117を振動させる処理にリング型拡張装置5は関係しないので、右コントローラ4はリング型拡張装置5に装着されている必要はない。
【0144】
図19に示すように、本体装置2は、変数決定部311を備える。また、右コントローラ4は、関数記憶部312と、生成部313と、上述の振動制御部304および振動子117とを備える。変数決定部311は、例えばプロセッサ81およびDRAM85によって実現される。また、関数記憶部312は例えばメモリ112によって実現され、生成部313は例えば通信制御部111およびメモリ112によって実現される。
【0145】
変数決定部311は、上記実施形態における変数決定部302と同様の機能を有する。すなわち、変数決定部311は、所定の振動条件が満たされたことに応じて、満たされた条件に応じた振動モデルおよび変数の値を決定する。なお、本体装置2の変数決定部311が用いる振動条件は、リング型拡張装置5の変数決定部302が用いる振動条件と異なっていてもよいし、同じであってもよい。本体装置2の変数決定部311が用いる振動条件は、例えば、本体装置2において実行されるゲームに関する条件(例えば、ゲームにおいて所定の条件が満たされたこと)であってもよい。
【0146】
本変形例においては、変数決定部311は、決定された振動モデルを指定する関数指定情報と、決定された変数の値を示す変数情報とを、右コントローラ4の生成部313に渡す。すなわち、変数決定部311は、これらの情報を無線で右コントローラ4へ送信する。
【0147】
関数記憶部312は、上記実施形態における関数記憶部301と同様の機能を有する。なお、関数記憶部312は、本体装置2から送信される関数指定情報が示す振動モデルに対応する関数を記憶する。右コントローラ4の関数記憶部312に記憶される関数と、リング型拡張装置5の関数記憶部301に記憶される関数とは、異なっていてもよい。
【0148】
生成部313は、上記実施形態における生成部303と同様の機能を有する。すなわち、生成部313は、関数記憶部312に記憶される関数と、変数決定部311によって決定された変数の値とに基づいて振動情報を生成する。
【0149】
本変形例においても上記実施形態と同様、生成された振動情報は振動制御部304に渡され、振動制御部304は、当該振動情報に基づいて振動子117の振動を制御する。これによって、本変形例においても上記実施形態と同様、ゲームシステム1は、振動モデルに基づく振動パターンで振動子117を振動させることができる。
【0150】
図20は、本変形例における振動制御処理の一例を示すフローチャートである。
図20に示す一連の振動制御処理は、右コントローラ4によって実行される。本変形例においては、
図20に示す一連の振動制御処理は、例えば本体装置2においてゲームアプリケーションが起動されたことに応じて開始される。
【0151】
なお、本変形例では、右コントローラ4の通信制御部111のプロセッサが、メモリ112に記憶されるプログラムを実行することによって、
図20に示す各ステップの処理を実行するものとして説明する。また、プロセッサは、
図20に示す各ステップの処理を、メモリを用いて実行する。すなわち、プロセッサは、各処理ステップによって得られる情報(換言すれば、データ)をメモリに記憶し、それ以降の処理ステップにおいて当該情報を用いる場合には、メモリから当該情報を読み出して利用する。
【0152】
振動制御処理が開始されると、プロセッサは、ステップS11~S17の一連の処理を、1フレーム期間に1回の割合で繰り返し実行する。
【0153】
ステップS11において、プロセッサは、本体装置2から上記関数指定情報および変数情報を受信したか否かを判定する。本変形例においては、本体装置2は、振動条件のいずれかが満たされた場合、満たされた条件に応じた関数指定情報および変数情報を右コントローラ4へ送信する。プロセッサは、無線によりこれらの情報が受信されたか否かを判定する。ステップS11の判定結果が肯定である場合、ステップS12の処理が実行される。一方、ステップS11の判定結果が否定である場合、ステップS12~S14の処理がスキップされて、後述のステップS15の処理が実行される。
【0154】
ステップS12において、プロセッサは、ステップS1で本体装置2から情報を受信した旨を示す確認通知を本体装置2へ送信する。ステップS12の次に、ステップS13の処理が実行される。
【0155】
ここで、本変形例においては、本体装置2は、上記関数指定情報および変数情報を送信してから所定時間内に右コントローラ4からの確認通知が受信されない場合、当該関数指定情報および変数情報を再送する。本体装置2は、上記関数指定情報および変数情報の送信を、上記確認通知を右コントローラ4から受信するまで繰り返し実行する。このように、本変形例においては、本体装置2と右コントローラ4との間の無線通信において、関数指定情報および変数情報が右コントローラ4において受信されたことが本体装置2において確認されるまで、当該関数指定情報および変数情報が送信される。これによれば、右コントローラ4において関数指定情報および変数情報を取得する可能性を向上することができる。
【0156】
本変形例におけるステップS13~S15の処理は、それぞれ、(実行主体がリング型拡張装置5のプロセッサであるか、右コントローラ4のプロセッサであるかという点で異なるものの、)上記実施形態におけるステップS2~S4の処理と同様であるので、詳細な説明を省略する。
【0157】
ステップS16において、プロセッサは、ステップS15で生成された単位振動情報に基づいて振動子117を振動させる。ステップS16の処理が1フレーム期間毎に繰り返し実行されることによって、ステップS15で生成された振動情報が示す振動パターンで振動子117が振動することとなる。ステップS16の次に、ステップS17の処理が実行される。
【0158】
ステップS17において、プロセッサは、振動制御処理を終了するか否かを判定する。例えば、プロセッサは、ゲームアプリケーションにおけるゲーム処理を終了する旨の指示が本体装置2から送信されたか否かを判定する。ステップS17の判定結果が肯定である場合、プロセッサは、振動制御処理を終了する。一方、ステップS17の判定結果が否定である場合、ステップS11の処理が再度実行される。以降、ステップS17の判定結果が肯定となるまで、プロセッサは、ステップS11~S17の一連の処理を繰り返し実行する。
【0159】
なお、
図20においては示していないが、右コントローラ4は、本体装置2におけるゲームアプリケーションの実行中においては、上述の操作データを本体装置2へ送信する処理等を実行してもよい。
【0160】
上記のように、上記変形例においては、情報処理システムは、振動子を備える第1装置(具体的には、右コントローラ4)と、当該第1装置と無線通信を行う第2装置(具体的には、本体装置2)とを含む。第2装置は、変数決定部311と、決定された周波数変数および期間変数を第1装置へ送信する変数送信部(具体的には、コントローラ通信部83)とを備える。また、第1装置は、下記の構成を備える。
・第2装置から周波数変数および期間変数を受信する変数受信部(具体的には、通信制御部111)
・変数受信部によって受信された周波数変数および期間変数に基づいて振動情報を生成する生成部313
・振動制御部314
上記によれば、第1装置に周波数モデル関数を記憶しておき、周波数モデル関数を用いて振動情報を生成することによって、第1装置において振動子の制御に用いられるデータ量を少なくすることができる。また、上記によれば、第2装置は、変数を示す情報を第1装置に送信するので、振動情報または振動波形自体を示すデータをフレーム期間毎に第1装置へ送信する場合に比べて、装置間の通信量および通信の頻度の少なくとも一方を低減することができる。さらに、上記によれば、第2装置は、振動子を振動させる開始時に上記変数を第1送信すればよく、振動子の振動中において第2装置は第1装置と通信を行う必要はなく、振動中に第2装置が起動している必要もない。したがって、上記変形例においては、右コントローラ4の振動中において、第2装置は、スリープ状態となることによって省電力化を図ることも可能である。
【0161】
また、他の実施形態においては、本体装置2が変数決定部および関数記憶部を備え、右コントローラ4は関数記憶部を備えず、生成部および振動制御部を備える構成であってもよい。このとき、本体装置2は、振動条件が満たされたことに応じて、満たされた振動条件に応じた振動モデルを示す関数と、当該関数に適用する変数の値とを右コントローラ4へ送信する。右コントローラ4の生成部は、本体装置2から受信される、上記関数と変数の値とに基づいて振動パターンを生成する。上記の構成によっても上記変形例と同様、第1装置において振動子の制御に用いられるデータ量を少なくすることができる。また、装置間の通信量および通信の頻度の少なくとも一方を低減することができる。なお、他の実施形態においては、本体装置2は、関数と変数の値とを右コントローラ4へ送信することに代えて、当該関数に当該変数の値を適用した結果(すなわち、振動パターンを示す関数)を右コントローラ4へ送信してもよい。
【0162】
また、上記変形例においては、右コントローラ4は、本体装置2から周波数変数および期間変数が受信されたことに応じて、当該本体装置2へ返信を行う(ステップS12)。このとき、本体装置2は、周波数変数および期間変数の送信に対する右コントローラ4からの返信が送信から所定時間以内にない場合、当該周波数変数および当該期間変数を当該右コントローラ4へ再送信する。これによれば、本体装置2と右コントローラ4との間で無線通信を行う場合であっても、振動子117を振動させることができる可能性を向上することができる。なお、上記のように情報の再送信を行う場合、再送信を行わない場合に比べて装置間の通信量が増加する。しかし、上記変形例においては、本体装置2から右コントローラ4へは、データ量が少ない変数情報が送信されるので、情報の再送信を行うようにしても通信量が過大となるおそれは少ない。なお、本体装置2は、上記返信が送信から上記所定時間以内にあるか否かの判定を、当該返信が行われてからの時間を計測することによって行ってもよいし、当該時間に相当する指標(例えば、当該返信が行われてからの経過フレーム数)を用いて行ってもよい。
【0163】
なお、仮に、本体装置2から右コントローラ4へフレーム期間毎に振動情報を送信する場合には、無線通信において生じるパケットの消失が原因で、本体装置2から送信される複数の振動情報のうちでいくつかの振動情報が右コントローラ4において受信されないおそれがある。このとき、本体装置2が指示する振動パターン(すなわち、本体装置2が送信する情報により規定される振動パターン)が振動子117において正しく再現されないおそれがある。これに対して、上記変形例においては、再送信を行う通信方法で変数情報が送信され、当該変数情報に基づいて、受信側である右コントローラ4において振動情報が生成される。これによれば、受信側で生成された振動情報が、本体装置2が指示する振動パターンとは異なる内容を示すものとなる可能性は低くなる。
【0164】
また、他の実施形態においては、本体装置2および右コントローラ4は、振動モデルを用いる第1モードと、振動モデルを用いない第2モードとのいずれかで動作可能であってもよい。第1モードにおいては、上記変形例において示したように、本体装置2が変数情報を右コントローラ4へ送信し、右コントローラ4が変数情報に基づいて生成される振動情報に基づいて振動子117の振動を制御する。一方、第2モードにおいては、本体装置2は、所定の振動パターンを示す振動情報を右コントローラ4へ送信し(例えば、1フレーム期間に1回の割合で単位振動情報を送信し)、右コントローラ4は、本体装置2から送信されてくる振動情報に基づいて振動子117の振動を制御する。ここで、第2モードにおける振動情報は、本体装置2において、振動モデルを用いる方法以外の任意の方法で生成される。例えば、第2モードにおける振動情報は、本体装置2において実行中のアプリケーションのプログラムにおいて含まれるものであってもよい。また例えば、第2モードにおける振動情報は、本体装置2においてユーザの入力に基づいて生成された振動情報(例えば、ユーザが一連の入力を行ったときの各入力タイミングで振動する振動パターンを示す振動情報)であってもよい。上記によれば、ゲームシステム1は、第1モードにおいては振動モデルを用いることによって、振動子117の制御に用いられるデータ量を少なくすることができるとともに、第2モードにおいて、振動モデルから生成することができない振動パターンによっても振動子117を振動させることができる。
【0165】
(振動モデルに関する変形例)
振動モデルの内容は任意であり、他の実施形態においては、上記第1および第2の振動モデルとは異なる振動モデルが用いられてもよい。
図21は、振動モデルの他の一例を示す図である。
図21に示す振動モデルは、下記(a)~(d)のように振幅および周波数が推移する振動パターンのモデルを示している。
(a)開始時点から時間t11が経過するまでの期間は、振動を発生させない。
(b)時間t11が経過した時点から時間t12が経過するまでの期間は、振幅が0からa11まで増加し(具体的には、単位時間当たりの増加量が一定である増加態様で増加し)、かつ、周波数f11で振動を行う。
(c)時間t12が経過した時点から時間t13が経過するまでの期間は、一定の振幅a11で、かつ、周波数f12で振動を行う。
(d)時間t13が経過した時点から時間t14が経過するまでの期間は、振幅がa11からa12まで減少し(具体的には、単位時間当たりの減少量が一定である減少態様で減少し)、かつ、周波数f3で振動を行う。
なお、時間t11~t14と、周波数f11~f13と、振幅a11およびa12とは、それぞれ変数である。
図21に示す振動モデルを用いることによって、ゲームシステム1は、より多様な振動パターンを生成することができる。
【0166】
上記のように、振幅変数は、振動モデル(
図21参照)における終了時点の振幅を示す終了振幅変数(すなわち、変数a12)を含んでいてもよい。これによれば、ゲームシステム1は、終了時点の前において振幅が次第に減少しつつ、終了時点における振幅が0でない振動パターンを規定することができる。また、ゲームシステム1は、上記の振動パターンの直後に他の振動パターンが連続するように、2つの振動パターンを統合した統合振動パターンを規定することができる。例えばこのとき、連続する直後の振動パターンの開始時点の振幅を上記の終了時振幅変数(すなわち、変数a12)とすれば、2つの振動パターンにおける振動が連続する振動パターンを規定することができ、振動モデルに基づく振動パターンのバリエーションを増やすことができる。
【0167】
また、
図21に示す振動モデルにおいては、振幅が連続的に変化する振動モデルを示したが、周波数が連続的に変化する振動モデルが用いられてもよい。
図22は、振動モデルの他の一例を示す図である。
図22は、下記(e)~(h)のように周波数が推移する振動パターンのモデルを示している。
(e)開始時点から時間t21が経過するまでの期間は、周波数f21で振動を行う。
(f)時間t21が経過した時点から時間t22が経過するまでの期間は、周波数がf21からf22まで増加する(具体的には、単位時間当たりの減少量が一定である増加態様で増加する)振動を行う。
(g)時間t22が経過した時点から時間t23が経過するまでの期間は、一定の周波数f22で振動を行う。
(h)時間t23が経過した時点から時間t24が経過するまでの期間は、周波数がf22からf23まで減少する(具体的には、単位時間当たりの減少量が一定である減少態様で減少する)振動を行う。
なお、時間t21~t24と、周波数f21~f23とは、それぞれ変数である。
図22に示す振動モデルを用いることによって、ゲームシステム1は、周波数が連続的に変化する振動パターンを規定することができる。また、他の実施形態においては、
図22に示す振動モデルが用いられる場合において、振幅に関しては
図21に示す振動モデルが用いられてもよい。すなわち、ゲームシステム1は、周波数モデル関数として
図22に示す関数を用い、振幅モデル関数として
図21に示す関数を用いるようにしてもよい。これによって、振動モデルに基づく振動パターンのバリエーションをより増やすことができる。
【0168】
(振動モデルの変数に関する変形例)
他の実施形態においては、振動モデルを示す関数(すなわち、周波数モデル関数および振幅モデル関数)は、繰り返し変数を変数とする関数であってもよい。繰り返し変数は、繰り返し変数以外の他の変数(すなわち、周波数変数、振幅変数、および、期間変数)によって規定される振動パターンを繰り返す回数を示す変数である。振動モデルを示す関数が繰り返し変数を含む場合、変数決定部302は、上記他の変数に加えて繰り返し変数の値を決定する。生成部303は、決定された上記他の変数を周波数モデル関数および振幅モデル関数に適用することによって得られる周波数および振幅の時間変化によって規定される振動パターンを、決定された繰り返し変数が示す回数だけ繰り返すことによって得られる繰り返し振動パターンを示す振動情報を生成する。
【0169】
例えば、
図15に示すパターンBの振動パターンを3回繰り返す振動パターンを規定する場合、上記実施形態においては、変数決定部302は、4つの変数(すなわち、変数a1,f1,t1,t2)からなる組を3組決定することになる。これに対して、関数が繰り返し変数を含む場合には、ゲームシステム1は、4つの変数の組を1組と、1つの繰り返し変数とのみを決定することで上記振動パターンを規定することができる。このように、繰り返し変数を用いることによって、繰り返し振動パターンをより少ないデータ量で規定することができる。
【0170】
また、振動モデルが、周波数または振幅が時間に応じて増加または減少する期間を含む場合、当該振動モデルを示す関数は、増加または減少の変化態様を示す変数を含んでいてもよい。この変数は、変化態様が、例えば、線形の変化であるか、放物線に沿った変化であるか、あるいは、サインカーブに沿った変化であるか等を示す。上記変数を用いることによって、ゲームシステム1は、振動パターンにおける周波数および振幅の変化態様を多様にすることができ、振動子をより多様な振動パターンで振動させることができる。
【0171】
(コントローラに関する変形例)
上記実施形態および変形例においては、右コントローラ4が備える振動子117の振動を制御する場合を例として説明したが、左コントローラ3が備える振動子についても、右コントローラ4と同様に制御することができる。例えば、左コントローラ3がリング型拡張装置5に装着可能である場合には、リング型拡張装置5は、右コントローラ4の振動子117と同様の処理によって左コントローラ3の振動子を制御することができる。また、本体装置2は、右コントローラ4の振動子117と同様の処理によって、左コントローラの振動子を無線通信によって制御することができる。また、本体装置2は、右コントローラ4および左コントローラ3の両方と通信を行うことによって、2つのコントローラ3および4の振動子を同時に制御するようにしてもよい。
【0172】
また、上記実施形態においては、振動子に対する制御を、当該振動子を備える装置(すなわち、右コントローラ4)とは異なる他の装置(すなわち、リング型拡張装置5または本体装置2)が行う場合を例として説明した。ここで、他の実施形態においては、振動子を備える装置自身によって振動子を制御する処理が実行されてもよい。つまり、他の実施形態においては、振動子を備える単一の情報処理装置が、上記関数記憶部、変数決定部、生成部、および、振動制御部を備える構成であってもよい。
【0173】
上記実施形態においては、振動子117はリニア振動モータであり、振動とともに音を出力する(換言すれば、振動によって音が出力される)ことが可能である。上記実施形態においては、振動子117が出力する振動は、音として出力される振動(すなわち、人間の可聴帯域内の周波数を含む振動)であってもよいし、音として出力されない振動(すなわち、人間の可聴帯域内の周波数を含まない振動)であってもよい。
【産業上の利用可能性】
【0174】
上記実施形態は、振動子の制御に用いられるデータ量を少なくすること等を目的として、例えば、ゲームシステムやゲームプログラムに利用することが可能である。
【符号の説明】
【0175】
1 ゲームシステム
2 本体装置
4 右コントローラ
5 リング型拡張装置
81 プロセッサ
111 通信制御部
112 メモリ
116 コーデック部
117 振動子
213 制御部
301,312 関数記憶部
302,311 変数決定部
303 生成部
304 振動制御部