以下、本発明の実施形態の例について図面に基づき詳細に説明する。
図1は、本発明の実施形態に係るゲームシステムの構成の一例を示す図である。図1に示すように、本実施形態に係るゲームシステム10は、ゲーム管理装置20と、複数のゲーム装置30と、を含む。ゲーム管理装置20と複数のゲーム装置30とは通信ネットワーク12に接続される。通信ネットワーク12は、例えばインターネット等を含んで構成される。ゲーム管理装置20とゲーム装置30との間で相互にデータ通信が可能である。ゲーム装置30と他のゲーム装置30との間でも相互にデータ通信が可能である。
ゲーム管理装置20は一般的なサーバコンピュータによって実現される。ゲーム管理装置20は各ゲーム装置30の情報(例えばIPアドレス等)を管理しており、各ゲーム装置30に他のゲーム装置30の情報を提供する役割を果たす。
図2はゲーム管理装置20のハードウェア構成を示す図である。図2に示すように、ゲーム管理装置20は、制御部21、主記憶部22、補助記憶部23、光ディスクドライブ部24、及び通信インタフェース25を含む。
制御部21はマイクロプロセッサを含んで構成され、オペレーティングシステム及びその他のプログラムに従って各種処理を実行する。主記憶部22は例えばRAMを含んで構成される。主記憶部22には、補助記憶部23又は光ディスク(情報記憶媒体)から読み出されたプログラムやデータが記憶される。また主記憶部22は、処理の過程で必要なデータを記憶するワークメモリとしても用いられる。
補助記憶部23は、例えばハードディスク装置(情報記億媒体)を含む。光ディスクドライブ部24には光ディスクが装着され、光ディスクドライブ部24は光ディスクに記憶されたプログラムやデータを読み取る。通信インタフェース25はゲーム管理装置20を通信ネットワーク12に接続するためのインタフェースである。
ゲーム装置30はプレイヤがゲームをプレイするための装置であり、例えば家庭用ゲーム機(据置型ゲーム機)、携帯ゲーム機、業務用ゲーム機、携帯電話機、携帯情報端末、又はパーソナルコンピュータによって実現される。ここでは、ゲーム装置30が家庭用ゲーム機によって実現される場合について説明する。
図3はゲーム装置30のハードウェア構成を示す図である。図3に示すように、ゲーム装置30は、制御部31、主記憶部32、補助記憶部33、光ディスクドライブ部34、通信インタフェース35、操作部36、表示部37、及び音声出力部38を含む。制御部31、主記憶部32、補助記憶部33、光ディスクドライブ部34、及び通信インタフェース35は、制御部21、主記憶部22、補助記憶部23、光ディスクドライブ部24、及び通信インタフェース25と同様である。
操作部36は例えばゲームコントローラ又はタッチパネル等を含み、プレイヤの操作を受け付ける。図4A及び図4Bは操作部36の一例を示す図である。図4A及び図4Bに示す操作部36は汎用ゲームコントローラである。なお、図4Aにおいて、X軸は操作部36(ゲームコントローラ)の長軸方向(左右方向)に対応し、Y軸は操作部36(ゲームコントローラ)の短軸方向(上下方向)に対応する。X軸とY軸とは直交している。
操作部36の表面40には複数の操作部材が備えられている。例えば、方向ボタン群41と、ボタン42A,42B,42X,42Yと、スティック(レバー)43L,43Rとが備えられている。
方向ボタン群41は例えば方向を指示するために用いられる。方向ボタン群41は、上方向に対応する上ボタン41Uと、下方向に対応する下ボタン41Dと、左方向に対応する左ボタン41Lと、右方向に対応する右ボタン41Rと、を含む。ボタン42A,42B,42X,42Yは各種ゲーム操作に用いられる。ボタン42A,42B,42X,42Yの表面には、それぞれ、ばつ、円、四角形、三角形のマークが付されている。スティック43L,43Rも例えば方向を指示するために用いられる。スティック43L,43Rは、操作部36(ゲームコントローラ)の筐体の表面40に直立しており、この直立状態から全方位に傾倒自在に構成されている。
操作部36の各操作部材の状態を示す操作信号が一定周期(例えば1/60秒)ごとに制御部31に供給される。制御部31は操作信号に基づいてプレイヤのゲーム操作を判定する。
表示部37は例えば家庭用テレビ受像機又は液晶表示パネル等であり、制御部31の指示に従って画面を表示する。音声出力部38は例えばスピーカ又はヘッドホン等であり、制御部31の指示に従って音声データを出力する。
なお、プログラムやデータは、光ディスク又はメモリカード等の情報記憶媒体を介してゲーム管理装置20又はゲーム装置30に供給される。あるいは、プログラムやデータは通信ネットワーク12を介してゲーム管理装置20又はゲーム装置30に供給されるようにしてもよい。
ゲームシステム10では、プレイヤ同士が通信ネットワーク12を介して対戦する対戦ゲームが実行される。例えば、プレイヤA(第1プレイヤ)の操作対象とプレイヤB(第2プレイヤ)の操作対象とが競い合うゲームが実行される。以下では、プレイヤAによって操作されるキャラクタと、プレイヤBによって操作されるキャラクタとが格闘する対戦格闘ゲームがゲームシステム10で実行される場合について説明する。
図5は格闘ゲームのゲーム画面の一例を示している。このゲーム画面は、プレイヤAのゲーム装置30の表示部37と、プレイヤBのゲーム装置30の表示部37との両方に表示される。なお、このゲーム画面は2次元コンピュータグラフィックス技術を用いて表示されるようにしてもよいし、3次元コンピュータグラフィックス技術を用いて表示されるようにしてもよい。
図5に示すゲーム画面には、キャラクタ50A、キャラクタ50B、ゲージ51A、ゲージ51B、及び残り時間52が表示されている。まず、キャラクタ50A,50Bについて説明する。キャラクタ50Aは、プレイヤAによって操作されるゲームキャラクタであり、プレイヤAのゲーム操作に従って動作する。キャラクタ50Bは、プレイヤBによって操作されるゲームキャラクタであり、プレイヤBのゲーム操作に従って動作する。
図6は、キャラクタの攻撃動作とプレイヤが行うべきゲーム操作との対応関係の一例を示す図である。図6において、ばつ、円、四角形、三角形マークは、それぞれ、ボタン42A,42B,42X,42Yを示している。また、上矢印、下矢印、左矢印、右矢印は、それぞれ、上ボタン41U、下ボタン41D、左ボタン41L、右ボタン41Rを示している。
図6に示す対応関係には、キャラクタにパンチ又はキックを行わせるためのゲーム操作が示されている。例えば、プレイヤAがボタン42Xを押下した場合にキャラクタ50Aはパンチを行う。また例えば、プレイヤAがボタン42Yを押下した場合にキャラクタ50Aはキックを行う。
図6に示す対応関係には、キャラクタに特殊技を行わせるためのゲーム操作も示されている。特殊技は、通常の技(パンチ又はキック)よりも大きいダメージを対戦相手のキャラクタに与えることが可能な技である。キャラクタに特殊技を行わせるためのゲーム操作は、複数の操作部材を特定の手順で操作するような操作になっている。
例えば、プレイヤAが下ボタン41D、右ボタン41R、上ボタン41U、ボタン42A、ボタン42A、ボタン42Bを順番に押下した場合にキャラクタ50Aは特殊技を行う。特殊技のためのゲーム操作は、通常の技(パンチ又はキック)のための操作に比べて、プレイヤが操作すべき操作部材の数が多くなっている。このため、特殊技のためのゲーム操作は通常技のためのゲーム操作よりも難しくなっている。
さらに、図6に示す対応関係には、キャラクタにカウンター攻撃を行わせるためのゲーム操作も示されている。カウンター攻撃は特殊技の一種であり、より大きなダメージを対戦相手のキャラクタに与えることが可能な技である。キャラクタにカウンター攻撃を行わせるためのゲーム操作も、複数の操作部材を特定の手順で操作するような操作になっている。ただし、キャラクタにカウンター攻撃を行わせるためのゲーム操作に関しては、ゲーム操作を行うべきタイミングが所定のタイミングに限られている。
例えば、キャラクタ50Bが攻撃動作を開始したタイミングにおいて、プレイヤAが下ボタン41D、左ボタン41L、上ボタン41U、ボタン42B、ボタン42Xを順番に押下した場合に、キャラクタ50Aはカウンター攻撃を行う。このように、カウンター攻撃のためのゲーム操作を行うべきタイミングは、対戦相手のキャラクタが攻撃動作を開始したタイミングに限られている。このため、カウンター攻撃のためのゲーム操作は、通常の技(パンチ又はキック)や特殊技のためのゲーム操作よりも難しくなっている。
なお、攻撃動作の種類はキャラクタごとに異なるようにしてもよい。また、攻撃動作のためのゲーム操作もキャラクタごとに異なるようにしてもよい。
次に、ゲージ51A,51Bについて説明する。ゲージ51Aはキャラクタ50A(プレイヤA)に対応しており、ゲージ51A(斜線部分)の長さはキャラクタ50Aのヒットポイントの値に対応している。「ヒットポイント」とは、キャラクタの体力がどの程度残っているのかを示すパラメータである。例えば、ヒットポイントは0〜100の値をとり、ヒットポイントの初期値は100に設定される。キャラクタ50Aがダメージを受けた場合に、キャラクタ50Aのヒットポイントの値は減少し、ゲージ51A(斜線部分)が画面中央側に向かって収縮する。キャラクタ50Aのヒットポイントが零となると(すなわち、ゲージ51Aの長さが零になると)、キャラクタ50B(プレイヤB)が勝利し、キャラクタ50A(プレイヤA)が敗北したことになる。
一方、ゲージ51Bはキャラクタ50B(第2プレイヤ)に対応しており、ゲージ51B(斜線部分)の長さはキャラクタ50Bのヒットポイントの値に対応している。キャラクタ50Bがダメージを受けた場合に、キャラクタ50Bのヒットポイントの値は減少し、ゲージ51B(斜線部分)が画面中央側に向かって収縮する。キャラクタ50Bのヒットポイントが零となると(すなわち、ゲージ51Bの長さが零になると)、キャラクタ50A(プレイヤA)が勝利し、キャラクタ50B(プレイヤB)が敗北したことになる。
格闘ゲームでは対戦時間(例えば99秒)が定められている。ゲーム画面に表示されている残り時間52は、対戦時間が終了するまでの残り時間を示している。対戦時間内にいずれかのキャラクタのヒットポイントが零にならなかった場合には、ヒットポイントの値の大きい方のキャラクタが勝利したことになる。また、キャラクタ50A,50Bのヒットポイントが同時に零になった場合には引き分けとなる。
格闘ゲームの決着方法としては、いわゆる「1回勝負」を採用してもよいし、「3回勝負」を採用してもよい。当然のことながら、「5回勝負」又は「7回勝負」等を採用してもよい。なお、「1回勝負」とは1回の対戦で決着をつける方法である。一方、「3回勝負」とは、対戦を最大3回行うことによって決着をつける方法である。「3回勝負」の場合、先に2勝したプレイヤ(キャラクタ)が最終的な勝者となる。なお以下では、「1回勝負」を採用した場合について説明する。
ところで、プレイヤA,Bが通信ネットワーク12を介して対戦する場合、ゲームの現在の状況を示すデータ(以下「ゲーム状況データ」と呼ぶ。)を、プレイヤAのゲーム装置30とプレイヤBのゲーム装置30との間で共通化する必要がある。
ゲーム状況データを共通化するための方法を説明する前に、ゲーム状況データについて説明しておく。本実施形態の場合、例えば下記に示すような情報がゲーム状況データに保持される。
・キャラクタ50Aの状態情報
・キャラクタ50Bの状態情報
例えば、キャラクタ50Aの状態情報には下記に示すような情報が含まれる。キャラクタ50Bの状態情報もキャラクタ50Aの状態情報と同様である。
・キャラクタ50Aの位置、向き、及び姿勢を示す情報
・キャラクタ50Aのヒットポイント
本実施形態の場合、キャラクタに各種動作を行わせるためのアニメーションデータ(モーションデータ)がゲーム装置30に記憶されている。例えば、移動動作のためのアニメーションデータ、パンチのためのアニメーションデータ、キックのためのアニメーションデータ、特殊技のためのアニメーションデータ、及びカウンター攻撃のためのアニメーションデータ等が記憶されている。そして、アニメーションデータが再生されることによって、キャラクタの姿勢が変化し、キャラクタが動作を行うようになる。このため、キャラクタの姿勢を示す情報として、例えば、現在再生されているアニメーションデータの種類を示す情報や、そのアニメーションデータの再生位置を示す情報が記憶される。
プレイヤAのゲーム装置30とプレイヤBのゲーム装置30との間でゲーム状況データを共通化するための方法の一例について説明する。なお以下では、プレイヤAのゲーム装置30のことを「ゲーム装置A」と記載し、プレイヤBのゲーム装置30のことを「ゲーム装置B」と記載する。
本実施形態では、ゲーム装置A,Bのいずれかがゲームサーバの役割を担うことによって、ゲーム装置A,Bの間でゲーム状況データが共通化される。ここでは、ゲーム装置Aがゲームサーバの役割を担う場合について説明する。この場合、最新のゲーム状況を示すゲーム状況データがゲーム装置Aの主記憶部32に記憶され、そのゲーム状況データの複製がゲーム装置Bの主記憶部32に記憶される。
図7は、複数のゲーム装置A,Bの間でゲーム状況データを共通化するための処理の一例を示す図である。図7に示す処理はプレイヤA,Bの対戦中に実行される。
図7に示すように、ゲーム装置Aがゲームサーバの役割を担っている場合、ゲーム装置Bは、プレイヤBが行ったゲーム操作に関する操作データを取得し(S101)、その操作データをゲーム装置Aに送信する(S102)。
一方、ゲーム装置Aは、プレイヤAが行ったゲーム操作に関する操作データを取得し(S103)、ゲーム装置Aの主記憶部32に記憶されるゲーム状況データを、ステップS103で取得した操作データ(プレイヤAが行ったゲーム操作)と、ゲーム装置Bから受信した操作データ(プレイヤBが行ったゲーム操作)と、に基づいて更新する(S104)。
その後、ゲーム装置Aは、ゲーム状況データの更新内容をゲーム装置Bに伝えるための更新データをゲーム装置Bに送信する(S105)。ゲーム装置Bは、ゲーム装置Bの主記憶部32に記憶されるゲーム状況データを、ゲーム装置Aから受信した更新データに基づいて更新する(S106)。そして、ゲーム装置Bでは、ゲーム装置Bの主記憶部32に記憶されるゲーム状況データに基づいてゲーム画面が更新される(S108)。また同様に、ゲーム装置Aでは、ゲーム装置Aの主記憶部32に記憶されるゲーム状況データに基づいてゲーム画面が更新される(S107)。
以上のようにして、ゲーム装置A,Bの間でゲーム状況データが共通化され、ゲームの現在の状況を示すゲーム画面(図5参照)がゲーム装置A,Bの両方において表示される。
なお、ステップS105では、更新データをゲーム装置Bに送信する代わりに、ゲーム画面データ(ゲーム画面として表示すべき画像データ)をゲーム装置Bに送信するようにしてもよい。そして、ゲーム装置Bでは、このゲーム画面データに基づいて、ゲーム画面が表示部37に表示されるようにしてもよい。
上記の対戦ゲームでは、例えば、プレイヤA,Bの間の技量の差が大きい場合、対戦が開始されてから非常に短い時間内に一方のプレイヤ(技量が高い方のプレイヤ)が圧勝してしまう場合がある。この場合、他方のプレイヤ(技量が低い方のプレイヤ)は何もできないまま対戦が終わってしまうことに不満を感じてしまうおそれがある。
この点、ゲームシステム10では、上記のような不満をプレイヤに感じさせないように図るための機能を備えている。図8はこの機能について説明するための図である。
ゲームシステム10では、対戦が開始されてから比較的短い時間内においてキャラクタ50A,50Bの間のヒットポイントの差が大きくなった場合、ヒットポイントが大きい方のキャラクタは、特定の攻撃でなければ、他方のキャラクタにダメージを与えることができなくなるようになっている。ここで、「特定の攻撃」とは、プレイヤが行うべきゲーム操作の難易度が高い攻撃であり、例えば、カウンター攻撃(又は特殊技)である。
例えば、図8に示す状態ではゲージ51B(斜線部分)がゲージ51A(斜線部分)に比べて非常に短くなっている。すなわち、キャラクタ50Bのヒットポイントがキャラクタ50Aのヒットポイントに比べて非常に小さくなっており、キャラクタ50A,50Bの間のヒットポイントの差が大きくなっている。さらに、図8に示す状態では、対戦が開始されてからの経過時間(4秒)も非常に短い。図8に示す状態は、プレイヤBが何もできないまま対戦が終了してしまう可能性が高い状態になっている。
このような場合、キャラクタ50Aは、カウンター攻撃(特定の攻撃)のみを用いて、キャラクタ50Bのヒットポイントを零にすることを宣言するようになっている。図8に示すゲーム画面では、吹き出し53がキャラクタ50Aに関連づけて表示されている。吹き出し53には、カウンター攻撃のみを用いることを宣言する内容の台詞が表示される。このような宣言がなされると、カウンター攻撃以外の攻撃によって、キャラクタ50Bのヒットポイントは減らず、カウンター攻撃にのみによって、キャラクタ50Bのヒットポイントが減るようになる。
この場合、プレイヤAは、より難易度の高いゲーム操作(カウンター攻撃のためのゲーム操作)を行わなければ、キャラクタ50Bにダメージを与えることができなくなる。一方、プレイヤBは、特定の攻撃(カウンター攻撃)のみに注意すればよくなり、キャラクタ50Bにダメージを与えやすくなる。その結果、プレイヤBに反撃の機会が与えられ、プレイヤBが何もできないまま対戦が終了してしまう可能性が低くなる。
以上のように、ゲームシステム10は、一方のプレイヤ(例えば、技量が低いプレイヤ)が何もできずに対戦が終了してしまわないように図るための機能を備えている。以下、このような機能を実現するための構成について説明する。
図9は、ゲームシステム10で実現される機能を示す機能ブロック図である。図9に示すように、ゲームシステム10はゲームデータ記憶部60及びゲーム制御部61を含む。ゲームデータ記憶部60は、例えば、ゲームサーバの役割を担うゲーム装置30の主記憶部32、補助記憶部33、及び光ディスクドライブ部34(光ディスク)のうちの少なくとも一つによって実現される。一方、ゲーム制御部61は、例えば、ゲームサーバの役割を果たすゲーム装置30の制御部31によって実現される。
まず、ゲームデータ記憶部60について説明する。ゲームデータ記憶部60はゲームを実行するために必要なデータを記憶する。例えば、キャラクタ50A,50Bのアニメーションデータがゲームデータ記憶部60に記憶される。また、上述したゲーム状況データがゲームデータ記憶部60に記憶される。
次に、ゲーム制御部61について説明する。ゲーム制御部61はゲーム制御を実行する。図9に示すように、ゲーム制御部61は更新部62、判定部63、及び対戦結果決定部64を含む。
まず、更新部62について説明する。更新部62は第1更新部62A及び第2更新部62Bを含む。第1更新部62Aは、プレイヤA(第1プレイヤ)のゲーム操作に基づいて、第1パラメータの値を更新する。例えば、プレイヤAによって複数の第1ゲーム操作のうちのいずれかが行われた場合、第1更新部62Aは第1パラメータの値を更新する。
本実施形態の場合、キャラクタ50Bのヒットポイントが「第1パラメータ」に相当している。また、図6において定められている複数のゲーム操作が「複数の第1ゲーム操作」に相当している。すなわち、パンチのためのゲーム操作、キックのためのゲーム操作、特殊技のためのゲーム操作、及び、カウンター攻撃のためのゲーム操作が「複数の第1ゲーム操作」に含まれる。
例えば、図6において定められている複数のゲーム操作のうちのいずれかがプレイヤAによって行われた場合、ゲーム制御部61(第1更新部62A)は、そのゲーム操作に対応する攻撃動作をキャラクタ50Aに行わせる。また、第1更新部62Aは、キャラクタ50Aの攻撃がキャラクタ50Bに当たったか否かを判定し、その判定結果に基づいて、キャラクタ50Bのヒットポイントの値を更新する。例えば、キャラクタ50Aの攻撃がキャラクタ50Bに当たった場合、第1更新部62Aはキャラクタ50Bのヒットポイントの値を減少させる。この場合におけるヒットポイントの減少量は、キャラクタ50Aが行った攻撃動作の種類(言い換えれば、プレイヤAが行ったゲーム操作の内容)に基づいて決定される。
以上に説明した機能が第1更新部62Aの基本機能である。なお、この基本機能に加えて、第1更新部62Aは、プレイヤAの対戦相手であるプレイヤBが何もできないまま対戦が終了してしまうことがないように支援するための支援機能を有している。この支援機能については後述する。
第2更新部62Bは、プレイヤB(第2プレイヤ)のゲーム操作に基づいて、第2パラメータの値を更新する。例えば、プレイヤBによって複数の第2ゲーム操作のうちのいずれかが行われた場合、第2更新部62Bは第2パラメータの値を更新する。
本実施形態の場合、キャラクタ50Aのヒットポイントが「第2パラメータ」に相当している。また、図6において定められている複数のゲーム操作が「複数の第2ゲーム操作」に相当している。
例えば、図6において定められている複数のゲーム操作のうちのいずれかがプレイヤBによって行われた場合、ゲーム制御部61(第2更新部62B)は、そのゲーム操作に対応する攻撃動作をキャラクタ50Bに行わせる。また、第2更新部62Bは、キャラクタ50Bの攻撃がキャラクタ50Aに当たったか否かを判定し、その判定結果に基づいて、キャラクタ50Aのヒットポイントの値を更新する。例えば、キャラクタ50Bの攻撃がキャラクタ50Aに当たった場合、第2更新部62Bはキャラクタ50Aのヒットポイントの値を減少させる。この場合におけるヒットポイントの減少量は、キャラクタ50Bが行った攻撃動作の種類(言い換えれば、プレイヤBが行ったゲーム操作の内容)に基づいて決定される。
以上に説明した機能が第2更新部62Bの基本機能である。なお、この基本機能に加えて、第2更新部62Bは、プレイヤBの対戦相手であるプレイヤAが何もできないまま対戦が終了してしまうことがないように支援するための支援機能を有している。この支援機能については後述する。
次に、判定部63について説明する。判定部63は、第1パラメータ及び第2パラメータの少なくとも一方の値が所定値になったか否かを判定する。本実施形態の場合、判定部63は、キャラクタ50Aのヒットポイント(第2パラメータ)の値が零(所定値)になったか否かを判定する。また、判定部63は、キャラクタ50Bのヒットポイント(第1パラメータ)の値が零(所定値)になったか否かを判定する。
対戦結果決定部64は、判定部63の判定結果に基づいて、プレイヤA,Bの間の対戦結果を決定する。例えば、第2パラメータの値が所定値になっておらず、かつ、第1パラメータの値が所定値になった場合、対戦結果決定部64はプレイヤAが勝利したと決定する。本実施形態の場合、キャラクタ50Aのヒットポイントの値が零になっておらず、かつ、キャラクタ50Bのヒットポイントの値が零になった場合、対戦結果決定部64はプレイヤAが勝利したと決定する。
また、例えば、第1パラメータの値が所定値になっておらず、かつ、第2パラメータの値が所定値になった場合、対戦結果決定部64はプレイヤBが勝利したと決定する。本実施形態の場合、キャラクタ50Bのヒットポイントの値が零になっておらず、かつ、キャラクタ50Aのヒットポイントの値が零になった場合、対戦結果決定部64はプレイヤBが勝利したと決定する。
第1更新部62A及び第2更新部62Bが有する上記の支援機能について説明する。まず、第1更新部62Aが有する支援機能、すなわち、プレイヤAの対戦相手であるプレイヤBが何もできないまま対戦が終了してしまうことがないように支援するための機能について説明する。
第1更新部62Aは、初期期間内においてプレイヤAがプレイヤBよりも大きくリードしているような状態になったか否かを判定する。なお、「初期期間」とは、対戦が開始されてからの経過時間が基準時間(例えば10秒)以内であるような期間である。
より具体的には、第1更新部62Aは、初期期間内において、「第1パラメータの値と所定値との間の差が第2パラメータの値と所定値との間の差よりも小さく、かつ、第1パラメータの値と第2パラメータの値との間の差(絶対値)が基準値以上であるような状態」(以下「状態A」と記載する。)になったか否かを判定する。なお、この場合の「基準値」は、第1パラメータの値と第2パラメータの値との間の差が比較的大きいか否かを判定するために設定されるため、「基準値」は比較的大きい値に設定される。
本実施形態の場合、上述したように、「第1パラメータ」はキャラクタBのヒットポイントであり、「第2パラメータ」はキャラクタAのヒットポイントであり、「所定値」は零である。このため、本実施形態の場合、第1更新部62Aは、初期期間内において、「キャラクタBのヒットポイントの値がキャラクタAのヒットポイントの値よりも小さく、かつ、キャラクタBのヒットポイントの値とキャラクタAのヒットポイントの値との間の差(絶対値)が基準値以上であるような状態」(上記の状態A)になったか否かを判定する。
初期期間内において上記の状態Aになったと判定された場合、第1更新部62Aは、複数の第1ゲーム操作のうちの特定のゲーム操作以外のゲーム操作をプレイヤAが行った場合における第1パラメータの更新を制限する。この場合、「特定のゲーム操作」としては、例えば、難易度が高いゲーム操作が設定される。本実施形態の場合、例えば、カウンター攻撃のためのゲーム操作が「特定のゲーム操作」として設定される。なお、特殊技のためのゲーム操作が「特定のゲーム操作」として設定されるようにしてもよい。
また、「第1パラメータの更新を制限する」とは、例えば、第1パラメータの更新を行わないことを意味する。あるいは、「第1パラメータの更新を制限する」とは、例えば、通常の場合(すなわち、初期期間内において上記の状態Aにならなかった場合)に比べて、第1パラメータの更新量を少なく設定することを意味するようにしてもよい。
本実施形態においては、初期期間内において上記の状態Aになったと判定された場合に、第1更新部62Aは、特定の攻撃動作(カウンター攻撃)以外の攻撃動作のためのゲーム操作をプレイヤAが行った場合におけるキャラクタ50Bのヒットポイントの更新(減少)を制限する。
つまり、初期期間内において上記の状態Aになったと判定された場合には、特定の攻撃動作(カウンター攻撃)以外の攻撃動作をキャラクタ50Aが行った場合であっても、第1更新部62Aはキャラクタ50Bのヒットポイントを減少させない。
または、初期期間内において上記の状態Aになったと判定された場合に、第1更新部62Aは、特定の攻撃動作(カウンター攻撃)以外の攻撃動作をキャラクタ50Aがキャラクタ50Bに当てた場合におけるキャラクタ50Bのヒットポイントの減少量を、通常の場合(すなわち、初期期間内において上記の状態Aにならなかった場合)に比べて少なく設定するようにしてもよい。
次に、第2更新部62Bが有する上記の支援機能、すなわち、プレイヤBの対戦相手であるプレイヤAが何もできないまま対戦が終了してしまうことがないように支援するための機能についても説明する。この機能は第1更新部62Aが有する支援機能と類似している。
第2更新部62Bは、初期期間内においてプレイヤBがプレイヤAよりも大きくリードしているような状態になったか否かを判定する。なお、「初期期間」に関しては第1更新部62Aと同様である。
より具体的には、第2更新部62Bは、初期期間内において、「第2パラメータの値と所定値との間の差が第1パラメータの値と所定値との間の差よりも小さく、かつ、第1パラメータの値と第2パラメータの値との間の差(絶対値)が基準値以上であるような状態」(以下「状態B」と記載する。)になったか否かを判定する。なお、この場合の「基準値」は第1更新部62Aの場合と同様である。
本実施形態の場合、上述したように、「第1パラメータ」はキャラクタBのヒットポイントであり、「第2パラメータ」はキャラクタAのヒットポイントであり、「所定値」は零である。このため、本実施形態の場合、第2更新部62Bは、初期期間内において、「キャラクタAのヒットポイントの値がキャラクタBのヒットポイントの値よりも小さく、かつ、キャラクタAのヒットポイントの値とキャラクタBのヒットポイントの値との間の差(絶対値)が基準値以上であるような状態」(上記の状態B)になったか否かを判定する。
初期期間内において上記の状態Bになったと判定された場合、第2更新部62Bは、複数の第2ゲーム操作のうちの特定のゲーム操作以外のゲーム操作を第2プレイヤが行った場合における第2パラメータの更新を制限する。第1更新部62Aの場合と同様、「特定のゲーム操作」としては、例えば、難易度が高いゲーム操作が設定される。例えば、カウンター攻撃のためのゲーム操作が「特定のゲーム操作」として設定される。なお、特殊技のためのゲーム操作が「特定のゲーム操作」として設定されるようにしてもよい。
また、「第2パラメータの更新を制限する」とは、例えば、第2パラメータの更新を行わないことを意味する。または、「第2パラメータの更新を制限する」とは、例えば、通常の場合(すなわち、初期期間内において上記の状態Bにならなかった場合)に比べて、第2パラメータの更新量を少なく設定することを意味するようにしてもよい。
本実施形態においては、初期期間内において上記の状態Bになったと判定された場合に、第2更新部62Bは、特定の攻撃動作(カウンター攻撃)以外の攻撃動作のためのゲーム操作をプレイヤBが行った場合におけるキャラクタ50Aのヒットポイントの更新(減少)を制限する。
つまり、初期期間内において上記の状態Bになったと判定された場合には、特定の攻撃動作(カウンター攻撃)以外の攻撃動作をキャラクタ50Bが行った場合であっても、第2更新部62Bはキャラクタ50Aのヒットポイントを減少させない。
または、初期期間内において上記の状態Bになったと判定された場合に、第2更新部62Bは、特定の攻撃動作(カウンター攻撃)以外の攻撃動作をキャラクタ50Bがキャラクタ50Aに当てた場合におけるキャラクタ50Aのヒットポイントの減少量を、通常の場合(すなわち、初期期間内において上記の状態Bにならなかった場合)に比べて少なく設定するようにしてもよい。
ところで、初期期間内において上記の状態Aになったと判定された場合、ゲーム制御部61は、特定のゲーム操作以外のゲーム操作をプレイヤAが行った場合における第1パラメータの更新が制限される旨をプレイヤA又は/及びプレイヤBに伝えるための出力を出力部(例えば表示部37又は音声出力部38等)に実行させるようにしてもよい。あるいは、初期期間内において上記状態Bになったと判定された場合、ゲーム制御部61は、特定のゲーム操作以外のゲーム操作をプレイヤBが行った場合における第2パラメータの更新が制限される旨をプレイヤA又は/及びプレイヤBに伝えるための出力を出力部(例えば表示部37又は音声出力部38等)に実行させるようにしてもよい。
本実施形態におけるゲーム制御部61は、初期期間内において上記の状態A又は上記の状態Bになったと判定された場合に、例えば図8に示したような吹き出し53をゲーム画面に表示させる。なお、ゲーム制御部61は、吹き出し53と同様の内容の音声を音声出力部38から出力させるようにしてもよい。
次に、上記の機能ブロックを実現するためにゲームシステム10で実行される処理について説明する。図10、図11、及び図12は、図7のステップS104において実行される処理の一例を示すフロー図である。ゲームサーバの役割を担うゲーム装置30(図7においてはゲーム装置A)の制御部31は光ディスクから読み出されたプログラムに従って、図10〜図12に示す処理を実行する。図10〜図12に示す処理を実行することによって、制御部31はゲーム制御部61(更新部62、判定部63、及び対戦結果決定部64)として機能するようになる。
なお、図10〜図12においては、プレイヤAによって操作されるキャラクタ50Aのことを「キャラクタA」と記載し、プレイヤBによって操作されるキャラクタ50Bのことを「キャラクタB」と記載している。
図10に示すように、まず、制御部31は、図7のステップS103において取得されたプレイヤAの操作データに基づいて、キャラクタ50Aの位置、向き、及び姿勢等を更新する(S201)。例えば、プレイヤAによって方向ボタン群41が操作されている場合、その操作内容に基づいて、キャラクタ50Aの位置及び向きが更新される。
また、図6に示されている複数のゲーム操作のうちのいずれかがプレイヤAによって行われた場合、そのゲーム操作に対応する攻撃動作をキャラクタ50Aに行わせるためのアニメーションデータの再生が開始され、そのアニメーションデータに従って、キャラクタ50Aの姿勢が更新される。
例えば、ボタン42X又はボタン42Yが押下された場合、キャラクタ50Aにパンチ又はキックを行わせるためのアニメーションデータの再生が開始される。また例えば、特殊技に対応する操作手順が行われた場合、キャラクタ50Aに特殊技を行わせるためのアニメーションデータの再生が開始される。また例えば、カウンター攻撃に対応する操作手順が所定のタイミング(キャラクタ50Bが攻撃動作を開始したタイミング)において行われた場合、キャラクタ50Aにカウンター攻撃を行わせるためのアニメーションデータの再生が開始される。
また、制御部31は、図7のステップS101において取得されたプレイヤBの操作データに基づいて、キャラクタ50Bの位置、向き、及び姿勢等を更新する(S202)。このステップS202の処理はステップS201の処理と同様である。
ステップS202の処理が実行された後、制御部31はキャラクタ50Aの制限フラグが「0」であるか否かを判定する(S203)。
「キャラクタ50Aの制限フラグ」とは、キャラクタ50Aの攻撃によるキャラクタ50Bのヒットポイントの更新(減少)を制限するか否かを示す情報である。制限フラグは「0」又は「1」の値をとる。値「0」は、キャラクタ50Bのヒットポイントの更新を制限しないことを示し、値「1」は、キャラクタ50Bのヒットポイントの更新を制限することを示す。なお、対戦が開始された時点において、キャラクタ50Aの制限フラグの値は「0」に設定されている。
後述するように、制限フラグの値が「1」である場合、キャラクタ50Bのヒットポイントを減少させることが可能な攻撃動作が「カウンター攻撃」に限定される(図11のステップS216,S217参照)。一方、制限フラグの値が「0」である場合、キャラクタ50Bのヒットポイントを減少させることが可能な攻撃動作が「カウンター攻撃」に限定されず、図6に示されたいずれの攻撃動作によっても、キャラクタ50Bのヒットポイントが減少されるようになる(図11のステップS214,S215参照)。
ステップS203においてキャラクタ50Aの制限フラグが「0」であると判定された場合、制御部31(第1更新部62A)は、キャラクタ50Aのヒットポイントの値がキャラクタ50Bのヒットポイントの値よりも大きいか否かを判定する(S204)。
キャラクタ50Aのヒットポイントの値がキャラクタ50Bのヒットポイントの値よりも大きいと判定された場合、制御部31(第1更新部62A)は、キャラクタ50A,50Bの間のヒットポイントの差(絶対値)が基準値以上であるか否かを判定する(S205)。この場合の「基準値」は正の値を有する所定値である。「基準値」は、キャラクタ50A,50Bの間のヒットポイントの差が大きいか否かを判定するために用いられる。このため、「基準値」は比較的大きい値に設定される。
キャラクタ50A,50Bの間のヒットポイントの差(絶対値)が基準値以上であると判定された場合、制御部31(第1更新部62A)は、対戦が開始されてからの経過時間が基準時間以内であるか否かを判定する(S206)。この場合の「基準時間」は、対戦が開始されてからの経過時間が少ないか否かを判定するために用いられるため、「基準時間」は比較的短い時間に設定される。本実施形態の場合、「基準時間」は例えば10秒に設定される。
上記の経過時間が基準時間以内であると判定された場合、制御部31(第1更新部62A)は、キャラクタ50Aの制限フラグを「1」に更新する(S207)。ステップS207の処理を実行した後、制御部31は後述のステップS208の処理を実行する。ステップS203〜S206のいずれかのステップにおける判定結果が「偽」(N)である場合にも、後述のステップS208の処理が実行される。
図10に示すように、ステップS208において、制御部31はキャラクタ50Bの制限フラグが「0」であるか否かを判定する。「キャラクタ50Bの制限フラグ」とは、キャラクタ50Bの攻撃によるキャラクタ50Aのヒットポイントの更新(減少)を制限するか否かを示す情報である。キャラクタ50Bの制限フラグの詳細は、キャラクタ50Aの制限フラグと同様である。
キャラクタ50Bの制限フラグが「0」であると判定された場合、制御部31(第2更新部62B)は、キャラクタ50Bのヒットポイントの値がキャラクタ50Aのヒットポイントの値よりも大きいか否かを判定する(S209)。そして、キャラクタ50Bのヒットポイントの値がキャラクタ50Aのヒットポイントの値よりも大きいと判定された場合、制御部31(第2更新部62B)は、キャラクタ50A,50Bの間のヒットポイントの差(絶対値)が基準値以上であるか否かを判定する(S210)。このステップS210の処理はステップS205の処理と同様である。
キャラクタ50A,50Bの間のヒットポイントの差(絶対値)が基準値以上であると判定された場合、制御部31(第2更新部62B)は、対戦が開始されてからの経過時間が基準時間以内であるか否かを判定する(S211)。このステップS211の処理はステップS206の処理と同様である。
上記の経過時間が基準時間以内であると判定された場合、制御部31(第2更新部62B)は、キャラクタ50Bの制限フラグを「1」に更新する(S212)。ステップS212の処理を実行した後、制御部31は後述のステップS213の処理を実行する。ステップS208〜S211のいずれかのステップにおける判定結果が「偽」(N)である場合にも、後述のステップS213の処理が実行される。
図11に示すように、ステップS213において、制御部31はキャラクタ50Aの制限フラグが「0」であるか否かを判定する。そして、キャラクタ50Aの制限フラグが「0」であると判定された場合、制御部31(第1更新部62A)は、キャラクタ50Aの攻撃(パンチ、キック、特殊技、又はカウンター攻撃)がキャラクタ50Bに当たったか否かを判定する(S214)。このステップS214では、キャラクタ50A,50Bの位置等に基づいて当たり判定処理が実行される。
キャラクタ50Aの攻撃がキャラクタ50Bに当たったと判定された場合、制御部31(第1更新部62A)はキャラクタ50Bのヒットポイントの値を減少させる(S215)。この場合のヒットポイントの減少量は、キャラクタ50Bに当たった攻撃の種類に基づいて決定される。ステップS215の処理を実行した後、制御部11は後述のステップS218の処理を実行する。
一方、キャラクタ50Aの攻撃がキャラクタ50Bに当たっていないと判定された場合、制御部31は、キャラクタ50Bのヒットポイントの値を更新することなく、後述のステップS218の処理を実行する。
また、ステップS213において、キャラクタ50Aの制限フラグが「0」でないと判定された場合、すなわち、キャラクタ50Aの制限フラグが「1」である場合、制御部31(第1更新部62A)は、キャラクタ50Aのカウンター攻撃がキャラクタ50Bに当たったか否かを判定する(S216)。ステップS214と同様、キャラクタ50A,50Bの位置等に基づいて当たり判定処理が実行される。
キャラクタ50Aのカウンター攻撃がキャラクタ50Bに当たったと判定された場合、制御部31(第1更新部62A)は、キャラクタ50Bのヒットポイントの値を減少させる(S217)。ステップS217の処理を実行した後、制御部31は後述のステップS218の処理を実行する。
一方、キャラクタ50Aのカウンター攻撃がキャラクタ50Bに当たっていないと判定された場合、制御部31は、キャラクタ50Bのヒットポイントの値を更新することなく、後述のステップS218の処理を実行する。この場合、仮にキャラクタ50Aのカウンター攻撃以外の攻撃がキャラクタ50Bに当たっていたとしても、制御部31はキャラクタ50Bのヒットポイントの値を減少させない。
図11に示すように、ステップS218において、制御部31はキャラクタ50Bの制限フラグが「0」であるか否かを判定する。そして、キャラクタ50Bの制限フラグが「0」であると判定された場合、制御部31(第2更新部62B)は、キャラクタ50Bの攻撃(パンチ、キック、特殊技、又はカウンター攻撃)がキャラクタ50Aに当たったか否かを判定する(S219)。このステップS219の処理はステップS214の処理と同様である。
キャラクタ50Bの攻撃がキャラクタ50Aに当たったと判定された場合、制御部31(第2更新部62B)はキャラクタ50Aのヒットポイントの値を減少させる(S220)。この場合のヒットポイントの減少量は、キャラクタ50Aに当たった攻撃の種類に基づいて決定される。ステップS220の処理を実行した後、制御部11は図12のステップS223の処理を実行する。
一方、キャラクタ50Bの攻撃がキャラクタ50Aに当たっていないと判定された場合、制御部31は、キャラクタ50Aのヒットポイントの値を更新することなく、後述のステップS223の処理を実行する。
また、ステップS218において、キャラクタ50Bの制限フラグが「0」でないと判定された場合、すなわち、キャラクタ50Bの制限フラグが「1」である場合、制御部31(第2更新部62B)は、キャラクタ50Bのカウンター攻撃がキャラクタ50Aに当たったか否かを判定する(S221)。このステップS221の処理はステップS216の処理と同様である。
キャラクタ50Bのカウンター攻撃がキャラクタ50Aに当たったと判定された場合、制御部31(第2更新部62B)は、キャラクタ50Aのヒットポイントの値を減少させる(S222)。ステップS222の処理を実行した後、制御部11は後述のステップS223の処理を実行する。
一方、キャラクタ50Bのカウンター攻撃がキャラクタ50Aに当たっていないと判定された場合、制御部31は、キャラクタ50Aのヒットポイントの値を更新することなく、後述のステップS223の処理を実行する。この場合、仮にキャラクタ50Bのカウンター攻撃以外の攻撃がキャラクタ50Aに当たっていたとしても、制御部31はキャラクタ50Aのヒットポイントの値を減少させない。
図12に示すように、ステップS223において、制御部31は、キャラクタ50A,50Bのヒットポイントの値がともに零であるか否かを判定する。そして、キャラクタ50A,50Bのヒットポイントの値がともに零であると判定された場合、制御部31(対戦結果決定部64)はプレイヤA,Bの間の対戦結果を引き分けであると決定する(S224)。
一方、キャラクタ50A,50Bのヒットポイントの値がともに零であると判定されなかった場合、制御部31は、キャラクタ50Aのヒットポイントの値が零であるか否かを判定する(S225)。キャラクタ50Aのヒットポイントの値が零であると判定された場合、制御部31(対戦結果決定部64)はプレイヤBが勝者であると決定する(S226)。
一方、キャラクタ50Aのヒットポイントの値が零であると判定されなかった場合、制御部31は、キャラクタ50Bのヒットポイントの値が零であるか否かを判定する(S227)。キャラクタ50Bのヒットポイントの値が零であると判定された場合、制御部31(対戦結果決定部64)はプレイヤAが勝者であると決定する(S228)。
一方、キャラクタ50Bのヒットポイントの値が零であると判定されなかった場合、制御部31は対戦時間が終了したか否かを判定する(S229)。対戦時間が終了したと判定された場合、制御部31(対戦結果決定部64)は、ヒットポイントの値が大きい方のプレイヤが勝者であると決定する(S230)。一方、対戦時間が終了していないと判定された場合、本処理は終了する。この場合、図7のステップS104の処理が終了したことになり、ステップS105の処理の実行が開始される。
ステップS224,S226,S228,S230において対戦結果が決定された場合にも、本処理は終了する。この場合、図7のステップS105では、対戦が終了した旨と対戦結果とを示す情報が更新データの一部として送信される。そして、ステップS108では、ゲーム装置B(ゲームサーバの役割を担っていないゲーム装置30)の表示部37に対戦結果画面が表示される。同様に、ステップS107においても、ゲーム装置A(ゲームサーバの役割を担っているゲーム装置30)の表示部37に対戦結果画面が表示される。
なお、図10のステップS207においてキャラクタAの制限フラグが「1」に更新された場合や、ステップS212においてキャラクタBの制限フラグが「1」に更新された場合、図7のステップS105では、その旨を示す情報が更新データの一部として送信される。そして、ステップS108では、図8に示したような吹き出し53がゲーム画面に表示される。同様に、ステップS107においても、図8に示したような吹き出し53がゲーム画面に表示される。
以上説明したゲームシステム10によれば、第1更新部62A及び第2更新部62Bが上記の支援機能を有していることによって、プレイヤが何もできないまま対戦が終了してしまうことがないように図ることが可能になる。ゲームシステム10によれば、例えばプレイヤの間でゲームの技量の差が大きいような場合であっても、一方のプレイヤが何もできないまま対戦が終了してしまうことがないように図ることが可能になる。
なお、本発明は以上に説明した実施の形態に限定されるものではない。
(1)例えば、キャラクタ50A(又はキャラクタ50B)はプレイヤA(又はプレイヤB)のゲーム操作に従って防御動作を行うようにしてもよい。例えば、キャラクタ50Aが防御動作を行っている場合には、キャラクタ50Bの攻撃がキャラクタ50Aに当たった場合であっても、キャラクタ50Aのヒットポイントが減少しないようにしてもよい。または、キャラクタ50Aが防御動作を行っていない場合に比べて、キャラクタ50Aのヒットポイントの減少量が少なくなるようにしてもよい。
(2)例えば、キャラクタ50Aのヒットポイントの代わりに、キャラクタ50Aが受けたダメージの累計を示すダメージポイントが記憶されるようにしてもよい。なお、ヒットポイントは、キャラクタ50Aが攻撃を受けるごとに減少されるのに対し、ダメージポイントは、キャラクタ50Aが攻撃を受けるごとに増加される点でヒットポイントとは異なっている。同様に、キャラクタ50Bのヒットポイントの代わりに、キャラクタ50Bが受けたダメージの累計を示すダメージポイントが記憶されるようにしてもよい。
この場合、キャラクタ50Bのダメージポイントが「第1パラメータ」に相当し、また、キャラクタ50Aのダメージポイントが「第2パラメータ」に相当する。そして、判定部63は、キャラクタ50Bのダメージポイントの値が上限値(所定値;例えば100)になったか否かを判定する。同様に、判定部63は、キャラクタ50Aのダメージポイントの値が上限値(所定値)になったか否かを判定する。
また、キャラクタ50Aのダメージポイントの値が上限値になっておらず、かつ、キャラクタ50Bのダメージポイントの値が上限値になった場合、対戦結果決定部64はプレイヤAが勝利したと決定する。同様に、キャラクタ50Bのダメージポイントの値が上限値になっておらず、かつ、キャラクタ50Aのダメージポイントの値が上限値になった場合、対戦結果決定部64はプレイヤBが勝利したと決定する。
また、この場合、第1更新部62Aは、初期期間内において、「キャラクタ50Bのダメージポイントの値と上記の上限値(例えば100)との間の差(絶対値)がキャラクタ50Aのダメージポイントの値と上記の上限値との間の差(絶対値)よりも小さく、かつ、キャラクタ50Aのダメージポイントの値とキャラクタ50Bのダメージポイントの値との間の差(絶対値)が基準値以上であるような状態」(上記の状態A)になったか否かを判定する。
そして、初期期間内において上記の状態Aになったと判定された場合、第1更新部62Aは、特定の攻撃動作(カウンター攻撃)以外の攻撃動作のためのゲーム操作をプレイヤAが行った場合におけるキャラクタ50Bのダメージポイントの更新(増加)を制限する。
同様に、第2更新部62Bは、初期期間内において、「キャラクタ50Aのダメージポイントの値と上記の上限値(例えば100)との間の差(絶対値)がキャラクタ50Bのダメージポイントの値と上記の上限値との間の差(絶対値)よりも小さく、かつ、キャラクタ50Aのダメージポイントの値とキャラクタ50Bのダメージポイントの値との間の差(絶対値)が基準値以上であるような状態」(上記の状態B)になったか否かを判定する。
そして、初期期間内において上記の状態Bになったと判定された場合、第2更新部62Bは、特定の攻撃動作(カウンター攻撃)以外の攻撃動作のためのゲーム操作をプレイヤBが行った場合におけるキャラクタ50Aのダメージポイントの更新(増加)を制限する。
(3)例えば、プレイヤAの技量がプレイヤBの技量よりも大きく劣る場合に限って、プレイヤAが何もできないまま対戦が終了してしまうことがないように図るようにしてもよい。同様に、プレイヤBの技量がプレイヤAの技量よりも大きく劣る場合に限って、プレイヤBが何もできないまま対戦が終了してしまうことがないように図るようにしてもよい。
すなわち、第1更新部62Aは、下記のすべての条件が満足された場合に限って、特定のゲーム操作(カウンター攻撃のためのゲーム操作)以外のゲーム操作をプレイヤAが行った場合における第1パラメータ(キャラクタ50Bのヒットポイント)の更新を制限するようにしてもよい。
・プレイヤBの技量がプレイヤAの技量よりも低い。
・プレイヤA,Bの間の技量の差が基準差以上である。
・初期期間内において上記の状態Aになった。
同様に、第2更新部62Bは、下記のすべての条件が満足された場合に限って、特定のゲーム操作(カウンター攻撃のためのゲーム操作)以外のゲーム操作をプレイヤBが行った場合における第2パラメータ(キャラクタ50Aのヒットポイント)の更新を制限するようにしてもよい。
・プレイヤAの技量がプレイヤBの技量よりも低い。
・プレイヤA,Bの間の技量の差が基準差以上である。
・初期期間内において上記の状態Bになった。
図13及び図14は、この形態におけるゲームシステム10で実行される処理の一例について示すフロー図である。図13及び図14に示す処理は図10に示した処理の代わりに実行される。なお、図13及び図14において、ステップS201〜S212は図10のステップS201〜S212と同じである。
図13に示すように、ステップS202の処理が実行された後、制御部31(更新部62)は、プレイヤA,Bのゲームの技量に関する情報を取得する(S301)。このステップ301では、例えば、プレイヤAの過去の戦績とプレイヤBの過去の戦績とに基づいて、プレイヤA,Bのゲームの技量に関する情報が取得される。
この形態では、例えば、図15に示すような戦績データがゲーム管理装置20の補助記憶部23に記憶される。図15に示す戦績データは各プレイヤの過去の戦績を示すデータである。図15に示す戦績データは「プレイヤID」、「レベル」、及び「戦績」フィールドを含んでいる。「プレイヤID」フィールドには、プレイヤを一意に識別するための識別情報(プレイヤID)が格納される。「レベル」フィールドには、プレイヤの技量の高さを示すレベルが格納される。プレイヤのレベルはプレイヤの過去の戦績に基づいて設定される。例えば、プレイヤの勝利回数が多くなると(又は、プレイヤの勝率が高くなると)、プレイヤのレベルが高くなる。「戦績」フィールドには、プレイヤの過去の戦績が格納される。
ステップS301において、例えば、制御部31は、戦績データに保持されたプレイヤA,Bのレベルを取得する。なお、制御部31は、プレイヤA,Bの勝利回数又は勝率を取得するようにしてもよい。ステップS301の処理が実行された後、制御部31は、プレイヤBの技量がプレイヤAの技量よりも低く、かつ、プレイヤA,Bの間の技量の差が基準差以上であるか否かを判定する。
すなわち、まず、制御部31(第1更新部62A)は、プレイヤBの技量がプレイヤAの技量よりも低いか否かを判定する(S302)。例えば、制御部31は、プレイヤBのレベルがプレイヤAのレベルよりも低いか否かを判定する。そして、プレイヤBの技量がプレイヤAの技量よりも低いと判定された場合、制御部31(第1更新部62A)は、プレイヤA,Bの間の技量の差が基準差以上であるか否かを判定する(S303)。例えば、制御部31は、プレイヤA,Bとの間のレベルの差(絶対値)が基準値以上であるか否かを判定する。この場合の「基準値」は、プレイヤA,Bの間のレベルの差が大きいか否かを判定するために設定されるため、「基準値」は比較的大きい値に設定される。
プレイヤBの技量がプレイヤAの技量よりも低いと判定され、かつ、プレイヤA,Bの間の技量の差が基準差以上であると判定された場合、制御部31はステップS203の処理を実行する。
一方、ステップ302においてプレイヤBの技量がプレイヤAの技量よりも低くないと判定された場合、又は、ステップS303においてプレイヤA,Bの間の技量の差が基準差以上でないと判定された場合、制御部31はステップS203〜S207の処理を実行することなく、図14のステップS304の処理を実行する。
この場合、キャラクタ50Aの制限フラグが「1」に更新されずに、「0」のままになる。このため、キャラクタ50Aのいずれかの攻撃がキャラクタ50Bに当たれば、キャラクタ50Bのヒットポイントが更新されるようになる(図11のステップS213〜S215参照)。この場合、プレイヤBが何もできないまま対戦が終了してしまうことがないように担保されなくなる。
なお、ステップS207の処理が実行された場合にもステップ304の処理が実行される。また、ステップS203〜S206のいずれかにおける判定結果が「偽」(N)である場合にも、ステップS304の処理が実行される。
図14に示すように、ステップS304において、制御部31は、プレイヤAの技量がプレイヤBの技量よりも低いか否かを判定する。このステップS304の処理はステップS302の処理と同様にして実行される。そして、プレイヤAの技量がプレイヤBの技量よりも低いと判定された場合、制御部31は、プレイヤA,Bの間の技量の差が基準差以上であるか否かを判定する(S305)。ステップS305の処理はステップS303の処理と同様にして実行される。
プレイヤAの技量がプレイヤBの技量よりも低いと判定され、かつ、プレイヤA,Bの間の技量の差が基準差以上であると判定された場合、制御部31はステップS208の処理を実行する。
一方、ステップ304においてプレイヤAの技量がプレイヤBの技量よりも低くないと判定された場合、又は、ステップS305においてプレイヤA,Bの間の技量の差が基準差以上でないと判定された場合、制御部31はステップS208〜S212の処理を実行することなく、図11のステップS213の処理を実行する。
この場合、キャラクタ50Bの制限フラグが「1」に更新されずに、「0」のままになる。このため、キャラクタ50Bのいずれかの攻撃がキャラクタ50Aに当たれば、キャラクタ50Aのヒットポイントが更新されるようになる(図11のステップS218〜S220参照)。この場合、プレイヤAが何もできないまま対戦が終了してしまうことがないように担保されなくなる。
なお、ステップS212の処理が実行された場合にもステップS213の処理が実行される。さらに、ステップS208〜S211のいずれかのステップにおける判定結果が「偽」(N)である場合にも、ステップS213の処理が実行される。
プレイヤA,Bのゲームの技量に大きな差がない場合、プレイヤA,Bが何もできないまま対戦が終了してしまわないように担保する必要性は低い。この点、以上に説明した形態によれば、プレイヤAの技量がプレイヤBの技量よりも大きく劣る場合に限って、プレイヤAが何もできないまま対戦が終了してしまわないように図られるようになる。同様に、プレイヤBの技量がプレイヤAの技量よりも大きく劣る場合に限って、プレイヤBが何もできないまま対戦が終了してしまわないように図られるようになる。
(4)例えば、以上に説明した実施形態では、キャラクタ50Bのヒットポイントを減らすことが可能な攻撃が特定の攻撃(カウンター攻撃)に制限されるようになった場合、対戦が終了するまで、その制限が継続するようになっていた。しかしながら、所与の制限期間が経過した後に、上記の制限が解除されるようにしてもよい。
つまり、第1更新部62Aは、特定のゲーム操作(カウンター攻撃のためのゲーム操作)以外のゲーム操作をプレイヤAが行った場合における第1パラメータ(キャラクタ50Bのヒットポイント)の更新を制限する場合、該制限を所与の制限期間において実行するようにしてもよい。
例えば、図10のステップS207において、キャラクタ50Aの制限フラグが「1」に更新された後、制御部31は所与の制限期間(例えば30秒間)が経過したか否かを監視するようにしてもよい。そして、制限期間が経過した場合、制御部31はキャラクタ50Aの制限フラグを「0」に戻すようにしてもよい。
なお、第1更新部62Aは、対戦が開始されてから上記の状態Aになるまでに経過した時間の長さに基づいて、上記の制限期間の長さを設定するようにしてもよい。例えば図16に示すような対応関係に基づいて、第1更新部62Aは制限期間の長さを設定するようにしてもよい。
図16は、対戦が開始されてから上記の状態Aになるまでの経過時間(t)と、制限期間の長さと、の対応関係の一例を示す図である。図16に示す対応関係では、経過時間(t)が短いほど、制限期間の長さが長くなっている。一般的に、プレイヤA,Bの間の技量の差が大きいほど、経過時間(t)は短くなりやすい。この点、図16に示す対応関係では、プレイヤA,Bの技量の差が大きいほど、制限期間(すなわち、技量が低いプレイヤが有利に攻撃を行える期間)が長くなるように図られている。
なお、キャラクタ50Aのヒットポイントを減らすことが可能な攻撃が特定の攻撃(カウンター攻撃)に制限されるようになった場合においても、所与の制限期間が経過した後に、上記の制限が解除されるようにしてもよい。
つまり、第2更新部62Bは、特定のゲーム操作(カウンター攻撃のためのゲーム操作)以外のゲーム操作をプレイヤBが行った場合における第2パラメータ(キャラクタ50Aのヒットポイント)の更新を制限する場合、該制限を所与の制限期間において実行するようにしてもよい。また、第1更新部62Aと同様、第2更新部62Bも、対戦が開始されてから上記の状態Bになるまでに経過した時間の長さに基づいて、上記の制限期間の長さを設定するようにしてもよい。
(5)例えば、キャラクタ50Bのヒットポイントを減らすことが可能な攻撃が特定の攻撃(カウンター攻撃)に制限されるようになった場合、該制限が、キャラクタ50Aのヒットポイントの値が基準範囲内の値になるまで実行されるようにしてもよい。すなわち、該制限は、キャラクタ50Aのヒットポイントの値が基準範囲内の値になった場合に解除されるようにしてもよい。なお、この場合の「基準範囲」としては、零に近い数値範囲が設定される。
つまり、第1更新部62Aは、特定のゲーム操作(カウンター攻撃のためのゲーム操作)以外のゲーム操作をプレイヤAが行った場合における第1パラメータ(キャラクタ50Bのヒットポイント)の更新を制限する場合、該制限を、第2パラメータ(キャラクタ50Aのヒットポイント)の値が基準範囲内の値になるまで実行するようにしてもよい。
例えば、図10のステップS207において、キャラクタ50Aの制限フラグが「1」に更新された後、制御部31(第1更新部62A)は、キャラクタ50Aのヒットポイントの値が基準範囲内の値になったか否かを監視するようにしてもよい。そして、キャラクタ50Aのヒットポイントの値が基準範囲内の値になった場合、制御部31(第1更新部62A)は、キャラクタ50Aの制限フラグを「0」に戻すようにしてもよい。
なお、第1更新部62Aは、対戦が開始されてから上記の状態Aになるまでに経過した時間の長さに基づいて、上記の基準範囲を設定するようにしてもよい。例えば図17に示すような対応関係に基づいて、第1更新部62Aは基準範囲の大きさを設定するようにしてもよい。
図17は、対戦が開始されてから上記の状態Aになるまでの経過時間(t)と、基準範囲と、の対応関係の一例を示す図である。図17に示す対応関係では、経過時間(t)が短いほど、基準範囲の上限値が小さくなっている。なお、一般的に、プレイヤA,Bの間の技量の差が大きいほど、経過時間(t)は短くなりやすい。また、所定値(零)になるまで減少されるヒットポイントの場合、基準範囲の上限値が小さくなるほど、上記の制限が実行される期間(すなわち、技量が低いプレイヤが有利に攻撃を行える期間)が長くなる。このため、図17に示す対応関係では、プレイヤA,Bの間の技量の差が大きいほど、上記の制限が実行される期間(すなわち、技量が低いプレイヤが有利に攻撃を行える期間)が長くなるように図られている。
なお、所定の上限値になるまで増加されるダメージポイントがヒットポイントの代わりに用いられる場合、図17に示す対応関係は、経過時間(t)が短いほど、基準範囲の下限値が大きくなるように設定される。このようにすれば、プレイヤA,Bの間の技量の差が大きいほど、上記の制限が実行される期間(すなわち、技量の低いプレイヤが有利に攻撃を行える期間)が長くなるようになる。
また、キャラクタ50Aのヒットポイントを減らすことが可能な攻撃が特定の攻撃(カウンター攻撃)に制限されるようになった場合においても、キャラクタ50Bのヒットポイントの値が基準範囲内の値になったタイミングで、上記の制限が解除されるようにしてもよい。
つまり、第2更新部62Bは、特定のゲーム操作(カウンター攻撃のためのゲーム操作)以外のゲーム操作をプレイヤBが行った場合における第2パラメータ(キャラクタ50Aのヒットポイント)の更新を制限する場合、該制限を、第1パラメータ(キャラクタ50Bのヒットポイント)の値が基準範囲内の値になるまで実行するようにしてもよい。また、第1更新部62Aと同様、第2更新部62Bも、対戦が開始されてから上記の状態Bになるまでに経過した時間の長さに基づいて、上記の基準範囲を設定するようにしてもよい。
(6)例えば、キャラクタ50A(又はキャラクタ50B)のヒットポイントを減らすことが可能な攻撃を特定の攻撃に制限する場合、該特定の攻撃を動的に設定するようにしてもよい。
つまり、第1更新部62Aは、特定のゲーム操作以外のゲーム操作をプレイヤAが行った場合における第1パラメータ(キャラクタ50Bのヒットポイント)の更新を制限する場合、上記の「特定のゲーム操作」を、対戦が開始されてから上記の状態Aになるまでに経過した時間の長さに基づいて設定するようにしてもよい。例えば図18に示すような対応関係に基づいて、第1更新部62Aは上記の「特定のゲーム操作」を設定するようにしてもよい。
図18は、対戦が開始されてから上記の状態Aになるまでの経過時間(t)と、特定の攻撃動作と、の対応関係の一例を示す図である。図18に示す対応関係によれば、経過時間(t)が比較的長い場合(5秒≦t≦10秒)には、対戦相手のキャラクタのヒットポイントを減らすことが可能な攻撃動作として、特殊技が設定される。すなわち、特殊技のためのゲーム操作が上記の「特定のゲーム操作」として設定される。一方、経過時間(t)が比較的短い場合(0≦t<5秒)には、対戦相手のキャラクタのヒットポイントを減らすことが可能な攻撃動作として、特殊技よりもゲーム操作の難易度が高いカウンター攻撃が設定される。すなわち、カウンター攻撃のためのゲーム操作が上記の「特定のゲーム操作」として設定され、より難易度の高いゲーム操作が上記の「特定のゲーム操作」として設定される。
なお、一般的に、プレイヤA,Bの間のゲームの技量の差が大きいほど、経過時間(t)は短くなりやすい。このため、図18に示す対応関係では、プレイヤA,Bの間のゲームの技量の差が大きいほど、対戦相手のキャラクタのヒットポイントを減らすためのゲーム操作として、より難易度の高いゲーム操作が設定されるようになっている。
なお、第2更新部62Bも、特定のゲーム操作以外のゲーム操作をプレイヤAが行った場合における第1パラメータ(キャラクタ50Bのヒットポイント)の更新を制限する場合、上記の「特定のゲーム操作」を第1更新部62Aと同様に設定するようにしてもよい。
(7)例えば、以上では、ゲーム装置A,Bのいずれかがゲームサーバの役割を担うこととして説明したが、ゲーム装置A,Bとは別のサーバコンピュータがゲームサーバの役割を担うようにしてもよい。例えば、ゲーム管理装置20がゲームサーバの役割を担うようにしてもよい。または、ゲーム管理装置20とは別のサーバコンピュータがゲームサーバの役割を担うようにしてもよい。
この場合、下記に説明するようにして、ゲーム装置A,B間でゲーム状況データが共通化される。すなわち、この場合、最新のゲーム状況を示すゲーム状況データがゲームサーバの補助記憶部33に記憶される。また、そのゲーム状況データの複製がゲーム装置A,Bの主記憶部32にそれぞれ記憶される。
また、この場合、ゲーム装置A,Bは、それぞれ、操作データをゲームサーバに送信する。ゲームサーバは、ゲーム装置A,Bから受信した操作データに基づいて、ゲームサーバに記憶されるゲーム状況データを更新する。そして、ゲームサーバは、ゲーム状況データの更新内容を伝えるための更新データをゲーム装置A,Bに送信する。そして、ゲーム装置Aは、ゲームサーバから受信した更新データに基づいて、ゲーム装置Aに記憶されるゲーム状況データを更新し、更新後のゲーム状況データに基づいて、ゲーム装置Aの表示部37にゲーム画面を表示する。ゲーム装置Bについても同様である。
(8)例えば、ゲーム装置A,Bが操作データを相互に送信し合うようにしてもよい。この場合、ゲーム装置A,Bのいずれかにゲームサーバの役割を担わせる必要や、ゲームサーバの役割を担うためのサーバコンピュータを用意する必要がなくなる。
この場合、下記に説明するようにして、ゲーム装置A,Bでゲーム状況データが共通化される。すなわち、この場合、最新のゲーム状況を示すゲーム状況データが、それぞれ、ゲーム装置A,Bの主記憶部22に記憶される。また、ゲーム装置Aは、ゲーム装置Aで行われたゲーム操作に関する操作データをゲーム装置Bに送信する。同様に、ゲーム装置Bは、ゲーム装置Bで行われたゲーム操作に関する操作データをゲーム装置Aに送信する。
そして、ゲーム装置Aは、ゲーム装置Aで行われたゲーム操作に関する操作データと、ゲーム装置Bから受信した操作データと、に基づいて、ゲーム装置Aに記憶されるゲーム状況データを更新し、更新されたゲーム状況データに基づいて、ゲーム装置Aの表示部37にゲーム画面を表示させる。ゲーム装置Bについても同様である。
(9)例えば、ゲームシステム10はいわゆるネットワークゲームシステムでなくてもよく、一台のゲーム装置30によって実現されるようにしてもよい。すなわち、スタンドアロンのゲーム装置30においてプレイヤA,Bが通信ネットワークを介さずに対戦するような場合にも本発明は適用することができる。また、ゲームシステム10は、制御部と、記憶部と、複数の操作部と、該複数の操作部に対応する複数の表示部とを含むようなゲーム装置(例えば業務用ゲーム機)であってもよい。
(10)例えば、本発明は格闘ゲーム以外の対戦ゲームにも適用することができる。例えば、いわゆるFPS(First Person Shooting)ゲーム等にも本発明は適用することができる。すなわち、FPSゲームの場合においても、対戦が開始されてから比較的短い時間内においてプレイヤ間のヒットポイントの差が大きくなった場合、ヒットポイントが大きい方のプレイヤは、特定の攻撃(例えば、通常の攻撃よりも難易度の高い操作を要求される攻撃)でなければ、他方のプレイヤにダメージを与えることができなくなるようにすればよい。
また、例えば、対戦パズルゲームにも本発明は適用することができる。例えば、コナミデジタルエンタテインメント社の「ぱずるだま」のような対戦パズルゲームにも本発明は適用することができる。
例えば、対戦パズルゲームでは、プレイヤのフィールド(画面領域)内にブロックが次々に表示される。プレイヤは自らのフィールド内に表示されるブロックを他のブロックと隣接させて特定のパターンを形成することによってブロックを消去する。一方のプレイヤがブロックを消去した場合、他方のプレイヤのフィールド内に特殊ブロックが表示される。特殊ブロックは該特殊ブロックに隣接するブロックが消去された場合に限って消去されるブロックであり、プレイヤにとって厄介な存在となる。そして、一方のプレイヤのフィールド内において、互いに対向する一方の端側(例えば下側)から他方の端側(例えば上側)までブロックが積まれた状態になると、他方のプレイヤの勝利となる。
このような対戦パズルゲームにおいては、例えば、プレイヤA,Bの間の対戦が開始されてから比較的短い時間内において、プレイヤAのフィールド内に積まれたブロックから該フィールドの上端までの距離と、プレイヤBのフィールド内に積まれたブロックから該フィールドの上端までの距離との差が大きくなった場合、上記の距離が長い方のプレイヤは特殊ブロックを消去しなければ、他方のプレイヤのフィールドに特殊ブロックを表示させることができないようにすればよい。つまり、上記の距離が長い方のプレイヤが特殊ブロック以外のブロックを消去したとしても、他方のプレイヤのフィールドに特殊ブロックを表示させないようにすればよい。
なお、この場合、「プレイヤBのフィールド内に積まれたブロックから該フィールドの上端までの距離」が、第1更新部62Aによって更新される「第1パラメータ」に相当する。一方、「プレイヤAのフィールド内に積まれたブロックから該フィールドの上端までの距離」が、第2更新部62Bによって更新される「第2パラメータ」に相当する。そして、判定部63は、プレイヤAのフィールド内に積まれたブロックから該フィールドの上端までの距離と、プレイヤBのフィールド内に積まれたブロックから該フィールドの上端までの距離との少なくとも一方が零(所定値)になったか否かを判定することになる。さらに、特殊ブロック以外のブロックを消去する操作と特殊ブロックを消去する操作とが、第1更新部62Aにおける「複数の第1ゲーム操作」や第2更新部62Bにおける「複数の第2ゲーム操作」に相当する。そして、特殊ブロックを消去する操作が第1更新部62A及び第2更新部62Bにおける「特定のゲーム操作」に相当する。