(57)【特許請求の範囲】
【請求項１】
コンピュータを、キャラクタが移動体に対して所与の行為をするゲームを実行する手段、前記行為をした場面の再現画像を生成する手段として機能させるためのプログラムであって、
再現用の前記移動体に対する行為に基づく行為点を設定する行為点設定手段、
ゲーム実行中における前記移動体の所与の移動通過位置であり、前記行為に前後する２つの移動通過位置を特定点として設定する特定点設定手段、
前記行為点を経由するように、前記特定点設定手段が設定した特定点間の軌道を生成する軌道生成手段、
前記軌道生成手段により生成される軌道に基づいて前記移動体を移動させることにより、前記行為をした場面の再現画像を生成する再現画像生成手段、
として前記コンピュータを機能させるためのプログラム。
【請求項２】
コンピュータを、キャラクタが移動体に対して所与の行為をするゲームを実行する手段、前記行為をした場面の再現画像を生成する手段として機能させるためのプログラムであって、
再現用の前記移動体に対する行為に基づく行為点を設定する行為点設定手段、
ゲーム実行中における前記移動体の所与の移動通過位置を特定点として設定する特定点設定手段、
前記行為点と前記特定点とを結ぶ軌道を、ゲーム実行中における前記特定点の通過時と前記行為の時との時差相当情報に基づいて生成する軌道生成手段、
前記軌道生成手段により生成される軌道に基づいて前記移動体を移動させることにより、前記行為をした場面の再現画像を生成する再現画像生成手段、
として前記コンピュータを機能させるためのプログラム。
【請求項３】
請求項１に記載のプログラムであって、
前記軌道生成手段が、ゲーム実行中における前記特定点の通過時と前記行為の時との時差相当情報に基づいて軌道を生成する、
ように前記コンピュータを機能させるためのプログラム。
【請求項４】
コンピュータを、キャラクタが移動体に対して所与の行為をするゲームを実行する手段、前記行為をした場面の再現画像を生成する手段として機能させるためのプログラムであって、
ゲーム実行中において、所定の操作入力に基づいて前記移動体に対する行為の動作を操作キャラクタに実行させるとともに、前記操作入力のタイミングが所与のタイミングよりも遅れた場合には、前記行為の動作の一部を省略した動作を前記操作キャラクタに実行させる動作制御手段、
再現用の前記移動体に対する行為に基づく行為点を設定する行為点設定手段、
ゲーム実行中における前記移動体の所与の移動通過位置を特定点として設定する特定点設定手段、
前記行為点と前記特定点とを結ぶ軌道を生成する軌道生成手段、
前記軌道生成手段により生成される軌道に基づいて前記移動体を移動させることにより、前記行為をした場面の再現画像を生成する手段であり、前記動作制御手段により前記行為の動作の一部が省略されていた場合には、前記省略された部分を補った動作を前記操作キャラクタに実行させることにより前記行為をした場面の再現画像を生成する再現画像生成手段、
として前記コンピュータを機能させるためのプログラム。
【請求項５】
請求項１から３のいずれかに記載のプログラムであって、
ゲーム実行中において、所定の操作入力に基づいて前記移動体に対する行為の動作を操作キャラクタに実行させるとともに、前記操作入力のタイミングが所与のタイミングよりも遅れた場合には、前記行為の動作の一部を省略した動作を前記操作キャラクタに実行させる動作制御手段、として前記コンピュータを機能させるとともに、
前記再現画像生成手段が、前記動作制御手段により前記行為の動作の一部が省略されていた場合には、前記省略された部分を補った動作を前記操作キャラクタに実行させることにより前記行為をした場面の再現画像を生成する、ように前記コンピュータを機能させる、
ためのプログラム。
【請求項６】
コンピュータに、所定の操作入力に基づいて、被打撃物を打撃する打撃動作を操作キャラクタに実行させるためのプログラムであって、
前記操作入力のタイミングが所与のタイミングよりも遅れた場合には、前記打撃動作の一部を省略した打撃動作を前記操作キャラクタに実行させる動作制御手段、
ゲームの再現画像を生成する際、前記動作制御手段により前記打撃動作の一部が省略されていた場合には、前記省略された部分を補った打撃動作を前記操作キャラクタに実行させることにより前記打撃動作の再現画像を生成する再現画像生成手段、
として前記コンピュータを機能させるためのプログラム。
【請求項７】
請求項６に記載のプログラムであって、
前記再現画像生成手段が、前記動作制御手段により前記操作キャラクタに実行させた打撃動作を補間することにより、前記省略された部分を補った打撃動作を生成する、ように前記コンピュータを機能させるためのプログラム。
【請求項８】
請求項６または７に記載のプログラムであって、
前記再現画像生成手段が、前記動作制御手段が前記操作キャラクタに実行させた打撃動作の実行開始タイミングを変更するための情報を含むゲーム情報。
【請求項９】
請求項１から８のいずれかに記載のプログラムを記憶するコンピュータ読み取り可能な情報記憶媒体。
【請求項１０】
キャラクタが移動体に対して所与の行為をするゲームを実行する手段と、前記行為をした場面の再現画像を生成する手段とを備えるゲーム装置であって、
再現用の前記移動体に対する行為に基づく行為点を設定する行為点設定手段と、
ゲーム実行中における前記移動体の所与の移動通過位置であり、前記行為を前後する２つの移動通過位置を特定点として設定する特定点設定手段と、
前記行為点を経由するように、前記特定点設定手段が設定した特定点間の軌道を生成する軌道生成手段と、
前記軌道生成手段により生成される軌道に基づいて前記移動体を移動させることにより、前記行為をした場面の再現画像を生成する再現画像生成手段と、
を備えるゲーム装置。
【請求項１１】
キャラクタが移動体に対して所与の行為をするゲームを実行する手段と、前記行為をした場面の再現画像を生成する手段とを備えるゲーム装置であって、
再現用の前記移動体に対する行為に基づく行為点を設定する行為点設定手段と、
ゲーム実行中における前記移動体の所与の移動通過位置を特定点として設定する特定点設定手段と、
前記行為点と前記特定点とを結ぶ軌道を、ゲーム実行中における前記特定点の通過時と前記行為の時との時差相当情報に基づいて生成する軌道生成手段と、
前記軌道生成手段により生成される軌道に基づいて前記移動体を移動させることにより、前記行為をした場面の再現画像を生成する再現画像生成手段と、
を備えるゲーム装置。
【請求項１２】
キャラクタが移動体に対して所与の行為をするゲームを実行する手段と、前記行為をした場面の再現画像を生成する手段とを備えるゲーム装置であって、
ゲーム実行中において、所定の操作入力に基づいて前記移動体に対する行為の動作を操作キャラクタに実行させるとともに、前記操作入力のタイミングが所与のタイミングよりも遅れた場合には、前記行為の動作の一部を省略した動作を前記操作キャラクタに実行させる動作制御手段と、
再現用の前記移動体に対する行為に基づく行為点を設定する行為点設定手段と、
ゲーム実行中における前記移動体の所与の移動通過位置を特定点として設定する特定点設定手段と、
前記行為点と前記特定点とを結ぶ軌道を生成する軌道生成手段と、
前記軌道生成手段により生成される軌道に基づいて前記移動体を移動させることにより、前記行為をした場面の再現画像を生成する手段であり、前記動作制御手段により前記行為の動作の一部が省略されていた場合には、前記省略された部分を補った動作を前記操作キャラクタに実行させることにより前記行為をした場面の再現画像を生成する再現画像生成手段と、
を備えるゲーム装置。
【請求項１３】
所定の操作入力に基づいて、被打撃物を打撃する打撃動作を操作キャラクタに実行させるゲーム装置であって、
前記操作入力のタイミングが所与のタイミングよりも遅れた場合には、前記打撃動作の一部を省略した打撃動作を前記操作キャラクタに実行させる動作制御手段と、
ゲームの再現画像を生成する際、前記動作制御手段により前記打撃動作の一部が省略されていた場合には、前記省略された部分を補った打撃動作を前記操作キャラクタに実行させることにより前記打撃動作の再現画像を生成する再現画像生成手段と、
を備えるゲーム装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータを、被打撃物を打撃するゲームを実行する手段、被打撃物を打撃した場面の再現画像（リプレイ画像）を生成する手段として機能させるためのプログラム等に関するものである。
【０００２】
【従来の技術】
近年では、プレーヤの入力指示に応じてゲーム画像を生成して、ディスプレイに表示するタイプのゲーム装置が多く開発され、中でも現実性を追及したゲーム画像を生成する技術の開発が注目を集めている。係るゲームでは、３次元の仮想空間にオブジェクトを配置し、プレーヤの入力指示や所定のルール・シナリオに基づいて各オブジェクトの位置や向きを決定して、１フレーム毎の画像を生成する。
【０００３】
こういった類いのゲームには、実際さながらの球技ゲームをプレーヤに擬似体験させるタイプのものがある。例えば、テニスゲームでは、プレーヤは、コントローラによって特定のキャラクタの移動を指示したり、ラケットによりボールを打撃する指示をしたりして、テニスのゲームを楽しむ。
【０００４】
【発明が解決しようとする課題】
上述の球技ゲームでは、現実のテレビ中継のように、ゲーム中の画面についてリプレイ表示をすることがある。ゲームの終了後やゲーム進行中における所与のタイミングに、プレイ中のキャラクタの挙動やボールの動きについて注目に値する部分をリプレイする。例えば、上記テニスゲームであれば、プレーヤにより操作されるキャラクタが見事な打撃を実行させた場合に、その打撃シーンをリプレイすることがある。
【０００５】
ところで、一般的な球技ゲームでは、キャラクタがボールを打ったり叩いたりすることでゲームが進展するわけだが、その際、ゲーム装置は、打具（例えば、テニスならラケット、野球ならバット、サッカーなら足といったもの）とボールの接触判定を行うことで打撃の有無を決定している。この接触判定に際して、打具とボールの接触確率が高くなるような処置を施しているものが多い。これは、キャラクタにボールを打撃させること自体がプレーヤにとって困難とすれば、ゲームが一向に進展せず、面白くなくなるからである。
【０００６】
接触確率を高くする方法の１つに、打具の接触可能な面積を画面上に表示する打具の大きさよりも大きくするといった方法がある。画面上に表示する打具のモデルと、接触を判定するための打具の面積（あるいは体積）を別途独立して設けた場合である。この方法によれば、打具の大きさを不自然に拡張することなく、接触確率を高めることができる。しかしこの場合、画面上ではボールと打具が接触していないにもかかわらず、接触判定用の体積とボールとが接触したために、ある瞬間にボールが空中で跳ね返るような画像を表示してしまう。この矛盾は、ゲームの進行中にはプレーヤにとって気にならない場合が多い。ボールやキャラクタの移動・動作速度が実空間におけるボールや人の速度と同等に高速であるためと、打撃に伴ってゲームが順次展開されることでプレーヤの気がまぎれるためである。
【０００７】
しかし、この打撃シーンをリプレイした場合には、プレーヤの注意はその打撃動作に集中されるため、ゲーム実行中と比較してボールと打具との接触有無が気になりやすい。また、リプレイ中ではスローモーションで表示したり、注目部分を拡大して表示する場合があるが、これらの場合には、打具とボールの接触有無がより顕著となってしまう。
【０００８】
また、ボールと打具との接触確率を高くする方法に、時間的な許容範囲を広く設定する方法がある。多くの球技ゲームでは、仮想空間を移動するボールをプレーヤの入力指示に応じてキャラクタに打撃させるわけだが、その際の入力タイミングがボールの進行状況と厳密に一致しなくても、多少のずれを許容する。
【０００９】
例えば、所定の平面（以下、判定面という）上でボールとラケットとのタイミングを判定するものとする。この判定面は、キャラクタの中心座標を含み、ボールの進行方向に対して垂直に、且つ、鉛直方向と平行に配置される。係る場合に、ボールが判定面を通過する瞬間と、打具が判定面を通過する瞬間とが一致するとき、ボールと打具とに接触する可能性が発生する。しかし、プレーヤがディスプレイに表示された２次元の画像を見ながら、３次元の仮想空間に置かれたキャラクタとボールの位置関係や速度を正確に把握して打撃指示を入力することは時に困難なものである。
【００１０】
そこで、打撃可能な時間範囲を広げて、多少の時間のずれについては打撃したものとみなす。具体的には、打撃開始の指示入力に最適な時刻がｔ0である場合に、ｔ0−ε≦ｔ≦ｔ0＋εの範囲内に打撃指示が入力されればタイミングが一致したものとする。
【００１１】
さて、このように時間的な許容範囲を広げると、ボールの移動と、キャラクタの打撃動作との間に時間的なずれが生じる。例えば、最適時刻からの入力タイミングのずれによらずにキャラクタに一定の打撃動作を実行させれば、打撃判定によりボールが跳ね返る瞬間とキャラクタの動作タイミングがあわず、奇妙な画像を生成することとなる。例えば、テニスゲームでは、キャラクタがボールを打撃する際にラケットを十分に後に引いた状態から打撃動作を行うが、入力指示が遅れた場合には、ラケットを引いた状態から打撃を行っていたのではボールの動きに追いつかない。
【００１２】
そこで、多くの場合には、キャラクタの打撃動作がボールの跳ね返る瞬間に間に合うように、打撃動作の一部を省略させている。具体的には、入力指示の遅れ度合に応じて省略する量（部分）を決定して、ボールの跳ね返りに間に合うようにキャラクタに打撃動作を行わせる。例えば、上記テニスゲームでは、打撃指示が入力された瞬間の遅れ度合に応じてラケットを最大に引いた状態からの打撃動作を省略し、打撃する直前の数フレーム前から動作を行わせる。
【００１３】
このような動作を省略する処置も、ゲームの実行中においては、それほど気にならない。しかし、リプレイ中に動作を省略させた画像を表示すると、いかにも機械的であり、現実味に欠けた印象を与えることとなる。
【００１４】
本発明は、上記事項に鑑みてなされたものであり、説得力のあるリプレイ画像を生成することを目的としたものである。
【００１５】
【課題を解決するための手段】
以上の課題を解決するための第１の発明は、プロセッサによる演算・制御により、装置（例えば、図１に示すゲーム装置１）に対して、キャラクタが移動体（例えば、本実施の形態におけるボール）に対する所与の行為をするゲームを実行する手段と、前記行為をした場面の再現画像（リプレイ画像）を生成する手段とを機能させるためのゲーム情報であって、再現用の前記移動体に対する行為に基づく行為点（例えば、本実施の形態における打撃時のラケットの座標）を設定する行為点設定手段（例えば、図１０に示す軌道生成部２２６）と、ゲーム実行中における前記移動体の所与の移動通過位置を特定点として設定する特定点設定手段（例えば、図１０に示すボール制御部２２２）と、前記行為点と前記特定点とを結ぶ軌道を生成する軌道生成手段（例えば、図１０に示す軌道生成部２２６）と、前記軌道生成手段により生成される軌道に基づいて前記移動体を移動させることにより、前記行為をした場面の再現画像を生成する再現画像生成手段（例えば、図１０に示す画像生成部２４０）と、を機能させるための情報を含むゲーム情報である。
【００１６】
また、第１０の発明は、キャラクタが移動体に対して所与の行為をするゲームを実行する手段と、前記行為をした場面の再現画像を生成する手段とを備えるゲーム装置であって、再現用の前記移動体に対する行為に基づく行為点を設定する行為点設定手段と、ゲーム実行中における前記移動体の所与の移動通過位置を特定点として設定する特定点設定手段と、前記行為点と前記特定点とを結ぶ軌道を生成する軌道生成手段と、前記軌道生成手段により生成される軌道に基づいて前記移動体を移動させることにより、前記行為をした場面の再現画像を生成する再現画像生成手段と、を備えるゲーム装置である。
【００１７】
ここで、移動体に対する行為とは、例えば、球技ゲームであれば、ボールに対する行為が該当する。例えば、テニスゲームであれば、ラケットでボール（移動体）を打撃する行為、野球ゲームであれば、バットでボールを打撃する行為やボールをキャッチする行為、サッカーゲームであれば、ボールを蹴る行為、バレーボールゲームであれば、ボールをトスしたりアタックしたりレシーブしたりする行為、などを含む意である。また、ここでのゲーム実行中とは、例えば、外部から入力される操作信号に基づいてゲームを展開させている最中を含むものである。
【００１８】
この第１または第１０の発明によれば、再現画像を生成するために、行為点を設定すると共に、ゲーム実行中に移動体が通過した所与の位置を特定点として設定する。そして、設定した行為点と特定点とを結ぶ道筋を新たに生成することによって、再現画像用の被打撃物の軌道を決定する。したがって、ゲーム実行中における移動体の軌道にかかわらず、再現画像を表示する際には、移動体が特定点から行為点に向かうように、もしくは、移動体が行為点から特定点へと移動するように、移動体の軌道を生成することができる。
【００１９】
例えば、テニスゲームにおいて、行為点を、打撃時におけるラケットの位置とし、特定点を、ゲーム実行中のボールの軌道における任意の点（ただし、打撃時における位置を除く）に設定する。そして、この設定した行為点と特定点とを結ぶように軌道を生成すれば、再生画像を表示する際には、必ずボールがラケットに衝突することとなる。このため、上述のようにボールとラケットの接触判定を行う処理に時空間的な許容範囲を設定した場合であっても、再現画像上では必ずボールがラケットと接触するように表現することができる。
【００２０】
また、第２の発明として、第１の発明のゲーム情報において、前記特定点設定手段が、前記移動体が所与のオブジェクトと接触した位置を特定点として設定するための情報を含むゲーム情報を構成することとしてもよい。
【００２１】
この第２の発明によれば、移動体がオブジェクトと接触した位置を特定点として設定する。例えば、ゲーム画像を見る人（プレーヤ）は、他のオブジェクトと移動体との位置関係を目安に移動体の軌道を把握する場合が多い。その目安となる最たる位置は、移動体が他の物体と接触したときの位置である。このため、移動体が他の物体と接触した際の位置を特定点とすれば、係るゲームで遊ぶプレーヤに対して違和感を与えることなく、移動体の軌道を変更させることができる。
【００２２】
また、球技ゲームでは、ボールが球技場におけるラインを超したり、ボールがネットやゴール、コート（地面）に接触したりすることによって、ゲームの勝敗がわかれる場合がある。係る場合において、リプレイによりボールが確かにライン上にバウンドした旨や、ボールがネットに跳ね返った旨などを確認することがある。すなわち、再現画像を表示する目的の１つとして、プレーヤが判定を確かめることが挙げられる。したがって、請求項２に記載の発明のように、ボールと他の物体との接触位置を特定点として選定すれば、再現画像の存在価値を下げることなく、尤らしくボールの軌道を生成しなおすことができる。
【００２３】
なお、行為の場面の再現画像を生成する際には、行為前の移動体の移動状況と、行為後の移動体の移動状況との両方を表示する場合がある。係る場合には、行為前の特定点と行為後の特定点の少なくとも２つを設定し、一方の特定点から他方の特定点へと行為点を経由するように軌道を生成すれば、移動体が矛盾なく移動する様子を再現させることができる。
【００２４】
すなわち、第３の発明として、第１又は第２の発明のゲーム情報であって、前記特定点設定手段が、前記行為に前後する２つの移動通過位置を、特定点として設定するための情報と、前記軌道生成手段が、前記行為点を経由するように、前記特定点設定手段が設定した特定点間の軌道を生成するための情報と、を含むゲーム情報を構成することとしてもよい。
【００２５】
また、第４の発明として、第１から第３のいずれかの発明のゲーム情報であって、ゲーム実行中における前記特定点の通過時と前記行為の時との時差相当情報に基づいて、前記軌道生成手段が軌道を生成するための情報を含むゲーム情報を構成することとしてもよい。
【００２６】
この第４の発明によれば、ゲーム実行中に移動体が特定点を通過した際の時刻と、移動体に対する行為をした時刻との時差相当量に基づいて、再現画像を生成するための被打撃物の軌道を生成する。
【００２７】
例えば、行為時における移動体の位置と設定した行為点との位置の差を、時差相当量により割ることによって速度を求め、ゲーム実行中に移動体が特定点を通過した際の速度に加算することによって、被打撃物の軌道を生成することができる。あるいは、移動体の行為時における位置と行為点との位置の差と、時差相当量と、に基づいて加速度を求めて、ゲーム実行中における被打撃物の速度と、算出した加速度とに基づいて軌道を生成することも可能となる。
【００２８】
また、第５の発明として、第１から第４のいずれかの発明のゲーム情報であって、ゲーム実行中において、所定の操作入力に基づいて前記移動体に対する行為の動作を操作キャラクタに実行させるとともに、前記操作入力のタイミングが所与のタイミングよりも遅れた場合には、前記行為の動作の一部を省略した動作を前記操作キャラクタに実行させる動作制御手段（例えば、図１０に示すキャラクタ制御部２２４）、を前記装置に機能させるための情報と、再現画像を生成する際、前記動作制御手段により前記行為の動作の一部が省略されていた場合には、前記再現画像生成手段が、前記省略された部分を補った動作を前記操作キャラクタに実行させることにより前記行為をした場面の再現画像を生成するための情報と、を含むゲーム情報を構成することとしてもよい。
【００２９】
第６の発明は、プロセッサによる演算・制御により、装置に対して、所定の操作入力に基づいて、被打撃物を打撃する打撃動作を操作キャラクタに実行させるためのゲーム情報であって、前記操作入力のタイミングが所与のタイミングよりも遅れた場合には、前記打撃動作の一部を省略した打撃動作を前記操作キャラクタに実行させる動作制御手段（例えば、図１０に示すキャラクタ制御部２２４）と、ゲームの再現画像を生成する際、前記動作制御手段により前記打撃動作の一部が省略されていた場合には、前記省略された部分を補った打撃動作を前記操作キャラクタに実行させることにより前記打撃動作の再現画像を生成する再現画像生成手段（例えば、図１０に示す動作再現部２２８）と、を前記装置に機能させるための情報を含むゲーム情報である。
【００３０】
ここで、操作キャラクタとは、操作入力に基づいて動作を行わせるキャラクタを含む意である。
この第５または第６の発明によれば、ゲーム実行中において、プレーヤの入力指示が遅れたために、打撃動作を一部省略したような場合であっても、再現画像を生成する際には、打撃動作について省略部分を補った打撃動作を操作キャラクタに実現させる。したがって、再現画像をよりリアルに演出させることができる。
【００３１】
また、第７の発明として、第５または第６の発明のゲーム情報において、前記再現画像生成手段が、前記動作制御手段が前記操作キャラクタに実行させた打撃動作を補間することにより、前記省略された部分を補った打撃動作を生成するための情報を含むゲーム情報を構成することとしてもよい。
【００３２】
この第７の発明によれば、ゲーム実行中に省略された動作を、再現画像を生成する際には、動作を補間することにより、省略された部分を補った打撃動作を生成する。例えば、再現画像を表示する最初の操作キャラクタの姿勢から、打撃をする直前の操作キャラクタの姿勢へと、動作を補間して打撃動作の省略部分を補う。したがって、再現画像の開始時の姿勢から、打撃をするまでの動作を滑らかに表現させることができる。
【００３３】
また、第８の発明として、第５から第７のいずれかの発明のゲーム情報であって、前記再現画像生成手段が、前記動作制御手段が前記操作キャラクタに実行させた打撃動作の実行開始タイミングを変更するための情報を含むゲーム情報を構成することとしてもよい。
【００３４】
この第８の発明によれば、再現画像を生成する際、打撃動作の実行開始タイミングを変更する。すなわち、再現画像を生成する際、ゲーム実行中における打撃動作の開始時とは異なる姿勢から打撃動作を開始させる。したがって、操作キャラクタの打撃動作の再生速度を無闇に速めたり、伸ばしたりして全体の速度バランスをくずすことなく、より自然に打撃動作を再現させることができる。
【００３５】
また、第９の発明として、第１から第８のいずれかの発明のゲーム情報を記憶する情報記憶媒体を構成することとしてもよいことは勿論である。
【００３６】
【発明の実施の形態】
以下に、本発明の好適な実施形態について図面を参照して説明する。なお、以下では、業務用のゲーム装置によりシングルのテニスゲームを実行する場合を例に説明するが、各請求項記載の発明の適用については、以下の実施例に限定する必要はない。
【００３７】
図１は、業務用のゲーム装置の一例を示す図である。同図によれば、ゲーム装置１の筐体１０は、ディスプレイ１２、操作バー１４、操作キー１６、スピーカ１８、を備える。また、ゲームプログラムや、本発明を実現するために必要なプログラムやデータ等のゲーム情報は、筐体１０に内蔵されたシステム基板２０上の情報記憶媒体であるメモリ２２に格納されている。また、システム基板２０には、ＣＰＵ、画像生成ＩＣ、音生成ＩＣ等が実装されている。プレーヤは、ディスプレイ１２に映し出される画像を見て、スピーカ１８から出力される音を聞きながら、操作バー１４および操作キー１６を操作することによりテニスゲームを楽しむ。
【００３８】
図２は、本実施の形態における仮想空間３０の一例を示す図である。（ａ）が仮想空間３０の斜俯瞰図であり、（ｂ）が仮想空間３０の平面図である。
本実施の形態では、３次元の仮想空間（Ｘ，Ｙ，Ｚ）に、テニスコートのライン、ネット３８、および複数のキャラクタを配置する。なお、仮想空間の座標系（以下、ワールド座標系という）の原点をネットラインの中央に定義し、Ｙ軸正方向が鉛直上方を示すように定義する。テニスコートの各ラインは、Ｘ軸に対してベースライン３２ａ，ｂ、サービスライン３４ａ，ｂ、ネット３８が平行になるように、また、Ｚ軸に対してサイドライン３６ａ〜ｄが平行になるようにそれぞれ配置される。なお、以下では、ワールド座標系の原点がコートの中心位置にあるものとする。
【００３９】
図２（ａ）、（ｂ）に示すように、仮想空間３０のコートを、ネット３８を境として２つの陣地に分け、更に、それぞれの陣地にキャラクタを配置する。プレーヤは、特定のキャラクタを陣地内で移動させ、また、相手となるキャラクタによって打撃されたボールを打ち返す指示を入力することによりゲームを楽しむ。例えば、プレーヤは、操作バー１４によってキャラクタの移動方向を指示し、操作キー１６によって打撃開始の指示を入力する。なお、以下では、プレーヤの入力指示に従って動作が決定されるキャラクタを操作キャラクタという。したがって、「操作キャラクタが移動する」や、「操作キャラクタが打撃する」といった際には、その動作を実行する指示をプレーヤが入力したことが前提となる。
【００４０】
以下では、プレーヤの入力指示に応じてゲーム演算を行ってゲームを進展させている最中をゲーム実行中といい、リプレイ中と区別する。また、ゲーム実行中に生成した画像をゲーム画像といい、リプレイ用に生成した画像をリプレイ画像という。
【００４１】
本発明は、より尤らしく説得力のあるリプレイ画像を生成するためのものである。とりわけ、操作キャラクタがボールを打撃する瞬間を、ゲーム実行中とは異なる、よりリアルなりプレイ画像によって表現する。
【００４２】
具体的には、ゲーム実行中では、ボールを打撃しやすくするために、ボールとラケットの接触判定に、時空間的な許容範囲を設定する。このため、ゲーム画像上では、ボールとラケットの位置関係に矛盾があったり、操作キャラクタの打撃動作の一部を省略して表現させることとなる。これらの矛盾は、ゲーム実行中には気にならないが、リプレイ中では顕著なものとなる。そこで、リプレイ中には、これらの矛盾や省略が発生しないようにリプレイ画像を生成する。以下、詳細に説明する。
【００４３】
図３は、接触判定面４０について説明するための図である。接触判定面４０とは、ボールとラケットの接触を判定するための面である。ゲーム装置１は、ボールと接触判定面４０が接触すれば、ボールとラケット５０が接触したものとみなす。（ａ）は、ラケット５０と接触判定面４０との位置関係を説明するための図である。また、（ｂ）は、接触判定面４０を定義する座標系（接触判定面の座標系）の一例を示す図である。接触判定面４０は、横軸をｘ軸、縦軸をｙ軸とする矩形の平面である。
【００４４】
ゲームの実行中においては、接触判定面４０をラケット５０に追従させる。
ワールド座標系に接触判定面４０を配置する際、ラケット５０と接触判定面４０に次の関係を維持させる。▲１▼ラケット面の中心点５２の座標と、接触判定面４０の代表点４２（接触判定面の座標系における原点）とが一致する。▲２▼接触判定面４０のｘ軸は、ラケット面の中心点５２とグリップ５４とを結ぶ線分５６と平行である。▲３▼接触判定面４０は、ワールド座標系のＹ軸と平行である（すなわち、ｘ−ｙ平面がＹ軸と平行となる）。
【００４５】
さて、図３によれば、接触判定面４０の面積は、ラケット５０のモデルの見た目の面積よりも大きい。このように、接触判定面４０を広く設定すると、ゲーム中においてラケット５０のモデルとボールとが接触していなくても衝突したものとみなされる。すなわち、打撃時に、ラケット５０とボールとの間に空間的な隔たりが生じてしまう。
【００４６】
図４は、打撃時におけるボール７０とラケット５０に空間的な隔たりがあるにもかかわらず、ボール７０が打撃された一例を示す図である。同図によれば、ボール７０の軌道は、ラケット５０の接触判定面４０と交差している。このため、ボール７０とラケット５０が接触したものとみなしたものである。ゲーム実行中であれば、ボール７０とラケット５０との空間的な隔たりをプレーヤが気づかない可能性が高い。しかし、リプレイ中においては、とりわけスローモーションでリプレイを表示する場合には、この空間的な隔たりにプレーヤが違和感を抱く可能性が高い。
【００４７】
そこで、本実施の形態では、ゲーム実行中にボール７０とラケット５０が衝突した場合には、リプレイ画像を生成するとき、ボール７０がラケット５０に衝突するようにボール７０の軌道を作り変える。換言すれば、リプレイ画像を生成する際には、ゲーム実行中に生成したボール７０の軌道を用いるのではなく、ラケット５０にボール７０が衝突するように新たにボール７０の軌道を生成する。以下では、リプレイ用に生成する新たなボール７０の軌道をリプレイ時軌道という。
【００４８】
図５は、リプレイ画像を生成する際に、ボール７０がラケット５０に衝突するようにボール７０のリプレイ時軌道を生成した一例を示す図である。同図において、実線７２がゲーム実行中におけるボール７０の軌道を示し、破線７４が新たに生成したボール７０のリプレイ時軌道を示している。また、同図において、キャラクタ６０の姿勢は、ボール７０を打撃した瞬間の姿勢を示している。
【００４９】
同図によれば、リプレイ時軌道は、ボール７０とコートが接触した位置の座標（ＸB1，ＹB1，ＺB1），（ＸB2，ＹB2，ＺB2）と、接触時におけるラケット５０の中心点の座標（ＸR1，ＹR1，ＺR1）とを通過する。具体的には、コートに対するボール７０のバウンド座標と、打撃時におけるラケット５０の中心点５２の座標と、バウンド時から打撃時までの時間と、打撃時からバウンド時までの時間とに基づいてリプレイ時軌道を生成する。
【００５０】
また、本実施の形態では、ラケット５０とボール７０の接触を判定する際の時間的範囲をも広く設定する。
図６は、ラケット５０とボール７０の時間経過に伴う位置の変化を重ね書きした一例を示す図であり、Ｙ軸正方向から見た図である。ｔ1〜ｔ3へと時間経過を示している。直線８０は、操作キャラクタの中心座標（ＸP，ＹP，ＺP）を通過し、且つ、ワールド座標系におけるＸ軸と平行に設定された線である。すなわち、係る直線８０は、操作キャラクタに常に追従する。ゲーム装置１は、この直線８０上をボール７０とラケット５０が通過するタイミングを判定し、また、この直線８０上における接触判定面４０とボール７０の軌道との交差有無を判定することにより、打撃の有無を決定する。以下では、係る直線８０を判定線８０という。
【００５１】
さて、図６において、時刻ｔ1の状態がテイクバックにより最大にラケット５０を引いた状態である。また、打撃開始の指示を受けた後、ｔ1→ｔ2→ｔ3→…、の順番で打撃の動作を行わせる。係る場合において、ラケット５０が判定線８０上を通過する時刻をｔNとすれば、打撃指示の入力時刻ｔ1からラケット５０が判定線８０を通過するまでに要する時間はΔｔF＝ｔN−ｔ1である。さて、ボール７０がＺ軸方向にｖZの速度で飛行している場合において、ボール７０とキャラクタとがＺ軸方向に対してＬZ＝ｖZ・ΔｔF離れているときに、プレーヤによって打撃の指示が入力されれば、ボール７０とラケット５０とが判定線８０を通過するタイミングが完全に一致する。
【００５２】
しかし、プレーヤにとってこのように完璧に打撃の指示を入力することは困難である。そこで、ラケット５０がボール７０を打撃できる時間を、ただ一瞬の時間ではなく、所与の時間範囲によって決定する。
【００５３】
図７は、打撃開始の指示が入力された瞬間におけるボール７０と判定線８０との位置関係を説明するための図である。上述したように、判定線８０は、操作キャラクタの中心座標（ＸP，ＹP，ＺP）を通過し、且つ、Ｘ軸に平行なＸ−Ｚ平面上の線であるから、そのＺ座標は、Ｚ＝ＺPを満たす。プレーヤから打撃開始の指示を受けた瞬間におけるボール７０の座標を（ＸB，ＹB，ＺB）とすれば、ボール７０と判定線８０とのＺ軸方向の距離は、ＬBZ＝｜ＺP−ＺB｜である。この距離ＬBZと、ボール７０のＺ軸方向に対する速度ｖZとに基づいて、打撃開始の指示を受けた瞬間からボール７０が判定線８０に到達するまでに要する時間δｔBZが決定される。
δｔBZ＝ＬBZ／ｖZ    …（１）
【００５４】
さて、ボール７０を打撃するための最も理想的なタイミングは、（δｔBZ＝ΔｔF）が満たされるときである。すなわち、ボール７０が判定線８０に到達するまでに要する時間δｔBZと、ラケット５０を最大に引いた状態から判定線８０に到達するまでに要する時間ΔｔFが等しいときである。しかし、上述の通り、このタイミングで打撃の指示を入力することは困難である。そこで、δｔBZとΔｔFとの間に次の関係を設定する。
（ε1≦δｔBZ≦ΔｔF＋ε2）  …（２）
ε1,2は、正の定数であり、時間を示している。
【００５５】
図８は、ラケット５０のスイングの時間と打撃開始の指示入力の許容範囲との関係を説明するための図である。すなわち、ボール７０が判定線８０に到達するまでに要する時間δｔBZが、ラケット５０を振る際の時間ΔｔFより短くても、（ε1≦δｔBZ≦ΔｔF）を満たす範囲内であればよく、また、ΔｔFより長くても、（ΔｔF≦δｔBZ≦ΔｔF＋ε2）を満たす範囲内であれば時間的関係を満たすものと判断する。
【００５６】
なお、関係式（２）は、次のように置きかえることができる。ただし、以下で、ボール７０が相手キャラクタにより打撃されたとき、もしくは、ボール７０がコートやネット３８にバウンドしたときを、接触時という。接触時からボール７０が判定線８０を通過するまでに要する時間をδｔOとし、また、接触時からプレーヤにより打撃指示が入力されるまでの時間をδｔPとする。この場合、打撃指示が入力されてから、ボール７０が判定線８０に到達するまでに要するδｔBZ時間は、δｔBZ＝δｔO−δｔPと等しい。すなわち、関係式（２）は、
（δｔO−（ΔｔF＋ε2）≦δｔP≦δｔO−ε1）  …（３）
と等しい。したがって、プレーヤが打撃指示を入力した時間δｔPが、ボール７０の飛行時間δｔOに対して、関係式（３）を満たしていれば、ボール７０とラケット５０の時間的関係が満たされる。
【００５７】
ところで、関係式（２），（３）によれば、ラケット５０とボール７０の接触が判定された場合、ボール７０は必ず判定線８０の位置で打撃されることとなる。言い換えれば、ボール７０は、必ず判定線８０の位置まで到達し、判定線８０の位置から跳ね返ることとなる。
【００５８】
一方、ラケット５０についても、ボール７０が判定線８０上で跳ね返る瞬間に、必ずラケット５０の面が判定線８０を通過するように処理する。すなわち、プレーヤによる打撃指示が、理想的なタイミング（δｔBZ＝ΔｔF）よりも早くに入力されてしまった場合と、理想的なタイミングよりも遅かった場合とで、それぞれ固有の処理をする。
【００５９】
理想的なタイミングよりも早くに入力されてしまった場合、すなわち、
（ΔｔF＜δｔBZ≦ΔｔF＋ε2）あるいは
（δｔO−（ΔｔF＋ε2）≦δｔP＜δｔO−ΔｔF）
を満たす場合には、すぐに操作キャラクタに打撃の動作を開始させず、待機させる。そして、相手キャラクタによる打撃時刻からの時間δｔが、δｔ＝δｔO−ΔｔFを満たすと、ラケット５０を最大に引いた状態（図６のｔ1の状態）から打撃の動作を開始させる。
【００６０】
また、理想的なタイミングよりも遅くに入力されてしまった場合、すなわち、
（ε1≦δｔBZ＜ΔｔF）あるいは、
（δｔO−ΔｔF＜δｔP≦δｔO−ε1）
を満たす場合には、スイングの途中の段階から打撃の動作を行わせる。例えば、ボール７０が判定線８０を通過するまでに要する時間δｔBZがε1のとき（δｔBZ＝ε1）に、打撃の指示が入力された場合には、図８に示すラケット５０−２の位置から打撃の動作を開始させる。
【００６１】
係る設定によれば、打撃の指示が遅れた場合には、ラケット５０を最大に引いた位置から唐突にラケット５０の位置が移行して打撃の動作が開始されることとなる。すなわち、ラケット５０を最大に引いた位置から、適当な位置までの動作を省略させる。こういった動作の省略は、ゲームの実行中にはプレーヤの気にならない可能性が高いが、リプレイ中でそのまま動作の省略を再現したのでは、ゲームの現実性を損なってしまう恐れがある。
【００６２】
そこで、本実施の形態では、リプレイ画像を生成する際には、ゲーム実行中に省略した動作を補って動作を実行させる。
図９は、ゲーム実行中の操作キャラクタの動作と、リプレイ中の操作キャラクタの動作とを時系列的に表示した一例を示す図である。同図によれば、ゲーム実行中において、時刻ｔ0、ｔ1では操作キャラクタは構えたままの状態を維持しているが、時刻ｔ2にプレーヤから打撃の指示が入力されたので、打撃の動作を開始させている。その際、ボール７０が一定距離よりも接近してしまったため、操作キャラクタに途中段階から打撃動作を開始させている。すなわち、時刻ｔ1から時刻ｔ2の間には、急激に動作が移行している。一方、リプレイ中では、あたかも時刻ｔ0の状態から打撃の動作を開始したかのように動作を行わせている。
【００６３】
このように、本実施の形態では、ゲーム実行中にボール７０とラケット５０の位置関係に応じて省略した動作を、リプレイ中には補って表現する。したがって、プレイ中の操作キャラクタの動作を尤らしく自然に演出することができる。
【００６４】
以下に、本実施の形態におけるゲーム装置１の機能構成について説明する。
図１０は、ゲーム装置１の機能ブロックの一例を示す図である。同図によれば、ゲーム装置１は、主に、操作部１００と、処理部２００と、表示部３００と、情報記憶媒体４００と、一時記憶部５００と、を備える。
【００６５】
操作部１００は、図１に示すゲーム装置１の操作バー１４および操作キー１６に相当する機能部であって、プレーヤの入力・操作を電気信号として処理部２００に出力するためのものである。なお、操作部１００に相当する機器は、図１に示したような、操作バー１４および操作キー１６だけでなく、キーボードなどの汎用の入力装置や、ゲームコントローラ、マウスやトラックボール、ジョイスティック等の入力手段を用いることとしてもよい。表示部３００は、図１に示すディスプレイ１２に該当する機能部であり、処理部２００から入力される指示に従って処理部２００にて生成された画像を表示する。
【００６６】
情報記憶媒体４００は、本実施の形態におけるゲーム装置１の駆動に係るプログラムやデータ等を記憶するものであり、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、メモリ、ハードディスク等のハードウェアにより実現できる。また、情報記憶媒体４００は、テニスゲームを実行するためのゲームプログラム４１０を記憶する。また、ゲームプログラム４１０には、ゲーム演算プログラム４１２や画像生成プログラム４１４の他、各キャラクタを制御するためのモーションデータ４１６が含まれる。
【００６７】
ゲーム演算プログラム４１２には、ゲームシナリオや各キャラクタのモデル情報、仮想空間に配置する各オブジェクトのモデル情報、プレーヤの操作信号に応じて各オブジェクトの動作を決定するための情報、ゲームの進行に応じて視点位置を決定するための情報、個々のキャラクタの動作を特徴付ける固有値情報、テニスゲームの得点を算出するための情報等、その他ゲーム進行に係る情報等が含まれる。また、ボール７０の軌道を生成する処理や、リプレイ時軌道を生成する処理、操作キャラクタの打撃動作を制御するための処理、リプレイ画像を生成する際に、操作キャラクタの動作を補う処理などを実行するためのプログラムやデータが含まれる。
【００６８】
画像生成プログラム４１４には、仮想空間に配置された各キャラクタやオブジェクトの位置的な関係を演算するためのジオメトリ処理や、３次元の仮想空間の状況を視点の座標に基づいて２次元の座標系に変換してゲーム画像を生成するためのレンダリング処理を実行するために必要な情報などが含まれる。また、ゲーム実行中に生成されたデータに基づいて、リプレイ画像を生成するするための情報が含まれる。
【００６９】
一時記憶部５００は、処理部２００が情報記憶媒体４００に記憶されたゲームプログラム４１０に従って実行した演算処理や、操作部１００から入力される情報、画像生成部２４０により生成された画像データを一時的に記憶するためのものであり、ＲＡＭやＶＲＡＭ等のハードウェアにより実現される。また、一時記憶部５００は、処理部２００から入力される指示に従って、軌道情報５１０、リプレイ情報５１２を一時的に記憶する。なお、軌道情報５１０およびリプレイ情報５１２については、後述する。
【００７０】
処理部２００は、システム全体の制御、システム内の各機能部への命令の指示、操作部１００から入力される操作信号や情報記憶媒体４００に記憶されたゲームプログラム４１０に基づいてテニスゲームを進行するための処理、画像処理、音処理等の各種処理を行うものであり、その機能は、各種プロセッサ（ＣＰＵ、ＤＳＰ等）、あるいはＡＳＩＣ（ゲートアレイ等）等のハードウェアや、所与のプログラムにより実現できる。また、処理部２００は、主に、ゲーム演算部２２０と画像生成部２４０とを含み、操作部１００から入力される操作信号に応じた処理をゲーム演算部２２０に実行させ、更に、その処理結果に基づく画像を画像生成部２４０に生成させる。
【００７１】
ゲーム演算部２２０は、ゲームの進行処理、選択画面の設定処理、仮想空間に存在する各キャラクタやオブジェクトの座標・動作を決定する処理、等の種々のゲーム処理を、操作部１００から入力される操作信号や、情報記憶媒体４００から読み出すゲーム演算プログラム４１２等に基づいて実行する。そして、ゲーム演算部２２０は、各キャラクタの座標や動作、向きなどを決定すると、その決定した情報に基づいて画像生成部２４０に画像を生成する処理を実行させる。
【００７２】
画像生成部２４０は、ゲーム演算部２２０から入力される指示信号、各種座標データに基づき、ゲーム画像を生成する処理を実行するものであり、ＣＰＵ、ＤＳＰ、画像生成専用のＩＣ、メモリなどのハードウェアにより構成される。具体的には、画像生成部２４０は、前方、後方クリッピングを実行してビューボリューム（すなわち、描画範囲）を決定する処理、各キャラクタやオブジェクトに対する視点に基づく座標変換処理等のジオメトリ処理と、２次元座標系への座標変換処理や色補間処理等のレンダリング処理を実行することによりゲーム画像を生成する。そして、生成したゲーム画像を一時記憶部５００（例えば、フレームバッファなど）に格納する。
【００７３】
なお、ゲーム演算部２２０は、主に、ボール制御部２２２と、キャラクタ制御部２２４と、軌道生成部２２６と、動作再現部２２８と、を含み、情報記憶媒体４００に格納されたゲームプログラム４１０に基づいて各部を機能させる。
【００７４】
ボール制御部２２２は、ゲーム実行中におけるボール７０の動きを制御すると共に、ボール７０が他の物体と接触した際の種々の情報を一時記憶部５００に記憶する処理等を行う機能部である。具体的には、ゲーム実行中における１フレーム毎のボール７０の位置を決定する処理、ボール７０と他の物体との接触を判定する処理、ボール７０の初速度を設定する処理、ボール７０の各種情報を一時記憶部５００に記憶する処理、等を行う。
【００７５】
ゲーム実行中の、１フレーム毎のボール７０の位置（ＸB，ＹB，ＺB）は、ボール７０の初速度（ｖX，ｖY，ｖZ）に基づいて決定する。
ＸB＝∫ｖX・δｔ＋ＸFOR
ＹB＝∫｛ｖY−（ｇ・ｔ）｝・δｔ＋ＹFOR
ＺB＝∫ｖZ・δｔ＋ＺFOR        …（４）
ここで、ｇは、重力定数を示している。また、積分区間は、ボール７０が他の物体と接触した瞬間の時刻から現在の時刻までである。例えば、ボール７０がコートにバウンドした場合には、そのバウンドした瞬間からの時間が積分区間となる。また、（ＸFOR，ＹFOR，ＺFOR）は、ボール７０の初期位置（すなわち、他の物体と接触した瞬間の位置）を示している。
【００７６】
また、ボール制御部２２２は、ボール７０と他の物体との接触を判定すると共に、接触後のボール７０の速度を決定する。具体的には、ラケット５０との接触判定、静止物体との接触判定を行う。ここで、静止物体とは、コートやネット３８といった仮想空間内に配置したキャラクタ以外の物体を示す。
【００７７】
ボール７０とラケット５０の接触判定については、上述した通りである。すなわち、ボール７０の軌道とラケット５０との時空間的な関係を判定する。
位置的な関係の判定は、判定線８０上におけるラケット５０の接触判定面４０とボール７０の軌道が交差するか否かによって決定する。接触判定面４０とボール７０の軌道が交差しない場合には、空間的要件を満たさない、すなわち、ボール７０とラケット５０とが接触しないことを判定する。
【００７８】
時間的な関係を判定する際には、プレーヤにより打撃の指示が入力された時間δｔPが関係式（３）を満たすか否かを判定する。関係式（３）が満たされない場合には、ボール７０とラケット５０とが接触しないものと判定する。
【００７９】
なお、ボール制御部２２２は、ボール７０の軌道とラケット５０との位置的な関係も、時間的な関係も満たされた場合には、ボール７０とラケット５０が接触したものと判定する。そして、接触後（すなわち、打撃後）のボール７０の速度ｖを決定する。打撃後のボール７０の速度は、そのボール７０を打撃したキャラクタの固有値に基づいて決定してもよいし、打撃指示が入力されたタイミングに基づいて決定してもよいし、乱数によって決定してもよい。あるいは、これらの組み合わせにより決定してもよい。
【００８０】
ボール７０と静止物体との衝突判定は、ボール７０が各物体の空間的範囲と重複する位置に存在するか否かを判定することにより行う。
例えば、ボール７０とネット３８の衝突判定は、次のようにして行う。
ここで、ボール７０の座標を（ＸB，ＹB，ＺB）とし、半径をｒBとする。また、ネット３８の空間的範囲を、図１１に示すように、Ｘ軸方向の範囲を（ＸN1≦Ｘ≦ＸN2）、高さをＹN、Ｚ軸方向の位置を（ＺN＝０）とする。係る場合において、ボール７０とネット３８の接触条件は次の通りである。すなわち、ボール７０の座標（ＸB，ＹB，ＺB）が、以下の関係を満たす場合に、ボール７０がネット３８に衝突したものと判定する。
（ＸN1−ｒB≦ＸB≦ＸN2＋ｒB）、
（０≦ＹB≦ＹN＋ｒB）、
（−ｒB≦ＺB≦＋ｒB）    …（５）
【００８１】
また、ボール７０とコートの衝突判定は、ボール７０の高さＹBが、
ＹB＝ｖY・δｔCOL−（１／２）・（ｇ・δｔCOL2）＝ｒB  …（６）
を満たすとき、ボール７０がコートに衝突したと判定する。すなわち、ボール７０の高さＹBがボール７０の半径ｒBと等しいか否かを判定する。ここで、δｔCOLは、ボール７０がＹ軸方向に初速度ｖYで飛行し始めてからの時間を示す。
【００８２】
なお、ボール制御部２２２は、ボール７０がコートやネット３８にバウンドしたときには、適当な衝突係数ｅを用いて、あらたな速度を決定する。
図１２は、各種衝突係数を記憶した衝突係数テーブル４１８の一例を示す図である。同図において、衝突係数テーブル４１８には、ボール７０が衝突する対象物と、座標と、各座標毎の衝突係数ｅがそれぞれ対応付けて記憶される。ただし、各衝突係数ｅは、−１≦ｅ≦０を満たす。
【００８３】
すなわち、ゲーム実行中にボール７０が他の物体と接触した場合には、衝突係数テーブル４１８に基づいて接触後のボール７０の速度を決定する。例えば、ボール７０がネット３８に接触した場合には、ネット３８の衝突係数（ｅNX，ｅNY，ｅNZ）を読み出して、各軸方向のボール７０の速度を決定する。
ｖX＝ｅNX・ｖX  …（７）
式（７）において、左辺は接触後のボール７０の速度を、右辺のｖXは接触前のボール７０の速度をそれぞれ示している。Ｙ軸，Ｚ軸方向の速度についても同様に算出する。
【００８４】
なお、図１２に示す衝突係数テーブル４１８によれば、ボール７０がコートに衝突した場合におけるＸ軸、Ｚ軸方向の衝突係数は、１である。すなわち、衝突の前後でＸ軸、Ｚ軸方向の速度が変わらないことを示している。Ｙ軸方向の速度については、ボール７０がコートと衝突する瞬間、すなわち、ＹB＝ｒBとなる時刻δｔCOLにおける速度に基づいて決定する。
【００８５】
また、ボール制御部２２２は、ゲーム実行中におけるボール７０の挙動について、リプレイ画像を生成するために必要な情報を一時記憶部５００に記憶する処理も行う。
【００８６】
本実施の形態では、上述の通り、リプレイ画像を生成する際には、ボール７０とラケット５０との衝突判定処理と画像上の表現との間に矛盾がないように、ボール７０の軌道を新たに生成する。その際、ゲーム実行中にボール７０が他の物体と接触した際の位置を結ぶように、すなわち点と点とを結ぶように、リプレイ時軌道を生成する。このため、ボール制御部２２２は、ボール７０が他の物体と接触した際の位置と速度とを対応付けて一時記憶部５００に記憶する。また、ボール７０がキャラクタによって打撃された場合には、その際におけるラケット５０の位置も対応付けて記憶する。
【００８７】
図１３は、軌道情報５１０の一例を示す図である。軌道情報５１０とは、処理部２００がリプレイ時軌道を生成する際に読み出す情報テーブルであり、ボール制御部２２２がゲーム実行中に生成するものである。同図によれば、軌道情報５１０には、接触時刻と、接触物と、ボール７０の座標と、ボール７０の速度と、ヒットポイントの座標と、合成割合とがそれぞれ対応付けて記憶されている。
【００８８】
ここで、接触時刻とは、ゲーム実行中における通算の時刻であり、ボール７０が他の物体と接触した時刻を示している。また、接触物とは、ボール７０が接触した物体の種類を示し、ボール７０の座標とは、ボール７０が他の物体と接触したときの座標を示し、ボール７０の速度とは、ボール７０が他の物体と接触したことにより決定された初速度を示す。また、ヒットポイントの座標とは、後述するキャラクタ制御部２２４がキャラクタの打撃動作を制御する際に読み出した情報である（図１６参照）。また、合成割合とは、キャラクタ制御部２２４が、各ヒットポイントに対応するモーションデータ４１６を合成するときの割合を示す。なお、軌道情報５１０に記憶するヒットポイントの座標は、ワールド座標系における座標であってもよいし、各ヒットポイントを定義するためのローカル座標系における座標であってもよい。
【００８９】
キャラクタ制御部２２４は、ゲーム実行中におけるキャラクタの動きを制御すると共に、リプレイ画像を生成する際に必要となるキャラクタの情報を生成する機能部である。具体的には、情報記憶媒体４００に記憶されたモーションデータ４１６に基づいて１フレーム毎のキャラクタの姿勢やワールド座標における位置を決定すると共に、その決定した１フレーム毎の情報を順次一時記憶部５００に記憶する。
【００９０】
まず、キャラクタ制御部２２４は、キャラクタの姿勢を決定する。
図１４は、キャラクタの構造（モデル）を示す図である。キャラクタは、ヒジ、カタ、クビ、ヒザ、…、といった関節を有する。図１５（ａ）は、モーションデータ４１６の一例を示す図である。モーションデータ４１６には、キーフレームの番号と、各関節の回転角情報（θX，θY，θZ）と、次のキーフレームまでのフレーム数Ｍがそれぞれ対応付けて記憶されている。なお、各回転角θは、キャラクタの原型（モデル）からの回転角を示している。
【００９１】
キャラクタ制御部２２４は、モーションデータ４１６に記憶された各キーフレームの関節角の回転角情報に基づいて、１フレーム毎のキャラクタの姿勢を決定する。例えば、キーフレーム１とキーフレーム２の間におけるｉ番目のフレーム（ｉ＝１〜Ｍ1）について、関節１のＸ軸廻りの回転角θXを決定する場合には、次の計算をする。
θX＝θX11＋｛（θX21−θX11）／Ｍ1｝・ｉ  …（８）
Ｙ軸廻りの回転角θYも、Ｚ軸廻りの回転角θZも、同様に計算する。
【００９２】
ところで、テニスゲームでは、キャラクタがラケット５０を振る動作の種類は１つではない。例えば、フォアストローク、バックストローク、スマッシュ等がある。また、フォアストロークの中にも、やや下方向を通過するボール７０を打撃する場合や、キャラクタの位置からやや離れた位置のボール７０を打撃する場合など、様々である。すなわち、情報記憶媒体４００には、様々なスイングの種類に対応するモーションデータ４１６が記憶されている。
【００９３】
図１６は、打撃動作におけるモーションデータ４１６の種類を説明するための図である。同図によれば、操作キャラクタ６０の周囲に複数のヒットポイントＰ１〜Ｐ１６が表示されている。ここで、ヒットポイントＰ１〜Ｐ１６とは、打撃動作におけるラケット５０の通過位置を示している。換言すれば、図１５（ｂ）に示すように、各ヒットポイントＰ１〜Ｐ１６の１つ１つに対応するモーションデータ４１６が存在する。そして、各モーションデータ４１６に基づいてキャラクタに動作を行わせることで、対応する点をラケット５０が通過するように動作させることができる。
【００９４】
なお、各ヒットポイントの位置関係は、２次元のローカル座標系（ｘH，ｙH）に定義される。そして、このヒットポイントが定義された平面を、ワールド座標系における操作キャラクタの中心座標に基づいて配置する。例えば、キャラクタの座標が（ＸB，ＹB，ＺB）の場合には、Ｚ＝ＺBとなるＸ−Ｙ平面上に係る平面を配置する。換言すれば、各ヒットポイントは、操作キャラクタの判定線８０上に常に配置される。
【００９５】
さて、キャラクタ制御部２２４は、ゲーム実行中にプレーヤから打撃の指示が入力されると、情報記憶媒体４００からモーションデータ４１６を読み出して操作キャラクタに打撃動作を行わせるわけだが、その際、複数のモーションデータ４１６の中から操作キャラクタに実行させるものを特定する。具体的には、判定線８０上のボール７０の軌道近傍にある２つのヒットポイントを選定し、その選定したヒットポイントに対応する２つのモーションデータ４１６を合成して用いる。
【００９６】
図１７は、ヒットポイントを選定する処理を説明するための図である。同図において、点９０が、ボール７０の軌道が判定線８０上を通過する際の座標を示している。ヒットポイントを選定する際には、各ヒットポイント間を結ぶ線分のうち、ボール７０の軌道に最も近い線分を選定する。例えば、図１７においては、線分Ｐ３−Ｐ５が最もボール７０の軌道に近い。そこで、ボール７０の軌道９０から線分Ｐ３−Ｐ５に対する垂線と、線分Ｐ３−Ｐ５の交点９２を算出し、ヒットポイントＰ３とＰ５に対応するモーションデータ４１６の合成割合を決定する。図１７によれば、交点と各ヒットポイントＰ３，Ｐ５の線分がｎ1：ｎ2の関係を有するから、係る割合で対応するモーションデータ４１６を合成する。例えば、モーションデータＡ，Ｂに記憶された各キーフレームにおける各関節の回転角θA,Bを、ｎ1：ｎ2の割合で合成する。
θ＝（ｎ2・θA＋ｎ1・θB）／（ｎ1＋ｎ2）  …（９）
【００９７】
なお、キャラクタ制御部２２４は、上述のように、ボール７０が現地点から判定線８０を通過するまでに要する時間δｔBZが、ラケット５０が判定線８０を通過するまでに要する時間ΔｔFよりも小さい場合（正確には、ε1≦δｔBZ≦ΔｔFの場合）には、打撃の動作を途中段階から開始させる。具体的には、モーションデータ４１６のうち、（（ΔｔF−δｔBZ）／６０）番目のフレームから打撃の動作を開始させる。
【００９８】
ところで、キャラクタ制御部２２４は、ラケット５０に追従する接触判定面４０についても制御する。ただし、ボール７０とラケット５０の接触判定を行う位置は判定線８０上のみであるから、接触判定面４０の判定線８０上での位置さえ確定できれば、常にラケット５０と共に仮想空間に配置する必要はない。すなわち、接触判定面４０の仮想空間における位置は、ラケット５０が判定線８０を通過する際の位置と角度とに基づいて決定すればよい。ただし、操作キャラクタの動作を、２つのモーションデータ４１６の合成結果に基づいて決定することとしたため、ラケット５０が判定線８０上を通過する際の位置は、採用するモーションデータ４１６の種類、合成割合に応じて異なる。言い換えれば、ラケット５０が判定線８０上を通過する位置は、スイングの度に変化する。
【００９９】
例えば、図１７に示すヒットポイントについて、ヒットポイントＰ３，Ｐ５に対応するモーションデータ４１６をｎ1：ｎ2で合成した場合には、ラケット５０の面（中心点）が通過する位置は、線分Ｐ３−Ｐ５をｎ1：ｎ2で内分する位置となる。また、ヒットポイントＰ５におけるラケット５０の傾きがω1で、ヒットポイントＰ３におけるラケット５０の傾きがω2である場合には、内分点９２におけるラケット５０の傾きωは、式（９）と同様に決定する。
ω＝（ｎ2・ω1＋ｎ1・ω2）／（ｎ1＋ｎ2）  …（１０）
キャラクタ制御部２２４は、ラケット５０の中心点の位置と、ラケット５０の傾きωとに基づいて接触判定面４０の配置位置を決定する。その際、キャラクタの動作よりも速く、判定線８０上における接触判定面４０の位置および向きを決定する。
【０１００】
また、キャラクタ制御部２２４は、ゲーム実行中に決定した各キャラクタの位置、向き、姿勢などの情報を１フレーム毎に記憶する。
図１８は、リプレイ情報５１２の一例を示す図である。リプレイ情報５１２とは、１フレーム毎のキャラクタの情報を記憶した情報テーブルであり、キャラクタ制御部２２４によって生成されるものである。同図によれば、リプレイ情報５１２には、時刻と、キャラクタコードと、該当するキャラクタのワールド座標系における座標と、各関節の角度情報と、などが順に記憶されている。すなわち、キャラクタ制御部２２４は、決定した各キャラクタの座標情報や向き、回転角情報とを、１フレーム毎に一時記憶部５００に記憶する。
【０１０１】
なお、ゲームの開始時からの情報を全て記憶することは現実的ではないため、一時記憶部５００に記憶するフレーム数を固定し、随時上書き記憶するように設定する。例えば、ｍフレームの情報を記憶するように設定した場合には、１フレーム目から順に記憶し、ｍ＋１フレーム目の情報は１フレーム目の情報に上書きするといった具合に、周期的に記憶する。
【０１０２】
以上が、ゲーム実行中における処理である。
以下に、リプレイ画像を生成する際の処理について説明する。
【０１０３】
軌道生成部２２６は、リプレイ画像を生成する際に、リプレイ時軌道を生成する機能部である。
具体的には、軌道情報５１０に記憶された接触時刻、ボール７０の座標および速度、に基づいてボール７０の軌道を生成する。例えば、２つの連続する接触（衝突）について、ボール７０との接触物が２つとも静止物体である場合には、軌道情報５１０に記憶された情報に基づいてボール７０の軌道を生成する。すなわち、始めの接触時におけるボール７０の位置を初期位置とし、始めの衝突時における速度を初速度として式（４）に代入することによりボール７０の軌道を決定する。
【０１０４】
一方、２つの連続する衝突について、少なくとも一方の接触対象物がキャラクタのラケット５０である場合には、ボール７０の軌道計算に加速度を加算することにより、ボール７０がラケット５０と接触するようにリプレイ時軌道を生成する。
【０１０５】
例えば、図１３に示した軌道情報５１０において、時刻ｔ0に、ボール７０がコートと接触している。その際のボール７０の座標は、（ＸB0，ＹB0，ＺB0）であり、速度は（ｖX0，ｖY0，ＺZ0）である。続く接触時刻ｔ1には、ボール７０はキャラクタＡによって打撃されている。その際のボール７０の位置は、（ＸB1，ＹB1，ＺB1）である。また、ラケット５０の位置は、軌道情報５１０に記憶された２つのヒットポイントのｎ1：ｎ3の内分点（仮に、（ＸR，ＹR，ＺR）とする）である。さて、この場合における各軸方向の加速度αを算出する。ただし、ｔ1−ｔ0＝Ｔとする。
αX＝２・（ＸR−ＸB1）／Ｔ2  …（１１）
Ｙ軸方向、Ｚ軸方向の加速度αY，αZについても同様に決定する。
【０１０６】
リプレイ時軌道を生成する際には、算出した加速度αを用いて、ボール７０の座標を決定する。
ＸB＝∫｛ｖX0＋（αX・ｔ）｝δｔ＋ＸB0  …（１２）
Ｙ座標、Ｚ座標についても同様に算出する。なお、積分区間は、時刻ｔ0を０として、「０」から「ｔ1−ｔ0」である。
【０１０７】
打撃後のボール７０の軌道についても、同様に算出する。打撃前においては、ボール７０がラケット５０の中心点と接触するようにリプレイ時軌道を生成するわけだが、打撃後においては、ラケット５０の中心の位置から、ボール７０が次にコートやネット３８と接触する位置へと飛行するようにリプレイ時軌道を生成する。具体的には、打撃時からボール７０が静止物体と接触するまでに要する時間と、打撃時におけるボール７０とラケット５０の各座標の差を算出することによって加速度を算出し、その算出した加速度と打撃されたボール７０の初速度とに基づいて打撃後のリプレイ時軌道を生成する。
【０１０８】
なお、リプレイ期間内に打撃動作が含まれるものの、打撃以前のボール７０が静止物体と接触する時刻が含まれない場合、例えば、図１３に示した軌道情報５１０のｔ0とｔ1の中間時刻からリプレイを開始するような場合がある。係る場合において、静止物体との接触位置を初期位置として（すなわち、時刻ｔ0を初期時刻として）ボール７０の軌道を生成すると、リプレイの開始時点から既にボール７０の軌道がゲーム実行中の軌道から外れることとなり、場合によってはプレーヤに違和感を与える恐れがある。
【０１０９】
係る場合には、リプレイ開始時点のボール７０の位置を初期位置としてボール７０の軌道を生成する。図１９は、リプレイ開始時点ｔRPからボール７０のリプレイ時軌道を生成した一例を示す図である。同図に示すように、リプレイ開始時点ｔRPにおけるボール７０の座標および速度を算出し、その点を初期位置とする加速度を式（１１）に基づいて決定すると共に、リプレイ時軌道を決定する。
【０１１０】
動作再現部２２８は、リプレイ画像を生成する際のキャラクタの動きを決定する機能部である。
動作制限部２２８は、リプレイ期間内に、操作キャラクタによる打撃動作が含まれない場合には、一時記憶部５００に記憶されたリプレイ情報５１２に従って、フレーム毎の操作キャラクタの姿勢を決定する。
【０１１１】
一方、リプレイ期間に操作キャラクタによる打撃動作が含まれる場合には、打撃開始から打撃をする瞬間までの動作を、ゲーム実行中のデータにかかわらず、作りなおす処理をする。すなわち、ゲーム実行中では、プレーヤによる打撃指示の入力タイミングが、理想的なタイミングよりも遅れた場合には、打撃動作の一部を省略して表現することとしたが、リプレイ中では、省略部分を補うようにして再現する。言い換えれば、ゲーム実行中では、打撃動作に要する時間ΔｔFとボール７０の進行状況に対して、プレーヤの入力が遅れた場合には、時間ΔｔFをかけて全打撃動作を行わせるのではなく、その途中から実行させることとした。しかし、リプレイ画像を生成する際には、省略せずに、時間ΔｔFをかけて全打撃動作を行わせる。
【０１１２】
すなわち、リプレイ期間中に打撃動作が含まれる場合には、その打撃期間の動作についてモーションデータ４１６に基づいて１フレーム毎の操作キャラクタの姿勢を決定する。モーションデータ４１６は、一時記憶部５００に記憶された軌道情報５１０に含まれるヒットポイントの座標と合成割合とに基づいて該当するモーションデータ４１６を合成し、操作キャラクタの動きを再現する。なお、打撃期間外の動作については、ゲーム実行中に生成したリプレイ情報５１２に基づいて１フレーム毎の操作キャラクタの姿勢を決定する。
【０１１３】
ただし、リプレイ期間に打撃動作が含まれる場合には、次の３通りある。リプレイ期間ＴRにおいて、打撃時ｔDからΔｔF遡る打撃動作の開始時点がリプレイ期間ＴRに含まれない場合（図２０（ａ））と、打撃時ｔDから遡る打撃動作時間ΔｔFが完全にリプレイ期間ＴRに含まれる場合（図２０（ｂ））と、打撃時ｔDがリプレイ期間ＴR経過後にあって、且つ、打撃動作の開始時がリプレイ期間ＴR内に含まれる場合（図２０（ｃ））とがある。係る場合には、ΔｔFに対応する期間（打撃期間）の動作について、リプレイ情報５１２に含まれる操作キャラクタの角度情報を採用せず、軌道情報５１０に記憶された情報に該当するモーションデータ４１６を合成して動作を決定する。
【０１１４】
次に、処理部２００による処理の流れの一例について説明する。
図２１は、ゲーム実行中における処理の流れを示すフローチャートである。
なお、以下の処理は、１フレーム毎に処理部２００が実行するものである。
同図によれば、処理部２００は、ゲーム実行中において、操作部１００から入力される操作指示や、情報記憶媒体４００に記憶されるゲームプログラム４１０、一時記憶部５００に予め記憶された情報等に基づいて、ボール７０およびキャラクタの位置および姿勢等を決定する（ステップＳ１）。そして、決定した情報に基づいてゲーム画像を生成すると共に、その時刻と、キャラクタの座標や角度情報、といった情報をリプレイ情報５１２として一時記憶部５００に記憶する（ステップＳ２）。
【０１１５】
また、処理部２００は、打撃指示の入力有無（ステップＳ３）、ボール７０とラケット５０の接触条件（ステップＳ４）を判定する。ステップＳ３およびＳ４の条件を満たす場合には、すなわち、ボール７０がラケット５０により打撃される場合には、打撃後のボール７０の初速度を予め決定すると共に、操作キャラクタに実行させる打撃動作のヒットポイントおよび合成割合を決定する（ステップＳ５）。そして、接触時刻を算出し、その算出した接触時刻と、ボール７０を打撃したキャラクタのコードと、ボール７０の座標・速度と、選定したヒットポイントと、合成割合と、を対応付けて一時記憶部５００に記憶して（ステップＳ６）、本処理を終了する。
【０１１６】
一方、ステップＳ３もしくはＳ４を満たさなかった場合には、ボール７０とネット・コートとの接触を判定する（ステップＳ７）。いずれにも接触しない場合には、本処理を終了する。ボール７０がネット３８あるいはコートと接触する場合には、ボール７０の初速度を決定する（ステップＳ８）。そして、接触時刻、接触物、ボール７０の座標・速度、を対応付けて一時記憶部５００に記憶し（ステップＳ９）、本処理を終了する。
【０１１７】
図２２は、リプレイ画像を生成する処理の流れを示すフローチャートである。
同図において、処理部２００は、ゲームプログラム４１０に基づいて、現時点がリプレイ画像を表示するタイミングか否かを判定する（ステップＳ１０）。リプレイを開始するタイミングでない場合には、本処理を終了する。
【０１１８】
リプレイ画像を表示するタイミングになると、処理部２００は、一時記憶部５００に記憶された軌道情報５１０に基づいて、リプレイ情報５１２に記憶されたリプレイ期間に打撃動作が含まれるか否かを判定する（ステップＳ１１）。すなわち、軌道情報５１０に記憶された接触時刻のうち対応する接触物がキャラクタである接触時刻が、リプレイ情報５１２内に記憶されているか否かを判定する。その際、リプレイ期間内に打撃時刻が含まれない場合であっても、打撃時刻から打撃動作に要する時間ΔｔF遡った時刻がリプレイ期間に含まれる場合（図２０（ｃ）参照）には、打撃動作が含まれると判定する。
【０１１９】
ステップＳ１１にて、打撃動作がリプレイ期間に含まれない場合には、一時記憶部５００に記憶された軌道情報５１０、リプレイ情報５１２とに基づいて、１フレーム毎のリプレイ画像を生成する。そして、その生成したリプレイ画像を表示部３００に表示させる（ステップＳ１２）。リプレイ期間のリプレイ画像を全て表示すると、本処理を終了する。
【０１２０】
一方、ステップＳ１１にて、打撃動作がリプレイ期間に含まれる場合には、ボール７０の軌道を新たに生成する処理と、キャラクタの打撃動作を新たに決定する処理、すなわち、打撃動作における各フレームの姿勢を新たに決定する処理とを行う。
【０１２１】
ボール７０の軌道を生成する処理では、まず、リプレイ開始時および終了時におけるボール７０の位置と速度を決定する（ステップＳ１３）。また、打撃時におけるボール７０とラケット５０の距離を算出すると共に、打撃前後におけるボール７０の飛行時間を算出する（ステップＳ１４）。飛行時間とは、リプレイ開始時からボール７０が打撃されるまでの時間差（途中で静止物体と接触する場合には、その接触から打撃されるまでの時間）と、ボール７０が打撃されてからリプレイが終了するまでの時間差（途中で静止物体と接触する場合には、打撃されてから接触するまでの時間）である。そして、算出した値に基づいて、ボール７０が打撃される前の加速度と、ボール７０が打撃された後の加速度を算出して（ステップＳ１５）、式（１２）に示したように、１フレーム毎のボール７０の軌道を生成する。
【０１２２】
一方、キャラクタの打撃動作を新たに決定する処理では、まず、リプレイ情報５１２に対する割り込み期間を決定する（ステップＳ１６）。すなわち、図２０（ａ）〜（ｃ）のいずれの状況に該当するかを判断し、操作キャラクタの角度情報を変更する部分を決定する。また、軌道情報５１０に記憶されたヒットポイントに対応するモーションデータ４１６を、軌道情報５１０に記憶された合成割合で合成することにより、採用するモーションデータ４１６を生成する（ステップＳ１７）。
【０１２３】
そして、生成したモーションデータ４１６のうち、いずれの時点から打撃動作を開始するかを決定する（ステップＳ１８）。例えば、打撃動作の途中からリプレイが開始される場合（図２０（ａ）参照）には、モーションデータ４１６における該当する開始時点を決定する。あるいは、打撃動作の開始時点がリプレイ期間に含まれる場合（図２０（ｂ）、（ｃ）参照）には、生成したモーションデータ４１６の最初から採用する。
【０１２４】
そして、ステップＳ１３〜Ｓ１５にて算出した加速度、および、ステップＳ１６〜Ｓ１８にて生成したモーションデータ４１６に基づいて、リプレイ時軌道を生成し、また、１フレーム毎のキャラクタの姿勢を決定して、リプレイ画像を生成する。更に、生成した画像を表示部３００に表示させる（ステップＳ１９）。リプレイ期間のリプレイ画像を全て表示すると、本処理を終了する。
なお、リプレイをスローモーションにより表示する場合には、（１／６０）秒間隔の画像を生成して、同じ画像を連続して２回以上表示することによって、スローモーションを実現してもよい。あるいは、標準速度が（１／６０）秒である場合に、例えば、（１／１２０）秒間隔の画像を生成して、（１／６０）秒毎に生成した画像を順次表示することでスローモーションを実現してもよい。
また、リプレイ時にラケット若しくは操作キャラクタを拡大して表現する場合には、視点を操作キャラクタの正面に、且つ、操作キャラクタとの距離がＬ（＝一定）となる位置に配置するなどして、操作キャラクタが適当な大きさとなるように視点位置を決定して描画するとよい。
【０１２５】
次に、ハードウェア構成について説明する。
図２３は、本実施の形態を実現可能とするハードウェア構成の一例を示す図である。同図に示す装置では、ＣＰＵ１０００、ＲＯＭ１００２、ＲＡＭ１００４、情報記憶媒体１００６、音生成ＩＣ１００８、画像生成ＩＣ１０１０、Ｉ／Ｏポート１０１２、１０１４が、システムバス１０１６により相互にデータ入出力可能に接続されている。そして、画像生成ＩＣ１０１０には、表示装置１０１８が接続され、音生成ＩＣ１００８には、スピーカ１０２０が接続され、Ｉ／Ｏポート１０１２には、コントロール装置１０２２が接続され、Ｉ／Ｏポート１０１４には、通信装置１０２４が接続されている。
【０１２６】
情報記憶媒体１００６は、図１０に示す機能ブロックにおける情報記憶媒体４００に相当するものであり、プログラム、表示物を表現するための画像データ、音データ、プレイデータ等が主に格納されるものである。例えば、図１に示す業務用のゲーム装置１においては、ＲＯＭ等のメモリやハードディスクが用いられ、この場合には、情報記憶媒体１００６は、ＲＯＭ１００２になる。また、パーソナルコンピュータにおいては、ＣＤ−ＲＯＭ、ＤＶＤ、ＲＯＭ等のメモリ、ハードディスク等が用いられる。また、本発明を家庭用ゲーム装置に適用する場合には、ゲームプログラム４１０等を格納する情報記憶媒体として、ＣＤ−ＲＯＭ、ゲームカセット、ＤＶＤ等が用いられ、プレイデータを格納する情報記憶媒体としてメモリカードなどが用いられる。
【０１２７】
コントロール装置１０２２は、図１に示したような操作バー１４や操作キー１６、あるいは、操作パネル等に相当するものであり、プレーヤがゲーム進行に応じて行う判断の結果を装置本体に入力するための装置である。
【０１２８】
情報記憶媒体１００６に格納されるプログラム、ＲＯＭ１００２に格納されるシステムプログラム（装置本体の初期化情報等）、コントロール装置１０２２によって入力される信号等に従って、ＣＰＵ１０００は、装置全体の制御や各種データ処理を行う。ＲＡＭ１００４は、このＣＰＵ１０００の作業領域等として用いられる記憶手段であり、情報記憶媒体１００６やＲＯＭ１００２の所与の内容、あるいはＣＰＵ１０００の演算結果が格納される。
【０１２９】
更に、この種の装置には、音生成ＩＣ１００８と画像生成ＩＣ１０１０とが設けられていて、ゲーム音やゲーム画像の好適な出力が行えるようになっている。音生成ＩＣ１００８は、情報記憶媒体１００６やＲＯＭ１００２に記憶される情報に基づいて効果音やバックグラウンド音楽等のゲーム音を生成する集積回路であり、生成されたゲーム音は、スピーカ１０２０によって出力される。また、画像生成ＩＣ１０１０は、ＲＡＭ１００４、ＲＯＭ１００２、情報記憶媒体１００６等から出力される画像情報に基づいて表示装置１０１８に出力するための画素情報を生成する集積回路である。また表示装置１０１８は、ＣＲＴやＬＣＤ、ＴＶ、プラズマディスプレイ、プロジェクター等により実現される。
【０１３０】
また、通信装置１０２４は、ゲーム装置１内部で利用される各種の情報を外部とやり取りするものであり、他のゲーム装置と接続されてゲームプログラムに応じた所与の情報を送受し、また、通信回線を介してゲームプログラム等の情報を送受すること等に利用される。
【０１３１】
また、図１〜図２０で説明した種々の処理は、図２１・図２２のフローチャートに示したゲーム実行中処理やリプレイ時処理等を行うためのプログラムを含むプログラムを格納した情報記憶媒体１００６と、該プログラムに従って動作するＣＰＵ１０００、画像生成ＩＣ１０１０、音生成ＩＣ１００８等によって実現される。なお、画像生成ＩＣ１０１０、音生成ＩＣ１００８等で行われる処理は、ＣＰＵ１０００あるいは汎用のＤＳＰ等によりソフトウェア的に行ってもよい。
【０１３２】
なお、本発明は、図１に示した業務用のゲーム装置１だけでなく、他のいかなる形態のゲーム装置に適用してもかまわない。例えば、図２４に、ホスト装置１３００と、このホスト装置１３００と通信回線１３０２を介して接続される端末１３０４−１〜１３０４−ｎとを含むゲーム装置に本実施の形態を適用した場合の例を示す。
【０１３３】
図２４に示す形態の場合、図１０に示した情報記憶媒体４００に記憶されるゲームプログラム４１０等は、例えば、ホスト装置１３００が制御可能な磁気ディスク装置、磁気テープ装置、メモリ等の情報記憶媒体１３０６に格納されている。また、端末１３０４−１〜１３０４−ｎが、ＣＰＵ、画像生成ＩＣ、音生成ＩＣ、を有し、スタンドアローンでゲーム画像、ゲーム音を生成できるものである場合には、ホスト装置１３００からは、ゲーム画像、ゲーム音を生成するためのゲームプログラム４１０等が端末１３０４−１〜１３０４−ｎに配送される。一方、スタンドアローンで生成できない場合には、ホスト装置１３００がゲーム画像、ゲーム音を生成し、これを端末１３０４−１〜１３０４−ｎに伝送し端末において出力することになる。
【０１３４】
あるいは、図２５に示すように、本実施の形態を家庭用ゲーム装置１２１０に適用してもよい。このゲーム装置１２１０は、ディスプレイ１２００、ゲームコントローラ１２０２、１２０４等が着脱自在な構成になっている。また、ゲームプログラムや本発明を実現するために必要な情報等のゲーム情報は、ゲーム装置１２１０に着脱自在な情報記憶媒体であるＣＤ−ＲＯＭ１２０６、ＩＣカード１２０８、メモリカード１２１２、および、ゲーム装置１２１０本体が備える情報記憶媒体等に格納されている。プレーヤは、ディスプレイ１２００に映し出されたゲーム画像を見ながら、ゲームコントローラ１２０２あるいは１２０４を用いてキャラクタを操作することによって、テニスゲームを楽しむ。
【０１３５】
なお、本発明は、上記実施の形態で説明したものに限らず、種々の変形実施が可能である。
例えば、本実施の形態では、リプレイ画像を生成する際、ボール７０の加速度を算出し、その算出した加速度をゲーム実行中に算出したボール７０の速度に加味して、リプレイ時軌道を生成することとして説明した。しかし、この方法に限定する必要はなく、ゲーム実行中に決定したボール７０の速度に、他の速度を加算して、ボール７０がラケットに衝突するように演出してもよいことは勿論である。
【０１３６】
具体的には、本実施の形態では、打撃時におけるボール７０の位置（ＸB1，ＹB1，ＺB1）と、ラケットの位置（ＸR，ＹR，ＺR）との差を算出し、ボール７０がコートやネット３８に接触した時間ｔ0と打撃される時間ｔ1との差（Ｔ＝ｔ1−ｔ0）時間Ｔに基づいて加速度αを算出することとした。しかし、加速度に限定する必要はなく、例えば、速度βを算出して、ゲーム実行中に決定した速度に加算するようにしてもよい。
βX＝（ＸR−ＸB1）／Ｔ    …（１３）
ＸB＝∫｛ｖX0＋βX｝δｔ＋ＸB0  …（１４）
積分区間は、時刻ｔ0を０として、「０」から「ｔ1−ｔ0」である。ここで、ｖX0は、ゲーム実行中におけるボール７０のＸ軸方向の速度、ＸB0は、時刻ｔ0におけるボールの座標を示している。Ｙ軸方向、Ｚ軸方向についても同様である。
【０１３７】
また、本実施の形態では、リプレイ画像を生成する際、ゲーム実行中における打撃動作の省略部分を補うために、如何なる場合でも、打撃時刻ｔDからΔｔF遡った時刻から打撃動作を開始させることとして説明した。しかし、係る設定によれば、打撃時刻ｔDからΔｔF遡った時刻には、まだ操作キャラクタが移動をしており、そのまま打撃動作を開始させたのでは却って矛盾が発生する場合がある。
【０１３８】
こうした問題を防ぐために、ゲーム実行中において、操作キャラクタが移動中である場合には、その旨を判別するためのフラグ（移動フラグ）をリプレイ情報に時刻と対応付けて記憶する。リプレイ画像を生成する際には、係る移動フラグが付されていない時間範囲内で打撃動作を制御する。また、係る場合には、打撃動作のモーション速度を変更して、移動フラグが付せられていない期間内で打撃動作が連続的に行われるようにしてもよい。
【０１３９】
また、本実施の形態では、リプレイ画像を生成する際、ゲーム実行中の打撃動作の省略部分を補うために、打撃期間の動作を全て生成しなおすこととして説明した。しかし、打撃前における操作キャラクタの姿勢と、打撃時における操作キャラクタの姿勢とを補間することによって、動作を補うようにしてもよい。例えば、図９に示すようにゲーム実行中に動作が行われた場合について、時刻ｔ0の姿勢から、時刻ｔ2の姿勢へと動作を補間してリプレイ画像を生成してもよいことは勿論である。
【０１４０】
本発明が適用されるゲームとしては、テニスゲーム以外に、野球、バドミントン、サッカー、クリケット、等の球技ゲームであってもよいことは勿論である。
また、本発明は、業務用・家庭用のゲーム装置の他に、シミュレータ、多数のプレーヤが参加するネットワーク対戦ゲーム、大型アトラクションゲーム、パーソナルコンピュータ等にも適用できる。
【０１４１】
【発明の効果】
本発明によれば、ゲーム実行中における移動体の通過移動位置に特定点を設定すると共に、移動体に対する行為に基づいて行為点を設定する。そして、再現画像を生成する際には、設定した特定点と行為点とを結んで、移動体の軌道を生成する。したがって、ゲーム実行中に生成した画像上で、移動体と行為をしたキャラクタとが接触しないような矛盾があっても、再現画像上では、キャラクタと移動体とが接触するように表現させることが可能となる。
【０１４２】
また、ゲーム実行中において、操作入力のタイミングが所定のタイミングよりも遅れた場合には、指示された動作の一部を省略して操作キャラクタに行わせる。一方、再生画像を表示する際には、動作の省略部分を補うようにして操作キャラクタに動作をさせた再現画像を生成する。したがって、ゲーム実行中の画像とは異なり、再現画像をよりリアルに演出することができる。
【図面の簡単な説明】
【図１】業務用のゲーム装置の一例を示す図である。
【図２】仮想空間の（ａ）斜俯瞰図、（ｂ）平面図、である。
【図３】接触判定面を説明するための図である。
【図４】ゲーム実行中に発生する矛盾の一例を示す図である。
【図５】リプレイ時軌道の一例を示す図である。
【図６】ボールとラケットの時間的な関係について説明するための図である。
【図７】ボールと判定線との位置関係を説明するための図である。
【図８】打撃指示の入力の許容範囲を説明するための図である。
【図９】ゲーム実行中の動作とリプレイ中の動作とを表示した一例を示す図である。
【図１０】機能ブロックの一例を示す図である。
【図１１】ネットの空間的範囲の一例を示す図である。
【図１２】衝突係数テーブルの一例を示す図である。
【図１３】軌道情報の一例を示す図である。
【図１４】キャラクタの構造（モデル）を示す図である。
【図１５】モーションデータの一例を示す図である。
【図１６】ヒットポイントの一例を示す図である。
【図１７】ヒットポイントの選定方法について説明するための図である。
【図１８】リプレイ情報の一例を示す図である。
【図１９】リプレイ開始時点ｔRPからリプレイ時軌道を生成した一例を示す図である。
【図２０】リプレイ期間と打撃期間との関係を説明するための図である。
【図２１】ゲーム実行中処理を説明するためのフローチャートである。
【図２２】リプレイ時処理を説明するためのフローチャートである。
【図２３】ハードウェア構成の一例を示す図である。
【図２４】ホスト装置と端末の接続形態の一例を示す図である。
【図２５】家庭用のゲーム装置の一例を示す図である。
【符号の説明】
１    ゲーム装置
１００      操作部
２００      処理部
２２０      ゲーム演算部
２２２    ボール制御部
２２４    キャラクタ制御部
２２６    軌道生成部
２２８    動作再現部
２４０      画像生成部
３００      表示部
４００      情報記憶媒体
４１０      ゲームプログラム
４１２    ゲーム演算プログラム
４１４    画像生成プログラム
４１６    モーションデータ
４１８    衝突係数テーブル
５００      一時記憶部
５１０      軌道情報
５１２      リプレイ情報
【図１】
0004950394.tif 000002
【図２】
0004950394.tif 000003
【図３】
0004950394.tif 000004
【図４】
0004950394.tif 000005
【図５】
0004950394.tif 000006
【図６】
0004950394.tif 000007
【図７】
0004950394.tif 000008
【図８】
0004950394.tif 000009
【図９】
0004950394.tif 000010
【図１０】
0004950394.tif 000011
【図１１】
0004950394.tif 000012
【図１２】
0004950394.tif 000013
【図１３】
0004950394.tif 000014
【図１４】
0004950394.tif 000015
【図１５】
0004950394.tif 000016
【図１６】
0004950394.tif 000017
【図１７】
0004950394.tif 000018
【図１８】
0004950394.tif 000019
【図１９】
0004950394.tif 000020
【図２０】
0004950394.tif 000021
【図２１】
0004950394.tif 000022
【図２２】
0004950394.tif 000023
【図２３】
0004950394.tif 000024
【図２４】
0004950394.tif 000025
【図２５】
0004950394.tif 000026