(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
(51)【国際特許分類】
A63F 13/422 20140101AFI20240910BHJP
A63F 13/58 20140101ALI20240910BHJP
A63F 13/55 20140101ALI20240910BHJP
A63F 13/49 20140101ALI20240910BHJP
A63F 13/53 20140101ALI20240910BHJP
【FI】
A63F13/422
A63F13/58
A63F13/55
A63F13/49
A63F13/53
(21)【出願番号】P 2022107689
(22)【出願日】2022-07-04
【審査請求日】2023-11-06
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】神門 有史
【審査官】岸 智史
(56)【参考文献】
【文献】特開2020-188985(JP,A)
【文献】特開2000-237447(JP,A)
【文献】特開2006-230587(JP,A)
【文献】特開2020-054502(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24、13/00-13/98
(57)【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記コンピュータを、
各々のオブジェクトに関連付けられたオブジェクトタイプの中から第1オブジェクトタイプを利用オブジェクトタイプとして決定するタイプ決定手段と、
ユーザによる第1入力操作が行われたことを検出する検出手段と、
前記第1入力操作が1回行われる毎に前記利用オブジェクトタイプに関連付けられた前記オブジェクトを利用するイベントを発生させる処理を行うイベント発生手段と、
前記イベントが発生する毎に、当該利用オブジェクトタイプに対応付けられたカウンタを変化させるカウント変化処理を行うカウンタ変化手段と、
仮想空間を表す表示用画像を生成する画像生成手段として機能させ、
前記タイプ決定手段は、前記利用オブジェクトタイプに対応付けられた前記カウンタが基準範囲に含まれるようになった場合に、前記利用オブジェクトタイプを前記第1オブジェクトタイプから第2オブジェクトタイプに切り替え、
前記イベント発生手段は、前記ユーザによる前記第1入力操作が複数回繰り返し行われている場合に、前記カウンタが前記基準範囲に含まれるようになったときは、前記第2オブジェクトタイプに関連付けられた前記オブジェクトを利用する前記イベントを発生させる処理を一時的に停止した後に再開する、情報処理プログラム。
【請求項2】
前記イベント発生手段は、前記ユーザによる前記第1入力操作が複数回繰り返し行われている場合に、前記カウンタが前記基準範囲に含まれるようになったときであっても、一時停止条件を満たさない状態であるときは、前記第2オブジェクトタイプに関連付けられた前記オブジェクトを利用する前記イベントを発生させる処理を継続して行う、請求項1に記載の情報処理プログラム。
【請求項3】
前記一時停止条件は、前記イベントの対象である対象オブジェクトが第1カテゴリに含まれる場合に満たされ、第2カテゴリに含まれる場合は満たされない、請求項2に記載の情報処理プログラム。
【請求項4】
前記一時停止条件は、前記第2オブジェクトタイプが第1カテゴリに含まれる場合に満たされ、第2カテゴリに含まれる場合は満たされない、請求項2に記載の情報処理プログラム。
【請求項5】
前記イベント発生手段は、前記イベントの対象である対象オブジェクトが含まれるカテゴリと前記第2オブジェクトタイプが含まれるカテゴリとの組み合わせに基づいて、前記一時停止条件が満たされるか否かを判定する、請求項2に記載の情報処理プログラム。
【請求項6】
前記イベント発生手段は、前記ユーザによる前記第1入力操作が複数回繰り返し行われている場合に、前記ユーザの第2入力操作によって前記利用オブジェクトタイプが前記第1オブジェクトタイプから前記第2オブジェクトタイプに切り替えられたときは、当該第2オブジェクトタイプに関連付けられた前記オブジェクトを利用する前記イベントを発生させる処理を継続して行う、請求項1に記載の情報処理プログラム。
【請求項7】
前記イベント発生手段は、前記ユーザによる前記第1
入力操
作が複数回繰り返し行われている場合に、前記カウンタが前記基準範囲に含まれるようになったときは、前記第2オブジェクトタイプに関連付けられた前記オブジェクトを利用する前記イベントを発生させる処理を、一定の時間だけ停止した後に再開する、請求項1に記載の情報処理プログラム。
【請求項8】
前記イベント発生手段は、前記ユーザによる前記第1
入力操作が複数回繰り返し行われている場合に、前記カウンタが前記基準範囲に含まれるようになったときは、前記第2オブジェクトタイプに関連付けられた前記オブジェクトを利用する前記イベントを発生させる処理を、前記ユーザによる前記第1
入力操
作が繰り返されなくなるまで停止した後に再開する、請求項1に記載の情報処理プログラム。
【請求項9】
前記イベント発生手段は、前記イベントを発生させる処理を一時的に停止している間に前記ユーザによる前記第1
入力操
作が停止したときは、前記第2オブジェクトタイプに関連付けられた前記オブジェクトを利用する当該イベントを発生させる処理を一時的に停止する時間を短くする、請求項1に記載の情報処理プログラム。
【請求項10】
前記ユーザによる第3入力操作が行われたことに応じて前記仮想空間内の位置を指示するカーソルを移動させるカーソル移動手段と、
前記ユーザによる第4入力操作が行われたことに応じて前記カーソルが
前記イベントの対象である対象オブジェクトの位置を指示するように当該カーソルを固定するカーソル固定手段として前記コンピュータを更に機能させ
前記
イベント発生手段は、前記第1入力操作が行われるごとに、前記カーソルが指示する前記仮想空間内の前記位置に対して前記イベントを発生させる、請求項1に記載の情報処理プログラム。
【請求項11】
各々のオブジェクトに関連付けられたオブジェクトタイプの中から第1オブジェクトタイプを利用オブジェクトタイプとして決定するタイプ決定手段と、
ユーザによる第1入力操作が行われたことを検出する検出手段と、
前記第1入力操作が1回行われる毎に前記利用オブジェクトタイプに関連付けられた前記オブジェクトを利用するイベントを発生させる処理を行うイベント発生手段と、
前記イベントが発生する毎に、当該利用オブジェクトタイプに対応付けられたカウンタを変化させるカウント変化処理を行うカウンタ変化手段と、
仮想空間を表す表示用画像を生成する画像生成手段とを備え、
前記タイプ決定手段は、前記利用オブジェクトタイプに対応付けられた前記カウンタが基準範囲に含まれるようになった場合に、前記利用オブジェクトタイプを前記第1オブジェクトタイプから第2オブジェクトタイプに切り替え、
前記イベント発生手段は、前記ユーザによる前記第1入力操作が複数回繰り返し行われている場合に、前記カウンタが前記基準範囲に含まれるようになったときは、前記第2オブジェクトタイプに関連付けられた前記オブジェクトを利用する前記イベントを発生させる処理を一時的に停止した後に再開する、情報処理装置。
【請求項12】
各々のオブジェクトに関連付けられたオブジェクトタイプの中から第1オブジェクトタイプを利用オブジェクトタイプとして決定するタイプ決定手段と、
ユーザによる第1入力操作が行われたことを検出する検出手段と、
前記第1入力操作が1回行われる毎に前記利用オブジェクトタイプに関連付けられた前記オブジェクトを利用するイベントを発生させる処理を行うイベント発生手段と、
前記イベントが発生する毎に、当該利用オブジェクトタイプに対応付けられたカウンタを変化させるカウント変化処理を行うカウンタ変化手段と、
仮想空間を表す表示用画像を生成する画像生成手段とを備え、
前記タイプ決定手段は、前記利用オブジェクトタイプに対応付けられた前記カウンタが基準範囲に含まれるようになった場合に、前記利用オブジェクトタイプを前記第1オブジェクトタイプから第2オブジェクトタイプに切り替え、
前記イベント発生手段は、前記ユーザによる前記第1入力操作が複数回繰り返し行われている場合に、前記カウンタが前記基準範囲に含まれるようになったときは、前記第2オブジェクトタイプに関連付けられた前記オブジェクトを利用する前記イベントを発生させ
る処理を一時的に停止した後に再開する、情報処理システム。
【請求項13】
情報処理装置のコンピュータに実行させる情報処理方法であって、
前記コンピュータに、
各々のオブジェクトに関連付けられたオブジェクトタイプの中から第1オブジェクトタイプを利用オブジェクトタイプとして決定させ、
ユーザによる第1入力操作が行われたことを検出させ、
前記第1入力操作が1回行われる毎に前記利用オブジェクトタイプに関連付けられた前記オブジェクトを利用するイベントを発生させる処理を行わせ、
前記イベントが発生する毎に、当該利用オブジェクトタイプに対応付けられたカウンタを変化させるカウント変化処理を行わせ、
仮想空間を表す表示用画像を生成させ、
前記利用オブジェクトタイプの決定において、当該利用オブジェクトタイプに対応付けられた前記カウンタが基準範囲に含まれるようになった場合に、当該利用オブジェクトタイプを前記第1オブジェクトタイプから第2オブジェクトタイプに切り替え、
前記イベントを発生させる処理において、前記ユーザによる前記第1入力操作が複数回繰り返し行われている場合に、前記カウンタが前記基準範囲に含まれるようになったときは、前記第2オブジェクトタイプに関連付けられた前記オブジェクトを利用する前記イベントを発生させる処理を一時的に停止した後に再開する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ある入力操作が繰り返し行われているときのゲーム処理の制御に関する。
【背景技術】
【0002】
従来から、複数の種類がある第1オブジェクトを投擲する操作を行うことが可能なゲームが知られている(例えば非特許文献1)。当該ゲームでは、投擲操作に割り当てられているボタンを連打することで、連続して第1オブジェクトを投擲できる。また、投擲可能な第1オブジェクト数は、プレイヤキャラクタのグループに加わっている第1オブジェクトの数が上限となっている。そして、連続して第1オブジェクトを投擲している場合は、種類毎に投擲される。例えば、種類A、種類B、種類Cの第1オブジェクトがそれぞれ10体ずつ上記グループ内にいる場合を想定する。この場合、上記ボタンの連打によって投擲すると、種類Aの第1オブジェクトが1体ずつ投擲されていき、10体全て投擲し終わると、投擲する対象が種類Bの第1オブジェクトに自動的に切り替わり、引き続き投擲が継続される。つまり、ユーザは、単に連打を続けているだけで、種類Aを10体→種類Bを10体→種類Cを10体、というように、グループ内の第1オブジェクトの投擲を連続的に行うことができる。
【先行技術文献】
【非特許文献】
【0003】
【文献】任天堂株式会社、”Pikmin 3 Deluxe”、[online]、[令和4年6月22日検索]、インターネット(URL:https://www.nintendo.com/store/products/pikmin-3-deluxe-switch/)
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のように、連打操作で投擲している場合、ある種類の第1オブジェクトの残数が0になっても、投擲する対象が自動的に次の種類の第1オブジェクトに切り替わる。これは、ユーザの利便性を向上できるものである。しかし、その一方で、ゲームの状況によっては、そのときの状況に対して適切ではない種類の第1オブジェクトを投擲してしまうこともあった。例えば、種類Aの第1オブジェクト以外はダメージを受けるようなオブジェクトに対して、上記のような連打操作によって投擲を行った場合、上記のような自動切り替えによって、種類Aの第1オブジェクトのみならず、そのときの状況には適切ではない種類Bの第1オブジェクトまで(連打の勢いで)投擲してしまうことがあった。そのため、このような連打に係る操作性に関して、改善の余地があった。
【0005】
それ故に、本開示における目的は、所定の入力操作を繰り返し行う場合における操作性を向上できる情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0007】
(構成1)
構成1は、情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、コンピュータを、タイプ決定手段と、検出手段と、イベント発生手段と、カウンタ変化手段と、画像生成手段として機能させる。タイプ決定手段は、各々のオブジェクトに関連付けられたオブジェクトタイプの中から第1オブジェクトタイプを利用オブジェクトタイプとして決定する。検出手段は、ユーザによる第1入力操作が行われたことを検出する。イベント発生手段は、第1入力操作が1回行われる毎に利用オブジェクトタイプに関連付けられたオブジェクトを利用するイベントを発生させる処理を行う。カウンタ変化手段は、イベントが発生する毎に、当該利用オブジェクトタイプに対応付けられたカウンタを変化させるカウント変化処理を行う。画像生成手段は、仮想空間を表す表示用画像を生成する。そして、タイプ決定手段は、利用オブジェクトタイプに対応付けられたカウンタが基準範囲に含まれるようになった場合に、利用オブジェクトタイプを第1オブジェクトタイプから第2オブジェクトタイプに切り替える。更に、イベント発生手段は、ユーザによる第1入力操作が複数回繰り返し行われている場合に、カウンタが基準範囲に含まれるようになったときは、第2オブジェクトタイプに関連付けられたオブジェクトを利用するイベントを発生させる処理を一時的に停止した後に再開する。
【0008】
上記構成によれば、1入力で1回のイベントを発生させる第1入力操作が複数回繰り返し行われている状況下で、イベント発生毎に変化するカウンタが基準範囲に含まれると、イベント発生に利用するオブジェクトのタイプを第1オブジェクトタイプから第2オブジェクトタイプに切り替えつつ、当該第2オブジェクトタイプを利用するイベントの発生を一時的に停止した後、再開する。つまり、第1入力操作が複数回繰り返されているときにイベント発生に利用するオブジェクトのタイプが切り替わった際、切り替わり後のオブジェクトタイプによるイベント発生を一旦停止させている。そのため、ユーザに、イベントが発生しないことによる違和感を与え、これによって、イベント発生に利用するオブジェクトのタイプが切り替わったことに気付かせることができる。これにより、ユーザに、この時点で第1入力操作を止めるきっかけを与えることができる。
【0009】
(構成2)
構成2は、上記構成1において、イベント発生手段は、ユーザによる第1入力操作が複数回繰り返し行われている場合に、カウンタが基準範囲に含まれるようになったときであっても、一時停止条件を満たさない状態であるときは、第2オブジェクトタイプに関連付けられたオブジェクトを利用するイベントを発生させる処理を継続して行ってもよい。
【0010】
上記構成によれば、イベントの発生を継続してもユーザに不利にならないような場合にまでイベント発生を停止しないようにすることで、操作のレスポンスを向上することができる。
【0011】
(構成3)
構成3は、上記構成2において、一時停止条件は、イベントの対象である対象オブジェクトが第1カテゴリに含まれる場合に満たされ、第2カテゴリに含まれる場合は満たされないようにしてもよい。
【0012】
上記構成によれば、イベント発生を一時手的に停止した方が良いと見込まれる対象オブジェクトについて予め設定することができる。
【0013】
(構成4)
構成4は、上記構成2において、一時停止条件は、第2オブジェクトタイプが第1カテゴリに含まれる場合に満たされ、第2カテゴリに含まれる場合は満たされないようにしてもよい。
【0014】
上記構成によれば、他のタイプのオブジェクト比べて性能が大きく異なり、その影響力が大きいと考えられるタイプのオブジェクトを利用するイベントが、第1入力操作が複数回繰り返し行われている場合にユーザの意図に反して発生してしまうことを防ぐことができる。
【0015】
(構成5)
構成5は、上記構成2において、イベント発生手段は、イベントの対象である対象オブジェクトが含まれるカテゴリと第2オブジェクトタイプが含まれるカテゴリとの組み合わせに基づいて、一時停止条件が満たされるか否かを判定してもよい。
【0016】
上記構成によれば、特定の対象オブジェクトについて、特定のタイプのオブジェクトを利用しない場合に、イベントの発生を一時停止することができる。そのため、これにより、特定の対象オブジェクトに対して適切なタイプのオブジェクトを利用することを促すことができる。
【0017】
(構成6)
構成6は、上記構成1~5のいずれかにおいて、イベント発生手段は、ユーザによる第1入力操作が複数回繰り返し行われている場合に、ユーザの第2入力操作によって利用オブジェクトタイプが第1オブジェクトタイプから第2オブジェクトタイプに切り替えられたときは、当該第2オブジェクトタイプに関連付けられたオブジェクトを利用するイベントを発生させる処理を継続して行ってもよい。
【0018】
上記構成によれば、ユーザが手動操作で利用オブジェクトタイプを切り替えた場合は、イベント発生処理を一時停止させずに継続させることができる。ユーザの手動操作による切り替えは、ユーザによる意図的な操作であるため、このような場合にまで、イベントの発生が一時的に停止しないようにすることで、操作のレスポンスが低下することを防ぐことができる。
【0019】
(構成7)
構成7は、上記構成1~6のいずれかにおいて、イベント発生手段は、ユーザによる第1操作入力が複数回繰り返し行われている場合に、カウンタが基準範囲に含まれるようになったときは、第2オブジェクトタイプに関連付けられたオブジェクトを利用するイベントを発生させる処理を一定の時間だけ停止した後に再開してもよい。
【0020】
上記構成によれば、イベント発生処理を一時停止した後もユーザが第1入力操作の繰り返し入力を止めずに継続している場合、一定時間の経過後にイベント発生処理が再開される。イベント発生が一時停止した後もユーザが第1入力操作の繰り返し入力を続けている場合、意図的に続けているとも考えられるため、一定時間の経過後にイベント発生を再開することで、ユーザの意図を汲んだ操作を実現できる。また、ユーザには、第1入力操作の繰り返しという一連の動作を止めるという選択肢と、途中でイベント発生は一時停止されるものの、当該一連の動作を止めること無く続けるという選択肢という複数の選択肢が提供されることになる。これにより、操作の自由度を向上できる。
【0021】
(構成8)
構成8は、上記構成1~7のいずれかにおいて、イベント発生手段は、ユーザによる第1操作が複数回繰り返し行われている場合に、カウンタが基準範囲に含まれるようになったときは、第2オブジェクトタイプのオブジェクトを利用するイベントを発生させる処理をユーザによる第1操作入力が繰り返されなくなるまで停止した後に再開してもよい。
【0022】
上記構成によれば、ユーザが繰り返し入力を止めるまではイベント発生処理を停止できる。これにより、カウンタが基準範囲に含まれた状態であることをよりユーザが気付きやすいようにすることができる。
【0023】
(構成9)
構成9は、上記構成1~8のいずれかにおいて、イベント発生手段は、イベントを発生させる処理を一時的に停止している間にユーザによる第1操作入力が停止したときは、第2オブジェクトタイプの前記オブジェクトを利用する当該イベントを発生させる処理を一時的に停止する時間を短くしてもよい。
【0024】
上記構成によれば、イベント発生が一時停止している時間を短縮できる。そのためユーザがイベント発生回数を意図的に増やしたい場合に、より速やかに当該回数を増やすことを可能とする。
【0025】
(構成10)
構成10は、上記構成1~9のいずれかにおいて、コンピュータを、ユーザによる第3入力操作が行われたことに応じて仮想空間内の位置を指示するカーソルを移動させるカーソル移動手段と、ユーザによる第4入力操作が行われたことに応じてカーソルが対象オブジェクトの位置を指示するように当該カーソルを固定するカーソル固定手段として更に機能させてもよい。そして、記状態変化手段は、第1入力操作が行われるごとに、カーソルが指示する仮想空間内の位置に対して上記イベントを発生させてもよい。
【0026】
上記構成によれば、カーソルを固定させ、その指示位置に対してイベントを発生させることができるため、第1入力操作毎にカーソル位置を動かす必要性がなくなり、ユーザの操作性、利便性を向上できる。
【発明の効果】
【0027】
本実施形態によれば、例えばボタンの連打操作によって、複数のタイプのオブジェクトを利用するイベントを連続的に発生させる場合に、ユーザが意図しないタイプのオブジェクトを利用したイベントを発生させてしまうことを防ぐことができ、繰り返し入力に係る操作性を向上できる。
【図面の簡単な説明】
【0028】
【
図1】本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図
【
図2】本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図
【
図6】本体装置2の内部構成の一例を示すブロック図
【
図7】本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図
【
図14】本実施形態に係るストッパー制御の概要を説明するための図
【
図22】DRAM85に記憶される各種データの一例を示すメモリマップ
【
図28】本実施形態に係るゲーム処理の詳細を示すフローチャート
【
図29】プレイヤキャラクタ制御処理の詳細を示すフローチャート
【
図30】カーソル制御処理の詳細を示すフローチャート
【
図31】カーソル制御処理の詳細を示すフローチャート
【
図32】連投ストッパー制御処理の詳細を示すフローチャート
【
図33】ストッパー発動処理の詳細を示すフローチャート
【
図34】ストッパー発動処理の詳細を示すフローチャート
【
図35】ストッパー解除処理の詳細を示すフローチャート
【
図38】連打状態解除処理の詳細を示すフローチャート
【
図39】サポーター制御処理の詳細を示すフローチャート
【
図40】サポーター制御処理の詳細を示すフローチャート
【発明を実施するための形態】
【0029】
以下、一実施形態について説明する。
【0030】
以下、本実施形態の一例に係るゲームシステムについて説明する。本実施形態におけるゲームシステム1の一例は、本体装置(情報処理装置;本実施形態ではゲーム装置本体として機能する)2と左コントローラ3および右コントローラ4とを含む。本体装置2は、左コントローラ3および右コントローラ4がそれぞれ着脱可能である。つまり、ゲームシステム1は、左コントローラ3および右コントローラ4をそれぞれ本体装置2に装着して一体化された装置として利用できる。また、ゲームシステム1は、本体装置2と左コントローラ3および右コントローラ4とを別体として利用することもできる(
図2参照)。以下では、本実施形態のゲームシステム1のハードウェア構成について説明し、その後に本実施形態のゲームシステム1の制御について説明する。
【0031】
図1は、本体装置2に左コントローラ3および右コントローラ4を装着した状態の一例を示す図である。
図1に示すように、左コントローラ3および右コントローラ4は、それぞれ本体装置2に装着されて一体化されている。本体装置2は、ゲームシステム1における各種の処理(例えば、ゲーム処理)を実行する装置である。本体装置2は、ディスプレイ12を備える。左コントローラ3および右コントローラ4は、ユーザが入力を行うための操作部を備える装置である。
【0032】
図2は、本体装置2から左コントローラ3および右コントローラ4をそれぞれ外した状態の一例を示す図である。
図1および
図2に示すように、左コントローラ3および右コントローラ4は、本体装置2に着脱可能である。なお、以下において、左コントローラ3および右コントローラ4の総称として「コントローラ」と記載することがある。
【0033】
図3は、本体装置2の一例を示す六面図である。
図3に示すように、本体装置2は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。
【0034】
なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。また、本体装置2単体または本体装置2に左コントローラ3および右コントローラ4が装着された一体型装置は、携帯型装置となってもよい。また、本体装置2または一体型装置が手持ち型の装置となってもよい。また、本体装置2または一体型装置が可搬型装置となってもよい。
【0035】
図3に示すように、本体装置2は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、本体装置2が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0036】
また、本体装置2は、ディスプレイ12の画面上にタッチパネル13を備える。本実施形態においては、タッチパネル13は、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものである。ただし、タッチパネル13は、任意の種類のものであってよく、例えば、シングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0037】
本体装置2は、ハウジング11の内部においてスピーカ(すなわち、
図6に示すスピーカ88)を備えている。
図3に示すように、ハウジング11の主面には、スピーカ孔11aおよび11bが形成される。そして、スピーカ88の出力音は、これらのスピーカ孔11aおよび11bからそれぞれ出力される。
【0038】
また、本体装置2は、本体装置2が左コントローラ3と有線通信を行うための端子である左側端子17と、本体装置2が右コントローラ4と有線通信を行うための右側端子21を備える。
【0039】
図3に示すように、本体装置2は、スロット23を備える。スロット23は、ハウジング11の上側面に設けられる。スロット23は、所定の種類の記憶媒体を装着可能な形状を有する。所定の種類の記憶媒体は、例えば、ゲームシステム1およびそれと同種の情報処理装置に専用の記憶媒体(例えば、専用メモリカード)である。所定の種類の記憶媒体は、例えば、本体装置2で利用されるデータ(例えば、アプリケーションのセーブデータ等)、および/または、本体装置2で実行されるプログラム(例えば、アプリケーションのプログラム等)を記憶するために用いられる。また、本体装置2は、電源ボタン28を備える。
【0040】
本体装置2は、下側端子27を備える。下側端子27は、本体装置2がクレードルと通信を行うための端子である。本実施形態において、下側端子27は、USBコネクタ(より具体的には、メス側コネクタ)である。上記一体型装置または本体装置2単体をクレードルに載置した場合、ゲームシステム1は、本体装置2が生成して出力する画像を据置型モニタに表示することができる。また、本実施形態においては、クレードルは、載置された上記一体型装置または本体装置2単体を充電する機能を有する。また、クレードルは、ハブ装置(具体的には、USBハブ)の機能を有する。
【0041】
図4は、左コントローラ3の一例を示す六面図である。
図4に示すように、左コントローラ3は、ハウジング31を備える。本実施形態においては、ハウジング31は、縦長の形状、すなわち、
図4における上下方向(
図4に示すz軸方向)に長い形状である。左コントローラ3は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング31は、縦長となる向きで把持される場合に片手、特に左手で把持可能な形状および大きさをしている。また、左コントローラ3は、横長となる向きで把持されることも可能である。左コントローラ3が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0042】
左コントローラ3は、方向入力デバイスの一例である左アナログスティック(以下、左スティックと呼ぶ)32を備える。
図4に示すように、左スティック32は、ハウジング31の主面に設けられる。左スティック32は、方向を入力することが可能な方向入力部として用いることができる。ユーザは、左スティック32を傾倒することによって傾倒方向に応じた方向の入力(および、傾倒した角度に応じた大きさの入力)が可能である。なお、左コントローラ3は、方向入力部として、アナログスティックに代えて、十字キーまたはスライド入力が可能なスライドスティック等を備えるようにしてもよい。また、本実施形態においては、左スティック32を押下する入力が可能である。
【0043】
左コントローラ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プログラムやアプリケーションプログラム)に応じた指示を行うために用いられる。
【0044】
また、左コントローラ3は、左コントローラ3が本体装置2と有線通信を行うための端子42を備える。
【0045】
図5は、右コントローラ4の一例を示す六面図である。
図5に示すように、右コントローラ4は、ハウジング51を備える。本実施形態においては、ハウジング51は、縦長の形状、すなわち、
図5における上下方向(
図5に示すz軸方向)に長い形状である。右コントローラ4は、本体装置2から外された状態において、縦長となる向きで把持されることも可能である。ハウジング51は、縦長となる向きで把持される場合に片手、特に右手で把持可能な形状および大きさをしている。また、右コントローラ4は、横長となる向きで把持されることも可能である。右コントローラ4が横長となる向きで把持される場合には、両手で把持されるようにしてもよい。
【0046】
右コントローラ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を備える。
【0047】
また、右コントローラ4は、右コントローラ4が本体装置2と有線通信を行うための端子64を備える。
【0048】
図6は、本体装置2の内部構成の一例を示すブロック図である。本体装置2は、
図3に示す構成の他、
図6に示す各構成要素81~91、97、および98を備える。これらの構成要素81~91、97、および98のいくつかは、電子部品として電子回路基板上に実装されてハウジング11内に収納されてもよい。
【0049】
本体装置2は、プロセッサ81を備える。プロセッサ81は、本体装置2において実行される各種の情報処理を実行する情報処理部であって、例えば、CPU(Central Processing Unit)のみから構成されてもよいし、CPU機能、GPU(Graphics Processing Unit)機能等の複数の機能を含むSoC(System-on-a-chip)から構成されてもよい。プロセッサ81は、記憶部(具体的には、フラッシュメモリ84等の内部記憶媒体、あるいは、スロット23に装着される外部記憶媒体等)に記憶される情報処理プログラム(例えば、ゲームプログラム)を実行することによって、各種の情報処理を実行する。
【0050】
本体装置2は、自身に内蔵される内部記憶媒体の一例として、フラッシュメモリ84およびDRAM(Dynamic Random Access Memory)85を備える。フラッシュメモリ84およびDRAM85は、プロセッサ81に接続される。フラッシュメモリ84は、主に、本体装置2に保存される各種のデータ(プログラムであってもよい)を記憶するために用いられるメモリである。DRAM85は、情報処理において用いられる各種のデータを一時的に記憶するために用いられるメモリである。
【0051】
本体装置2は、スロットインターフェース(以下、「I/F」と略記する。)91を備える。スロットI/F91は、プロセッサ81に接続される。スロットI/F91は、スロット23に接続され、スロット23に装着された所定の種類の記憶媒体(例えば、専用メモリカード)に対するデータの読み出しおよび書き込みを、プロセッサ81の指示に応じて行う。
【0052】
プロセッサ81は、フラッシュメモリ84およびDRAM85、ならびに上記各記憶媒体との間でデータを適宜読み出したり書き込んだりして、上記の情報処理を実行する。
【0053】
本体装置2は、ネットワーク通信部82を備える。ネットワーク通信部82は、プロセッサ81に接続される。ネットワーク通信部82は、ネットワークを介して外部の装置と通信(具体的には、無線通信)を行う。本実施形態においては、ネットワーク通信部82は、第1の通信態様としてWi-Fiの規格に準拠した方式により、無線LANに接続して外部装置と通信を行う。また、ネットワーク通信部82は、第2の通信態様として所定の通信方式(例えば、独自プロトコルによる通信や、赤外線通信)により、同種の他の本体装置2との間で無線通信を行う。なお、上記第2の通信態様による無線通信は、閉ざされたローカルネットワークエリア内に配置された他の本体装置2との間で無線通信可能であり、複数の本体装置2の間で直接通信することによってデータが送受信される、いわゆる「ローカル通信」を可能とする機能を実現する。
【0054】
本体装置2は、コントローラ通信部83を備える。コントローラ通信部83は、プロセッサ81に接続される。コントローラ通信部83は、左コントローラ3および/または右コントローラ4と無線通信を行う。本体装置2と左コントローラ3および右コントローラ4との通信方式は任意であるが、本実施形態においては、コントローラ通信部83は、左コントローラ3との間および右コントローラ4との間で、Bluetooth(登録商標)の規格に従った通信を行う。
【0055】
プロセッサ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は、クレードルを介してデータ(例えば、画像データや音声データ)を据置型モニタ等に出力することができる。
【0056】
ここで、本体装置2は、複数の左コントローラ3と同時に(換言すれば、並行して)通信を行うことができる。また、本体装置2は、複数の右コントローラ4と同時に(換言すれば、並行して)通信を行うことができる。したがって、複数のユーザは、左コントローラ3および右コントローラ4のセットをそれぞれ用いて、本体装置2に対する入力を同時に行うことができる。一例として、第1ユーザが左コントローラ3および右コントローラ4の第1セットを用いて本体装置2に対して入力を行うと同時に、第2ユーザが左コントローラ3および右コントローラ4の第2セットを用いて本体装置2に対して入力を行うことが可能となる。
【0057】
本体装置2は、タッチパネル13の制御を行う回路であるタッチパネルコントローラ86を備える。タッチパネルコントローラ86は、タッチパネル13とプロセッサ81との間に接続される。タッチパネルコントローラ86は、タッチパネル13からの信号に基づいて、例えばタッチ入力が行われた位置を示すデータを生成して、プロセッサ81へ出力する。
【0058】
また、ディスプレイ12は、プロセッサ81に接続される。プロセッサ81は、(例えば、上記の情報処理の実行によって)生成した画像および/または外部から取得した画像をディスプレイ12に表示する。
【0059】
本体装置2は、コーデック回路87およびスピーカ(具体的には、左スピーカおよび右スピーカ)88を備える。コーデック回路87は、スピーカ88および音声入出力端子25に接続されるとともに、プロセッサ81に接続される。コーデック回路87は、スピーカ88および音声入出力端子25に対する音声データの入出力を制御する回路である。
【0060】
本体装置2は、電力制御部97およびバッテリ98を備える。電力制御部97は、バッテリ98およびプロセッサ81に接続される。また、図示しないが、電力制御部97は、本体装置2の各部(具体的には、バッテリ98の電力の給電を受ける各部、左側端子17、および右側端子21)に接続される。電力制御部97は、プロセッサ81からの指令に基づいて、バッテリ98から上記各部への電力供給を制御する。
【0061】
また、バッテリ98は、下側端子27に接続される。外部の充電装置(例えば、クレードル)が下側端子27に接続され、下側端子27を介して本体装置2に電力が供給される場合、供給された電力がバッテリ98に充電される。
【0062】
図7は、本体装置2と左コントローラ3および右コントローラ4との内部構成の一例を示すブロック図である。なお、本体装置2に関する内部構成の詳細については、
図6で示しているため
図7では省略している。
【0063】
左コントローラ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(登録商標)の規格に従って行われる。
【0064】
また、左コントローラ3は、例えばフラッシュメモリ等のメモリ102を備える。通信制御部101は、例えばマイコン(マイクロプロセッサとも言う)で構成され、メモリ102に記憶されるファームウェアを実行することによって各種の処理を実行する。
【0065】
左コントローラ3は、各ボタン103(具体的には、ボタン33~39、43、44、および47)を備える。また、左コントローラ3は、左スティック32を備える。各ボタン103および左スティック32は、自身に対して行われた操作に関する情報を、適宜のタイミングで繰り返し通信制御部101へ出力する。
【0066】
左コントローラ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へ出力される。
【0067】
通信制御部101は、各入力部(具体的には、各ボタン103、左スティック32、各センサ104および105)から、入力に関する情報(具体的には、操作に関する情報、またはセンサによる検出結果)を取得する。通信制御部101は、取得した情報(または取得した情報に所定の加工を行った情報)を含む操作データを本体装置2へ送信する。なお、操作データは、所定時間に1回の割合で繰り返し送信される。なお、入力に関する情報が本体装置2へ送信される間隔は、各入力部について同じであってもよいし、同じでなくてもよい。
【0068】
上記操作データが本体装置2へ送信されることによって、本体装置2は、左コントローラ3に対して行われた入力を得ることができる。すなわち、本体装置2は、各ボタン103および左スティック32に対する操作を、操作データに基づいて判別することができる。また、本体装置2は、左コントローラ3の動きおよび/または姿勢に関する情報を、操作データ(具体的には、加速度センサ104および角速度センサ105の検出結果)に基づいて算出することができる。
【0069】
左コントローラ3は、電力供給部108を備える。本実施形態において、電力供給部108は、バッテリおよび電力制御回路を有する。図示しないが、電力制御回路は、バッテリに接続されるとともに、左コントローラ3の各部(具体的には、バッテリの電力の給電を受ける各部)に接続される。
【0070】
図7に示すように、右コントローラ4は、本体装置2との間で通信を行う通信制御部111を備える。また、右コントローラ4は、通信制御部111に接続されるメモリ112を備える。通信制御部111は、端子64を含む各構成要素に接続される。通信制御部111およびメモリ112は、左コントローラ3の通信制御部101およびメモリ102と同様の機能を有する。したがって、通信制御部111は、端子64を介した有線通信と、端子64を介さない無線通信(具体的には、Bluetooth(登録商標)の規格に従った通信)との両方で本体装置2と通信を行うことが可能であり、右コントローラ4が本体装置2に対して行う通信方法を制御する。
【0071】
右コントローラ4は、左コントローラ3の各入力部と同様の各入力部を備える。具体的には、各ボタン113、右スティック52、慣性センサ(加速度センサ114および角速度センサ115)を備える。これらの各入力部については、左コントローラ3の各入力部と同様の機能を有し、同様に動作する。
【0072】
右コントローラ4は、電力供給部118を備える。電力供給部118は、左コントローラ3の電力供給部108と同様の機能を有し、同様に動作する。
【0073】
以下、本実施形態に係るゲームシステム1で実行される処理の動作概要を説明する。本実施形態に係る処理は、コントローラのボタンを連打するような、連続的に所定の操作を行う場合におけるユーザの利便性を向上させるための処理である。具体的には、ゲームの状況的に見て必要以上に連打が行われている場合に、その連打に係る入力を(一時的に)無効化して扱うような制御を行う。
【0074】
[本実施形態におけるゲーム処理の概要]
まず、本実施形態で想定するゲームについて説明する。
図8は、本実施形態に係るゲームの画面例である。当該ゲームは、仮想3次元空間(以下、仮想空間と呼ぶ)内において、3人称視点で表示されるプレイヤキャラクタオブジェクト(以下、PCと呼ぶ)201を操作するゲームである。
図8の例では、PC201と、PC201に関連付けられているカーソル202が表示されている。また、
図8では、PC201をサポートするためのサポーターキャラクタオブジェクト(以下、単にサポーターと呼ぶ)が複数体表示されている。また、仕事対象オブジェクト(以下、単に仕事対象と呼ぶ)も1つ表示されている。また、画面右下には、切り替えガイド203が表示されている。
【0075】
本ゲームでは、ユーザが所定の操作を行うことで、PC201およびカーソル202が連動するようにして移動させることができる。具体的には、左スティック32を操作することで、カーソル202およびPC201を移動させることができる。この際、PC201は、基本的には、カーソル202と一定の距離を保つようにしながら移動する。そのため、ユーザは、PC201とカーソル202との間に所定の間隔がある状態のまま、両者を同時に移動させることができる。
【0076】
更に、ユーザは、PC201に、上記サポーターをカーソル202の位置に「投擲」させることができる。以下、この操作のことを「投擲操作」と呼ぶ。また、投擲に係るPC201の動作(アニメーション)のことを「投擲動作」と呼ぶ。また、本例では、投擲操作はAボタン53の押下であるとする。Aボタン53を1回押して指を離すことで1回分の操作となり、カーソル202の位置にめがけてサポーターを1体、投擲できる。また、ユーザがAボタン53を連打することで、連続的にサポーターを投擲することもできる。以下、当該投擲されるサポーターのことを「投擲対象サポーター」と呼ぶ。また、投擲対象サポーターのサポーター種類のことを「投擲対象種類」と呼ぶ。また、Aボタン53が連打されている状態を「連打状態」と呼び、連打によって連続的にサポーターを投擲することを「連投」と呼び、連投中のPC201の状態のことを「連投状態」と呼ぶ。
【0077】
上記投擲操作に基づいて投擲されたサポーターは、着地点の近くにある仕事対象に対して、その仕事対象に応じた様々なアクションを行う。つまり、本ゲームは、様々な仕事対象に向けてサポーターを投擲し、各種の仕事対象に対して様々なアクションを行わせることでゲームを進行させるというゲームである。サポーターに行わせるアクションの一例としては、以下のようなアクションがある。まず、敵キャラクタ(図示せず)を攻撃する攻撃アクションがある。また、所定のアイテムを所定の位置に運搬させるという運搬アクションがある。また、進路を塞いでいる障害物(岩やゲート等)を破壊する破壊アクションがある。
【0078】
次に、上記サポーターに関して説明する。当該サポーターは、PC201に関連付けられているNPC(ノンプレイヤキャラクタ)である。当該サポーターは、AI制御によって、ある程度自律的に行動する、生物的なキャラクタオブジェクトである。ここで、本ゲームでは、「隊列」の概念がある。当該「隊列」は、1体の「リーダー」と複数の「メンバー」で構成され得る。「リーダー」はPC201である。上記サポーターは、「メンバー」となり得る。上記サポーターは、隊列に所属していない状態でゲームフィールド上に点在しており、ユーザが所定の操作を行うことで、所定のサポーターを自身の隊列に加えることができる。本ゲームでは、PC201の移動は、この「隊列」単位での移動となる。そのため、隊列に入ったサポーターは、PC201の移動に追従して自動的に移動する。また、上記投擲対象サポーターとなるのは、隊列に入っているサポーターのみである。
【0079】
ここで、本実施形態では、サポーターは複数の種類に分かれており、各種類でその外観が異なっている。本実施形態では一例として、サポーターが4種類ある場合を例に説明する。本実施形態では、各種別毎にその外観の基調となる色が種類毎に異なっているとし、具体的には、赤色、青色、白色、黄色であるとする。そのため、以下の説明では、各種類のサポーターのことを、「赤サポーター」、「青サポーター」、「白サポーター」、「黄サポーター」と称する。
図8の例では、隊列のサポーターが種類毎に略縦列状に並んでいる様子を示している。また、この例では、サポーターは種類毎に8体ずついる例を示している。つまり、隊列内に合計で32体のサポーターがいる例を示している。
【0080】
また、本実施形態では、サポーターの種類毎に、外観だけでなくその特性や性能も異なっている。例えば、攻撃力や、後述する仕事力がサポーターの種類によって異なり得る。
【0081】
次に、上記
図8で示した仕事対象に関して説明する。仕事対象は、上記サポーターが所定のアクションを行う対象となる各種のオブジェクトである。当該仕事対象の一例としては、攻撃アクションとなる敵キャラクタオブジェクト、上記運搬アクションの対象となる運搬物オブジェクト、上記破壊アクションの対象となる障害物オブジェクト等がある。
【0082】
ここで、以下の説明の前提として、本ゲームにおける仕事対象の種類について説明する。上記仕事対象は、大きく分けて2種類に分類される。1つめは、「必要仕事力」が設定されているタイプの仕事対象であり、2つめは「必要仕事力」の設定がないタイプの仕事対象である。以下の説明では、前者を「必要力設定型」の仕事対象、後者を「必要力非設定型」の仕事対象と称する。また、以下の説明では、「必要力設定型」の仕事対象の一例が上記運搬物オブジェクトであり、「必要力非設定型」の仕事対象の一例が上記障害物オブジェクトである場合を例として説明する。以下、各種類の特徴につき簡単に説明する。
【0083】
まず、「必要力設定型」の仕事対象については、予め「必要仕事力」というパラメータが設定されている。また、上記サポーターにも「仕事力」というパラメータが設定されている。そして、「必要力設定型」の仕事対象に投擲されたサポーターの仕事力の合計が必要仕事力以上となることで、その「必要力設定型」の仕事対象に応じたアクションが開始される。一方、「必要力非設定型」の仕事対象については、このような「必要仕事力」の設定はなく、サポーターが1体だけでも、その仕事対象に応じたアクションが開始できる。
本例でいうと、「必要力設定型」の仕事対象の一例である運搬物オブジェクトについては、サポーターの仕事力が「必要仕事力」以上にならないと、運搬を開始できないことになる。また、「必要力非設定型」の仕事対象の一例である障害物オブジェクトについては、1体でも投擲されれば、その1体だけによる破壊アクションが開始される。なお、複数体で破壊アクションを行う方が、より速く障害物オブジェクトを破壊できるが、1体だけでも、時間はかかるが破壊することは可能である。
【0084】
更に、本ゲームでは、上記の分類手法とは別の分類手法によっても仕事対象が分類される。以下、前者の分類手法を「第1の分類」と呼び、後者を「第2の分類」と呼ぶ。そして、第2の分類では、具体的には、所定のアクションが可能なサポーターの種類が制限されている仕事対象と、このような制限がなく、どの種類のサポーターでも所定のアクションが可能な仕事対象の2種類に分類される。以下では、前者を「種類制限型」と呼び、後者を「種類無制限型」と呼ぶ。「種類制限型」の仕事対象の一例としては、例えば、「電気ゲート」という障害物オブジェクトがある。当該「電気ゲート」とは、例えば高圧電流を放出しているという設定の障害物オブジェクトである。そして、黄サポーターのみが破壊アクションが可能であり、それ以外のサポーターはダメージを受けるという障害物オブジェクトである。
【0085】
このように、本ゲームでは、仕事対象について、第1の分類として、「必要力設定型」と「必要力非設定型」の仕事対象に分類すると共に、第2の分類として、「種類制限型」と「種類無制限型」との仕事対象を分類している。そして、以下では、「必要力設定型」の仕事対象は、全て「種類無制限型」の仕事対象であり、「必要力非設定型」の仕事対象のみが、「種類制限型」と「種類無制限型」に分類されることを前提として説明する。
【0086】
上記のような仕事対象の分類があることを前提として、本実施形態では、特に、運搬物オブジェクトと、障害物オブジェクトに対してユーザが投擲操作を行う状況を例に説明する。具体的には、PC201に、運搬物オブジェクトに対して投擲動作を行わせる場合と、障害物オブジェクトに対してPC201に投擲動作を行わせる場合との2つの場合を例として説明する。
【0087】
まず、上記運搬物オブジェクトに対してPC201に投擲動作を行わせる場合について説明する。上記のように、運搬物オブジェクトについて、予め「必要仕事力」というパラメータが設定されており、運搬物オブジェクトに投擲されたサポーターの仕事力の合計が必要仕事力以上となることで、その運搬物オブジェクトの運搬(移動)を開始できる。本実施形態では、サポーターの各種類の仕事力の一例として、赤サポーター、青サポーター、黄サポーターは仕事力が”1”であり、白サポーターは仕事力が”10”である場合を想定する。この前提で、必要仕事力として”20”が設定されている運搬物オブジェクトを、サポーターに運搬させる場合について、画面例を用いて例示する。
【0088】
上記
図8は、運搬にかかる操作を開始する前の状態の画面例である。この状態で、ユーザは、まず、運搬物オブジェクトを「ロックオン」するための操作を行う。ロックオンとは、所定の仕事対象のある位置にカーソル202の位置を固定することである。具体的には、ユーザはカーソル202を運搬物オブジェクトに近づけ、ロックオンボタン(本例ではZRボタン61であるとする)を押す。すると、カーソル202の動作モードがロックオンモードに切り替わり、この時点におけるカーソル202の近傍にある仕事対象、この場合は運搬物オブジェクトに重畳するような位置にカーソル202が移動する。これにより、カーソル202の表示位置が運搬物オブジェクトの位置に固定され、運搬物オブジェクトをロックオンした状態となる。以下の説明では、ロックオンされた仕事対象のことを「ターゲット」と呼ぶ。
【0089】
ロックオンモード中は、当該カーソル202はターゲットに固定されるため、ロックオンモード中は、ユーザは、カーソル202を動かす操作を手動で行わずとも、サポーターをターゲットにめがけて投擲することが可能となる。なお、ロックオンモードの解除については、本例ではBボタン54の押下で解除できるものとする。また、ターゲットがPC201から所定距離以上離れた場合も、自動的にロックオンモードが解除するものとする。ロックオンモードが解除された場合、カーソル202は、PC201の正面方向に所定距離だけ離れた位置である基本位置に、一旦移動し、その後はユーザの操作に応じて移動する。
【0090】
上記のように運搬物オブジェクトをロックオンしてから、ユーザがAボタン53を押下すると、
図9に示すように、PC201は上記投擲動作を開始する、ここで、投擲対象サポーターの決定に関して補足する。上記
図8および
図9では、画面右下に切り替えガイド203が表示されている。当該切り替えガイド203は、3つの丸枠が横並びとなっており、中央の丸枠が左右の丸枠よりも大きな枠である画像となっている。そして、各丸枠には、サポーターの種類毎の顔画像が表示される。
図8および
図9の例では、左から順に、白サポーター、赤サポーター、青サポーターの顔画像が表示されている。本例では、中央の丸枠が、現在の投擲対象種類を示している。そのため、この状態でユーザが投擲操作を行うと、赤サポーターをカーソル位置に向けて投擲するような投擲動作が行われることになる。また、ユーザは、所定の「切り替え操作」を行うことで、現在の投擲対象種類を選択することができる。例えば、上記
図8の状態から、ユーザは第1Rボタン60を押下することで、切り替えガイド203の3つの顔画像を右方向にスライドさせるようにして切り替えることができる。その結果、中央の丸枠に白サポーターの顔画像が表示され、現在の投擲対象種類として白サポーターを選択することができる。また、ユーザは第1Lボタン38を押下することで、3つの顔画像を左方向にスライドさせるようにして切り替えることもできる。その結果、中央の丸枠に青サポーターの顔画像が表示され、現在の投擲対象種類として青サポーターを選択することができる。
【0091】
ここで、上記のように、ユーザがAボタン53を連打することでPC201にサポーターを連投させることができる。このようにPC201がサポーターを連投しているときに、現在の投擲対象種類の隊列内の残数が0となった場合は、予め定められている所定の順番で、現在の投擲対象種類が自動的に切り替わる。つまり、ユーザがAボタン53を連打し続けていると、例えば上記赤サポーターを8体投擲し終わったとき、自動的に投擲対象種類が青サポーターに切り替わり、引き続き青サポーターを投擲していく、という動きとなる(後述の
図11)。このように、本実施形態では、現在の投擲対象種類の選択手法として2種類の手法がある。以下の説明では、上記切り替え操作による手法を「手動切り替え」と呼び、上記のような隊列内の残数が0になったときの自動的な切り替え手法を「自動切り替え」と呼ぶ。
【0092】
図9の状態から更にユーザがAボタン53の連打を続けると、
図10に示すように、赤サポーターを連投している状態となる。また、最初に投げた赤サポーターについては、地面に着地した状態となっている(より正確には、カーソル位置のターゲットにぶつかって跳ね返った後、着地している)。当該着地したサポーターは、運搬アクションを実行するための配置位置(以下、持ち場と呼ぶ。
図10では星印で示している)に向かって移動を開始する。なお、投擲されてから、持ち場について運搬アクションを開始するのに係る所要時間は、例えば1秒程度であるとする。換言すれば、サポーターは、投擲操作が行われてから1秒後に、運搬アクションを開始する。
【0093】
図10の状態から引き続きユーザがAボタン53の連打を続けると、
図11に示すような状態となる。
図11では、隊列内の赤サポーターの残数が0となったため、上記の自動切り替えが行われた結果、現在の投擲対象種類が青サポーターに切り替わっており、1体目の青サポーターが投擲されている状態を示している。また、最初に投擲された赤サポーターは上記持ち場への移動が完了しており、上記必要仕事力が満たされない間は、持ち上げようとするが持ち上がらない様子を示すアニメーションが再生される。また、その後に着地した2~4体目の赤サポーターはそれぞれ持ち場に向けて移動している状態を示す。また、5~8体目の赤サポーターはまだ投擲に係る移動(以下、投擲移動と呼ぶ)の最中である。
【0094】
ここで、上記
図9~
図11では、運搬物オブジェクトの左側に、仕事力状況画像205が表示されている。当該仕事力状況画像205について説明する。当該画像は、ターゲットである運搬物オブジェクトに設定されている必要仕事力を分母とし、現在充足されている仕事力(以下、稼働力)を分子として示した画像である。
図9~
図10の場合は、まだサポーターは1体もターゲット(持ち場)に到達していないため、必要仕事力に対して、稼働力は0のままである。一方、
図11の状態では、赤サポーターが1体だけ持ち場に到達している状態である。本実施形態では、サポーターが持ち場についたタイミングで、稼働力の表示がカウントアップされるものとする。そのため、
図11では、稼働力が1に変化している。
【0095】
上記
図11の状態から、ユーザがAボタン53の連打を続け、合計20体(赤および青サポーターはそれぞれ8体、黄サポーターが4体)のサポーターを投擲し終えた後、当該20体のサポーターが全て持ち場に到達することで、運搬物オブジェクトの運搬が開始される。その結果、
図12で示すような画面が表示され得る。
図12では、仕事力状況画像205において、必要仕事力、稼働力ともに20となっており、運搬のための必要仕事力が充足されたことが示されている。この後、
図13で示すように当該運搬物オブジェクトが所定の目的地(図示せず)に向けて運搬されていく。なお、
図13では、運搬物オブジェクトの移動に伴って、PC201との距離が所定距離以上となったため、ロックオンも自動的に解除されていることも示している。
【0096】
このように、本実施形態では、運搬物オブジェクトに設定されている必要仕事力以上の仕事力が充足されるようにサポーターを投擲することで、サポーターに当該運搬物オブジェクトを運搬させることができる。
【0097】
なお、必要仕事力以上のサポーターが投擲された場合、運搬速度がより速くなるようにしてもよい。例えば、上記の必要仕事力20の運搬物オブジェクトについて、上記のような稼働力20の状態よりも、稼働力30の状態のほうが運搬速度が速くなるようにしてもよい。これにより、必要仕事力以上となるようにサポーターを投擲することで、運搬物オブジェクトをより速やかに目的地に運ばせることができる。
【0098】
ところで、上記のようにユーザがAボタン53を連打する操作に関して、以下のような問題が考えられる。まず、ユーザが単にAボタン53を連打しているだけだと、必要数以上のサポーターを投擲してしまうことがあり得る。上記の例で言うと、単に連打しているだけだと、20体のサポーターを投擲し終わっても、ユーザはそこでタイミングよく連打を止めずに、まだAボタン53の連打を続けている状況となることが考えられる。特に、本実施形態では、仕事力状況画像205のカウントアップはサポーターが持ち場についたタイミングである。そのため、20体分の投擲操作(20連打)が終わった時点では、まだ投擲移動中で持ち場についていないサポーターもいることから、仕事力状況画像205は「20/20」の表示にはなっていないことになる。例えば、20体分の投擲操作を終えた時点では、仕事力状況画像205は「18/20」となっている可能性がある。そのため、ユーザは、運搬開始に必要な分の投擲操作を終えていないと判断して、Aボタン53の連打操作を続けることも考えられる。しかし、このように連打を続けると、21体目以上の分の投擲については、無駄な投擲となってしまう可能性がある。このような無駄な投擲を抑えるべく、ユーザが、例えば20体だけサポーターを投擲することを意図した場合、ユーザが頭の中で投擲操作数(Aボタン53を押した回数)をカウントしながら操作することも考えられる。しかし、頭の中でカウントするだけでは、やはり、狙い通りに操作を止めきれずに、連打操作の勢いで数体程度は必要以上の投擲が行われる可能性は残る。そのため、他のやり方として、途中で一旦連打操作を止めて、残りの分をゆっくりと投擲操作して調整する、という操作も考えられる。例えば、仕事力状況画像205が「15/20」になった頃に一旦連打するのを止め、そこからは、1体ずつ投擲を確認しながらAボタン53を1打分ずつ押していく、というような操作である。この場合、無駄な投擲は抑えられる可能性は高まるが、途中で連打操作を止めたため、それ以降の操作のテンポが悪くなってしまい、ユーザにとっては、速やかな運搬アクションの開始が行えずに、操作性の低下につながる虞もあった。
【0099】
そこで、本実施形態では、必要仕事力を満たす分の投擲操作が行われた時点で、PC201の投擲動作に係る制御を一時的に停止させるような制御を行う。具体的には、必要仕事力を満たす分の投擲操作が行われたときから1秒間は、Aボタン53が押下されていてもPC201が投擲動作を行わないようにする。以下、このように投擲動作を行わないようにすることを、「ストッパー」と呼ぶ。これにより、連打による操作のテンポの良さを保ちつつ、上記のような無駄な投擲が発生することを抑制する。
【0100】
図14に、本実施形態に係るストッパー制御の概要を示す。
図14では、上記
図8の状態からユーザが29回、Aボタン53を連打した場合を想定している。この場合、20連打目までは上記のような投擲動作が行われ、20体のサポーターが投擲される。この後、ストッパーが発動し、ストッパー発動期間、本例では1秒間の間は、Aボタン53の連打が行われていても、投擲操作が行われなくなる。上記
図12は、ストッパーが発動しており、(連打は継続しているが)PC201は投擲動作を行っていないことも示している。これにより、連打しているにもかかわらずPC201が投擲動作をしない、という違和感をユーザに与え、この違和感によって、必要な分の投擲が終わったことをユーザに気付かせることができる。そのため、ユーザは、この時点でAボタンの連打を止めることで、無駄な投擲を行うことを抑制することができる。その一方で、ユーザは、意図的にそのまま連打を継続することもできる。この場合は、
図14で示すように、ストッパー発動期間中の連打(21~26連打目)については実質的に無効化される。その後、ストッパー発動期間が終了し、27連打目からは投擲動作が再開される。そのため、
図14の27連打目の操作に応じて、21体目のサポーターが投擲されることになる。つまり、
図14のようにユーザがAボタン53の連打を行った場合は、PC201の動作としては、サポーターを20体投擲→1秒間は投擲動作が停止→1秒経過後に投擲動作を再開、という流れの動作となる。
【0101】
ここで、上記
図14の例では、必要仕事力20の運搬物オブジェクトに対して、投擲されるサポーターが全て仕事力”1”のサポーターである場合を想定して説明した。そのため、21連打目からストッパーが発動する例となっていた。この点、例えば16連打目で、仕事力が”10”である白サポーターを投擲したような場合は、当該白サポーターによって必要仕事力が充足されることになる。そのため、この場合は17連打目から(1秒間は)ストッパーが発動するという流れとなる。
【0102】
なお、本実施形態では、必要仕事力を満たす分の投擲操作が行われた時点でストッパーを発動させる。そのため、上記仕事力状況画像205の表示内容としては、まだ必要仕事力が満たされていないような表示内容であっても、ストッパーは発動し得る。上記の例で言うと、仕事力状況画像205が「18/20」と表示されている時点で、20連打目のAボタン53の入力が行われれば、この時点でストッパーが発動することになる。
【0103】
また、本実施形態では、ストッパー発動後、1秒経過前にユーザが連打を止めた場合も、その時点でストッパーは解除される。例えばストッパー発動後、0.5秒経過時点でユーザが連打を止めれば、1秒経過する前でも、この時点でストッパーは解除される。これにより、例えばゲームに慣れているユーザであれば、速やかに連打を止めることで、意図的にストッパーを早期解除し、更なる投擲操作を速やかに再開することができる。
【0104】
ところで、本実施形態では、上記のような運搬物オブジェクトをロックオンモード中に、必要仕事力に達した場合であって、近くに他の運搬物オブジェクトがあるような場合は、ロックオン対象(ターゲット)を当該他の運搬物オブジェクトに自動的に切り替える制御も行っている(なお、上記の画面例では、近くに他の運搬物オブジェクトがないため、自動的なターゲット切り替えは発生していない)。
【0105】
ここで、
図15に示すように、所定範囲内に運搬物オブジェクトが密集しているような状況を想定する。また、これらの運搬物オブジェクトは、必要仕事力が”1”であるとする。つまり、1体のサポーターで運搬可能な運搬物オブジェクトが密集している状況である。このような場合、上記のようなストッパー制御を行うと、上記のロックオン対象の自動切り替えと相まって、操作性が低下する虞がある。具体的には、投擲操作を1回行うことで、稼働力は必要仕事力に達することになる。この場合、上記の制御では、ストッパーの発動とロックオン対象の自動切り替えが同じタイミングで起こり得る。そのため、このような状況下でユーザがAボタン53を連打した場合、ターゲットが切り替わったにも関わらず、ストッパー発動によって、切り替わり後のターゲットへの投擲が行われないという状態となる。その結果、連打に係る操作性の低下(レスポンスの悪さ)をユーザに感じさせてしまう虞がある。そこで、本実施形態では、必要仕事力が”1”である運搬物オブジェクトの一部については、例外的に上記ストッパーを発動させないような制御も行う。具体的には、「ストッパー無効」という属性を持たせることで、その運搬物オブジェクトについてはストッパーを発動させないような制御を行う。これにより、ストッパーを発動させないほうがよいと考えられる状況、上記の例でいうと必要仕事力が”1”であって、密集するように配置されているという状況にある運搬物オブジェクトについては、ストッパーは発動させずに上記のロックオン対象の自動切り替えだけを機能させることができる。その結果、Aボタン53を連打しているだけで、
図16に示すように次々にこれらの運搬物オブジェクトが運搬されていくという操作性をユーザに提供できる。更に、上記のような「ストッパー無効」属性を持たせた一部の運搬物オブジェクトについては、上記の仕事力状況画像205も表示しないようにしている。なお、必要仕事力が”1”であっても、上記のような密集して配置されていない等の、ストッパーを発動させないほうがよいと考えられる状況下にないものについては、ストッパーを発動させたり、仕事力状況画像205を表示するようにしてもよい。
【0106】
[障害物オブジェクトの場合について]
次に、障害物オブジェクトに対してPC201に投擲動作を行わせる場合における本実施形態の処理について説明する。上記のように、本ゲームでは、「必要力非設定型」である障害物オブジェクトについては、更に、上記第2の分類によって2種類の障害物オブジェクトに分類される。このうち、特に「種類制限型」の障害物オブジェクトに対して投擲操作を行う場合、以下のような問題点がある。例えば、上記でも言及した「電気ゲート」という障害物オブジェクトを想定する。当該「電気ゲート」とは、例えば高圧電流を放出しているという設定の障害物オブジェクトである。そして、黄サポーターのみが破壊アクションが可能であり、それ以外のサポーターはダメージを受けるという障害物オブジェクトである。このような場合、黄サポーター以外の種類のサポーターを投擲すると、ダメージを受けることでサポーターのHPが0となって消滅する、ということもあり得る。特に、上記のように、現在の投擲対象種類の隊列内の残数が0になると、投擲対象種類の自動切り替えが行われるところ、ユーザがAボタン53の連打を続けていると、例えば黄サポーターの残数が0になったことに気付かずに、他の種類のサポーターを投擲してしまうこともあり得る。その結果、意図しないサポーターの消滅が発生する等して、ユーザに不利な状況が発生し得る。
【0107】
そこで、本実施形態では、「種類制限型」の障害物オブジェクトに対して連投している場合に、上記投擲対象種類の自動切り替えが発生したときは、上述したようなストッパーを発動させ、一時的に投擲動作を停止させるようにしている。これにより、上記同様に連打しているにもかかわらず投擲されないという違和感をユーザに与えることで、ユーザに「気付き」を与えるものである。これにより、ユーザに、Aボタン53の連打を止めるきっかけを与えることができる。
【0108】
なお、上記手動切り替えによって投擲対象種類が切り替えられた場合は、上記ストッパーは発動させない。手動切り替えはユーザの意図的な切り替え操作であるため、この場合にまでストッパーを発動させると、ユーザの意図で切り替えて投擲操作したにも関わらず投擲が行われないことになり、却って操作性の低下につながりかねないためである。
【0109】
また、本実施形態では、ストッパーの発動は、1期間分の連打期間(一連の連打が開始してから終了するまでの期間。以下、1連打期間と呼ぶ)内で1度のみ発動させるものとする。1度ストッパーを発動したにも関わらず連打が継続している場合は、ユーザが意図して連打を行っているものと推測される。そのため、この場合はユーザの意思を尊重し、1連打期間における2回目以降のストッパー発動は行わないようにしている。
【0110】
上記の「種類制限型」の障害物オブジェクトである「電気ゲート」についてのストッパー制御の一例を、画面例を用いて例示する。まず、
図17は、「電気ゲート」をロックオンしている状態を示す。また、現在の投擲対象種類が黄サポーターとなっている状態である。この状態で、ユーザがAボタン53の連打を開始すると、
図18に示すように、隊列内の黄サポーターが順にカーソル202に向けて投擲されていく。
【0111】
その後、隊列内の黄サポーターの残数が0になると、
図19に示すような状態となる。
図19では、上記自動切り替えによって投擲対象種類が白サポーターに切り替わったことを示している。すなわち、切り替えガイド203の表示内容として、中央の丸枠の顔画像が黄サポーターから白サポーターに切り替わっている。そして、この自動切り替えの発生に合わせて、上記のようなストッパーが発動する。そのため、
図19では、PC201は投擲動作を一時的に停止している状態である。また、
図19では、黄サポーターの一部はまだ投擲に係る移動中(着地していない)の状態であるが、この後、黄サポーターが着地して上記持ち場に移動すれば、
図20に示すような状態となる。この時点では、まだストッパーは発動している状態である。そのため、ユーザは、連打しているにもかかわらず投擲されないという違和感に気付くことでき、これをもって、黄サポーターを全て投擲したことに気付くことができる。そのため、ユーザには、この時点で連打を止めるという選択肢が与えられることになる。
【0112】
ストッパー発動後、もしユーザが意図的に連打を止めないまま、上記同様に1秒が経過すると、ストッパーは解除される。その結果、
図21に示すように、白サポーターの投擲が開始されることになる。但し、この場合は、上記のように白サポーターは「電気ゲート」によってダメージを受ける等で、ユーザにとって不利な状況が発生し得ることにもなる。
【0113】
なお、上記のような「種類制限型」の仕事対象に対するストッパーの発動は、上記運搬物オブジェクトの場合と同様に、1期間分の連投期間内で1度のみ発動させるものとする。
【0114】
[本実施形態に係るゲーム処理の詳細]
次に、
図22~
図40を参照して、本実施形態におけるゲーム処理についてより詳細に説明する。
【0115】
[使用データについて]
まず、本ゲーム処理にて用いられる各種データに関して説明する。
図22は、本体装置2のDRAM85に記憶される各種データの一例を示すメモリマップである。本体装置2のDRAM85には、ゲームプログラム301、PCデータ302、サポーター種類マスタデータ303、サポーターデータ304、仕事対象データ305、投擲対象種類データ306、操作データ310等が記憶される。
【0116】
ゲームプログラム301は、本実施形態におけるゲーム処理を実行するためのプログラムである。
【0117】
PCデータ302は、上記PC201に関するデータである。
図23に、PCデータ302のデータ構成の一例を示す。PCデータ302には、PC位置・姿勢情報321、PC移動パラメータ322、隊列情報323、PC状態324、連打状態フラグ325、カーソル位置情報326、ロックオンフラグ327、ターゲット情報328、ストッパーフラグ329、発動済みフラグ330が少なくとも含まれている。
【0118】
PC位置・姿勢情報321は、仮想空間内におけるPC201の現在位置や現在の姿勢を示すデータである。
【0119】
PC移動パラメータ322は、PC201の移動制御のために用いるデータである。例えば、PC移動パラメータ322には、PC201の移動方向や移動速度等を示すパラメータが含まれる。
【0120】
隊列情報323は、PC201をリーダーとする上記隊列の内容を定義するデータである。隊列情報323には、当該隊列に加わっているサポーターを特定するための情報が少なくとも含まれている。また、隊列内のサポーターの種類毎の残数を示す情報(例えば残数のカウンタ)も含まれる。
【0121】
PC状態324は、PC201の現在の動作状態を示す情報である。本例では、少なくとも、「待機中」、「移動中」、「投擲動作中」のいずれかを示す情報が設定され得る。
【0122】
連打状態フラグ325は、ユーザがAボタンを連打している状態(以下、連打状態)であるか否かを示すフラグである。換言すれば、PC201がサポーターを連投している状態であるか否かを示すフラグでもある。オンであれば、連打状態であることを示す。
【0123】
カーソル位置情報326は、(PC201に関連付けられている)カーソル202の現在位置を示す情報である。
【0124】
ロックオンフラグ327は、現在が上記ロックオンモードであるか否かを示すフラグである。
【0125】
ターゲット情報は、ロックオンモードの場合に、現在ロックオンしている仕事対象(ターゲット)を特定するための情報である。
【0126】
ストッパーフラグ329は、上述のようなストッパーが現在発動しているか否かを示すフラグである。オンの場合は、ストッパー発動中であることを示す。
【0127】
発動済みフラグ330は、上述したような1連打期間内で既にストッパーが1度発動済みであるか否かを示すためのフラグである。オンの場合は、1度ストッパーが発動済みであることを示す。
【0128】
その他、PCデータ302には、PC201の外観を構成する各種データ(3次元モデルデータやテクスチャデータ等)やPC201が行う各種動作のアニメーションを定義したデータ等が含まれる。
【0129】
図22に戻り、サポーター種類マスタデータ303は、サポーターの種類と仕事力等とを定義したデータである、
図24に、サポーター種類マスタデータ303のデータ構成の一例を示す。サポーター種類マスタデータ303は、
図24に示すように、サポーター種類情報331、仕事力情報332、外観データ333の項目を含むレコードの集合で構成されるデータベースである。サポーター種類情報331は、サポーターの種類のいずれかを示す情報である。本例では、「赤サポーター」、「青サポーター」、「白サポーター」、「黄サポーター」、のいずれかがサポーター種類情報331に格納されるものとする。仕事力情報332は、その種類のサポーターの仕事力を定義した情報である。外観データ333は、その種類のサポーターの外観を構成するためのデータである。
【0130】
図22に戻り、次に、サポーターデータ304は、個々のサポーターを管理するためのデータである。
図25に、サポーターデータ304のデータ構成の一例を示す。サポーターデータ304は、
図25に示すような項目を含むレコードの集合で構成されるデータベースである。
図25において、各レコードは、サポーターID341、サポーター種類情報342、サポーター位置・姿勢情報343、所属状態344、サポーター行動状態345、行動パラメータ346の項目を少なくとも含む。
【0131】
サポーターID341は、個々のサポーターを一意に識別するためのIDである。サポーター種類情報342は、そのサポーターが、上述した4種類のうちのどの種類であるかを示す情報であり、上記サポーター種類マスタデータ303のサポーター種類情報331に対応する情報である。
【0132】
サポーター位置・姿勢情報343は、仮想ゲーム空間内におけるサポーターの現在位置と現在の姿勢を示す情報である。
【0133】
所属情報344は、そのサポーターが現在、PC201の隊列に所属しているか否かを示すデータである。本例では、当該データの内容として、PCの隊列に所属していれば「PC」が、所属していない場合は「未所属」が設定されるものとする。
【0134】
サポーター行動状態345は、そのサポーターの現在の動作状態を示すデータである。当該サポーターの状態としては、例えば、「待機中」、「移動中」、「仕事待機中」、「仕事中」等が設定される。各状態について補足すると、サポーターが投擲されると、上記「持ち場」に到達するまでの状態として、「仕事待機中」が設定される。そして、「持ち場」に到達すれば「仕事中」が設定される。「仕事中」の場合は、そのサポーターは仕事対象に応じた所定のアクション(上記運搬アクションや破壊アクション等)を行う。また、PC201に追従して移動している場合は「移動中」が設定され、移動せずに待機している場合は「待機中」が設定される。また、「仕事中」の状態で所定のアクションが完了した場合(運搬物オブジェクトを目的地に運んだ場合や、障害物を破壊し終えた場合)も、「待機中」が設定される。
【0135】
行動パラメータ346は、サポーターの動作を制御するための各種パラメータであり、上記サポーター行動状態345の内容に応じたパラメータが適宜設定される。例えば、上記行動状態335が「移動中」や「仕事待機中」であれば、移動方向や移動速度を示すパラメータが設定される。また、行動状態335が「仕事中」の場合は、実行するアクションに応じたパラメータが設定される。例えば運搬アクションの場合は、運搬に係る移動方向や移動速度のパラメータが設定される。また、破壊アクションの場合は、仕事対象に与える攻撃力(破壊力)や攻撃速度、攻撃位置のパラメータが設定される。
【0136】
その他、図示は省略するが、サポーターデータ304の各レコードには、例えば各サポーターのHP(ヒットポイント)等、ゲーム処理に必要な各種の情報が含まれ得る。
【0137】
図22に戻り、仕事対象データ305は、上記仕事対象を管理するためのデータである。具体的には、仕事対象データ305は、
図26に示すような項目を含むレコードの集合で構成されるデータベースである。
図26において、各レコードは、仕事対象ID351、第1分類情報352、必要仕事力情報353、稼働力情報354、待機力情報355、ストッパー無効フラグ356、第2分類情報357、仕事可能種類情報358、仕事対象位置・姿勢情報359、外観データ360、の項目を少なくとも含む。
【0138】
仕事対象ID351は、各仕事対象を一意に特定するIDである。
【0139】
第1分類情報352は、そのレコードに係る仕事対象が「必要力設定型」であるか「必要力非設定型」でるかを示す情報である。必要仕事力情報353は、その仕事対象が「必要力設定型」である場合の、上記必要仕事力を定義した情報である。稼働力情報354は、その仕事対象について、サポーター状態が「仕事中」であるサポーターの仕事力(以下、稼働力)の合計値である。稼働力情報354は、その仕事対象について、サポーター状態が「仕事待機中」であるサポーターの仕事力(以下、待機力)の合計値である。
【0140】
ストッパー無効フラグ356は、そのレコードに係る仕事対象が、「必要力設定型」の仕事対象であって、かつ、上述した必要仕事力が”1”の仕事対象であるか否かを示すフラグである。上記のように、このような仕事対象についてはストッパーを発動させないため、ストッパー無効の属性を当該フラグで設定するものである。ストッパー無効フラグ356がオンであれば、必要仕事力が”1”の仕事対象(ストッパーを発動させない仕事対象)であることを示す。
【0141】
なお、必要仕事力情報353、稼働力情報354、待機力情報355、ストッパー無効フラグ356については、「必要力設定型」の仕事対象についてのみ、その内容が設定されているものとする。「必要力非設定型」の仕事対象については、これらの項目については例えばNull値が設定されてもよい。
【0142】
次に、第2分類情報357は、そのレコードに係る仕事対象が上記「種類制限型」であるか「種類無制限型」であるかを示す情報である。仕事可能種類情報358は、そのレコードに係る仕事対象が上記「種類制限型」である場合に、当該仕事対象に対して所定のアクションが可能なサポーターの種類を指定する情報である。なお、仕事可能種類情報358は、仕事対象が上記「種類制限型」である場合にのみ設定され、それ以外の場合は例えばNull値が設定されてもよい。
【0143】
仕事対象位置・姿勢情報359は、そのレコードに係る仕事対象の仮想空間内における現在位置と姿勢を示す情報である。外観データ360は、その仕事対象の外観を構成するための各種のデータである。
【0144】
この他、図示は省略するが、各仕事対象の重量や特性等を定義した情報等も仕事対象データ305に含まれ得る。
【0145】
図22に戻り、次に、投擲対象種類データ306は、現在の投擲対象種類がどの種類であるかを示すデータであり、また、上記切り替えガイド203の表示内容を管理するためのデータである。投擲対象種類データ306は、中央枠情報307、右枠情報308、および左枠情報309を含んでいる。それぞれ、上記切り替えガイド203の3つの丸枠に対応する情報である。中央枠情報307は、上記切り替えガイド203の中央の丸枠に表示する投擲対象種類を指定する情報が含まれる。また、中央枠情報307は、現在の投擲対象種類を示す情報でもある。右枠情報308は、上記切り替えガイド203の右側の丸枠に、左枠情報309は、左側の丸枠に、それぞれ表示する投擲対象種類を指定する情報が含まれる。
【0146】
次に、操作データ310は、上記ユーザが操作するコントローラから得られるデータである。すなわち、ユーザが行った操作内容を示すデータである。
図27に、操作データ310のデータ構成の一例を示す。操作データ310には、デジタルボタンデータ371と、右スティックデータ372と、左スティックデータ373と、右慣性センサデータ374と、左慣性センサデータ375とが少なくとも含まれている。デジタルボタンデータ371は、コントローラが有する各種ボタンの押下状態を示すデータである。右スティックデータ372は、上記右スティック52に対する操作内容を示すためのデータである。具体的には、x、yの2次元のデータが含まれる。左スティックデータ373は、上記左スティック32に対する操作内容を示すためのデータである。右慣性センサデータ374は、右コントローラ4の加速度センサ114や角速度センサ115の慣性センサの検出結果を示すデータである。具体的には、3軸の加速度データや3軸の角速度データが含まれる。左慣性センサデータ375は、左コントローラ3の加速度センサ104や角速度センサ105の慣性センサの検出結果を示すデータである。
【0147】
その他、DRAM85には、ゲーム処理に必要な各種データも適宜生成されて格納される。
【0148】
[プロセッサ81が実行する処理の詳細]
次に、本実施形態におけるゲーム処理の詳細を説明する。なお、ここでは主に、上記の投擲操作に関する制御について説明し、その他の各種ゲーム処理については、詳細な説明は省略する。本実施形態では、1以上のプロセッサが1以上のメモリに記憶された上記プログラムを読み込んで実行することにより、以下に示すフローチャートが実現される。なお、当該フローチャートは、処理過程の単なる一例にすぎない。そのため、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判定ステップで利用される閾値も、単なる一例であり、必要に応じて他の値を採用してもよい。
【0149】
図28は、本実施形態に係るゲーム処理の詳細を示すフローチャートである。
図28のステップS2~S7の処理ループは、1フレーム毎に繰り返し実行される。なお、本実施形態では、フレームレートが30fpsである場合を想定して説明する。
【0150】
[ゲームの準備]
図28において、ステップS1で、プロセッサ81は、ゲーム準備処理を実行する。この処理では、プロセッサ81は、仮想空間を構築し、PC201やサポーター、各種の仕事対象を適宜配置する。そして、当該仮想空間を仮想カメラで撮像してゲーム画像を生成し、出力する。また、プロセッサ81は、ゲーム処理に必要な各種データをDRAM85に読み込み、各種フラグ等の変動するデータや変数については適宜初期化する。
【0151】
[PC201に関する制御]
次に、ステップS2で、プロセッサ81は、プレイヤキャラクタ制御処理を実行する。この処理では、ユーザの操作内容をPC201の動作に反映させるための処理が行われる。
図29は、当該プレイヤキャラクタ制御処理の詳細を示すフローチャートである。まず、ステップS11で、プロセッサ81は、操作データ310を取得する。次に、ステップS12で、プロセッサ81は、上記カーソル202の移動を制御するためのカーソル制御処理を実行する。
【0152】
図30~
図31は、上記カーソル制御処理の詳細を示すフローチャートである。
図30において、まず、ステップS31で、プロセッサ81は、ロックオンフラグ327を参照し、現在ロックオンモード中であるか否かを判定する。ロックオンモード中ではない場合は(ステップS31でNO)、ステップS32で、プロセッサ81は、ロックオンモードに移行する条件を満たしているか否かを判定する。本例では、当該条件は、ユーザはカーソル202から所定範囲内に所定の仕事対象がある状態でZRボタン61(ロックオンボタン)が押下されたことである。
【0153】
上記判定の結果、ロックオンモードに移行する条件が満たされていない場合は(ステップS32でNO)、ステップS33で、プロセッサ81は、操作データ310で示される操作内容に基づいて、カーソル202を移動させる。その後、プロセッサ81は、カーソル制御処理を終了する。
【0154】
一方、上記判定の結果、ロックオンモードに移行する条件が満たされた場合は(ステップS32でYES)、ステップS34で、プロセッサ81は、ロックオンの対象となるターゲットを決定し、ターゲット情報328に設定する。例えば、カーソル202に最も近い仕事対象がターゲットとして決定される。
【0155】
次に、ステップS35で、プロセッサ81は、カーソル202が上記ターゲットに重畳するような所定の位置をカーソル位置情報326に設定する。続くステップS36で、プロセッサ81は、ロックオンフラグ327にオンを設定する、その後、プロセッサ81は、カーソル制御処理を終了する。
【0156】
次に、上記ステップS31の判定の結果、ロックオンモード中と判定された場合の処理について説明する。この場合は、
図31のステップS37で、プロセッサ81は、ロックオンモードを解除するための第1のロック解除条件が満たされているか否かを判定する。当該第1のロック解除条件は、具体的には、ターゲットが「必要力設定型」の仕事対象であって、必要仕事力が満たされた状態となったことである。当該判定の結果、第1のロック解除条件が満たされた場合は(ステップS37でYES)、次に、ステップS38で、プロセッサ81は、現在のターゲットの近傍に、ターゲットとなり得る他の仕事対象が存在しているか否かを判定する。当該判定の結果、存在しない場合は(ステップS38でNO)、後述のステップS42の処理に進められる。
【0157】
一方、ターゲットとなり得る他の仕事対象が存在していれば(ステップS38でYES)、ステップS39で、プロセッサ81は、ターゲットを当該他の仕事対象に切り替える。この際、他の仕事対象が複数存在しているときは、例えば現在のターゲットに最寄りの仕事対象を切り替え先として選択する。そして、プロセッサ81は、切り替え先の仕事対象を特定する情報をターゲット情報328に設定する。
【0158】
次に、ステップS40で、プロセッサ81は、切り替え後のターゲットの位置をカーソル位置情報326に設定する。その後、プロセッサ81は、カーソル制御処理を終了する。
【0159】
一方、上記ステップS37の判定の結果、第1のロック解除条件を満たしていない場合は(ステップS37でNO)、ステップS41で、プロセッサ81は、第2のロック解除条件が満たされているか否かを判定する。当該第2のロック解除条件は、具体的には、ユーザがロック解除の操作を行ったこと、または、PC201と現在のターゲットとの距離が所定距離以上になったことである。当該判定の結果、第2のロック解除条件が満たされていれば(ステップS41でYES)、ステップS42で、プロセッサ81は、ロックオンフラグ327にオフを設定する。続くステップS43で、プロセッサ81は、上記基本位置をカーソル位置情報326として設定する。その後、プロセッサ81は、カーソル制御処理を終了する。
【0160】
一方、第2のロック解除条件が満たされていない場合は(ステップS41でNO)、ステップS44で、プロセッサ81は、ターゲットの位置をカーソル位置情報に設定する。つまり、カーソル202をターゲットに固定し続けるように制御する(ロックオンしている状態の継続)。その後、プロセッサ81は、カーソル制御処理を終了する。
【0161】
図29に戻り、次に、ステップS13で、プロセッサ81は、投擲操作、本例ではAボタン53の(1回分の)押下が行われたか否かを判定する。当該判定の結果、投擲操作が行われた場合は(ステップS13でYES)、ステップS14で、プロセッサ81は、連投ストッパー制御処理を実行する。
【0162】
図32は、上記連投ストッパー制御処理の詳細を示すフローチャートである。
図32において、まず、ステップS51で、プロセッサ81は、ストッパーフラグ329がオンであるか否かを判定する。オンではない場合は(ステップS51でNO)、ステップS52で、プロセッサ81は、ストッパー発動処理を実行する。一方、オンの場合は(ステップS51でYES)、ステップS53で、プロセッサ81は、ストッパー解除処理を実行する。その後、プロセッサ81は、連投ストッパー制御処理を終了する。以下、各処理について説明する。
【0163】
図33~
図34は、上記ストッパー発動処理の詳細を示すフローチャートである。
図33において、まず、ステップS61で、プロセッサ81は、操作データ310に基づき、(Aボタン53が)連打されている状態(以下、連打状態)と判定する条件を満たしているか否かを判定する。本実施形態では、1フレームが1/30秒(30fps)であることを前提に説明するため、例えば、今回のAボタン53の入力が、前回のAボタン53の入力が検出されたフレームから10フレーム以内の入力であれば、連打状態であると判定する。つまり、本実施形態では、10フレーム以内にAボタン53が繰り返し入力される状況が続いていれば、連打状態として扱う。
【0164】
上記判定の結果、連打状態とする条件が満たされていない場合は(ステップS61でNO)、プロセッサ81は、ストッパー発動処理を終了する。一方、満たされている場合は(ステップS61でYES)、ステップS62で、プロセッサ81は、連打状態フラグ325にオンを設定する。
【0165】
次に、ステップS63で、プロセッサ81は、カーソル202が「必要力設定型」の仕事対象(本例の場合は上記運搬物オブジェクト)を指示しているか否かを判定する。つまり、現在のターゲットが「必要力設定型」の仕事対象であるか否かが判定される。当該判定の結果、カーソル202が「必要力設定型」の仕事対象を指示している場合は(ステップS63でYES)、次に、ステップS64で、プロセッサ81は、カーソル202が指示している仕事対象のストッパー無効フラグ356がオンか否かを判定する。つまり、現在のターゲットが「ストッパー無効」属性の仕事対象であるか否かが判定される。当該判定の結果、「ストッパー無効」属性の仕事対象の場合は(ステップS64でYES)、プロセッサ81は、ストッパー発動処理を終了する。つまり、この場合はストッパーは発動させないことになる。
【0166】
一方、上記判定の結果、「ストッパー無効」属性の仕事対象ではない場合は(ステップS64でNO)、ステップS65で、プロセッサ81は、ストッパーを発動させるための仕事力条件が満たされているか否かを判定する。具体的には、プロセッサ81は、まず、現在のターゲットの必要仕事力情報353、稼働力情報354、待機力情報355を取得する。次に、当該取得した情報に基づき、稼働力と待機力の合計値を算出する。そして、プロセッサ81は、当該合計値が必要仕事力以上であるか否かを判定し、必要仕事力以上の場合は、ストッパーを発動させるための仕事力条件を満たしていると判定する。
【0167】
上記判定の結果、上記仕事力条件が満たされていない場合は(ステップS65でNO)、プロセッサ81は、ストッパー発動処理を終了する。一方、上記仕事力条件が満たされている場合は(ステップS65でYES)、
図34のステップS66で、プロセッサ81は、発動済みフラグ330がオンか否かを判定する。つまり、現在の連打状態に係る連打期間中に既にストッパーが1度発動済みであるか否かを判定する。当該判定の結果、発動済みフラグ330がオンの場合は(ステップS66でYES)、プロセッサ81は、ストッパー発動処理を終了する。つまり、この場合はストッパーは発動させないことになる。一方、発動済みフラグ330がオフの場合は(ステップS66でNO)、ステップS67で、プロセッサ81は、ストッパーフラグ329にオンを設定し、ストッパー発動中の経過時間の計時(以下、ストッパーカウントと呼ぶ)を開始する。その後、プロセッサ81は、ストッパー発動処理を終了する。
【0168】
一方、上記ステップS63の判定の結果、カーソル202が「必要力設定型」の仕事対象を指示していない場合は(ステップS63でNO)、現在のターゲットは「必要力非設定型」の仕事対象(本例では上記障害物オブジェクト)と判定される。この場合は、ステップS68で、プロセッサ81は、投擲対象種類について上述したような自動切り替えが発生したか否かが判定される(より正確には、直前のフレームにおける投擲処理(後述)内で自動切り替え処理が行われたか否かが判定される)。当該判定の結果、投擲対象種類の自動切り替えが発生していない場合は(ステップS68でNO)、プロセッサ81は、ストッパー発動処理を終了する。一方、投擲対象種類の自動切り替えが発生した場合は(ステップS68でYES)、ステップS69で、プロセッサ81は、ストッパー発動の保留条件を満たすか否かを判定する。当該保留条件は、ストッパーの発動を保留するための条件であり、具体的には、現在のターゲットが「種類無制限型」の仕事対象であることである。つまり、原則的には自動切り替えが発生すればストッパーを発動させるが、ターゲットが「種類無制限型」の場合はストッパーを発動させないような制御を行うための条件である。これは、連投を続けてもダメージを受ける等の不利な状況が起こらない場合であれば、ストッパーを発動させないようにすることで、操作レスポンスを向上させるものである。
【0169】
上記判定の結果、保留条件を満たさない、すなわち、現在のターゲットが「種類制限型」である場合は(ステップS69でNO)、上記ステップS66に処理が進められる。すなわち、今回の連打期間においてストッパーが発動済みでなければストッパーを発動し、1度発動済みであれば、ストッパーは発動させないような制御が行われる。一方、上記判定の結果、保留条件を満たす場合は(ステップS69でYES)、プロセッサ81は、ストッパー発動処理を終了する。つまり、この場合はストッパーは発動させないことになる。以上で、ストッパー発動処理の説明は終了する。
【0170】
次に、上記ストッパー解除処理について説明する。当該処理は、ストッパー発動後、(連打状態のまま)1秒経過すればストッパーを解除するための処理である。
図35は、当該ストッパー解除処理の詳細を示すフローチャートである。
図35において、まず、ステップS71で、プロセッサ81は、上記ストッパーカウントが開始してから(連打状態のまま)1秒が経過したか否かを判定する。当該判定の結果、まだ1秒経過していない場合は(ステップS71でNO)、プロセッサ81は、ストッパー解除処理を終了する。一方、1秒が経過した場合は(ステップS71でYES)、ステップS72で、プロセッサ81は、発動済みフラグ330にオンを設定する。次に、ステップS73で、プロセッサ81は、ストッパーフラグ329にオフを設定する。その後、プロセッサ81は、ストッパー解除処理を終了する。以上で、ストッパー解除処理の説明は終了する。
【0171】
図29に戻り、次に、ステップS15で、プロセッサ81は、ストッパーフラグ329がオンか否かを判定する。当該判定の結果、オンではない場合は(ステップS15でNO)、ステップS16で、プロセッサ81は、PC201に上記投擲動作を行わせるための投擲処理を実行する。一方、オンの場合は(ステップS15でYES)、当該投擲処理はスキップされ、処理が次に進められる。
【0172】
[投擲処理について]
図36~
図37は、上記投擲処理の詳細を示すフローチャートである。
図36において、まず、ステップS81で、プロセッサ81は、PC状態324が「投擲中」か否かを判定する。「投擲中」ではない場合は、ステップS82で、プロセッサ81はPC状態324に「投擲中」を設定する。これにより、投擲動作に係るアニメーションが再生される。一方、既に「投擲中」の場合は、ステップS82の処理はスキップされる。
【0173】
次に、ステップS83で、プロセッサ81は、隊列内の現在の投擲対象種類の中から、投擲対象サポーターを1体選択する(当該選択手法はどのような手法でもよい)。
【0174】
次に、ステップS84で、プロセッサ81は、投擲対象として選択したサポーターに係る行動パラメータ346の内容を設定する。当該パラメータは、投擲先の仕事対象やカーソル202の位置に応じて適宜設定され得る。具体的には、着地点や上述した「持ち場」の位置、これを踏まえた移動軌跡等が、移動に関するパラメータとして設定される。また、投擲先の仕事対象に応じて、サポーターが取る行動内容(運搬アクション、破壊アクション等)を示す各種のパラメータが設定される。
【0175】
次に、ステップS85で、プロセッサ81は、投擲対象サポーターに対応するサポーター行動状態345に「仕事待機中」を設定する。
【0176】
次に、ステップS86で、プロセッサ81は、カーソル202が「必要力設定型」の仕事対象を指示しているか否かを判定する。すなわち、ターゲットが運搬物オブジェクトであるか否かが判定される。当該判定の結果、指示している場合は(ステップS86でYES)、ステップS87で、プロセッサ81は、ターゲットの待機力情報355に、投擲対象となったサポーターの仕事力を加算する。本例では、赤、青、黄サポーターが投擲対象だった場合は”1”が加算され、白サポーターが投擲対象だった場合は”10”が加算されることになる。
【0177】
一方、上記ステップS86の判定の結果、カーソル202が「必要力設定型」の仕事対象を指示していない場合は(ステップS86でNO)、「必要力非設定型」の仕事対象がターゲットであるため(本例では障害物オブジェクト)、上記ステップS87の処理はスキップされる。
【0178】
次に、
図37のステップS88で、プロセッサ81は、投擲対象となったサポーター種類の隊列内の残数が1つ減るように、隊列情報323の内容を更新する。例えば、赤サポーターを1体、投擲する場合は、隊列内の赤サポーターの残数が1つ減るように、PCデータ302の隊列情報323の内容が更新される(例えば、赤サポーターの残数を示すカウンタを減らす)。
【0179】
次に、ステップS89で、プロセッサ81は、隊列情報323を参照し、現在の投擲対象種類に係るサポーターの隊列内の残数が0になったか否かを判定する。当該判定の結果、0になった場合は(ステップS89でYES)、ステップS90で、プロセッサ81は、投擲対象種類の自動切り替えを行う。具体的には、プロセッサ81は、予め定義された順番に基づいて、次の投擲対象種類を選択する。そして、プロセッサ81は、選択した種類を示す情報を、上記投擲対象種類データ306の中央枠情報307に設定する。また、これに伴い、プロセッサ81は、右枠情報308および左枠情報309も更新する。
【0180】
一方、上記判定の結果、上記残数が0ではない場合は(ステップS89でNO)、上記ステップS90の処理はスキップされる。以上で、投擲処理は終了する。
【0181】
図29に戻り、次に、上記ステップS13の判定の結果、投擲操作が行われていないと判定された場合の処理について説明する。この場合は、ステップS19で、プロセッサ81は、現在が連打状態であって、連打状態を解除する条件が満たされたか否かを判定する。つまり、ユーザがAボタン53の連打を止めた直後の状態か否かを判定する。本実施形態では、前回のAボタン53の入力から、Aボタン53の入力が無いまま11フレーム以上経過した場合に、連打状態を解除する条件が満たされたと判定する。当該判定の結果、上記解除条件が満たされていない場合は(ステップS19でNO)、後述のステップS17に処理が進められる。
【0182】
一方、上記判定の結果、解除条件が満たされた場合は(ステップS19でYES)、ステップS20で、プロセッサ81は、連打状態解除処理を実行する。
図38は、当該連打状態解除処理の詳細を示すフローチャートである。
図38において、まず、ステップS101で、プロセッサ81は、連打状態フラグ325にオフを設定する。次に、ステップS102で、プロセッサ81は、発動済みフラグ330にもオフを設定する。次に、ステップS103で、プロセッサ81は、ストッパーフラグ329がオンか否かを判定する。つまり、ストッパー発動中に(1秒経過する前に)ユーザがAボタン53の連打を止めたか否かを判定する。オンの場合は(ステップS103でYES)、ステップS104で、プロセッサ81は、ストッパーフラグ329にオフを設定する。一方、上記判定の結果、オフの場合は(ステップS103でNO)、当該ステップS104の処理はスキップされる。以上で、連打状態解除処理は終了する。
【0183】
図29に戻り、次に、ステップS17で、プロセッサ81は、操作データ310に基づいたPC201の移動制御を行う。具体的には、PC位置・姿勢情報321やPC移動パラメータ322の内容が更新される。
【0184】
次に、ステップS18で、プロセッサ81は、操作データ310に基づいた、上記以外のPC201の動作制御処理を実行する。例えば、隊列にサポーターを追加するための処理や、手動切り替え操作によって投擲対象種類を切り替える処理が行われる。その後、プロセッサ81は、プレイヤキャラクタ制御処理を終了する。
【0185】
[サポーターの動作制御]
図28に戻り、次に、ステップS3で、プロセッサ81は、サポーター制御処理を実行する。これは、各サポーターの動作を制御するための処理である。
図39~
図40は、当該サポーター制御処理の詳細を示すフローチャートである。
図39において、まず、ステップS111で、プロセッサ81は、以下の処理の対象とするサポーターを1体選択する。以下、当該選択されたサポーターのことを、処理対象サポーターと呼ぶ。
【0186】
次に、ステップS112で、プロセッサ81は、処理対象サポーターのサポーター行動状態345が「仕事待機中」か否かを判定する。「仕事待機中」の場合は(ステップS112でYES)、ステップS113で、プロセッサ81は、処理対象サポーターのサポーター位置・姿勢情報343等に基づき、投擲されてから着地済みであるか否か判定する。当該判定の結果、投擲された後、まだ着地していない場合は(ステップS113でNO)、ステップS114で、プロセッサ81は、処理対象サポーターの行動パラメータ346に基づき移動させる。本例では、行動パラメータ346には、投擲中は放物線を描く軌道で移動するようなパラメータが設定されているものとする。その後、後述のステップS124に処理が進められる。
【0187】
一方、上記ステップS13の判定の結果、着地済みの場合は(ステップS113でYES)、ステップS115で、プロセッサ81は、処理対象サポーターが上述したような持ち場についたか否かをサポーター位置・姿勢情報343等に基づき判定する。持ち場についていない場合は(ステップS115でNO)、ステップS120で、プロセッサ81は、処理対象サポーターを持ち場に向けて移動させる。その後、後述のステップS124に処理が進められる。一方、持ち場についた場合は(ステップS115でYES)、ステップS116で、プロセッサ81は、サポーター行動状態345に「仕事中」を設定する。次に、ステップS117で、プロセッサ81は、処理対象サポーターのアクションの対象となる仕事対象に応じて、行動パラメータ346を設定する。例えば、仕事対象が上記運搬物オブジェクトであれば、運搬アクションを行うように行動パラメータ346が設定される。また、仕事対象が上記障害物オブジェクトであれば、破壊アクションを行うように行動パラメータ346が設定される。
【0188】
次に、ステップS118で、プロセッサ81は、処理対象サポーターのアクション対象である仕事対象が、「必要力設定型」か否かを判定する。当該判定の結果、「必要力設定型」の場合は(ステップS118でYES)、ステップS119で、プロセッサ81は、当該仕事対象の待機力情報355から1を減算し、稼働力情報354に1を加算する。一方、上記判定の結果、「必要力設定型」ではない場合は(ステップS118でNO)、上記ステップS119の処理はスキップされ、後述のステップS124に処理が進められる。
【0189】
次に、上記ステップS112の判定の結果、「仕事待機中」ではない場合(ステップS112でNO)の処理について説明する。この場合は、
図40のステップS121で、プロセッサ81は、処理対象サポーターのサポーター行動状態345が「仕事中」か否かを判定する。当該反映の結果、「仕事中」の場合は(ステップS121でYES)、ステップS122で、プロセッサ81は、その処理対象サポーターの行動パラメータ346に基づき、当該処理対象サポーターの動作を制御する。例えば、運搬アクションや破壊アクションに係る動作制御が行われることになる。ここで、上記運搬アクションに関して補足すると、サポーターが持ち場についたが、必要仕事力がまだ充足されていない場合は、運搬物オブジェクトを持ち上げようとする動作が運搬アクションの一環として行われる。
【0190】
一方、上記判定の結果、「仕事中」ではない場合は(ステップS121でNO)、ステップS123で、プロセッサ81は、サポーター行動状態345の内容に応じたその他の動作制御を行う。例えば、サポーター行動状態345が「待機中」であれば、辺りを見回すような動作をサポーターに行わせる。
【0191】
次に、
図39のステップS124で、プロセッサ81は、全てのサポーターについて、上記のような処理を行ったか否かを判定する。まだ未処理のサポーターが残っている場合は(ステップS124でNO)、上記ステップS111に戻り、処理が繰り返される。全てのサポーターについて処理した場合は(ステップS124でYES)、プロセッサ81は、当該サポーター制御処理を終了する。
【0192】
[その他のオブジェクトの制御]
図28に戻り、次に、ステップS4で、プロセッサ81は、上記PC201およびサポーター以外の各種のオブジェクトの動作制御を行う。例えば、敵キャラクタの動作を制御したり、運搬物オブジェクトを運搬に伴って移動させたり、障害物オブジェクトが破壊される様子を示すアニメーションを再生したりする。
【0193】
[仕事力状況画像の設定]
次に、ステップS5で、プロセッサ81は、上記仕事力状況画像205の表示内容を更新する。当該処理は、上記仕事力状況画像205の表示が必要な場合に適宜実行される。本実施形態では、仕事力状況画像205は、必要仕事力が”2”以上の運搬物オブジェクトに関して表示される(上記のように、障害物オブジェクトや、必要仕事力が”1”の運搬物オブジェクトについては表示されない)。そのため、当該処理では、このような運搬物オブジェクトについて、上記必要仕事力情報353および稼働力情報354に基づいて上記仕事力状況画像205が生成される、または、その表示内容の更新が行われる。
【0194】
[ゲーム画像の出力]
次に、ステップS6で、プロセッサ81は、上記ステップS2~S5の処理内容を反映したゲーム画像を生成して、上記据え置き型モニタ等に出力する。
【0195】
次に、ステップS7で、プロセッサ81は、ゲーム処理の終了条件が満たされたか否かを判定する。例えば、ユーザによるゲーム終了指示操作があったか否かを判定する。その結果、終了条件が満たされていなければ(ステップS7でNO)、上記ステップS2に戻り、処理が繰り返される。終了条件が満たされていれば(ステップS7でYES)、プロセッサ81は、当該ゲーム処理を終了する。
【0196】
以上で、本実施形態に係るゲーム処理の詳細説明を終了する。
【0197】
このように、本実施形態では、「必要数設定型」の仕事対象については、必要仕事力を満たした時点(投擲操作が行われた時点)で、投擲に係るPC201の動作を一旦停止させる。また、その後も連打が続いている場合は、1秒経過した後、投擲動作を再開させている。そのため、必要数以上の投擲が行われることを抑制しつつ、必要数に達するまでは連打による操作性を確保できる。これにより、操作性を向上できる。
【0198】
また、「種類制限型」の仕事対象に関して、投擲対象種類の自動切り替えが発生した場合も、投擲に係るPC201の動作を一旦停止させている。そのため、自動切り替えの発生に気付かずに連打の勢いでサポーターの投擲が継続した結果、有用ではないサポーターまで(勢いで)投擲してしまい、ユーザにとって不利な展開に陥ることを防ぐことができる。また、自動切り替えが発生するまでは連打操作できるため、操作のテンポが悪くならないようにしている。これにより、ユーザの利便性および操作性を向上できる。
【0199】
[変形例]
なお、上記実施形態では、ストッパー発動後、(連打状態のまま)1秒経過後にストッパーを解除するという例を挙げた。この”1秒”というのはあくまで一例であり、他の時間を用いてもよいし、秒数ではなく、例えば、”ストッパー発動からnフレーム後”のような指標を用いてもよい。
【0200】
また、他の実施形態では、ストッパーの発動後、時間経過で解除せずに、連打状態が続いている間はストッパーを発動させ続けるようにしてもよい。この場合は、連打状態が終わると共に、ストッパーを解除すればよい。
【0201】
また、ストッパー発動中の制御として、上記実施形態では、PC201に投擲動作を行わせないような制御例を挙げた。この他、例えば、Aボタン53の入力そのものを受け付けなくする(Aボタン53の入力を無視する)ような制御を行ってもよい。あるいは、PC201に投擲にかかるアニメーションは再生させるが、実際のサポーターの投擲を行わないようにしてもよい。この場合も、ユーザに違和感を与え、運搬についての必要数到達や、投擲対象種類の残数切れについて注意喚起できる。
【0202】
また、投擲対象種類の自動切り替えによるストッパー発動に際して、上記実施形態では、保留条件を判定する例を挙げた。また、当該保留条件について、上記のような、現在のターゲットが「種類無制限型」か「種類制限型」かに基づいて判定する例を示した。この他、保留条件については、次のような条件を用いてもよい。まず、投擲対象種類が特定のサポーター種類ではないことを保留条件としてもよい。換言すれば、次に投擲する投擲対象種類が特定の種類のサポーターである場合に、ストッパーを発動させるよう制御してもよい。例えば、図示は省略するが、仕事力が”100”の特殊なサポーターが1体、隊列内に存在している場合を想定する。このような特殊サポーターは、それ1体だけで、どの仕事対象についても必要仕事力を満たすようなサポーターであり、その影響力が高いものである。このような特殊なサポーターは、その影響力の高さ故に、軽々しく投擲したくない(使用したくない)、というユーザのニーズがあることも想定される。そのため、現在のターゲットが「種類無制限型」か「種類制限型」に関わらず、投擲対象種類がこのような特殊なサポーターに切り替わったときにストッパーを発動させるようにしてもよい。これにより、このような特殊なサポーターが、連打操作の勢いでユーザの意図に反して投擲されないようにすることができる。
【0203】
また、他の保留条件として、投擲対象種類とターゲットとの組み合わせが所定の組み合わせであることを保留条件としてもよい。例えば、仕事対象が「種類制限型」であり、上記自動切り替えの発生時に、当該仕事対象に設定されている仕事可能種類と投擲対象種類とが一致していない場合はストッパーを発動させ、一致している場合はストッパーを発動させないようにしてもよい。上記の電気ゲートの例で言うと、結果的には上記と同じ結果となるが、自動切り替えが発生したときに、(次の)投擲対象種類が黄サポーターであるか否かを判定してもよい。そして、黄サポーターの場合は、保留条件を満たすとしてストッパーは発動させず、黄サポーター以外の場合は、保留条件を満たさないとして、ストッパーを発動させるような制御を行ってもよい。
【0204】
また、上記の例では、運搬物オブジェクトについては、全て「種類無制限型」である場合を例に説明していた。他の実施形態では、運搬物オブジェクトについても「種類制限型」のものを設けてもよい。そして、この場合に、上記必要仕事力の充足に基づいたストッパーと、投擲対象種類の自動切り替えによるストッパーとが併存するようにしてもよい。
例えば、「赤および黄サポーターのみ運搬可能であり、必要仕事力が”20”の運搬物オブジェクト」というものを設けてもよい。この場合は、上記自動切り替えが発生した際に1度目のストッパーを発動させ、その後、必要仕事力が充足された時点で2度目のストッパーを発動させるようにしてもよい。あるいは、どちらか一方だけを発動させるようにしてもよい。
【0205】
また、投擲対象種類の自動切り替えによるストッパー発動の発動回数について、上記実施形態では、1連打期間中に1回のみという例を示した。他の実施形態では、当該ストッパーについては、1回だけでなく、1連打期間中において、投擲対象種類の自動切り替えが発生する度に発動させるようにしてもよい。
【0206】
また、投擲対象種類の自動切り替えによるストッパー発動に関して、上記実施形態では、仕事対象が「種類制限型」であるか「種類無制限型」であるかによって、ストッパーを発動するか否かを使い分ける例を挙げた。この点について、他の実施形態では、「種類制限型」、「種類無制限型」のような分類は行わず、例えば、上記「種類無制限型」に該当する仕事対象について、上述した「ストッパー無効」の属性を持たせるような構成としてもよい。つまり、投擲対象種類の自動切り替えが発生しても、仕事対象が「ストッパー無効」の属性を有していれば、ストッパーを発動させないような制御を行ってもよい。
【0207】
また、上記実施形態では、現在の投擲対象種類の残数が0になったときに投擲対象種類の自動切り替えを行い、必要に応じてストッパーを発動させる例を挙げた。この他、他の実施形態では、自動切り替えが行われたタイミングでは無く、現在の投擲対象種類の残数が例えば”0~2”のような所定の範囲内の値に含まれるようになったことに応じて、ストッパーを発動させるような制御としてもよい。これは、例えば、所定のアイテムの使用等によって、PC201が一時的に、1回の投擲動作で2体のサポーターを1度に投擲できるようになるギミックがある場合等に有用である。この場合は、残数が0になりそうなときにストッパーを発動させることで、現在の投擲対象種類の残数が残り少ないことにユーザを気付かせることができる。つまり、残数が0になる前の時点で、事前にユーザに気付きを与えることができる。
【0208】
また、上記実施形態では、仕事力状況画像205の一例として、「稼働力/必要仕事力」という形式で表示する例を示した。このような数値を使った表示形式に限らず、他の実施形態では、例えばゲージ画像等のインジケータを用いて充足状況を表示するようにしてもよい。また、その他、数値やインジケータは表示せず、上記持ち場についたサポーターのアイコン画像を充足分の数だけ表示してもよい。
【0209】
また、上記実施形態では、上記投擲操作を繰り返す操作例として、Aボタン53を連打する操作を一例に挙げた。このようなボタン操作に限らず、モーションセンサを用いた入力方法による繰り返し入力の場合でも、上記の処理は適用できる。この場合は、1回分のボタン操作の代わりに、例えばコントローラを1回振る操作を利用してもよい。
【0210】
また、上記実施形態においては、ゲーム処理に係る一連の処理を単一の本体装置2で実行される場合を説明した。他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。また、いわゆるクラウドゲーミングの構成としてもよい。例えば、本体装置2は、ユーザの操作を示す操作データを所定のサーバに送り、当該サーバにおいて各種ゲーム処理が実行され、その実行結果が動画・音声として本体装置2にストリーミング配信されるような構成としてもよい。
【符号の説明】
【0211】
1 ゲームシステム
2 本体装置
3 左コントローラ
4 右コントローラ
81 プロセッサ
84 フラッシュメモリ
85 DRAM