(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-20
(45)【発行日】2023-03-29
(54)【発明の名称】ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
(51)【国際特許分類】
A63F 13/55 20140101AFI20230322BHJP
A63F 13/211 20140101ALI20230322BHJP
A63F 13/42 20140101ALI20230322BHJP
G06F 3/01 20060101ALI20230322BHJP
G06F 3/0487 20130101ALI20230322BHJP
【FI】
A63F13/55
A63F13/211
A63F13/42
G06F3/01 510
G06F3/01 570
G06F3/0487
(21)【出願番号】P 2021022374
(22)【出願日】2021-02-16
【審査請求日】2021-09-03
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】山田 善光
(72)【発明者】
【氏名】堂田 卓宏
【審査官】西村 民男
(56)【参考文献】
【文献】特開2020-130213(JP,A)
【文献】特開2018-110649(JP,A)
【文献】特開2011-240000(JP,A)
【文献】特開2008-73184(JP,A)
【文献】特開2001-314645(JP,A)
【文献】国際公開第2018/186303(WO,A1)
【文献】山田 雅巳,“メジャーリーグ ベースボール 2K7”,「GAMESIDE 2007.10 Vol.08」,日本,株式会社マイクロマガジン社,2007年10月01日,第4巻,第5号,pp.74,75
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24,13/00-13/98
G06F 3/01, 3/048-3/04895
(57)【特許請求の範囲】
【請求項1】
情報処理システムのプロセッサに実行させるゲームプログラムであって、
前記プロセッサに、
仮想空間内において、所定のアイテムオブジェクトを持ったプレイヤオブジェクトを制御させ、
操作装置に対して第1の方向入力が行われたことに基づいて、当該第1の方向入力に係る第1の入力方向に応じた向きに前記アイテムオブジェクトを構える構えアクションを前記プレイヤオブジェクトに行わせ、
前記プレイヤオブジェクトが前記構えアクションを行っている場合に、前記操作装置に対して第2の方向入力が行われたことに基づいて、当該第2の方向入力に係る第2の入力方向に応じた向きに前記アイテムオブジェクトを振る第1振りアクションを前記プレイヤオブジェクトに行わせ、
前記操作装置に対して、当該操作装置への入力における原点に対する変位量が第1の値以下の状態から少なくとも当該第1の値を超えた状態になるような往路方向入力と、当該往路方向入力の後に当該変位量が第2の値以下の状態になるような復路方向入力とが第1の時間内に行われたことに基づいて、当該往路方向入力に係る往路入力方向および前記復路方向入力に係る復路入力方向の少なくとも一方に基づく向きに前記アイテムオブジェクトを振る第2振りアクションを前記プレイヤオブジェクトに行わせる、ゲームプログラム。
【請求項2】
前記プロセッサに、前記変位量が前記第1の値以下の状態から当該第1の値よりも大きい第3の値以上に増加する前記往路方向入力と、前記復路方向入力とが前記第1の時間内に行われたことに基づいて、前記第2振りアクションを前記プレイヤオブジェクトに行わせる、請求項1記載のゲームプログラム。
【請求項3】
前記プロセッサに、前記プレイヤオブジェクトが前記構えアクションを行っている場合に、前記第2の方向入力として、前記変位量が第4の値以上から当該第4の値未満になった後で第5の値以上となる方向入力が行われたことに基づいて、前記第1振りアクションを前記プレイヤオブジェクトに行わせる、請求項1または2に記載のゲームプログラム。
【請求項4】
前記第1の入力方向と前記第2の入力方向は、前記原点に対して互いに逆の方向である、請求項1乃至3のいずれか記載のゲームプログラム。
【請求項5】
ユーザによる前記操作装置への入力が行われない状態においては、前記変位量が所定の値以下となる、または当該変位量が所定時間経過後に当該所定の値以下となるように漸減する、請求項1乃至4のいずれかに記載のゲームプログラム。
【請求項6】
前記操作装置は、スティックデバイスを備え、当該スティックデバイスの傾きに応じた入力方向データを出力する、請求項1乃至5のいずれかに記載のゲームプログラム。
【請求項7】
前記プロセッサに更に、前記操作装置から取得した時間的に連続する2つの入力データが示す座標の位置関係が、前記原点を中心とした原点領域を挟む位置関係である場合、当該原点領域内に対する入力が行われたと判定させる、請求項1乃至6のいずれかに記載のゲームプログラム。
【請求項8】
前記プロセッサに、前記往路入力方向と前記復路入力方向との角度差が所定の範囲内である場合に、前記第2振りアクションを前記プレイヤオブジェクトに行わせる、請求項1乃至7のいずれかに記載のゲームプログラム。
【請求項9】
前記プロセッサに、前記変位量が前記第1の値以下である状態が所定時間以上続いた後に当該変位量が前記第1の値を越えて増加する前記往路方向入力と、更にその後に当該変位量が前記第2の値以下に減少する前記復路方向入力とが前記第1の時間
内に行われたことに基づいて、前記第2振りアクションを前記プレイヤオブジェクトに行わせる、請求項1乃至8のいずれかに記載のゲームプログラム。
【請求項10】
前記プロセッサに、直前の所定時間内の入力座標の軌跡の合計距離が一定以下であることを更に条件として、前記第2振りアクションを前記プレイヤオブジェクトに行わせる、請求項1乃至9のいずれかに記載のゲームプログラム。
【請求項11】
前記プロセッサに更に、前記第1の方向入力の解除に応じて、前記アイテムオブジェクトを振る第3振りアクションを前記プレイヤオブジェクトに行わせる、請求項1乃至10のいずれかに記載のゲームプログラム。
【請求項12】
前記プロセッサに更に、前記変位量が第6の値以上である状態で前記プレイヤオブジェクトが前記構えアクションを行っている場合に、前記操作装置に対して、当該変位量が第6の値以上である状態から当該第6の値未満である状態になった後に第7の値以上である状態となるような前記第2の方向入力、および、当該第2の方向入力の後、当該変位量が第7の値未満の状態になってから当該第6の値以上の状態に戻るような第3の方向入力が所定時間内に行われた場合、当該第2または第3の方向入力に係る方向に対応する仮想ゲーム空間内における方向と直交する軸周りに回転して前記アイテムオブジェクトを振る第4振りアクションを前記プレイヤオブジェクトに行わせる、請求項1乃至11のいずれかに記載のゲームプログラム。
【請求項13】
前記操作装置は更に、慣性センサを備え、
前記ゲームプログラムは、前記プロセッサに更に、
第1の操作モードにおいては、前記プレイヤオブジェクトに、前記第1の方向入力および前記第2の方向入力が行われたことに基づいて前記構えアクションおよび前記
第1振りアクションを行わせ、
前記往路方向入力および前記復路方向入力に基づいて前記第2振りアクションを行わせ、
第2の操作モードにおいては、
前記操作装置の姿勢に基づいて前記構えアクションを行わせ、
前記操作装置に対する振り入力に基づいて、前記第1振りアクションおよび前記第2振りアクションの少なくとも一方を行わせる、請求項1乃至12のいずれかに記載のゲームプログラム。
【請求項14】
前記アイテムオブジェクトは、前記第1振りアクションまたは前記第2振りアクションによって敵オブジェクトに対して攻撃を行うための武器オブジェクトである、請求項1乃至13のいずれかに記載のゲームプログラム。
【請求項15】
少なくとも1のプロセッサを含むゲーム装置であって、
仮想空間内において、所定のアイテムオブジェクトを持ったプレイヤオブジェクトを制御し、
方向入力が可能な操作装置から出力された当該操作装置に対する第1の方向入力を示すデータに基づいて、当該第1の方向入力に係る入力方向に応じた向きに前記アイテムオブジェクトを構える構えアクションを前記プレイヤオブジェクトに行わせ、
前記プレイヤオブジェクトが前記構えアクションを行っている場合に、前記操作装置に対して第2の方向入力が行われたことに基づいて、当該第2の方向入力に係る第2の入力方向に応じた向きに前記アイテムオブジェクトを振る第1振りアクションを前記プレイヤオブジェクトに行わせ、
前記操作装置に対して、当該操作装置への入力における原点に対する変位量が第1の値
以下の状態から少なくとも当該第1の値を超えた状態になるような往路方向入力と、当該往路方向入力の後に当該変位量が第2の値以下の状態になるような復路方向入力とが第1の時間内に行われたことに基づいて、当該往路方向入力に係る往路入力方向および前記復路方向入力に係る復路入力方向の少なくとも一方に基づく向きに前記アイテムオブジェクトを振る第2振りアクションを前記プレイヤオブジェクトに行わせる、ゲーム装置。
【請求項16】
少なくとも1のプロセッサを含むゲームシステムであって、
仮想空間内において、所定のアイテムオブジェクトを持ったプレイヤオブジェクトを制御し、
方向入力が可能な操作装置から出力された当該操作装置に対する第1の方向入力を示すデータに基づいて、当該第1の方向入力に係る入力方向に応じた向きに前記アイテムオブジェクトを構える構えアクションを前記プレイヤオブジェクトに行わせ、
前記プレイヤオブジェクトが前記構えアクションを行っている場合に、前記操作装置に対して第2の方向入力が行われたことに基づいて、当該第2の方向入力に係る第2の入力方向に応じた向きに前記アイテムオブジェクトを振る第1振りアクションを前記プレイヤオブジェクトに行わせ、
前記操作装置に対して、当該操作装置への入力における原点に対する変位量が第1の値以下の状態から少なくとも当該第1の値を超えた状態になるような往路方向入力と、当該往路方向入力の後に当該変位量が第2の値以下の状態になるような復路方向入力とが第1の時間内に行われたことに基づいて、当該往路方向入力に係る往路入力方向および前記復路方向入力に係る復路入力方向の少なくとも一方に基づく向きに前記アイテムオブジェクトを振る第2振りアクションを前記プレイヤオブジェクトに行わせる、ゲームシステム。
【請求項17】
情報処理システムを制御するプロセッサが実行するゲーム処理方法であって、
前記プロセッサに、
仮想空間内において、所定のアイテムオブジェクトを持ったプレイヤオブジェクトを制御させ、
方向入力が可能な操作装置に対する第1の方向入力に基づいて、当該第1の方向入力に係る入力方向に応じた向きに前記アイテムオブジェクトを構える構えアクションを前記プレイヤオブジェクトに行わせ、
前記プレイヤオブジェクトが前記構えアクションを行っている場合に、前記操作装置に対して第2の方向入力が行われたことに基づいて、当該第2の方向入力に係る第2の入力方向に応じた向きに前記アイテムオブジェクトを振る第1振りアクションを前記プレイヤオブジェクトに行わせ、
前記操作装置に対して、当該操作装置への入力における原点に対する変位量が第1の値以下の状態から少なくとも当該第1の値を超えた状態になるような往路方向入力と、当該往路方向入力の後に当該変位量が第2の値以下の状態になるような復路方向入力とが第1の時間内に行われたことに基づいて、当該往路方向入力に係る往路入力方向および前記復路方向入力に係る復路入力方向の少なくとも一方に基づく向きに前記アイテムオブジェクトを振る第2振りアクションを前記プレイヤオブジェクトに行わせる、ゲーム処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想空間内で所定のアイテムオブジェクトを持ったプレイヤオブジェクトに所定のアクションを実行させるゲーム処理に関する。
【背景技術】
【0002】
従来から、アナログスティックを操作して仮想キャラクタに剣を振らせるゲームが知られている(例えば特許文献1)。このようなゲームでは、例えば、アナログスティックが、元の位置と隣接する位置に移動された場合、キャラクタは、剣の構えを変える。また、アナログボタンが、元の位置に隣接しない位置に移動された場合、それがゆっくりした移動である場合、キャラクタは、剣の構えを変え、比較的速い移動である場合は、キャラクタは、剣を振って、敵を攻撃する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のゲームでは、ある方向に剣を振らせる操作については1種類しかないため、多様な操作をプレイヤに提供するものではなかった。
【0005】
それ故に、本発明の目的は、仮想キャラクタが剣などの仮想オブジェクトを振る動作を行うに際して、多様な操作方法を提供可能なゲームプログラム、ゲーム処理装置、ゲームシステム、ゲーム処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0007】
構成例の一例は、プロセッシングシステムのプロセッサに実行させるゲームプログラムであって、プロセッサに、以下を実行させる。仮想空間内において、所定のアイテムオブジェクトを持ったプレイヤオブジェクトを制御させる。操作装置に対する第1の方向入力に基づいて、当該第1の方向入力に係る入力方向に応じた向きに上記アイテムオブジェクトを構える構えアクションをプレイヤオブジェクトに行わせる。プレイヤオブジェクトが構えアクションを行っている場合に、操作装置に対して第2の方向入力が行われたことに基づいて、当該第2の方向入力に係る第2の入力方向に応じた向きにアイテムオブジェクトを振る第1振りアクションをプレイヤオブジェクトに行わせる。更に、操作装置に対して、当該操作装置への入力における原点に対する変位量が第1の値以下の状態から少なくとも当該第1の値を超えた状態になるような往路方向入力と、当該往路方向入力の後に当該変位量が第2の値以下の状態になるような復路方向入力とが第1の時間内に行われたことに基づいて、当該往路方向入力に係る往路入力方向および復路方向入力に係る復路入力方向の少なくとも一方に基づく向きにアイテムオブジェクトを振る第2振りアクションをプレイヤオブジェクトに行わせる。
【0008】
上記構成例によれば、アイテムオブジェクトを振るアクションを行わせる際に、第1の方向にアイテムを構えている状態で第2の方向への入力を行う操作でも、所定の変位量を越えるような往路方向入力および当該所定の変位量以下になるような復路方向入力を所定時間内に行う操作でも、いずれの操作でもアイテムオブジェクトを振らせることができる。これにより、プレイヤオブジェクトにアイテムオブジェクトを振らせる操作について、ユーザに多様な操作を提供できる。
【0009】
他の構成例として、プロセッサに、変位量が第1の値以下の状態から当該第1の値よりも大きい第3の値以上に増加するような往路方向入力と、上記復路方向入力とが第1の時間内に行われたことに基づいて、第2振りアクションをプレイヤオブジェクトに行わせてもよい。
【0010】
上記構成例によれば、例えば操作装置の方向入力可能範囲における端までのような、ある程度大きな変位量となる往路方向入力を要求している。そのため、小さな変位量に反応した結果、ユーザが意図しない第2振りアクションが行われてしまう、という状況になることを防ぐことができる。
【0011】
他の構成例として、プロセッサに、プレイヤオブジェクトが構えアクションを行っている場合に、第2の方向入力として、変位量が第4の値以上から当該第4の値未満になった後で第5の値以上となる方向入力が行われたことに基づいて、第1振りアクションをプレイヤオブジェクトに行わせてもよい。
【0012】
上記構成例によれば、ある程度大きな変位量となる方向入力を要求するため、ユーザが意図していない第1振りアクションが行われることを防ぐことができる。
【0013】
他の構成例として、第1の入力方向と第2の入力方向は、前記原点に対して互いに逆の方向であってもよい。
【0014】
上記構成例によれば、アイテムオブジェクトを構えている方向とは逆方向への入力を要求するので、直感的でわかりやすい振り操作をユーザに提供できる。
【0015】
他の構成例として、ユーザによる操作装置への入力が行われない状態においては、前記変位量が所定の値以下となってもよいし、または当該変位量が所定時間経過後に当該所定の値以下となるように漸減してもよい。
【0016】
上記構成例によれば、例えば操作装置から指を離すだけで、変位量を原点となる値に戻すことができ、操作性を高めることができる。
【0017】
他の構成例として、操作装置は、スティックデバイスを備え、当該スティックデバイスの傾きに応じた入力方向データを出力してもよい。
【0018】
上記構成例によれば、構えアクションや第1振りアクション、第2振りアクションを行うに際して、より直感的でわかりやすい操作性をユーザに提供できる。
【0019】
他の構成例として、プロセッサに更に、操作装置から取得した時間的に連続する2つの入力データが示す座標の位置関係が、原点を中心とした原点領域を挟む位置関係である場合、当該原点領域内に対する入力が行われたと判定させてもよい。
【0020】
上記構成例によれば、入力軌跡が原点を通過するような軌跡で、入力の検出タイミングと入力位置が原点にあるときのタイミングとが合わなかったような場合でも、中心への入力があったものとして扱うことができる。これにより、原点に入力があったことの判定をより速やかに検知できる。
【0021】
他の構成例として、プロセッサに、往路入力方向と復路入力方向との角度差が所定の範囲内である場合に、第2振りアクションをプレイヤオブジェクトに行わせてもよい。
【0022】
上記構成例によれば、往路と復路とがほぼ重なるような軌跡である場合に、第2振りアクションを行わせることができる。これにより、アイテムオブジェクトを振る方向とユーザが行った方向入力との関係についてユーザに違和感を与えることを防止できる。
【0023】
他の構成例として、プロセッサに、変位量が第1の値以下である状態が所定時間以上続いた後に当該変位量が第1の値を越えて増加する往路方向入力と、更にその後に当該変位量が第2の値以下に減少する復路方向入力とが第1の時間以内に行われたことに基づいて、第2振りアクションをプレイヤオブジェクトに行わせてもよい。
【0024】
上記構成例によれば、例えば入力位置が原点にある程度滞在した後でないと第2振りアクションが行えないようにすることができる。これにより、例えば連続的にランダムな方向入力を行った際にユーザが意図しない第2振りアクションが行われてしまうことを防止できる。
【0025】
他の構成例として、プロセッサに、直前の所定時間内の入力座標の軌跡の合計距離が一定以下であることを更に条件として、第2振りアクションをプレイヤオブジェクトに行わせてもよい。
【0026】
上記構成例によれば、例えば所定時間内に連続的にランダムな方向入力が行われた場合、その軌跡の合計距離はある程度の長さ以上になると考えられる。そのため、当該合計距離が一定以下の場合であることを第2振りアクションの実行条件とすることで、ユーザが意図しない第2振りアクションが発生してしまうことを防ぐことができる
【0027】
他の構成例として、プロセッサに更に、第1の方向入力の解除に応じて、前記アイテムオブジェクトを振る第3振りアクションを前記プレイヤオブジェクトに行わせてもよい。
【0028】
上記構成例によれば、プレイヤオブジェクトにアイテムオブジェクトを振らせる操作について、ユーザに多様な操作を提供できる。
【0029】
他の構成例として、プロセッサに更に、変位量が第6の値以上である状態でプレイヤオブジェクトが構えアクションを行っている場合に、操作装置に対して、当該変位量が第6の値以上である状態から当該第6の値未満である状態になった後に第7の値以上である状態となるような第2の方向入力、および、当該第2の方向入力の後、当該変位量が第7の値未満の状態になってから当該第6の値以上の状態に戻るような第3の方向入力が所定時間内に行われた場合、当該第2または第3の方向入力に係る方向と直交する軸周りに回転してアイテムオブジェクトを振る第4振りアクションをプレイヤオブジェクトに行わせてもよい。
【0030】
上記構成例によれば、プレイヤオブジェクトにアイテムオブジェクトを振らせる操作について、ユーザに多様な操作を提供できる。
【0031】
他の構成例として、操作装置は更に、慣性センサを備えていてもよい。そして、情報処理プログラムは、プロセッサに更に、第1の操作モードにおいては、プレイヤキャラクタに、第1の方向入力に基づいて構えアクションおよび振りアクションを行わせ、第2の操作モードにおいては、操作装置の姿勢に基づいて構えアクションを行わせ、操作装置に対する振り入力に基づいて振りアクションを行わせてもよい。
【0032】
上記構成例によれば、アイテムオブジェクトを構えて振るという一連のアクションに対して、更に多様な操作をプレイヤに提供することができる。
【0033】
他の構成例として、アイテムオブジェクトは、振りアクションによって敵オブジェクトに対して攻撃を行うための武器オブジェクトであってもよい。
【0034】
上記構成例によれば、敵を攻撃するために武器を振るという操作について、簡易で直感的な操作方法をプレイヤに提供できる。
【発明の効果】
【0035】
本実施形態によれば、プレイヤオブジェクトにアイテムオブジェクトを振らせる操作について、ユーザに多様な操作を提供できる。
【図面の簡単な説明】
【0036】
【
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
【
図2】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
【
図6】本体装置2の内部構成の一例を示すブロック図
【
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
【
図10】剣を構えているプレイヤオブジェクトを示す図
【
図22】プレイヤオブジェクトの状態の遷移を説明するための図
【
図23】DRAM85に記憶される各種データの一例を示すメモリマップ
【
図24】本実施形態に係るゲーム処理の詳細を示すフローチャート
【
図25】非抜剣時剣振り認識処理の詳細を示すフローチャート
【
図26】回転斬り認識処理の詳細を示すフローチャート
【
図29】弾き操作認識処理の詳細を示すフローチャート
【
図33】構え遷移判定処理の詳細を示すフローチャート
【
図34】構えアクション処理の詳細を示すフローチャート
【
図35】構えアクション処理の詳細を示すフローチャート
【
図36】構え剣振り認識処理の詳細を示すフローチャート
【
図37】構え剣振り認識処理の詳細を示すフローチャート
【
図38】逆方向入力認識処理の詳細を示すフローチャート
【
図41】リリース操作認識処理の詳細を示すフローチャート
【
図43】振りアクション処理の詳細を示すフローチャート
【発明を実施するための形態】
【0037】
以下、本発明の一実施形態について説明する。
【0038】
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0039】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0040】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0041】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0042】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0043】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0044】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0045】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0046】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0047】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0048】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0049】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、上下方向(すなわち、
図1および
図4に示すy軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0050】
左コントローラ3は、左アナログスティック(以下、左スティックと呼ぶ)32を備える。
図4に示すように、左スティック32は、ハウジング31の主面に設けられる。左スティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、左スティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。また、左スティック32が傾倒している状態で、ユーザが左スティック32から指を離すと、図示しない復帰機構(例えばバネ)によって、左スティック32はニュートラルポジションに復帰する。この戻りに係る動きについては、本実施形態では瞬時に戻るような構成とするが、他の実施形態では、所定時間経過後にニュートラルポジションとなるように、入力の変位量が漸減するような構成であってもよい。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、左スティック32を押下する入力が可能である。
【0051】
左コントローラ3は、各種操作ボタンを備える。左コントローラ3は、ハウジング31の主面上に4つの操作ボタン33~36(具体的には、右方向ボタン33、下方向ボタン34、上方向ボタン35、および左方向ボタン36)を備える。さらに、左コントローラ3は、録画ボタン37および-(マイナス)ボタン47を備える。左コントローラ3は、ハウジング31の側面の左上に第1Lボタン38およびZLボタン39を備える。また、左コントローラ3は、ハウジング31の側面の、本体装置2に装着される際に装着される側の面に第2Lボタン43および第2Rボタン44を備える。これらの操作ボタンは、本体装置2で実行される各種プログラム(例えば、OSプログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0052】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0053】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、上下方向に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0054】
右コントローラ4は、左コントローラ3と同様、方向入力部として右アナログスティック(以下、右スティックと呼ぶ)52を備える。本実施形態においては、右スティック52は、左コントローラ3の左スティック32と同じ構成である。また、右コントローラ4は、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、右コントローラ4は、左コントローラ3と同様、ハウジング51の主面上に4つの操作ボタン53~56(具体的には、Aボタン53、Bボタン54、Xボタン55、およびYボタン56)を備える。さらに、右コントローラ4は、+(プラス)ボタン57およびホームボタン58を備える。また、右コントローラ4は、ハウジング51の側面の右上に第1Rボタン60およびZRボタン61を備える。また、右コントローラ4は、左コントローラ3と同様、第2Lボタン65および第2Rボタン66を備える。
【0055】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0056】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0057】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0058】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0059】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0060】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0061】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0062】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0063】
プロセッサ81は、上述の左側端子17、右側端子21、および下側端子27に接続される。プロセッサ81は、左コントローラ3と有線通信を行う場合、左側端子17を介して左コントローラ3へデータを送信するとともに、左側端子17を介して左コントローラ3から操作データを受信する。また、プロセッサ81は、右コントローラ4と有線通信を行う場合、右側端子21を介して右コントローラ4へデータを送信するとともに、右側端子21を介して右コントローラ4から操作データを受信する。また、プロセッサ81は、クレードルと通信を行う場合、下側端子27を介してクレードルへデータを送信する。このように、本実施形態においては、本体装置2は、左コントローラ3および右コントローラ4との間で、それぞれ有線通信と無線通信との両方を行うことができる。また、左コントローラ3および右コントローラ4が本体装置2に装着された一体型装置または本体装置2単体がクレードルに装着された場合、本体装置2は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0064】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0065】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0066】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0067】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0068】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0069】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0070】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0071】
左コントローラ3は、本体装置2との間で通信を行う通信制御部101を備える。
図7に示すように、通信制御部101は、端子42を含む各構成要素に接続される。本実施形態においては、通信制御部101は、端子42を介した有線通信と、端子42を介さない無線通信との両方で本体装置2と通信を行うことが可能である。通信制御部101は、左コントローラ3が本体装置2に対して行う通信方法を制御する。すなわち、左コントローラ3が本体装置2に装着されている場合、通信制御部101は、端子42を介して本体装置2と通信を行う。また、左コントローラ3が本体装置2から外されている場合、通信制御部101は、本体装置2(具体的には、コントローラ通信部83)との間で無線通信を行う。コントローラ通信部83と通信制御部101との間の無線通信は、例えばBluetooth(登録商標)の規格に従って行われる。
【0072】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0073】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、左スティック32を備える。各ボタン103および左スティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0074】
左コントローラ3は、慣性センサを備える。具体的には、左コントローラ3は、加速度センサ104を備える。また、左コントローラ3は、角速度センサ105を備える。本実施形態においては、加速度センサ104は、所定の3軸(例えば、
図4に示すxyz軸)方向に沿った加速度の大きさを検出する。なお、加速度センサ104は、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。本実施形態においては、角速度センサ105は、所定の3軸(例えば、
図4に示すxyz軸)回りの角速度を検出する。なお、角速度センサ105は、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。加速度センサ104および角速度センサ105は、それぞれ通信制御部101に接続される。そして、加速度センサ104および角速度センサ105の検出結果は、適宜のタイミングで繰り返し通信制御部101へ出力される。
【0075】
通信制御部101は、各入力部(具体的には、各ボタン103、左スティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0076】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103および左スティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
【0077】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0078】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0079】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、右スティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0080】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0081】
[本実施形態におけるゲーム処理の概要]
次に、本実施形態のゲームシステム1で実行されるゲーム処理の動作概要を説明する。上記ゲームシステム1では、本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能な構成となっている。本体装置2に左コントローラ3および右コントローラ4を装着した状態でゲームを遊ぶ場合は、ゲーム画像はディスプレイ12に出力される。また、左コントローラ3および右コントローラ4をそれぞれ外した状態の本体装置2単体がクレードルに装着された場合は、本体装置2が、クレードルを介してゲーム画像を据置型モニタ等に出力することもできる。本実施形態では、後者の態様、すなわち、左コントローラ3および右コントローラ4をそれぞれ外した状態の本体装置2単体がクレードルに装着され、本体装置2が、クレードルを介してゲーム画像等を据置型モニタ等に出力する態様でゲームプレイを行う場合を例に説明する。
【0082】
本実施形態で想定するゲーム(以下、本ゲームと呼ぶ)は、仮想3次元空間内でプレイヤオブジェクトを操作するアクションアドベンチャーゲームである。
図8は、本実施形態で想定するゲーム画面の一例である。
図8において、ゲーム画面には、3次元仮想ゲーム空間の様子が表示されている。3次元仮想ゲーム空間にはプレイヤオブジェクト201が存在しており、背後からの視点で仮想カメラに撮像された画像が表示されている。当該ゲーム画面では、プレイヤオブジェクト201の全身が表示されている。また、プレイヤオブジェクト201は剣オブジェクト(以下、単に剣と呼ぶ)204を背負っている。当該剣204は鞘に収まっている状態であり、後述する操作で鞘から剣204を抜くことができる。以下、鞘から剣204を抜くことを「抜剣」と呼ぶ。
図9に、抜剣した後のプレイヤオブジェクト201の例を示す。
図9では、プレイヤオブジェクト201の右手に剣204が握られている状態である。この状態で、プレイヤは、プレイヤオブジェクト201の右腕の可動範囲に基づく範囲内で剣204を移動させることができる。
【0083】
本ゲームでは、プレイヤオブジェクト201に上記剣204を「振る」動作を行わせることができる。このようにプレイヤオブジェクト201は、剣204を振ることで、所定の敵オブジェクト(図示は省略)への攻撃が可能である。また、敵以外の所定のオブジェクト、例えば植物オブジェクト等を「斬る」ことも可能である。そして、本実施形態に係る処理は、このような剣204を「振る」動作をプレイヤオブジェクト201に行わせるための操作に関する処理である。以下の説明では、当該剣204を「振る」動作のことを「剣振り動作」と呼ぶ。また、当該剣振り動作は、後述する「構えアクション」および「振りアクション」の2つのアクションで構成されている。
【0084】
次に、具体的な操作内容の説明に先立って、上記のような剣振り動作に関するプレイヤオブジェクト201の「(ゲーム内での)状態」とその遷移について説明する。以下では、上記プレイヤオブジェクト201のゲーム内での状態のことを「PO状態(プレイヤオブジェクト状態)」と呼ぶ。まず、本ゲームでは、上記
図8で示したような剣204を鞘に収めているPO状態を「非抜剣状態」と呼ぶ。この状態で、所定の抜剣操作を行うと、抜剣するモーションが表示された後、上記
図9のように、剣204を右手に持った状態となる。本実施形態では、このPO状態のことを「構え状態」と呼ぶ。当該構え状態において、プレイヤは、プレイヤオブジェクト201に構えアクションを行わせることができる。構えアクションとは、剣204の位置や姿勢を、プレイヤの右腕の可動範囲内において変化させるアクションである。つまり、剣を振ることに先立って剣を構えるようなアクションである。一例として、
図10に、剣204を、その切っ先を右方向に向けて構えているような姿勢の例を示す。構え状態においては、後述する操作によって剣204の姿勢を変化させることができる。そして、構え状態において、所定の条件が満たされる(所定の操作が行われる)ことで、実際に剣204を振る動きが表示される。以下、このように剣204を振っている最中のPO状態のことを「振り状態」と呼ぶ。また、剣を振る動きのことを「振りアクション」と呼ぶ。
図11に、「振り状態」におけるプレイヤオブジェクト201の一例を示す。この図の例では、右から左方向に向けて水平斬りする振りアクションが示されている。
【0085】
[操作モードについて]
次に、上記のような動作を行わせるための具体的操作について説明する。本実施形態では、上記のような動作を行わせるための操作モードが2つ設けられている。第1の操作モードは、主に上記右コントローラ4に備えられている右スティック52を用いる操作モードである。第2の操作モードでは、上記右コントローラ4の慣性センサを用いる操作モードである。なお、本実施形態では、これらの操作モードはいずれか1つが設定されるものとする。例えば、ゲームの設定画面において、操作モードを設定する項目が設けられ、いずれか一方の操作モードが指定される。そのため、第1の操作モードが設定されているときは、第2の操作モードによる操作はできないものとする。逆の場合も同様である。
【0086】
[第2の操作モードについて]
次に、各操作モードについて説明するが、説明の便宜上、まず、第2の操作モードについて説明する。上記のように、第2の操作モードは右コントローラ4の慣性センサを用いるものである。具体的には、第2の操作モードでは、プレイヤは、右コントローラ4を剣204に見立てて、当該右コントローラ4を傾けたり、振ったりすることで、上記剣204の姿勢を変化させたり振ったりすることが可能である。
【0087】
操作の一例を挙げると、まず、非抜刀状態において、プレイヤが所定のボタンを押すことで、プレイヤオブジェクト201は抜剣して、PO状態が構え状態に遷移する。このとき、慣性センサからの出力に基づき、右コントローラ4の姿勢が算出され、その姿勢が剣204の姿勢に反映される。たとえば、慣性センサはジャイロセンサを含み、当該ジャイロセンサが検出する角速度に基づいて右コントローラ4の姿勢が算出される。ここでは、抜剣操作の結果、上記
図9のような姿勢となった場合を想定する。次に、画面が
図9のような状態において、プレイヤが右腕を水平に伸ばし、右コントローラ4も略水平の姿勢にしたとする。この場合、慣性センサからの出力に基づき、右コントローラ4の姿勢が算出され、この姿勢が剣204の位置や姿勢に反映される。その結果、剣204(およびプレイヤオブジェクト201)の位置および姿勢が、上記
図10で示したような姿勢に変化する。
【0088】
更に、ゲーム画面が
図10のような状態のときに、プレイヤが右コントローラ4を左方向に所定の速度以上の速さで振ったとする。この場合、慣性センサからの出力に基づき、当該コントローラを振ったという動きが検出される。たとえば、慣性センサは加速度センサを含み、所定値以上の加速度が検出されたとの判定によって、当該コントローラが振られたと判定される。その結果、PO状態が上記振り状態に遷移し、この振りの動きにおける右コントローラ4の姿勢の変化が剣204の位置や姿勢の変化に反映される。その結果、プレイヤオブジェクト201は、上記
図11で示したような振りアクションを行うことになる。
【0089】
このように、第2の操作モードでは、慣性センサの出力に基づいて、右コントローラ4の姿勢を算出し、振りを判定する。そして、算出した右コントローラ4の姿勢を剣204に反映させることで、上記構えアクションおよび振りアクションによる一連のアクションを実現している。これにより。右コントローラ4自体を動かすことで剣204を振ることができるため、直感的な操作が可能である。また、実際に剣を振っているかのようなユーザ体験を提供することもできる。
【0090】
[第1の操作モードについて]
上記のように、第2の操作モードでは、慣性センサを利用することで、右コントローラ4自体を動かすという操作方法を提供している。ここで、本実施形態に係るゲームシステム1は、上述したように、本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能な構成となっている。そのため、上記
図1で示したように、本体装置2に左コントローラ3および右コントローラ4を装着した状態でゲームを遊ぶ場合、ゲーム画面がディスプレイ12に表示されることもあり、右コントローラ4の慣性センサを用いる操作は困難と考えられる。また、その他、プレイヤによってはそもそも第2の操作モードのような操作方法を好まない場合があることも考えられる。そこで、本実施形態では、第1の操作モードを提供している。この操作モードでは、右スティック52を用いた簡単な方向入力操作で、上記第2の操作モードの場合と同様に構えアクションおよび振りアクションによる一連のアクションを行うことができる。そのため、本体装置2に左コントローラ3および右コントローラ4を装着した状態であっても、第2の操作モードの場合と同様にプレイヤオブジェクト201に剣204を振る動作を行わせることができる。あるいは、各コントローラを装着していない状態ではあるが、プレイヤが第2の操作モードを使わない(使いたくない)場合であっても、プレイヤオブジェクト201に剣204を振る動作を行わせることができる。
【0091】
次に、第1の操作モードにおける操作および処理の概要について説明する。まず、右スティック52の操作入力データの扱いに関して説明する。第1の操作モードにおいて、右スティック52で示される操作入力データは、2次元値として得られる。すなわち、右スティック52で示される操作入力データは、(x、y)という2次元値で得られるものとする。そして、本実施形態では、右スティック52を真上から見て、右方向をx軸正方向、上方向をy軸正方向とする座標系の2次元平面(以下、スティック平面)を想定する。このスティック平面において、右スティック52がニュートラルの状態(いずれの方向にも傾いていない状態)の場合の位置(原点)は、中心であるとする。また、本実施形態では、上記(x、y)の各値の取り得る範囲として、スティック平面の中心を0とした、-1~+1の範囲であるとする(左および下方向が負、右および上方向が正であるとする)。この場合、この原点から上記2次元値で示される座標を結ぶベクトル(以下、入力ベクトルと呼ぶ)は、入力の強さと入力方向とを示すことになる。すなわち、当該入力ベクトルの長さは右スティック52の傾きの度合いを示し、入力ベクトルの向きは入力方向を示す。
【0092】
次に、右スティック52の入力内容と上記構えアクションおよび振りアクションとの関係について説明する。本実施形態では、上記スティック平面を、プレイヤオブジェクト201を背面から見た状態で定義されるxy平面に対応づけている。
図12に、上記スティック平面と当該xy平面(以下、プレイヤオブジェクト平面と呼ぶ)との対応を示す図である。
図12では、左側に円状のスティック平面を示している。また、右側にプレイヤオブジェクト201を示し、その周囲を囲む点線で上記プレイヤオブジェクト平面を示している。なお、スティック平面の円の外周は、右スティック52の入力限界(最大まで傾けた場合)を示している。換言すれば、当該スティック平面は、スティックの可動範囲を示している。
図12では、プレイヤオブジェクト201を背面から見たような平面を想定し、プレイヤオブジェクト201の略中央部分がスティック平面の中心となるような対応付けを想定している。なお、他の例では、右腕の付け根部分とスティック平面の中心とを対応づけてもよい。
【0093】
上記のような対応関係を前提に、第1の操作モードでは、以下のような操作が可能である。まず、抜剣の操作については上記第2の操作モードと同様の操作であるとする。抜剣が行われた場合、所定の抜剣モーションが表示された後、PO状態が構え状態に遷移する。この構え状態のときは、右スティック52の入力に応じて、剣204の姿勢を変化させることができる。また、右スティック52の入力がニュートラルの場合は、この場合に対応する所定の姿勢となる。
【0094】
次に、構え状態における(振りアクション以外での)剣204の移動(姿勢変化)の一例を示す。まず、
図13に、右スティック52を右方向に倒しきっている場合の例を示す。
図13では、左側にスティック平面とその入力ベクトル(矢印)を示し、右側にこの入力に対応する剣204(およびプレイヤオブジェクト201)の姿勢を示している。
図13に示すように、右スティック52を右方向に倒しきると、これに応じて、剣204の姿勢も、その切っ先を右に向けたような姿勢に変化する。なお、奥行き方向(z軸上)における位置に関しては、ゲーム内容に応じた任意の位置でよいが、基本的には剣204を持っているプレイヤオブジェクト201の右腕の可動範囲の影響を受ける位置となる。
【0095】
上記
図13の姿勢から、更に、右スティック52を倒しきったまま、その入力方向だけを反時計回りに回転させていく場合を想定する。
図14~
図17に、この場合における姿勢の変化例を示す。
図14は、右スティック52の入力方向が右上方向である場合を示す。この場合、剣204の切っ先も、プレイヤオブジェクト平面における右上方向を向くような姿勢となっている。更に、右スティック52の入力方向を真上方向に変化させると、
図15に示すように、剣204の切っ先がプレイヤオブジェクト平面における真上を向くような姿勢に変化していく。更に、右スティック52の入力方向を左方向に変化させると、
図16に示すように、剣204の切っ先がプレイヤオブジェクト平面における左方向を向くような姿勢に変化していく。更に、右スティック52の入力方向を真下方向に変化させると、
図17に示すように、剣204の切っ先がプレイヤオブジェクト平面における真下を向くような姿勢に変化していく。
【0096】
このように、第2の操作モードでは、構え状態においては、右スティック52の入力操作で構えアクションを行わせることができる。すなわち、右スティック52の方向入力に応じた方向に剣204(の切っ先)が向くように、剣204の姿勢を変化させることができる。
【0097】
次に、第1の操作モードにおける振りアクションについて説明する。上記構え状態において、所定の条件を満たす操作が行われることで、プレイヤオブジェクト201に上記振りアクションを行わせることができる。本実施形態では、当該振りアクションを行わせるための操作として、以下のような3種類の操作方法が用意されている。
(1)「弾き操作」による剣振り動作
(2)右スティック52を所定方向の端まで倒しきっている状態から、当該所定方向とは逆方向に右スティック52を所定時間内に傾けきる入力操作(以下、逆方向入力操作)による剣振り動作
(3)「リリース操作」による剣振り動作
以下、各操作方法の概要を説明する。
【0098】
<弾き操作概要>
まず、本実施形態における弾き操作とは、右スティック52を弾いた操作を想定するものである。つまり、右スティック52の入力軌跡が、
図18に示すように、数フレーム内で「中心→端→中心」と変化した軌跡となった場合、弾き操作が行われたと判定する。
図18の例は、右スティック52を左方向に弾いた場合の操作例である。ここで、当該弾き操作の軌跡は、中心から外側(スティック平面の端)に向かう往路と、当該外側から中心に戻る復路とで構成される往復路として捉えることができる。この往路については、スティック平面の中心からの右スティック52の変位量が第1の値以下の状態(中心にある状態)から、少なくとも当該第1の値を越えた状態となるような往路方向の入力であるともいえる。また、復路については、当該往路方向の入力の後に当該変位量が第2の値以下の状態となるような復路方向の入力であるともいえる。そして、このような往路と復路の2つの方向入力が所定フレーム数以内に行われた場合、弾き操作が行われたと判定できる。本実施形態では、直前数十フレーム分の右スティック52の入力履歴に基づいて、弾き操作といえるような入力軌跡となる方向入力が行われたか否かを判定する。なお、本実施形態では、当該弾き操作の場合の剣204を振る方向(以下、振り方向と呼ぶ)は、右スティック52を弾いた方向(往路方向)であるとする。但し、他の実施形態では、復路方向を振り方向としてもよい。
【0099】
<逆方向入力概要>
次に、逆方向入力操作の概要を説明する。本実施形態での逆方向入力操作は、右スティック52を所定方向の端まで倒しきっている状態から(剣をある方向に構えている状態)から、その逆方向の端まで右スティック52を倒しきるような操作を想定するものである。例えば右方向に剣を構えている状態(右スティック52を右端まで倒しきっている状態)から、数フレーム内で構え方向とは逆方向となる左端まで右スティック52を倒しきる、というような操作を想定するものである。この場合は、右スティック52の入力軌跡が、
図19に示すように、数フレームで「所定方向の端→逆方向の端」に変化した軌跡であると判定されることで、逆方向入力操作が行われたと判定する。当該入力軌跡を変位量の観点で考えると、例えば、右スティック52の変位量が、数フレーム以内に、端にあることを示す変位量から中心にあることを示す変位量に変化した後、逆方向の端にあることを示す変位量に変化すれば、当該逆方向入力操作が行われたと判定できる。例えばスティック平面の中心から右方向に0.5以上の状態から0.5以下に変化した後、当該中心から左方向に0.5以上の値となるような方向入力が数フレーム内に行われた場合、当該逆方向入力操作が行われたと判定できる。なお、当該逆方向入力操作における振り方向は、上記「逆方向」であるとする。
【0100】
<リリース操作概要>
次に、リリース操作の概要を説明する。本実施形態で想定するリリース操作とは、右スティック52を所定方向の端まで倒しきっている状態において、指を右スティック52から離した場合(右スティック52による方向入力を解除した場合)を想定している。この場合、右スティック52は、アナログスティックに備わっている復帰機構により、上記スティック平面の中心(原点)に戻る動きとなる。そのため、右スティック52の入力軌跡が、
図20に示すように、数フレームで「端→中心」になった場合に、リリース操作が行われたと判定する。
図20の例は、右スティック52を右端まで倒しきっている状態で指を右スティック52から離した場合の例である。はなお、当該リリース操作における振り方向は、リリース後、中心に戻る方向であるとする。
【0101】
<回転斬りについて>
また、本ゲームでは、上述の振りアクションとは別に、「特殊アクション」の一つとして、「回転斬り」という動作をプレイヤオブジェクト201に行わせることも可能である。本実施形態では、当該動作を行わせるための「回転斬り操作」として、数フレーム内で、
図21に示すように右スティック52の入力軌跡が「外側→逆方向の外側→元の位置」となった場合、回転斬り操作が行われたと判定する。このような操作が行われた場合、当該入力軌跡で示されるスティック平面における方向(往路方向または復路方向)に対応するゲーム空間内の方向に直交する軸周りに剣204を回転させる動作が行われる。
図21の例では、右端→左端→右端と変位しており、その軌跡は、スティック平面における水平方向に沿った変位となっている。このような操作の場合は、仮想ゲーム空間における重力軸(水平方向に直交する軸)周りでプレイヤオブジェクト201が回転しながら剣204を振る動作が行われる。換言すれば、剣204を水平方向に回転させる回転斬りが行われる。また、例えば入力軌跡が「上端→下端→上端」であれば、ゲーム空間において垂直方向に剣204を回転させる回転斬りが行われる。
【0102】
ここで、上述したような第1の操作モードにおける各種操作と、その操作に基づくPO状態の遷移関係を
図22に示す。
図22に示すように、非抜剣状態において「抜剣操作」が行われることで上記構え状態に遷移する。構え状態において、剣204を鞘に収めるための「納剣操作」が行われることで、上記非抜剣状態に遷移する。更に、構え状態において、上述したような「弾き操作」、「逆方向入力操作」、「リリース操作」のいずれかの操作が行われると、振り状態(上記振りアクションが行われる)の状態に遷移する。また、構え状態において「回転斬り操作」が行われた場合も振り状態に遷移するが、この場合に行われる動作は、上記振りアクションとは異なる特殊アクションとしての回転斬り動作となる。なお、振りアクションまたは特殊アクションが終われば、振り状態から構え状態に戻る。
【0103】
更に、非抜剣状態において、上述したような「弾き操作」が行われた場合も、即座に振り状態(上記振りアクションが行われる)の状態に遷移する。また、非抜剣状態において、「回転斬り操作」が行われた場合も、即座に回転斬り動作としての振り状態に遷移する。また、本実施形態では、非抜剣状態から振り状態に遷移した場合、上記振りアクションまたは特殊アクションが終われば、構え状態に遷移するものとする。但し、他の実施形態では、この場合は非抜剣状態に戻るようにしてもよい。
【0104】
このように、本実施形態では、上記構えアクション及び振りアクションについて、第2の操作モードとして慣性センサを用いた操作方法をプレイヤに提供する。更に、第1の操作モードとして、右スティック52の操作のみで上記構えアクションおよび振りアクションを行うことができる。更に、第1の操作モードにおける振りアクションを行わせるための操作として、上記のような3種類の操作方法を用意している。これにより、剣204を振るアクションに関して、多様な操作方法をプレイヤに提供することができる。
【0105】
なお、本実施形態では、上記振りアクション中における剣204には当たり判定が設定されるが、この当たり判定については、上記3種類の操作方法のいずれの場合も同様の当たり判定が設定される。つまり、上記3種類のうちの、どの操作方法を用いて剣204を振らせても、ゲーム処理結果としては同じ結果が得られるものとする。但し、他の実施形態では、上記3種類の操作方法に対して別々の当たり判定を設定するようにしてもよい。
【0106】
なお、本ゲームでは、上記のような剣204に関する操作の他、次のような操作も可能である。
【0107】
[移動操作]
本ゲームでは、左スティック32を用いることで、プレイヤオブジェクト201を移動させることができる。そのため、左スティック32でプレイヤオブジェクト201を移動させながら、右コントローラ4を用いた剣204の操作を行うことも可能である。これにより、移動しながら敵オブジェクトに攻撃すること等も可能である。
【0108】
[仮想カメラ操作]
また、本ゲームでは、所定のボタンを押下した状態で右スティック52を操作することで、仮想カメラの撮像方向を変化させることもできる。例えば、第1Rボタン60を押しながら右スティック52を操作することで、その方向入力に基づき、仮想カメラの向きを変えることが可能である。また、この仮想カメラの操作中は、上記右スティック52による剣204の制御は行われない。つまり、第1Rボタン60を押している間は、右スティック52は仮想カメラ操作のために用いられ、第1Rボタン60を押していない場合は、右スティック52は剣204の制御のために用いられることになる。
【0109】
その他、各種アイテムの使用操作等、ゲーム進行に関連する各種の操作も可能となっている。
【0110】
[本実施形態のゲーム処理の詳細]
次に、
図23~
図27を参照して、本実施形態におけるゲーム処理についてより詳細に説明する。
【0111】
[使用データについて]
まず、本ゲーム処理にて用いられる各種データに関して説明する。
図23は、本体装置2のDRAM85に記憶される各種データの一例を示すメモリマップである。本体装置2のDRAM85には、ゲームプログラム301、操作データ302、操作モード情報307、PO状態情報308、入力履歴データ309、剣振りパラメータ310、仮想カメラ設定データ311、オブジェクトデータ312等が記憶されている。
【0112】
ゲームプログラム301は、本実施形態に係るゲーム処理を実行するためのプログラムである。
【0113】
操作データ302は、上記左コントローラ3および右コントローラ4から得られるデータであり、プレイヤの操作内容を示すデータである。操作データ302には、デジタルボタンデータ303と、右アナログスティックデータ304と、左アナログスティックデータ305と、慣性センサデータ306とが少なくとも含まれている。デジタルボタンデータ303は、コントローラが有する各種ボタンの押下状態を示すデータである。右アナログスティックデータ304は、上記右スティック52に対する操作内容を示すためのデータである。具体的には、x、yの2次元のデータが含まれる。左アナログスティックデータ305は、上記左スティック32に対する操作内容を示すためのデータである。慣性センサデータ306は、上述した加速度センサや角速度センサ等の慣性センサの検出結果を示すデータである。具体的には、加速度データや角速度データが含まれる。
【0114】
操作モード情報307は、現在の操作モードが上記第1の操作モードであるか第2の操作モードであるかを示すための情報である。
【0115】
PO状態情報308は、プレイヤオブジェクト201の状態が上述した「非抜剣状態」「構え状態」「振り状態」のいずれの状態であるかを示すための情報である。初期値は「非抜剣状態」であるとする。
【0116】
入力履歴データ309は、本実施形態では、直近20フレーム分の右アナログスティックデータ304が格納される。また、当該データは、古いデータから順に入れ替わっていくものとする。なお、20フレームというのは一例であり、他の実施形態では、履歴として保持するフレーム数は他の値であってもよい。当該入力履歴データ309は、上述したような「弾き操作」「逆方向入力操作」「リリース操作」「回転斬り操作」が行われたか否かを判定するために用いられるデータである。
【0117】
剣振りパラメータ310は、上記振り状態におけるプレイヤオブジェクトのモーション内容(より具体的には、振りアクションまたは回転斬りのモーション)を定義するデータである。具体的には、剣204の移動方向や移動速度等を示すパラメータ、および、これに伴うプレイヤオブジェクト201の動作内容を示すデータである。例えば、振りアクションが100フレームかけて行われるとした場合は、この100フレーム分における剣204の移動方向、移動速度、プレイヤオブジェクト201のモーション、を示す内容が剣振りパラメータ310として設定される。
【0118】
仮想カメラ設定データ311は、仮想カメラの撮像方向等を指定するためのデータである。上記のような第1Rボタン60を押しながらの右スティック52の操作に応じて、その方向が変化する。
【0119】
オブジェクトデータ312は、プレイヤオブジェクト201を含む、本ゲームに登場する各種オブジェクトの外観を示すデータである。モデルデータやテクスチャデータ等がこれに含まれる。
【0120】
その他、ゲーム処理に必要な各種データも適宜生成され、DRAM85に格納される。
【0121】
[プロセッサ81が実行する処理の詳細]
次に、
図24のフローチャートを参照して、本実施形態に係るゲーム処理の詳細を説明する。なお、この説明では、主に、上述したような剣204の操作に関する処理について説明し、その他のゲーム処理についての詳細な説明は割愛する。
【0122】
図24は、本ゲーム処理の詳細を示すフローチャートである。
図24において、まず、ステップS1で、プロセッサ81は、以降の処理において用いられるデータを初期化するための初期化処理を実行する。具体的には、「非抜剣状態」を示すデータがPO状態情報308としてDRAM85に記憶される。また、プロセッサ81は、仮想カメラ設定データ311に、上記
図8で示したような、プレイヤオブジェクト201の背後からの視点となるゲーム画像が表示されるような各種パラメータ(位置、画角、注視点)を設定する。更に、プロセッサ81は、3次元の仮想ゲーム空間を構築し、プレイヤオブジェクト201等を適宜配置する。以上のように構築されたゲーム空間を仮想カメラで撮影したゲーム画像が生成され、生成されたゲーム画像が上記据置型モニタ等に出力される。
【0123】
次に、ステップS2で、プロセッサ81は、PO状態情報308を参照し、PO状態が振り状態であるか否かを判定する。当該判定の結果、振り状態の場合は(ステップS2でYES)、後述するステップS10の処理を実行する。一方、振り状態ではない場合は(ステップS2でNO)、ステップS3で、プロセッサ81は、PO状態が構え状態であるか否かを判定する。その結果、構え状態であれば(ステップS3でYES)、プロセッサ81は、後述するステップS10の処理へ進む。
【0124】
一方、構え状態ではない場合は(ステップS3でNO)、PO状態は非抜剣状態であるため、ステップS4で、プロセッサ81は、操作データ302をDRAM85から取得する。
【0125】
次に、ステップS5で、プロセッサ81は、非抜剣時剣振り認識処理を実行する。これは、上記非抜剣状態で上述したような「弾き操作」、「回転斬り操作」のいずれかが行われたか否かを判定するための処理である。
【0126】
図25は、上記非抜剣時剣振り認識処理の詳細を示すフローチャートである。
図25において、まず、ステップS51で、プロセッサ81は、上記取得した操作データ302から右スティック52の操作データを抽出する。そして、プロセッサ81は、当該データが最新の入力内容として示されるように、入力履歴データ309を更新する。
【0127】
次に、ステップS52で、プロセッサ81は、回転斬り操作認識処理を実行する。これは、入力履歴データ309に基づいて、上述したような回転斬り操作が行われたか否かを判定するための処理である。
図26は、当該回転斬り操作認識処理の詳細を示すフローチャートである。
図26において、まず、ステップS101で、プロセッサ81は、剣を振る方向である「振り方向」を入力履歴データ309に基づいて算出する。具体的には、プロセッサ81は、原点から最新の入力座標へのベクトル(以下、最新入力ベクトル)を算出する。そして、当該最新入力ベクトルを正規化したものを振り方向として算出する。
【0128】
次に、ステップS102で、プロセッサ81は、上記算出した振り方向、および入力履歴データ309に基づいて、回転斬り操作が成立すると判定される条件を満たしているか否かを判定する。具体的には、プロセッサ81は、以下に示す複数の条件のそれぞれについて、条件が満たされているか否かを判定する。そして、プロセッサ81は、各条件の判定結果を示すデータを生成し、DRAM85に一時的に格納する。なお、本実施形態では、以下の条件の全てが満たされている場合に、(後述のステップS53において)回転斬り操作が行われたと判定する。
【0129】
<回転斬り条件1>直前の入力内容が外側向きの入力であること。換言すれば、最新の入力座標が、上記スティック平面の外周付近にあって、かつ、その1つ前のフレームにおける入力座標が外周付近には存在していないこと。
当該条件について説明すると、まず、本実施形態では、
図27に示すように、スティック平面の外周付近となるような所定の領域を端部領域131として定義する(例えば変位量が中心から0.8~1.0となる範囲)。そして、入力座標がこの範囲内に存在する場合は、右スティック52の可動範囲内におけるいずれかの端まで傾けきっているものとして扱う(なお、この端部領域131については、後述の各操作の判定においても同趣旨で共用されてもよい)。そのため、当該条件の判定については、最新の入力座標が当該端部領域131内にあり、その1つ前の入力座標は当該端部領域外にある場合に、当該条件を満たすと判定される。なお、この条件は、スティック平面の外周に沿って大きく円を描くような入力については回転斬りとは判定しないようにするための条件である。
【0130】
<回転斬り条件2>最新15フレームにおける各入力座標の変位と、振り方向の内積を取り、0以上だった値の和が一定値以上であること。
当該条件は、回転斬り操作における復路の距離を調べて、この距離が一定以上であれば、回転斬り操作としての条件を満たしたと判定するためのものである。つまり、15フレームという短い期間内に、端から端まで移動して元の位置に戻ってきたかを調べるものである。
【0131】
<回転斬り条件3>最新15フレームの各入力値と、振り方向の内積を取り、その最小値が一定以下であること。
当該条件は、原点から、振り方向とは逆方向に最も原点から離れている点までの距離を調べ、この距離が一定以上であれば、回転斬り操作としての条件を満たしたと判定するものである。
【0132】
<回転斬り条件4>スティック平面の中心から振り方向に向けて引いた直線と、最新15フレームの各入力の距離の最大値が一定以下であること。
この条件は、右スティック52を回転させるような入力が行われた場合に、回転斬り操作としての判定を出さないための条件である。つまり、入力軌跡が、
図28に示すように、中心を通る直線軌道上の近くを通っているかを判定するものである。
【0133】
上記ステップS102における条件チェックの処理が終われば、回転斬り操作認識処理は終了する。
【0134】
図25に戻り、次に、ステップS53で、プロセッサ81は、上記回転斬り操作認識処理における各条件の判定結果を示すデータに基づき、回転斬り操作が行われたか否かを判定する。すなわち、上述した4つの条件の全てが満たされているか否かを判定し、満たされている場合、回転斬り操作が行われたと判定する。当該判定の結果、回転斬り操作が行われた場合は(ステップS53でYES)、ステップS54で、プロセッサ81は、プレイヤオブジェクト201に回転斬り動作を行わせるための設定を行う。具体的には、プロセッサ81は、まず、PO状態情報308に「振り状態」を設定する。次に、剣振りパラメータ310に、上記算出された振り方向に応じた回転斬りのモーションが行われるように、剣204およびプレイヤオブジェクト201の動きに関する各種の値を設定する。例えば、振り方向が右の場合、プレイヤオブジェクト201が右回転するような回転斬りモーションを行う様子が所定フレームかけて表示(再生)されるように、剣振りパラメータ310の内容を設定する。すなわち、回転斬りモーション中の各フレームにおけるプレイヤオブジェクト201の姿勢や剣204の移動方向、移動速度を示すパラメータが設定される。更には、回転斬りモーション中における剣204の当たり判定領域の設定も行われる。当該剣振りパラメータ310の具体的設定手法については、例えば、振り方向に応じた回転斬りモーションの内容を予め定義しておき、振り方向に基づいて、この定義済みの回転斬りモーションのいずれかを選択するようにしてもよい。あるいは、上記振り方向と予め定義された初速パラメータに基づいて、回転斬りモーションとなるような剣振りパラメータをその都度算出するようにしてもよい。各種設定が終われば、プロセッサ81は、剣振り認識処理を終了する。なお、後述する振りアクション処理においては、ここで設定された各種のパラメータに基づいて、プレイヤオブジェクト201や剣204の動作制御が行われることになる。
【0135】
一方、上記ステップS53の判定の結果、回転斬り操作が行われていない場合は(ステップS53でNO)、次に、ステップS57で、プロセッサ81は、弾き操作認識処理を実行する。当該処理では、上述したような弾き操作が行われたか否かを認識する処理が実行される。
【0136】
図29は、当該弾き操作認識処理の詳細を示すフローチャートである。
図29において、まず、ステップS121で、プロセッサ81は、弾き操作における「振り方向」を入力履歴データ309に基づいて算出する。弾き操作の場合、右スティック52の移動は、「中心→外周付近→中心」というような、中心と外周付近を往復する動きとなる。本実施形態では、この場合の振り方向として、基本的には往路における方向(中心から外側に向かう方向)を用いるが、具体的算出手法としては、復路のベクトルを一旦算出して、これを反転させたものを振り方向として算出している。これは、往路については手入力となるが、復路の動きについては、右スティック52に備わっている復帰機構によるものとなるため、復路のほうが手入力の往路よりもより直線的な軌道となる。そのため、この復路を反転させることで、振り方向としてより適切な値が利用可能になるという観点によるものである。より具体的には、以下のような処理で振り方向が算出される。(B1)まず、プロセッサ81は、直前数フレーム(例えば5フレーム)での入力座標のうち、一番外周側にある入力座標を抽出し、中心からのベクトルを算出してこれを正規化する。(B2)次に、プロセッサ81は、上記直前数フレームでの入力の変位量のうち、上記正規化したベクトルとの内積を取り、その値が0より小さいベクトルの和を算出する。(B3)そして、当該算出したベクトルを正規化し、マイナスを掛けて反転させることで、振り方向として算出する。
【0137】
次に、ステップS122で、プロセッサ81は、上記算出した振り方向、および入力履歴データ309に基づいて、弾き操作が成立すると判定される条件を満たしているか否かを判定する。具体的には、プロセッサ81は、以下に示す条件について、それぞれの条件が満たされているか否かを判定する。
【0138】
<弾き操作条件1>最新2フレームの入力座標が、どちらも中心にあること。
この条件は、上述した回転斬りの操作と区別するための条件である。例えば、回転斬り操作として、右→左→右と入力した場合を想定する。この場合、この軌跡を詳細に見ると、"右→中心→左→中心→右"となる。この内、"中心→左→中心"の入力が行われたときに「弾き操作」と判定されてしまうと、回転斬りが実行できなくなる。このような場合を想定して、回転斬り操作と区別するために、最新2フレームの入力座標が、どちらも中心にあることを弾き操作成立の条件としたものである。ここで、本実施形態では、「中心」にあることの判定に関して、少し幅を持たせている。具体的には、
図30に示すように、スティック平面の中心点を中心とする領域であって、中心点付近の領域を含む円領域を中心領域132として予め定義している(例えば、変位量が中心から0.2以下となる範囲)。そして、この中心領域132内に入力座標がある場合、その入力座標については「中心にある」ものとして扱う。そのため、厳密には、「最新2フレームの入力座標が、どちらも中心または中心付近にあること」が条件となるが、ここでは説明の便宜上、両者を含めて「中心にある」として扱う。
【0139】
<弾き操作条件2>振り方向に対する、最新の(直近の)数フレームにおける内向きの変位の和、外向きの変位の和がそれぞれ一定以上であること。
この条件は、往路と復路のそれぞれにつき、端まで変位して中心に戻ってくる(つまり、弾き操作)と考えられる程度の大きな変位が発生しているかどうかを調べるための条件である。具体的には、プロセッサ81は、最新数フレーム(例えば5~7フレーム程度)における各フレームでの変位と振り方向の内積を算出する。当該算出の結果、振り方向に対して順方向(外向きの方向)の内積は正の値として算出され、振り方向と逆方向(中心に向かう方向)の内積は負の値として算出されることになる。そして、プロセッサ81は、
図31に示すように、正方向の内積の和が一定以上であり、かつ、負方向の内積の和が一定以下であるか、を判定する。
【0140】
<弾き操作条件3>振り方向と過去数フレームでのスティック位置の変位方向が一致していること。
この条件は、
図32で示すような、右スティック52が回転気味に入力された場合は弾き操作から除くための条件である。具体的には、次のような処理が行われる。まず、プロセッサ81は、過去数フレームでのそれぞれの入力座標に関して、中心点から各入力座標に向けて引いた線と、中心点から振り方向に向けて引いた線のなす角度を算出する。そして、プロセッサ81は、これらの角度の和が所定の閾値以下であるか否かを判定し、当該所定の閾値以下である場合に、当該条件を満たすと判定する。つまり、弾き操作における往路と復路との角度差が所定の閾値以下であれば、当該条件を満たすと判定する。
【0141】
<弾き操作条件4>一定のフレームでの軌跡の合計距離が一定以下であること。
この条件は、右スティック52を短期間内で複数のランダムな方向に連続的に入力したような操作(以下、高速ランダム入力操作)を除くための条件である。このような「レバガチャ」操作の場合は、一定のフレームでの入力軌跡の合計距離も大きくなると考えられる。そのため、当該条件を用いることで、当該高速ランダム入力操作が弾き操作として判定されることを防止できる。
【0142】
本実施形態では、弾き操作の判定条件として以上の4つの条件を用いるが、他の実施形態では、更に次のような条件を用いて判定してもよい。
【0143】
<弾き操作条件5>現在の入力座標が中心にある、または、「右スティック52の最新の入力座標とその1つ前のフレームにおける入力座標を結ぶ移動ベクトル」が中心を通過したこと。
この条件では、中心を1フレームで通過した場合でも、現在の入力座標が中心にあると判定するための条件である。右スティック52の復帰機構のバネが強い場合、右スティック52を指から離した場合でも、右スティック52の位置が完全に中心点で止まる前に、中心点を一旦通り過ぎた後、中心点に戻るという動きとなる。このような場合を想定し、通り過ぎた段階で速やかに弾き操作の検知を行うため、中心を通過したことが検知された時点で弾き判定として判定するための条件である。なお、「中心を通過したこと」の判定については、中心点を通過する場合だけでなく、右スティック52の最新の入力座標とその1つ前のフレームにおける入力座標を結ぶ軌跡が上述した中心領域132を通過するような軌跡である場合も、「中心を通過した」として判定してもよい。換言すれば、時間的に連続する2つの入力座標が上記中心領域132を挟むような位置関係にある場合、中心を通過したと判定してもよい。
【0144】
<弾き操作条件6>過去の所定フレーム期間内において、中心に一定フレーム以上存在していること。
この条件は、上記弾き操作条件4と同様に高速ランダム入力操作を除くための条件である。高速ランダム入力操作の場合は、入力座標が中心に一定期間留まらないと考えられることから、この条件を用いて高速ランダム入力操作が行われているか否かを判別することができる。より具体的には、入力履歴が20フレーム分の例でいうと、10フレーム前~15フレーム前の期間における入力座標が全て「中心にある」状態であれば、当該条件を満たすと判定される。
【0145】
上記ステップS122における弾き操作に関する条件チェックの処理が終われば、弾き操作認識処理は終了する。
【0146】
図25に戻り、次に、ステップS58で、プロセッサ81は、上記弾き操作認識処理における各条件の判定結果を示すデータに基づき、弾き操作が行われたか否かを判定する。すなわち、上述した4つの条件の全てが満たされているか否かを判定し、満たされている場合、弾き操作が行われたと判定する。当該判定の結果、弾き操作が行われた場合は(ステップS58でYES)、上述したステップS61で、プロセッサ81は、プレイヤオブジェクト201に、振りアクションを行わせるための設定を行う。この設定内容は、当該弾き操作に基づく振りアクションを行わせるためのものとなる。具体的には、プロセッサ81は、まず、PO状態情報308に「振り状態」を設定する。次に、剣振りパラメータ310に、上記算出された振り方向に応じた剣振りアクションのモーションが行われるように、剣204およびプレイヤオブジェクト201の動きに関する各種の値を設定する。例えば、右端に向けてスティックを弾く操作が行われた場合、プレイヤオブジェクト201が右方向に剣204を振る(例えば水平斬り)モーションを行う様子が所定フレームかけて表示(再生)されるように、剣振りパラメータ310の内容を設定する。なお、この場合は、スティックがニュートラルの状態から剣204を振り始めることになるため、例えば上記
図9のような抜剣直後の姿勢から右方向に剣204を振るようなモーションを表示するようにしてもよい。あるいは、一旦左方向に剣204を移動させてから右方向に振るようなモーションを表示するようにしてもよい。剣振りパラメータ310の設定が終われば、プロセッサ81は、非抜剣時剣振り認識処理を終了する。
【0147】
なお、当該ステップS61の処理は、後述する構え状態における「逆方向入力操作」および「リリース操作」を認識した場合にも実行され得る。本実施形態では、当該処理で設定されるモーションは、振り方向の違いを除いて、基本的には「逆方向入力操作」「弾き操作」「リリース操作」で共通するようなモーションであるとする。換言すれば、当該ステップS61の処理は、「逆方向入力操作」「弾き操作」「リリース操作」のそれぞれで認識された振り方向に応じたモーションを設定する処理であるといえる。
【0148】
また、当該処理における剣振りパラメータの設定手法についても、上記回転斬りの場合と同様に、振り方向に応じて予め定義済みのモーションの中からいずれかのモーションを選択するようにしてもよい。あるいは、振り方向と所定の初速パラメータに基づいて当該処理において適切な剣振りパラメータを算出するようにしてもよい(後述する逆方向入力操作、リリース操作の場合も同様の設定手法であるとする)
【0149】
一方、上記ステップS58の判定の結果、弾き操作が行われていない場合は(ステップS58でNO)、非抜剣状態における回転斬り操作および弾き操作は行われていないことになる。この場合は、プロセッサ81は、非抜剣時剣振り認識処理を終了する。
【0150】
図24に戻り、非抜剣時剣振り認識処理が終われば、次に、ステップS6で、プロセッサ81は、上記非抜剣時剣振り認識処理の結果、PO状態が「振り状態」に変化したか否かを判定する。当該判定の結果、PO状態が「振り状態」の場合は(ステップS6でYES、後述するステップS11の処理を実行する。一方、振り状態ではない場合は(ステップS6でNO)、ステップS7で、プロセッサ81は、構え遷移判定処理を実行する。この処理では、PO状態を非抜剣状態から構え状態に遷移させるか否かの判定等が行われる。
図33は、当該構え遷移判定処理の詳細を示すフローチャートである。
図33において、まず、ステップS21で、現在のフレームに係る処理において、抜剣モーションの表示中の状態であるか否かが判定される。本実施形態では、抜剣の指示操作が行われた場合、数フレームかけてプレイヤオブジェクト201が剣204を抜剣するモーションを表示する。当該判定は、このモーションの途中の状態であるか否かを判定するためのものである。当該判定の結果、抜剣モーション中ではない場合は(ステップS21でNO)、ステップS22で、プロセッサ81は、抜剣操作が行われたか否かを操作データ302で示される操作内容に基づき判定する。本実施形態では、抜剣操作として割り当てられている所定のボタンが押下されたか否かを判定する。またこの他、他の実施形態では、例えば、右コントローラ4が所定の加速度以上で振られた場合や、右スティック52への方向入力が発生したときにも、抜剣操作が行われたと判定するようにしてもよい。
【0151】
上記判定の結果、抜剣操作が行われていた場合は(ステップS22でYES)、ステップS23で、プロセッサ81は、上記抜剣モーションを表示するための表示設定を行う。この設定に基づき、後述するステップS7のゲーム画像出力処理において、抜剣モーションが表示される。また、この設定によって、上記ステップS21の判定において、抜剣モーション中と判定される。この設定は、例えば、抜剣モーション中であることを示すフラグ(図示は省略)をオンにする等で設定され得る。
【0152】
一方、抜剣操作が行われていない場合は(ステップS22でNO)、上記ステップS23の処理はスキップされて、構え遷移判定処理は終了する。
【0153】
次に、上記ステップS21の判定の結果、抜剣モーションの表示中と判定された場合(ステップS21でYES)について説明する。この場合は、ステップS24で、プロセッサ81は、抜剣モーションが終了したか否かを判定する。まだ終了していない場合は(ステップS24でNO)、構え遷移判定処理は終了する。その結果、引き続き抜剣モーションが表示されることになる。一方、抜剣モーションが終了した場合は(ステップS24でYES)、ステップS25で、プロセッサ81は、抜剣モーションの表示を終了する旨の設定を行う。例えば、上述した抜剣モーション中であることを示すフラグをオフにする。次に、ステップS26で、プロセッサ81は、PO状態情報308に、構え状態を示すデータを設定する。つまり、本実施形態では、抜剣モーションが終了するまでは構え状態には遷移しない。なお、他の実施形態では、抜剣操作が行われた時点で構え状態に遷移させてもよい。その後、構え遷移判定処理は終了する。
【0154】
図24に戻り、次に、ステップS8で、プロセッサ81は、後述する構えアクション処理および振りアクション処理以外の各種ゲーム処理を実行する。具体的には、左スティック32の操作内容(左アナログスティックデータ305)に基づきプレイヤオブジェクト201を移動させる処理が行われる。また、第1Rボタン60を押しながらの右スティック52の操作内容に基づき、仮想カメラのパラメータを変更する処理も行われる。また、上記抜剣モーションの表示中の状態の場合は、プレイヤオブジェクト201に所定の抜剣モーションを行わせる処理も実行される。その他、プレイヤオブジェクト201が構えアクションや振りアクションを行っていないときも含め、ゲームの進行に関する各種のゲーム処理が適宜実行される。
【0155】
次に、ステップS9で、プロセッサ81は、ゲーム画像出力処理を実行する。具体的には、プロセッサ81は、上記の処理と、後述の構えアクション処理および振りアクション処理の結果が反映された仮想ゲーム空間を仮想カメラで撮像してゲーム画像を生成する。そして、プロセッサ81は、当該ゲーム画像を据置型モニタに出力する。
【0156】
次に、ステップS12で、プロセッサ81は、本実施形態に係るゲームの終了条件が満たされたか否かを判定する。例えば、プレイヤがゲームの終了操作を行った場合等である。当該判定の結果、YESの場合はゲーム処理を終了し、NOの場合は、ステップS2に戻って、本実施形態に係るゲーム処理を繰り返す。すなわち、ゲーム処理が終了されるまで、ステップS2からステップS10までの処理が、描画の時間単位である1フレーム毎に繰り返される。
【0157】
[構えアクション処理について]
次に、上記ステップS10の構えアクション処理について説明する。この処理は、操作モードに応じて、構え状態におけるユーザの操作をプレイヤオブジェクト201の動作に反映させるための処理である。
図34~
図35は、当該構えアクション処理の詳細を示すフローチャートである。
図34において、まず、ステップS31で、プロセッサ81は、操作データ302を取得する。
【0158】
次に、ステップS32で、プロセッサ81は、現在の操作モードが第1の操作モード(右スティック52を用いる操作モード)であるか否かを判定する。当該判定の結果、第1の操作モードの場合は(ステップS32でYES)、ステップS33で、プロセッサ81は、第1の操作モードにおける構え状態を終了させる操作(納剣操作)が行われたか否かを判定する。この終了操作は、本実施形態では、所定のボタンの押下である。なお、本実施形態では、当該構え状態を終了させる操作は第1の操作モードの場合と第2の操作モードの場合とで共通であるとする。この終了操作について第1の操作モードの場合と第2の操作モードとで異なる操作を採用する場合は、各モードに応じてその操作内容を判定すればよい。
【0159】
上記判定の結果、第1の操作モードにおける構え状態を終了させる操作が行われた場合は(ステップS33でYES)、ステップS34で、プロセッサ81は、PO状態情報308に非抜剣状態を設定する。またこの際、鞘に剣204を収める納剣モーションの表示設定も適宜行う。その後、構えアクション処理は終了する。
【0160】
一方、上記判定の結果、構え状態を終了させる操作が行われていない場合は(ステップS33でNO)、ステップS35で、プロセッサ81は、構え剣振り認識処理を実行する。当該処理は、当該構え状態において、上記「弾き操作」、「逆方向入力操作」、「リリース操作」、「回転斬り操作」のいずれか操作が行われたか否かを判定する処理である。
【0161】
図36~
図37は、構え剣振り認識処理の詳細を示すフローチャートである。なお、当該フローチャートにおいて、ステップS51~S54、S57~S58、S61に処理については、
図25を用いて上述した非抜剣時剣振り認識処理における処理と同様である。そのため、これらの処理の説明は割愛し、ここでは、主に、「逆方向入力操作」および「リリース操作」を認識するための処理(ステップS55~S56、S59~S60)について説明する。
【0162】
まず、「逆方向入力操作」の認識に係る処理を説明する。
図36のステップS53の判定の結果、回転斬り操作が行われていない場合は(ステップS53でNO)、次に、ステップS55で、プロセッサ81は、逆方向入力認識処理を実行する。当該処理では、上述したような逆方向入力操作が行われたか否かを認識する処理が実行される。
【0163】
図38は、当該逆方向入力認識処理の詳細を示すフローチャートである。
図38において、まず、ステップS111で、プロセッサ81は、逆方向入力操作における「振り方向」を入力履歴データ309に基づいて算出する。当該逆方向入力は、剣204を構えている状態から逆方向の端まで右スティック52を移動させる(傾ける)操作であるため、この移動方向が振り方向として算出されることになる。そのため、ここでは、上記のように右スティック52の入力軌跡が、「所定方向の端→逆方向の端」に数フレームで変化した軌跡であるか否かを判定することになる。具体的には、プロセッサ81は、以下のようにして振り方向を算出する。(A1)まず、プロセッサ81は、上記最新入力ベクトルを算出して正規化することで、「現在の入力方向」を算出する。(A2)次に、「現在の入力方向」と過去14フレームの入力値との内積をそれぞれ取り、「内積値が最も小さい(=最も遠い)入力」をDRAM85に一時的に記憶する。(A3)更に、プロセッサ81は、「現在の入力方向」から、上記「内積値が最も小さい入力」を引いて算出したベクトルを正規化し、「軌跡進行方向」としてDRAM85一時的に記憶する。(A4)そして、プロセッサ81は、「軌跡進行方向」ベクトルと「現在の入力方向」ベクトルとを足して正規化した値を「振り方向」として算出する。
【0164】
次に、ステップS112で、プロセッサ81は、上記算出した振り方向、および入力履歴データ309に基づいて、逆方向入力操作が成立すると判定される条件を満たしているか否かを判定する。具体的には、プロセッサ81は、以下に示す条件について、それぞれの条件が満たされているか否かを判定する。そして、プロセッサ81は、各条件の判定結果を示すデータを生成し、DRAM85に一時的に格納する。なお、本実施形態では、以下の<逆方向入力条件1>~<逆方向入力条件4>の全てが満たされている場合に、(後述のステップS55において)逆方向入力操作が行われたと判定する。また、各条件において示しているフレーム数は、あくまで一例である。
【0165】
<逆方向入力条件1>現在の入力座標がスティック平面の端付近にあること。
この条件は、右スティック52を端まで傾けきった状態であるか否かを判定するものである。具体的には、
図39に示すように、現在の入力座標が上記端部領域131内にあれば、この条件を満たしていることになる。
【0166】
<逆方向入力条件2>最新8フレームにおける入力座標が、スティック平面の中心から見て最新の入力方向側にあり、かつ、外周付近(端部領域131)に滞在していること。
この条件は、上記「回転斬り」と区別するために必要となる条件である。例えば、回転斬りを出すため、"右→左→右"とスティック入力した場合を想定すると、"右→左"と入力した時点で回転斬りより先に当該逆方向入力操作による剣振りアクションが行われ得るため、そうならないように、このような条件を判定するものである。
【0167】
<逆方向入力条件3>上記「軌跡進行方向」と最新14フレームでの入力座標との内積をそれぞれ算出し、その最小値が一定以下であること。すなわち、入力軌跡の長さが一定以上であること。
この条件は、一定以上の速度で入力座標が変位し、その入力軌跡の長さが一定以上の長さであるかを調べるための条件である。つまり、ある程度の速さで逆方向への入力操作(右スティック52を傾ける操作)が行われたかどうかを判定するための条件である。
【0168】
<逆方向入力条件4>入力軌跡が、スティック平面の中心を通る直線軌道上の近くを通ったこと。
この条件は、入力軌跡がある程度直線的な軌跡となっているかを判定する為の条件である。具体的には、スティック平面の中心から「軌跡進行方向」に向けて引いた直線と、最新14フレーム分の各入力座標との距離を算出し、その最大値が所定の閾値以下であれば、当該条件を満たすと判定される。
【0169】
本実施形態では、逆方向入力の判定条件として以上の4つの条件を用いるが、他の実施形態では、更に、次のような条件を用いて判定してもよい。
【0170】
<逆方向入力条件5>振り方向への直前Nフレームでの変位の和が一定以上であること。
この条件は、上記逆方向入力条件3の代わりとして用いてもよい。具体的には、各フレームでの入力座標の変位と振り方向との内積を取り、正の値の和が一定以上であるか否かを判定する。
【0171】
<逆方向入力条件6>入力履歴におけるmフレーム、m+1フレームでの外積の絶対値の和が、一定以上でないこと。
この条件は、右スティック52を大きく回転させる操作を除くための条件である。例えば、
図40で示すように、外周に沿って大きく右スティック52を動かした場合を想定する。上記外積は、このような場合に大きな値として算出されるような値である。当該外積の絶対値の和がある程度大きい場合、外周に沿って回転させるような操作が行われていると推測できる。
【0172】
図38に戻り、上記ステップS112における逆方向入力に関する条件チェックの処理が終われば、逆方向入力操作認識処理は終了する。
【0173】
図36に戻り、次に、ステップS56で、プロセッサ81は、上記逆方向入力認識処理における各条件の判定結果を示すデータに基づき、逆方向入力操作が行われたか否かを判定する。すなわち、上述した4つの条件の全てが満たされているか否かを判定し、満たされている場合、逆方向入力操作が行われたと判定する。当該判定の結果、逆方向入力操作が行われた場合は(ステップS56でYES)、
図37のステップS61で、プロセッサ81は、プレイヤオブジェクト201に、上記振りアクションを行わせるための設定を行う。この場合は、当該逆方向入力操作に基づく振りアクションの設定を行うことになる。具体的には、プロセッサ81は、まず、PO状態情報308に「振り状態」を設定する。次に、剣振りパラメータ310に、上記算出された振り方向に応じた剣振りアクションのモーションが行われるように、剣204およびプレイヤオブジェクト201の動きに関する各種の値を設定する。例えば、右端→左端への逆方向入力操作であった場合、プレイヤオブジェクト201が右に剣を構えている姿勢から左方向に剣204を振る(例えば水平斬り)モーションとなる。そのため、このモーションが所定フレームかけて表示(再生)されるように、剣振りパラメータ310の内容が設定される。すなわち、剣振りアクション中の各フレームにおけるプレイヤオブジェクト201の姿勢や剣204の移動方向、移動速度を示すパラメータが設定される。更には、剣振りアクション中における剣204の当たり判定領域の設定も行われる。各種設定が終われば、プロセッサ81は、構え剣振り認識処理を終了する。
【0174】
一方、上記ステップS56の判定の結果、逆方向入力操作が行われていない場合は(ステップS56でNO)、次に、ステップS57で、プロセッサ81は、弾き操作認識処理を実行する。当該処理は上述したものと同じであるため、詳細説明については割愛する。
【0175】
次に、上記「リリース操作」の認識に係る処理を説明する。
図37のステップS58の判定の結果、弾き操作が行われていない場合は(ステップS58でNO)、次に、ステップS59で、プロセッサ81は、リリース操作認識処理を実行する。当該処理では、上述したようなリリース操作が行われたか否かを認識する処理が実行される。
【0176】
図41は、上記リリース操作認識処理の詳細を示すフローチャートである。
図41において、まず、ステップS131で、プロセッサ81は、リリース操作における「振り方向」を入力履歴データ309に基づいて算出する。当該リリース操作は、入力軌跡が数フレームで「所定方向の端→中心」になるような軌跡であるため、中心へ向かう方向が振り方向として算出されることになる。具体的には、プロセッサ81は、以下のようにして振り方向を算出する。(C1)まず、プロセッサ81は、中心点から、10フレーム前の入力座標へのベクトルを算出し、これを正規化したうえで、マイナスを掛ける。(C2)次に、プロセッサ81は、直前数フレーム(例えば5フレーム)における各フレームでの入力の変位量(ベクトル)のうち、上記マイナスを掛けたベクトルと内積を取って、その結果が正の値であるベクトルの和を算出する。(C3)そして、プロセッサ81は、当該算出したベクトルを正規化することで、振り方向とする。
【0177】
次に、ステップS132で、プロセッサ81は、上記算出した振り方向、および入力履歴データ309に基づいて、リリース操作が成立すると判定される条件を満たしているか否かを判定する。具体的には、プロセッサ81は、以下の2つの条件がそれぞれ満たされているか否かを判定する。そして、プロセッサ81は、各条件の判定結果を示すデータを生成し、DRAM85に一時的に格納する。本実施形態では、以下の<リリース操作条件1>~<リリース操作条件2>の全てが満たされている場合に、リリース操作が行われたと判定する。
【0178】
<リリース操作条件1>入力軌跡が概ね同じ方向にあること。
この条件は、リリース操作が行われた場合は、
図42に示すように、端から中心に向けての入力軌跡はほぼ直線の軌跡になると考えられるため、この条件をリリース操作の判定条件としているものである。具体的には、プロセッサ81は、過去数フレームでのそれぞれの入力座標と、中心点からの角度の差を算出する。そして、プロセッサ81は、当該それぞれの角度の差の和は所定の閾値以下か否かを判定し、所定の閾値以下であれば、当該条件を満たす(つまり、ほぼ直線の軌跡である)と判定する。
【0179】
<リリース操作条件2>直前のある程度の期間のうち、スティック位置が端付近に滞在していたフレームが一定以上あること。
この条件は、上述した高速ランダム入力操作については除くための条件である。また、「直前のある程度の期間」については、例えば、直前7フレーム分の期間である。この期間内のうち、入力座標が上記端部領域131内にあったフレームが4フレーム以上あれば、当該条件を満たしていると判定される。
【0180】
上記ステップS132におけるリリース操作に関する条件チェックの処理が終われば、リリース操作認識処理は終了する。
【0181】
図37に戻り、次に、ステップS60で、プロセッサ81は、上記リリース操作認識処理における各条件の判定結果を示すデータに基づき、リリース操作が行われたか否かを判定する。すなわち、上述した2つの条件の全てが満たされているか否かを判定し、満たされている場合、リリース操作が行われたと判定する。当該判定の結果、リリース操作が行われた場合は(ステップS60でYES)、ステップS61で、プロセッサ81は、プレイヤオブジェクト201に振りアクションを行わせるための設定を行う。この場合の設定内容は、当該リリース操作に基づく振りアクションを行わせるためのものとなる。具体的には、プロセッサ81は、まず、PO状態情報308に「振り状態」を設定する。次に、剣振りパラメータ310に、上記算出された振り方向に応じた剣振りアクションのモーションが行われるように、剣204およびプレイヤオブジェクト201の動きに関する各種の値を設定する。例えば、右端→中央へのリリース操作であった場合、プレイヤオブジェクト201が右に剣を構えている姿勢から左方向に剣204を振るモーションを行う様子が所定フレームかけて表示(再生)されるように、剣振りパラメータ310の内容を設定する。当該設定が終われば、プロセッサ81は、構え剣振り認識処理を終了する。
【0182】
一方、上記ステップS60の判定の結果、リリース操作が行われていない場合は(ステップS60でNO)、構え状態において振りアクションを実行する操作が行われていないことになる。この場合は、プロセッサ81は、構え剣振り認識処理を終了する。
【0183】
図34に戻り、次に、ステップS36で、プロセッサ81は、上記構え剣振り認識処理の結果、PO状態が「振り状態」に変化したか否かを判定する。当該判定の結果、振り状態ではない場合は(ステップS6でNO)、ステップS37で、プロセッサ81は、右スティック52への方向入力操作に基づき、剣204の位置や姿勢を変化させる処理を行う。つまり、右スティック52の入力に応じて剣204を動かす、すなわち、上記構えアクションを行わせる処理が実行される。一方、PO状態が「振り状態」の場合は(ステップS36でYES)、上記ステップS37の処理はスキップされて、当該構えアクション処理は終了する。
【0184】
次に、上記ステップS32の判定の結果、操作モードが第2の操作モードの場合(ステップS32でNO)について説明する。この場合は、
図35のステップS40で、プロセッサ81は、第2の操作モードにおける構え状態を終了させる操作が行われたか否かを判定する。この終了操作は、本実施形態では、第1の操作モードの場合と同様に所定のボタンの押下であるとする。
【0185】
上記判定の結果、構え状態を終了させる操作が行われた場合は(ステップS40でYES)、ステップS41で、プロセッサ81は、PO状態情報308に非抜剣状態を設定する。その後、構えアクション処理は終了する。
【0186】
一方、上記ステップS40の判定の結果、構え状態を終了させる操作が行われていない場合は(ステップS40でNO)、次に、ステップS42で、プロセッサ81は、慣性センサデータ306に基づき、所定値以上の加速度が発生したか否かを判定する。この所定値は、右コントローラ4を「振った」と判定されるに足る加速度の大きさである。つまり、右コントローラ4が、所定の速度以上の速さで振られたか否かを判定するものである。当該判定の結果、所定値未満の場合は(ステップS42でNO)、ステップS43で、プロセッサ81は、慣性センサデータ306に含まれる加速度データおよび角速度データに基づいて、右コントローラ4の姿勢を算出する。
【0187】
次に、ステップS44で、プロセッサ81は、上記算出された右コントローラ4の姿勢に対応するように剣204の姿勢と位置を算出する。これにより、慣性センサを用いた構えアクションが実現される。その後、構えアクション処理は終了する。
【0188】
一方、上記ステップS42の判定の結果、加速度が所定値以上の場合は(ステップS42でYES)、第2の操作モードにおける、構え状態から振り状態へ遷移する条件が満たされたことになる。この場合は、ステップS45で、プロセッサ81は、PO状態情報308に「振り状態」を設定する。
【0189】
次に、ステップS46で、プロセッサ81は、慣性センサデータ306に含まれる加速度データに基づき、次のフレームにおける剣204の移動方向および移動速度を設定する。具体的には、プロセッサ81は、上記加速度データに基づき、右コントローラ4が振られた方向を算出する。そして、当該算出した方向が次フレームにおける剣204の移動方向を示すように、剣振りパラメータ310の内容を設定する。更に、プロセッサ81は、上記加速度データに基づき、右コントローラ4が振られた速度を算出する。そして、当該算出した速度が次フレームにおける剣204の移動速度を示すように、剣振りパラメータ310の内容を設定する。
【0190】
なお、ステップS46の処理において、過去数フレームにおける加速度の変化が所定の条件を満たしているか否かを判定し、満たしている場合は上述した「回転斬り」を行うように剣振りパラメータ310を設定してもよい。
【0191】
以上で、構えアクション処理は終了する。構えアクション処理が終了すれば、上記ステップS8に処理が進められる。
【0192】
[振りアクション処理について]
次に、上記ステップS11の振りアクション処理の詳細について説明する。
図43は、当該振りアクション処理の詳細を示すフローチャートである。
図43において、まず、ステップS81で、プロセッサ81は、操作データ302を取得する。
【0193】
次に、ステップS82で、プロセッサ81は、操作モードが第1の操作モードであるか否かを判定する。当該判定の結果、第1の操作モードの場合は(ステップS82でYES)、ステップS83で、プロセッサ81は、上記剣振りパラメータ310の内容に基づいて剣204を移動させ、また、剣204の姿勢も変化させる。つまり、第1の操作モードの場合は、上記剣振り認識処理において設定された振りアクションのモーションが再生されることになる。その後、後述のステップS86に処理が進められる。
【0194】
一方、上記ステップS82の判定の結果、第2の操作モードの場合は(ステップS82でNO)、ステップS84で、プロセッサ81は、上記剣振りパラメータ310の内容に基づいて剣204を移動させる。
【0195】
次に、ステップS85で、プロセッサ81は、上記加速度データに基づき、次フレームにおける剣204の移動方向及び移動速度を設定する。つまり、第2の操作モードの場合は、振りアクションが行われている間は毎フレーム、加速度に基づいて剣204の移動方向と移動速度が設定されることになる。
【0196】
なお、上記ステップS84およびS85の処理に関して、上記ステップS46で剣振りパラメータ310に「回転斬り」用のパラメータが設定されていた場合は、当該回転斬りのモーションが行われるように剣204が移動する処理が行われる。
【0197】
次に、ステップS86で、プロセッサ81は、当たり判定処理を行う。すなわち、剣204が所定のオブジェクトと接触したか否かが判定される。当該判定結果はDRAM85に適宜格納され、上記ステップS6のその他のゲーム処理において、当たり判定結果に基づいた各種のゲーム処理が実行される。
【0198】
次に、ステップS87で、プロセッサ81は、振りアクションが終了したか否かを判定する。例えば、振りアクションが開始されてから所定のフレーム数分の時間が経過したか否か、等で、振りアクション(剣を振るモーションの表示)が終了したか否かが判定される。当該判定の結果、振りアクションが終了した場合は(ステップS87でYES)、ステップS88で、プロセッサ81は、PO状態情報308に構え状態を示すデータを設定する。これにより、振り状態から構え状態への遷移が行われることになる。その後、振りアクション処理は終了する。一方、振りアクションが終了していない場合は(ステップS87でNO)、ステップS88の処理はスキップされ、振りアクション処理は終了する。
【0199】
一方、ステップS84の判定の結果、振りアクションが終了した場合は(ステップS84でYES)、ステップS86で、プロセッサ81は、PO状態情報308に構え状態を示すデータを設定する。これにより、振り状態から構え状態への遷移が行われることになる。その後、振りアクション処理は終了する。振りアクション処理が終了すれば、上記ステップS6に処理が進められる。
【0200】
以上で、本実施形態に係るゲーム処理の詳細説明を終了する。
【0201】
このように、本実施形態では、アナログスティックの方向入力という簡単な操作によって、プレイヤオブジェクト201に剣204を振らせる動作を行わせることができる。また、この動作を行わせるための操作方法として、上記のような「弾き操作」「逆方向入力操作」「リリース操作」の3種類の操作方法をユーザに提供している。ユーザは、ものうちのいずれの操作方法を用いても、プレイヤオブジェクト201に剣204を振らせる動作を行わせることができる。これにより、剣204を振らせる動作について、多様な操作方法をプレイヤに提供でき、プレイヤの利便性を高めることができる。
【0202】
[変形例]
なお、上記剣振り認識処理では、「回転斬り操作」「逆方向入力操作」「弾き操作」「リリース操作」の順で処理していたが、当該処理の順番は入れ替わっていてもよい。また、剣振り認識処理の流れとして、上記操作に係る各条件のチェックだけを先にまとめて行ってから、その判定結果に基づき、いずれかの操作が成立しているか否かを判定するような処理としてもよい。
【0203】
また、上記端部領域131と中心領域132に関して、
図31および
図37の例では、双方の領域は間隔を空けて設定されている例を示している。これに限らず、端部領域131と中心領域132の境目が同じ値となるように(つまり、間隔が空かないように)各領域の大きさを設定してもよい。
【0204】
また、上記実施形態では、第1の操作モードでアナログスティックを用いる場合を例に挙げた。入力デバイスについては、アナログスティックに限らない。入力がない場合は所定のニュートラルポジションとなるようなアナログ入力式の方向入力デバイスを用いる場合にも、上記処理は適用可能である。たとえば、スライドパッド、感圧式スティック等にも適用可能である。更には、このような方向入力デバイスの他、例えばタッチパネル上に構成された仮想ジョイスティックに対しても、上記処理は適用可能である。
【0205】
また、上記実施形態では、剣振りアクションについて3種類の操作方法をユーザに提供する例を挙げたが、他の実施形態では、3種類のうちいずれか2種類だけを提供するような構成でもよい。
【0206】
また、上記実施形態では、剣204を振る場合を例に挙げたが、手に持って振って用いるような武器であれば、その他の種類の武器オブジェクトを用いる場合でも上記処理は適用可能である。例えば棍棒や斧等でもよい。
【0207】
また、上記実施形態においては、ゲーム処理に係る一連の処理が単一の装置において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。また、いわゆるクラウドゲーミングの構成としてもよい。例えば、本体装置2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種ゲーム処理が実行され、その実行結果が動画・音声として本体装置2にストリーミング配信されるような構成としてもよい。
【符号の説明】
【0208】
1 ゲームシステム
2 本体装置
3 左コントローラ
4 右コントローラ
81 プロセッサ
84 フラッシュメモリ
85 DRAM