(57)【要約】【課題】ａ）通信対戦レースゲームにおいて、良好なレスポンスを維持しつつ、整合性の問題を可及的に解決すること、ｂ）ゲームサーバを必要とせずにネットワークゲームシステムを構築可能とすること。【解決手段】ネットワークを介して接続され、他のゲーム装置１２ａ〜１２ｄとの間で、他キャラクタを制御するための受信データ１５２を授受し、受信データ１５４に基づいて他キャラクタの移動を制御するゲーム装置１２ａ〜１２ｄにおいて、受信データ１５４のデータ送信時刻から描画対象フレームに対する遅延時間を算出し、算出した遅延時間及び受信データ１５２に基づいて、遅延時間における他キャラクタの位置、速度、姿勢等の変化を予測する。そして、実時間に基づいて移動計算された自キャラクタの移動制御と、遅延時間分の変位量を予測することで移動計算された他キャラクタの移動制御とを同時に行う。【選択図】図１
2006320502.tif 000002
【特許請求の範囲】
【請求項１】
所定の通信網を介して他機と通信を行う通信手段を備えたコンピュータに、前記他機との間で共有するゲーム空間を所与の視点から見た画像を描画させるとともに、前記他機との間で互いの操作対象キャラクタの移動制御情報を送信し合い、自機の操作対象キャラクタである自キャラクタと他機の操作対象キャラクタである他キャラクタとが前記ゲーム空間中を移動して競争する所定の通信対戦レースゲームを実行させるためのプログラムであって、
操作入力に基づいて自キャラクタの移動制御情報を更新していく自キャラクタ制御情報更新手段、
前記更新される自キャラクタ移動制御情報と送信時刻情報とを他機に送信する制御を行う送信制御手段、
前記更新される自キャラクタ移動制御情報に基づき、実時間で自キャラクタの移動を制御する自キャラクタ制御手段、
他キャラクタの移動制御情報及び当該移動制御情報送信時の送信時刻情報を他機から受信する制御を行う受信制御手段、
少なくとも前記受信された他キャラクタ移動制御情報のうちの最新の他キャラクタ移動制御情報に基づき、当該最新の他キャラクタ移動制御情報の送信時刻情報に基づく通信遅延時間分の他キャラクタの移動を予測することで他キャラクタの移動を制御する他キャラクタ予測制御手段、
として前記コンピュータを機能させるためのプログラム。
【請求項２】
前記他キャラクタ予測制御手段が、前記ゲーム空間中に設けられたコースの形状を加味して前記通信遅延時間分の他キャラクタの移動を予測するように前記コンピュータを機能させるための請求項１に記載のプログラム。
【請求項３】
前記他キャラクタ予測制御手段が、前記ゲーム空間中に設けられたコースの所定場所に、当該場所を通過する際の移動基準情報として予め定められた速度基準情報及び／又は当該場所通過基準位置情報を加味して前記通信遅延時間分の他キャラクタの移動を予測するように前記コンピュータを機能させるための請求項１又は２に記載のプログラム。
【請求項４】
前記移動基準情報は、所定の高速キャラクタが前記所定場所を通過した際の速度情報及び／又は当該場所通過基準位置情報として予め設定された情報であることを特徴とする請求項３に記載のプログラム。
【請求項５】
他キャラクタが前記所定場所を通過した際の速度情報及び／又は当該場所通過基準位置情報を移動履歴情報として記録する履歴記録手段として前記コンピュータを機能させ、
前記他キャラクタ予測制御手段が、前記記録された移動履歴情報を前記移動基準情報として、他キャラクタの移動を予測するように前記コンピュータを機能させる、
ための請求項３に記載のプログラム。
【請求項６】
自キャラクタが前記所定場所を通過した際の速度情報及び／又は当該場所通過基準位置情報を移動履歴情報として記録する履歴記録手段、
前記記録された移動履歴情報を他機に送信する制御を行う履歴送信制御手段、
他キャラクタの移動履歴情報を他機から受信する制御を行う履歴受信制御手段、
として前記コンピュータを機能させ、
前記他キャラクタ予測制御手段が、前記履歴受信制御手段により受信された移動履歴情報を前記移動基準情報として、他キャラクタの移動を予測するように前記コンピュータを機能させる、
ための請求項３に記載のプログラム。
【請求項７】
前記他キャラクタ予測制御手段が、前回予測時に求めた表示位置を、少なくとも今回予測時の予測位置に基づいて調節する位置調節手段を有し、前記調節した前回の表示位置を今回の表示位置とすることにより、最新の他キャラクタ移動制御情報が変わることによる他キャラクタの瞬間移動的な移動変動を抑制するように前記コンピュータを機能させるための請求項１〜６の何れか一項に記載のプログラム。
【請求項８】
前記位置調節手段が、前回予測時に求めた表示位置と今回予測時の予測位置との間に仮想バネを設定し、少なくとも前記設定した仮想バネの仮想力に基づき前回の表示位置を調節するように前記コンピュータを機能させるための請求項７に記載のプログラム。
【請求項９】
前記位置調節手段が、前回予測時に求めた表示位置と今回予測時の予測位置との間に仮想ダンパを更に設定し、前記設定した仮想バネ及び仮想ダンパによる総合的な仮想力に基づき前回の表示位置を調節するように前記コンピュータを機能させるための請求項８に記載のプログラム。
【請求項１０】
前記自キャラクタ制御情報更新手段が、操作入力に基づいて自キャラクタの姿勢制御情報を更に更新していき、
前記送信制御手段が、前記更新される自キャラクタ姿勢制御情報を併せて送信し、
前記自キャラクタ制御手段が、前記更新される自キャラクタ姿勢制御情報に基づき、実時間で自キャラクタの姿勢を制御する自キャラクタ姿勢制御手段を有し、
前記受信制御手段が、他キャラクタの姿勢制御情報を更に受信し、
前記他キャラクタ予測制御手段が、少なくとも前記受信された他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報のうちの最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報に基づき、当該最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御の送信時刻情報に基づく通信遅延時間分の他キャラクタの姿勢を予測することで他キャラクタの姿勢を制御する他キャラクタ姿勢予測制御手段を有する、
ように前記コンピュータを機能させるための請求項１〜９の何れか一項に記載のプログラム。
【請求項１１】
前記他キャラクタ姿勢予測制御手段が、移動中に取りうる限界の姿勢として予め定められた限界姿勢を超える姿勢をしないように他キャラクタの姿勢の変化を抑制する姿勢変化抑制手段を有するように前記コンピュータを機能させるための請求項１０に記載のプログラム。
【請求項１２】
前記他キャラクタ姿勢予測制御手段が、前回予測時に求めた表示姿勢を、少なくとも今回予測時の予測姿勢に基づいて調節する姿勢調節手段を有し、前記調節した前回の表示姿勢を今回の表示姿勢とすることにより、最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報が変わることによる他キャラクタの急激な姿勢変動を抑制するように前記コンピュータを機能させるための請求項１０又は１１に記載のプログラム。
【請求項１３】
前記姿勢調節手段が、前回予測時に求めた表示姿勢と今回予測時の予測姿勢との間の変位に対して、両姿勢の変位量が大きくなる程近似力を大きくする、両姿勢を近づけるための姿勢近似バネを設定し、少なくとも前記設定した姿勢近似バネの近似力に基づき前回の表示姿勢を調節するように前記コンピュータを機能させるための請求項１２に記載のプログラム。
【請求項１４】
前記姿勢調節手段が、前記姿勢近似バネの近似力を減殺させる姿勢近似ダンパを設定し、前記設定した姿勢近似ダンパによる減殺を加味した前記姿勢近似バネの近似力に基づき前回の表示姿勢を調節するように前記コンピュータを機能させるための請求項１３に記載のプログラム。
【請求項１５】
前記通信対戦レースゲームは、前記ゲーム空間に設定された地上を前記操作対象キャラクタが走行するレースゲームであり、
前記他キャラクタ予測制御手段の予測に従った他キャラクタの前記ゲーム空間への配置により、他キャラクタが前記ゲーム空間の地中に潜る場合又は地面から浮く場合を検出する検出手段、
前記検出手段による検出に応じて、他キャラクタを前記ゲーム空間に設定された地面に接地させるように、他キャラクタの前記ゲーム空間の高さ方向の位置を補正する高さ位置補正手段、
として前記コンピュータを機能させるための請求項１〜１４の何れか一項に記載のプログラム。
【請求項１６】
請求項１〜１５の何れか一項に記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
【請求項１７】
所定の通信網を介して他機と通信を行う通信手段を備え、前記他機との間で共有するゲーム空間を所与の視点から見た画像を描画するとともに、前記他機との間で互いの操作対象キャラクタの移動制御情報を送信し合い、自機の操作対象キャラクタである自キャラクタと他機の操作対象キャラクタである他キャラクタとが前記ゲーム空間中を移動して競争する所定の通信対戦レースゲームを実行するゲーム装置であって、
操作入力に基づいて自キャラクタの移動制御情報を更新していく自キャラクタ制御情報更新手段と、
前記更新される自キャラクタ移動制御情報と送信時刻情報とを他機に送信する制御を行う送信制御手段と、
前記更新される自キャラクタ移動制御情報に基づき、実時間で自キャラクタの移動を制御する自キャラクタ制御手段と、
他キャラクタの移動制御情報及び当該移動制御情報送信時の送信時刻情報を他機から受信する制御を行う受信制御手段と、
少なくとも前記受信された他キャラクタ移動制御情報のうちの最新の他キャラクタ移動制御情報に基づき、当該最新の他キャラクタ移動制御情報の送信時刻情報に基づく通信遅延時間分の他キャラクタの移動を予測することで他キャラクタの移動を制御する他キャラクタ予測制御手段と、
を備えたゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信対戦レースゲームを実行するためのプログラム等に関する。
【背景技術】
【０００２】
インターネット等の通信網を介したネットワークゲームと呼ばれる通信ゲームが数多く開発されている。一口にネットワークゲームと言っても、ＭＭＯＲＰＧ（Massively Multiplayer Online Role Playing Game）と呼ばれる数千人規模のユーザーがゲームサーバに接続して同時にプレイするネットワークゲームから、囲碁等の２人で対戦するネットワークゲームまで様々なネットワークゲームが存在する。
【０００３】
ネットワークゲームは、好きな時間に他のプレーヤとゲームを楽しむことができる点で人気が高いが、次のような問題がある。即ち、ネットワークゲームはネットワークを介するが故に、通信遅延が必然的に発生する。特に、インターネット等の公衆通信網を介する場合にあってはその通信遅延時間が不規則に変動する上に、その変動幅も不確定である。一方で、ネットワークゲームでは、各ゲーム機間で同一のゲーム空間が共有される必要があるため、同一の事象が同一順に発生・展開される必要がある。従って、各プレーヤが操作入力した結果の整合性が求められる。ところが、整合性を重視した場合、各プレーヤの操作結果をいつの時点でゲーム画面に反映できるかというレスポンスの問題が表れてくる。
【０００４】
１）整合性と２）レスポンスの問題はトレードオフの関係にあり、一方の問題解決を優先すると他方の問題が表面化する。何れの問題も通信遅延が原因であるため、通信遅延を解決すれば済む問題ではあるが、通信遅延を解消することは物理的に極めて困難である。例えば特許文献１には通信遅延を解消することを目的とした技術として、各ゲーム機の操作対象キャラクタの位置情報をゲームサーバを介してやり取りする技術が記載されている。
【特許文献１】特開２００４−１０５６７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術によりネットワークゲームシステムを構築した場合、各ゲーム機からゲームサーバにデータを送信する際（以下、「上り」という。）の通信遅延と、ゲームサーバから各ゲーム機にデータを配信する際（以下、「下り」という。）の通信遅延との２重の通信遅延が発生する。このため、ゲームサーバが、各ゲーム機から受信したデータを加工・補正等することで何らかの方法で通信遅延を解消させることができたとしても、それは「上り」に係る通信遅延の解消であって、各ゲーム機にデータを配信する「下り」の段階において新たな通信遅延が生じてしまう。従って、特許文献１の技術では通信遅延を解消することはできない。また、特許文献１の技術に従ってネットワークゲームシステムを構築するためには、実行中のゲームに関与するゲームサーバが必須となる。このため、需要に応じた台数分のゲームサーバが必要となり、実用化において問題となり得る。
【０００６】
さて、上述したトレードオフの関係にある１）整合性と２）レスポンスとの問題であるが、問題の比重がネットワークゲームの種類によって異なる。例えば、囲碁や将棋、チェスといったターン制のゲームにあっては、レスポンスは殆ど問題とならないが、各プレーヤが操作した結果の整合性は極めて重要である。具体的には、相手プレーヤの操作結果が自ゲーム機の画面に反映されるまでにいくら時間を要しようとも、操作した確かな結果を画面に反映させることが重要である。
【０００７】
この点は、整合性を重視する程度が異なるが、ＭＭＯＲＰＧ等においても同様である。即ち、各プレーヤの操作結果が各ゲーム機の画面に反映されるまでのレスポンスが多少悪くなろうとも、共有している同一のゲーム空間において発生する事象の順番等が正確である必要がある。
【０００８】
ところが、通信対戦レースゲームにおいては、整合性よりもレスポンスが重視される。逆の場合を想定すれば、その理由は明白である。例えば、車レースゲームにおいて、自キャラクタがカーブに差し掛かったために、自プレーヤがハンドルを操作する操作入力をした場面において、レスポンスよりも整合性を重視した場合を考える。この場合、レスポンスが悪いため、当該プレーヤのハンドル操作がなかなかゲーム画面に反映されない。その結果、自キャラクタの進行方向を変えようとして、更にハンドル操作がなされるであろう。ゲーム画面において、自キャラクタの進行方向が徐々に変わっていき、自キャラクタの進行方向が丁度良いと思って自プレーヤがハンドル操作を止めたとする。しかし、既に入力されているハンドル操作によって、更に自キャラクタの進行方向が曲げられてしまう場合があるであろう。このように、通信対戦レースゲームにおいては、レスポンスが重視される。
【０００９】
一方、通信対戦レースゲームであっても、整合性を無視するわけにいかないのは勿論である。例えば、他のゲーム機からデータを受信する度に他のゲーム機の操作対象キャラクタである他キャラクタの位置を更新するが、データを受信できない間は他キャラクタの位置を更新しないとした場合、データの受信ができない間、他キャラクタはゲーム空間中に停止し、データを受信した途端に移動するような表示がなされてしまう。
【００１０】
また、他キャラクタのデータを一定間隔で受信できたとしても次のような問題が生じる。即ち、自キャラクタについては良好なレスポンスで表示更新するため、操作入力に応じてリアルタイムに自キャラクタの表示位置が更新されていくが、他キャラクタの表示位置は通信遅延時間分遅れた過去の位置となる。具体的には、他のゲーム機から、通信遅延無く、リアルタイムにデータを受信することができないため、自ゲーム機で受信されるまでの通信遅延時間分の時差だけ、他キャラクタの表示位置が遅れる（即ち、後方に位置する）こととなる。従って、通信遅延時間が大きい場合には、各キャラクタが、実際からかけ離れた位置に表示され得る。
【００１１】
本発明は以上の課題に鑑みてなされたものであり、その目的とするところは、ａ）通信対戦レースゲームにおいて、良好なレスポンスを維持しつつ、整合性の問題を可及的に解決すること、ｂ）ゲームサーバを必要とせずにネットワークゲームシステムを構築可能とすること、である。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、第１の発明は、
所定の通信網（例えば、図１のネットワークＮ）を介して他機と通信を行う通信手段（例えば、図１８の通信部１６０）を備えたコンピュータ（例えば、図１のゲーム装置１２ａ）に、前記他機との間で共有するゲーム空間を所与の視点から見た画像を描画させるとともに、前記他機との間で互いの操作対象キャラクタの移動制御情報を送信し合い、自機の操作対象キャラクタである自キャラクタと他機の操作対象キャラクタである他キャラクタとが前記ゲーム空間中を移動して競争する所定の通信対戦レースゲームを実行させるためのプログラムであって、
操作入力に基づいて自キャラクタの移動制御情報を更新していく自キャラクタ制御情報更新手段（例えば、図１８の自キャラクタ移動制御部１２２４，図２６のステップＳ２）、
前記更新される自キャラクタ移動制御情報と送信時刻情報とを他機に送信する制御を行う送信制御手段（例えば、図１８の移動体制御情報送受信部１２２８，図２６のステップＳ４）、
前記更新される自キャラクタ移動制御情報に基づき、実時間で自キャラクタの移動を制御する自キャラクタ制御手段（例えば、図１８の自キャラクタ移動制御部１２２４、図２６のステップＳ２）、
他キャラクタの移動制御情報及び当該移動制御情報送信時の送信時刻情報を他機から受信する制御を行う受信制御手段（例えば、図１８の移動体制御情報送受信部１２２８，図２６のステップＳ４）、
少なくとも前記受信された他キャラクタ移動制御情報のうちの最新の他キャラクタ移動制御情報に基づき、当該最新の他キャラクタ移動制御情報の送信時刻情報に基づく通信遅延時間分の他キャラクタの移動を予測することで他キャラクタの移動を制御する他キャラクタ予測制御手段（例えば、図１８の他キャラクタ移動制御部１２２６、図２６のステップＳ６）、
として前記コンピュータを機能させるためのプログラムである。
【００１３】
また、ゲーム装置の発明として、所定の通信網を介して他機と通信を行う通信手段を備え、前記他機との間で共有するゲーム空間を所与の視点から見た画像を描画するとともに、前記他機との間で互いの操作対象キャラクタの移動制御情報を送信し合い、自機の操作対象キャラクタである自キャラクタと他機の操作対象キャラクタである他キャラクタとが前記ゲーム空間中を移動して競争する所定の通信対戦レースゲームを実行するゲーム装置（例えば、図１のゲーム装置１２ａ）であって、
操作入力に基づいて自キャラクタの移動制御情報を更新していく自キャラクタ制御情報更新手段（例えば、図１８の自キャラクタ移動制御部１２２４）と、
前記更新される自キャラクタ移動制御情報と送信時刻情報とを他機に送信する制御を行う送信制御手段（例えば、図１８の移動体制御情報送受信部１２２８）と、
前記更新される自キャラクタ移動制御情報に基づき、実時間で自キャラクタの移動を制御する自キャラクタ制御手段（例えば、図１８の自キャラクタ移動制御部１２２４）と、
他キャラクタの移動制御情報及び当該移動制御情報送信時の送信時刻情報を他機から受信する制御を行う受信制御手段（例えば、図１８の移動体制御情報送受信部１２２８）と、
少なくとも前記受信された他キャラクタ移動制御情報のうちの最新の他キャラクタ移動制御情報に基づき、当該最新の他キャラクタ移動制御情報の送信時刻情報に基づく通信遅延時間分の他キャラクタの移動を予測することで他キャラクタの移動を制御する他キャラクタ予測制御手段（例えば、図１８の他キャラクタ移動制御部１２２６）と、
を備えたゲーム装置である。
【００１４】
第１の発明等によれば、操作入力に基づいて自キャラクタの移動制御情報が更新され、その更新される自キャラクタ移動制御情報に基づき、実時間で自キャラクタの移動が制御される。従って、操作入力に対する自キャラクタの移動制御がレスポンス良くなされる。また、他キャラクタについては、他機から受信した最新の他キャラクタ移動制御情報に基づいて、通信遅延時間分の移動が予測されて制御される。従って、通信遅延時間が変化しようとも、通信遅延時間分の移動が予測されて他キャラクタの移動制御がなされる上、常に自機が知り得る最新の他キャラクタ移動制御情報に基づいて移動予測が行われるため、可及的に整合のとれたゲーム画像を生成・表示することができる。
【００１５】
また、自機と他機との間の通信によって各操作対象キャラクタの制御やゲーム画像の生成がなされるため、ゲーム実行中においてゲームサーバを必要としない。
【００１６】
第２の発明は、第１の発明のプログラムであって、
前記他キャラクタ予測制御手段が、前記ゲーム空間中に設けられたコースの形状を加味して前記通信遅延時間分の他キャラクタの移動を予測する（例えば、図２７のステップＳ２２）ように前記コンピュータを機能させるためのプログラムである。
【００１７】
この第２の発明によれば、コース形状が加味されて他キャラクタの移動予測がなされる。従って、例えば、コース形状に沿った移動となるように他キャラクタの移動を予測するといったことが可能となる。
【００１８】
第３の発明は、第１又は第２の発明のプログラムであって、
前記他キャラクタ予測制御手段が、前記ゲーム空間中に設けられたコースの所定場所に、当該場所を通過する際の移動基準情報（例えば、図１８のコースデータ１３８，図４０の履歴データ１５８）として予め定められた速度基準情報及び／又は当該場所通過基準位置情報を加味して前記通信遅延時間分の他キャラクタの移動を予測する（例えば、図２７のステップＳ２２，Ｓ２４、図４３のステップＳ１０６）ように前記コンピュータを機能させるためのプログラムである。
【００１９】
ここで、所定場所とは、例えば第１コーナといった一定の広さを持った概念である。
第３の発明によれば、他キャラクタが所定場所を通過する場合に、速度基準情報及び／又は当該場所通過基準位置情報である移動基準情報が加味されて、移動予測がなされる。
【００２０】
具体的には、例えば、第４の発明として、移動基準情報を、所定の高速キャラクタが前記所定場所を通過した際の速度情報及び／又は当該場所通過基準位置情報として予め設定された情報（例えば、図１８のコースデータ１３８）としてもよい。
【００２１】
この第４の発明によれば、例えば所定の高速キャラクタが所定場所を通過した際の速度及び／又は通過位置に近づけるような移動予測をすることで他キャラクタが高速キャラクタのような移動をするようにするといったことができる。高速キャラクタとしては、例えば、当該レースコースを最短時間で移動したキャラクタが考えられる。
【００２２】
第５の発明は、第３の発明のプログラムであって、
他キャラクタが前記所定場所を通過した際の速度情報及び／又は当該場所通過基準位置情報を移動履歴情報として記録する履歴記録手段（例えば、図４０のゲーム進行制御部１２２２，図４２のステップＳ１０４）として前記コンピュータを機能させ、
前記他キャラクタ予測制御手段が、前記記録された移動履歴情報を前記移動基準情報として、他キャラクタの移動を予測する（例えば、図４０の他キャラクタ移動制御部１２３０，図４３のステップＳ１０６）ように前記コンピュータを機能させる、
ためのプログラムである。
【００２３】
この第５の発明によれば、他キャラクタが所定場所を通過した際の速度情報及び／又は当該場所通過基準位置情報が移動履歴情報として記録され、再度所定場所を通過する際に、記録しておいた移動履歴情報を加味した移動予測がなされる。従って、所定場所を通過する際の他キャラクタの過去の傾向（癖とも言い得る。）に従った移動予測を行い得ることとなり、より精度の高い予測となり得る。
【００２４】
第６の発明は、第３の発明のプログラムであって、
自キャラクタが前記所定場所を通過した際の速度情報及び／又は当該場所通過基準位置情報を移動履歴情報として記録する履歴記録手段（例えば、図１８のゲーム進行制御部１２２２）、
前記記録された移動履歴情報を他機に送信する制御を行う履歴送信制御手段（例えば、図１８のゲーム進行制御部１２２２）、
他キャラクタの移動履歴情報を他機から受信する制御を行う履歴受信制御手段（例えば、図１８のゲーム進行制御部１２２２）、
として前記コンピュータを機能させ、
前記他キャラクタ予測制御手段が、前記履歴受信制御手段により受信された移動履歴情報を前記移動基準情報として、他キャラクタの移動を予測するように前記コンピュータを機能させる、
ためのプログラムである。
【００２５】
第５の発明では、自機において、他キャラクタが所定場所を通過した際の他キャラクタの速度情報及び／又は当該場所通過基準位置情報を記録することとした。即ち、他キャラクタが所定場所を通過した際の情報は自機内におけるものであるため、自機内で予測した結果の情報を記録する構成である。この第６の発明によれば、自機及び他機それぞれの装置において、当該装置の操作対象キャラクタの速度情報及び／又は当該場所通過基準位置情報が記録される。そして互いの装置間で送受信される。この結果、他キャラクタの情報は、他機における操作入力に応じて他機においてリアルタイムに算出・制御された情報となる。従って、所定場所を実際に通過した際の他キャラクタの実際の傾向に従った移動予測を行い得ることとなり、より精度の高い予測となり得る。
【００２６】
第７の発明は、第１〜第６の何れかの発明のプログラムであって、
前記他キャラクタ予測制御手段が、前回予測時に求めた表示位置を、少なくとも今回予測時の予測位置に基づいて調節する位置調節手段（例えば、図１８の他キャラクタ移動制御部１２２６、図２７のステップＳ２８）を有し、前記調節した前回の表示位置を今回の表示位置とすることにより、最新の他キャラクタ移動制御情報が変わることによる他キャラクタの瞬間移動的な移動変動を抑制するように前記コンピュータを機能させるためのプログラムである。
【００２７】
今回予測時の予測位置の基礎は、受信した最新の他キャラクタ移動制御情報であるが、前回予測時の表示位置の基礎は、最新の他キャラクタ移動制御情報よりも過去の他キャラクタ移動制御情報である。つまり、基礎とする他キャラクタ移動制御情報が変わっている。そこで、最新の他キャラクタ移動制御情報と過去の他キャラクタ移動制御情報との間で急操作がなされていた場合、その操作が今回予測時の予測位置に反映されることで、他キャラクタの位置が瞬間移動的に大きく変わる場合があり得る。しかし、第７の発明によれば、前回予測時に求めた表示位置が、少なくとも今回予測時の予測位置に基づいて調節されて今回の表示位置となる。従って、今回予測時の基礎とする他キャラクタ移動制御情報が、前回予測時の基礎となった他キャラクタ移動制御情報から変わった場合であっても、前回予測時の表示位置と今回予測時の予測位置との間で調節が図られるため、瞬間移動的に他キャラクタの位置が大きく変わるような事態を回避し得る。
【００２８】
第８の発明は、第７の発明のプログラムであって、
前記位置調節手段が、前回予測時に求めた表示位置と今回予測時の予測位置との間に仮想バネを設定し、少なくとも前記設定した仮想バネ（例えば、図３１のステップＴ２６）の仮想力に基づき前回の表示位置を調節するように前記コンピュータを機能させるためのプログラムである。
【００２９】
この第８の発明によれば、前回予測時の表示位置と今回予測時の予測位置との間に仮想バネが設定され、この仮想バネの仮想力に基づいて前回の表示位置が調節される。このため、前回予測時の表示位置が今回予測時の予測位置の方向に修正される結果、前回予測時の表示位置から相当離れた位置に、突然に他キャラクタが移動するような事態を回避し得る。
【００３０】
第９の発明は、第８の発明のプログラムであって、
前記位置調節手段が、前回予測時に求めた表示位置と今回予測時の予測位置との間に仮想ダンパ（例えば、図３１のステップＴ２８）を更に設定し、前記設定した仮想バネ及び仮想ダンパによる総合的な仮想力に基づき前回の表示位置を調節するように前記コンピュータを機能させるためのプログラムである。
【００３１】
この第９の発明によれば、仮想バネに加えて仮想ダンパが設定される。これにより、仮想バネによる仮想力が大きいために、前回予測時の表示位置の調節が過度の調節となる事態を回避し、仮想バネによる仮想力を徐々に作用させることができるようになる。
【００３２】
第１０の発明は、第１〜第９の何れかの発明のプログラムであって、
前記自キャラクタ制御情報更新手段が、操作入力に基づいて自キャラクタの姿勢制御情報を更に更新していき、
前記送信制御手段が、前記更新される自キャラクタ姿勢制御情報（例えば，図２４の受信データ１５２）を併せて送信し、
前記自キャラクタ制御手段が、前記更新される自キャラクタ姿勢制御情報に基づき、実時間で自キャラクタの姿勢を制御する自キャラクタ姿勢制御手段（例えば、図１８の自キャラクタ移動制御部１２２４、図２６のステップＳ２）を有し、
前記受信制御手段が、他キャラクタの姿勢制御情報を更に受信し、
前記他キャラクタ予測制御手段が、少なくとも前記受信された他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報のうちの最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報に基づき、当該最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御の送信時刻情報に基づく通信遅延時間分の他キャラクタの姿勢を予測することで他キャラクタの姿勢を制御する他キャラクタ姿勢予測制御手段（例えば、図１８の他キャラクタ移動制御部１２２６、図２７のステップＳ２６）を有する、
ように前記コンピュータを機能させるためのプログラムである。
【００３３】
第１０の発明によれば、操作入力に基づいて自キャラクタの姿勢制御情報が更新され、その更新される自キャラクタ姿勢制御情報に基づき、実時間で自キャラクタの姿勢が制御される。従って、操作入力に対する自キャラクタの姿勢制御がレスポンス良くなされる。また、他キャラクタについては、他機から受信した最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報に基づいて、通信遅延時間分の姿勢が予測されて制御される。従って、通信遅延時間が変化しようとも、通信遅延時間分の姿勢が予測されて他キャラクタの姿勢制御がなされる上、常に自機が知り得る最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報に基づいて予測が行われるため、可及的に整合のとれたゲーム画像を生成・表示することができる。
【００３４】
第１１の発明は、第１０の発明のプログラムであって、
前記他キャラクタ姿勢予測制御手段が、移動中に取りうる限界の姿勢として予め定められた限界姿勢を超える姿勢をしない（例えば、図１８の他キャラクタ移動制御部１２２６，図３０のステップＴ８〜Ｔ１４）ように他キャラクタの姿勢の変化を抑制する姿勢変化抑制手段を有するように前記コンピュータを機能させるためのプログラムである。
【００３５】
第１１の発明によれば、例えば、移動中の姿勢として想定外の姿勢である異常な姿勢や矛盾する姿勢を他キャラクタが取らないようにすることができるようになる。
【００３６】
第１２の発明は、第１０又は第１１の発明のプログラムであって、
前記他キャラクタ姿勢予測制御手段が、前回予測時に求めた表示姿勢を、少なくとも今回予測時の予測姿勢に基づいて調節する姿勢調節手段（例えば、図１８の他キャラクタ移動制御部１２２６，図２７のステップＳ３０）を有し、前記調節した前回の表示姿勢を今回の表示姿勢とすることにより、最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報が変わることによる他キャラクタの急激な姿勢変動を抑制するように前記コンピュータを機能させるためのプログラムである。
【００３７】
今回予測時の予測姿勢の基礎は、受信した最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報であるが、前回予測時の表示姿勢の基礎は、最新の他キャラクタ移動制御情報よりも過去の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報である。つまり、基礎とする他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報が変わっている。そこで、最新の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報と過去の他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報との間で急操作がなされていた場合、その操作が今回予測時の予測姿勢に反映されることで、他キャラクタの姿勢が急激に変動する場合があり得る。しかし、第１２の発明によれば、前回予測時に求めた表示姿勢が、少なくとも今回予測時の予測姿勢に基づいて調節されて今回の表示姿勢となる。従って、今回予測時の基礎とする他キャラクタ移動制御情報及び他キャラクタ姿勢制御情報が、前回予測時の基礎となった情報から変わった場合であっても、前回予測時の表示姿勢と今回予測時の予測姿勢との間で調節が図られるため、他キャラクタの姿勢が急激に変動するような事態を回避し得る。
【００３８】
第１３の発明は、第１２の発明のプログラムであって、
前記姿勢調節手段が、前回予測時に求めた表示姿勢と今回予測時の予測姿勢との間の変位に対して、両姿勢の変位量が大きくなる程近似力を大きくする、両姿勢を近づけるための姿勢近似バネ（例えば、図３２のステップＴ４６）を設定し、少なくとも前記設定した姿勢近似バネの近似力に基づき前回の表示姿勢を調節するように前記コンピュータを機能させるためのプログラムである。
【００３９】
この第１３の発明によれば、前回予測時の表示姿勢と今回予測時の予測姿勢とを近づけるための姿勢近似バネが設定され、この姿勢近似バネの近似力に基づいて前回の表示姿勢が調節される。このため、前回予測時の表示姿勢が今回予測時の姿勢に近づくこととなる結果、今回予測時の他キャラクタが、前回予測時の表示姿勢から急激に変化した姿勢を取るような事態を回避し得る。
【００４０】
第１４の発明は、第１３の発明のプログラムであって、
前記姿勢調節手段が、前記姿勢近似バネの近似力を減殺させる姿勢近似ダンパ（例えば、図３２のステップＴ４８）を設定し、前記設定した姿勢近似ダンパによる減殺を加味した前記姿勢近似バネの近似力に基づき前回の表示姿勢を調節するように前記コンピュータを機能させるためのプログラムである。
【００４１】
この第１４の発明によれば、姿勢近似バネに加えて姿勢近似ダンパが設定される。このため、姿勢近似バネによる近似力が大きく、前回予測時の表示姿勢の調節が過度の調節となる事態を回避し、姿勢近似バネの近似力を徐々に作用させることができるようになる。
【００４２】
第１５の発明は、第１〜第１４の何れかの発明のプログラムであって、
前記通信対戦レースゲームは、前記ゲーム空間に設定された地上を前記操作対象キャラクタが走行するレースゲーム（例えば、図３のバイクレースゲーム）であり、
前記他キャラクタ予測制御手段の予測に従った他キャラクタの前記ゲーム空間への配置により、他キャラクタが前記ゲーム空間の地中に潜る場合又は地面から浮く場合を検出する検出手段（例えば、図１８の他キャラクタ移動制御部１２２６，図２７のステップＳ３２）、
前記検出手段による検出に応じて、他キャラクタを前記ゲーム空間に設定された地面に接地させるように、他キャラクタの前記ゲーム空間の高さ方向の位置を補正する高さ位置補正手段（例えば、図１８の他キャラクタ移動制御部１２２６，図３３のステップＴ６６）、
として前記コンピュータを機能させるためのプログラムである。
【００４３】
この第１５の発明によれば、通信対戦レースゲームは操作対象キャラクタが地上を走行するレースゲームである。予測に従って他キャラクタをゲーム空間に配置することとした場合、その予測やコースの形状等によっては、他キャラクタが地中に潜る場合又は地面から浮く場合が起こり得るため、検出手段が他キャラクタが地中に潜る場合又は地面から浮く場合を検出し、当該検出に応じて高さ位置補正手段が他キャラクタの高さ方向の位置を補正する。この結果、他キャラクタが地中に潜ってしまう、或いは地面から浮いてしまうといった奇異な状態を回避し得る。
【００４４】
第１６の発明は、第１〜第５の発明の何れかのプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体（例えば、図１８の記憶部１３０）である。
【００４５】
第１６の発明によれば、記憶されたプログラムがコンピュータによって読み取られて実行されることにより、第１〜第１５の発明と同様の作用効果を奏する情報記憶媒体を実現し得る。
【発明の効果】
【００４６】
本発明によれば、通信対戦レースゲームにおいて、良好なレスポンスを維持しつつ、整合性の問題を可及的に解決することができる。また、通信対戦レースゲームの実行中においてゲームサーバを必要としない。
【発明を実施するための最良の形態】
【００４７】
以下、図面を参照して、本発明を実施するための最良の形態を説明する。なお、以下では、家庭用ゲーム装置において、周回コースを走行してラップタイムやゴール順位を競うバイクレースゲームを実行する場合について説明するが、本発明の適用がこれに限定されるものではない。
【００４８】
［第１実施形態］
１−１．システム概要
図１は、第１実施形態におけるゲームシステム１０の概略構成を示す図である。同図に示すように、ゲームシステム１０は、４台のゲーム装置１２ａ〜１２ｄを備えて構成される。各ゲーム装置１２ａ〜１２ｄは、例えば、無線通信回線、専用線、ツイストペアケーブル、光通信ケーブル等の通信回線を介し、インターネット等の公衆回線網で構成されるネットワークＮを利用して接続されている。尚、ゲームシステム１０を構成するゲーム装置の台数が一例であるのは勿論である。
【００４９】
ネットワークゲームを実現するシステム構成として様々な構成があるが本実施形態では、ゲームサーバを用いることなく複数のゲーム端末同士が通信回線を介して接続されるいわゆるピアツーピアの構成を例にとって説明する。勿論、複数のゲーム端末が物理的に結合した、全体として１台のシステム（例えば業務用ゲーム機）となっている構成等他の構成へも本発明を適用することができる。
【００５０】
ゲーム装置１２ａ〜１２ｄは、プレーヤがネットワークゲームをプレイする端末装置であって、例えば家庭用・業務用の各種ゲーム装置や、パソコンなどによって実現される。第１実施形態において、ゲーム装置１２ａ〜１２ｄは、他のゲーム装置１２ａ〜１２ｄとの間でデータの送受を行うことにより、ネットワークゲームのゲームプレイに係るゲームデータを取得し、取得したゲームデータに基づいてゲーム画像を生成して表示する。
ゲーム装置１２ａ〜１２ｄは何れも同じ構成を有している。以下では、このうちのゲーム装置１２ａを中心に説明する。
【００５１】
具体的には、例えば、ゲーム装置１２ａは、自ゲーム装置の操作対象である移動体オブジェクト（相対的な表現であるが、当該ゲーム装置の操作対象の移動体オブジェクト（以下、「キャラクタ」と呼ぶ）を、当該ゲーム装置の立場から見た場合、以下、「自キャラクタ」と呼ぶ）に関するゲームデータとしてデータ（１）を他のゲーム装置１２ｂ〜１２ｄに送信する。ゲーム装置１２ｂ〜１２ｄは、受信したデータ（１）に基づいて、ゲーム装置１２ｂ〜１２ｄにとって他のゲーム装置１２ａの操作対象である移動体オブジェクト（自キャラクタと反対に、当該ゲーム装置以外のゲーム装置の操作対象の移動体オブジェクトを、当該ゲーム装置の立場から見た場合、以下、「他キャラクタ」と呼ぶ）の位置や姿勢等を演算し、該他キャラクタを表示制御する。
【００５２】
データ（１）には、キャラクタを移動制御するために必要な情報（以下、「移動体制御情報」と呼ぶ）を含んでいる。具体的には、図２４に示すように、キャラクタを特定するための識別番号、該キャラクタの転倒の有無を示す転倒フラグ、プレーヤから入力される操作データであるアクセル量Ia、ブレーキ量Ib、ハンドル値Ih、該キャラクタの位置座標Ｐ、速度Ｖ、角度Θ、角速度Ω、データ(1)がゲーム装置１２ａから送信された時刻を示すデータ送信時刻といったデータを含んでいる。
【００５３】
１−２．ゲーム装置の外観例
図２は、ゲーム装置１２ａ〜１２ｄに家庭用ゲーム装置１２００を適用した場合の概略外観図である。同図に示すように、家庭用ゲーム装置１２００は、本体装置１２１０と、プレーヤがゲーム操作を入力するための方向キー１２０４やボタンスイッチ１２０６を有するゲームコントローラ１２０２と、スピーカ１２２２を有するディスプレイ１２２０と、を備える。ゲームコントローラ１２０２は本体装置１２１０に接続され、ディスプレイ１２２０は、画像信号及び音信号を伝送可能なケーブルＫ１，Ｋ２によって本体装置１２１０に接続されている。
【００５４】
本体装置１２１０がゲーム処理を行うために必要なプログラムやデータ等を含むゲーム情報等は、例えば本体装置１２１０に着脱自在な情報記憶媒体であるＣＤ−ＲＯＭ１２１２やメモリカード１２１４、ＩＣカード１２１６等に格納されている。或いは、ゲーム情報等は、本体装置１２１０が具備する通信装置１２１８を介してネットワークＮに接続し、外部装置から取得することとしても良い。ここで、ネットワークＮとは、データ授受が可能な通信路を意味する。即ち、ネットワークＮとは、直接接続のための専用線（専用ケーブル）やイーサネット（登録商標）等によるＬＡＮの他、電話通信網やケーブル網、インターネット等の通信網を含む意味であり、また、通信方式については有線／無線を問わない。
【００５５】
また、本体装置１２１０は、例えばＣＰＵの他、ＲＯＭやＲＡＭ等のメモリを搭載した制御ユニット、ＣＤ−ＲＯＭ１２１２等の情報記憶媒体の読取装置を具備する。本体装置１２１０は、ＣＤ−ＲＯＭ１２１２等から読み出したゲーム情報と、ゲームコントローラ１２０２からの操作信号とに基づいて種々のゲーム処理を実行し、ゲーム画面の画像信号及びゲーム音の音信号を生成する。そして、生成した画像信号及び音信号をディスプレイ１２２０に出力して、ディスプレイ１２２０にゲーム画面を表示させるとともに、スピーカ１２２２からゲーム音を出力させる。プレーヤは、ディスプレイ１２２０に表示されたゲーム画面を見、スピーカ１２２２から出力されるゲーム音を聞きながら、ゲームコントローラ１２０２を操作してゲームを楽しむ。
【００５６】
１−３．ゲームの概要
図３は、第１実施形態におけるゲーム画面の一例を示す図である。ゲーム画面は、仮想現実（ＶＲ）のコンピュータグラフィックス（ＣＧ）として描かれる。同図に示すように、プレーヤが操作するキャラクタであるバイク４ａ、他のプレーヤが操作するキャラクタであるバイク４ｂ〜４ｄは、予め定められたサーキットのコース２上を走行するように表示される。コース２の周回数や一周のラップタイムは、タイム表示部６に表示される。プレーヤは、運転技術（ゲーム操作技術）を駆使して最速のラップタイムを競い、他のプレーヤにより操作されるバイク４ｂ〜４ｄと着順を競う。
【００５７】
また、ゲーム画面は、ディスプレイ１２２０の仕様に従った所定時間レート（例えば、１／６０秒。この時間のことを「１フレーム」という。即ち、１／６０秒間隔で描画されるタイミングのことをいう。）で繰り返し描画される。描画の都度、制御ユニットは、仮想空間中にコース２を含むサーキットを構成するオブジェクトとバイク４ａ〜４ｄ等のオブジェクトを配置する。具体的には、プレーヤによる操作入力に基づいて、バイク４ａの速度・加速度・車体の姿勢等をシミュレートする。また、他のゲーム装置１２ｂ〜１２ｄから受信した移動体制御情報に基づいて、他プレーヤの操作するバイク４ｂ〜４ｄの速度・加速度・車体の姿勢等をシミュレートする。シミュレート結果に従ってバイク４ａ〜４ｄをコース２上で移動（再配置）させる。そして、例えばバイク４ａの進行方向に対して後方に配置された仮想視点から見た画像を生成し、ゲーム画面としてディスプレイ１２２０に表示させる。
【００５８】
プレーヤは、ディスプレイ１２２０に表示されるゲーム画面を見ながら、ゲームコントローラ１２０２を操作してバイクレースゲームを楽しむ。
【００５９】
１−４．原理
次に、他のゲーム装置１２ｂ〜１２ｄから受信したゲームデータに基づいて、他キャラクタの移動計算を行い、自ゲーム装置１２ａに表示制御させるための原理について説明する。以下では、他キャラクタの走行状況に応じて通常走行時、転倒時に分けてそれぞれ説明する。
【００６０】
まず、キャラクタの方向について定義する。図４（ａ）は、バイク４のモデル座標系であるローカル座標系（ｘ，ｙ，ｚ）を説明するための図である。なお、仮想三次元空間（ゲーム空間）の座標系であるワールド座標系を（Ｘ，Ｙ，Ｚ）と大文字で表し、ローカル座標系と区別する。バイク４のローカル座標系は、バイク４の重心位置を原点とし、バイク４の前後方向をｚ軸とし、前後方向の前方方向をｚ軸正方向とする左手座標系であり、高さ方向がｙ軸、横方向がx軸である。
【００６１】
図４（ｂ）は、バイク４の回転角を説明するための図である。バイク４が仮想三次元空間（ゲーム空間）に配置される際の姿勢を決定づけるのがこの回転角である。バイク４は、図４（ａ）のローカル座標系でモデリングされた後、図４（ｂ）に示すそれぞれの軸回りに回転されて姿勢が決定されて、ゲーム空間に配置される。即ち、ゲーム空間においては、バイク４を配置すべき配置点が設定され、この配置点にバイク４の代表点（例えば重心位置）が位置するように、ローカル座標系においてモデリングされたバイク４が配置されるが、その配置時の姿勢は、図４（ｂ）に示すそれぞれの軸回りの回転によって決定されることとなる。ｘ，ｙ，ｚ軸それぞれの軸回りの回転方向はピッチング方向、ヨー方向、ロール方向である。
【００６２】
また、ピッチング方向の正負は、ゲーム空間において、バイク前方部が後方部より上方に位置するように回転させる場合の回転角を＋、下方に位置するように回転させる場合の回転角を−とする。ロール方向の正負は、ゲーム空間において、重心位置（ローカル原点）からみて、バイク上部が下部より右側に位置するように回転させる場合の回転角を＋、左側に位置するように回転させる場合の回転角を−とする。また、ヨー方向の正負は、ゲーム空間において、バイク４の速度ベクトルの方向に対して、バイク４の前方部が後方部より右側に位置するように回転させる場合の回転角を＋、左側に位置するように回転させる場合（すなわち、速度ベクトルの方向に沿った向きにバイク４を配置させるように回転させる場合）の回転角を−とする。
【００６３】
［通常走行時］
１−４−１．位置の予測
通常走行時における他キャラクタの位置の予測原理について説明する。他ゲーム装置１２ｂ〜１２ｄから受信した移動体制御情報（以下、「受信データ」と呼ぶ）は、他ゲーム装置１２ｂ〜１２ｄが送信してから受信されるまでの通信に係る遅れを持っている。例えば、図５に示すように、送信時刻が時刻ｔ０である受信データに基づいて、時刻ｔ３における他キャラクタの位置の予測を行う。尚、同図においては一例として、通信遅延時間を３フレームとしているが、実際には３フレーム以外の場合もあることはいうまでもない。以下では、通信遅延時間の代表例として、通信遅延時間が３フレームだった場合について説明する。
【００６４】
時刻ｔ３における他キャラクタの位置を予測するには、まず、時刻ｔ０の移動体制御情報である受信データに基づいて、１フレーム後の時刻ｔ１における移動体制御情報を予測する。次いで、時刻ｔ１の移動体制御情報に基づいて、１フレーム後の時刻ｔ２における移動体制御情報を予測する。そして、時刻ｔ２の移動体制御情報に基づいて、１フレーム後の時刻ｔ３の移動体制御情報を予測する。このように、１フレーム毎の移動体制御情報を累積的に求めていくことで、描画対象フレームにおける他キャラクタの位置を予測する。
【００６５】
具体的に、図６を参照して、１フレーム後の位置を予測する方法について説明する。まず、時刻ｔ０における位置の近傍（例えば、制御点Ｑ０）に設定されているカーブの曲率を後述するコースデータ１３８（図２０参照）から取得する。次いで、時刻ｔ０における速度Ｖt0と、曲率ｒｔと、定数ｋとを乗算して、速度ベクトルをヨー方向（ここではゲーム空間におけるヨー方向）にどのくらい回転させれば円弧を近似できるか、すなわち、カーブに沿った速度ベクトルを求める。また、この円弧を近似した傾きがヨー方向の予測角度θyt1となる。図６に示すように、時刻ｔ０におけるヨー方向の角度θyt0とヨー方向の予測角度θyt1との差分から、回転させるべき角度（θyt1―θyt0）を求めることができる。
【００６６】
そして、速度ベクトルをヨー方向に求めた角度（θyt1―θyt0）だけ回転させ、この速度ベクトルの単位時間あたりの位置変化量を時刻ｔ０における位置Ｐt0に加算することにより、時刻ｔ１における位置Ｐt1を求めることができる。
【００６７】
１−４−２．速度の予測
次に、速度の予測について説明する。速度の予測は、上述した位置の予測と同様に、１フレーム毎の速度を累積的に求めていくことで、描画対象フレームにおける他キャラクタの速度Ｖを予測する。速度Ｖの変化量（即ち、加速度）は、プレーヤ操作により入力されるアクセル量Ia、ブレーキ量Ib、バイクの傾きによる抵抗、空気抵抗、エンジンロス等に基づいて算出される。
【００６８】
具体的に、図７を参照して、１フレーム後の速度を予測する方法について説明する。先ず、時刻ｔ１における予測位置の目標速度Ｖ0を取得する。目標速度Ｖ0とは、例えば、上級プレーヤにより操作される高速キャラクタが当該コースを走行した場合（例えば、走行ラインＬＴ）において、制御点近傍の通過時点の速度を基準として設定される速度であり、後述するコースデータ１３８に格納されている。目標速度Ｖ0と時刻ｔ０における速度Ｖt0とを比較し、速度Ｖt0が該位置における目標速度Ｖ0より高速となる場合は、一時的にブレーキを踏んでいるかのように、目標速度Ｖ0と速度Ｖt0とに基づいてブレーキ量Ｉbを補正ブレーキ量Ｉbfに補正する。
【００６９】
時刻ｔ１における予測速度は、時刻ｔ０における速度Ｖt0に、単位時間加速度にアクセル量Iaを乗算した値を加算し、単位時間減速度にブレーキ量Ib（又は補正ブレーキ量Ｉbf）を乗算した値を減算し、補正係数αを加算することで求める。単位時間加速度は、アクセル量Iaに応じた単位時間あたりの加速度を算出するための係数であり、単位時間減速度は、ブレーキ量Ibに応じた単位時間あたりの減速度を算出するための係数である。また、補正係数αは、バイクの傾きによる抵抗、空気抵抗、エンジンロス等による影響を補正するための係数である。
【００７０】
１−４−３．角度の予測
次に、角度の予測について説明する。なお、ヨー方向の角度（ｙ成分）については、上述した位置の予測において求められた速度ベクトルの方向にバイク４の前方方向が向くようにバイク４が配置されるものであるため、以下では、ピッチング方向の角度（ｘ成分）と、ロール方向の角度（ｚ成分）の予測について図８、図９を参照して説明する。尚、図８、図９において、１点鎖線は、ワールド座標系のＹ軸方向及び水平方向（Ｘ−Ｚ平面）を示しており、実線は、ローカル座標を示している。
【００７１】
ピッチング方向の角度の予測は、上述の位置、速度の予測と異なり、複数フレームの変化を纏めて計算する。具体的には、図８の式に示すように、ピッチング方向の予測角度θxt3は、時刻ｔ０におけるピッチング方向の角度θxt0に、時刻ｔ０におけるピッチング方向の角速度ωxt0と遅延時間（ｔ３−ｔ０）とを乗算した値を加算して求める。遅延時間とは、データの送信時刻ｔ０と描画対象となる時刻との差分であり、図５の例として描画対象の時刻をｔ３としている。図９〜図１２においても同様である。
【００７２】
ここで、ピッチング方向の角度変化の前後において、θxの正負が入れ替わっているか否かによって、予測角度を０に設定する。ゲーム実行中におけるピッチング方向の角度変化としては、例えば、図８に示すように、バイクの後輪を基軸として前輪を持ち上げたような姿勢（いわゆる、ウィリー）や、バイクの前輪を基軸として後輪を持ち上げたような姿勢（いわゆる、ジャックナイフ）などがある。例えば、時刻ｔ０において、バイクの姿勢がウィリーから地面に戻る途中であった場合（即ち、角速度の向きがマイナス方向であった場合）、バイクの前輪が路面に着地した後は、それ以上同じピッチング方向へは回転しない。つまり、角度変化の前後で正負の符号が入れ替わることがないと考えられる。従って、受信データにおけるピッチング方向の角度と予測角度の符号が入れ替わってしまった場合は、予測角度を０に設定することで、バイクが地中に潜り込まない又は地面に浮かないようにする。
【００７３】
また、通常走行時では、ピッチング方向の角度は、バイクが走行可能な姿勢を取り得るように、適性範囲（例えば、−60°≦θx≦60°）が設定されている。従って、予測角度θxt3が設定されている適性範囲を超えてしまうか否かを判定し、適性範囲を超えてしまう場合には、予測角度θxt3を適性範囲の上限又は下限の何れか近いほうに補正する。
【００７４】
ロール方向の角度の予測は、ピッチング方向の角度の予測と同様に複数フレームの変化を纏めて計算する。つまり、図９に示すように、ロール方向の予測角度θzt3は、時刻ｔ０における角度のｚ成分θzt0に、時刻ｔ０における角速度のｚ成分ωzt0と、遅延時間（ｔ３−ｔ０）とを乗算した値を加算して求める。
【００７５】
また、通常走行時では、ロール方向の角度は、ピッチング方向の角度と同様に、バイクが走行可能な姿勢を取り得るように、適性範囲（例えば、−60°≦θx≦60°）が設定されている。従って、予測角度θzt3が設定されている適性範囲を超えてしまう場合には、予測角度θzt3を適性範囲の上限又は下限の何れか近い方に補正する。
【００７６】
［転倒時］
１−４−４．位置の予測
次に、転倒時における位置の予測について説明する。転倒時であるか否かの判定は、受信データに含まれる転倒フラグ１５２ｂ（図２４参照）に基づいて行う。ゲーム実行中にバイクが転倒した場合、バイクはプレーヤの操作入力に無関係に移動制御される。つまり、バイク転倒時は、プレーヤがバイクの挙動を制御することができず、バイクは基本的に
等速運動を行うこととして制御されるため、転倒時の速度、角速度、重力加速度等に基づいて位置、速度、姿勢が制御される。従って、転倒時における位置の予測は、複数フレームの変化を纏めて計算することにより行う。
【００７７】
具体的には、図１０の式に示すように、転倒時の予測位置Ｐt3は、時刻ｔ０における位置Ｐt0に、時刻ｔ０における速度Ｖt0と遅延時間（ｔ３−ｔ０）とを乗算した値を加算して求める。
【００７８】
１−４−５．速度の予測
次に、転倒時の速度の予測について説明する。上述のように転倒時は、プレーヤからの操作入力が無効となるため、バイクは等速運動を行うとして制御される。しかし、バイクが転倒中に路面から離れた場合、例えば、空中でバウンドしているような場合、バイクには重力加速度が作用する。そこで、速度のｙ成分の変化についてのみ予測を行う。
【００７９】
具体的には、図１０の式に示すように、転倒時の予測速度Ｖyt3は、時刻ｔ０における速度の成分Ｖyt0に、重力加速度ｇと遅延時間（ｔ３−ｔ０）とを乗算した値を加算して求める。
【００８０】
１−４−６．角度の予測
次に、転倒時の角度の予測について説明する。角度の予測は、位置の予測と同様に複数フレームの変化を纏めて計算することにより行う。例えば、図１０に示すように、ヨー方向の予測角度θyt3は、時刻ｔ０におけるヨー方向の角度θyt0に、ヨー方向の角速度ωyt0と遅延時間（ｔ３−ｔ０）とを乗算した値を加算して求める。また、図１０の式に示すように、ピッチング方向、ロール方向も同様に求める。
【００８１】
１−４−７．位置補間
次に、位置補間について説明する。図１１は、時刻ｔ０〜ｔ２の間に実際にゲーム画面に表示されたキャラクタの表示位置と、時刻ｔ０の受信データに基づく時刻ｔ３における予測位置とをそれぞれ示す図である。同図に示すように、時刻ｔ０〜時刻ｔ２における表示位置と、時刻ｔ３における予測位置とを結ぶ軌跡（１点鎖線）は、時刻ｔ２における表示位置から予測位置の個所で急激に変化している。これは、時刻ｔ０〜ｔ２における表示位置が、最新の受信データよりも古い受信データに基づいて予測された位置だからである。つまり、予測の基礎となる受信データが異なっている。このため、最新の受信データと古い受信データとの間でプレーヤにより急操作がなされていた場合、この操作が予測位置に反映され、キャラクタの瞬間移動的な位置変化として現れることとなる。
【００８２】
このように得られた予測位置をそのまま次フレーム（時刻ｔ３）に描画した場合、バイクの挙動が不自然になり、プレーヤにはブレやチラツキとして視認される。そこで、ブレやチラツキを解消するため、予測位置を現フレームの表示位置に近づけるように、位置、速度について補間処理を行う。なお、位置、速度の補間処理については、通常走行時、転倒時とも同様の処理を行うため、以下では、通常走行時についてのみ説明し、転倒時についての説明は省略する。
【００８３】
具体的には、図１２に示すように、時刻ｔ３の予測位置Ｐdatと現フレーム（時刻ｔ２）の表示位置Ｐdisとの差分から相対位置を求め、相対位置に定数Ｍを乗算することにより、単位時間当たりの位置変化量をバネ補正速度として求める。つまり、予測位置Ｐdatと表示位置Ｐdisとを結ぶ仮想バネを設定し、仮想バネの仮想力により、表示位置Ｐdisが予測位置Ｐdatの方向に調節されるように、バネ補正速度に基づく補間を行う。定数Ｍは、予測位置Ｐdatと表示位置Ｐdisとを結ぶ仮想バネのバネ係数に相当し、例えば、図１３（ａ）に示すように、相対位置が大きくなる程、バネ補正速度が大きくなるように設定されている。
【００８４】
また、予測速度Ｖdatと現フレームの表示速度Ｖdisとの差分から相対速度を求め、相対速度に定数Ｎを乗算して単位時間当たりの変化量をダンパ補正速度として求める。つまり、予測位置Ｐdatと表示位置Ｐdisとを結ぶ仮想バネの仮想力を緩衝するような仮想ダンパを設定することにより、仮想力の大きさによって、表示位置Ｐdisが過度に調節されないように、ダンパ補正速度に基づく補間を行う。定数Ｎは、予測位置Ｐdatと現フレームの表示位置Ｐdisとを結ぶ仮想バネを緩衝するための仮想ダンパの粘性係数に相当し、例えば、図１３（ｂ）に示すように、相対速度が大きくなる程、ダンパ補正速度は逆向きで絶対値が大きくなるように設定されている。
【００８５】
さらに、図１２の式に示すように、現フレームの表示速度Ｖdisにバネ補正速度を加算し、ダンパ補正速度を減算することにより、補間速度Ｖcorを算出する。そして、現フレームの表示位置Ｐdisに、補間速度Ｖcorの１フレーム分の位置変化量を加算して、補間位置Ｐcorを求める。この補間位置Ｐcorを、次フレーム（時刻ｔ３）の表示位置Ｐdisとすることで、他キャラクタの自然な移動制御を実現することができる。
【００８６】
１−４−８．角度補間
次に、角度の補間処理について説明する。位置補間で説明したように、予測角度Θdatと表示角度Θdisについても、基礎とする受信データが異なる場合、その間に行われたプレーヤの操作により、バイクの急激な姿勢変化を生じさせることとなる。そこで、位置補間の場合と同様に、バイクの角度についても、予測角度Θdatと表示角度Θdisに基づく補間を行う。尚、角度の補間処理は、通常走行時と転倒時で異なる処理を行う。まず、通常走行時における角度の補間処理について説明する。
【００８７】
［通常走行時］
図１４は、通常走行時における角度の補間原理について説明するための図である。なお、図１４の式において、角度Θ、角速度Ωは、ｘｙｚ各成分の値を含むことを意味している。同図に示すように、時刻ｔ３における予測角度Θdatと現フレーム（時刻ｔ２）における表示角度Θdisとの差分から相対角度を求め、相対角度に定数Ｏを乗算して、単位時間当たりの角度変化量をバネ補正角速度として求める。つまり、予測角度Θdatと表示角度Θdisとの間に仮想バネを設定し、仮想バネの仮想力により、表示角度Θdisが予測角度Θdatの方向に調節されるように、バネ補正角速度に基づく補間を行う。
【００８８】
また、時刻ｔ３における予測角速度Ωdatと現フレーム（時刻ｔ２）の表示角速度Ωdisとの差分から相対角速度を求め、相対角速度に定数Ｕを乗算して、単位時間当たりの角度変化量をダンパ補正角速度として求める。つまり、予測角度Θdatと表示角度Θdisとを結ぶ仮想バネの仮想力を緩衝するような仮想ダンパを設定することにより、仮想力の大きさによって、表示角度Θdisが過度に調節されないように、ダンパ補正角速度に基づく補間を行う。
【００８９】
さらに、図１４の式に示すように、表示角速度にバネ補正角速度を加算し、ダンパ補正角速度を減算することにより、補間角速度Ωcorを算出する。そして、現フレームの表示角度Θdisに補間角速度Ωcorの１フレーム分の角度変化量を加算して補間角度Θcorを求める。この補間角度Θcorを、次フレーム（時刻ｔ３）の表示角度Θdisとすることで、通常走行時における他キャラクタの自然な姿勢制御を実現することができる。
【００９０】
［転倒時］
図１５は、転倒時における角度の補間処理について説明するための図である。同図に示すように、予測角度Θdatと現フレームの表示角度Θdisとの差分から相対角度を求め、予測角速度Ωdatと現フレームの表示角速度Ωdisとの差分から相対角速度を求める。
【００９１】
続いて、相対角度の各成分から相対角度の大きさＡを求める。また、現フレームの表示角速度Ωdisの各成分から表示角速度Ωdisの大きさＢを求める。そして、表示角速度Ωdisの大きさＢを相対角度の大きさＡで除算して、比率Ｃを求める。ここで、比率Ｃは、上限を１、下限を０の値とする。
【００９２】
次に、相対角度に比率Ｃを乗算して、単位時間あたりの角度変化量をバネ補正角速度として求める。また、相対角速度に定数Ｄを乗算してダンパ補正角速度を求める。尚、バネ補正角速度及びダンパ補正角速度は、上述した通常走行時におけるバネ補正角速度及びダンパ補正角速度と同様の概念である。さらに、図１５の式に示すように、現フレームの表示角速度Ωdisに、バネ補正角速度を加算し、ダンパ補正角速度を減算することにより、補間角速度Ωcorを算出する。そして、現フレームの表示角度Θdisに補間角速度Ωcorの１フレーム分の角度変化量を加算して補間角度Θcorを求める。この補間角度Θcorを、次フレーム（時刻ｔ３）の表示角度Θdisとすることで、転倒時における他キャラクタの自然な姿勢制御を実現することができる。
【００９３】
１−４−９．接地処理
次に、接地処理について説明する。接地処理は、上述した位置予測、角度予測に従ったバイクをゲーム空間に配置させた場合に、バイクが地中に潜ってしまう、或いは地面から浮いてしまうといった不自然な状況を検出し、このような場合は高さ方向の位置を補正することにより、バイクの接地点を適切に路面に接地させるために行う処理である。尚、接地処理は、通常走行時と転倒時で異なる処理を行うため、まず、通常走行時における接地処理について説明する。
【００９４】
［通常走行時］
図１６は、通常走行時における接地処理を説明するための図である。接地処理は、同図に示すように、先ず、キャラクタの接地角度を求める。接地角度は、ロール方向の角度に置き換えられるため、接地角度θｚとして求まる。次に、重心車高hgを求める。重心車高hgは、ロール方向の角度が０°の時、即ち、バイクの垂直姿勢時における重心から路面までの距離である。さらに、重心車高hgにsin|θz|を乗算して、ゲーム空間における路面から重心までの距離である重心の高さHを求める。また、バイクが接地する路面のゲーム空間における高さhrを求める。そして、重心の高さHに路面の高さhrを加算し、これを補間位置Ｐcorのｙ座標に設定することにより、バイクの接地点を適切に路面に接地させることができる。
【００９５】
［転倒時］
図１７は、転倒時における接地処理を説明するための図である。同図に示すように、先ず、キャラクタの接地角度θGを求める。次いで、求めた接地角度θGに応じて、後述する接地点テーブル１５４（図２５参照）から、接地点となる可能性の最も高い座標Ａz（ｘLA，ｙLA，ｚLA）を求める。そして、接地角度θGに基づき、ローカル座標Ａzをワールド座標系に変換する。
【００９６】
ゲーム空間において、路面からの重心の高さHと、座標Azからの重心の高さhaを求める。そして、路面からの重心の高さＨが、座標Azからの重心の高さhaより高いか否かを判定し、高さHの方が高い場合には、路面からの重心の高さＨに路面の高さhrを加算した値を補間位置Ｐcorのｙ座標に設定する。一方、高さＨの方が低い場合、高さＨを高さhaに一致するように補正し、補正した高さＨに路面の高さhrを加算した値を、補間位置Ｐcorのｙ座標に設定する。これにより、キャラクタの接地点を適切に路面に接地させることができる。
【００９７】
１−５．機能構成
次に、第１実施形態におけるゲーム装置１２の機能構成について説明する。図１８は、本実施形態のゲーム装置１２における内部構成の一例を示すブロック図である。図１８に示すように、ゲーム装置１２は、操作部１１０、処理部１２０、記憶部１３０、表示部１４０、音出力部１５０、通信部１６０等を備えて構成され、バイクレースゲームであるビデオゲームを実行してゲーム画像を生成し、生成したゲーム画像を表示部１４０に表示させる。
【００９８】
操作部１１０は、プレーヤによる操作指示を受け付け、操作に応じた操作信号を処理部１２０に出力する。この機能は、例えばボタンや操作スティック、ダイヤル、マウス、キーボード、各種センサ等を備えた操作器によって実現される。
【００９９】
処理部１２０は、ゲーム装置１２全体の制御やゲームの進行、画像生成等の各種演算処理を行う。この機能は、例えばＣＰＵ（ＣＩＳＣ型、ＲＩＳＣ型）、ＡＳＩＣ（ゲートアレイ等）等の演算装置やその制御プログラムにより実現される。
【０１００】
また、処理部１２０は、主にゲームに係る演算処理を行うゲーム演算部１２２と、ゲーム演算部１２２の処理によって求められた各種のデータに基づき、仮想カメラ等の所与の視点から見た仮想三次元空間（ゲーム空間）の画像の生成及びゲーム画面を表示させるための画像信号の生成を実行する画像生成部１２４と、効果音やＢＧＭ等のゲーム音の生成及びゲーム音を出力させるための音信号の生成を実行する音生成部１２６と、を含んでいる。
【０１０１】
ゲーム演算部１２２は、主な機能部として、ゲーム進行制御部１２２２、自キャラクタ移動制御部１２２４、他キャラクタ移動制御部１２２６、移動体制御情報送受信部１２２８を含む。ゲーム進行制御部１２２２は、ゲーム進行処理プログラム１３２２に従ってゲーム進行処理を実行し、プレーヤの指示操作に基づいて、キャラクタのゲーム空間中での移動の制御等を行う。自キャラクタ移動制御部１２２４は、自キャラクタ移動計算プログラム１３２４に従って、自キャラクタ移動計算処理を実行し、プレーヤから入力される各種操作に基づいて、自キャラクタを移動制御する。
【０１０２】
他キャラクタ移動制御部１２２６は、他キャラクタ移動計算プログラム１３２６に従って、他キャラクタ移動計算処理を実行し、受信データ等に基づき他キャラクタの移動計算を行い、他キャラクタを移動制御する。移動体制御情報送受信部１２２８は、移動体制御情報送受信プログラム１３４８に従って移動体制御情報送受信処理を実行し、ゲーム実行に係る移動体制御情報を他のゲーム装置１２に送信したり、他のゲーム装置１２から送信された移動体制御情報を受信する。
【０１０３】
画像生成部１２４は、例えばＣＰＵやＤＳＰ等の演算装置やその制御プログラム、フレームバッファ等の描画フレーム用ＩＣメモリ等によって実現される。画像生成部１２４は、ゲーム演算部１２２による演算結果に基づき、幾何変換処理やシェーディング処理等を実行してゲーム画面を表示するためのゲーム画像（３ＤＣＧ画像）を生成し、生成した画像の画像信号を表示部１４０に出力する。
【０１０４】
表示部１４０は、画像生成部１２４からの画像信号に基づいて、例えば１／６０秒毎に１フレームの画面を再描画しながらゲーム画面を表示する。この機能は、例えばＣＲＴ、ＬＣＤ、ＥＬＤ、ＰＤＰ、ＨＭＤ等のハードウェアによって実現される。
【０１０５】
音生成部１２６は、例えばＣＰＵやＤＳＰ等の演算装置及びその制御プログラムによって実現され、ゲーム中に使用される効果音やＢＧＭ等のゲーム音を生成し、生成したゲーム音の音信号を音出力部１５０に出力する。
【０１０６】
音出力部１５０は、音生成部１２６からの音信号に基づいて、ＢＧＭや効果音等のゲーム音声を出力する。この機能は、例えばスピーカ等によって実現される。
【０１０７】
通信部１６０は、所定の通信回線（無線通信回線ＷやＬＡＮ等）に接続して外部装置（例えば、他のゲーム装置１２）とのデータ通信を行う。
【０１０８】
記憶部１３０は、処理部１２０にゲーム装置１２を統合的に制御させるための諸機能を実現するためのシステムプログラムや、ゲームを実行させるために必要なプログラムやデータ等を記憶する。また、処理部１２０の作業領域として用いられ、処理部１２０が各種プログラムに従って実行した演算結果や操作部１１０から入力される入力データ等を一時的に記憶する。この機能は、例えば各種ＩＣメモリやハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ、ＲＡＭ、ＶＲＡＭ等によって実現される。
【０１０９】
また、記憶部１３０は、処理部１２０をゲーム演算部１２２として機能させるためのゲームプログラム１３２及びゲームデータ１３４を記憶する。具体的には、ゲームプログラム１３２として、ゲーム進行処理プログラム１３２２、自キャラクタ移動計算プログラム１３２４、他キャラクタ移動計算プログラム１３２６、位置予測プログラム１３２８、速度予測プログラム１３３０、角度予測プログラム１３３２、位置補間プログラム１３３４、角度補間プログラム１３３６、接地プログラム１３３８、転倒時位置速度予測プログラム１３４０、転倒時角度予測プログラム１３４２、転倒時角度補間プログラム１３４４、転倒時接地プログラム１３４６、移動体制御情報送受信プログラム１３４８、を記憶している。また、ゲームデータ１３４として、ステージデータ１３６、コースデータ１３８、移動体オブジェクトデータ１４２、移動体オブジェクトパラメータ１４４、最新データ予測データ１４６、補間データ１４８、受信データ１５２、接地点テーブル１５４、を記憶している。
【０１１０】
ゲーム進行処理プログラム１３２２は、ゲーム演算部１２２をゲーム進行制御部１２２２として機能させるためのプログラムである。自キャラクタ移動計算プログラム１３２４は、ゲーム演算部１２２を自キャラクタ移動制御部１２２４として機能させるためのプログラムである。他キャラクタ移動計算プログラム１３２６、位置予測プログラム１３２８、速度予測プログラム１３３０、角度予測プログラム１３３２、位置補間プログラム１３３４、角度補間プログラム１３３６、接地プログラム１３３８、転倒時位置速度予測プログラム１３４０、転倒時角度予測プログラム１３４２、転倒時角度補間プログラム１３４４、転倒時接地プログラム１３４６は、ゲーム演算部１２２を他キャラクタ移動制御部１２２６として機能させるためのプログラムである。移動体制御情報送受信プログラム１３４８は、ゲーム演算部１２２を移動体制御情報送受信部１２２８として機能させるためのプログラムである。
【０１１１】
ステージデータ１３６は、バイクレースゲームにおけるゲームステージを設定するためのデータを格納する。具体的には、ゲーム空間中にコース２を含むサーキットを配置するためのモデリングデータ及びテクスチャデータを格納している。
【０１１２】
コースデータ１３８は、コース２上に設定される各データを格納する。図１９，２０を参照して、コースデータ１３８について説明する。図１９は、コースデータ１３８に格納される各データをコース２上に明示した図であり、図２０は、コースデータ１３８のデータ構成例を示す図である。
【０１１３】
図１９に示すように、コース２上には、コース２の中心線ＣＬと、コース２を最短時間で走行するための目標ラインＴＬとが設定されている。中心線ＣＬ上には、スタート地点３を始点として、所定間隔おきに制御点Ｑが配置・設定されている。
【０１１４】
また、図２０に示すように、各制御点Ｑには、距離ＲＲ、目標位置ｗｔ、目標速度Ｖ０、曲率ｒｔが設定されている。距離ＲＲは、中心線ＣＬに沿ったスタート位置３から制御点Ｑまでの距離を格納している。目標位置ｗｔは、目標ラインＬＴの位置を定義するための位置であり、各制御点Ｑにおける左右の変位が格納されている。即ち、各制御点Ｑから、それぞれの制御点Ｑの目標位置ｗｔ分左右に変位する地点を結んでいくことで目標ラインＬＴが定義される。また、目標位置ｗｔの値は、目標ラインＴＬが進行方向に向かって中心線ＣＬの左右どちらに位置するかに応じて正負の値をとる。例えば、目標ラインＴＬが進行方向に向かって中心線ＣＬの左に位置する場合には正となり、右に位置する場合には負となる。
【０１１５】
目標速度Ｖ0は、例えば、高速キャラクタが目標ラインＴＬを最短時間で走行する場合の各制御点通過時の速度に基づいて定められる。つまり、プレーヤは、目標ラインＬＴ上を、目標速度Ｖ０に従ってバイク４を走行させることで、コース２を最短時間で走行することができる。
【０１１６】
曲率ｒｔは、中心線ＣＬの当該位置における曲率を格納している。この値は、目標ラインＴＬが進行方向に向かって左右どちらに屈曲（カーブ）しているかに応じて正負の値を取るようにする。例えば、目標ラインＴＬの左カーブの部分では正の値とし、右カーブの部分では負の値とし、直線部分では「０」とする。また、その絶対値は、「０以上１未満（０≦ｒｔ＜１）」となる。なお、曲率ｒｔは、目標ラインＴＬの制御点に対応する各位置における曲率を格納する構成であっても良い。この場合は、バイク４の走行ラインを近似した曲率に基づいて、各種移動計算を行わせることができる。
【０１１７】
移動体オブジェクトデータ１４２は、仮想空間中にバイク４を配置するためのモデリングデータ及びテクスチャデータを格納する。
【０１１８】
移動体オブジェクトパラメータ１４４は、ゲーム実行中のバイク４ａ〜４ｄの各種パラメータを、各バイク毎に格納する。図２１に移動体オブジェクトパラメータ１４４のデータ構成例を示す。同図に示すように、移動オブジェクトパラメータ１４４は、バイク４ａ〜４ｄを特定するための識別番号（１４４ａ）、転倒フラグ（１４４ｂ）、アクセル量Ｉａ（１４４ｃ）、ブレーキ量Ｉｂ（１４４ｄ）、ハンドル値Ｉｈ（１４４ｅ）、位置座標Ｐ（１４４ｆ）、速度Ｖ（１４４ｇ）、角度Θ（１４４ｈ）、角速度Ω（１４４ｉ）、周回数（１４４ｊ）、ラップタイム（１４４ｋ）の各パラメータを格納する。
【０１１９】
移動体オブジェクトパラメータ１４４は、自キャラクタ移動制御処理、他キャラクタ移動制御処理の実行に伴い更新される。また、ゲーム進行処理においては、移動体オブジェクトパラメータ１４４に格納される各パラメータに基づいて、ゲーム画像の描画・生成が行われる。つまり、移動体オブジェクトパラメータに格納される各パラメータ、位置座標Ｐ（１４４ｆ）、速度Ｖ（１４４ｇ）、角度Θ（１４４ｈ）、角速度Ω（１４４ｉ）は、上述した表示位置、表示速度、表示角度、表示角速度にそれぞれ対応している。
【０１２０】
最新データ予測データ１４６は、他のゲーム装置１２から受信した最新の受信データに基づいて算出された各種予測データを格納する。図２２に最新データ予測データ１４６のデータ構成例を示す。同図に示すように、最新データ予測データ１４６は、転倒フラグ（１４６ｂ）、予測位置Ｐdat（１４６ｃ）、予測速度Ｖdat（１４６ｄ）、予測角度Θdat（１４６ｅ）、予測角速度Ωdat（１４６ｆ）を他キャラクタ毎に他キャラクタの識別番号（１４６ａ）と対応付けて記憶している。
【０１２１】
転倒フラグ（１４６ｂ）は、キャラクタの転倒の有無示すＯＮ，ＯＦＦフラグを格納している。予測座標Ｐdat（１４６ｃ）は、最新の受信データに基づいて算出された予測位置Ｐdatを格納している。予測速度Ｖdat（１４６ｄ）は、最新の受信データに基づいて算出された予測速度Ｖdatを格納している。予測角度Θdat（１４６ｅ）は、最新の受信データに基づいて算出された予測角度Θdatを格納している。予測角速度Ωdatは、最新の受信データに基づいて算出された予測角速度Ωdatを格納している。この最新データ予測データ１４６は、他キャラクタ移動制御処理の実行に伴い各データが更新記録される。
【０１２２】
補間データ１４８は、補間処理において算出された各種補間データを格納している。図２３に補間データ１４８のデータ構成例を示す。同図に示すように、補間データ１４８は、バイク４ａ〜４ｄの識別番号（１４８ａ）に対応付けて、転倒フラグ（１４８ｂ）、補間位置Ｐcor（１４８ｃ）、補間角度Θcor（１４８ｄ）、補間速度Ｖcor（１４８ｅ）、補間角速度Ωcor（１４８ｆ）を格納している。
【０１２３】
通常走行時における補間処理が行われた場合、転倒フラグ（１４８ｂ）は「ＯＦＦ」に設定される。補間位置Ｐcor（１４８ｃ）、補間速度Ｖcor（１４８ｅ）には、位置補間処理により算出された補間位置Ｐcor、補間速度Ｖcorがそれぞれ格納される。また、補間角度Θcor（１４８ｄ）、補間角速度Ωcor（１４８ｆ）には、角度補間処理により算出された補間角度Θcor、補間角速度Ωcorがそれぞれ格納される。
【０１２４】
一方、転倒時における補間処理が行われた場合、転倒フラグ（１４８ｂ）は「ＯＮ」に設定される。そして、補間位置Ｐcor（１４８ｃ）、補間速度Ｖcor（１４８ｅ）には、位置補間処理により算出された補間位置Ｐcor、補間速度Ｖcorが格納され、補間角度Θcor（１４８ｄ）、補間角速度Ωcor（１４８ｆ）には、転倒時角度補間処理により算出された補間角度Θcor、補間角速度Ωcorがそれぞれ格納される。
【０１２５】
受信データ１５２は、他のゲーム装置１２から受信したデータのうち最新のデータを他キャラクタ毎に格納している。図２４に受信データ１５２のデータ構成例を示す。同図に示すように、受信データ１５２は、キャラクタを特定するための識別番号（１５２ａ）、転倒フラグ（１５２ｂ）、アクセル量Ｉａ（１５２ｃ）、ブレーキ量Ｉｂ（１５２ｄ）、ハンドル値Ｉｈ（１５２ｅ）、位置座標Ｐ（１５２ｆ）、速度Ｖ（１５２ｇ）、角度Θ（１５２ｈ）、角速度Ω（１５２ｉ）、データ送信時刻（１５２ｊ）の各パラメータを格納している。
【０１２６】
接地点テーブル１５４は、バイクの接地点と、接地角度θGとの対応関係を定義する情報を、各キャラクタ毎に格納している。図２５に接地点テーブル１５４のデータ構成例を示す。同図に示すように、接地点テーブル１５４は、キャラクタを特定するための識別番号（１５４ａ）、接地点（１５４ｂ）、ローカル位置座標（１５４ｃ）、接地角度θG（１５４ｄ）を格納している。
【０１２７】
ローカル位置座標（１５４ｃ）は、キャラクタが路面と所与の接地角度θGを成す場合において、路面との当接（接地）すべきバイクの部分のローカル座標を格納する。接地角度θGは、キャラクタの姿勢に応じて、キャラクタと路面とが成す角を接地角度θGとして格納している。
【０１２８】
１−６．処理の流れ
本第１実施形態における処理の流れについて図２６〜図３７を参照して説明する。
図２６は、ゲーム進行制御部１２２２がゲーム進行プログラム１３２２を実行することで実現されるゲーム進行処理を示すフローチャートである。処理中のループは、ゲーム中、フレーム毎に繰り返し実行されるループである。
【０１２９】
１−６−１．ゲーム進行処理
先ず、ゲーム進行制御部１２２２は、自キャラクタ移動制御部１２２４に、自キャラクタ移動計算プログラム１３２４に従った自キャラクタの移動計算処理を実行させる（ステップＳ２）。具体的には、自キャラクタ移動制御部１２２４は、自キャラクタの位置座標、速度、角度、角速度、プレーヤから入力される操作データ（例えば、アクセル量Ia、ブレーキ量Ib、ハンドル量Ih）等から、次フレームにおける自キャラクタの位置座標、速度、姿勢等を算出し、移動体オブジェクトパラメータ１４４を更新する。即ち、プレーヤの操作入力に対してレスポンス良く、リアルタイム（実時間）に移動体オブジェクトパラメータ１４４を更新することとなる。
【０１３０】
次いで、ゲーム進行制御部１２２２は、移動体制御情報送受信部１２２８に、移動体制御情報送受信プログラムに従った移動体制御情報送受信処理を実行させる（ステップＳ４）。具体的には、移動体制御情報送受信部１２２８は、更新された移動体オブジェクトパラメータ１４４に含まれるデータを、移動体制御情報として、同一ゲームに参加しているプレーヤが操作する他のゲーム装置１２に送信する。また、同一ゲームに参加しているプレーヤが操作する他のゲーム装置１２から送信された移動体制御情報を受信する。
【０１３１】
続いて、ゲーム進行制御部１２２２は、他キャラクタ移動制御部１２２６に、他キャラクタ移動計算プログラム１３２６に従って、後述する他キャラクタ移動計算処理を実行させ、次フレームにおける他キャラクタの位置座標、速度、姿勢等を算出させる（ステップＳ６）。そして、計算結果に基づき自キャラクタ及び他キャラクタをゲーム空間に配置して（ステップＳ８）描画処理を行い、ゲーム画像を生成して、表示部１４０にゲーム画像を表示する（ステップＳ１０）。
【０１３２】
１−６−２．他キャラクタ移動計算処理
次に、ゲーム進行処理のサブルーチンとして実行される他キャラクタ移動計算処理について説明する。図２７は、他キャラクタ移動制御部１２２６が他キャラクタ移動計算プログラム１３２６を実行することで実現される他キャラクタ移動計算処理を示すフローチャートである。尚、処理中のループＡは、他キャラクタ毎に繰り返される処理であり、処理中のループＢは、ステップＳ２０で算出されたループ回数に従って繰り返される処理である。
【０１３３】
同図において、先ず、他キャラクタ移動制御部１２２６は、他のゲーム装置１２から最新の移動体制御情報を受信したか否かを判定し（ステップＳ１２）、最新の移動体制御情報を受信した場合（ステップＳ１２；ＹＥＳ）、受信データ１５２を新たに受信した移動体制御情報に基づいて更新する（ステップＳ１４）。具体的には、他ゲーム装置１２から受信した移動体制御情報のデータ送信時刻と、受信データ１５２に格納されているデータ送信時刻１４２ｊとを比較し、受信した移動体制御情報のデータ送信時刻の方が新しい場合、受信データ１５２を受信した移動体制御情報に基づいて更新する。
【０１３４】
次いで、受信データ１５２の転倒フラグを参照して、他キャラクタが転倒しているか否かを判定する（ステップＳ１６）。他キャラクタが転倒していない場合（ステップＳ１６；ＮＯ）、受信データ１５２のデータ送信時刻と、描画対象となるフレームの表示時刻とから遅延時間を求める（ステップＳ１８）。続いて、遅延時間から他キャラクタの予測位置、予測速度を算出するためのループ回数Ｎを求める（ステップＳ２０）。具体的には、遅延時間を１フレーム、即ち１／６０秒で除算して求まる回数である。
【０１３５】
そして、求めたループ回数に従ってループＢを繰り返して実行する。ループＢでは、先ず、受信データ１５２に基づいて、他キャラクタの予測位置を算出する位置予測処理を実行する（ステップＳ２２）。次いで、受信データ１５２に基づいて、他キャラクタの予測速度を算出する速度予測処理を実行する（ステップＳ２４）。
【０１３６】
続いて、ループＢを終了すると、受信データ１５２に基づいて他キャラクタの予測角度を算出する角度予測処理を実行する（ステップＳ２６）。そして、現フレームの表示位置と、受信データ１５２に基づく予測位置とから補間位置を求める位置補間処理を実行する（ステップＳ２８）。また、現フレームの表示角度と、受信データ１５２に基づく予測角度とから補間角度を求める角度補間処理を実行する（ステップＳ３０）。さらに、他キャラクタをゲーム空間の正しい位置に配置するための接地処理を実行し（ステップＳ３２）、本他キャラクタ移動計算処理を終了する。
【０１３７】
一方、ステップＳ１６において、他キャラクタが転倒していると判定した場合（ステップＳ１６；ＹＥＳ）、受信データ１５２に基づいて、転倒時における他キャラクタの予測位置、予測速度を算出する転倒時位置速度予測処理を実行する（ステップＳ３４）。次いで、受信データ１５２に基づいて、転倒時における他キャラクタの予測角度を算出する転倒時角度予測処理を実行する（ステップＳ３６）。
【０１３８】
そして、現フレームの表示位置と、受信データ１５２に基づく予測位置とから、補間位置を求める位置補間処理を実行する（ステップＳ３８）。また、現フレームの表示角度と、受信データ１５２に基づく予測角度とから、転倒時における補間角度を求める転倒時角度補間処理を実行する（ステップＳ４０）。さらに、他キャラクタをゲーム空間の正しい位置に配置するための転倒時接地処理を実行し（ステップＳ４２）、本他キャラクタ移動計算処理を終了する。
【０１３９】
１−６−３．位置予測処理
次に、他キャラクタ移動計算処理のサブルーチンとして実行される各種処理について説明する。図２８は、他キャラクタ移動制御部１２２６が位置予測プログラム１３２８を実行することで実現される位置予測処理を示すフローチャートである。
【０１４０】
同図において、先ず、他キャラクタ移動制御部１２２６は、他キャラクタ移動計算処理において最新データの受信による受信データ１５２の更新（図２７のステップＳ１４）が行われたか否かを判定する（ステップＳ５１）。受信データ１５２の更新が行われていた場合（ステップＳ５１；ＹＥＳ）、ループ回数が１回目であるか否かを判定する（ステップＳ５２）。ループ回数が１回目である場合（ステップＳ５２；ＹＥＳ）、受信データ１５２から位置座標Ｐ、ヨー方向の角度（ｙ成分）θy、速度Ｖを取得する。一方、受信データ１５２の更新が行われていなかった場合（ステップＳ５１；ＮＯ）、又はループ回数が１回目でない場合（ステップＳ５２；ＮＯ）、最新データ予測データ１４６から位置座標Ｐ、ヨー方向の角度（ｙ成分）θy、速度Ｖを取得する（ステップＳ５６）。
【０１４１】
次いで、取得した位置座標Ｐに対応する制御点の曲率をコースデータ１３８から取得し（ステップＳ５８）、速度ベクトルと曲率に基づいてヨー方向の予測角度θyを算出する（ステップＳ６０）。そして、最新データ予測データの角度のｙ成分を算出した予測角度θyに更新する（ステップＳ６２）。また、取得した速度Ｖのベクトルの向きが予測角度θyと一致するようにヨー方向に回転する（ステップＳ６４）。
【０１４２】
続いて、ベクトルの向きを修正した速度Ｖから１フレーム分の移動距離を算出する。そして、取得した位置座標Ｐに移動距離を加算して、予測位置を算出する（ステップＳ６６）。そして、最新データ予測データ１４６の位置座標と速度を予測位置、算出した速度に更新して（ステップＳ６８）、本位置予測処理を終了する。
【０１４３】
１−６−４．速度予測処理
次に、速度予測処理について説明する。図２９は、他キャラクタ移動制御部１２２６が速度予測プログラム１３３０を実行することで実現される速度予測処理を示すフローチャートである。
【０１４４】
同図において、先ず、他キャラクタ移動制御部１２２６は、最新データ予測データ１４６から位置座標Ｐ、速度Ｖを取得する（ステップＳ７６）。次いで、取得した位置座標Ｐに対応する目標速度Ｖ0をコースデータ１３８から取得し（ステップＳ７８）、速度Ｖが目標速度Ｖ0より高速であるか否かを判定する（ステップＳ８０）。速度Ｖが目標速度Ｖ0より高速である場合（ステップＳ８０；ＹＥＳ）、目標速度Ｖ0と速度Ｖとに基づいて、ブレーキ量Ｉbを補正する（ステップＳ８２）。
【０１４５】
続いて、速度Ｖと、アクセル量Ｉa、ブレーキ量Ｉb、補正係数αに基づいて、予測速度を算出する（ステップＳ８４）。そして、最新データ予測データ１４６の速度を、予測速度に更新して（ステップＳ８６）、本速度予測処理を終了する。
【０１４６】
１−６−５．角度予測処理
次に、角度予測処理について説明する。図３０は、他キャラクタ移動制御部１２２６が角度予測プログラム１３３２を実行することで実現される角度予測処理を示すフローチャートである。
【０１４７】
同図において、先ず、他キャラクタ移動制御部１２２６は、受信データ１５２のデータ送信時刻と、描画対象となるフレームの表示時刻とから遅延時間を求める（ステップＴ２）。次いで、受信データ１５２に格納されるピッチング方向の角度及び角速度と、遅延時間とに基づいてピッチング方向の予測角度θxを算出する（ステップＴ４）。また、受信データ１５２に格納されるロール方向の角度及び角速度と、遅延時間とに基づいてロール方向の予測角度θzを算出する（ステップＴ６）。
【０１４８】
続いて、受信データ１５２のピッチング方向の角度の符号と、予測角度θxの符号とが入れ替わっているか否かを判定し（ステップＴ８）、符号が入れ替わっている場合は（ステップＴ８；ＹＥＳ）、キャラクタが路面に接地したと判定して、予測角度θxを０°とする（ステップＴ１０）。
【０１４９】
また、予測角度θx，θzが基準範囲内であるか否かを判定し（ステップＴ１２）、基準範囲内にない場合は（ステップＴ１２；ＮＯ）、基準範囲外にある予測角度θx、θzを基準範囲の上限値又は下限値の何れか近い方の値とする（ステップＴ１４）。そして、最新データ予測データ１４６の角度のｘ、ｚ成分を予測角度θx、θzにそれぞれ更新して（ステップＴ１６）、本角度予測処理を終了する。
【０１５０】
１−６−６．位置補間処理
次に、位置補間処理について説明する。図３１は、他キャラクタ移動制御部１２２６が位置補間プログラム１３３４を実行することで実現される位置補間処理を示すフローチャートである。
【０１５１】
同図に示すように、先ず、他キャラクタ移動制御部１２２６は、予測位置の位置座標と、表示位置の位置座標との差分を相対位置として求める（ステップＴ２２）。次いで、予測速度と表示速度との差分を相対速度として求める（ステップＴ２４）。続いて、相対位置に定数Ｍを乗算してバネ補正速度を求め（ステップＴ２６）、相対速度に定数Ｎを乗算してダンパ補正速度を求める（ステップＴ２８）。
【０１５２】
さらに、表示速度にバネ補正速度を加算し、ダンパ補正速度を減算して補間速度を算出する（ステップＴ３０）。そして、現フレームの表示位置に補間速度による１フレーム分の距離を加算して補間位置を算出する（ステップＴ３２）。次いで、補間データ１４８の補間位置、補間速度を更新すると共に（ステップＴ３４）、移動体オブジェクトパラメータの位置座標、速度を補間位置、補間速度に更新して（ステップＴ３６）、本位置補間処理を終了する。
【０１５３】
１−６−７．角度補間処理
次に、角度補間処理について説明する。図３２は、他キャラクタ移動制御部１２２６が角度補間プログラム１３３６を実行することで実現される角度補間処理を示すフローチャートである。尚，処理中のループは、角度の各成分（ｘｙｚ成分）毎に繰り返される処理である。
【０１５４】
同図において、先ず、他キャラクタ移動制御部１２２６は、予測角度と表示角度の差分から相対角度を求める（ステップＴ４２）。また、予測角速度と表示角速度との差分から相対角速度を求める（ステップＴ４４）。続いて、相対角度に定数Ａを乗算してバネ補正角速度を求め（ステップＴ４６）、相対角速度に定数Ｂを乗算してダンパ補正角速度を求める（ステップＴ４８）。
【０１５５】
さらに、表示角速度にバネ補正角速度を加算し、ダンパ補正角速度を減算して、補間角速度を演算する（ステップＴ５０）。そして、表示角度に補間角速度による１フレーム分の角度を加算して補間角度を算出する（ステップＴ５２）。次いで、補間データ１４８の補間角度、補間角速度を更新すると共に（ステップＴ５４）、移動体オブジェクトパラメータ１４４の角度、角速度を補間角度、補間角速度に更新して（ステップＴ５６）、ループ処理を終了する。
【０１５６】
１−６−８．接地処理
次に、接地処理について説明する。図３３は、他キャラクタ移動制御部１２２６が接地プログラム１３３８を実行することで実現される接地処理を示すフローチャートである。
【０１５７】
同図において、先ず、他キャラクタ移動制御部１２２６は、補間角度のｚ成分から車体（キャラクタ）の接地角度θzを求める（ステップＴ６２）。次いで、重心車高hg、接地角度θz、サスペンションの縮み具合等に基づきキャラクタの重心から路面までの高さＨを算出する（ステップＴ６４）。そして、路面までの高さＨに路面の高さhrを加算した値を算出し、移動体オブジェクトパラメータ１４４の位置座標のｙ成分を算出された値に更新する（ステップＳ６６）。
【０１５８】
１−６−９．転倒時位置速度予測処理
次に、転倒時位置速度予測処理について説明する。図３４は、他キャラクタ移動制御部１２２６が転倒時位置速度予測プログラム１３４０を実行することで実現される転倒時位置速度予測処理を示すフローチャートである。
【０１５９】
同図において、先ず、他キャラクタ移動制御部１２２６は、受信データ１５２のデータ送信時刻と、描画対象となるフレームの表示時刻とから遅延時間を求める（ステップＴ７２）。次いで、受信データ１５２に格納される速度と、遅延時間とから予測位置を算出する（ステップＴ７４）。
【０１６０】
続いて、受信データ１５２に格納される速度のｙ成分に、重力加速度ｇと遅延時間を乗算した値を加算して、予測速度を算出する（ステップＴ７６）。また、最新データ予測データ１４６の転倒フラグをＯＮに設定する（ステップＴ７８）。そして、最新データ予測データ１４６の位置座標、速度を、予測位置、予測速度に更新して（ステップＴ８０）、本転倒時位置速度予測処理を終了する。
【０１６１】
１−６−１０．転倒時角度予測処理
次に、転倒時角度予測処理について説明する。図３５は、他キャラクタ移動制御部１２２６が転倒時角度予測プログラム１３４２を実行することで実現される転倒時角度予測処理を示すフローチャートである。尚，処理中のループは、角度の各成分（ｘｙｚ成分）毎に繰り返される処理である。
【０１６２】
同図において、先ず、他キャラクタ移動制御部１２２６は、受信データ１５２のデータ送信時刻と、描画対象となるフレームの表示時刻とから遅延時間を求める（ステップＴ８２）。次いで、ループ処理を開始し、受信データ１５２に格納される角度及び角速度と、遅延時間とから予測角度を算出する（ステップＴ８４）。そして、最新データ予測データ１４６の角度、角速度を更新し（ステップＴ８６）、本転倒時角度予測処理を終了する。
【０１６３】
１−６−１１．転倒時角度補間処理
次に、転倒時角度補間予測処理について説明する。図３６は、他キャラクタ移動制御部１２２６が転倒時角度補間プログラム１３４６を実行することで実現される転倒時角度補間処理を示すフローチャートである。
【０１６４】
同図において、先ず、他キャラクタ移動制御部１２２６は、予測角度と表示角度との差分から相対角度を求める（ステップＳＴ２）。また、予測角速度と表示角速度との差分から相対角速度を求める（ステップＳＴ４）。
【０１６５】
次いで、相対角度の大きさＡと、表示角速度の大きさＢを求め（ステップＳＴ６，８）、表示角速度の大きさＢと相対角度の大きさＡの比率Ｃを求める（ステップＳＴ１０）。さらに、相対角度に比率Ｃを乗算してバネ補正角速度を求める（ステップＳＴ１２）。また、相対角速度に定数Ｄを乗算してダンパ補正角速度を求める（ステップＳＴ１４）。
【０１６６】
続いて、表示角速度にバネ補正角速度を加算し、ダンパ補正角速度を減算して、補間角速度を算出する（ステップＳＴ１６）。そして、表示角度に補間角速度による１フレーム分の角度を加算して補間角度を演算する（ステップＳＴ１８）。続いて、補間データ１４６の角度、角速度を、補間角度、補間角速度に更新すると共に（ステップＳＴ２０）、移動体オブジェクトパラメータ１４４の角度、角速度を、補間角度、補間角速度に更新して（ステップＳＴ２２）、本転倒時角度補間処理を終了する。
【０１６７】
１−６−１２．転倒時接地処理
次に、転倒時接地処理について説明する。図３７は、他キャラクタ移動制御部１２２６が転倒時接地プログラム１３４６を実行することにより実現される転倒時接地処理を示すフローチャートである。
【０１６８】
同図において、先ず、他キャラクタ移動制御部１２２６は、補間角度から車体の接地角度θGを求める（ステップＳＴ３２）。次いで、接地角度θGに応じて、接地点テーブル１５４から車体（キャラクタ）の接地点となる可能性が最も高い接地点Azのローカル座標を求める（ステップＳＴ３４）。さらに、接地点Azのローカル座標をワールド座標系に変換する（ステップＳＴ３６）。
【０１６９】
続いて、路面からキャラクタの重心までの高さＨを算出すると共に（ステップＳＴ３８）、接地点Azの位置座標からキャラクタの重心までの高さhaを算出する（ステップＳＴ４０）。そして、高さＨが高さhaより低いか否かを判定する（ステップＳＴ４２）。高さＨが高さhaより低い場合（ステップＳＴ４２；ＹＥＳ）、車体（キャラクタ）の一部が路面に潜ることとなるため、高さＨが高さhaに一致するように補正し、補正した高さＨに路面の高さhrを加算する。そして、移動体オブジェクトパラメータ１４４の位置座標のｙ座標を更新する（ステップＳＴ４４）。
【０１７０】
一方、高さＨが高さhaより低くない場合（ステップＳＴ４２；ＮＯ）、車体（キャラクタ）は、路面に適正に接地可能であるため移動体オブジェクトパラメータ１４４の位置座標を更新せずに本転倒時接地処理を終了する。
【０１７１】
１−７．ハードウェア構成
次に、本実施の形態におけるゲーム装置１２を実現するためのハードウェア構成の一例について図３８を参照して説明する。図３８に示す電子機器１００は、ＣＰＵ１０００、ＲＯＭ１００２、ＲＡＭ１００４、情報記憶媒体１００６、音生成ＩＣ１００８、画像生成ＩＣ１０１０、ＶＲＡＭ１０１２、Ｉ／Ｏポート１０１４、１０１６を備え、各部がシステムバス１０１８により相互にデータ入出力可能に接続されている。Ｉ／Ｏポート１０１４には入力装置１０２４が、Ｉ／Ｏポート１０１６には通信装置１０２６が、それぞれ接続されている。
【０１７２】
ＣＰＵ１０００は、情報記憶媒体１００６に格納されるプログラム、ＲＯＭ１００２に格納されるシステムプログラム（装置本体の初期化情報等）、入力装置１０２４によって入力される信号等に従って、機器全体の制御や各種データ処理を行う。このＣＰＵ１０００は、図１８に示す処理部１２０に相当する。
【０１７３】
ＲＡＭ１００４は、ＣＰＵ１０００の作業領域等として用いられる記憶部であり、情報記憶媒体１００６やＲＯＭ１００２内の所与の内容、ＣＰＵ１０００の演算結果等が格納される。このＲＡＭ１００４は、図１８に示す記憶部１３０の一部を構成するものである。
【０１７４】
情報記憶媒体１００６は、プログラム、画像データ、音データ、プレイデータ等が主に格納されるものである。この情報記憶媒体１００６は、図１８に示す記憶部１３０の一部を構成するものである。本実施の形態を実現するものがコンピュータシステムである場合には、情報記憶媒体１００６は、ゲーム進行処理プログラム１３２２などを格納する情報記憶媒体としてのＣＤ−ＲＯＭ、ＤＶＤ或いはハードディスク等が用いられる。
【０１７５】
また、この装置に設けられている画像生成ＩＣ１０１０と音生成ＩＣ１００８により、音や画像の好適な出力が行えるようになっている。
【０１７６】
画像生成ＩＣ１０１０は、ＣＰＵ１０００の命令によって、ＲＯＭ１００２、ＲＡＭ１００４、情報記憶媒体１００６等から送られる情報に基づいて画素情報を生成する集積回路であり、生成される表示信号は表示装置１０２２に出力される。表示装置１０２２は、ＣＲＴ、ＬＣＤ、ＥＬＤ、ＰＤＰ、ＨＭＤ等により実現され、図２に示すディスプレイ１２２０、図１８に示す表示部１４０に相当する。
【０１７７】
また、音生成ＩＣ１００８は、ＣＰＵ１０００の命令によって、情報記憶媒体１００６やＲＯＭ１００２に記憶される情報、ＲＡＭ１００４に格納される音データに応じた音信号を生成する集積回路であり、生成される音信号はスピーカ１０２０によって出力される。スピーカ１０２０は、図２に示すスピーカ１２２２、図１８に示す音出力部１５０に相当する。
【０１７８】
ＶＲＡＭ１０１２は、表示装置１０２２に表示される画像データを一時的に格納する記憶装置であり、図１８に示す記憶部１３０の一部を構成するものである。このＶＲＡＭ１０１２は、画像生成ＩＣ１０１０によって生成される、１フレーム分の画像データを格納するためのフレームバッファを備える。
【０１７９】
入力装置１０２４は、各種操作を入力するための装置であり、その機能は、キーボード、マウス、タッチパネル等のハードウェアにより実現される。この入力装置１０２４は、図２に示すコントローラ１２０２、図１８に示す操作部１１０に相当する。
【０１８０】
通信装置１０２６は装置内部で利用される情報を外部とやりとりするものであり、他の装置と通信回線を介して接続されてプログラムに応じた所与の情報を送受すること等に利用される。この通信装置１０２６は、図２に示す通信装置１２１８、図１８に示す通信部１６０に相当する。
【０１８１】
１−８．作用・効果
以上のように、第１実施形態によれば、ネットワークを介して接続され、他のゲーム装置１２ｂ〜１２ｄとの間で、他キャラクタを制御するための受信データ１５２を授受し、受信データ１５２に基づいて他キャラクタの移動を制御するゲーム装置１２ａにおいて、受信データ１５２のデータ送信時刻に基づいて、描画対象フレームに対する遅延時間を算出し、算出した遅延時間及び受信データ１５２に基づいて、遅延時間における他キャラクタの位置、速度、姿勢等の変化を予測する。一方で、自キャラクタの移動制御については、入力された操作データに基づき実時間で自キャラクタの位置、速度、姿勢等の変化を算出する。そして、実時間に基づいて移動計算された自キャラクタの移動制御と、遅延時間分の変化を予測することで移動計算された他キャラクタの移動制御とを同時に行うことにより、良好なレスポンスを保ちつつ、各ゲーム装置１２ａ〜１２ｄに表示するゲーム結果の整合性を保つことができる。
【０１８２】
従って、次のような不都合が生じない。即ち、各ゲーム装置１２ａ〜１２ｄ間のゲーム結果の整合性を優先することで、次キャラクタのレスポンス性が損なわれた結果、プレーヤの意に反して自キャラクタが移動制御されてしまうといった事態が発生しない。また、レスポンスを向上させることで、自キャラクタの移動制御はリアルタイムに実行されるものの、他キャラクタは通信遅延時間分遅れた過去の位置に移動制御され、この結果、各キャラクタが実際からはかけ離れた位置に表示されるといった、ゲーム結果の不整合が発生しない。
【０１８３】
また、ネットワークの輻輳状況に応じて、他のゲーム装置１２ａ〜１２ｄから送信される受信データの受信間隔は一定とならず変動する場合がある。このような場合であっても、通信遅延時間分の変位量を予測することで、受信間隔の変動の影響を可及的に抑制することができ、ネットワークの輻輳状況がゲーム結果に反映されるといった事態を回避することができる。例えば、データの受信が大幅に遅れた結果、他キャラクタがゲーム空間中に停止し、データを受信した途端に移動するというような表示を防ぐことができる。
【０１８４】
また、他キャラクタの予測位置を算出する場合に、当該予測位置のコースの曲率を近似するように速度ベクトルの向きを回転させ、この速度ベクトルに基づいて予測位置を算出することで、コース形状に即した位置予測を行うことができる。更に、コースデータ１３８に、当該コースを最速で走行するためのベストラインについての制御点毎の曲率が記憶されている場合は、よりプレーヤの走行ラインに近い曲率を近似して、コース形状に適した位置予測を行うことができる。これにより、他キャラクタの位置移動を精度良く予測することができ、実時間で当該他キャラクタを操作しているプレーヤのゲーム結果と、他のプレーヤのゲーム結果とを整合させることができる。
【０１８５】
また、他キャラクタの予測速度を算出する場合に、予測位置における目標速度を参照し、予測前の速度が目標速度を超えている場合には、予測前の速度を目標速度に基づいて補正し、補正後の速度に基づいて速度予測を行う。これにより、予測速度が現実的でない値となるのを防止し、精度良く速度予測を行うことができる。また、プレーヤにより入力された操作データに基づき実時間で自キャラクタの移動計算を行う際に、自キャラクの表示速度を表示位置における目標速度に基づき速度補正を行っているような場合には、自キャラクタ及び他キャラクタに対して同様の処理を行うことで、ゲーム結果の整合を図ることができる。
【０１８６】
また、他キャラクタの予測角度を算出する場合に、通常走行が可能となるキャラクタの姿勢の限界値を定め、この限界値を超える場合には、予測角度を限界値の範囲内に収まるように補正することにより、他キャラクタが現実的でない姿勢で走行するといったことを防止することができる。
【０１８７】
具体的には、ピッチング方向の予測角度を算出する場合に、受信データの角度と、予測角度との符号の入れ替わりを判定し、符号が入れ替わっている場合には、予測角度を０°に設定する。これにより、例えば、ウィリーやジャックナイフといった姿勢から戻る過程において、キャラクタがウィリーから戻る勢いでジャックナイフをしてしまう、或いはジャックナイフから戻る勢いでウィリーをしてしまうといった現実には起こり得ない挙動を防止することができる。また、ピッチ方向の予測角度やロール方向の予測角度を一定の範囲とすることにより、通常走行が不可能な姿勢で他キャラクタが走行するといった不自然な挙動を防止することができる。
【０１８８】
また、予測位置と表示位置とに基づいて補間位置を算出し、他キャラクタを補間位置に基づいて描画することにより、他キャラクタの瞬間移動的な位置変化によるズレやチラツキを抑え、他キャラクタの自然な移動制御を実現することができる。つまり、予測位置は最新の受信データに基づき予測された位置であり、表示位置は最新の受信データより古いデータに基づき予測された位置である場合は、基礎となる受信データが異なることとなる。このような場合において、最新の受信データと古い受信データとの間で他プレーヤにより急操作が行われていた場合、その操作が予測位置に反映されると、表示位置と予測位置とは大きく異なることとなる。そこで、この予測位置をそのまま次フレームの表示位置とすると、他キャラクタが急激に位置変化し、これがズレやチラツキとしてプレーヤに視認され得る。しかし、予測位置と表示位置とに基づいて補間処理を行い、表示位置を予測位置の方向に調節することで、これらの瞬間移動的な位置変化を緩和し、他キャラクタの自然な移動制御を行うことができる。
【０１８９】
この補間位置を算出する際に、予測位置と表示位置との間に仮想バネを設定し、仮想バネによる仮想力（例えば、仮想バネ補正速度）によって、表示位置が予測位置に調節されるように補間位置を算出することができる。従って、他キャラクタの位置変化が自然な変化となるような移動制御を実現することができる。
【０１９０】
さらに、補間位置を算出する際に、予測位置と表示位置との間に設定される仮想バネの仮想力を緩衝するような仮想ダンパを設定し、仮想バネによる仮想力と仮想ダンパによる緩衝力（例えば、ダンパ補正速度）とに基づいて表示位置が予測位置に調節されるように補間位置を算出することができる。従って、仮想バネによる仮想力が徐々に働くようにすることができ、他キャラクタの位置変化がより自然な変化となるような移動制御を実現することができる。
【０１９１】
また、予測角度と表示角度とに基づいて補間角度を算出し、他キャラクタを補間角度に基づいて描画することにより、同様に他キャラクタの瞬間的な姿勢変化によるズレやチラツキを抑え、他キャラクタの自然な移動制御を実現することができる。
【０１９２】
この補間角度を算出する際に、バネ補正角速度といった仮想力に基づいて、表示角度が予測角度に調節されるように補間角度を算出することにより、他キャラクタの姿勢変化がより自然な変化となるような移動制御を実現することができる。また、補間角度を算出する際に、ダンパ補正角速度といった仮想的な緩衝力に基づいて、バネ補正角速度による調節が過度な調節とならないような補間角度を算出することができる。これにより、仮想バネによる他キャラクタへの仮想力を徐々に働かせて、他キャラクタのより自然な姿勢制御を実現することができる。
【０１９３】
また、接地処理を実行し、通常走行時のキャラクタの姿勢に従って、ワールド座標系におけるＹ成分（つまり、高さ方向）の位置を補正することにより、キャラクタの一部が地面の下に配置されるといった不自然な状況を回避することができる。さらに、転倒時接地処理を実行して、転倒時のキャラクタの姿勢に従って、接地点テーブルから接地点となり得る車体の座標Azを取得し、当該座標Azから重心までの高さと、路面から重心までの高さとを比較することにより、ワールド座標系における高さ方向の位置を補正する。これにより、キャラクタが転倒により種々の姿勢を取り得た場合でも、適切に高さ方向の位置を補正することができ、キャラクタの一部が地面の下に配置されるといった不自然な状況を回避することができる。
【０１９４】
［第２実施形態］
次に、第２実施形態について説明する。
第１実施形態においては、最新の受信データに基づいて予測位置及び予測速度を算出し、算出した予測位置及び予測速度と、現フレームの表示位置とに基づいて、位置補間処理を行う場合について説明した。第２実施形態においては、最新の受信データに基づいて算出した予測位置、予測速度を、当該キャラクタを操作するプレーヤの過去の履歴データに基づいて補正し、補正後の予測位置、予測速度と、現フレームの表示位置に基づいて位置補間処理を行う場合について説明する。
【０１９５】
尚、プレーヤの過去の履歴を加味して有効な予測が行えるのは通常走行時であり、転倒時には余り有効でないと考えられる。そこで、第２実施形態では、通常走行時における予測位置、予測速度をプレーヤの過去の履歴を加味して補正する場合について説明する。
【０１９６】
２−１．原理
履歴データに基づいて、予測位置、予測速度を補正する原理について説明する。履歴データは、プレーヤが過去に行ったレースゲームにおける制御点毎の、当該制御点における位置座標Pav、速度Vav、アクセル量Ia、ブレーキ量Ibの平均値を記録したデータである（図４１参照）。レースゲームにおいては、ゲームステージ毎に異なるコース形状が設定され、プレーヤは各コース毎に自己のベストライン（最も早く当該コースを走るためのライン）を想定し、ベストラインをトレースするようにコースを周回する。また、同一ラインをトレースすることで、各位置（例えば、ストレート、コーナー入口、コーナー出口）における速度、アクセル量、ブレーキ量は、一定の値を取り得る。従って、過去に同一コースを経験しているプレーヤの履歴データは、制御点毎の位置座標、速度が一定範囲の値に収束するものと考えられる。そこで、受信データに基づいて算出した予測位置、予測速度を、制御点毎の位置座標、速度といった履歴データに基づいて補正する。
【０１９７】
具体的には、図３９に示すように、予測位置Ｐdatに対応する制御点から、当該制御点に対応する履歴データの位置座標を取得し、これを履歴位置Pavとする。また、当該制御点に対応する履歴データの速度を取得し、これを履歴速度Ｖavとする。そして、予測位置Ｐdatと履歴位置Ｐavとの差分から相対位置を求め、予測速度Ｖdatと履歴速度Ｖavとの差分から相対速度を求める。ここで、予測位置Ｐdatと履歴位置Ｐavとの差分が所定範囲以上である場合、プレーヤが普段どおりの走行からかけ離れた走行をしている判断できるため、履歴データによる補正を行わないとしても良い。
【０１９８】
続いて、相対位置に定数ＳＨを乗算して、単位時間あたりのバネ補正速度を求める。また、相対速度に定数ＳＩを乗算してダンパ補正速度を求める。ここで、定数ＳＨ，ＳＩは、上限を１、下限を０の値とする。
【０１９９】
さらに、予測速度Ｖdatに、バネ補正速度を加算し、ダンパ補正速度を減算することにより、履歴補正予測速度Ｖacを算出する。そして、予測位置Ｐdatに履歴補正予測速度Ｖacの１フレーム分の速度変化量を加算して履歴補正予測位置Ｐacを求める。
【０２００】
２−２．機能構成
次に、図４０を参照して、第２実施形態におけるゲーム装置１２の機能構成について説明する。尚、本第２の実施の形態は、上述した第１実施形態におけるゲーム装置１２を用いて実現されるものであるため、第２実施形態に特徴的な部分については太線で示し、第１実施形態と同一の機能、構成については同一の符号で表し、詳細な説明は省略する。
【０２０１】
同図において、他キャラクタ移動制御部１２３０は、他キャラクタ移動計算プログラム１３５０に従って、他キャラクタ移動計算処理Ｂを実行し、受信データ等に基づき他キャラクタの移動計算を行い、他キャラクタを移動制御する。
【０２０２】
また、他キャラクタ移動計算プログラム１３５０は、ゲーム演算部１２２を他キャラクタ移動制御部１２３０として機能させるためのプログラムであり、サブルーチンに履歴補正プログラム１３５２を含むプログラムである。履歴補正プログラム１３５２は、ゲーム演算部１２２を他キャラクタ移動制御部１２２６として機能させるためのプログラムであり、他キャラクタ移動計算処理Ｂのサブルーチンとして履歴補正処理を実行するためのプログラムである。
【０２０３】
履歴取得データ１５６は、他キャラクタの移動軌跡である走行ラインの情報、速度、アクセル量、ブレーキ量の各データをプレーヤ毎、コース毎に累積的に格納する。具体的には、走行ラインの情報として、各制御点に対応する走行ラインの位置、例えば、キャラクタが通過した位置の位置座標を記憶する。また、速度として、制御点Ｑ近傍を通過した際のキャラクタの速度を記憶し、アクセル量、ブレーキ量として、制御点Ｑ近傍を通過した際にプレーヤから入力されたアクセル量、ブレーキ量を記憶する。
【０２０４】
履歴データ１５８は、履歴取得データ１５６に格納された走行ラインの情報、速度、アクセル量、ブレーキ量の制御点毎の平均値を、プレーヤ及びコース毎に記憶している。図４１に履歴データ１５８のデータ構成例を示す。同図に示すように、履歴データ１５８は、プレーヤ毎、コース毎に、各種データを格納している。
【０２０５】
具体的には、履歴データ１５８は、プレーヤを特定するための識別番号（１５８ａ）、コースを特定するためのコース番号（１５８ｂ）を記憶する。また、制御点Ｑ（１５８ｃ）毎に、位置座標Ｐav（１５８ｄ）、速度Ｖav（１５８ｅ）、アクセル量Ia（１５８ｆ）、ブレーキ量Ib（１５８ｇ）を記憶する。
【０２０６】
制御点Ｑ（１５８ｃ）は、コース上に所定間隔で配置・設定される基準点である。位置座標Ｐav（１５８ｄ）は、プレーヤが過去に走行した走行ラインを定義するための位置であり、図２０を参照して説明したコースデータ１３８ｄの目標位置ｗｔと同様の手法で定義されている。具体的には、上述した履歴取得データ１５６に格納された複数周回分のデータの、同一制御点における位置座標の平均値を記憶している。速度Ｖav（１５８ｅ）は、プレーヤが過去に走行した際の制御点Ｑ毎の速度を記憶している。具体的には、履歴取得データ１５６の速度の制御点Ｑ毎の平均値を記憶している。アクセル量Ia（１５８ｆ）は、プレーヤが過去に走行した際の制御点Ｑ毎のアクセル量を記憶している。具体的には、履歴データ１５６のアクセル量Iaの制御点Ｑ毎の平均値を制御点Ｑ毎に記憶している。ブレーキ量Ib（１５８ｇ）は、プレーヤが過去に走行した際の制御点Ｑ毎のアクセル量を記憶している。具体的には、履歴取得データ１５６のブレーキ量の制御点Ｑ毎の平均値を記憶している。履歴データ１５８は、例えば、１回のゲームが終了するごとに、履歴取得データ１５６から生成され、更新されるデータである。
【０２０７】
２−３．処理の流れ
次に、第２実施形態の処理の流れについて説明する。
図４２は、第１実施形態のゲーム進行処理における他キャラクタ移動計算処理に代えて、他キャラクタ移動計算処理Ｂを実行し、他キャラクタの履歴更新データを記憶する工程を更に追加したゲーム進行処理Ｂの流れを示すフローチャートである。
【０２０８】
同図において、他キャラクタ移動制御部１２３０は、移動体制御情報送受信処理を実行後（ステップＳ４）、他キャラクタ移動計算処理Ｂを実行する（ステップＳ１０２）。そして、他キャラクタ移動計算処理Ｂにより算出された計算結果、具体的には、移動体オブジェクトパラメータに記憶された位置情報、速度、アクセル量、ブレーキ量を履歴取得データ１５６に記憶する（ステップＳ１０４）。
【０２０９】
図４３は、第１実施形態の他キャラクタ移動計算処理に、第２実施形態に特徴的な履歴補正処理を追加した他キャラクタ移動計算処理Ｂの流れを示すフローチャートである。同図において、他キャラクタ移動制御部１２３０は、ループＢにおいて、位置予測処理（ステップＳ２２）、速度予測処理を実行後（ステップＳ２４）、更に、履歴補正処理を実行する（ステップＳ１０６）。
【０２１０】
図４４，４５は、履歴補正処理の流れを示すフローチャートである。図４４において、他キャラクタ移動制御部１２３０は、履歴データ１５８から予測位置に対応する履歴位置を取得する（ステップＳ１１２）。次いで、予測位置と履歴位置との差分を相対位置として求め（ステップＳ１１４）、相対位置の距離が一定範囲内であるか否かを判定する（ステップＳ１１６）。
【０２１１】
相対位置の距離が一定範囲内でない場合（ステップＳ１１６；ＮＯ）、プレーヤが普段どおりの走行をしてないと判定して、履歴補正処理を終了する。相対位置の距離が一定範囲内である場合（ステップＳ１１６；ＹＥＳ）、履歴データ１５８から対応する履歴速度を取得して（ステップＳ１１８）、予測速度と履歴速度との差分から相対速度を求める（ステップＳ１２０）。
【０２１２】
続いて、相対位置に定数ＳＨを乗算して、単位時間あたり位置変化量をバネ補正速度として求める（ステップＳ１２８）。また、相対速度に定数ＳＩを乗算してダンパ補正速度を求める（ステップＳ１３０）。さらに、予測速度にバネ補正速度を加算し、ダンパ補正速度を減算して、履歴補正予測速度を算出する（ステップＳ１３２）。
【０２１３】
そして、履歴補正予測速度から１フレーム分の移動距離を算出し、予測位置に移動距離を加算して履歴補正予測位置を算出する（ステップＳ１３４）。次いで、最新データ予測データの位置座標、速度を履歴補正予測位置、履歴補正予測速度に更新して（ステップＳ１３６）、本履歴補正処理を終了する。
【０２１４】
２−４．作用・効果
以上のように、第２実施形態によれば、他のゲーム装置１２から受信した最新の受信データに基づいて予測した予測位置及び予測速度を、履歴データ１５８の基づいて更に補正することで、プレーヤの癖や習性といった要素を加味して、キャラクタの移動予測を行うことができる。つまり、走行ラインの情報、速度、アクセル量、ブレーキ量といった、コース形状に応じて一定の値に収束し得る情報に基づいて、他キャラクタの予測位置、予測速度を補正することにより、他キャラクタが将来的に行うであろう挙動を予測して、より精度の高い予測を行うことができる。
【０２１５】
また、履歴補正処理において、予測位置と履歴位置との差分が所定範囲以上となる場合は、履歴データによる補正を行わないこととしたため、例えば、トラブルの発生により、キャラクタが通常どおりの走行をしていない場合には、受信データに基づく予想位置により、位置補間処理を実行して、補間予測位置を次フレームの表示位置とすることができる。これにより、ゲーム中のキャラクタの状況に応じて履歴データによる補正を適切に行うことができる。
【０２１６】
２−５．変形例
以上、本発明についての好適な実施形態の一例について説明したが、本発明は、上記した第１実施形態、第２実施形態に限らず、発明の趣旨を逸脱しない限りにおいて適宜変更可能である。以下、変形例について説明する。
【０２１７】
２−５−１．分割
第１実施形態では、予測位置、予測速度を算出する場合、１フレーム毎に累積的に予測位置、予測速度を算出するものとして説明を行ったが、この形態に限らず、予測位置、予測速度の算出を複数フレーム毎に分割して行う構成であっても良い。
【０２１８】
例えば、図４６に示すように、遅延時間が３０フレーム単位時間であった場合、上述した方法では３０回のループ処理を行う必要がある。そこで、例えば、３０フレームを３フレーム毎に分割（以下、このフレーム数の単位のことを「分割単位フレーム数」と呼ぶ。）して、予測位置、予測速度を算出することにより、ループ回数を１０回まで減らすことができる。
【０２１９】
具体的には、ある位置から３フレーム後の位置の曲率ｒｔを取得して、３フレーム後の位置における予測角度を算出する。次いで、予測角度に応じて、ある位置の速度ベクトルをヨー方向に回転させる。そして、この速度ベクトルの３フレーム分の移動距離をある位置に加算して、３フレーム後の予測位置を算出する。同様に、予測速度も３フレーム毎に算出する。
【０２２０】
この構成によれば、処理時間を短縮することができるため、リアルタイムに動画像を生成する際の時間的な制約を解消し、いわゆる処理落ちの発生を防止することができる。一方で、１フレーム毎に予測位置、予測速度を算出する場合と比較して、予測精度が低くなる可能性がある。例えば、各位置における曲率が一定でない場合に、３フレーム毎に計算を行った場合、３フレーム間の曲率の違いが誤差として計算結果に含まれることとなる。この結果、３フレーム間の誤差がそれぞれ蓄積されることにより予測精度の低下が見込まれる。
【０２２１】
なお、分割単位フレーム数の一例として、遅延時間が３０フレームの場合に３フレームの分割単位フレーム数として説明したが、この数は適宜設計変更してもよい。
また、分割単位フレーム数は、一定である必要はなく、可変としてもよい。例えば、遅延時間のフレーム数に応じて、分割単位フレーム数を変更してもよい。具体的には、遅延時間が３０フレームの場合には分割単位フレーム数を３フレームとし、遅延時間が２０フレームの場合には分割単位フレーム数を２フレームとするといった、ループ回数が一定となるような分割単位フレーム数にするとしてもよい。ゲームにおいては１フレーム（１／６０秒）以内に１枚のゲーム画像を生成する必要があるため、予測にかけることのできる時間には限りがあり、上限がある。従って、その上限に当たるループ回数（例えば１０回）を元に、分割単位フレーム数を決定することで、できる限り予測精度を高めつつ、予測にかかる処理時間を一定以内にといったことを実現できる。
【０２２２】
また、１つのゲームを実行するためのプログラムには、サブルーチンとして機能する様々な処理ルーチンが含まれているのが通常である。例えば、上述したバイクレースゲームにおいて、バイクと、壁オブジェクトとの衝突を判定するための壁衝突判定ルーチンがそれである。壁衝突判定ルーチンでは、例えば、衝突判定の対象とするバイクと、壁オブジェクトとを引数として、当該バイクの現在位置、１フレーム時間後の移動位置、及び壁オブジェクトの位置等に基づいて、当該バイクが当該壁オブジェクトに衝突するか否かが判定される。
【０２２３】
しかし、こういった処理ルーチンは、想定される範囲内で作成されているのが通常である。上述した壁衝突判定ルーチンの例では、バイクが時速１０００ｋｍで走行することは想定外であり、時速４００ｋｍを想定の上限（想定最高速度）とするといった具合である。時速４００ｋｍであれば、１フレーム時間当たり約１．８５２ｍの移動となるため、現在のバイク位置から、移動方向に向かって１．８５２ｍ以内に当該壁オブジェクトが存在しなければ、次のフレーム時間までの間に、バイクが当該壁オブジェクトと衝突することはない。
【０２２４】
ところが、分割単位フレーム数ごとに纏めて予測位置、予測速度を算出するとした場合、分割単位フレーム数を１フレームとみなした演算がなされているため、各種の処理ルーチンにおいて不都合が発生し得る。具体的に説明する。仮に、バイクの速度が時速３００ｋｍとする。このとき、分割単位フレーム数が３フレームであれば、３フレームが１フレームとみなされるため、実質、時速９００ｋｍとして壁衝突判定ルーチンが実行されることとなる。従って、壁オブジェクトとの衝突判定を正確に行えない不具合が生じ得る。
【０２２５】
そこで、こういった場合も、分割単位フレーム数を変更することとすればよい。具体的には、壁衝突判定ルーチンの想定最高速度をもとに、バイクの現在速度から分割単位フレーム数を決定する。例えば、想定最高速度が時速４００ｋｍであり、現在速度が時速１００ｋｍであった場合、４００／１００＝４フレームを分割単位フレーム数とするといった具合である。
【０２２６】
２−５−２．履歴データの取得
第２実施形態では、自ゲーム装置１２ａ〜１２ｄにおいて、ゲーム進行処理において、他キャラクタの履歴取得データ１５６を記録し、履歴データ１５８を生成する場合を例として説明したが、履歴データの取得はこの方法に限らない。
【０２２７】
例えば、ゲーム進行処理において、ゲーム進行制御部１１１は、自キャラクタ移動制御部１２２４による移動計算の結果を自キャラクタの履歴取得データとして逐次記録し、履歴取得データから自キャラクタの履歴データを生成する。そして、例えばゲーム開始前に、対戦するプレーヤ間で、自キャラクタの履歴データをネットワークＮを介して授受することにより、他キャラクタの履歴データ１５６を記憶部１３０に記憶する構成であっても良い。
【０２２８】
この構成によれば、自ゲーム装置１２においてプレーヤの操作入力に従ってリアルタイムに処理された計算結果を履歴データ１５６として取得することができるため、正確な履歴データを取得することができる。そして、この履歴データ１５６に基づき、予測位置、予測速度の補正を行うことにより、他キャラクタの位置予測、速度予測を正確に行うことができる。
【０２２９】
更に、履歴データは、各キャラクタが実際に走行した際の履歴データに限定されない。例えば、上級者、中級者、初級者の代表例のデータを履歴データとして予め記憶しておき、各プレーヤのレベルに応じて、上級者、中級者、初級者の何れかの履歴データに基づいて、履歴補正処理を行う構成であっても良い。或いは、ラップタイム毎に履歴データを備え、各プレーヤの中間ラップタイムに応じて、対応するラップタイムの履歴データに基づき履歴補正処理を行う構成であっても良い。
【０２３０】
２−５−３．ゲーム装置
また、上述した実施形態では、ゲーム装置１２の一例として家庭用ゲーム装置を例に挙げて説明したが、本発明を適用可能な装置は、これに限られない。例えば、図４７に示すようなゲームセンターやアミューズメント施設等に設置される業務用のゲーム端末１１００であっても良い。更には、携帯型のゲーム装置、ＰＤＡ等の装置であってもよいことは勿論である。
【０２３１】
２−５−４．他のゲームへの適用
上述した実施形態は、本発明をバイクレースゲームに適用した場合について説明を行ったが、本発明を適用可能なゲームはバイクレースゲームに限定されるものではない。例えば、図４８に示すようなカーレースゲームに適用しても良く、その他、飛行機ゲームなどに適用しても良い。
【図面の簡単な説明】
【０２３２】
【図１】ゲームシステムの概略構成を示す図。
【図２】ゲーム装置の外観構成を示す図。
【図３】ゲーム概要を説明する図。
【図４】キャラクタの方向を説明するための図。
【図５】位置予測、速度予測を説明するための図。
【図６】位置予測を説明するための図。
【図７】速度予測を説明するための図。
【図８】ピッチング方向の角度予測を説明するための図。
【図９】ロール方向の角度予測を説明するための図。
【図１０】転倒時の位置予測、速度予測、角度予測を説明するための図。
【図１１】位置補間を説明するための図。
【図１２】位置補間を説明するための図。
【図１３】（ａ）バネ補正速度を説明するための図、（ｂ）ダンパ補正速度を説明するための図。
【図１４】通常走行時の角度補間を説明するための図。
【図１５】転倒時の角度補間を説明するための図。
【図１６】通常走行時の接地処理を説明するための図。
【図１７】転倒時の接地処理を説明するための図。
【図１８】第１実施形態のゲーム装置の機能ブロック図。
【図１９】コースデータを説明するための図
【図２０】コースデータのデータ構成例を示す図。
【図２１】移動体オブジェクトパラメータのデータ構成例を示す図。
【図２２】最新データ予測データのデータ構成例を示す図。
【図２３】補間データのデータ構成例を示す図。
【図２４】受信データのデータ構成例を示す図。
【図２５】接地点テーブルのデータ構成例を示す図。
【図２６】ゲーム進行処理を示すフローチャート。
【図２７】他キャラクタ移動計算処理を示すフローチャート。
【図２８】位置予測処理を示すフローチャート。
【図２９】速度予測処理を示すフローチャート。
【図３０】角度予測処理を示すフローチャート。
【図３１】位置補間処理を示すフローチャート。
【図３２】角度補間処理を示すフローチャート。
【図３３】接地処理を示すフローチャート。
【図３４】転倒時位置速度予測処理を示すフローチャート。
【図３５】転倒時角度予測処理を示すフローチャート。
【図３６】転倒時角度補間処理を示すフローチャート。
【図３７】転倒時接地処理を示すフローチャート。
【図３８】ハードウェア構成の一例を示す図。
【図３９】履歴補正を説明するための図。
【図４０】第２実施形態のゲーム装置の機能ブロック図。
【図４１】履歴データのデータ構成例を示す図。
【図４２】ゲーム進行処理Ｂを示すフローチャート。
【図４３】他キャラクタ移動計算処理Ｂを示すフローチャート。
【図４４】履歴補正処理の一部を示すフローチャート。
【図４５】履歴補正処理の一部を示すフローチャート。
【図４６】変形例を説明するための図。
【図４７】他のゲーム装置に適用した場合を示す図。
【図４８】他のゲームに適用した場合を示す図。
【符号の説明】
【０２３３】
１２            ゲーム装置
１１０        操作部
１２０        処理部
１２２      ゲーム演算部
１２２２  ゲーム進行制御部
１２２４  自キャラクタ移動制御部
１２２６  他キャラクタ移動制御部
１２２８  移動体制御情報送受信部
１３０        記憶部
１３２      ゲームプログラム
１３２２  ゲーム進行処理プログラム
１３２４  自キャラクタ移動計算プログラム
１３２６  他キャラクタ移動計算プログラム
１３２８  位置予測プログラム
１３３０  速度予測プログラム
１３３２  角度予測プログラム
１３３４  位置補間プログラム
１３３６  角度補間プログラム
１３３８  接地プログラム
１３４０  転倒時位置速度予測プログラム
１３４２  転倒時角度予測プログラム
１３４４  転倒時角度補間プログラム
１３４６  転倒時接地プログラム
１３４８  移動体制御情報送受信プログラム
１３４      ゲームデータ
１３６    ステージデータ
１３８    コースデータ
１４２    移動体オブジェクトデータ
１４４    移動体オブジェクトパラメータ
１４６    最新データ予測データ
１４８    補間データ
１５２    受信データ
１５４    接地点テーブル
１４０        表示部
１５０        音出力部
１６０        通信部
【図１】
2006320502.tif 000003
【図２】
2006320502.tif 000004
【図３】
2006320502.tif 000005
【図４】
2006320502.tif 000006
【図５】
2006320502.tif 000007
【図６】
2006320502.tif 000008
【図７】
2006320502.tif 000009
【図８】
2006320502.tif 000010
【図９】
2006320502.tif 000011
【図１０】
2006320502.tif 000012
【図１１】
2006320502.tif 000013
【図１２】
2006320502.tif 000014
【図１３】
2006320502.tif 000015
【図１４】
2006320502.tif 000016
【図１５】
2006320502.tif 000017
【図１６】
2006320502.tif 000018
【図１７】
2006320502.tif 000019
【図１８】
2006320502.tif 000020
【図１９】
2006320502.tif 000021
【図２０】
2006320502.tif 000022
【図２１】
2006320502.tif 000023
【図２２】
2006320502.tif 000024
【図２３】
2006320502.tif 000025
【図２４】
2006320502.tif 000026
【図２５】
2006320502.tif 000027
【図２６】
2006320502.tif 000028
【図２７】
2006320502.tif 000029
【図２８】
2006320502.tif 000030
【図２９】
2006320502.tif 000031
【図３０】
2006320502.tif 000032
【図３１】
2006320502.tif 000033
【図３２】
2006320502.tif 000034
【図３３】
2006320502.tif 000035
【図３４】
2006320502.tif 000036
【図３５】
2006320502.tif 000037
【図３６】
2006320502.tif 000038
【図３７】
2006320502.tif 000039
【図３８】
2006320502.tif 000040
【図３９】
2006320502.tif 000041
【図４０】
2006320502.tif 000042
【図４１】
2006320502.tif 000043
【図４２】
2006320502.tif 000044
【図４３】
2006320502.tif 000045
【図４４】
2006320502.tif 000046
【図４５】
2006320502.tif 000047
【図４６】
2006320502.tif 000048
【図４７】
2006320502.tif 000049
【図４８】
2006320502.tif 000050