(57)【特許請求の範囲】
【請求項１】
ゲーム空間内において移動体が第１の位置から第２の位置まで移動する移動時間をゲーム画面を更新する単位時間を用いて算出する処理をコンピュータに実行させる移動時間算出プログラムであって、
前記コンピュータを、
前記第１の位置から前記第２の位置を通過した直後の位置までの前記移動体の概算移動時間を、前記単位時間を用いて算出する概算時間算出手段、
前記第２の位置を通過した直後の位置を仮想位置に設定する仮想位置設定手段、
前記第２の位置を通過する直前の位置と仮想位置とを結ぶ線分上の位置であって、前記単位時間よりも短い微少単位時間の間に前記移動体が進む距離である所定距離だけ当該仮想位置から戻った位置を新たな仮想位置とする仮想位置更新処理を繰り返す仮想位置更新手段、
前記仮想位置が決まるたびに、当該仮想位置が、前記仮想位置設定手段によって最初に設定された位置から前記第２の位置を越えたか否かを判定する判定手段、
前記判定手段によって新たな仮想位置が前記第２の位置を越えていないと判断されたとき、前記概算移動時間から前記微少単位時間を減算して、当該新たな仮想位置における仮想移動時間を算出する減算手段、および
前記判定手段によって新たな仮想位置が前記第２の位置を越えていると判定されたとき、前記第２の位置を越える直前の新たな仮想位置における仮想移動時間、または、前記第２の位置を越えた直後の新たな仮想位置における仮想移動時間を、前記移動体が前記第２の位置を通過したときの移動時間として決定する移動時間決定手段、として機能させる、移動時間算出プログラム。
【請求項２】
ゲーム空間内において移動体が第１の位置から第２の位置まで移動する移動時間をゲーム画面を更新する単位時間を用いて算出する処理をコンピュータに実行させる移動時間算出プログラムであって、
前記コンピュータを、
前記第１の位置から前記第２の位置を通過する直前の位置までの前記移動体の概算移動時間を、前記単位時間を用いて算出する概算時間算出手段、
前記第２の位置を通過する直前の位置を仮想位置に設定する仮想位置設定手段、
仮想位置と前記第２の位置を通過した直後の位置とを結ぶ線分上の位置であって、前記単位時間よりも短い微少単位時間の間に前記移動体が進む距離である所定距離だけ当該仮想位置から進んだ位置を新たな仮想位置とする仮想位置更新処理を繰り返す仮想位置更新手段、
前記仮想位置が決まるたびに、当該仮想位置が、前記仮想位置設定手段によって最初に設定された位置から前記第２の位置を越えたか否かを判定する判定手段、
前記判定手段によって新たな仮想位置が前記第２の位置を越えていないと判定されたとき、前記概算移動時間に前記微少単位時間を加算して、当該新たな仮想位置における仮想移動時間を算出する加算手段、および
前記判定手段によって新たな仮想位置が前記第２の位置を越えていると判定されたとき、前記第２の位置を越える直前の新たな仮想位置における仮想移動時間、または、前記第２の位置を越えた直後の新たな仮想位置における仮想移動時間を前記第２の位置を通過したときの移動時間として決定する移動時間決定手段、として機能させる、移動時間算出プログラム。
【請求項３】
ゲーム空間内において移動体が第１の位置から第２の位置まで移動する移動時間をゲーム画面を更新する単位時間を用いて算出する処理をコンピュータに実行させる移動時間算出プログラムであって、
前記コンピュータを、
前記第１の位置から前記第２の位置を通過した直後の位置までの前記移動体の概算移動時間を、前記単位時間を用いて算出する概算時間算出手段、
前記概算移動時間から前記単位時間よりも短い微少単位時間を減算する減算処理を繰り返す減算手段、
前記減算処理の結果得られる時間における移動体の位置を示す仮想位置を前記減算処理の度に算出する仮想位置算出手段、
前記仮想位置算出手段によって算出された仮想位置が、前記仮想位置算出手段によって最初に算出された位置から前記第２の位置を越えたか否かを仮想位置が算出される度に判定する判定手段、および
前記判定手段によって前記仮想位置が前記第２の位置を越えていると判定される直前または直後の仮想位置における時間を前記第２の位置を通過したときの移動時間として決定する移動時間決定手段、として機能させる、移動時間算出プログラム。
【請求項４】
ゲーム空間内において移動体が第１の位置から第２の位置まで移動する移動時間をゲーム画面を更新する単位時間を用いて算出する処理をコンピュータに実行させる移動時間算出プログラムであって、
前記コンピュータを、
前記第１の位置から前記第２の位置を通過する直前の位置までの前記移動体の概算移動時間を、前記単位時間を用いて算出する概算時間算出手段、
前記概算移動時間から前記単位時間よりも短い微少単位時間を加算する加算処理を繰り返す加算手段、
前記加算処理の結果得られる時間における移動体の位置を示す仮想位置を前記加算処理の度に算出する仮想位置算出手段、
前記仮想位置算出手段によって算出された仮想位置が、前記仮想位置設定手段によって最初に設定された位置から前記第２の位置を越えた位置であるか否かを仮想位置が算出される度に判定する判定手段、および
前記判定手段によって前記仮想位置が前記第２の位置を越えていると判定される直前または直後の仮想位置における時間を前記第２の位置を通過したときの移動時間として決定する移動時間決定手段、として機能させる、移動時間算出プログラム。
【請求項５】
前記コンピュータを、
ゲーム画面が更新される度に前記移動体の位置を決定する位置決定手段、および
前記位置決定手段によって決定された位置が前記第２の位置を通過したことを検出する通過検出手段、としてさらに機能させる移動時間算出プログラムであって、
前記概算時間算出手段は、前記通過検出手段によって前記移動体が前記第２の位置を通過したことが検出されたとき、前記移動体の概算移動時間を算出する、請求項１から請求項４のいずれかに記載の移動時間算出プログラム。
【請求項６】
前記微少単位時間は、前記単位時間を２以上の整数で分割した時間であり、
前記所定距離は、前記移動体が前記第２の位置を通過する直前の位置から直後の位置までの距離を前記整数で分割した距離である、請求項１から請求項４のいずれかに記載の移動時間算出プログラム。
【請求項７】
前記判定手段は、前記第２の位置を通過した直後における前記移動体の位置から前記第２の位置までの距離を算出し、前記第２の位置を通過した直後における前記移動体の位置から仮想位置までの距離よりも当該算出された距離が長いか否かによって判定を行う、請求項１または請求項３に記載の移動時間算出プログラム。
【請求項８】
前記判定手段は、前記第２の位置を通過する直前における前記移動体の位置から前記第２の位置までの距離を算出し、前記第２の位置を通過する直前における前記移動体の位置から仮想位置までの距離よりも当該算出された距離が長いか否かによって判定を行う、請求項２または請求項４に記載の移動時間算出プログラム。
【請求項９】
請求項１から請求項８のいずれかに記載の移動時間算出プログラムを記録した、コンピュータ読み取り可能な情報記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム空間内において移動体がある地点に到達するまでの移動時間を算出するための移動時間算出プログラムであり、より特定的には、当該移動体の移動時間を、ゲーム画面を更新する単位時間以下の値で正確に算出する移動時間算出プログラムに関する。
【背景技術】
【０００２】
プレイヤが操作するレーシングカーとレース場とを画面に表示し、レーシングカーの速さを競うテレビゲームは多くある。レースゲームの目的は少しでも早いタイムでゴールに到達することであるので、一般的なレースゲームではレーシングカーのゴール時にゴールへの到達時間（ゴールタイム）が測定され、画面に表示される。ここで、一般的には、ゴールタイムはゲーム画面を更新する単位時間（フレーム時間）を単位として算出されている。このフレーム時間は一般に１／６０（秒）であるので、一般的なレースゲームではゴールタイムを１／６０（秒）以下の精度で測定することはできない。
【０００３】
そこで、フレーム時間以下の精度でゴールタイムを測定する方法として、次の手法が提案されている（例えば、特許文献１参照）。図１６は、ゴールタイムを測定する従来の手法を説明するための図である。特許文献１では、図１６に示す、距離Ｌ’と、距離Ｌとを用いた比の計算によって、計算上のゴールＧ’に到達する時間Ｔ１を算出している。距離Ｌ’は、計時ポイントＰと計算上のゴールＧとの間の距離であり、距離Ｌは、実際のゴールＧと計算上のゴールＧ’との間の距離である。具体的には、以下の式（１）および式（２）を用いて、計算上のゴールＧ’に到達する時間Ｔ１を算出している。
Ｔ１＝ｎ／６０＋ｔ  …（１）
Ｌ：（１／６０）＝（Ｌ−Ｌ’）：ｔ  …（２）
式（１）および式（２）において、時間（ｎ／６０）は、ゲームコース９１においてレーシングカーがフレーム時間単位の測定ポイント（計時ポイント）Ｐに到達する時間である。また、時間ｔは、計時ポイントＰから計算上のゴールＧ’までの移動時間である。なお、上記と同様の方法で実際のゴールＧに到達する時間Ｔ２を算出することも可能である。
【特許文献１】特許第３４０３５０６号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の手法によれば、１／６０（秒）以下の精度で時間Ｔ１またはＴ２を算出することができる。しかし、上記の手法では比を用いた計算を行うことが原因でゴールタイムの計算処理に要する時間が長くなる。そのため、ＣＰＵ性能の劣るゲーム機では、ゴールタイムの計算処理に時間を要する結果、ゴールタイムが画面に表示されるまでにタイムラグが発生するおそれがあった。
【０００５】
ここで、計算処理に時間を要する原因は、比を用いた計算に乗算・除算演算が含まれることである。図１７は乗算演算処理の流れを示すフローチャートであり、図１８は除算処理の流れを示すフローチャートである。図１７において、例えば、（乗数）×（被乗数）＝（積）の乗算演算は次のように行われる。すなわち、まず、乗数の最下位ビットが１の場合、積に被乗数が加算される（ステップ８１および８２）。続いて、被乗数が左に１ビットシフトされる（ステップ８３）。続いて、乗数が右に１ビットシフトされる（ステップ８４）。以上の処理がＮ（Ｎは乗数のビット数）回繰り返される（ステップ８５および８６）ことによって積が算出される。
【０００６】
一方、図１８において、（被除数）／（除数）＝（商）の除算演算は次のように行われる。すなわち、まず、除数がＮビット左にシフトされる（Ｎは除数のビット数）（ステップ９１）。続いて、Ｎの値が１加算される（ステップ９２）。続いて、被除数から除数を減算することによって、被除数が除数よりも大きいか否かが判定される（ステップ９３）。この判定において被除数が大きい場合、商が１ビット左にシフトされ、商の最下位ビットが０とされる（ステップ９４）。一方、被除数が小さい場合、商が１ビット左にシフトされ、商の最下位ビットが１とされる（ステップ９５）。この場合さらに、被除数から除数を減算した結果が被除数とされる（ステップ９６）。ステップ９４またはステップ９６の次に、除数が１ビット右にシフトされる（ステップ９７）。以上のステップ９３〜９７の処理がＮ＋１回繰り返される（ステップ９８および９９）ことによって、商が算出される。
【０００７】
図１８に示すように、除数演算の場合には被除数から除数を減算する計算（ステップ９３）の結果に応じて処理が分岐している。従って、除数演算の処理時間は、図１７に示す乗算演算のようにステップ８１〜８６の処理が単純に繰り返される場合に比べて長くなる。
【０００８】
以上のように、従来の手法によれば、比を用いた計算を行うことから除数演算が必要となり、その結果ゴールタイムの計算処理に時間を要するおそれがあった。そのため、ゴールタイムの表示が遅くなってしまい、プレイヤにゴールタイムを迅速に通知することができなくなるおそれがあった。また、例えば、最終的なゴールポイントだけではなく、コース途中の通過ポイントの通過タイムを測定する場合においても従来の手法を適用することが可能である。しかし、通過タイムの測定に時間がかかり通過タイムの表示が遅くなると、どの通過ポイントを通過した時のタイムが表示されたのかプレイヤに伝わりにくくなるおそれがある。
【０００９】
また、従来の手法によれば、正確なタイムを計算することができるが、ゲームによってはそこまでの精度での計算が必要がない場合も多くある。例えば、タイムの表示桁数が小数点以下３桁しかない場合にはそれ以上の桁数の計算が必要でなく、ゲームの内容やゲーム装置の性能等によっては、正確なタイムを計算するよりも、より迅速にタイムを表示することが望まれる場合もある。しかし、従来の手法によれば、Ｔ１またはＴ２の計算に用いられる値は、ゲームプログラム側で自由に調整することが不可能である。つまり、ゲームプログラム作成者は、ゲームの内容やゲーム装置の性能等に応じて、ゴールタイムの計算処理の精度又は／及び処理時間を調整することができなかった。
【００１０】
それ故、本発明の目的は、ゲーム空間を移動する移動体の移動時間を必要精度の範囲で正確に算出することが可能な移動時間算出プログラムを提供することである。
【００１１】
また、本発明の他の目的は、、移動時間の算出に要する処理時間を短時間で行うことが可能な移動時間算出プログラムを提供することである。
【００１２】
また、本発明の他の目的は、ゲームの内容やゲーム装置の性能等に応じて、移動体の移動時間の算出処理の精度や処理時間を容易に調整することが可能な移動時間算出プログラムを提供することである。
【課題を解決するための手段】
【００１３】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
請求項１に記載の発明は、ゲーム空間内において移動体（カート４１）が第１の位置（スタート位置）から第２の位置（ゴールライン４２）まで移動する移動時間をゲーム画面を更新する単位時間（フレーム時間）を用いて算出する処理をコンピュータに実行させる移動時間算出プログラム（ゲームプログラム５１）である。移動時間算出プログラムは、コンピュータを、概算時間算出手段（Ｓ１１（ステップ１１の略。以下同様。）、Ｓ２１、またはＳ４１を実行するＣＰＵ３１。以下、単にステップ番号のみを示す。）、仮想位置設定手段（Ｓ１２またはＳ４２）、仮想位置更新手段（Ｓ１５、Ｓ２６、またはＳ４６）、判定手段（Ｓ１６、Ｓ２５、またはＳ４７）、減算手段（Ｓ１７、Ｓ２６、またはＳ４６）、および移動時間決定手段（Ｓ１８またはＳ４９）として機能させる。概算時間算出手段は、第１の位置から第２の位置を通過した直後の位置までの移動体の概算移動時間を、前記単位時間を用いて算出する。仮想位置設定手段は、第２の位置を通過した直後の位置を仮想位置（ｐ）に設定する。仮想位置更新手段は、第２の位置を通過する直前の位置と仮想位置とを結ぶ線分上の位置であって、単位時間よりも短い微少単位時間（Δｔ）の間に移動体が進む距離である所定距離（ΔｖまたはΔＬ）だけ当該仮想位置から戻った位置を新たな仮想位置とする仮想位置更新処理を繰り返す。判定手段は、仮想位置が決まるたびに、当該仮想位置が、仮想位置設定手段によって最初に設定された位置から第２の位置を越えたか否かを判定する。減算手段は、判定手段によって新たな仮想位置が第２の位置を越えていないと判断されたとき、概算移動時間から微少単位時間を減算して、当該新たな仮想位置における移動時間を算出する。移動時間決定手段は、前記判定手段によって新たな仮想位置が第２の位置を越えていると判定されたとき、第２の位置を越える直前の新たな仮想位置における仮想移動時間、または、第２の位置を越えた直後の新たな仮想位置における仮想移動時間を第２の位置を通過したときの移動時間として決定する。
【００１４】
なお、上記において、仮想移動時間とは、仮想位置における移動時間を意味する。つまり、概算移動時間とは仮想移動時間に含まれる概念である。従って、上記において一度も減算処理が行われない場合には、第２の位置を通過したときの移動時間は概算移動時間となることもあり得る。
【００１５】
請求項２に記載の発明は、ゲーム空間内において移動体が第１の位置から第２の位置まで移動する移動時間をゲーム画面を更新する単位時間を用いて算出する処理をコンピュータに実行させる移動時間算出プログラムである。移動時間算出プログラムは、コンピュータを、概算時間算出手段（Ｓ３１）、仮想位置設定手段（Ｓ３２）、仮想位置更新手段（Ｓ３５）、判定手段（Ｓ３７）、加算手段（Ｓ３６）、判定手段（Ｓ３７）、および移動時間決定手段（Ｓ３８）として機能させる。概算時間算出手段は、第１の位置から第２の位置を通過する直前の位置までの移動体の概算移動時間を、前記単位時間を用いて算出する。仮想位置設定手段は、第２の位置を通過する直前の位置を仮想位置に設定する。仮想位置更新手段は、仮想位置と第２の位置を通過した直後の位置とを結ぶ線分上の位置であって、単位時間よりも短い微少単位時間の間に移動体が進む距離である所定距離だけ当該仮想位置から進んだ位置を新たな仮想位置とする仮想位置更新処理を繰り返す。判定手段は、仮想位置が決まるたびに、当該仮想位置が、仮想位置設定手段によって最初に設定された位置から第２の位置を越えたか否かを判定する。加算手段は、判定手段によって新たな仮想位置が第２の位置を越えていないと判定されたとき、概算移動時間に微少単位時間を加算して、当該新たな仮想位置における仮想移動時間を算出する。移動時間決定手段は、判定手段によって新たな仮想位置が第２の位置を越えた位置であると判定されたとき、第２の位置を越える直前の新たな仮想位置における仮想移動時間、または、第２の位置を越えた直後の新たな仮想位置における仮想移動時間を第２の位置を通過したときの移動時間として決定する。
【００１６】
請求項３に記載の発明は、ゲーム空間内において移動体が第１の位置から第２の位置まで移動する移動時間をゲーム画面を更新する単位時間を用いて算出する処理をコンピュータに実行させる移動時間算出プログラムである。移動時間算出プログラムは、コンピュータを、概算時間算出手段（Ｓ１１、Ｓ２１、またはＳ４１）、減算手段（Ｓ１７、Ｓ２６、またはＳ４６）、仮想位置算出手段（Ｓ１５、Ｓ２６、またはＳ４６）、判定手段（Ｓ１６、Ｓ２５、またはＳ４７）、および移動時間決定手段（Ｓ１８またはＳ４９）として機能させる。概算時間算出手段は、第１の位置から第２の位置を通過した直後の位置までの移動体の概算移動時間を、単位時間を用いて算出する。減算手段は、概算移動時間から単位時間よりも短い微少単位時間を減算する減算処理を繰り返す。仮想位置算出手段は、減算処理の結果得られる時間における移動体の位置を示す仮想位置を減算処理の度に算出する。判定手段は、仮想位置算出手段によって算出された仮想位置が、仮想位置算出手段によって最初に算出された位置から第２の位置のを越えたか否かを仮想位置が算出される度に判定する。移動時間決定手段は、判定手段によって仮想位置が第２の位置を越えていると判定される直前または直後の仮想位置における時間を第２の位置を通過したときの移動時間として決定する。
【００１７】
請求項４に記載の発明は、ゲーム空間内において移動体が第１の位置から第２の位置まで移動する移動時間をゲーム画面を更新する単位時間を用いて算出する処理をコンピュータに実行させる移動時間算出プログラムである。移動時間算出プログラムは、コンピュータを、概算時間算出手段（Ｓ３１）、加算手段（Ｓ３６）、仮想位置算出手段（Ｓ３５）、判定手段（Ｓ３７）、および移動時間決定手段（Ｓ３８）として機能させる。概算時間算出手段は、第１の位置から第２の位置を通過する直前の位置までの移動体の概算移動時間を、単位時間を用いて算出する。加算手段は、概算移動時間から単位時間よりも短い微少単位時間を加算する加算処理を繰り返す。仮想位置算出手段は、加算処理の結果得られる時間における移動体の位置を示す仮想位置を加算処理の度に算出する。判定手段は、仮想位置算出手段によって算出された仮想位置が、仮想位置設定手段によって最初に設定された位置から第２の位置を越えた位置であるか否かを仮想位置が算出される度に判定する。移動時間決定手段は、判定手段によって仮想位置が第２の位置を越えた位置であると判定される直前または直後の仮想位置における時間を第２の位置を通過したときの移動時間として決定する。
【００１８】
なお、上記移動時間算出プログラムは、コンピュータを、ゲーム画面が更新される度に移動体の位置を決定する位置決定手段、および位置決定手段によって決定された位置が第２の位置を通過したことを検出する通過検出手段としてさらに機能させるものであってもよい。このとき、概算時間算出手段は、通過検出手段によって移動体が第２の位置を通過したことが検出されたとき、移動体の概算移動時間を算出する。
【００１９】
また、微少単位時間は、単位時間を２以上の整数で分割した時間であってもよい。このとき、所定距離は、移動体が第２の位置を通過する直前の位置から直後の位置までの距離を当該整数で分割した距離である。
【００２０】
また、判定手段は、第２の位置を通過した直後における移動体の位置から第２の位置までの距離を算出し、第２の位置を通過した直後における移動体の位置から仮想位置までの距離よりも当該算出された距離が長いか否かによって判定を行うようにしてもよい。
【００２１】
また、判定手段は、第２の位置を通過する直前における移動体の位置から第２の位置までの距離を算出し、第２の位置を通過する直前における移動体の位置から仮想位置までの距離よりも当該算出された距離が長いか否かによって判定を行うようにしてもよい。
【００２２】
なお、移動時間算出プログラムは、コンピュータ読み取り可能な情報記録媒体に記録された形態で提供されてもよい。
【発明の効果】
【００２３】
本発明によれば、必要な精度の範囲で、移動体が第２の位置を通過した時点の移動時間を正確に求めることができる。また、必要な精度の範囲で移動時間の算出処理を行うので、計算時間を短縮することも可能である。また、微少単位時間の長さを調節することによって、移動時間の算出処理の精度および処理時間を調節することができる。従って、ゲームの内容やゲーム装置の性能等に応じて、移動時間の算出処理の精度および処理時間を適切に設定することができる。
【００２４】
なお、概算時間算出手段による算出処理が、通過検出手段によって移動体が第２の位置を通過したことが検出されたときに行われることによって、当該第２の位置を仮想位置として移動時間を容易に算出することができる。
【００２５】
また、微少単位時間を、単位時間を所定の整数で分割した時間とすることによって、微少単位時間および所定距離を容易に算出することができる。
【００２６】
また、判定手段は、第２の位置を通過する直前における移動体の位置から第２の位置までの距離を用いて判定を行うことによって、当該判定を容易に行うことができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の一実施形態に係る移動時間計算プログラムを含むゲームプログラム、および当該ゲームプログラムを実行するゲームシステムついて説明する。図１は、当該ゲームシステム１の外観図である。なお、本発明に係るゲームプログラムを実行するゲームシステムとして、据置型ゲーム装置を一例に上げて説明するが、ゲームシステムはこれに限定されるものではなく、例えば携帯型ゲーム装置、アーケードゲーム装置、携帯端末、携帯電話またはパーソナルコンピュータなどのように、ゲームプログラムを実行するコンピュータを搭載する機器に適用することができる。
【００２８】
図１において、ゲームシステム１は、据置型ゲーム装置（以下、単にゲーム装置と記載する）３と、当該ゲーム装置３に接続コードを介して接続される表示装置の一例であるテレビジョン受像機（以下、テレビと記載する）２とを含む。ゲーム装置３には、プレイヤによって操作可能な複数の操作スイッチを有するコントローラ６が接続される。また、ゲーム装置３には、本発明に係るゲームプログラムを記憶した情報記憶媒体の一例の光ディスク４が着脱自在に装着される。さらに、ゲーム装置３には、ゲームのセーブデータ等を記憶するフラッシュメモリ等を搭載するメモリカード５が必要に応じて着脱自在に装着される。ゲーム装置３は、光ディスク４に記憶されたゲームプログラムを実行することによって得られるゲーム画像をテレビ２に表示する。さらに、ゲーム装置３は、メモリカード５に記憶されたセーブデータを用いて、過去に実行されたゲームの続きを実行したり、過去に実行されたゲーム状態を再現して、ゲーム画像をテレビ２に表示することもできる。そして、ゲーム装置３のプレイヤは、テレビ２に表示されたゲーム画像を見ながら、コントローラ６を操作することによって、ゲームを楽しむことができる。
【００２９】
コントローラ６は、上述したように接続コードを介してゲーム装置３に着脱自在に接続される。コントローラ６は、テレビ２に表示されるゲーム空間に登場するプレイヤキャラクタ（典型的には、プレイヤの操作対象であるレーシングカー）を主に操作するための操作手段であり、複数の操作スイッチとして、操作ボタン、キー、およびスティック等の入力部を備えている。具体的には、コントローラ６には、プレイヤによって把持されるグリップ部が形成される。また、コントローラ６は、プレイヤの左手の親指等によって操作可能なメインスティック６１および十字キー６２と、右手の親指等によって操作可能なＣスティック６３およびＡボタン６４等を含む。なお、コントローラ６は、上記ボタンの他、Ｂボタン、Ｘボタン、Ｙボタン、およびスタート−ポーズボタンや、プレイヤの右手の人差し指等によって操作可能なＲボタン、プレイヤの左手の人差し指等によって操作可能なＬボタンを含む。例えば、コントローラ６の操作によって後述するレースゲームが進行する場合、メインスティック６１は、プレイヤが操作するレーシングカーのハンドル操作を指示するために用いられる。また、Ａボタン６４は、レーシングカーのアクセル操作を指示するために用いられる。他の操作スイッチについても、後述するゲーム進行で用いられることがあるが、本発明の説明とは直接関連しないため詳細な説明を省略する。また、ゲームシステム１は、ゲーム装置３に複数のコントローラ６を接続することによって、複数のプレイヤが同時にゲームをプレイすることができる。
【００３０】
次に、図２を参照して、ゲーム装置３の構成について説明する。図２は、ゲーム装置３の機能ブロック図である。図２において、ゲーム装置３は、各種プログラムを実行する例えば１２８ビットのＣＰＵ（セントラルプロセッシングユニット）３１を備える。ＣＰＵ３１は、図示しないブートＲＯＭに記憶された起動プログラムを実行し、ワークメモリ３２等のメモリの初期化等を行った後、光ディスク４に記憶されているゲームプログラムをワークメモリ３２に一旦読み込んだ後に当該ゲームプログラムを実行し、そのゲームプログラムに応じたゲーム処理を行うものである。ＣＰＵ３１には、ワークメモリ３２、ビデオＲＡＭ（ＶＲＡＭ）３３、外部メモリインターフェース（Ｉ／Ｆ）３４、コントローラインターフェース（Ｉ／Ｆ）３５、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３６、および光ディスクドライブ３７がバスを介して接続される。
【００３１】
ワークメモリ３２は、ＣＰＵ３１で使用される記憶領域であって、ＣＰＵ３１の処理に必要なゲームプログラム等を適宜記憶する。例えば、ワークメモリ３２は、ＣＰＵ３１によって光ディスク４から読み出されたゲームプログラムや各種データ等を記憶する（図１４参照。）。このワークメモリ３２に記憶されたゲームプログラムや各種データ等がＣＰＵ３１によって実行される。ＶＲＡＭ３３は、テレビ２にゲーム画像を表示するためのゲーム画像データを格納する。外部メモリＩ／Ｆ３４は、図示しないコネクタにメモリカード５を嵌合させることによってゲーム装置３とメモリカード５とを通信可能に接続する。ＣＰＵ３１は、メモリカード５に設けられたバックアップメモリに外部メモリＩ／Ｆ３４を介してアクセスする。コントローラＩ／Ｆ３５は、図示しないコネクタによって外部機器とゲーム装置３とを通信可能に接続する。例えば、コントローラ６は、接続コードを介して当該コネクタと嵌合し、コントローラＩ／Ｆ３５を介してゲーム装置３と接続される。ＧＰＵ３６は、ＣＰＵ３１からの指示に応じて、例えば、３Ｄグラフィックスの表示に必要なベクトル演算やレンダリング処理等の処理を行う半導体チップで構成され、当該ＧＰＵ３６によってレンダリングされたゲーム画像はテレビ２に表示される。光ディスクドライブ３７は、ＣＰＵ３１からの指示に応じて、光ディスク４に記憶されたゲームプログラム、画像データ、サウンドデータなどの各種のデータを読み出す。
【００３２】
以下、光ディスク４に格納された本実施形態に係るゲームプログラムがゲーム装置３によって実行されることによってテレビ２に表示されるゲームについて説明する。図３は、ゲーム装置３によって実行されるレースゲームのゲーム画面の一例を示す図である。図３に示すように、本ゲームは、プレイヤの操作するレーシングカー（カート）４１が３次元ゲーム空間内のコースを走るレースゲームである。このレースゲームでは、プレイヤは、カート４１がスタート地点（図３には表示されていない）を発進してからゴールライン４２を通過するまでの移動時間（ゴールタイム）を競って遊ぶ。
【００３３】
なお、本実施形態ではレースゲームを例として説明するが、本発明に係る移動時間算出プログラムはこれに限らない。本発明に係る移動時間算出プログラムは、仮想空間を移動する移動体が任意の２地点を移動する間の移動時間を、画面の更新時間単位よりも細かい時間で算出する処理を行うゲームであればよく、例えばアクションゲーム等であってもよい。また、ゲーム空間は３次元空間であっても２次元空間であってもよい。また、移動時間が算出される対象となる移動体は、プレイヤによって操作されるものに限らない。移動時間が算出される対象となる移動体は、例えば、プレイヤによって操作されるレーシングカー以外でレースゲームに登場するレーシングカーのように、ゲーム装置によって動作が制御されるものであってもよい。
【００３４】
本ゲームが開始されると、プレイヤの操作するカート４１がスタート地点から発進する。プレイヤは、カート４１ができるだけ速くゴールライン４２を通過するようにカート４１を操作してゲームをプレイする。ここで、ゲーム画面は、所定の単位時間（フレーム時間）毎に更新されて表示される。なお、本ゲームにおいてはフレーム時間を１／６０（秒）とする。カート４１の位置はプレイヤによる操作に基づいてフレーム時間毎に算出される。その結果、カート４１は、ゲーム空間における位置がフレーム時間毎に更新されて表示される。これによって、ゲーム装置３はカート４１が移動していく映像を表示することができる。図３（ａ）には、このようなゲーム画面の一例が示されている。図３（ａ）においては、フレーム時間毎に位置が算出されるカート４１がゲーム空間内のコース上に表示されている。また、コース上にはゴールライン４２が表示されている。
【００３５】
また、図３（ａ）に示すゲーム画面の左上には、スタート時からの経過時間を示す経過時間表示４３が表示される。この経過時間は、カート４１がスタート地点を発進してから現時点までの経過時間である。経過時間は、フレーム時間を単位として算出される。図３（ａ）においては、経過時間は１／１０００（ｓｅｃ）単位で表示される。従って、ゲーム画面が更新される度に、経過時間表示４３の示す数値は、１６（ｍｓｅｃ）（≒１／６０（秒））ずつインクリメントされて表示される。つまり、経過時間はフレーム時間を単位として算出されるので、１／６０（秒）よりも細かい精度で経過時間を表示することができない。
【００３６】
図３（ｂ）は、カート４１がゴールライン４２を通過した直後のゲーム画面を示す図である。図３（ｂ）においては経過時間表示４３の数値が図３（ａ）に比べて３２（ｍｓｅｃ）進んでいることからわかるように、図３（ｂ）は、図３（ａ）から２フレーム後のゲーム画面である。図３（ｂ）においては、カート４１がゴールライン４２を通過したので、プレイヤにゴールしたことを通知する目的でゲーム画面上に“ＧＯＡＬ  ＩＮ！！”と表示される。さらに、ゴールライン４２を通過したゴールタイムを示すゴールタイム表示４４がゲーム画面に表示される。ゴールタイム表示４４により示されるゴールタイムは、フレーム時間単位、すなわち、１６（ｍｓｅｃ）よりも細かい精度で算出される。
【００３７】
次に、本実施形態に係るゲームプログラムにおいて行われる移動時間算出処理の概要を説明する。図４は、本実施形態における移動時間算出処理を説明するための図である。図４において、カート４１はゲーム空間内の位置Ｐ１にある。位置Ｐ１は３次元座標を用いて（ｘ１，ｙ１，ｚ１）と示されるものとする。ここで、本ゲームプログラムにおいて、あるフレームの次のフレームにおけるカート４１の位置は、速度ベクトルによって決定される。なお、速度ベクトルは、ゲームプログラムにおいては公知の技術であり、プレイヤによる例えばスティックの傾き，操作ボタンの押し込み量または押し込み時間などの操作に基づいて算出されるものである。ここで、ゲームプログラムにおける速度ベクトルとは、ゲーム空間におけるある座標点を算出するために使われる、移動方向と移動量とを示す単位である。速度ベクトルとは、１フレームにおける移動体の移動方向と移動量とを示す単位である。具体的には、図４においてカート４１が位置Ｐ１にある場合、まず、速度ベクトルＶ１がプレイヤによる操作に基づいて決定される。次に、次のフレームでの位置Ｐ２が速度ベクトルＶ１に基づいて決定される。具体的には、位置Ｐ２を（ｘ２，ｙ２，ｚ２）とし、速度ベクトルＶ１（ｖｘ１、ｖｙ１，ｙｚ１）とすると、位置Ｐ２は式（３）に従って決定される。
（ｘ２，ｙ２，ｚ２）＝（ｘ１，ｙ１，ｚ１）＋（ｖｘ１、ｖｙ１，ｙｚ１）  …（３）
以上の速度ベクトルの算出処理および次のフレームにおける位置の算出処理は、ゲーム画面が更新される度に行われる。これによって、カート４１の位置がフレーム時間毎に更新され、カート４１が移動していく。
【００３８】
本実施形態では、カート４１の位置がゴールラインＧを越えた場合に移動時間算出処理が行われる。なお、カート４１の位置がちょうどゴールラインＧ上となった場合は、ゴールラインＧを越えたと判断することが好ましいが、逆に越えていないと判断してもよい。図４においては、位置Ｐ１は、カート４１がゴールラインＧを通過する直前の位置であり、位置Ｐ２は、カート４１がゴールラインＧを通過した直後の位置である。従って、カート４１の位置が位置Ｐ１から位置Ｐ２となった場合に移動時間算出処理が行われる。移動時間算出処理においては、まず、微少単位時間Δｔおよび微少単位ベクトルΔｖが算出される。微少単位時間Δｔは、フレーム時間よりも短い時間である。この微少単位時間Δｔの精度で移動時間が算出される。本実施形態では、微少単位時間Δｔは、フレーム時間を所定の整数ｎで分割した値である。つまり、フレーム時間をＴｆとすると、微少単位時間Δｔは式（４）に従って算出される。
Δｔ＝Ｔｆ／ｎ  …（４）
一方、微少単位ベクトルΔｖの大きさは、微少単位時間Δｔあたりにカート４１が進む距離である。また、微少単位ベクトルΔｖの向きは、速度ベクトルＶ１と逆向きである。すなわち、微少単位ベクトルΔｖは、速度ベクトルに対して逆方向への移動方向でありかつ速度ベクトルよりも小さい移動量を示すものであり、式（５）に従って算出される。
Δｖ＝−Ｖ１／ｎ  …（５）
なお、本実施形態では、所定の整数ｎは、ゲームプログラムにおいて予め定められている。所定の整数ｎの値を大きくすると微少単位時間Δｔの値が小さくなるので、より詳細な精度でゴールタイムを測定することが可能である。つまり、所定の整数ｎは、ゴールタイムを測定する精度を示す数値である。従って、以降において所定の整数ｎを測定精度値と呼ぶ。
【００３９】
微少単位時間Δｔおよび微少単位ベクトルΔｖが算出されると、次に、位置Ｐ１と位置Ｐ２とを結ぶ線分上に仮想位置が設定される。仮想位置は、その位置における移動時間が詳細な精度で算出される位置である。本実施形態においては、移動時間算出処理の開始時における仮想位置は位置Ｐ２に設定される。その後、仮想位置は、位置Ｐ２から上記微少単位ベクトルΔｖずつ移動していく。つまり、仮想位置は、元の仮想位置から微少単位ベクトルΔｖだけ移動した位置が新たな仮想位置となるように更新されて設定される。
【００４０】
また、仮想位置が設定される度に、当該仮想位置における移動時間が算出される。なお、「仮想位置における移動時間」とは、スタート地点から仮想位置までの移動時間を指す。具体的には、仮想位置における移動時間は次のように算出される。まず、最初の仮想位置（位置Ｐ２）における移動時間Ｔ’は、フレーム時間を用いて算出することができる。次の仮想位置ｐ１は、位置Ｐ２から微少単位ベクトルΔｖだけ移動した位置に設定される。位置ｐ１における移動時間は、移動時間Ｔ’から微少単位時間Δｔを減算した値となる。さらに、次の仮想位置ｐ２は、１つ前の仮想位置ｐ１から微少単位ベクトルΔｖだけ移動した位置（言い換えれば、「遡った位置」）に設定される。位置ｐ２における移動時間は、仮想位置ｐ１における移動時間から微少単位時間Δｔを減算した値となる。以降の仮想位置についても同様に、仮想位置は、１つ前の仮想位置から微少単位ベクトルΔｖだけ移動した位置に設定される。従って、以降の仮想位置における移動時間は、１つ前の仮想位置における移動時間から微少単位時間Δｔを減算することによって順次算出することができる。
【００４１】
仮想位置および仮想位置における移動時間を算出する上記処理は、仮想位置がゴールラインＧを越えるまで、すなわち、仮想位置がゴールラインＧの手前の位置Ｐ’になるまで行われる。なお、「ゴールラインの手前」とは、カートがゴールラインを通過する前の位置を意味する。一方、「ゴールラインの奥」とは、カートがゴールラインを通過した後の位置を意味する。また、仮想位置がちょうどゴールラインＧ上となった場合は、ゴールラインＧを越えたと判断することが好ましいが、逆に越えていないと判断してもよい。仮想位置がゴールラインＧを越えた直後の位置Ｐ’に設定されると、その前の仮想位置（ゴールラインＧを越える直前の位置）ｐ’における移動時間がゴールタイムＴに決定される。なお、位置ｐ’における移動時間は、位置ｐ’に仮想位置が設定された時に算出されている。以上によって、最終的なゴールタイムＴが決定される。なお、図４においては、ゴールタイムＴは、位置Ｐ２における移動時間から微少単位時間Δｔを４回減算した値である。すなわち、Ｔ＝Ｔ’−４×Δｔとなる。なお、本実施形態では、「ゴールタイムＴは、ゴールラインを越えた位置における移動時間である」と考えて、仮想位置がゴールラインＧを越える直前の位置ｐ’における移動時間をゴールタイムＴに決定するが、他の実施形態においては、ゴールラインＧを越えた直後の位置Ｐ’における移動時間をゴールタイムＴに決定してもよい。
【００４２】
次に、図５〜図８を参照して、ゲーム装置３によって実行されるゲーム処理について説明する。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ３１は、図示しないブートＲＯＭに記憶されている起動プログラムを実行し、ワークメモリ３２等の各ユニットが初期化される。そして、光ディスク４に格納されたゲームプログラムが光ディスクドライブ３７を介してワークメモリ３２に読み込まれ、当該ゲームプログラムの実行が開始される。その結果、ＧＰＵ３６を介してテレビ２にゲーム空間が表示されることによって、ゲームが開始される。図６で示されるフローチャートは、以上の処理動作以降の処理を示している。なお、以下においては、移動時間の算出および表示に関する処理を主に説明し、本発明に直接関連しないカートの移動処理やゲーム画面にゲームマップ（レースコース）やカートを表示する処理については説明を省略する。
【００４３】
ゲーム処理の詳細を説明する前に、当該ゲーム処理において用いるためにワークメモリ３２に格納されるデータについて説明する。図５は、光ディスク４に記録されているデータおよびゲーム装置３のワークメモリ３２のメモリマップを示す図である。図５（ａ）は、光ディスク４に記録されているゲームプログラム５１およびゲーム画像データ５２のメモリマップを示す図である。図５（ａ）において、ゲームプログラム５１には、カート移動プログラム５１ａ、ゴール通過検出プログラム５１ｂ、ゴールタイム算出プログラム５１ｃ、経過時間表示プログラム５１ｄ、ゴールタイム表示プログラム５１ｅ、およびゲーム空間構築プログラム５１ｆ等が含まれている。
【００４４】
カート移動プログラム５１ａは、ゲーム画面が更新される度にカートの位置を決定するためのプログラムである。ゴール通過検出プログラム５１ｂは、カート移動プログラム５１ａによって決定されたカートの位置がゴールラインを通過したことを検出するためのプログラムである。ゴールタイム算出プログラム５１ｃは、後述するゴールタイム算出処理を行うためのプログラムである。経過時間表示プログラム５１ｄは、ゲーム画面にフレーム時間単位で測定された経過時間（図３（ａ）に示す経過時間表示４３）を表示するためのプログラムである。ゴールタイム表示プログラム５１ｅは、カートがゴールした後のゲーム画面にフレーム時間よりも詳細な精度で測定されたゴールタイム（図３（ｂ）に示すゴールタイム表示４４）を表示するためのプログラムである。ゲーム空間構築プログラム５１ｆは、ゲーム空間内のレースコースを構築するためのプログラムである。なお、ゲームプログラム５１には上記の他にも得点処理を行うためのプログラム等、種々のプログラムが含まれている。
【００４５】
また、図５（ａ）において、ゲーム画像を生成するためのゲーム画像データ５２には、マップデータ５２ａ、地形データ５２ｂ、レーシングカーデータ５２ｃ、およびゴールポイントデータ５２ｄ等が含まれている。マップデータ５２ａは、ゲーム空間に生成されるレースコースの画像データである。地形データ５２ｂは、レースコースの周辺の地形の画像データである。レーシングカーデータ５２ｃは、プレイヤが操作するカートやゲームに登場するカートの画像データである。ゴールポイントデータ５２ｄは、レースコース上のゴールラインの画像データである。なお、ゲーム画像データ５２には上記の他にも、例えばアイテムの画像データ等、種々の画像データが含まれている。
【００４６】
また、図５（ｂ）は、ゲーム装置３のワークメモリ３２のメモリマップを示す図である。ワークメモリ３２には、カウンタバッファ３２ａと、現在位置バッファ３２ｂと、速度ベクトルバッファ３２ｃと、ゴールタイムバッファ３２ｄと、分割数バッファ３２ｅと、微少単位時間バッファ３２ｆと、微少単位ベクトルバッファ３２ｇと、仮想位置バッファ３２ｈと、微少移動時間バッファ３２ｉとが設けられる。
【００４７】
カウンタバッファ３２ａは、カウンタ値Ｃを格納する領域である。カウンタ値Ｃは、スタート地点からカートが移動を開始してからのフレーム数を示す。カウンタ値Ｃは、任意のフレームにおけるスタート時からの経過時間を算出するために用いられる。現在位置バッファ３２ｂは、現在のカートの位置Ｐを格納する領域である。カートの位置Ｐは３次元の座標値（ｘ，ｙ，ｚ）で表現される。速度ベクトルバッファ３２ｃは、カートの速度ベクトルＶを格納する領域である。速度ベクトルＶは、位置Ｐと同様、３次元の座標値（ｘ，ｙ，ｚ）で表現される。
【００４８】
ゴールタイムバッファ３２ｄは、ゴールタイムＴを格納する。カートがゴールラインを通過した場合、ゴールタイムバッファ３２ｄに格納されているゴールタイムＴが画面に表示される（図３（ｂ）参照）。このゴールタイムＴを算出する処理（後述する図６のステップ６）において、以下に説明する分割数バッファ３２ｅ、微少単位時間バッファ３２ｆ、微少単位ベクトルバッファ３２ｇ、仮想位置バッファ３２ｈ、および微少移動時間バッファ３２ｉが用いられる。
【００４９】
測定精度値バッファ３２ｅは、測定精度値ｎ（ｎは上述した所定の整数）を格納する。本実施形態では、ｎの値はゲームプログラムにおいて予め定められているものとする。微少単位時間バッファ３２ｆは、微少単位時間Δｔを格納する領域である。微少単位ベクトルバッファ３２ｇは、微少単位ベクトルΔｖを格納する領域である。仮想位置バッファ３２ｈは、仮想位置ｐを格納する。仮想位置ｐは、３次元の座標値（ｘ，ｙ，ｚ）で表現される。微少移動時間バッファ３２ｉは、仮想位置ｐにおける移動時間ｔを格納する領域である。
【００５０】
以下、ゲーム処理を詳細に説明する。図６は、ゲーム装置３において実行されるゲーム処理のメインフローチャートである。なお、図６においては、ゲームが開始されてカートがスタート地点を発進した後の処理を示す。また、図６に示すステップ１〜８（図では「ステップ」を単に「Ｓ」と略す。）の一連の処理は、１フレームの間に行われる処理である。
【００５１】
まず、ステップ１において、カートがスタートしてからのフレーム数がカウントされる。具体的には、ＣＰＵ３１は、ワークメモリ３２のカウンタバッファ３２ａの値を１増加させる。続くステップ２において、プレイヤによる操作、すなわち、コントローラ６からの入力に基づいて速度ベクトルＶが算出される。このとき、ワークメモリ３２の速度ベクトルバッファ３２ｃの内容は、新たに算出された速度ベクトルの値に更新される。さらに、ステップ３において、移動速度ベクトルＶに基づいてカートの位置Ｐが算出される。具体的には、ステップ２で更新された速度ベクトルバッファ３２ｃに格納されている速度ベクトルＶと現時点において現在位置バッファ３２ｂに格納されている位置Ｐとから、式（３）に従って新たなカートの位置Ｐが算出される。なお、現在位置バッファ３２ｂの内容は、新たに算出された位置Ｐの値に更新される。このステップ３によって、ゲーム画面が更新される度にカートの位置が決定されることになる。なお、ステップ２および３の処理は、ゲームプログラム５１に含まれるカート移動プログラム５１ａを用いることによって行われる。
【００５２】
次のステップ４において、カートがゴールラインを通過したか否か、すなわち、ステップ３において算出された位置Ｐがゴールラインの奥の位置であるか否かが判定される。なお、本実施形態では、ゴールラインは３次元ゲーム空間における平面として表現されており、３次元ゲーム空間はゴールラインの平面によって２つの空間に分けられるものとする。従って、ステップ４において、ＣＰＵ３１は、ステップ３において算出された位置Ｐ（ｘ，ｙ，ｚ）とゴールラインを示す平面ａｘ＋ｂｙ＋ｃｚ＋ｄ＝０（ａ，ｂ，ｃは定数）との距離を算出する。そして、算出結果の正負によって、位置Ｐがゴールラインの手前側の空間に存在するかまたはゴールラインの奥側の空間に存在するかを判断する。これによって、カートがゴールを通過したか否かの判定を行うことができる。なお、ステップ４の処理は、ゴール通過検出プログラム５１ｂを用いることによって行われる。
【００５３】
ステップ４においてカートがゴールを通過していないと判定された場合、ステップ５の処理が行われる。すなわち、スタートしてから現時点までの経過時間（図３（ａ）に示す経過時間表示４３）がゲーム画面に表示される。経過時間は、カウンタ値Ｃを用いることによって算出される。具体的には、カウンタ値Ｃとフレーム時間Ｔｆ（秒）との積として経過時間が算出される。なお、ステップ５の処理は、経過時間表示プログラム５１ｄを用いることによって行われる。ステップ５の後、ステップ８の処理が行われる。
【００５４】
一方、ステップ４においてカートがゴールを通過したことが検出された場合、すなわち、ステップ４においてカートがゴールを通過したと判定された場合、ステップ６および７の処理が行われる。すなわち、ステップ６において、ゴールタイム算出処理が行われる。ゴールタイム算出処理は、フレーム時間よりも詳細な精度でゴールタイムを算出する処理である。ステップ６によって、ワークメモリ３２のゴールタイムバッファ３２ｄにはゴールタイムＴの値が書き込まれる。なお、ステップ６の処理は、ゴールタイム算出プログラム５１ｃを用いることによって行われる。ステップ６の詳細は後述する図７において示されている。続くステップ７において、ステップ６において算出されたゴールタイムがゲーム画面に表示される。これによって、フレーム時間よりも詳細な精度でゴールタイムをプレイヤに通知することができる。なお、ステップ７の処理は、ゴールタイム表示プログラム５１ｅを用いることによって行われる。ステップ７の後、ステップ８の処理が行われる。
【００５５】
次のステップ８において、ゲームを終了するか否かが判定される。例えば、カートのゴールタイムが表示されて所定時間経過したか否かや、ゲームを終了するための操作がプレイヤによって行われたか否か等が判定される。ステップ８の判定においてゲームを終了しないと判定された場合、再びステップ１からステップ８までの一連の処理が行われる。一方、ステップ８の判定においてゲームを終了すると判定された場合、図６に示すゲーム処理は終了する。
【００５６】
図７は、図６に示すステップ６の詳細な処理の流れを示すフローチャートである。まず、ステップ１１において、カートがゴールラインを通過した直後の位置Ｐ２における移動時間が算出される。なお、カートがゴールラインを通過した直後の位置Ｐ２は、直前のステップ３において算出された位置である。位置Ｐ２における移動時間は、カウンタバッファ３２ａに格納されているカウンタ値Ｃとフレーム時間Ｔｆ（秒）との積として算出することができる。なお、ステップ１１において算出される移動時間はフレーム時間の精度で算出されるものであるので、本明細書では当該移動時間を概算移動時間と呼ぶことがある。ステップ１１において算出された概算移動時間は、ワークメモリ３２の微少移動時間バッファ３２ｉに格納される。続くステップ１２において、位置Ｐ２が仮想位置に設定される。具体的には、位置Ｐ２の座標がワークメモリの仮想位置バッファ３２ｈに格納される。
【００５７】
次のステップ１３において、微少単位ベクトルΔｖが算出される。微少単位ベクトルΔｖは、速度ベクトルＶ１を−１／ｎ倍（ｎは上述の測定精度値）することによって算出される。なお、速度ベクトルＶ１は、現時点でワークメモリ３２の速度ベクトルバッファ３２ｃに格納されている速度ベクトルである。ステップ１１において算出された微少単位ベクトルΔｖは、ワークメモリ３２の微少単位ベクトルバッファ３２ｇに格納される。
【００５８】
次のステップ１４において、微少単位時間Δｔが算出される。微少単位時間Δｔは、フレーム時間Ｔｆを１／ｎ倍することによって算出される。ステップ１３において算出された微少単位時間Δｔは、ワークメモリ３２の微少単位時間バッファ３２ｆに格納される。
【００５９】
次のステップ１５において、仮想位置ｐが微少単位ベクトルΔｖだけ移動される仮想位置更新処理が行われる。すなわち、現在の仮想位置から微少単位ベクトルΔｖだけ移動した位置が新たな仮想位置に設定される。具体的には、ワークメモリ３２の仮想位置バッファ３２ｈに格納されている仮想位置ｐの内容が、現時点において格納されている位置座標に微少単位ベクトルΔｖを足した位置座標に更新される。
【００６０】
次のステップ１６において、現時点における仮想位置がゴールラインの手前であるか否かが判定される。ステップ１６の判定は、現時点でワークメモリ３２の仮想位置バッファ３２ｈに格納されている位置座標を用いて行われる。ステップ１６の判定は、図６に示すステップ４と同様の方法で行うことができる。
【００６１】
ステップ１６の判定において、現時点における仮想位置がゴールラインの手前でないと判定された場合、ステップ１７の処理が行われる。すなわち、ステップ１７において、ワークメモリ３２の微少移動時間バッファ３２ｉに格納されている微少移動時間ｔから微少単位時間Δｔを減算する。これによって、現時点の仮想位置（直前のステップ１６において算出された仮想位置）における移動時間が算出されたこととなる。ここで、本明細書では、仮想位置における移動時間を仮想移動時間と呼ぶことがある。なお、ステップ１１において算出される概算移動時間も仮想移動時間の概念に含まれる。ステップ１７の後、ステップ１５の処理が再び行われ、ステップＳ１５の判定が肯定となるまでステップ１７および１４の処理が繰り返される。
【００６２】
一方、ステップ１６の判定において、現時点における仮想位置がゴールラインの手前であると判定された場合、ステップ１８の処理が行われる。すなわち、ステップ１８において、現時点の微少移動時間ｔがゴールタイムＴに決定される。具体的には、ワークメモリ３２の微少移動時間バッファ３２ｉに格納されている微少移動時間ｔの内容がゴールタイムバッファ３２ｄに格納される。なお、ステップ１８の時点において仮想位置バッファ３２ｈに格納されている仮想位置はゴールラインの手前の位置となっている。これに対して、微少移動時間バッファ３２ｉに格納されている微少移動時間ｔの内容は、当該手前の位置における移動時間となっていない。ステップ１８の時点において微少移動時間バッファ３２ｉに格納されている微少移動時間ｔの内容は、ゴールラインの手前の位置よりも１つ前の仮想位置（ゴールラインの奥の位置）における移動時間である。従って、本実施形態では、ゴールラインの手前となる直前の仮想位置における移動時間がゴールタイムとして決定されることとなる。以上のステップＳ１７の後、図７に示す処理が終了する。
【００６３】
図８は、図７に示すゴールタイム算出処理を実際のプログラム処理により近い形で示したフローチャートである。なお、図８に示すフローチャートは図７とは異なる箇所があるが、同様の処理を行うものである。まず、ステップ２１において、ｔ＝Ｔｆ×Ｃという演算が行われる。ステップ２１において算出される微少移動時間ｔは、ゴールライン直後のカートの位置における概算移動時間である。つまり、ステップ２１はステップ１１の処理に対応する。
【００６４】
次のステップ２２において、Δｖ＝−Ｖ１／ｎという演算が行われる。このステップ２２はステップ１３の処理に対応する。続くステップ２３において、Δｔ＝Ｔｆ／ｎという演算が行われる。このステップ２３はステップ１４の処理に対応する。
【００６５】
次のステップ２４において、ｐ＝Ｐ＋Δｖという演算が行われる。ここで、Ｐはカートの実際の位置を示し、現在位置バッファ３２ｂに格納されている位置座標である。具体的には、位置Ｐは、ゴールライン通過直後のカートの位置（図３に示す位置Ｐ２）を示す。従って、ステップ２４において算出される仮想位置ｐは、ゴールライン通過直後のカートの位置から微少単位ベクトルΔｖだけ移動した仮想位置（図３に示す位置ｐ１）である。
【００６６】
次のステップ２５においてｇｏａｌ（ｐ）という演算が行われる。ここで、ｇｏａｌ（ｐ）は、位置ｐはゴールラインの奥の位置であるか否かを判定するための関数である。関数ｇｏａｌ（ｐ）が肯定の結果を返す場合、ステップ２６において、ｔ＝ｔ−Δｔ、およびｐ＝ｐ＋Δｖという演算が行われる。ｔ＝ｔ−Δｔの演算はステップ１７に対応する処理であり、ｐ＝ｐ＋Δｖの演算はステップ１５の仮想位置更新処理に対応する処理である。ステップ２６の後、再びステップ２５の処理が行われる。一方、関数ｇｏａｌ（ｐ）が否定の結果を返す場合、図８に示す処理が終了する。図８に示す処理が終了した時点における微少移動時間ｔの値がゴールタイムＴに決定される。従って、図８に示す処理においては、ワークメモリ３２の微少移動時間バッファ３２ｉとゴールタイムバッファ３２ｄとを１つにまとめたバッファを設けておき、図８に示す処理が終了した時点における当該バッファの値をゴールタイムとして表示すればよい。このように、図８に示す処理においては、微少移動時間バッファ３２ｉとゴールタイムバッファ３２ｄとを１つにまとめることができ、ワークメモリ３２のメモリ領域を削減することができる。
【００６７】
以上のように、本実施形態においては、仮想位置ｐを微少単位ベクトルΔｖずつ移動させる処理を繰り返すとともに、この処理の度に、移動前の仮想位置における移動時間（微少移動時間ｔ）から微少単位時間Δｔを減算する処理を行う（ステップ１５および１６、ステップ２６）。これによって、除算を行わずに、乗算および加減算のみでゴールタイムＴを算出することができる。従って、除算を行う処理に比べてゴールタイムＴを算出するための処理時間を短縮することができる。
【００６８】
また、本実施形態においては、測定精度値ｎの大きさを変更することによって、より細かい精度でゴールタイムを算出することも可能であるし、逆に、より迅速にゴールタイムを算出することも可能である。すなわち、測定精度値ｎの大きさを大きくすれば、より細かい精度でゴールタイムが算出される。また、測定精度値ｎの大きさを小さくすれば、より迅速にゴールタイムが算出される。具体的には、ゴールタイムを算出するゲーム装置やゲーム内容に応じてｎの値を変更することによって、種々のゲームにおいて適切なゴールタイムを算出することが可能である。例えば、ゴールタイムを所望の精度で算出・表示したい場合には、その精度を満足するようなｎの値を設定すればよい。つまり、フレーム時間が１／６０（秒）である場合に１／１０００（秒）の単位でゴールタイムを算出したい場合であれば、ｎ＝１７とすることによって１／１０００（秒）単位でほぼ所望の精度を得ることができる。一方、ゴールタイムの算出処理をより速く行わせたい場合には、ｎの値を小さくすればよい。
【００６９】
なお、図７および図８に示す処理においては、仮想位置を移動させる処理（ステップ１５）が行われた後に、移動後の仮想位置における移動時間を算出する処理（ステップ１７）が行われた。ここで、他の実施形態においては、移動後の仮想位置における移動時間を算出する処理が行われた後に、仮想位置を移動させる処理が行われるようにしてもよい。つまり、現在の仮想位置における移動時間から微少単位時間を減算する減算処理を繰り返すとともに、減算処理が行われた移動時間における移動体の位置を示す仮想位置を減算処理の度に算出するようにしてもよい。
【００７０】
また、図７および図８に示す処理においては、仮想位置を移動させる処理（ステップ１５）と、移動後の仮想位置における移動時間を算出する処理（ステップ１７）とが交互に行われた。これに対して、これら２つの処理を交互に行わない方法も考えられる。例えば、仮想位置を移動させる処理を２回行った後、移動後の仮想位置における移動時間を算出する処理を１回行うといった方法である。ただし、この方法は、微少単位時間Δｔの大きさを２倍に設定している（すなわち、測定精度値ｎを半分の大きさに設定している）のと実質的に同じである。
【００７１】
また、図７および図８に示す処理は、ゴールラインを越える直前の仮想位置（図４に示す位置ｐ’）における仮想移動時間をゴールタイムとする処理であった。なお、ゴールラインを越えた直後の仮想位置（図４に示す位置Ｐ’）における仮想移動時間をゴールタイムとする場合には、図７および図８に示す処理を次のように変更すればよい。すなわち、図７においては、ステップ１５の次にステップ１７の処理を実行し、続いてステップ１６を実行するようにする。そして、ステップ１６における判定が否定であった場合、処理がステップ１５に戻るようにする。また、図８においては、ステップ２４において、ゴールラインを通過した直後のカートの位置を仮想位置とするようにすればよい。すなわち、ステップ２４において、ｐ＝Ｐという演算を行うようにすればよい。
【００７２】
また、図７に示すステップ１７の処理において、微少移動時間ｔから微少単位時間Δｔを減算する代わりに、新たなカウンタＣ’（カウンタ値Ｃとは異なる）を用意し、当該カウンタの値を０から１ずつインクリメントする処理を行う方法も考えられる。なお、この方法では、ステップ１８において、ゴールタイムＴをＴ＝Ｔ’−Δｔ×Ｃ’によって算出する。このようなカウンタＣ’を用いる方法によっても図７と同様の効果を得ることができる。ただし、この方法は、微少移動時間ｔから微少単位時間Δｔを減算する方法と実質的に同じである。また、カウンタＣ’を新たに用意しなければならない点で、カウンタＣ’を用いる方法よりも図７に示す方法の方が有利である。
【００７３】
なお、上記の実施形態には、以下に説明する変形例が考えられる。以下に説明する変形例においても、本実施形態と同様の効果を得ることができる。以下、本実施形態の変形例を説明する。
【００７４】
図９は、本実施形態の第１の変形例におけるゴールタイム算出処理を説明するための図である。第１の変形例においては、ゴールラインを越える直前の位置Ｐ１が最初の仮想位置に設定される点で上記実施形態と異なる。また、微少単位ベクトルΔｖは、速度ベクトルＶ１と同じ向きとなるように算出される。具体的には、微少単位ベクトルΔｖは、Δｖ＝Ｖ１／ｎとして算出される。また、図９に示すように、微少移動時間ｔは、位置Ｐ１における移動時間Ｔ”から微少単位時間Δｔが加算されていくことによって算出される。つまり、第１の変形例においては、ゴールラインを越える直前の位置Ｐ１から仮想位置を移動させるとともに、仮想位置が移動される度に当該仮想位置における移動時間が算出される。そして、ゴールラインを越えた直後の仮想位置における移動時間がゴールタイムに決定される。
【００７５】
図１０は、第１の変形例における移動処理算出処理の流れを示すフローチャートである。第１の変形例を適用する場合においても、図６に示すメインフローチャートは同じである。以下、図７との相違点を中心に図１０に示す処理を説明する。
【００７６】
まず、ステップ３１において、カートがゴールラインを通過する直前の位置Ｐ１における移動時間が算出される。なお、ステップ３１の時点で、ワークメモリ３２の現在位置バッファ３２ｂの内容は、カートがゴールラインを通過した直後の位置Ｐ２である。従って、第１の変形例においては、カートの現在の位置を格納するバッファ（現在位置バッファ３２ｂ）の他に、カートの１フレーム前の位置を格納するバッファを用意する必要がある。なお、算出方法は図７に示すステップ１１と同様である。続くステップ３２において、仮想位置が設定される。第１の変形例では、最初の仮想位置に設定されるのは位置Ｐ１である。
【００７７】
次のステップ３３において、微少単位ベクトルΔｖが算出される。第１の変形例では、微少単位ベクトルΔｖは、Δｖ＝Ｖ１／ｎとして算出される点でステップ１３と異なっている。続くステップ３４の処理はステップ１４と同様であり、ステップ３５の処理は、微少単位ベクトルΔｖが示す向きが異なるのみでステップ１５と同様である。
【００７８】
第１の変形例では、ステップ３６において、ステップ１７に対応する処理が行われる。なお、ステップ３６においては、現時点における微少移動時間ｔに微少単位時間Δｔを加算する点で上記実施形態と異なる。ステップ３６の処理がステップ３５の処理の次に行われるのは、第１の変形例では、ゴールラインを越えたと判定された仮想位置における移動時間がゴールタイムに決定されるからである。
【００７９】
次のステップ３７において、現時点における仮想位置がゴールラインを越えた位置であるか否かが判定される。この判定はステップ４および１５の判定と同様の方法で行うことができる。ステップ３８の処理はステップ１８と同様である。
【００８０】
以上に説明した第１の変形例によっても、上記実施形態と同様の効果を得ることができる。ただし、第１の変形例では１フレーム前のカートの位置を格納するバッファを用意しなければならない点で、上記実施形態の方が有利である。
【００８１】
次に、本実施形態の第２の変形例について説明する。図１１は、本実施形態の第２の変形例におけるゴールタイム算出処理を説明するための図である。第２の変形例では、ゴールタイム算出処理において用いられる微少単位ベクトルΔｖを速度ベクトルＶ２に基づいて算出する。速度ベクトルＶ２は、カートがゴールラインを越えた直後の位置Ｐ２から次のフレームにおけるカートの位置を決定するための速度ベクトルである。具体的には、微少単位ベクトルΔｖは、Δｖ＝−Ｖ２／ｎによって算出される。微少単位ベクトルΔｖを速度ベクトルＶ２から算出する点以外は、上記の実施形態と同様である。
【００８２】
以上の第２の変形例によっても、本実施形態と同様の効果を得ることができる。ただし、第２の変形例では速度ベクトルＶ２を用いるので、カートがゴールラインを越えた直後のフレームではなく、その次のフレームにおいてゴールタイムを算出することが可能となる。従って、ゴールタイムの算出が上記の実施形態と比べて１フレーム遅くなる点で、上記実施形態の方が有利である。
【００８３】
次に、本実施形態の第３の変形例について説明する。図１２は、本実施形態の第３の変形例におけるゴールタイム算出処理を説明するための図である。第３の変形例は、仮想位置がゴールラインの手前に達したか否かの判定を行う方法が上記の実施形態と異なっている。すなわち、第３の変形例では、仮想位置は、ゲーム空間における座標値によって表現されるのではなく、ゴールラインからの距離Ｌによって表現される。なお、距離Ｌは、位置Ｐ１と位置Ｐ２とを結ぶ線分上における距離である。仮想位置を移動させる場合には、距離Ｌから微少距離ΔＬを減算する処理を行う。ここで、微少距離ΔＬは、単位微少時間Δｔあたりにカートが移動する距離である。つまり、微少距離ΔＬは、微少単位ベクトルΔｖの大きさのスカラー値である。そして、仮想位置がゴールラインの手前に達したか否かの判定は、仮想位置が移動する度にΔＬが減算される距離Ｌが負の値になったか否かによって行われる。以下、第３の変形例におけるゴールタイム算出処理をより具体的に説明する。
【００８４】
図１３は、第３の変形例における移動処理算出処理の流れを示すフローチャートである。第３の変形例を適用する場合においても、図６に示すメインフローチャートは同じである。なお、第３の変形例の場合、ワークメモリ３２には、図５（ｂ）に示す微少単位ベクトルバッファ３２ｇおよび仮想位置バッファ３２ｈに代えて、上記の距離Ｌを格納する領域および微少距離ΔＬを格納する領域を用意する必要がある。以下、図７との相違点を中心に図１３に示す処理を説明する。
【００８５】
まず、ステップ４１の処理はステップ１１と同じ処理である。また、ステップ４２の処理はステップ１２と同じ処理である。続くステップ４３においては、速度ベクトルＶ１から微少距離ΔＬが算出される。具体的には、ΔＬは、速度ベクトルＶ１の大きさを１／ｎ倍することによって算出される。続くステップ４４の処理はステップ１４と同じ処理である。
【００８６】
次のステップ４５において、ゴールラインから位置Ｐ２までの距離Ｌが算出される。この距離Ｌはゴールラインから仮想位置までの距離を示す。つまり、ステップ４５において、最初の仮想位置が位置Ｐ２に設定されたこととなる。続くステップ４６において、仮想位置を微少距離ΔＬだけ移動させる。具体的には、現時点でのＬからΔＬを減算した値を新たなＬとする。続くステップ４７において、Ｌが０以下であるか否かによって、仮想位置がゴールラインの手前の位置に達したか否かが判定される。ステップ４７の判定においてＬが０以下でない場合に行われるステップ４８の処理は、ステップ１７と同じ処理である。また、ステップ４７の判定においてＬが０以下である場合に行われるステップ４９の処理は、ステップ１８と同じ処理である。
【００８７】
以上に示す第３の変形例によっても、上記実施形態と同様の効果を得ることができる。また、第３の変形例では、仮想位置は、３次元の位置座表そのものによって表現されるのではなく、ゴールラインからの距離Ｌによって表現される。これによって、仮想位置を移動させる処理（ステップ４６）を簡易にすることができる。
【００８８】
なお、上記に示す変形例の他に、次のような変形例が考えられる。すなわち、図１４に示すように、仮想位置をゴールラインからの距離Ｌによって表現する場合（第３の変形例）に、ゴールラインを越える直前の位置Ｐ１を最初の仮想位置に設定する（第１の変形例）ようにしてもよい。また、図１５に示すように、仮想位置をゴールラインからの距離Ｌによって表現する場合（第３の変形例）に、微少距離ΔＬを速度ベクトルＶ２から算出するようにしてもよい。
【００８９】
以上のように、本発明によれば、移動時間の算出処理の処理時間を短縮することができる。また、移動時間の算出処理の精度および処理時間を調節することができる。
【００９０】
なお、本実施形態では、移動時間を測定する対象となる２地点をスタート地点およびゴールラインとするが、本発明における移動時間の算出方法は、任意の２地点間を移動する際の移動時間を算出することに適用することが可能である。例えば、スタートからゴールまでのコースに複数の通過ポイントが設定されている場合、通過ポイント間のラップタイム（移動時間）を算出する際にも、本発明に係る移動時間算出プログラムを適用することができる。また、本実施形態では、ゴール位置がゴールラインによって表されるものとしたが、ゴール位置はゲーム空間上におけるある１地点であってもよい。
【００９１】
また、上記の実施形態およびその変形例では、カートの位置が位置Ｐ２に更新されてからゴールタイム算出処理が行われた。ここで、他の実施形態においては、ベクトルＶ１が算出された後であってカートの位置が位置Ｐ２に更新される前にゴールタイム算出処理を行うようにしてもよい。具体的には、図７に示すステップ２とステップ３との間にゴールタイム算出処理を行うようにしてもよい。さらに、ゴールラインを越えた後の処理をゴールタイムの算出結果に応じて変化させるようにしてもよい。例えば、ゴールタイムが所定時間以内であった場合とそうでない場合とに応じてゴールライン通過後のコースや風景を変化させるようにしてもよい。
【００９２】
また、上記の実施形態およびその変形例では、微少単位時間は、フレーム時間を整数で分割した値として算出されたが、他の実施形態においては、微少単位時間をフレーム時間よりも短い任意の値に設定してもよい。例えば、１／１００（秒）の精度でゴールタイムを算出したい場合には、微少単位時間を１／１００（秒）に設定してもよい。
【産業上の利用可能性】
【００９３】
以上のように、本発明は、任意の２地点間の移動時間を測定することを目的として利用することが可能である。
【図面の簡単な説明】
【００９４】
【図１】ゲームシステムの外観図
【図２】ゲーム装置の機能ブロック図
【図３】ゲームプログラムによってゲーム装置において実行されるレースゲームのゲーム画面の一例を示す図
【図４】本実施形態における移動時間算出処理を説明するための図
【図５】光ディスクに記録されているデータおよびゲーム装置のワークメモリのメモリマップを示す図
【図６】ゲーム装置において実行されるゲーム処理のメインフローチャート
【図７】図６に示すステップ６の詳細な処理の流れを示すフローチャート
【図８】図７に示すゴールタイム算出処理を実際のプログラム処理により近い形で示したフローチャート
【図９】第１の変形例におけるゴールタイム算出処理を説明するための図
【図１０】第１の変形例における移動処理算出処理の流れを示すフローチャート
【図１１】第２の変形例におけるゴールタイム算出処理を説明するための図
【図１２】第３の変形例におけるゴールタイム算出処理を説明するための図
【図１３】第３の変形例における移動処理算出処理の流れを示すフローチャート
【図１４】第４の変形例におけるゴールタイム算出処理を説明するための図
【図１５】第５の変形例におけるゴールタイム算出処理を説明するための図
【図１６】ゴールタイムを測定する従来の手法を説明するための図
【図１７】乗算演算処理の流れを示すフローチャート
【図１８】除算処理の流れを示すフローチャート
【符号の説明】
【００９５】
１  ゲームシステム
３  ゲーム装置
４  光ディスク
３１  ＣＰＵ
４１  カート
４２  ゴールライン
４３  経過時間表示
４４  ゴールタイム表示
【要約】
【課題】  ゲーム空間を移動する移動体の移動時間を正確にかつ短時間で算出することが可能な移動時間算出プログラムを提供する。
【解決手段】  移動時間算出プログラムは、以下に示す手段としてコンピュータを機能させる。概算時間算出手段は、第１の位置から第２の位置を通過した直後の位置までの移動体の移動時間を算出する。仮想位置設定手段は、第２の位置を通過した直後の位置を仮想位置に設定する。仮想位置更新手段は、仮想位置更新処理を繰り返す。減算手段は、減算処理を仮想位置更新処理の度に行うことによって仮想位置における移動時間を算出する。判定手段は、仮想位置が第２の位置の手前の位置であるか否かを仮想位置が設定される度に判定する。移動時間決定手段は、第２の位置の手前であると判定手段によって判定される直前または直後の仮想位置における移動時間を第２の位置における移動時間として決定する。
【選択図】  図４
【図１】
0003601793.tif 000002
【図２】
0003601793.tif 000003
【図３】
0003601793.tif 000004
【図４】
0003601793.tif 000005
【図５】
0003601793.tif 000006
【図６】
0003601793.tif 000007
【図７】
0003601793.tif 000008
【図８】
0003601793.tif 000009
【図９】
0003601793.tif 000010
【図１０】
0003601793.tif 000011
【図１１】
0003601793.tif 000012
【図１２】
0003601793.tif 000013
【図１３】
0003601793.tif 000014
【図１４】
0003601793.tif 000015
【図１５】
0003601793.tif 000016
【図１６】
0003601793.tif 000017
【図１７】
0003601793.tif 000018
【図１８】
0003601793.tif 000019