(57)【要約】【課題】振動部を振動させる場合に、ユーザにとって必要な振動をわかりやすくできるゲームシステム、ゲームプログラム、ゲーム装置、およびゲーム処理方法を提供する。【解決手段】操作制御部は、操作部に対するユーザ操作に基づいて、仮想空間内において操作対象を制御する。判定部は、操作対象が仮想空間内において所定の状況にあるか否かを判定する。振動制御部は、仮想空間内における操作対象の状態に応じて、振動部を振動させる振動信号を生成する。振動制御部は、操作対象の複数の状態それぞれに複数種類の振動をそれぞれ対応付けて振動信号を生成し、判定部において所定の状況にあると判定された場合、複数種類の振動のうち第１の種類の振動について、当該所定の状況であると判定されないときよりも振動が弱くなるまたは振動が無くなるように振動信号を生成する。【選択図】図１３
2019017475.tif 000002
【特許請求の範囲】
【請求項１】
操作部と、振動部と、情報処理部とを含むゲームシステムであって、
前記情報処理部は、
前記操作部に対するユーザ操作に基づいて、仮想空間内において操作対象を制御する操作制御部と、
前記操作対象が前記仮想空間内において所定の状況にあるか否かを判定する判定部と、
前記仮想空間内における前記操作対象の状態に応じて、前記振動部を振動させる振動信号を生成する振動制御部とを備え、
前記振動制御部は、
前記操作対象の複数の状態それぞれに複数種類の振動をそれぞれ対応付けて前記振動信号を生成し、
前記判定部において前記所定の状況にあると判定された場合、前記複数種類の振動のうち第１の種類の振動について、当該所定の状況であると判定されないときよりも振動が弱くなるまたは振動が無くなるように前記振動信号を生成する、ゲームシステム。
【請求項２】
前記操作制御部は、前記仮想空間内のプレイヤキャラクタオブジェクトを前記操作対象として制御し、
前記情報処理部は、前記仮想空間内において、前記プレイヤキャラクタオブジェクトを攻撃する敵オブジェクトの挙動を制御する敵オブジェクト制御部を、さらに備え、
前記判定部は、前記敵オブジェクトの状態に基づいて前記プレイヤキャラクタオブジェクトが戦闘中か否かを判定し、当該戦闘中である場合に前記プレイヤキャラクタオブジェクトが前記所定の状況にあると判定する、請求項１に記載のゲームシステム。
【請求項３】
前記敵オブジェクト制御部は、所定の条件に基づいて前記敵オブジェクトが前記プレイヤキャラクタオブジェクトを攻撃するための処理を開始し、
前記判定部は、前記敵オブジェクト制御部において前記敵オブジェクトが前記プレイヤキャラクタオブジェクトを攻撃するための処理を行っている場合、前記プレイヤキャラクタオブジェクトが前記戦闘中であると判定する、請求項２に記載のゲームシステム。
【請求項４】
前記判定部は、前記仮想空間内における前記敵オブジェクトと前記プレイヤキャラクタオブジェクトとの距離が所定値よりも近い場合、前記プレイヤキャラクタオブジェクトが前記戦闘中であると判定する、請求項２または３に記載のゲームシステム。
【請求項５】
前記操作制御部は、所定の開始タイミング以降、前記操作部に対するユーザ操作に基づいて、前記仮想空間内のプレイヤキャラクタオブジェクトを前記操作対象として制御し、
前記判定部は、前記開始タイミングから所定時間経過以降を前記プレイヤキャラクタオブジェクトが戦闘中であると判定し、当該戦闘中である場合に前記プレイヤキャラクタオブジェクトが前記所定の状況にあると判定する、請求項１に記載のゲームシステム。
【請求項６】
前記情報処理部は、
他のゲームシステムと無線または有線通信を行う通信部と、
前記開始タイミング以降、前記通信部を介して取得される前記他のゲームシステムからのデータに基づいて、他のユーザが操作する他のプレイヤキャラクタオブジェクトの制御を行う他キャラクタ制御部とを、さらに備える、請求項５に記載のゲームシステム。
【請求項７】
前記振動制御部は、前記第１の種類の振動以外の第２の種類の振動として、前記操作対象がダメージを受ける事象が前記仮想空間内において生じた場合に前記振動部が所定の振動をするように前記振動信号を生成する、請求項１乃至６の何れか１つに記載のゲームシステム。
【請求項８】
前記振動制御部は、前記第１の種類の振動以外の第２の種類の振動として、前記仮想空間内において前記操作対象が他の対象を攻撃した場合に前記振動部が所定の振動をするように前記振動信号を生成する、請求項１乃至７の何れか１つに記載のゲームシステム。
【請求項９】
前記振動制御部は、前記第１の種類の振動として、前記操作対象が前記仮想空間内において第１の条件を満たす領域に進入した場合に前記振動部が所定の振動をするように前記振動信号を生成する、請求項１乃至８の何れか１つに記載のゲームシステム。
【請求項１０】
前記振動制御部は、前記第１の種類の振動以外の第２の種類の振動として、前記操作対象が前記仮想空間内において第２の条件を満たす領域に進入した場合に前記振動部が所定の振動をするように前記振動信号を生成する、請求項１乃至９の何れか１つに記載のゲームシステム。
【請求項１１】
前記振動制御部は、前記第１の種類の振動として、前記操作対象が前記仮想空間内を移動することに応じて前記振動部が所定の振動をするように前記振動信号を生成する、請求項１乃至１０の何れか１つに記載のゲームシステム。
【請求項１２】
前記振動制御部は、前記操作対象が前記所定の状況であると判定されてから所定期間内において、前記第１の種類の振動の強さが時間経過と共に弱くなるよう前記振動信号を生成する、請求項１乃至１１の何れか１つに記載のゲームシステム。
【請求項１３】
前記振動制御部は、
前記操作対象の状態に応じた振動の振動波形を示す振動信号を生成し、
前記操作対象の状態に応じて前記振動が同時に複数生じる場合には、当該振動それぞれの前記振動波形を合成した波形を示す振動信号を生成する、請求項１乃至１２の何れか１つに記載のゲームシステム。
【請求項１４】
前記操作制御部は、所定の開始タイミング以降、前記操作部に対するユーザ操作に基づいて、前記仮想空間内のプレイヤキャラクタオブジェクトを前記操作対象として制御し、
前記情報処理部は、前記開始タイミングの後、前記プレイヤキャラクタオブジェクトを攻撃する敵オブジェクトを前記仮想空間内に出現させる敵オブジェクト出現制御部を、さらに備え、
前記判定部は、前記敵オブジェクトが前記仮想空間内に出現した時点以降を前記プレイヤキャラクタオブジェクトが戦闘中であると判定し、当該戦闘中である場合に前記プレイヤキャラクタオブジェクトが前記所定の状況にあると判定する、請求項１に記載のゲームシステム。
【請求項１５】
振動部を振動させる装置に含まれるコンピュータで実行されるゲームプログラムであって、
前記コンピュータを、
操作部に対するユーザ操作に基づいて、仮想空間内において操作対象を制御する操作制御手段と、
前記操作対象が前記仮想空間内において所定の状況にあるか否かを判定する判定手段と、
前記仮想空間内における前記操作対象の状態に応じて、前記振動部を振動させる振動信号を生成する振動制御手段として機能させ、
前記振動制御手段は、
前記操作対象の複数の状態それぞれに複数種類の振動をそれぞれ対応付けて前記振動信号を生成し、
前記判定手段において前記所定の状況にあると判定された場合、前記複数種類の振動のうち第１の種類の振動について、当該所定の状況であると判定されないときよりも振動が弱くなるまたは振動が無くなるように前記振動信号を生成する、ゲームプログラム。
【請求項１６】
前記操作制御手段は、前記仮想空間内のプレイヤキャラクタオブジェクトを前記操作対象として制御し、
前記ゲームプログラムは、前記仮想空間内において、前記プレイヤキャラクタオブジェクトを攻撃する敵オブジェクトの挙動を制御する敵オブジェクト制御手段として、さらに前記コンピュータを機能させ、
前記判定手段は、前記敵オブジェクトの状態に基づいて前記プレイヤキャラクタオブジェクトが戦闘中か否かを判定し、当該戦闘中である場合に前記プレイヤキャラクタオブジェクトが前記所定の状況にあると判定する、請求項１５に記載のゲームプログラム。
【請求項１７】
前記敵オブジェクト制御手段は、所定の条件に基づいて前記敵オブジェクトが前記プレイヤキャラクタオブジェクトを攻撃するための処理を開始し、
前記判定手段は、前記敵オブジェクト制御手段において前記敵オブジェクトが前記プレイヤキャラクタオブジェクトを攻撃するための処理を行っている場合、前記プレイヤキャラクタオブジェクトが前記戦闘中であると判定する、請求項１５に記載のゲームプログラム。
【請求項１８】
前記判定手段は、前記仮想空間内における前記敵オブジェクトと前記プレイヤキャラクタオブジェクトとの距離が所定値よりも近い場合、前記プレイヤキャラクタオブジェクトが前記戦闘中であると判定する、請求項１６または１７に記載のゲームプログラム。
【請求項１９】
前記操作制御手段は、所定の開始タイミング以降、前記操作部に対するユーザ操作に基づいて、前記仮想空間内のプレイヤキャラクタオブジェクトを前記操作対象として制御し、
前記判定手段は、前記開始タイミングから所定時間経過以降を前記プレイヤキャラクタオブジェクトが戦闘中であると判定し、当該戦闘中である場合に前記プレイヤキャラクタオブジェクトが前記所定の状況にあると判定する、請求項１５に記載のゲームプログラム。
【請求項２０】
他の装置と無線または有線通信を行う通信手段と、
前記開始タイミング以降、前記通信手段を介して取得される前記他の装置からのデータに基づいて、他のユーザが操作する他のプレイヤキャラクタオブジェクトの制御を行う他キャラクタ制御手段として、さらに前記コンピュータを機能させる、請求項１９に記載のゲームプログラム。
【請求項２１】
前記振動制御手段は、前記第１の種類の振動以外の第２の種類の振動として、前記操作対象がダメージを受ける事象が前記仮想空間内において生じた場合に前記振動部が所定の振動をするように前記振動信号を生成する、請求項１５乃至２０の何れか１つに記載のゲームプログラム。
【請求項２２】
前記振動制御手段は、前記第１の種類の振動以外の第２の種類の振動として、前記仮想空間内において前記操作対象が他の対象を攻撃した場合に前記振動部が所定の振動をするように前記振動信号を生成する、請求項１５乃至２１の何れか１つに記載のゲームプログラム。
【請求項２３】
前記振動制御手段は、前記第１の種類の振動として、前記操作対象が前記仮想空間内において第１の条件を満たす領域に進入した場合に前記振動部が所定の振動をするように前記振動信号を生成する、請求項１５乃至２２の何れか１つに記載のゲームプログラム。
【請求項２４】
前記振動制御手段は、前記第１の種類の振動以外の第２の種類の振動として、前記操作対象が前記仮想空間内において第２の条件を満たす領域に進入した場合に前記振動部が所定の振動をするように前記振動信号を生成する、請求項１５乃至２３の何れか１つに記載のゲームプログラム。
【請求項２５】
前記振動制御手段は、前記第１の種類の振動として、前記操作対象が前記仮想空間内を移動することに応じて前記振動部が所定の振動をするように前記振動信号を生成する、請求項１５乃至２４の何れか１つに記載のゲームプログラム。
【請求項２６】
前記振動制御手段は、前記操作対象が前記所定の状況であると判定されてから所定期間内において、前記第１の種類の振動の強さが時間経過と共に弱くなるよう前記振動信号を生成する、請求項１５乃至２５の何れか１つに記載のゲームプログラム。
【請求項２７】
前記振動制御手段は、
前記操作対象の状態に応じた振動の振動波形を示す振動信号を生成し、
前記操作対象の状態に応じて前記振動が同時に複数生じる場合には、当該振動それぞれの前記振動波形を合成した波形を示す振動信号を生成する、請求項１５乃至２６の何れか１つに記載のゲームプログラム。
【請求項２８】
前記操作制御手段は、所定の開始タイミング以降、前記操作部に対するユーザ操作に基づいて、前記仮想空間内のプレイヤキャラクタオブジェクトを前記操作対象として制御し、
前記ゲームプログラムは、前記開始タイミングの後、前記プレイヤキャラクタオブジェクトを攻撃する敵オブジェクトを前記仮想空間内に出現させる敵オブジェクト出現制御手段として、さらに前記コンピュータを機能させ、
前記判定手段は、前記敵オブジェクトが前記仮想空間内に出現した時点以降を前記プレイヤキャラクタオブジェクトが戦闘中であると判定し、当該戦闘中である場合に前記プレイヤキャラクタオブジェクトが前記所定の状況にあると判定する、請求項１５に記載のゲームシステム。
【請求項２９】
振動部を振動させるゲーム装置であって、
操作部に対するユーザ操作に基づいて、仮想空間内において操作対象を制御する操作制御手段と、
前記操作対象が前記仮想空間内において所定の状況にあるか否かを判定する判定手段と、
前記仮想空間内における前記操作対象の状態に応じて、前記振動部を振動させる振動信号を生成する振動制御手段とを備え、
前記振動制御手段は、
前記操作対象の複数の状態それぞれに複数種類の振動をそれぞれ対応付けて前記振動信号を生成し、
前記判定手段において前記所定の状況にあると判定された場合、前記複数種類の振動のうち第１の種類の振動について、当該所定の状況であると判定されないときよりも振動が弱くなるまたは振動が無くなるように前記振動信号を生成する、ゲーム装置。
【請求項３０】
前記操作制御手段は、前記仮想空間内のプレイヤキャラクタオブジェクトを前記操作対象として制御し、
前記ゲーム装置は、前記仮想空間内において、前記プレイヤキャラクタオブジェクトを攻撃する敵オブジェクトの挙動を制御する敵オブジェクト制御手段を、さらに備え、
前記判定手段は、前記敵オブジェクトの状態に基づいて前記プレイヤキャラクタオブジェクトが戦闘中か否かを判定し、当該戦闘中である場合に前記プレイヤキャラクタオブジェクトが前記所定の状況にあると判定する、請求項２９に記載のゲーム装置。
【請求項３１】
前記敵オブジェクト制御手段は、所定の条件に基づいて前記敵オブジェクトが前記プレイヤキャラクタオブジェクトを攻撃するための処理を開始し、
前記判定手段は、前記敵オブジェクト制御手段において前記敵オブジェクトが前記プレイヤキャラクタオブジェクトを攻撃するための処理を行っている場合、前記プレイヤキャラクタオブジェクトが前記戦闘中であると判定する、請求項３０に記載のゲーム装置。
【請求項３２】
前記判定手段は、前記仮想空間内における前記敵オブジェクトと前記プレイヤキャラクタオブジェクトとの距離が所定値よりも近い場合、前記プレイヤキャラクタオブジェクトが前記戦闘中であると判定する、請求項３０または３１に記載のゲーム装置。
【請求項３３】
振動部を振動させるゲーム処理方法であって、
操作部に対するユーザ操作に基づいて、仮想空間内において操作対象を制御する操作制御ステップと、
前記操作対象が前記仮想空間内において所定の状況にあるか否かを判定する判定ステップと、
前記仮想空間内における前記操作対象の状態に応じて、前記振動部を振動させる振動信号を生成する振動制御ステップとを含み、
前記振動制御ステップでは、
前記操作対象の複数の状態それぞれに複数種類の振動をそれぞれ対応付けて前記振動信号が生成され、
前記判定ステップにおいて前記所定の状況にあると判定された場合、前記複数種類の振動のうち第１の種類の振動について、当該所定の状況であると判定されないときよりも振動が弱くなるまたは振動が無くなるように前記振動信号が生成される、ゲーム処理方法。
【請求項３４】
前記操作制御ステップでは、前記仮想空間内のプレイヤキャラクタオブジェクトが前記操作対象として制御され、
前記ゲーム処理方法は、前記仮想空間内において、前記プレイヤキャラクタオブジェクトを攻撃する敵オブジェクトの挙動を制御する敵オブジェクト制御ステップを、さらに含み、
前記判定ステップでは、前記敵オブジェクトの状態に基づいて前記プレイヤキャラクタオブジェクトが戦闘中か否かが判定され、当該戦闘中である場合に前記プレイヤキャラクタオブジェクトが前記所定の状況にあると判定される、請求項３３に記載のゲーム処理方法。
【請求項３５】
前記敵オブジェクト制御ステップでは、所定の条件に基づいて前記敵オブジェクトが前記プレイヤキャラクタオブジェクトを攻撃するための処理が開始され、
前記判定ステップでは、前記敵オブジェクト制御ステップにおいて前記敵オブジェクトが前記プレイヤキャラクタオブジェクトを攻撃するための処理が行われている場合、前記プレイヤキャラクタオブジェクトが前記戦闘中であると判定される、請求項３４に記載のゲーム処理方法。
【請求項３６】
前記判定ステップでは、前記仮想空間内における前記敵オブジェクトと前記プレイヤキャラクタオブジェクトとの距離が所定値よりも近い場合、前記プレイヤキャラクタオブジェクトが前記戦闘中であると判定される、請求項３４または３５に記載のゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、振動部を振動させるゲームシステム、ゲームプログラム、ゲーム装置、およびゲーム処理方法に関する。
【背景技術】
【０００２】
従来、振動を発生する条件を満たすと振動部を駆動させるゲームシステムがある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−３３２２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１で開示されたゲームシステムでは、振動を発生する条件を複数満たした場合に複数の振動で振動部を振動させることを想定した場合、それぞれの振動がわかりにくくなり、必要な振動がわかりにくくなる場合がある。
【０００５】
それ故、本発明の目的は、振動部を振動させる場合に、ユーザにとって必要な振動をわかりやすくできるゲームシステム、ゲームプログラム、ゲーム装置、およびゲーム処理方法を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。なお、特許請求の範囲の記載を解釈する際に、特許請求の範囲の記載によってのみその範囲が解釈されるべきであることが理解され、特許請求の範囲の記載と本欄の記載とが矛盾する場合には、特許請求の範囲の記載が優先する。
【０００７】
本発明のゲームシステムの一構成例は、操作部、振動部、および情報処理部を含む。情報処理部は、操作制御部、判定部、および振動制御部を備える。操作制御部は、操作部に対するユーザ操作に基づいて、仮想空間内において操作対象を制御する。判定部は、操作対象が仮想空間内において所定の状況にあるか否かを判定する。振動制御部は、仮想空間内における操作対象の状態に応じて、振動部を振動させる振動信号を生成する。振動制御部は、操作対象の複数の状態それぞれに複数種類の振動をそれぞれ対応付けて振動信号を生成し、判定部において所定の状況にあると判定された場合、複数種類の振動のうち第１の種類の振動について、当該所定の状況であると判定されないときよりも振動が弱くなるまたは振動が無くなるように振動信号を生成する。
【０００８】
上記によれば、操作対象が仮想空間内において所定の状況にある場合に、必要な振動をユーザにわかりやすく知覚させることができる。
【０００９】
また、上記操作制御部は、仮想空間内のプレイヤキャラクタオブジェクトを操作対象として制御してもよい。上記情報処理部は、敵オブジェクト制御部を、さらに備えてもよい。敵オブジェクト制御部は、仮想空間内において、プレイヤキャラクタオブジェクトを攻撃する敵オブジェクトの挙動を制御する。上記判定部は、敵オブジェクトの状態に基づいてプレイヤキャラクタオブジェクトが戦闘中か否かを判定し、当該戦闘中である場合にプレイヤキャラクタオブジェクトが所定の状況にあると判定してもよい。
【００１０】
上記によれば、プレイヤキャラクタオブジェクトが仮想空間内において敵オブジェクトと戦闘中にある場合に、必要な振動をユーザにわかりやすく知覚させることができる。また、敵オブジェクトの状態に基づいて、戦闘中であるか否かを容易に判定することができる。
【００１１】
また、上記敵オブジェクト制御部は、所定の条件に基づいて敵オブジェクトがプレイヤキャラクタオブジェクトを攻撃するための処理を開始してもよい。上記判定部は、敵オブジェクト制御部において敵オブジェクトがプレイヤキャラクタオブジェクトを攻撃するための処理を行っている場合、プレイヤキャラクタオブジェクトが戦闘中であると判定してもよい。
【００１２】
上記によれば、敵オブジェクトがプレイヤキャラクタオブジェクトを攻撃するための処理を行っているか否かによって、プレイヤキャラクタオブジェクトが敵オブジェクトと戦闘中にあるか否かが判定されるため、戦闘中にあるか否かについて容易に判定することができる。
【００１３】
また、上記判定部は、仮想空間内における敵オブジェクトとプレイヤキャラクタオブジェクトとの距離が所定値よりも近い場合、プレイヤキャラクタオブジェクトが戦闘中であると判定してもよい。
【００１４】
上記によれば、敵オブジェクトとプレイヤキャラクタオブジェクトとの距離によって、プレイヤキャラクタオブジェクトが敵オブジェクトと戦闘中にあるか否かが判定されるため、戦闘中にあるか否かについて容易に判定することができる。
【００１５】
また、上記操作制御部は、所定の開始タイミング以降、操作部に対するユーザ操作に基づいて、仮想空間内のプレイヤキャラクタオブジェクトを操作対象として制御してもよい。上記判定部は、開始タイミングから所定時間経過以降をプレイヤキャラクタオブジェクトが戦闘中であると判定し、当該戦闘中である場合にプレイヤキャラクタオブジェクトが所定の状況にあると判定してもよい。
【００１６】
上記によれば、時間経過によって、プレイヤキャラクタオブジェクトが敵オブジェクトと戦闘中にあるか否かが判定されるため、戦闘中にあるか否かについて容易に判定することができる。
【００１７】
また、上記情報処理部は、通信部および他キャラクタ制御部を、さらに備えてもよい。通信部は、他のゲームシステムと無線または有線通信を行う。他キャラクタ制御部は、開始タイミング以降、通信部を介して取得される他のゲームシステムからのデータに基づいて、他のユーザが操作する他のプレイヤキャラクタオブジェクトの制御を行う。
【００１８】
上記によれば、他のゲームシステムと通信することによってゲーム進行するマルチゲームであっても、必要な振動をユーザにわかりやすく知覚させることができる。
【００１９】
また、上記振動制御部は、第１の種類の振動以外の第２の種類の振動として、操作対象がダメージを受ける事象が仮想空間内において生じた場合に振動部が所定の振動をするように振動信号を生成してもよい。
【００２０】
上記によれば、操作対象がダメージを受ける事象に遭遇したことを振動によってユーザが知ることができる。
【００２１】
また、上記振動制御部は、第１の種類の振動以外の第２の種類の振動として、仮想空間内において操作対象が他の対象を攻撃した場合に振動部が所定の振動をするように振動信号を生成してもよい。
【００２２】
上記によれば、操作対象が攻撃したことを振動によってユーザが知ることができる。
【００２３】
また、上記振動制御部は、第１の種類の振動として、操作対象が仮想空間内において第１の条件を満たす領域に進入した場合に振動部が所定の振動をするように振動信号を生成してもよい。
【００２４】
上記によれば、操作対象が第１の条件を満たす領域に配置されていることを振動によってユーザが知ることができる。
【００２５】
また、上記振動制御部は、第１の種類の振動以外の第２の種類の振動として、操作対象が仮想空間内において第２の条件を満たす領域に進入した場合に振動部が所定の振動をするように振動信号を生成してもよい。
【００２６】
上記によれば、操作対象が第１の条件を満たす領域に配置されていることよりも優先して、操作対象が第２の条件を満たす領域に配置されていることを振動によってユーザが知ることができる。
【００２７】
また、上記振動制御部は、第１の種類の振動として、操作対象が仮想空間内を移動することに応じて振動部が所定の振動をするように振動信号を生成してもよい。
【００２８】
上記によれば、操作対象が移動することに応じて振動するため、当該移動のリアリティをユーザに感じさせることができる。
【００２９】
また、上記振動制御部は、操作対象が所定の状況であると判定されてから所定期間内において、第１の種類の振動の強さが時間経過と共に弱くなるよう振動信号を生成してもよい。
【００３０】
上記によれば、振動を弱くする場合に振動がフェードアウトするため、ユーザに違和感を与えることなく振動強さを調整することができる。
【００３１】
また、上記振動制御部は、操作対象の状態に応じた振動の振動波形を示す振動信号を生成してもよい。上記振動制御部は、操作対象の状態に応じて振動が同時に複数生じる場合には、当該振動それぞれの振動波形を合成した波形を示す振動信号を生成してもよい。
【００３２】
上記によれば、複数の振動が同時に生じる場合に、それぞれの振動を欠落させることなくユーザに知覚させることができる。
【００３３】
また、上記操作制御部は、所定の開始タイミング以降、操作部に対するユーザ操作に基づいて、仮想空間内のプレイヤキャラクタオブジェクトを操作対象として制御してもよい。上記情報処理部は、敵オブジェクト出現制御部を、さらに備えてもよい。敵オブジェクト出現制御部は、開始タイミングの後、プレイヤキャラクタオブジェクトを攻撃する敵オブジェクトを仮想空間内に出現させる。上記判定部は、敵オブジェクトが仮想空間内に出現した時点以降をプレイヤキャラクタオブジェクトが戦闘中であると判定し、当該戦闘中である場合にプレイヤキャラクタオブジェクトが所定の状況にあると判定してもよい。
【００３４】
上記によれば、敵オブジェクトが出現した場合にプレイヤキャラクタオブジェクトが敵オブジェクトと戦闘中であると判定されるため、戦闘中にあるか否かについて容易に判定することができる。
【００３５】
また、本発明は、ゲームプログラム、ゲーム装置、およびゲーム処理方法の形態で実施されてもよい。
【発明の効果】
【００３６】
本発明によれば、操作対象が仮想空間内において所定の状況にある場合に、必要な振動をユーザにわかりやすく知覚させることができる。
【図面の簡単な説明】
【００３７】
【図１】本実施形態におけるゲームシステム１の一例において、本体装置２に左コントローラ３および右コントローラ４を装着した状態を示す図
【図２】本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図
【図３】本体装置２の一例を示す六面図
【図４】左コントローラ３の一例を示す六面図
【図５】右コントローラ４の一例を示す六面図
【図６】本体装置２の内部構成の一例を示すブロック図
【図７】ゲームシステム１の内部構成の一例を示すブロック図
【図８】左コントローラ３および右コントローラ４を本体装置２に装着して操作する様子の一例を示す図
【図９】左コントローラ３および右コントローラ４を本体装置２に装着して操作する様子の一例を示す図
【図１０】左コントローラ３および右コントローラ４を本体装置２に装着して操作する様子の一例を示す図
【図１１】左コントローラ３および右コントローラ４を本体装置２に装着して操作する様子の一例を示す図
【図１２】左コントローラ３および右コントローラ４を本体装置２に装着して操作する様子の一例を示す図
【図１３】シングルプレイモードにおける調整係数の設定例を示す図
【図１４】対戦プレイモードにおける調整係数の設定例を示す図
【図１５】協力プレイモードにおける調整係数の設定例を示す図
【図１６】選択方式によって振動データを生成する方法の一例を説明するための図
【図１７】高周波側および低周波側をまとめて判定する場合に用いられる合成モジュールの一例を示す図
【図１８】加算方式によって振動データを生成する方法の一例を説明するための図
【図１９】本実施形態において本体装置２のＤＲＡＭ８５に設定されるデータ領域の一例を示す図
【図２０】ゲームシステム１で実行されるゲーム処理の一例を示すフローチャート
【図２１】図２０におけるステップＳ１４６において行われるシングルプレイゲーム処理の詳細の一例を示すサブルーチン
【図２２】図２１におけるステップＳ１６５において行われるシングルプレイ係数算出処理の詳細の一例を示すサブルーチン
【図２３】図２０におけるステップＳ１４９において行われる対戦プレイゲーム処理の詳細の一例を示すサブルーチン
【図２４】図２０におけるステップＳ１５０において行われる協力プレイゲーム処理の詳細の一例を示すサブルーチン
【発明を実施するための形態】
【００３８】
以下、本実施形態の一例に係るゲームシステム、ゲームプログラム、ゲーム装置、およびゲーム処理方法について説明する。本実施形態におけるゲームシステムの一例となるゲームシステム１は、本体装置（情報処理装置；本実施形態ではゲーム装置本体として機能する）２と左コントローラ３および右コントローラ４とを含む。本体装置２は、左コントローラ３および右コントローラ４がそれぞれ着脱可能である。つまり、ゲームシステム１は、左コントローラ３および右コントローラ４をそれぞれ本体装置２に装着して一体化された装置として利用できる。また、ゲームシステム１は、本体装置２と左コントローラ３および右コントローラ４とを別体として利用することもできる（図２参照）。以下では、本実施形態のゲームシステム１のハードウェア構成について説明し、その後に本実施形態のゲームシステム１の制御について説明する。
【００３９】
図１は、本体装置２に左コントローラ３および右コントローラ４を装着した状態の一例を示す図である。図１に示すように、左コントローラ３および右コントローラ４は、それぞれ本体装置２に装着されて一体化されている。本体装置２は、ゲームシステム１における各種の処理（例えば、ゲーム処理）を実行する装置である。本体装置２は、ディスプレイ１２を備える。左コントローラ３および右コントローラ４は、ユーザが入力を行うための操作部を備える装置である。
【００４０】
図２は、本体装置２から左コントローラ３および右コントローラ４をそれぞれ外した状態の一例を示す図である。図１および図２に示すように、左コントローラ３および右コントローラ４は、本体装置２に着脱可能である。なお、以下において、左コントローラ３および右コントローラ４の総称として「コントローラ」と記載することがある。
【００４１】
図３は、本体装置２の一例を示す六面図である。図３に示すように、本体装置２は、略板状のハウジング１１を備える。本実施形態において、ハウジング１１の主面（換言すれば、表側の面、すなわち、ディスプレイ１２が設けられる面）は、大略的には矩形形状である。
【００４２】
なお、ハウジング１１の形状および大きさは、任意である。一例として、ハウジング１１は、携帯可能な大きさであってよい。また、本体装置２単体または本体装置２に左コントローラ３および右コントローラ４が装着された一体型装置は、携帯型装置となってもよい。また、本体装置２または一体型装置が手持ち型の装置となってもよい。また、本体装置２または一体型装置が可搬型装置となってもよい。
【００４３】
図３に示すように、本体装置２は、ハウジング１１の主面に設けられるディスプレイ１２を備える。ディスプレイ１２は、本体装置２が生成した画像を表示する。本実施形態においては、ディスプレイ１２は、液晶表示装置（ＬＣＤ）とする。ただし、ディスプレイ１２は任意の種類の表示装置であってよい。
【００４４】
また、本体装置２は、ディスプレイ１２の画面上にタッチパネル１３を備える。本実施形態においては、タッチパネル１３は、マルチタッチ入力が可能な方式（例えば、静電容量方式）のものである。ただし、タッチパネル１３は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式（例えば、抵抗膜方式）のものであってもよい。
【００４５】
本体装置２は、ハウジング１１の内部においてスピーカ（すなわち、図６に示すスピーカ８８）を備えている。図３に示すように、ハウジング１１の主面には、スピーカ孔１１ａおよび１１ｂが形成される。そして、スピーカ８８の出力音は、これらのスピーカ孔１１ａおよび１１ｂからそれぞれ出力される。
【００４６】
また、本体装置２は、本体装置２が左コントローラ３と有線通信を行うための端子である左側端子１７と、本体装置２が右コントローラ４と有線通信を行うための右側端子２１を備える。
【００４７】
図３に示すように、本体装置２は、スロット２３を備える。スロット２３は、ハウジング１１の上側面に設けられる。スロット２３は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム１およびそれと同種の情報処理装置に専用の記憶媒体（例えば、専用メモリカード）である。所定の種類の記憶媒体は、例えば、本体装置２で利用されるデータ（例えば、アプリケーションのセーブデータ等）、および／または、本体装置２で実行されるプログラム（例えば、アプリケーションのプログラム等）を記憶するために用いられる。また、本体装置２は、電源ボタン２８を備える。
【００４８】
本体装置２は、下側端子２７を備える。下側端子２７は、本体装置２がクレードルと通信を行うための端子である。本実施形態において、下側端子２７は、ＵＳＢコネクタ（より具体的には、メス側コネクタ）である。上記一体型装置または本体装置２単体をクレードルに載置した場合、ゲームシステム１は、本体装置２が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置２単体を充電する機能を有する。また、クレードルは、ハブ装置（具体的には、ＵＳＢハブ）の機能を有する。
【００４９】
図４は、左コントローラ３の一例を示す六面図である。図４に示すように、左コントローラ３は、ハウジング３１を備える。本実施形態においては、ハウジング３１は、縦長の形状、すなわち、上下方向（すなわち、図１および図４に示すｙ軸方向）に長い形状である。左コントローラ３は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング３１は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ３は、横長となる向きで把持されることも可能である。左コントローラ３が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００５０】
左コントローラ３は、アナログスティック３２を備える。図４に示すように、アナログスティック３２は、ハウジング３１の主面に設けられる。アナログスティック３２は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、アナログスティック３２を傾倒することによって傾倒方向に応じた方向の入力（および、傾倒した角度に応じた大きさの入力）が可能である。なお、左コントローラ３は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、アナログスティック３２を押下する入力が可能である。
【００５１】
左コントローラ３は、各種操作ボタンを備える。左コントローラ３は、ハウジング３１の主面上に４つの操作ボタン３３〜３６（具体的には、右方向ボタン３３、下方向ボタン３４、上方向ボタン３５、および左方向ボタン３６）を備える。さらに、左コントローラ３は、録画ボタン３７および−（マイナス）ボタン４７を備える。左コントローラ３は、ハウジング３１の側面の左上に第１Ｌボタン３８およびＺＬボタン３９を備える。また、左コントローラ３は、ハウジング３１の側面の、本体装置２に装着される際に装着される側の面に第２Ｌボタン４３および第２Ｒボタン４４を備える。これらの操作ボタンは、本体装置２で実行される各種プログラム（例えば、ＯＳプログラムやアプリケーションプログラム）に応じた指示を行うために用いられる。
【００５２】
また、左コントローラ３は、左コントローラ３が本体装置２と有線通信を行うための端子４２を備える。
【００５３】
図５は、右コントローラ４の一例を示す六面図である。図５に示すように、右コントローラ４は、ハウジング５１を備える。本実施形態においては、ハウジング５１は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ４は、本体装置２から外された状態において、縦長となる向きで把持されることも可能である。ハウジング５１は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ４は、横長となる向きで把持されることも可能である。右コントローラ４が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【００５４】
右コントローラ４は、左コントローラ３と同様、方向入力部としてアナログスティック５２を備える。本実施形態においては、アナログスティック５２は、左コントローラ３のアナログスティック３２と同じ構成である。また、右コントローラ４は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ４は、左コントローラ３と同様、ハウジング５１の主面上に４つの操作ボタン５３〜５６（具体的には、Ａボタン５３、Ｂボタン５４、Ｘボタン５５、およびＹボタン５６）を備える。さらに、右コントローラ４は、＋（プラス）ボタン５７およびホームボタン５８を備える。また、右コントローラ４は、ハウジング５１の側面の右上に第１Ｒボタン６０およびＺＲボタン６１を備える。また、右コントローラ４は、左コントローラ３と同様、第２Ｌボタン６５および第２Ｒボタン６６を備える。
【００５５】
また、右コントローラ４は、右コントローラ４が本体装置２と有線通信を行うための端子６４を備える。
【００５６】
図６は、本体装置２の内部構成の一例を示すブロック図である。本体装置２は、図３に示す構成の他、図６に示す各構成要素８１〜９１、９７、および９８を備える。これらの構成要素８１〜９１、９７、および９８のいくつかは、電子部品として電子回路基板上に実装されてハウジング１１内に収納されてもよい。
【００５７】
本体装置２は、プロセッサ８１を備える。プロセッサ８１は、本体装置２において実行される各種の情報処理を実行する情報処理部であって、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）のみから構成されてもよいし、ＣＰＵ機能、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）機能等の複数の機能を含むＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ）から構成されてもよい。プロセッサ８１は、記憶部（具体的には、フラッシュメモリ８４等の内部記憶媒体、あるいは、スロット２３に装着される外部記憶媒体等）に記憶される情報処理プログラム（例えば、ゲームプログラム）を実行することによって、各種の情報処理を実行する。
【００５８】
本体装置２は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８５を備える。フラッシュメモリ８４およびＤＲＡＭ８５は、プロセッサ８１に接続される。フラッシュメモリ８４は、主に、本体装置２に保存される各種のデータ（プログラムであってもよい）を記憶するために用いられるメモリである。ＤＲＡＭ８５は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【００５９】
本体装置２は、スロットインターフェース（以下、「Ｉ／Ｆ」と略記する。）９１を備える。スロットＩ／Ｆ９１は、プロセッサ８１に接続される。スロットＩ／Ｆ９１は、スロット２３に接続され、スロット２３に装着された所定の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書き込みを、プロセッサ８１の指示に応じて行う。
【００６０】
プロセッサ８１は、フラッシュメモリ８４およびＤＲＡＭ８５、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【００６１】
本体装置２は、ネットワーク通信部８２を備える。ネットワーク通信部８２は、プロセッサ８１に接続される。ネットワーク通信部８２は、ネットワークを介して外部の装置と通信（具体的には、無線通信）を行う。本実施形態においては、ネットワーク通信部８２は、第１の通信態様としてＷｉ−Ｆｉの規格に準拠した方式により、無線ＬＡＮに接続して外部装置と通信を行う。また、ネットワーク通信部８２は、第２の通信態様として所定の通信方式（例えば、独自プロトコルによる通信や、赤外線通信）により、同種の他の本体装置２との間で無線通信を行う。なお、上記第２の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置２との間で無線通信可能であり、複数の本体装置２の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【００６２】
本体装置２は、コントローラ通信部８３を備える。コントローラ通信部８３は、プロセッサ８１に接続される。コントローラ通信部８３は、左コントローラ３および／または右コントローラ４と無線通信を行う。本体装置２と左コントローラ３および右コントローラ４との通信方式は任意であるが、本実施形態においては、コントローラ通信部８３は、左コントローラ３との間および右コントローラ４との間で、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信を行う。
【００６３】
プロセッサ８１は、上述の左側端子１７、右側端子２１、および下側端子２７に接続される。プロセッサ８１は、左コントローラ３と有線通信を行う場合、左側端子１７を介して左コントローラ３へデータを送信するとともに、左側端子１７を介して左コントローラ３から操作データを受信する。また、プロセッサ８１は、右コントローラ４と有線通信を行う場合、右側端子２１を介して右コントローラ４へデータを送信するとともに、右側端子２１を介して右コントローラ４から操作データを受信する。また、プロセッサ８１は、クレードルと通信を行う場合、下側端子２７を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置２は、左コントローラ３および右コントローラ４との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置または本体装置２単体がクレードルに装着された場合、本体装置２は、クレードルを介してデータ（例えば、画像データや音声データ）を据置型モニタ等に出力することができる。
【００６４】
ここで、本体装置２は、複数の左コントローラ３と同時に（換言すれば、並行して）通信を行うことができる。また、本体装置２は、複数の右コントローラ４と同時に（換言すれば、並行して）通信を行うことができる。したがって、複数のユーザは、左コントローラ３および右コントローラ４のセットをそれぞれ用いて、本体装置２に対する入力を同時に行うことができる。一例として、第１ユーザが左コントローラ３および右コントローラ４の第１セットを用いて本体装置２に対して入力を行うと同時に、第２ユーザが左コントローラ３および右コントローラ４の第２セットを用いて本体装置２に対して入力を行うことが可能となる。
【００６５】
本体装置２は、タッチパネル１３の制御を行う回路であるタッチパネルコントローラ８６を備える。タッチパネルコントローラ８６は、タッチパネル１３とプロセッサ８１との間に接続される。タッチパネルコントローラ８６は、タッチパネル１３からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ８１へ出力する。
【００６６】
また、ディスプレイ１２は、プロセッサ８１に接続される。プロセッサ８１は、（例えば、上記の情報処理の実行によって）生成した画像および／または外部から取得した画像をディスプレイ１２に表示する。
【００６７】
本体装置２は、コーデック回路８７およびスピーカ（具体的には、左スピーカおよび右スピーカ）８８を備える。コーデック回路８７は、スピーカ８８および音声入出力端子２５に接続されるとともに、プロセッサ８１に接続される。コーデック回路８７は、スピーカ８８および音声入出力端子２５に対する音声データの入出力を制御する回路である。
【００６８】
また、本体装置２は、加速度センサ８９を備える。本実施形態においては、加速度センサ８９は、所定の３軸（例えば、図１に示すｘｙｚ軸）方向に沿った加速度の大きさを検出する。なお、加速度センサ８９は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。
【００６９】
また、本体装置２は、角速度センサ９０を備える。本実施形態においては、角速度センサ９０は、所定の３軸（例えば、図１に示すｘｙｚ軸）回りの角速度を検出する。なお、角速度センサ９０は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。
【００７０】
加速度センサ８９および角速度センサ９０は、プロセッサ８１に接続され、加速度センサ８９および角速度センサ９０の検出結果は、プロセッサ８１へ出力される。プロセッサ８１は、上記の加速度センサ８９および角速度センサ９０の検出結果に基づいて、本体装置２の動きおよび／または姿勢に関する情報を算出することが可能である。
【００７１】
本体装置２は、電力制御部９７およびバッテリ９８を備える。電力制御部９７は、バッテリ９８およびプロセッサ８１に接続される。また、図示しないが、電力制御部９７は、本体装置２の各部（具体的には、バッテリ９８の電力の給電を受ける各部、左側端子１７、および右側端子２１）に接続される。電力制御部９７は、プロセッサ８１からの指令に基づいて、バッテリ９８から上記各部への電力供給を制御する。
【００７２】
また、バッテリ９８は、下側端子２７に接続される。外部の充電装置（例えば、クレードル）が下側端子２７に接続され、下側端子２７を介して本体装置２に電力が供給される場合、供給された電力がバッテリ９８に充電される。
【００７３】
図７は、本体装置２と左コントローラ３および右コントローラ４との内部構成の一例を示すブロック図である。なお、本体装置２に関する内部構成の詳細については、図６で示しているため図７では省略している。
【００７４】
左コントローラ３は、本体装置２との間で通信を行う通信制御部１０１を備える。図７に示すように、通信制御部１０１は、端子４２を含む各構成要素に接続される。本実施形態においては、通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方で本体装置２と通信を行うことが可能である。通信制御部１０１は、左コントローラ３が本体装置２に対して行う通信方法を制御する。すなわち、左コントローラ３が本体装置２に装着されている場合、通信制御部１０１は、端子４２を介して本体装置２と通信を行う。また、左コントローラ３が本体装置２から外されている場合、通信制御部１０１は、本体装置２（具体的には、コントローラ通信部８３）との間で無線通信を行う。コントローラ通信部８３と通信制御部１０１との間の無線通信は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）の規格に従って行われる。
【００７５】
また、左コントローラ３は、例えばフラッシュメモリ等のメモリ１０２を備える。通信制御部１０１は、例えばマイコン（マイクロプロセッサとも言う）で構成され、メモリ１０２に記憶されるファームウェアを実行することによって各種の処理を実行する。
【００７６】
左コントローラ３は、各ボタン１０３（具体的には、ボタン３３〜３９、４３、４４、および４７）を備える。また、左コントローラ３は、アナログスティック（図７では「スティック」と記載する）３２を備える。各ボタン１０３およびアナログスティック３２は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部１０１へ出力する。
【００７７】
左コントローラ３は、慣性センサを備える。具体的には、左コントローラ３は、加速度センサ１０４を備える。また、左コントローラ３は、角速度センサ１０５を備える。本実施形態においては、加速度センサ１０４は、所定の３軸（例えば、図４に示すｘｙｚ軸）方向に沿った加速度の大きさを検出する。なお、加速度センサ１０４は、１軸方向あるいは２軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ１０５は、所定の３軸（例えば、図４に示すｘｙｚ軸）回りの角速度を検出する。なお、角速度センサ１０５は、１軸回りあるいは２軸回りの角速度を検出するものであってもよい。加速度センサ１０４および角速度センサ１０５は、それぞれ通信制御部１０１に接続される。そして、加速度センサ１０４および角速度センサ１０５の検出結果は、適宜のタイミングで繰り返し通信制御部１０１へ出力される。
【００７８】
通信制御部１０１は、各入力部（具体的には、各ボタン１０３、アナログスティック３２、各センサ１０４および１０５）から、入力に関する情報（具体的には、操作に関する情報、またはセンサによる検出結果）を取得する。通信制御部１０１は、取得した情報（または取得した情報に所定の加工を行った情報）を含む操作データを本体装置２へ送信する。なお、操作データは、所定時間に１回の割合で繰り返し送信される。なお、入力に関する情報が本体装置２へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【００７９】
上記操作データが本体装置２へ送信されることによって、本体装置２は、左コントローラ３に対して行われた入力を得ることができる。すなわち、本体装置２は、各ボタン１０３およびアナログスティック３２に対する操作を、操作データに基づいて判別することができる。また、本体装置２は、左コントローラ３の動きおよび／または姿勢に関する情報を、操作データ（具体的には、加速度センサ１０４および角速度センサ１０５の検出結果）に基づいて算出することができる。
【００８０】
左コントローラ３は、振動によってユーザに通知を行うための振動子１０７を備える。本実施形態においては、振動子１０７は、本体装置２からの指令によって制御される。すなわち、通信制御部１０１は、本体装置２からの上記指令を受け取ると、当該指令に従って振動子１０７を駆動させる。ここで、左コントローラ３は、コーデック部１０６を備える。通信制御部１０１は、上記指令を受け取ると、指令に応じた制御信号をコーデック部１０６へ出力する。コーデック部１０６は、通信制御部１０１からの制御信号から振動子１０７を駆動させるための駆動信号を生成して振動子１０７へ与える。これによって振動子１０７が動作する。
【００８１】
振動子１０７は、より具体的にはリニア振動モータである。リニア振動モータは、回転運動をする通常のモータと異なり、入力される電圧に応じて所定方向に駆動されるため、入力される電圧の波形に応じた振幅および周波数で振動をさせることができる。本実施形態において、本体装置２から左コントローラ３に送信される振動制御信号は、単位時間ごとに周波数と振幅とを表すデジタル信号であってよい。別の実施形態においては、本体装置２から波形そのものを示す情報を送信するようにしてもよいが、振幅および周波数だけを送信することで通信データ量を削減することができる。また、さらにデータ量を削減するため、そのときの振幅および周波数の数値に替えて、前回の値からの差分だけを送信するようにしてもよい。この場合、コーデック部１０６は、通信制御部１０１から取得される振幅および周波数の値を示すデジタル信号をアナログの電圧の波形に変換し、当該波形に合わせて電圧を入力することで振動子１０７を駆動させる。したがって、本体装置２は、単位時間ごとに送信する振幅および周波数を変えることによって、そのときに振動子１０７を振動させる振幅および周波数を制御することができる。なお、本体装置２から左コントローラ３に送信される振幅および周波数は、１つに限らず、２つ以上送信するようにしてもよい。その場合、コーデック部１０６は、受信された複数の振幅および周波数それぞれが示す波形を合成することで、振動子１０７を制御する電圧の波形を生成することができる。
【００８２】
左コントローラ３は、電力供給部１０８を備える。本実施形態において、電力供給部１０８は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ３の各部（具体的には、バッテリの電力の給電を受ける各部）に接続される。
【００８３】
図７に示すように、右コントローラ４は、本体装置２との間で通信を行う通信制御部１１１を備える。また、右コントローラ４は、通信制御部１１１に接続されるメモリ１１２を備える。通信制御部１１１は、端子６４を含む各構成要素に接続される。通信制御部１１１およびメモリ１１２は、左コントローラ３の通信制御部１０１およびメモリ１０２と同様の機能を有する。したがって、通信制御部１１１は、端子６４を介した有線通信と、端子６４を介さない無線通信（具体的には、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信）との両方で本体装置２と通信を行うことが可能であり、右コントローラ４が本体装置２に対して行う通信方法を制御する。
【００８４】
右コントローラ４は、左コントローラ３の各入力部と同様の各入力部を備える。具体的には、各ボタン１１３、アナログスティック５２、慣性センサ（加速度センサ１１４および角速度センサ１１５）を備える。これらの各入力部については、左コントローラ３の各入力部と同様の機能を有し、同様に動作する。
【００８５】
また、右コントローラ４は、振動子１１７およびコーデック部１１６を備える。振動子１１７およびコーデック部１１６は、左コントローラ３の振動子１０７およびコーデック部１０６と同様に動作する。すなわち、通信制御部１１１は、本体装置２からの指令に従って、コーデック部１１６を用いて振動子１１７を動作させる。
【００８６】
右コントローラ４は、電力供給部１１８を備える。電力供給部１１８は、左コントローラ３の電力供給部１０８と同様の機能を有し、同様に動作する。
【００８７】
以上に説明したように、本実施形態におけるゲームシステム１については左コントローラ３および右コントローラ４が本体装置２から着脱可能である。また、クレードルに左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置や本体装置２単体を装着することによって据置型モニタに画像（および音声）を出力可能である。以下、一例として、左コントローラ３および右コントローラ４を本体装置２に装着された一体型装置の状態で、ディスプレイ１２に画像を出力する利用態様におけるゲームシステムを用いて説明する。この状態でゲームシステム１を利用してアプリケーション（例えば、ゲームアプリケーション）に対する操作を行う場合の態様としては、１人のユーザが左コントローラ３および右コントローラ４の両方を用いる態様が考えられる。
【００８８】
図８〜図１２は、左コントローラ３および右コントローラ４を本体装置２に装着して操作する様子の一例を示す図である。図８〜図１２に示すように、左コントローラ３および右コントローラ４を本体装置２に装着してゲームプレイする場合、ゲーム画像は、本体装置２のディスプレイ１２に表示される。このような一体型装置を用いてゲームをプレイする場合、一例として、左コントローラ３および右コントローラ４に設けられた各操作ボタンやスティックが用いられて操作される。他の例として、上記一体型装置全体の姿勢を変化させたり動かしたりする操作を慣性センサが検出することによって操作される。そして、ユーザは、本体装置２に装着されている左コントローラ３の部分を左手で把持し、本体装置２に装着されている右コントローラ４の部分を右手で把持して操作を行いながら、ディスプレイ１２に表示された画像を見ることができる。
【００８９】
また、本実施例では、左コントローラ３および右コントローラ４を把持してゲームプレイする場合、当該ゲーム状況に応じて、左コントローラ３および／または右コントローラ４に振動が与えられる。上述したように、左コントローラ３は、振動子１０７を有しており、右コントローラ４は、振動子１１７を有している。本体装置２のプロセッサ８１は、実行しているゲーム状況に応じて振動データを左コントローラ３および／または右コントローラ４に送信することによって、当該振動データに応じた振幅および周波数で振動子１０７および／または振動子１１７を振動させることができる。
【００９０】
図８に示すように、本ゲーム例では、プレイヤオブジェクトＰＯと敵オブジェクトＥＯとが対戦するゲーム（例えば、戦闘ゲーム）の画像がディスプレイ１２に表示される。そして、左コントローラ３および右コントローラ４を操作するユーザは、上記一体型装置全体を動かしたり、上記一体型装置全体の姿勢を変化させたり、操作ボタンを押下したり、アナログスティックを傾倒したりすることによって、プレイヤオブジェクトＰＯを操作することができる。なお、敵オブジェクトＥＯは、後述するシングルプレイモードによるゲームや協力プレイモードによるゲームの場合、その動作がＣＰＵ（例えば、プロセッサ８１）によって自動制御される。また、敵オブジェクトＥＯは、後述する対戦プレイモードである場合、ゲームシステム１と通信可能な他のゲームシステム１のユーザの操作によってその動作が制御される。
【００９１】
例えば、所定の操作ボタン（例えば、第１Ｒボタン６０）が押下されることによって、ディスプレイ１２に表示されているプレイヤオブジェクトＰＯが攻撃を行う。例えば、プレイヤオブジェクトＰＯが所持している武器の方向が敵オブジェクトＥＯに向いている場合に所定の操作ボタンが押下されると、当該武器から敵オブジェクトＥＯに向けて弾Ｂが発射される。そして、本ゲーム例では、プレイヤオブジェクトＰＯが攻撃をする動作を行った場合、攻撃動作の種類に応じた振動が左コントローラ３および／または右コントローラ４に与えられる。したがって、ユーザは、ディスプレイ１２に表示されたゲーム画像によってプレイヤオブジェクトＰＯが攻撃をする動作を行ったことを視認するとともに、左コントローラ３および／または右コントローラ４から与えられる振動によってもプレイヤオブジェクトＰＯが攻撃をする動作を行ったことを知ることが可能となる。
【００９２】
例えば、図８に示した例では、ユーザがアナログスティック３２を傾倒させる方向によってプレイヤオブジェクトＰＯの向きを変えて、第１Ｒボタン６０を押下することによって弾Ｂが敵オブジェクトＥＯに向けて発射されている。このような敵オブジェクトＥＯを攻撃する操作が行われた場合、当該攻撃に応じた振動（例えば、「ドン！」という触覚をユーザに与える振動）が左コントローラ３および／または右コントローラ４に与えられる。ユーザは、左コントローラ３および／または右コントローラ４から与えられる攻撃に応じた振動を知覚することによって、プレイヤオブジェクトＰＯが敵オブジェクトＥＯを攻撃する動作を行ったことを知ることも可能となる。
【００９３】
また、図９に示すように、プレイヤオブジェクトＰＯの攻撃が敵オブジェクトＥＯにダメージを与えた場合、攻撃した種類、攻撃した位置からの距離、与えたダメージ量、または敵を倒した（仮想空間から消滅等）か否か等に応じた振動が左コントローラ３および／または右コントローラ４に与えられる。したがって、ユーザは、ディスプレイ１２に表示されたゲーム画像によってプレイヤオブジェクトＰＯの攻撃が敵オブジェクトＥＯに影響を与えたことを視認するとともに、左コントローラ３および／または右コントローラ４から与えられる振動によってもプレイヤオブジェクトＰＯの攻撃が敵オブジェクトＥＯに影響を与えたことを知ることができる。
【００９４】
一例として、プレイヤオブジェクトＰＯの攻撃が敵オブジェクトＥＯにダメージを与えた場合、プレイヤオブジェクトＰＯが行った攻撃に応じた振動（例えば、「ガキン！」という触覚をユーザに与える振動）が左コントローラ３および／または右コントローラ４に与えられ、プレイヤオブジェクトＰＯが攻撃した際の振動とは異なる振動が与えられる。したがって、ユーザは、左コントローラ３および／または右コントローラ４から与えられるプレイヤオブジェクトＰＯが行った攻撃に応じた振動を知覚することによって、プレイヤオブジェクトＰＯの攻撃が敵オブジェクトＥＯに影響を与えたことやその攻撃の状況（攻撃の種類、攻撃の近さ、与えたダメージ量、敵が倒れたか否か等）を知ることも可能となる。
【００９５】
一方、図１０に示すように、プレイヤオブジェクトＰＯは、敵オブジェクトＥＯから攻撃を受けることもある。プレイヤオブジェクトＰＯが敵オブジェクトＥＯから攻撃された場合、攻撃された種類、攻撃された位置からの距離、与えられたダメージ量、または敵に倒された（ゲーム続行不能状態やゲームオーバ等）か否か等に応じた振動が左コントローラ３および／または右コントローラ４に与えられる。したがって、ユーザは、ディスプレイ１２に表示されたゲーム画像によってプレイヤオブジェクトＰＯが敵オブジェクトＥＯから攻撃されたことを視認するとともに、左コントローラ３および／または右コントローラ４から与えられる振動によってもプレイヤオブジェクトＰＯが敵オブジェクトＥＯから攻撃されたことを知ることができる。
【００９６】
一例として、プレイヤオブジェクトＰＯが敵オブジェクトＥＯから攻撃された場合、プレイヤオブジェクトＰＯが受けた攻撃に応じた振動（例えば、「どかん！」という触覚をユーザに与える振動）が左コントローラ３および／または右コントローラ４に与えられ、プレイヤオブジェクトＰＯが攻撃した際の振動とは異なる振動が与えられる。したがって、ユーザは、左コントローラ３および／または右コントローラ４から与えられるプレイヤオブジェクトＰＯが受けた攻撃に応じた振動を知覚することによって、プレイヤオブジェクトＰＯが敵オブジェクトＥＯから攻撃を受けたことやその攻撃の状況（攻撃の種類、攻撃の近さ、与えられたダメージ量、敵に倒されたか否か等）を知ることも可能となる。
【００９７】
また、図１１に示すように、プレイヤオブジェクトＰＯは、仮想空間における移動によってダメージを受けることがある。例えば、本ゲーム例では、仮想空間に設置されているゲームフィールドに「味方領域」、「敵領域」、および「中立領域」が設定されており、プレイヤオブジェクトＰＯが「敵領域」に侵入した場合にプレイヤオブジェクトＰＯに所定のダメージが与えられる。また、敵オブジェクトＥＯが「味方領域」に侵入した場合に当該敵オブジェクトＥＯに所定のダメージが与えられる。このように、プレイヤオブジェクトＰＯがダメージを受けた場合、ダメージを与えた対象の種類、当該対象からの距離、与えられたダメージ量、または当該ダメージによって倒された（ゲーム続行不能状態やゲームオーバ等）か否か等に応じた振動が左コントローラ３および／または右コントローラ４に与えられる。したがって、ユーザは、ディスプレイ１２に表示されたゲーム画像によってプレイヤオブジェクトＰＯがダメージを受けていることを視認するとともに、左コントローラ３および／または右コントローラ４から与えられる振動によってもプレイヤオブジェクトＰＯがダメージを受けていることを知ることができる。
【００９８】
一例として、仮想空間内においてプレイヤオブジェクトＰＯがダメージを受けた場合、プレイヤオブジェクトＰＯが受けたダメージに応じた振動（例えば、「ブブブブ・・・」という触覚をユーザに与える振動）が左コントローラ３および／または右コントローラ４に与えられ、プレイヤオブジェクトＰＯが攻撃した際や攻撃を受けた際の振動とは異なる振動が与えられる。したがって、ユーザは、左コントローラ３および／または右コントローラ４から与えられるプレイヤオブジェクトＰＯが受けたダメージに応じた振動を知覚することによって、プレイヤオブジェクトＰＯにダメージを受けていることやそのダメージの状況（ダメージの種類、被ダメージ領域からの近さ、与えられたダメージ量、与えられたダメージによって倒されたか否か等）を知ることも可能となる。なお、仮想空間における移動によってプレイヤオブジェクトＰＯがダメージを受ける状況は、「敵領域」に侵入した場合以外でもよい。例えば、プレイヤオブジェクトＰＯが落下する、水没する、転倒する、挟まれる、激突する、動作に失敗する、衝撃を受ける等、仮想空間内における様々な状況において、プレイヤオブジェクトＰＯにダメージが与えられてもよい。
【００９９】
このように、上述した振動（攻撃した際の振動、攻撃が敵に影響を与えた振動、攻撃を受けた際の振動、ダメージを受けた際の振動）は、何れもゲームを進行する上でゲーム性に関連するものとなり、重要な情報をユーザに伝えることが可能なものとなる。一例として、プレイヤオブジェクトＰＯと敵オブジェクトＥＯとが戦闘するゲームを行う場合、上述した振動は、何れも当該戦闘に勝利するためにプレイに必要となる情報をユーザに伝えることが可能なものとなるため、ゲーム性を損なわないためにも優先的にユーザに知覚させることが必要となる。その一方で、ゲームのリアリティを感じさせたり、ゲーム演出を行ったりすることを目的として、ユーザに別の種類の振動（以下、演出用振動と記載する）を知覚させることもある。
【０１００】
演出用振動の一例として、仮想空間内をプレイヤオブジェクトＰＯが移動することに応じて生じる振動がある。例えば、図１２に示すように、ゲームフィールドにおいて設定されている「味方領域」内において、プレイヤオブジェクトＰＯは、泳いで移動することができる。このように、プレイヤオブジェクトＰＯが仮想空間内を移動した場合、当該移動に応じた振動が左コントローラ３および／または右コントローラ４に与えられる。したがって、ユーザは、ディスプレイ１２に表示されたゲーム画像によってプレイヤオブジェクトＰＯが移動していることを視認するとともに、左コントローラ３および／または右コントローラ４から与えられる振動によって、当該移動のリアリティをユーザに与えることも可能となる。
【０１０１】
一例として、仮想空間内においてプレイヤオブジェクトＰＯが泳いで移動する場合、プレイヤオブジェクトＰＯの移動方法に応じた振動（例えば、「バシャバシャ」という触覚をユーザに与える振動）が左コントローラ３および／または右コントローラ４に与えられ、上述したゲーム性に関わる振動とは異なる振動が与えられる。したがって、ユーザは、左コントローラ３および／または右コントローラ４から与えられる振動を知覚することによって、プレイヤオブジェクトＰＯの移動状況や配置されている環境等を知ることも可能となるとともに、仮想空間に配置されているリアリティを感じることが可能となる。なお、仮想空間におけるプレイヤオブジェクトＰＯの移動によって振動が与えられる状況は、泳いで移動する場合以外でもよい。例えば、プレイヤオブジェクトＰＯが歩く、走る、ジャンプする、飛ぶ、滑る、潜る、浮かぶ、転倒する、回転する、着地する、飛び込む、乗り物の移動、移動を停止する等、仮想空間内における様々な移動状況に応じた振動がユーザに与えられてもよい。また、上記演出用振動は、仮想空間内をプレイヤオブジェクトＰＯが移動することに応じて生じるだけでなく、仮想空間における他の状況に応じて生じることもあり得る。例えば、上記演出用振動は、仮想空間内において、プレイヤオブジェクトＰＯに吹き付けられる風や雨、プレイヤオブジェクトＰＯ周辺の音声や物音、プレイヤオブジェクトＰＯへの接触等、仮想空間内における様々な環境に応じた振動、仮想空間における所定の時刻や所定のタイミングを示す振動、ＢＧＭに応じた振動等でもよい。
【０１０２】
本実施例では、上述したゲーム性に関わる振動を優先してユーザに知覚させるために、仮想空間内においてプレイヤオブジェクトＰＯが所定の状況にある場合、上記演出用振動の強さを弱くする。例えば、プレイヤオブジェクトＰＯが上記所定の状況にあると判定された場合、上記演出用振動について、当該所定の状況であると判定されないときよりも振動が弱くなるまたは振動が無くなるように振動制御を行う。本実施例では、上記演出用振動の強さを調整するための調整係数が０以上１以下の数値で設定され、当該演出用振動を示す振動波形に当該調整係数が掛け合わされることによって、当該演出用振動を示す振動波形の振幅が減衰する。また、上記所定の状況にある場合とは、典型的には、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中である場合や、プレイヤオブジェクトＰＯが他のオブジェクトと試合中である場合等が考えられる。なお、本実施例では、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中であるか否かを判定する基準がゲームモードによって異なるため、図１３〜図１５を参照して、ゲームモード毎の判定基準および設定される調整係数の例について説明する。
【０１０３】
図１３は、シングルプレイモードにおける調整係数の設定例を示す図である。シングルプレイモードは、敵オブジェクトＥＯ全ての動作がＣＰＵ（例えば、プロセッサ８１）によって自動制御され、ユーザによって操作されるプレイヤオブジェクトＰＯがゲームシステム１のユーザのみによって操作される。
【０１０４】
シングルプレイモードの場合、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中であるか否かの判定は、仮想空間におけるプレイヤオブジェクトＰＯおよび／または敵オブジェクトＥＯの動作によって行われる。例えば、シングルプレイモードによるゲーム開始直後は、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中ではないと判定され、調整係数が１．０に設定される。これによって、シングルプレイモードによるゲーム開始直後は、上記演出用振動が通常の強さでユーザに与えられる。そして、シングルプレイモードによるゲーム開始後、仮想空間においてプレイヤオブジェクトＰＯが敵オブジェクトＥＯに発見された場合、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中になったと判定される。この場合、調整係数は、当該発見時点からの経過時間に応じて１．０から０．０にフェードアウト（漸減的に減少）され、例えば当該発見時点からゲーム処理単位である６０フレーム（例えば、１秒間）かけて調整係数が１．０から０．０にフェードアウトされる。また、シングルプレイモードによるゲーム開始後、仮想空間においてプレイヤオブジェクトＰＯと敵オブジェクトＥＯとの距離が所定の距離（例えば、３０ｍ）以内に接近した場合、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中になったと判定される。この場合、調整係数は、プレイヤオブジェクトＰＯと敵オブジェクトＥＯとの距離に応じて設定され、例えば当該距離が３０ｍから１０ｍに近づくことに応じて調整係数が１．０から０．０に減少するように設定される。なお、上記経過時間による調整係数の減少と距離による調整係数の減少とが同時に生じた場合、調整係数の数値が小さい方を採用してもよいし、調整係数の数値が大きい方を採用してもよいし、双方の数値を乗算した結果を調整係数として採用してもよい。
【０１０５】
また、上記調整係数は、１．０から０．０に即時に変化させてもよい。この場合、仮想空間においてプレイヤオブジェクトＰＯが敵オブジェクトＥＯに発見された時点やレイヤオブジェクトＰＯと敵オブジェクトＥＯとの距離が所定の距離に接近した時点で、調整係数が１．０から０．０に即時に変化する。また、上記調整係数を漸減的に減少させるまたは即時に変化させる際の調整係数の最小値は、０．０より大きな値でもよく、１．０未満の値であればどのような値が最小値となってもよい。
【０１０６】
また、シングルプレイモードによるゲームにおいて、プレイヤオブジェクトＰＯと敵オブジェクトＥＯとの戦闘状態が解消された場合、調整係数を１．０に戻してもよい。例えば、図１３の例では、プレイヤオブジェクトＰＯと戦闘中と判定されていた敵オブジェクトＥＯが消滅した場合（典型的には、仮想空間内において敵オブジェクトＥＯが全滅した場合）、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中ではないと判定され、調整係数が１．０に設定される。この場合、調整係数は、当該戦闘状態が解消された時点からの経過時間に応じて０．０から１．０にフェードイン（漸増的に増大）され、例えば当該戦闘状態の解消時点からゲーム処理単位である１８０フレーム（例えば、３秒間）かけて調整係数が０．０から１．０にフェードインされる。これによって、シングルプレイモードによるゲームにおいて戦闘中でなくなった場合、上記演出用振動が通常の強さでユーザに与えられる。
【０１０７】
図１４は、対戦プレイモードにおける調整係数の設定例を示す図である。対戦プレイモードは、ゲームシステム１と通信可能な他のゲームシステム１のユーザの操作によってその動作が制御される敵オブジェクトＥＯが、少なくとも１体含まれる。
【０１０８】
対戦プレイモードの場合、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中であるか否かの判定は、経過時間および仮想空間におけるプレイヤオブジェクトＰＯの移動距離によって行われる。例えば、対戦プレイモードによるゲーム開始直後は、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中ではないと判定され、調整係数が１．０に設定される。これによって、対戦プレイモードによるゲーム開始直後は、上記演出用振動が通常の強さでユーザに与えられる。そして、対戦プレイモードによるゲーム開始後、所定時間（例えば、６０フレーム（１秒間）が経過した時点でプレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中になったと判定される。この場合、調整係数は、当該所定時間経過時点からの経過時間に応じて１．０から０．０にフェードアウト（漸減的に減少）され、例えば当該所定時間経過時点からゲーム処理単位である２４０フレーム（例えば、４秒間）かけて調整係数が１．０から０．０にフェードアウトされる。また、対戦プレイモードによるゲーム開始後、仮想空間において敵オブジェクトＥＯが配置されている敵陣に向かってゲームスタート位置から移動したプレイヤオブジェクトＰＯが移動した距離に応じて、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中になったと判定される。この場合、調整係数は、上記スタート位置から上記敵陣に向かって移動した移動距離に応じて設定され、例えば当該移動距離が０ｍから４０ｍに増加することに応じて調整係数が１．０から０．０に減少するように設定される。なお、上記経過時間による調整係数の減少と移動距離による調整係数の減少とが同時に生じた場合、調整係数の数値が小さい方を採用してもよいし、調整係数の数値が大きい方を採用してもよいし、双方の数値を乗算した結果を調整係数として採用してもよい。
【０１０９】
また、対戦プレイモードによるゲームにおいて、プレイヤオブジェクトＰＯと敵オブジェクトＥＯとの戦闘状態が解消された場合、調整係数を１．０に戻してもよい。例えば、仮想空間内において敵オブジェクトＥＯが全滅した場合、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中ではないと判定され、調整係数が１．０に設定されてもよい。この場合、調整係数は、当該戦闘状態が解消された時点からの経過時間に応じて０．０から１．０にフェードイン（漸増的に増大）される。これによって、対戦プレイモードによるゲームにおいて戦闘中でなくなった場合、上記演出用振動が通常の強さでユーザに与えられる。
【０１１０】
図１５は、協力プレイモードにおける調整係数の設定例を示す図である。協力プレイモードによるゲームでは、プレイヤオブジェクトＰＯとゲームシステム１と通信可能な他のゲームシステム１のユーザの操作によってその動作が制御される他プレイヤオブジェクトとが協力して、ＣＰＵ（例えば、プロセッサ８１）によってその動作が自動制御される敵オブジェクトＥＯと戦闘する。
【０１１１】
協力プレイモードの場合、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中であるか否かの判定は、イベント開始タイミングおよび経過時間によって行われる。例えば、協力プレイモードによるゲーム開始直後は、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中ではないと判定され、調整係数が１．０に設定される。これによって、協力プレイモードによるゲーム開始直後は、上記演出用振動が通常の強さでユーザに与えられる。そして、協力プレイモードによるゲーム開始後に仮想空間内に敵オブジェクトＥＯを出現させるイベントが行われ、当該イベントが発生した時点でプレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中になったと判定される。この場合、調整係数は、当該イベント発生時点からの経過時間に応じて１．０から０．０にフェードアウト（漸減的に減少）され、例えば当該イベント発生時点からゲーム処理単位である３００フレーム（例えば、５秒間）かけて調整係数が１．０から０．０にフェードアウトされる。また、上記イベントが終了した時点でプレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中ではないと判定される。この場合、調整係数は、当該イベント終了時点からの経過時間に応じて０．０から１．０にフェードインフェードイン（漸増的に増大）され、例えば当該イベント終了時点からゲーム処理単位である３００フレーム（例えば、５秒間）かけて調整係数が０．０から１．０にフェードインされる。これによって、協力プレイモードによるゲームにおいて戦闘中でなくなった場合、上記演出用振動が通常の強さでユーザに与えられる。
【０１１２】
なお、上記調整係数は、経過時間や距離に応じて線形に減少させてもよいし、非線形に減少させてもよい。また、上記調整係数は、１．０から０．０に即時に変化させてもよい。この場合、仮想空間においてプレイヤオブジェクトＰＯが敵オブジェクトＥＯに発見された時点やレイヤオブジェクトＰＯと敵オブジェクトＥＯとの距離が所定の距離に接近した時点で、調整係数が１．０から０．０に即時に変化する。また、上記調整係数を漸減的に減少させるまたは即時に変化させる際の調整係数の最小値は、０．０より大きな値でもよく、１．０未満の値であればどのような値が最小値となってもよい。
【０１１３】
上述したように、左コントローラ３は、振動子１０７を有しており、右コントローラ４は、振動子１１７を有している。本体装置２のプロセッサ８１は、実行しているゲーム状況に応じて振動データを左コントローラ３および／または右コントローラ４に送信することによって、当該振動データに応じた振幅および周波数で振動子１０７または振動子１１７を振動させることができる。そして、プロセッサ８１は、ゲームモードやプレイヤオブジェクトＰＯの状況に応じて適切な振動強度に調整した振動データを左コントローラ３および／または右コントローラ４に送信している。本実施例では、プレイヤオブジェクトＰＯの複数の状態それぞれに複数種類の振動をそれぞれ対応付けて振動波形（振動信号）を生成し、現時点のプレイヤオブジェクトＰＯの状態に応じた振動波形を示す振動データを左コントローラ３および／または右コントローラ４に送信する。ここで、複数の振動が同時に生じる場合、当該振動それぞれの振動波形を合成した波形を示す振動波形が生成される。例えば、振動波形を合成してコントローラを振動させるための振動データを生成する方式としては、選択方式および加算方式がある。
【０１１４】
以下、図１６〜図１８を参照して、振動波形を合成して振動データを生成する方式について説明する。なお、図１６は、選択方式によって振動データを生成する方法の一例を説明するための図である。図１７は、高周波側および低周波側をまとめて判定する場合に用いられる合成モジュールの一例を示す図である。図１８は、加算方式によって振動データを生成する方法の一例を説明するための図である。
【０１１５】
以下の例では、振動波形Ａによる振動と振動波形Ｂによる振動とが同時に生じる場合を想定し、上述した調整係数による振動強さの調整が上記演出用振動に対して行われる場合、当該演出用振動に対しては当該調整が行われた後の振動波形が用いられることとする。例えば、上記振動強さの調整では、調整される演出用振動の振動波形の振幅に調整係数を乗算することによって行われる。なお、調整される演出用振動の振動波形が高周波帯の振動波形と低周波帯の振動波形との組み合わせによって示される場合、高周波側および低周波側の振幅をそれぞれ調整してもよい。
【０１１６】
選択方式によって振動データを生成する場合、合成する振動波形Ａを示す振動データおよび振動波形Ｂを示す振動データについて、所定時間毎に何れか１つを選択する。具体的には、振動波形Ａの振動データおよび振動波形Ｂの振動データが入力された場合、振動波形Ａの振幅と振動波形Ｂの振幅とに基づいて、所定時間毎に振幅の大きい方の振動波形を示す振動データを選択する。このように選択方式によって振動データを選択することによって、ユーザが顕著に知覚可能な振動を優先して生じさせることが可能となる。
【０１１７】
図１６は、振動波形Ａと振動波形Ｂとが入力された場合の一例を示している。振動波形Ａは、相対的に弱く継続的な振動を示し、振動波形Ｂは、相対的に強く短い振動を示している。例えば、選択方式によって振動データを生成する場合、所定期間毎（例えば、５ｍｓｅｃ〜数１０ｍｓｅｃ）にいずれの振動波形の振幅が大きいのかを判定し、より振幅の大きな振動波形を示す振動データを選択して出力する。したがって、選択方式では、所定期間毎に選択された振動波形によって合成振動波形が生成され、当該合成振動波形を示す振動データが出力される。
【０１１８】
なお、上記選択方式において振動データを選択する際、当該振動データが示す振動波形の周波数も考慮して選択する振動データを判定してもよい。例えば、入力された振動データが高周波帯の振動波形と低周波帯の振動波形との組み合わせによって示される場合、高周波側および低周波側をそれぞれ独立して判定する方法と高周波側および低周波側の一方に重み付けをして判断する方法とが考えられる。前者の場合、振動波形Ａと振動波形Ｂとが入力された場合、高周波側の振動波形Ａの振幅と高周波側の振動波形Ｂの振幅とに基づいて、所定時間毎に振幅の大きい方の振動波形を示す振動データを、高周波側の振動データとして選択する。また、振動波形Ａと振動波形Ｂとが入力された場合、低周波側の振動波形Ａの振幅と低周波側の振動波形Ｂの振幅とに基づいて、所定時間毎に振幅の大きい方の振動波形を示す振動データを、低周波側の振動データとして選択する。後者の場合、各周波数帯の振幅に重み付けをした上で所定期間毎に最も大きな振幅を示す振動波形を選出し、入力した振動波形Ａおよび振動波形Ｂのうち、当該選出された振動波形を含む方の振動波形を示す振動データを選択する。
【０１１９】
また、入力された振動データが高周波帯の振動波形と低周波帯の振動波形との組み合わせによって示される場合、高周波側および低周波側をまとめて判定することが考えられる。図１７において、上記合成モジュールは、振動波形Ａの低周波側の振幅α１Ｌおよび高周波側の振幅α１Ｈを合成した振幅と、振動波形Ｂの低周波側の振幅α２Ｌおよび高周波側の振幅α２Ｈを合成した振幅との比較（すなわち、関数ｍａｘ(α１Ｌ＋α１Ｈ，α２Ｌ＋α２Ｈ））が行なわれ、当該比較においてより大きな振幅を示す振動波形が合成振動波形として出力する。すなわち、上記合成モジュールは、振動波形Ａに含まれる第１の振幅（α１Ｌ）および第２の振幅(α１Ｈ）から算出される値（α１Ｌ＋α１Ｈ）と、振動波形Ｂに含まれる第１の振幅（α２Ｌ）および第２の振幅（α２Ｈ）から算出される値（α２Ｌ＋α２Ｈ）とに基づいて、いずれかの振動波形を選択的に出力する。
【０１２０】
このように、振動波形Ａの高周波帯の振動波形と低周波帯の振動波形との振動データおよび振動波形Ｂの高周波帯の振動波形と低周波帯の振動波形との振動データが入力された場合に、振動波形Ａの振動データが示す振幅の合計と振動波形Ｂの振動データが示す振幅の合計とに基づいて、所定期間毎に、振幅の合計が大きい方の複数の振動データが選択される。したがって、振動波形Ａおよび振動波形Ｂのうち、全体として振幅がより大きなものが選択されるので、入力される振動波形全体の特徴を維持したまま、ユーザに対して振動刺激を与えることができる。
【０１２１】
また、図１７に示す選択方式においては、入力された振動パターンの振幅に対して周波数による重み付けをして評価するようにしてもよい。一般的に、人間は低周波側の振動に敏感であるので、例えば、高周波側の振幅より大きな重み係数（例えば、ｂ＞１）を低周波側の振幅に乗じるようにしてもよい。この場合。関数ｍａｘ（ｂＸα１Ｌ＋α１Ｈ，ｂＸα２Ｌ＋α２Ｈ）を利用して、いずれの振幅が大きいのかが判断されてもよい。
【０１２２】
また、振動波形Ａの低周波側の周波数ｆ１Ｌおよび振動波形Ｂの低周波側の周波数ｆ２Ｌの異同、および、振動波形Ａの高周波側の周波数ｆ１Ｈおよび振動波形Ｂの高周波側の周波数ｆ２Ｈの異同については考慮せず、各振動波形の振幅のみを比較対象とするように構成してもよい。
【０１２３】
また、振動波形Ａおよび振動波形Ｂに含まれる周波数成分から、各振幅の大きさに基づいて、所定数の周波数成分を選択するようにしてもよい。すなわち、振動波形Ａの低周波側の振幅α１Ｌ、振動波形Ａの高周波側の振幅α１Ｈ、振動波形Ｂの低周波側の振幅α２Ｌ、および振動波形Ｂの高周波側の振幅α２Ｈのうち大きなものから上位２つの周波数成分を抽出して、合成振動波形として出力するようにしてもよい。
【０１２４】
また、上記選択方式において振動データを選択する際、当該振動データが示す振動波形の振幅とは異なるパラメータに基づいて選択する振動データを判定してもよい。例えば、振動データが示す振動波形の周波数に基づいて、所定時間毎に周波数の小さい方の振動波形を示す振動データを選択してもよい。
【０１２５】
図１８に示すように、加算方式によって振動データを生成する場合、振動波形Ａの振動データおよび振動波形Ｂの振動データについて、所定時間毎に振動波形を重ね合わせる。具体的には、振動波形Ａの振動データおよび振動波形Ｂの振動データが入力された場合、振動波形Ａと振動波形Ｂとを所定時間毎に重ね合わせて合成振動波形を生成して、当該合成振動波形を示す振動データを生成する。具体的には、所定周期毎に入力された振動波形の振幅を加算して合成振動波形を生成することが考えられ、この場合、振動波形Ａと振動波形Ｂとが時間軸上で結合したものとなる。このように加算方式によって振動データを生成することによって、例えば図１８に示すような同じような種類の振動が複数重なり合うことが頻繁に生じ得る状況において、当該振動を欠落させることなく互いに重なり合った振動をユーザに対して知覚させることができる。
【０１２６】
ここで、上記加算方式によって振動データを合成する場合、合成振動波形の周波数は、振動波形Ａの周波数と振動波形Ｂの周波数とに基づいて算出される。第１の例として、入力した振動波形Ａおよび振動波形Ｂのうち、振幅が最も大きい振動波形の周波数を採用する。第２の例として、入力した振動波形Ａの周波数と振動波形Ｂの周波数との平均値を採用する。第３の例として、入力した振動波形Ａの周波数と振動波形Ｂの周波数とにそれぞれの振幅による重み付け（例えば、振幅に応じた重み付け加重平均）をした上で、上記第１の例または上記第２の例による周波数の算出を行う。
【０１２７】
なお、上記加算方式によって振動データを合成する場合、所定周期毎に入力された振動波形の振幅を加算して合成振動波形を生成することが考えられるが、当該振動波形の振幅を平均して合成振動波形を生成してもよい。また、振動波形の振幅を平均して合成振動波形を生成する場合、各振動波形の周波数によって重み付けをした振幅を平均してもよい。
【０１２８】
このように、複数の振動が同時に生じる場合、生成された１つの合成振動波形に基づいた振動が生成される。したがって、ゲームシステム１を操作するユーザは、複数の振動を知覚することができ、複数の振動が同時に生じた場合であっても興趣性が損なわれることを防止することができる。
【０１２９】
次に、図１９〜図２４を参照して、本実施形態においてゲームシステム１で実行される具体的な処理の一例について説明する。図１９は、本実施形態において本体装置２のＤＲＡＭ８５に設定されるデータ領域の一例を示す図である。なお、ＤＲＡＭ８５には、図１９に示すデータの他、他の処理で用いられるデータも記憶されるが、詳細な説明を省略する。
【０１３０】
ＤＲＡＭ８５のプログラム記憶領域には、ゲームシステム１で実行される各種プログラムＰａが記憶される。本実施形態においては、各種プログラムＰａは、他のゲームシステムと通信するための通信プログラム、左コントローラ３および／または右コントローラ４から取得したデータに基づいた情報処理（例えば、ゲーム処理）を行うためのアプリケーションプログラム、左コントローラ３および／または右コントローラ４を振動させるための振動制御プログラム等が記憶される。なお、各種プログラムＰａは、フラッシュメモリ８４に予め記憶されていてもよいし、ゲームシステム１に着脱可能な記憶媒体（例えば、スロット２３に装着された記憶媒体）から取得されてＤＲＡＭ８５に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されてＤＲＡＭ８５に記憶されてもよい。プロセッサ８１は、ＤＲＡＭ８５に記憶された各種プログラムＰａを実行する。
【０１３１】
また、ＤＲＡＭ８５のデータ記憶領域には、ゲームシステム１において実行される通信処理や情報処理等の処理において用いられる各種のデータが記憶される。本実施形態においては、ＤＲＡＭ８５には、操作データＤａ、通信データＤｂ、ゲームモードデータＤｃ、第１調整係数データＤｄ、第２調整係数データＤｅ、振動データＤｆ、調整振動データＤｇ、合成振動データＤｈ、プレイヤオブジェクト位置データＤｉ、敵オブジェクト位置データＤｊ、協力オブジェクト位置データＤｋ、陣地データＤｍ、および画像データＤｎ等が記憶される。
【０１３２】
操作データＤａは、左コントローラ３および／または右コントローラ４からそれぞれ適宜取得した操作データである。上述したように、左コントローラ３および／または右コントローラ４からそれぞれ取得される操作データには、各入力部（具体的には、各ボタン、アナログスティック、各センサ）からの入力に関する情報（具体的には、操作に関する情報、または、センサによる検出結果）が含まれている。本実施形態では、本体装置２に装着された左コントローラ３および／または右コントローラ４からそれぞれ所定周期で操作データが取得されており、当該取得した操作データを用いて操作データＤａが適宜更新される。なお、操作データＤａの更新周期は、後述するゲームシステム１で実行される処理の周期である１フレーム毎に更新されてもよいし、操作データが取得される周期毎に更新されてもよい。
【０１３３】
通信データＤｂは、無線通信を介して、他のゲームシステムから受信したデータであり、当該他のゲームシステムを用いて操作された他のユーザの操作データや、当該他のゲームシステムにおいて制御されている他のプレイヤオブジェクトの位置や動作等に関するデータで構成される。
【０１３４】
ゲームモードデータＤｃは、ユーザによって選択されて設定されたゲームモード（例えば、シングルプレイゲームモード、対戦プレイゲームモード、または協力プレイゲームモード）を示すデータである。
【０１３５】
第１調整係数データＤｄは、上記演出用振動の強さを調整するための第１調整係数を示すデータである。第２調整係数データＤｅは、上記演出用振動の強さを調整するための第２調整係数を示すデータである。
【０１３６】
振動データＤｆは、左コントローラ３および右コントローラ４をそれぞれ振動させるための振動を示すデータである。調整振動データＤｇは、左コントローラ３および／または右コントローラ４を振動させるために振幅調整された振動を示すデータである。合成振動データＤｈは、複数の振動を合成した振動波形を示す振動データである。
【０１３７】
プレイヤオブジェクト位置データＤｉは、プレイヤオブジェクトＰＯや協力プレイにおいて他のユーザが操作する他のプレイヤオブジェクトの仮想空間における位置および方向（移動方向）をそれぞれ示すデータである。敵オブジェクト位置データＤｊは、敵オブジェクトＥＯの仮想空間における位置および方向を示すデータである。協力オブジェクト位置データＤｋは、協力プレイゲームモードにおいて登場する上記他のプレイヤオブジェクト（協力オブジェクト）の仮想空間における位置および方向（移動方向）をそれぞれ示すデータである。なお、プレイヤオブジェクト位置データＤｉ、敵オブジェクト位置データＤｊ、および協力オブジェクト位置データＤｋには、プレイヤオブジェクトや敵オブジェクトがそれぞれ発射した武器（弾等）の仮想空間における位置および方向（移動方向）を示すデータを含んでいる。
【０１３８】
陣地データＤｍは、仮想空間において設定されている「味方領域」、「敵領域」、および「中立領域」の位置をそれぞれ示すデータである。
【０１３９】
画像データＤｎは、ゲームの際に本体装置２のディスプレイ１２に画像（例えば、仮想オブジェクトの画像、フィールド画像、背景画像）を表示するためのデータである。
【０１４０】
次に、図２０〜図２４を参照して、本実施形態におけるゲーム処理の詳細な一例を説明する。図２０は、ゲームシステム１で実行されるゲーム処理の一例を示すフローチャートである。図２１は、図２０におけるステップＳ１４６において行われるシングルプレイゲーム処理の詳細の一例を示すサブルーチンである。図２２は、図２１におけるステップＳ１６５において行われるシングルプレイ係数算出処理の詳細の一例を示すサブルーチンである。図２３は、図２０におけるステップＳ１４９において行われる対戦プレイゲーム処理の詳細の一例を示すサブルーチンである。図２４は、図２０におけるステップＳ１５０において行われる協力プレイゲーム処理の詳細の一例を示すサブルーチンである。本実施形態においては、図２０〜図２４に示す一連の処理は、プロセッサ８１が各種プログラムＰａに含まれる通信プログラムや所定のアプリケーションプログラム（ゲームプログラム）を実行することによって行われる。また、図２０〜図２４に示すゲーム処理が開始されるタイミングは任意である。
【０１４１】
なお、図２０〜図２４に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えて（または代えて）別の処理が実行されてもよい。また、本実施形態では、上記フローチャートの各ステップの処理をプロセッサ８１が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、プロセッサ８１以外のプロセッサや専用回路が実行するようにしてもよい。また、本体装置２において実行される処理の一部は、本体装置２と通信可能な他の情報処理装置（例えば、本体装置２とネットワークを介して通信可能なサーバ）によって実行されてもよい。すなわち、図２０〜図２４に示す各処理は、本体装置２を含む複数の情報処理装置が協働することによって実行されてもよい。
【０１４２】
図２０において、プロセッサ８１は、左コントローラ３および／または右コントローラ４から操作データを取得して操作データＤａを更新し（ステップＳ１４１）、次のステップに処理を進める。
【０１４３】
次に、プロセッサ８１は、ユーザによってゲームモードが選択されたか否かを判定する（ステップＳ１４２）。そして、プロセッサ８１は、ゲームモードが選択された場合、ステップＳ１４３に処理を進める。一方、プロセッサ８１は、ゲームモードが選択されていない場合、上記ステップＳ１４１の処理を繰り返してユーザによってゲームモードが選択されるのを待つ。一例として、プロセッサ８１は、本体装置２のディスプレイ１２にゲームモードの選択を促す選択肢を表示し、上記ステップＳ１４１において取得した操作データがいずれかの選択肢を選択する操作を示す場合、ゲームモードが選択されたと判定する。例えば、プロセッサ８１は、本体装置２のディスプレイ１２に、シングルプレイゲームモード、対戦プレイゲームモード、および協力プレイゲームモードをそれぞれ選択する選択肢を表示して、何れかの選択肢の選択をユーザに促す。
【０１４４】
ステップＳ１４３において、プロセッサ８１は、ゲームモードを設定し、次のステップに処理を進める。例えば、プロセッサ８１は、上記ステップＳ１４２において選択されたゲームモードを示すデータを用いて、ゲームモードデータＤｃを更新する。なお、対戦プレイゲームモードまたは協力プレイゲームモードが設定された場合、プロセッサ８１は、当該ゲームに参加する他のユーザが操作するゲームシステムから当該ゲームに関するデータ（例えば、他のユーザが操作するプレイヤオブジェクトの種類、初期位置等を示すデータを受信し、通信データＤｂを更新する。
【０１４５】
次に、プロセッサ８１は、選択されたゲームモードに応じてゲーム処理における初期設定を行い（ステップＳ１４４）、次のステップに処理を進める。例えば、上記初期設定では、プロセッサ８１は、以下に説明する処理を行うためのパラメータを初期化し、例えば第１調整係数および第２調整係数をそれぞれ１．０に設定して、第１調整係数データＤｄおよび第２調整係数データＤｅをそれぞれ更新する。また、上記初期設定では、プロセッサ８１は、ゲームモードに応じてゲームプレイを行うためのゲームフィールドを全て「中立領域」として設定し、当該ゲームフィールド上のプレイヤオブジェクトＰＯの初期位置を設定してプレイヤオブジェクト位置データＤｉおよび陣地データＤｍをそれぞれ更新する。また、プロセッサ８１は、シングルプレイゲームモードが選択されている場合、上記ゲームフィールド上の敵オブジェクトＥＯの初期位置を設定して敵オブジェクト位置データＤｊを更新する。また、プロセッサ８１は、対戦プレイゲームモードが選択されている場合、通信データＤｂを参照して、当該ゲームに参加する他のユーザが操作するゲームシステムから受信したデータに基づいて、上記ゲームフィールド上の敵オブジェクトＥＯの初期位置を設定して敵オブジェクト位置データＤｊを更新する。また、プロセッサ８１は、協力プレイゲームモードが選択されている場合、通信データＤｂを参照して、当該ゲームに参加する他のユーザが操作するゲームシステムから受信したデータに基づいて、上記ゲームフィールド上の他のプレイヤオブジェクト（協力オブジェクト）の初期位置を設定して協力オブジェクト位置データＤｋを更新する。
【０１４６】
次に、プロセッサ８１は、シングルプレイゲームモードが選択されているか否かを判定する（ステップＳ１４５）。そして、プロセッサ８１は、シングルプレイゲームモードが選択されている場合、ステップＳ１４６に処理を進める。一方、プロセッサ８１は、シングルプレイゲームモードが選択されていない場合、ステップＳ１４７に処理を進める。
【０１４７】
ステップＳ１４６において、プロセッサ８１は、シングルプレイゲームモードによるゲーム処理を行い、ステップＳ１５１に処理を進める。以下、図２１を参照して、シングルプレイゲームモードによるゲーム処理について説明する。
【０１４８】
図２１において、プロセッサ８１は、左コントローラ３および右コントローラ４から操作データを取得して操作データＤａを更新し（ステップＳ１６１）、次のステップに処理を進める。
【０１４９】
次に、プロセッサ８１は、現時点がゲーム中であるか否かを判定する（ステップＳ１６２）。そして、プロセッサ８１は、現時点がゲーム開始直後を含むゲーム中である場合、ステップＳ１６３に処理を進める。一方、プロセッサ８１は、現時点がゲーム中ではない場合、当該サブルーチンによる処理を終了する。
【０１５０】
ステップＳ１６３において、プロセッサ８１は、プレイヤオブジェクト動作処理を行い、次のステップに処理を進める。例えば、プロセッサ８１は、上記ステップＳ１６１において取得した操作データに基づいて、プレイヤオブジェクトＰＯに対する指示内容を設定し、当該指示内容に応じてプレイヤオブジェクトＰＯを動作させて、プレイヤオブジェクト位置データＤｉを更新する。なお、プロセッサ８１は、プレイヤオブジェクトＰＯが「味方領域」を増やす動作を行った場合、当該動作に基づいて「味方領域」を拡大させて陣地データＤｍを更新する。
【０１５１】
次に、プロセッサ８１は、敵オブジェクト動作処理を行い（ステップＳ１６４）、次のステップに処理を進める。例えば、プロセッサ８１は、所定のアルゴリズムに基づいて、敵オブジェクトＥＯを自動制御により動作させて、敵オブジェクト位置データＤｊを更新する。なお、プロセッサ８１は、敵オブジェクトＥＯが「敵領域」を増やす動作を行った場合、当該動作に基づいて「敵領域」を拡大させて陣地データＤｍを更新する。
【０１５２】
次に、プロセッサ８１は、シングルプレイ係数算出処理を行い（ステップＳ１６５）、ステップＳ１６６に処理を進める。以下、図２２を参照して、シングルプレイ係数算出処理について説明する。
【０１５３】
図２２において、プロセッサ８１は、上記ゲームフィールド上において、敵オブジェクトＥＯがプレイヤオブジェクトＰＯを発見したか否かを判定する（ステップＳ１７１）。例えば、プロセッサ８１は、敵オブジェクトＥＯ毎に設定されている視界範囲にプレイヤオブジェクトＰＯが侵入してプレイヤオブジェクトＰＯの少なくとも一部が敵オブジェクトＥＯに見られている場合や、当該視界範囲内にプレイヤオブジェクトＰＯが存在する痕跡を敵オブジェクトＥＯに見られている場合、プレイヤオブジェクトＰＯが敵オブジェクトＥＯに発見されたと判定する。そして、プロセッサ８１は、プレイヤオブジェクトＰＯが敵オブジェクトＥＯに発見された場合、ステップＳ１７２に処理を進める。一方、プロセッサ８１は、プレイヤオブジェクトＰＯが敵オブジェクトＥＯに発見されていない場合、ステップＳ１７３に処理を進める。
【０１５４】
ここで、上記ステップＳ１７１の判定処理では、プレイヤオブジェクトＰＯが敵オブジェクトＥＯに発見されたか否かを判定している。これは、敵オブジェクトＥＯがプレイヤオブジェクトＰＯを発見することによってプレイヤオブジェクトＰＯを攻撃することが可能になり、当該敵オブジェクトＥＯは、プレイヤオブジェクトＰＯを攻撃する準備を開始することができる。つまり、敵オブジェクトＥＯの動作を制御しているプロセッサ８１は、敵オブジェクトＥＯがプレイヤオブジェクトＰＯを発見することによって、プレイヤオブジェクトＰＯを攻撃するための処理を開始することになり、上記ステップＳ１７１の判定処理では、当該処理が行われているか否かによって戦闘中であるか否かを判定していることになる。
【０１５５】
ステップＳ１７２において、プロセッサ８１は、プレイヤオブジェクトＰＯ発見後の経過時間に応じて、第１調整係数を１．０から０．０にフェードアウトする処理を行い、ステップＳ１７３に処理を進める。例えば、プロセッサ８１は、第１調整係数データＤｄが示す第１調整係数を用いて、プレイヤオブジェクトＰＯ発見時点からゲーム処理単位である６０フレーム（例えば、１秒間）かけて１．０から０．０にフェードアウトするように第１調整係数を変更し、当該変更後の第１調整係数を用いて第１調整係数データＤｄを更新する。
【０１５６】
ステップＳ１７３において、プロセッサ８１は、上記ゲームフィールド上において、プレイヤオブジェクトＰＯと敵オブジェクトＥＯとの距離を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、プレイヤオブジェクト位置データＤｉと敵オブジェクト位置データＤｊとを参照して、ゲームフィールド上におけるプレイヤオブジェクトＰＯと敵オブジェクトＥＯとの距離を算出する。
【０１５７】
次に、プロセッサ８１は、上記ステップＳ１７３で算出された距離が所定の閾値以下か否かを判定する（ステップＳ１７４）。例えば、プロセッサ８１は、上記ゲームフィールド上において、プレイヤオブジェクトＰＯと敵オブジェクトＥＯとの距離が所定の距離（例えば、３０ｍ）以内である場合、上記ステップＳ１７４において肯定判定する。そして、プロセッサ８１は、上記距離が所定の閾値以下である場合、ステップＳ１７５に処理を進める。一方、プロセッサ８１は、上記距離が所定の閾値より長い場合、ステップＳ１７８に処理を進める。上記ステップＳ１７４の判定処理では、プレイヤオブジェクトＰＯと敵オブジェクトＥＯとの距離が所定の距離以内か否かによって戦闘中であるか否かを判定していることになる。
【０１５８】
ステップＳ１７５において、プロセッサ８１は、プレイヤオブジェクトＰＯと敵オブジェクトＥＯとの距離に応じて第２調整係数を算出する処理を行い、ステップＳ１７８に処理を進める。例えば、プロセッサ８１は、第２調整係数データＤｅを参照して、上記距離が３０ｍから１０ｍに近づくことに応じて１．０から０．０に減少するように第２調整係数を算出し、算出後の第２調整係数を用いて第２調整係数データＤｅを更新する。
【０１５９】
ステップＳ１７８において、プロセッサ８１は、プレイヤオブジェクトＰＯと戦闘中と判定されていた敵オブジェクトＥＯが消滅したか否かを判定する。例えば、プロセッサ８１は、プレイヤオブジェクトＰＯと戦闘中と判定されていた敵オブジェクトＥＯが倒された場合（典型的には、上記ゲームフィールド上の敵オブジェクトＥＯが全滅した場合）、上記ステップＳ１７８において肯定判定する。そして、プロセッサ８１は、プレイヤオブジェクトＰＯと戦闘中と判定されていた敵オブジェクトＥＯが消滅した場合、ステップＳ１７９に処理を進める。一方、プロセッサ８１は、プレイヤオブジェクトＰＯと戦闘中と判定されていた敵オブジェクトＥＯが残っている場合や戦闘中と判定されていない場合、当該サブルーチンによる処理を終了する。
【０１６０】
ステップＳ１７９において、プロセッサ８１は、敵オブジェクトＥＯ消滅後の経過時間に応じて、第１調整係数を０．０から１．０にフェードインする処理を行い、次のステップに処理を進める。例えば、プロセッサ８１は、第１調整係数データＤｄが示す第１調整係数を用いて、敵オブジェクトＥＯ消滅時点からゲーム処理単位である１８０フレーム（例えば、３秒間）かけて０．０から１．０にフェードインするように第１調整係数を変更し、当該変更後の第１調整係数を用いて第１調整係数データＤｄを更新する。
【０１６１】
次に、プロセッサ８１は、第２調整係数を１．０に初期化し（ステップＳ１８０）、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、第２調整係数データＤｅが示す値を１．０に更新する。
【０１６２】
図２１に戻り、上記ステップＳ１６５におけるシングルプレイ係数算出処理の後、プロセッサ８１は、左コントローラ３および右コントローラ４をそれぞれ振動させるための振動データを生成する処理を行い（ステップＳ１６６）、次のステップに処理を進める。例えば、プロセッサ８１は、仮想空間内におけるプレイヤオブジェクトＰＯの状態に応じた振動波形を生成し、当該振動波形に基づいて振動データを生成して振動データＤｆを更新する。一例として、プロセッサ８１は、上述したようにプレイヤオブジェクトＰＯのゲームフィールドにおける複数の状態それぞれに複数種類の振動がそれぞれ対応付けられており、現時点のプレイヤオブジェクトＰＯの状態に応じた種類の振動を選択する。ここで、プレイヤオブジェクトＰＯの状態によっては複数の振動が設定され、この場合、プロセッサ８１は、それぞれの振動を示す振動波形の振動データを用いて振動データＤｆを更新する。
【０１６３】
次に、プロセッサ８１は、第１調整係数が第２調整係数より大きいか否かを判定する（ステップＳ１６７）。例えば、プロセッサ８１は、第１調整係数データＤｄおよび第２調整係数データＤｅを参照して、第１調整係数の値と第２調整係数の値とを比較する。そして、プロセッサ８１は、第１調整係数が第２調整係数以下である場合、ステップＳ１６８に処理を進める。一方、プロセッサ８１は、第１調整係数が第２調整係数より大きい場合、ステップＳ１６９に処理を進める。
【０１６４】
ステップＳ１６８において、プロセッサ８１は、第１調整係数を用いて演出用振動に対する振幅調整処理を行い、振動波形を合成する処理を行って、ステップＳ１７０に処理を進める。
【０１６５】
例えば、プロセッサ８１は、ゲームモードデータＤｃが示すゲームモード（ここでは、シングルプレイゲームモード）に基づいて、上記ステップＳ１６６において生成された振動データのうち、上記演出用振動に属する振動データの振幅を調整する。一例として、プロセッサ８１は、振動データＤｆが示す上記演出用振動の振動波形が示す振幅値に第１調整係数データＤｄが示す第１調整係数を乗算することによって調整後の振幅値を算出し、当該調整後の振幅値を用いて上記演出用振動の振動波形を調整して調整振動データＤｇを更新する。また、プロセッサ８１は、振動波形を調整した場合、当該調整した振動データを振動データＤｆから削除する。なお、第１調整係数データＤｄが示す第１調整係数が１．０の場合、当該振幅調整処理を行わなくてもかまわない。また、第１調整係数データＤｄが示す第１調整係数が０．０の場合、当該振幅調整処理を行わずに、振動データＤｆのうち、上記演出用振動に属する振動データを削除するだけの処理を実行してもよい。
【０１６６】
また、プロセッサ８１は、上記振幅調整処理の対象外となった振動データ（すなわち、上記演出用振動とは異なる種類の振動データであって、例えばゲーム性に関わる振動データ）および上記振幅調整処理後の振動データ（すなわち、上記演出用振動の振動データ）を用いて、振動波形を合成する処理を行う。例えば、プロセッサ８１は、上記ステップＳ１６６で生成された振動データＤｆおよび上記振幅調整処理で調整された調整振動データＤｇに基づいて、左コントローラ３および／または右コントローラ４を振動させるための合成振動データを生成し、当該データを用いて合成振動データＤｈを更新する。具体的には、プロセッサ８１は、振動データＤｆが示す振動波形それぞれと調整振動データＤｇが示す振動波形それぞれとを、上述した選択方式や加算方式等によって合成し、当該合成した振動波形を用いて合成振動データＤｈを更新する。なお、上記合成振動データＤｈには、左コントローラ３用の振動データと右コントローラ４用の振動データとをそれぞれ別に格納されてもよい。この場合、上記振動波形を合成する処理においても、左コントローラ３用の振動データを生成する処理と右コントローラ４用の振動データを生成する処理とを、それぞれ別に実行してもよい。
【０１６７】
一方、ステップＳ１６９において、プロセッサ８１は、第２調整係数を用いて演出用振動に対する振幅調整処理を行い、振動波形を合成する処理を行って、ステップＳ１７０に処理を進める。なお、上記ステップＳ１６９における振動調整処理および振動波形を合成する処理は、第１調整係数に代えて第２調整係数を用いることを除いて、上述したステップＳ１６８と同様であるため、ここでは詳細な説明を省略する。
【０１６８】
ステップＳ１７０において、プロセッサ８１は、振動データを送信する周期毎に当該周期に対応する振動データを左コントローラ３および右コントローラ４へ出力する処理を行い、当該サブルーチンによる処理を終了する。例えば、プロセッサ８１は、合成振動データＤｈを参照して、上記送信周期に対応する振動長さ分の振動データを左コントローラ３および右コントローラ４へ出力する。なお、合成振動データＤｈに左コントローラ３用の振動データと右コントローラ４用の振動データとが別に格納されている場合、プロセッサ８１は、上記送信周期に対応する振動長さ分の左コントローラ３用の振動データを左コントローラ３へ出力し、上記送信周期に対応する振動長さ分の右コントローラ４用の振動データを右コントローラ４へ出力する。このように各コントローラに振動データを出力されることによって、当該振動データを取得した左コントローラ３および右コントローラ４は、それぞれの振動データに応じた振動波形で振動する。
【０１６９】
図２０に戻り、上記ステップＳ１４５においてシングルプレイゲームモードが選択されていないと判定された場合、プロセッサ８１は、通信処理を行い（ステップＳ１４７）、次のステップに処理を進める。例えば、プロセッサ８１は、ゲームに参加する他のユーザが操作するゲームシステムからデータを受信する処理を行い、当該受信したデータを用いて通信データＤｂを更新する。
【０１７０】
次に、プロセッサ８１は、対戦プレイゲームモードが選択されているか否かを判定する（ステップＳ１４８）。そして、プロセッサ８１は、対戦プレイゲームモードが選択されている場合、ステップＳ１４９に処理を進める。一方、プロセッサ８１は、対戦プレイゲームモードが選択されていない場合、ステップＳ１５０に処理を進める。
【０１７１】
ステップＳ１４９において、プロセッサ８１は、対戦プレイゲームモードによるゲーム処理を行い、ステップＳ１５１に処理を進める。以下、図２３を参照して、対戦プレイゲームモードによるゲーム処理について説明する。
【０１７２】
図２３において、プロセッサ８１は、左コントローラ３および右コントローラ４から操作データを取得して操作データＤａを更新し（ステップＳ１９１）、次のステップに処理を進める。
【０１７３】
次に、プロセッサ８１は、現時点がゲーム中であるか否かを判定する（ステップＳ１９２）。そして、プロセッサ８１は、現時点がゲーム開始直後を含むゲーム中である場合、ステップＳ１９３に処理を進める。一方、プロセッサ８１は、現時点がゲーム中ではない場合、当該サブルーチンによる処理を終了する。
【０１７４】
ステップＳ１９３において、プロセッサ８１は、プレイヤオブジェクト動作処理を行い、次のステップに処理を進める。例えば、プロセッサ８１は、上記ステップＳ１９１において取得した操作データに基づいて、プレイヤオブジェクトＰＯに対する指示内容を設定し、当該指示内容に応じてプレイヤオブジェクトＰＯを動作させて、プレイヤオブジェクト位置データＤｉを更新する。なお、プロセッサ８１は、プレイヤオブジェクトＰＯが「味方領域」を増やす動作を行った場合、当該動作に基づいて「味方領域」を拡大させて陣地データＤｍを更新する。
【０１７５】
次に、プロセッサ８１は、敵オブジェクト動作処理を行い（ステップＳ１６４）、次のステップに処理を進める。例えば、プロセッサ８１は、通信データＤｂを参照して、ゲームに参加する他のユーザが操作するゲームシステムから送信されたデータを取得し、当該他のユーザが操作する敵オブジェクトＥＯを当該送信されたデータに基づいて動作させて、敵オブジェクト位置データＤｊを更新する。なお、プロセッサ８１は、敵オブジェクトＥＯが「敵領域」を増やす動作を行った場合、当該動作に基づいて「敵領域」を拡大させて陣地データＤｍを更新する。
【０１７６】
次に、プロセッサ８１は、ゲーム開始時点から所定時間が経過したか否かを判定する（ステップＳ１９５）。例えば、プロセッサ８１は、ゲーム開始時点から６０フレーム（１秒間）が経過している場合、ゲーム開始時点から所定時間が経過したと判定する。そして、プロセッサ８１は、ゲーム開始時点から所定時間が経過した場合、ステップＳ１９６に処理を進める。一方、プロセッサ８１は、ゲーム開始時点から所定時間が経過していない場合、ステップＳ１９７に処理を進める。
【０１７７】
ここで、上記ステップＳ１９５の判定処理では、他のユーザが操作する敵オブジェクトＥＯと対戦するゲームが開始されてから所定時間が経過したか否かを判定している。これは、ゲーム開始時点でプレイヤオブジェクトＰＯと敵オブジェクトＥＯとが上記ゲームフィールド上で離れて配置されて対戦できない状態であっても、当該ゲームか開始された後に所定時間が経過することによって、戦闘可能状態になり得ることを想定しており、上記ステップＳ１９５の判定処理では、所定時間が経過したか否かによって戦闘中であるか否かを判定していることになる。
【０１７８】
ステップＳ１９６において、プロセッサ８１は、ゲーム開始後の経過時間に応じて、第１調整係数を１．０から０．０にフェードアウトする処理を行い、ステップＳ１９７に処理を進める。例えば、プロセッサ８１は、第１調整係数データＤｄが示す第１調整係数を用いて、上記所定時間経過時点からの経過時間に応じて１．０から０．０にフェードアウト（漸減的に減少）するように第１調整係数を変更し、当該変更後の第１調整係数を用いて第１調整係数データＤｄを更新する。一例として、プロセッサ８１は、上記所定時間経過時点から２４０フレーム（例えば、４秒間）かけて調整係数が１．０から０．０にフェードアウトするように第１調整係数を変更する。
【０１７９】
ステップＳ１９７において、プロセッサ８１は、プレイヤオブジェクトＰＯが敵陣に向かって移動した距離を算出し、次のステップに処理を進める。例えば、プロセッサ８１は、プロセッサ８１は、上記ゲームフィールド上において、ゲーム開始時点の配置位置から敵オブジェクトＥＯが配置されている敵陣に向かってプレイヤオブジェクトＰＯが移動した距離を算出し、次のステップに処理を進める。
【０１８０】
次に、プロセッサ８１は、上記ステップＳ１９７において算出された移動距離に応じて第２調整係数を算出する処理を行い（ステップＳ１９８）、次のステップに処理を進める。例えば、プロセッサ８１は、第２調整係数データＤｅを参照して、上記移動距離が０ｍから４０ｍに増加することに応じて調整係数が１．０から０．０に減少するように第２調整係数を算出し、算出後の第２調整係数を用いて第２調整係数データＤｅを更新する。なお、上記ステップＳ１９７およびステップＳ１９８の処理では、プレイヤオブジェクトＰＯが敵オブジェクトＥＯの敵陣に向かって近づいた移動距離に応じて第２調整係数を設定している。これは、ゲーム開始時点でプレイヤオブジェクトＰＯと敵オブジェクトＥＯとが上記ゲームフィールド上で離れて配置されて対戦できない状態であっても、プレイヤオブジェクトＰＯが敵オブジェクトＥＯの敵陣に近づくことによって、戦闘可能状態になり得ることを想定しており、上記ステップＳ１９７およびステップＳ１９８の処理では、プレイヤオブジェクトＰＯの移動距離が長くなる程、戦闘中となりやすいことを利用して第２調整係数を設定していることになる。
【０１８１】
次に、プロセッサ８１は、左コントローラ３および右コントローラ４をそれぞれ振動させるための振動データを生成する処理を行い（ステップＳ１９９）、次のステップに処理を進める。なお、上記ステップＳ１９９における振動データを生成する処理は、上述したステップＳ１６６と同様であるため、ここでは詳細な説明を省略する。
【０１８２】
次に、プロセッサ８１は、第１調整係数が第２調整係数より大きいか否かを判定する（ステップＳ２００）。例えば、プロセッサ８１は、第１調整係数データＤｄおよび第２調整係数データＤｅを参照して、第１調整係数の値と第２調整係数の値とを比較する。そして、プロセッサ８１は、第１調整係数が第２調整係数以下である場合、ステップＳ２０１に処理を進める。一方、プロセッサ８１は、第１調整係数が第２調整係数より大きい場合、ステップＳ２０２に処理を進める。
【０１８３】
ステップＳ２０１において、プロセッサ８１は、第１調整係数を用いて演出用振動に対する振幅調整処理を行い、振動波形を合成する処理を行って、ステップＳ２０３に処理を進める。なお、上記ステップＳ２０１における振動調整処理および振動波形を合成する処理は、上述したステップＳ１６８と同様であるため、ここでは詳細な説明を省略する。
【０１８４】
一方、ステップＳ２０２において、プロセッサ８１は、第２調整係数を用いて演出用振動に対する振幅調整処理を行い、振動波形を合成する処理を行って、ステップＳ２０３に処理を進める。なお、上記ステップＳ２０２における振動調整処理および振動波形を合成する処理は、上述したステップＳ１６９と同様であるため、ここでは詳細な説明を省略する。
【０１８５】
ステップＳ２０３において、プロセッサ８１は、振動データを送信する周期毎に当該周期に対応する振動データを左コントローラ３および右コントローラ４へ出力する処理を行い、当該サブルーチンによる処理を終了する。なお、上記ステップＳ２０３における振動データを出力する処理は、上述したステップＳ１７０と同様であるため、ここでは詳細な説明を省略する。
【０１８６】
図２０に戻り、上記ステップＳ１４８において対戦プレイゲームモードが選択されていないと判定された場合、プロセッサ８１は、協力プレイゲームモードによるゲーム処理を行い、ステップＳ１５１に処理を進める。以下、図２４を参照して、協力プレイゲームモードによるゲーム処理について説明する。
【０１８７】
図２４において、プロセッサ８１は、左コントローラ３および右コントローラ４から操作データを取得して操作データＤａを更新し（ステップＳ２１１）、次のステップに処理を進める。
【０１８８】
次に、プロセッサ８１は、現時点がゲーム中であるか否かを判定する（ステップＳ２１２）。そして、プロセッサ８１は、現時点がゲーム開始直後を含むゲーム中である場合、ステップＳ２１３に処理を進める。一方、プロセッサ８１は、現時点がゲーム中ではない場合、当該サブルーチンによる処理を終了する。
【０１８９】
ステップＳ２１３において、プロセッサ８１は、プレイヤオブジェクト動作処理を行い、次のステップに処理を進める。例えば、プロセッサ８１は、上記ステップＳ２１１において取得した操作データに基づいて、プレイヤオブジェクトＰＯに対する指示内容を設定し、当該指示内容に応じてプレイヤオブジェクトＰＯを動作させて、プレイヤオブジェクト位置データＤｉを更新する。なお、プロセッサ８１は、プレイヤオブジェクトＰＯが「味方領域」を増やす動作を行った場合、当該動作に基づいて「味方領域」を拡大させて陣地データＤｍを更新する。
【０１９０】
次に、プロセッサ８１は、協力オブジェクト動作処理を行い（ステップＳ２１４）、次のステップに処理を進める。例えば、プロセッサ８１は、通信データＤｂを参照して、ゲームに参加する他のユーザが操作するゲームシステムから送信されたデータを取得し、当該他のユーザが操作する協力オブジェクト（他のプレイヤオブジェクト）を当該送信されたデータに基づいて動作させて、協力オブジェクト位置データＤｋを更新する。なお、プロセッサ８１は、協力オブジェクトが「味方領域」を増やす動作を行った場合、当該動作に基づいて「味方領域」を拡大させて陣地データＤｍを更新する。
【０１９１】
次に、プロセッサ８１は、敵出現イベント中か否かを判定する（ステップＳ２１５）。例えば、プロセッサ８１は、自動制御によって敵オブジェクトＥＯが出現する敵出現イベント開始時点またはイベント中である場合、上記ステップＳ２１５において肯定判定する。そして、プロセッサ８１は、敵出現イベント中である場合、ステップＳ２１６に処理を進める。一方、プロセッサ８１は、敵出現イベント中でない場合、ステップＳ２１８に処理を進める。
【０１９２】
ここで、上記ステップＳ２１５の判定処理では、敵オブジェクトＥＯが出現するイベント中か否かを判定している。これは、ゲーム開始時点において上記ゲームフィールド上に敵オブジェクトＥＯが配置されておらずプレイヤオブジェクトＰＯや協力オブジェクトが対戦できない状態であっても、当該ゲームか開始された後に敵オブジェクトＥＯが出現するイベントが開始されることに応じて、当該敵オブジェクトＥＯとプレイヤオブジェクトＰＯおよび協力オブジェクトとが戦闘可能状態になり得ることを想定しており、上記ステップＳ２１５の判定処理では、敵出現イベント中である場合にプレイヤオブジェクトＰＯや協力オブジェクトが敵オブジェクトＥＯと戦闘中であると判定していることになる。
【０１９３】
ステップＳ２１６において、プロセッサ８１は、敵オブジェクト動作処理を行い、次のステップに処理を進める。例えば、プロセッサ８１は、敵出現イベント中に所定数の敵オブジェクトＥＯを上記ゲームフィールド上に登場させるとともに、所定のアルゴリズムに基づいて、敵オブジェクトＥＯを自動制御により動作させて、敵オブジェクト位置データＤｊを更新する。なお、プロセッサ８１は、敵オブジェクトＥＯが「敵領域」を増やす動作を行った場合、当該動作に基づいて「敵領域」を拡大させて陣地データＤｍを更新する。
【０１９４】
次に、プロセッサ８１は、敵出現イベント開始後の経過時間に応じて、第１調整係数を１．０から０．０にフェードアウトする処理を行い、ステップＳ２１９に処理を進める。例えば、プロセッサ８１は、第１調整係数データＤｄが示す第１調整係数を用いて、敵出現イベント開始後の経過時間に応じて１．０から０．０にフェードアウト（漸減的に減少）するように第１調整係数を変更し、当該変更後の第１調整係数を用いて第１調整係数データＤｄを更新する。一例として、プロセッサ８１は、敵出現イベント開始時点から３００フレーム（例えば、５秒間）かけて調整係数が１．０から０．０にフェードアウトするように第１調整係数を変更する。
【０１９５】
一方、上記ステップＳ２１５において敵出現イベント中でないと判定された場合、プロセッサ８１は、敵出現イベント終了後の経過時間に応じて、第１調整係数を０．０から１．０にフェードインする処理を行い、ステップＳ２１９に処理を進める。例えば、プロセッサ８１は、第１調整係数データＤｄが示す第１調整係数を用いて、敵出現イベント終了後の経過時間に応じて０．０から１．０にフェードイン（漸増的に増加）するように第１調整係数を変更し、当該変更後の第１調整係数を用いて第１調整係数データＤｄを更新する。一例として、プロセッサ８１は、敵出現イベント終了時点から３００フレーム（例えば、５秒間）かけて調整係数が０．０から１．０にフェードインするように第１調整係数を変更する。
【０１９６】
ステップＳ２１９において、プロセッサ８１は、左コントローラ３および右コントローラ４をそれぞれ振動させるための振動データを生成する処理を行い、次のステップに処理を進める。なお、上記ステップＳ２１９における振動データを生成する処理は、上述したステップＳ１６６と同様であるため、ここでは詳細な説明を省略する。
【０１９７】
次に、プロセッサ８１は、第１調整係数を用いて演出用振動に対する振幅調整処理を行い、振動波形を合成する処理を行って（ステップＳ２２０）、次のステップに処理を進める。なお、上記ステップＳ２２０における振動調整処理および振動波形を合成する処理は、上述したステップＳ１６８と同様であるため、ここでは詳細な説明を省略する。
【０１９８】
次に、プロセッサ８１は、振動データを送信する周期毎に当該周期に対応する振動データを左コントローラ３および右コントローラ４へ出力する処理を行い（ステップＳ２２１）、当該サブルーチンによる処理を終了する。なお、上記ステップＳ２２１における振動データを出力する処理は、上述したステップＳ１７０と同様であるため、ここでは詳細な説明を省略する。
【０１９９】
図２０に戻り、ステップＳ１５１において、プロセッサ８１は、表示制御処理を行い、次のステップに処理を進める。例えば、プロセッサ８１は、プレイヤオブジェクト位置データＤｉ、敵オブジェクト位置データＤｊ、および協力オブジェクト位置データＤｋを用いて、ゲームフィールド上にプレイヤオブジェクトＰＯ、敵オブジェクトＥＯ、および／または協力オブジェクトを配置する。また、プロセッサ８１は、陣地データＤｍを用いて、ゲームフィールド上に「味方領域」、「敵領域」、および「味方領域」でも「敵領域」でもない「中立領域」の何れかであることを区別する仮想オブジェクト（例えば、色が異なる液体等）を配置する。そして、プロセッサ８１は、所定の位置（例えば、プレイヤオブジェクトＰＯの背後）に配置された仮想カメラからゲームフィールドを見た仮想空間画像を生成し、当該仮想空間画像を表示装置（例えば、ディスプレイ１２）の表示画面に表示する処理を行う。
【０２００】
次に、プロセッサ８１は、ゲームを終了するか否かを判定する（ステップＳ１５２）。上記ステップＳ１５２においてゲームを終了する条件としては、例えば、上記ゲームの結果が確定したことや、ユーザがゲームを終了する操作を行ったこと等がある。プロセッサ８１は、ゲームを終了しない場合に上記ステップＳ１４５に戻って処理を繰り返し、ゲームを終了する場合に当該フローチャートによる処理を終了する。以降、ステップＳ１４５〜ステップＳ１５２の一連の処理は、ステップＳ１５２においてゲームを終了すると判定されるまで繰り返し実行される。
【０２０１】
このように、本実施例においては、プレイヤオブジェクトＰＯの複数の状態それぞれに複数種類の振動をそれぞれ対応付けて振動信号を生成して、左コントローラ３および右コントローラ４を振動させる。そして、プレイヤオブジェクトＰＯが所定の状況（例えば、敵オブジェクトＥＯとの戦闘中）にあると判定された場合、上記複数種類の振動のうち演出用振動について、当該所定の状況であると判定されないときよりも振動が弱くなるまたは振動が無くなるように振動信号を生成する。したがって、上記所定の状況においては、上記複数種類の振動のうちゲーム性に関わる振動をユーザにわかりやすく知覚させることが可能となる。
【０２０２】
なお、上述した実施例では、ゲーム開始前にゲームモードが選択されて設定される例を用いたが、ゲーム中であってもゲームモードが変更可能であってもよい。一例として、所定の操作が行われることによってゲームモードの選択肢を表示してゲームを中断し、当該ゲーム中断中に選択肢が選択されることに応じて、ゲームモードが切り替え可能に構成されてもよい。この場合、ゲームモードが切り替えられた時点で調整係数などのパラメータが初期化されてもよい。
【０２０３】
また、上述したゲーム例では、左コントローラ３および右コントローラ４が本体装置２に装着された一体型装置を用いてプレイする例を用いたが、本体装置２から左コントローラ３および右コントローラ４を取り外した状態でプレイしてもよい。例えば、ユーザが左手で左コントローラ３を把持し、右手で右コントローラ４を把持した状態でゲームプレイする際に左コントローラ３および右コントローラ４に振動を与える場合、プレイヤオブジェクトＰＯが所定の状況にある場合に演出用振動を弱くまたは演出用振動がなくなるように振動制御してもよい。この場合、ゲーム画像を本体装置２のディスプレイ１２に表示してもよいし、本体装置２単体をクレードルに装着することによってゲーム画像を据置型モニタの表示画面に表示してもよい。
【０２０４】
また、上述した実施例では、左コントローラ３の振動データと右コントローラ４の振動データとの振幅を調整する処理を、本体装置２において行っているが、他の装置において当該処理を行ってもよい。例えば、振動データを用いて振動することになる左コントローラ３および／または右コントローラ４側において、当該振動データにおける振幅を調整する処理を行ってもよい。この場合、本体装置２から対象となるコントローラへ、振動データと振幅を調整するための調整係数とを送信することによって、当該コントローラ側で振動データの振幅を調整する処理が可能となる。
【０２０５】
また、上述した実施例では、１人のユーザが左コントローラ３および／または右コントローラ４を用いてゲームプレイする例を用いたが、複数のユーザがゲームプレイすることも考えられる。この場合、それぞれのユーザが用いる左コントローラ３および／または右コントローラ４に対して、それぞれのユーザが操作するプレイヤオブジェクトの状態に応じた振動をそれぞれのコントローラに与えればよい。また、左コントローラ３および右コントローラ４とは異なる、単一のゲームコントローラによるゲームプレイが可能である場合、当該単一のゲームコントローラに与えられる振動強さがプレイヤオブジェクトの状態に応じて調整されてもよい。
【０２０６】
また、上述した実施例では、プレイヤオブジェクトの状態に応じて振動の振幅が調整される例を用いたが、振動の周波数を調整してもかまわない。例えば、操作に用いられる操作装置の形状、サイズ、重量、材質等によって異なる共振周波数の特性を有している。また、操作に用いられる操作装置によって、当該操作装置を操作するユーザが振動を感じやすい周波数帯域や振動を感じにくい周波数帯域があることも考えられる。このような操作装置固有の共振周波数、振動を感じやすい周波数帯域、および／または振動を感じにくい周波数帯域を避けるように、または積極的に当該共振周波数および／または当該周波数帯域を狙って振動の周波数を調整してもよい。また、操作装置の構成により、周波数が相対的に高い振動を感じやすい場合や周波数が相対的に低い振動を感じやすい場合が考えられる。このような場合、プレイヤオブジェクトの状態に応じて、操作装置に与える振動の周波数を相対的に高い周波数や低い周波数にシフトして調整してもよい。さらに、上述したプレイヤオブジェクトの状態に応じた振動の振幅を調整に、上記振動の周波数の調整を加えてもかまわない。
【０２０７】
また、上述した実施例では、演出用振動を弱くするまたは演出用振動を０にするプレイヤオブジェクトＰＯにおける所定の状況の一例として、プレイヤオブジェクトＰＯが敵オブジェクトＥＯと戦闘中であることを用いたが、プレイヤオブジェクトＰＯが他の状態であるときに演出用振動を弱くまたは０にしてもかまわない。例えば、上述したプレイヤオブジェクトＰＯが他のオブジェクトと試合中であることの他に、プレイヤオブジェクトＰＯが緻密なものを生成（例えば、精巧なものの組み立て作業、文字、線、図形の入力等）する状態、プレイヤオブジェクトＰＯにより正確な動作を要求する状態、プレイヤオブジェクトＰＯが音や振動を聞き分ける状態等、演出用振動が生じることによってゲーム進行が阻害される可能性がある状況の場合に、プレイヤオブジェクトＰＯが上記所定の状況にあると判定されてもよい。
【０２０８】
また、他の実施形態においては、本体装置２は、据置型モニタと直接通信可能であってもよい。例えば、本体装置２と据置型モニタとが直接有線通信または直接無線通信を行うことが可能であってもよい。この場合、本体装置２は、本体装置２と据置型モニタとが直接通信可能か否かに基づいて画像の表示先を決定してもよい。
【０２０９】
また、付加装置（例えば、クレードル）は、本体装置２を着脱可能な任意の付加装置であってよい。付加装置は、本実施形態のように、本体装置２に対する充電を行う機能を有していてもよいし、有していなくてもよい。
【０２１０】
また、ゲームシステム１は、どのような装置であってもよく、携帯型のゲーム装置、任意の携帯型電子機器（ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、携帯電話、パーソナルコンピュータ、カメラ、タブレット等）等であってもよい。
【０２１１】
また、上述した説明では情報処理（ゲーム処理）をゲームシステム１でそれぞれ行う例を用いたが、上記処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、ゲームシステム１がさらに他の装置（例えば、別のサーバ、他の画像表示装置、他のゲーム装置、他の携帯端末）と通信可能に構成されている場合、上記処理ステップは、さらに当該他の装置が協働することによって実行してもよい。このように、上記処理ステップの少なくとも一部を他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した情報処理（ゲーム処理）は、少なくとも１つの情報処理装置により構成される情報処理システムに含まれる１つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、ゲームシステム１のプロセッサ８１が所定のプログラムを実行することによって情報処理を行うことが可能であるが、ゲームシステム１が備える専用回路によって上記処理の一部または全部が行われてもよい。
【０２１２】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置（据置型のゲーム装置）と携帯型の情報処理装置（携帯型のゲーム装置）との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
【０２１３】
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
【０２１４】
また、上記プログラムは、外部メモリ等の外部記憶媒体を通じてゲームシステム１に供給されるだけでなく、有線または無線の通信回線を通じて当該装置に供給されてもよい。また、上記プログラムは、当該装置内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、ＣＤ−ＲＯＭ、ＤＶＤ、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【０２１５】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書（定義を含めて）が優先する。
【産業上の利用可能性】
【０２１６】
以上のように、本発明は、振動子を有する装置の使用態様に応じて適切な振動をユーザに与えることが可能なゲームシステム、ゲームプログラム、ゲーム装置、およびゲーム処理方法を提供することである。
【符号の説明】
【０２１７】
１…ゲームシステム
２…本体装置
３…左コントローラ
４…右コントローラ
６…据置型モニタ
１１…ハウジング
１２…ディスプレイ
８１…プロセッサ
８２…ネットワーク通信部
８３…コントローラ通信部
８５…ＤＲＡＭ
１０７、１１７…振動子
【図１】
2019017475.tif 000003
【図２】
2019017475.tif 000004
【図３】
2019017475.tif 000005
【図４】
2019017475.tif 000006
【図５】
2019017475.tif 000007
【図６】
2019017475.tif 000008
【図７】
2019017475.tif 000009
【図８】
2019017475.tif 000010
【図９】
2019017475.tif 000011
【図１０】
2019017475.tif 000012
【図１１】
2019017475.tif 000013
【図１２】
2019017475.tif 000014
【図１３】
2019017475.tif 000015
【図１４】
2019017475.tif 000016
【図１５】
2019017475.tif 000017
【図１６】
2019017475.tif 000018
【図１７】
2019017475.tif 000019
【図１８】
2019017475.tif 000020
【図１９】
2019017475.tif 000021
【図２０】
2019017475.tif 000022
【図２１】
2019017475.tif 000023
【図２２】
2019017475.tif 000024
【図２３】
2019017475.tif 000025
【図２４】
2019017475.tif 000026