(57)【要約】    【構成】  ビデオゲーム装置１２はＣＰＵ３６を含み、ＣＰＵ３６はゲームプログラムに従って競争ゲームを実行する。競争ゲームでは、移動体はプレイヤの指示に従ってコース上を移動し、壁等の障害物に衝突して生命力が０になると、スタート地点や直前の通過ポイントに戻される。移動体は、コースの通過ポイントを先頭で通過すると、予め設定された拡大率で拡大するように変形される。２番目以降の移動体は、通過ポイントを通過した時間と先頭の移動体が当該通過ポイントを通過した時間との差分に基づく拡大率で変形される。ただし、先頭からかなり遅れている移動体は変形されない。    【効果】  移動体の大きさを変形するので、上級者ほどゲームの難易度を高くすることができ、プレイヤの腕前に拘わらず、ゲームへの満足感や面白みを味わうことができる。【選択図】  図２
2006081753.tif 000002
【特許請求の範囲】
【請求項１】
２以上のプレイヤのそれぞれが操作する複数の移動体を仮想ゲーム空間に設けられるコース上で競争させる競争ゲームをプレイするゲーム装置のゲームプログラムであって、
前記ゲーム装置を、
全移動体における各移動体の相対位置を検出する相対位置検出手段、および
前記相対位置検出手段によって検出された相対位置に応じて、前記各移動体の大きさおよび前記コースの幅の少なくとも一方を変化させる変化手段として機能させる、ゲームプログラム。
【請求項２】
前記変化手段は、前記相対位置検出手段によって検出された相対位置で決定される順位が高いほど、他の前記移動体に比べて大きくなるように前記移動体を変形させる移動体変形手段を含む、請求項１記載のゲームプログラム。
【請求項３】
前記変化手段は、前記相対位置検出手段によって検出された相対位置で決定される順位が高いほど、前記移動体の通過するコースの幅が他の前記移動体が通過するコースの幅に比べて狭くなるように変形させるコース変形手段を含む、請求項１記載のゲームプログラム。
【請求項４】
前記コースには複数の通過ポイントが設定され、
前記相対位置検出手段は、前記通過ポイント毎に全移動体における各移動体の相対位置を検出する、請求項１ないし３のいずれかに記載のゲームプログラム。
【請求項５】
前記各移動体が前記通過ポイントを通過する通過時間を検出する通過時間検出手段、
前記通過時間検出手段によって検出された通過時間のうち、前記通過ポイントを先頭で通過したときの通過時間のみを記憶する通過時間記憶手段、
前記通過ポイントを先頭で通過したかどうかを判別する先頭判別手段、
前記先頭判別手段によって先頭で通過したことが判別されたとき、予め設定された変形率を設定し、前記先頭判別手段によって先頭で通過していないことが判別されたとき、前記通過時間記憶手段に記憶される先頭の通過時間と、自身の通過時間との差分に基づく変形率を設定する変形率設定手段としてさらに機能させる、請求項４記載のゲームプログラム。
【請求項６】
前記各移動体が前記通過ポイントを通過したかどうかを検出する通過ポイント通過検出手段、および
前記通過ポイント通過検出手段によって通過ポイントを通過したことが検出されたとき、当該通過ポイントの情報を前記各移動体に対応付けて記憶する通過ポイント情報記憶手段としてさらに機能させ、
前記先頭判別手段は、前記通過ポイント情報記憶手段によって前記通過ポイントの情報が記憶されたとき、記憶された全通過ポイントの情報の中で最もゴールに近い通過ポイントの情報に対応付けられた前記移動体を先頭の移動体と判別する、請求項５記載のゲームプログラム。
【請求項７】
前記変形率設定手段は、前記通過ポイントを先頭で通過した前記移動体に対して、所定の条件に応じて異なる変形率を設定する、請求項５または６記載のゲームプログラム。
【請求項８】
前記コースのゴール地点からの距離に基づいて各移動体の順位を決定する順位決定手段、および
前記順位決定手段によって決定された順位に応じて予め設定された変形率を設定する変形率設定手段としてさらに機能させる、請求項１記載のゲームプログラム。
【請求項９】
２以上のプレイヤのそれぞれが操作する複数の移動体を仮想ゲーム空間に設けられるコース上で競争させる競争ゲームをプレイするゲーム装置であって、
全移動体における各移動体の相対位置を検出する相対位置検出手段、および
前記相対位置検出手段によって検出された相対位置に応じて、前記各移動体の大きさおよび前記コースの幅の少なくとも一方を変化させる変化手段を備える、ゲーム装置。
【請求項１０】
前記変化手段は、前記相対位置検出手段によって検出された相対位置で決定される順位が高いほど、他の前記移動体に比べて大きくなるように前記移動体の大きさを変形させる移動体変形手段を含む、請求項９記載のゲーム装置。
【請求項１１】
前記変化手段は、前記相対位置検出手段によって検出された相対位置で決定される順位が高いほど、前記移動体の通過するコースの幅が他の前記移動体が通過するコースの幅に比べて狭くなるように変形させるコース変形手段を含む、請求項９記載のゲーム装置。
【請求項１２】
前記コースのゴール地点からの距離に基づいて各移動体の順位を決定する順位決定手段、および
前記順位決定手段によって決定された順位に応じて予め設定された変形率を設定する変形率設定手段をさらに備える、請求項９記載のゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はゲームプログラムおよびゲーム装置に関し、特にたとえば、複数の操作者のそれぞれに対応する移動体を仮想３次元空間に設けられるコース上で競争させる競争ゲームをプレイする、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
従来のこの種のゲーム装置の一例が特許文献１に開示される。この特許文献１によれば、レースゲームの順位の低い車両程性能（最高速度、加速度やタイヤのグリップ力）を上げることで、各車両間の差を縮めることにより、レースを白熱させるようにしてある。
【０００３】
また、従来のこの種のゲーム装置の他の例が特許文献２に開示される。この特許文献２によれば、レースゲームにおいて、ハンディキャップおよびアドバンテージの付与として、ラバーバンド処理を行い、移動体が後ろに行けば行くほど前に引っ張るようにしてある。また、ハンディキャップおよびアドバンテージとして、移動体の速度、加速度、クラッシュの有無、コース外の走行可能領域に達した場合の戻り易さなどを調整、変更することも提案されている。このようにして、移動体の性能を変化させ、上級者と初級者とが競争する場合であっても同時に楽しむことができるようにしてある。
【特許文献１】特許第２７４７４０５号
【特許文献２】特開２０００−２２９１７４号
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述の従来技術は、いずれも移動体の性能を変化させるものであり、操作技量の高いプレイヤ（上級者）であっても移動体の性能以上で走行することができない。つまり、複数人で競争ゲームをプレイする場合には、操作技量の低いプレイヤ（初級者）は上級者と白熱したゲームをプレイできる楽しみがあるが、上級者は自己の操作技量を発揮することができず、ゲームへの満足感や面白みに欠けてしまうという問題があった。
【０００５】
それゆえに、この発明の主たる目的は、新規な、ゲームプログラムおよびゲーム装置を提供することである。
【０００６】
また、この発明の他の目的は、異なる操作技量のプレイヤ同士がプレイする場合であっても十分にゲームを楽しむことができる、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００８】
請求項１の発明は、２以上のプレイヤのそれぞれが操作する複数の移動体を仮想ゲーム空間に設けられるコース上で競争させる競争ゲームをプレイするゲーム装置のゲームプログラムであって、ゲーム装置を、全移動体における各移動体の相対位置を検出する相対位置検出手段、および相対位置検出手段によって検出された相対位置に応じて、各移動体の大きさおよびコースの幅の少なくとも一方を変化させる変化手段として機能させる。
【０００９】
請求項１の発明では、ゲームプログラムは、ゲーム装置（１２：実施例で相当する参照符号である。以下、同じ。）に記憶またはロードされ、２以上のプレイヤのそれぞれが操作する複数の移動体（７２）を仮想ゲーム空かに設けられるコース上で競争させる競争ゲームを実行し、プレイヤは競争ゲームをプレイする。このゲームプログラムは、ゲーム装置を相対位置検出手段（３６，Ｓ２９，Ｓ３１，Ｓ３３，Ｓ４１，Ｓ６５，Ｓ８９，Ｓ９１，Ｓ９３，Ｓ１０１）および変化手段（３６，Ｓ４９，Ｓ７１，Ｓ１０９）として機能させる。相対位置検出手段は、全移動体における各移動体の相対位置を検出する。変化手段は、相対位置検出手段によって検出された相対位置に応じて、各移動体の大きさおよびコースの幅の少なくとも一方を変化させる。たとえば、移動体の大きさを変化させたり、または、コースの幅を変化させたり、或いはそれら両方を変化させることにより、各コースの幅（移動体が通過可能な幅）に対する移動体の相対的な大きさが変化される。
【００１０】
請求項１の発明によれば、移動体の大きさおよびコースの幅の少なくとも一方を変化させるので、たとえば、他の移動体よりも前を行く移動体については、コースの幅に対して移動体の大きさが大きくなるように変形させることで、ゲームの難易度を高くすることができる。つまり、上級者と初級者とが同時にプレイする場合には、上級者はより難易度の高いゲームをプレイすることとなり、一方で、初級者は比較的容易なゲームをプレイして上級者と競い合うこととなるので、プレイヤの操作技量の高低に拘わらず、ゲームへの満足感や面白みを味わうことができる。
【００１１】
請求項２の発明は請求項１に従属し、変化手段は、相対位置検出手段によって検出された相対位置で決定される順位が高いほど、他の移動体に比べて大きくなるように移動体を変形させる移動体変形手段を含む。
【００１２】
請求項２の発明では、移動体変形手段（３６，Ｓ４９，Ｓ７１）は、相対位置検出手段によって検出された相対位置で決定される順位が高いほど、他の移動体に比べて大きくなるように移動体を変形させる。
【００１３】
請求項２の発明によれば、順位の高い移動体ほど、つまり上級者が操作すると考えられる移動体ほど、その大きさが大きくなるように変形されるので、コースを進行し難くすることができる。つまり、順位の高い移動体を操作するプレイヤのゲームの難易度を高くすることができ、上級者は自身の操作技量を発揮して、ゲームへの満足感や面白みを味わうことができる。
【００１４】
請求項３の発明は請求項１に従属し、変化手段は、相対位置検出手段によって検出された相対位置で決定される順位が高いほど、移動体の通過するコース幅が他の移動体が通過するコース幅に比べて狭くなるように変形させるコース変形手段を含む。
【００１５】
請求項３の発明では、コース変形手段（３６，Ｓ１０９）は、相対位置検出手段によって検出された順位が高いほど、移動体の通過するコース幅が他の移動体が通過するコース幅に比べて狭くなるように変形させる。
【００１６】
請求項３の発明によれば、コース幅を変形させるようにしても、コース幅に対する移動体の大きさを変化させることができ、ゲームの難易度を変化させることができる。
【００１７】
請求項４の発明は請求項１ないし３のいずれかに従属し、コースには複数の通過ポイントが設定され、相対位置検出手段は、通過ポイント毎に全移動体における各移動体の相対位置を検出する。
【００１８】
請求項４の発明では、コースには複数の通過ポイントが設定されており、相対位置検出手段は、通過ポイント毎に全移動体における各移動体の相対位置を検出する。
【００１９】
請求項４の発明によれば、通過ポイント毎に各移動体の相対位置を検出するので、通過ポイント毎にコース幅に対する各移動体の大きさを変化させることができる。つまり、ゲームの進行に従って変化する移動体の相対位置に応じて、コース幅に対する各移動体の大きさを変化させることができるので、競争ゲームが単調になることはない。
【００２０】
請求項５の発明は請求項４に従属し、各移動体が通過ポイントを通過する通過時間を検出する通過時間検出手段、通過時間検出手段によって検出された通過時間のうち、通過ポイントを先頭で通過したときの通過時間のみを記憶する通過時間記憶手段、通過ポイントを先頭で通過したかどうかを判別する先頭判別手段、先頭判別手段によって先頭で通過したことが判別されたとき、予め設定された変形率を設定し、先頭判別手段によって先頭で通過していないことが判別されたとき、通過時間記憶手段に記憶される先頭の通過時間と、自身の通過時間との差分に基づく変形率を設定する変形率設定手段としてさらに機能させる。
【００２１】
請求項５の発明では、通過時間検出手段（３６，Ｓ３１，Ｓ４１，Ｓ９１，Ｓ１０１）は、各移動体が通過ポイントを通過する通過時間を検出する。たとえば、通過時間は、コースのスタート地点から通過ポイントまでの経過時間である。通過時間記憶手段（３６，Ｓ４１，Ｓ１０１）は、通過時間検出手段によって検出された通過時間のうち、通過ポイントを先頭で通過したときの通過時間のみを記憶する。先頭判別手段（３６，Ｓ２９，Ｓ８９）は、通過ポイントを先頭で通過したかどうかを判別する。つまり、先頭判別手段で通過ポイントを先頭で通過したと判別されたとき、通過時間記憶手段によってその通過時間が記憶されるのである。変形率設定手段（３６，Ｓ３７，Ｓ３９，Ｓ４５，Ｓ４７，Ｓ９７，Ｓ９９，Ｓ１０５，Ｓ１０７）は、先頭判別手段によって先頭で通過したことが判別されたとき（Ｓ２９で“ＮＯ”，Ｓ８９で“ＮＯ”）、予め設定された変形率を設定し、先頭で通過していないことが判別されたとき（Ｓ２９で“ＹＥＳ”，Ｓ８９で“ＹＥＳ”）、通過時間記憶手段に記憶される先頭の通過時間と、自身の通過時間との差分に基づく変形率を設定する。たとえば、先頭で通過していない移動体では、先頭の通過時間と自身の通過時間との差分に基づいて所定の演算式により、変形率が算出される。
【００２２】
請求項５の発明によれば、通過ポイントを先頭で通過した場合には、所定の変形率を設定し、先頭で通過していない場合には、先頭の通過時間と自身の通過時間との差分に応じた変形率を設定するので、相対位置に応じた変形率を設定することができる。
【００２３】
請求項６の発明は請求項５に従属し、各移動体が通過ポイントを通過したかどうかを検出する通過ポイント通過検出手段、および通過ポイント通過検出手段によって通過ポイントを通過したことが検出されたとき、当該通過ポイントの情報を各移動体に対応付けて記憶する通過ポイント情報記憶手段としてさらに機能させ、先頭判別手段は、通過ポイント情報記憶手段によって通過ポイントの情報が記憶されたとき、記憶された全通過ポイントの情報の中で最もゴールに近い通過ポイントの情報に対応付けられた移動体を先頭の移動体と判別する。
【００２４】
請求項６の発明では、通過ポイント通過検出手段（３６，Ｓ２５，Ｓ８５）は、各移動体が通過ポイントを通過したかどうかを検出する。通過ポイント情報記憶手段（３６，Ｓ２７，Ｓ８７）は、通過ポイント通過検出手段によって移動体が通過ポイントを通過したことが検出されたとき（Ｓ２５で“ＹＥＳ”，Ｓ８５で“ＹＥＳ”）、当該通過ポイントの情報、たとえば通過ポイントの番号を、当該移動体に対応付けて記憶する。先頭判別手段は、通過情報記憶手段によって通過ポイントの情報を記憶されたとき、記憶された全通過ポイントの情報の中で最もゴールに近い通過ポイントの情報に対応づけられた移動体を先頭の移動体と判別する。
【００２５】
請求項６の発明によれば、移動体が通過した通過ポイントの情報を移動体に対応づけて記憶しておくので、先頭の移動体を容易に判別することができる。
【００２６】
請求項７の発明は請求項５または６に従属し、変形率設定手段は、通過ポイントを先頭で通過した移動体に対して、所定の条件に応じて異なる変形率を設定する。
【００２７】
請求項７の発明では、変形率設定手段は、通過ポイントを先頭で通過した移動体に対して、所定の条件（Ｓ４３，Ｓ１０３）に応じて異なる変形率を設定する。
【００２８】
請求項７の発明では、先頭の移動体の変形率を所定の条件に応じて異ならせるので、単に先頭で通過した場合とそうでない場合とでゲームの難易度を変化させることができる。
【００２９】
請求項８の発明は請求項１に従属し、コースのゴール地点からの距離に基づいて各移動体の順位を決定する順位決定手段、および順位決定手段によって決定された順位に応じて予め設定された変形率を設定する変形率設定手段としてさらに機能させる。
【００３０】
請求項８の発明では、順位決定手段（３６，Ｓ６５，Ｓ６９）は、コースのゴールからの距離に応じて各移動体の順位を決定する。変形率設定手段は、順位決定手段によって決定された順位に応じて予め設定された変形率を設定する。
【００３１】
請求項８の発明によれば、移動体に順位に応じた変形率を設定するので、順位が高いほど移動体を大きくするように変形率を設定するようにすれば、順位の高い移動体を操作するプレイヤのゲームの難易度を高くすることができる。
【００３２】
請求項９の発明は、２以上のプレイヤのそれぞれが操作する複数の移動体を仮想ゲーム空間に設けられるコース上で競争させる競争ゲームをプレイするゲーム装置であって、全移動体における各移動体の相対位置を検出する相対位置検出手段、および相対位置検出手段によって検出された相対位置に応じて、各移動体の大きさおよびコースの幅の少なくとも一方を変化させる変化手段を備える。
【００３３】
請求項９の発明においても、請求項１の発明と同様に、プレイヤの操作技量の高低に拘わらず、ゲームへの満足感や面白みを味わうことができる。
【００３４】
請求項１０の発明は請求項９に従属し、変化手段は、相対位置検出手段によって検出された相対位置で決定される順位が高いほど、他の移動体に比べて大きくなるように移動体の大きさを変形させる移動体変形手段を含む。
【００３５】
請求項１０の発明においても、請求項２の発明と同様に、順位の高い移動体を操作するプレイヤのゲームの難易度を高くすることができ、上級者は自身の操作技量を発揮して、ゲームへの満足感や面白みを味わうことができる。
【００３６】
請求項１１の発明は請求項９に従属し、変化手段は、相対位置検出手段によって検出された相対位置で決定される順位が高いほど、移動体の通過するコース幅が他の移動体が通過するコース幅に比べて狭くなるように変形させるコース変形手段を含む。
【００３７】
請求項１１の発明においても、請求項８の発明と同様に、コース幅を変形させるようにしても、コース幅に対する各移動体の大きさを変化させることができ、これにより、ゲームの難易度を変化させることができる。
【００３８】
請求項１２の発明は請求項９に従属し、コースのゴール地点からの距離に基づいて各移動体の順位を決定する順位決定手段、および順位決定手段によって決定された順位に応じて予め設定された変形率を設定する変形率設定手段をさらに備える。
【００３９】
請求項１２の発明においても、請求項７の発明と同様に、順位の高い移動体を操作するプレイヤのゲームの難易度を高くすることができる。
【００４０】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００４１】
＜第１実施例＞
図１を参照して、この発明の一実施例であるゲームシステム１０は、ビデオゲーム装置１２を含む。ビデオゲーム装置１２は、略立方体のハウジング１４を含み、ハウジング１４の上端には光ディスクドライブ１６が設けられる。光ディスクドライブ１６には、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク１８が装着される。ハウジング１４の前面には複数の（第１実施例では４つの）コネクタ２０が設けられる。これらコネクタ２０は、ケーブル２４によって、コントローラ２２をビデオゲーム装置１２に接続するためのものであり、この第１実施例では最大４つのコントローラ２２をビデオゲーム装置１２に接続することができる。
【００４２】
コントローラ２２には、その上面，下面，或いは側面などに、操作部（操作スイッチ）２６が設けられる。操作部２６は、たとえば２つのアナログジョイスティック，１つの十字キー，複数のボタンスイッチ等を含む。１つのアナログジョイスティックは、スティックの傾き量と方向とによって、プレイヤオブジェクト（プレイヤがコントローラ２２によって操作可能な動画オブジェクト）の移動方向および／または移動速度ないし移動量などを入力するために用いられる。他のアナログジョイスティックは、傾斜方向によって、仮想カメラの移動を制御する。十字スイッチは、アナログジョイスティックに代えてプレイヤオブジェクトの移動方向を指示するために用いられる。ボタンスイッチは、プレイヤオブジェクトの動作を指示するために利用されたり、３次元画像の仮想カメラの視点を切り換えたり、プレイヤオブジェクトの移動スピード調節等に用いられる。ボタンスイッチは、さらに、たとえばメニュー選択やポインタあるいはカーソル移動を制御する。
【００４３】
なお、この第１実施例ではコントローラ２２がそれと一体的に設けられるケーブル２４によってビデオゲーム装置１２に接続された。しかしながら、コントローラ２２は、他の方法、たとえば電磁波（たとえば電波または赤外線）を介してワイヤレスで、ビデオゲーム装置１２に接続されてもよい。また、コントローラ２２の操作部２６の具体的構成は、もちろん第１実施例の構成に限られるものではなく、任意の変形が可能である。たとえば、アナログジョイスティックは１つだけでもよいし、用いられなくてもよい。十字スイッチは用いられなくてもよい。
【００４４】
ビデオゲーム装置１２のハウジング１４の前面であり、コネクタ２０の下方には、１つまたは複数の（この第１実施例では２つの）メモリスロット２８が設けられる。このメモリスロット２８にはメモリカード３０が挿入される。メモリカード３０は、光ディスク１８から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム１０を利用してプレイしたゲームのゲームデータ（ゲームの結果データまたは途中データ）を保存（セーブ）しておいたりするために利用される。
【００４５】
ビデオゲーム装置１２のハウジング１４の後面には、ＡＶケーブルコネクタ（図示せず）が設けられ、そのコネクタを用いて、ＡＶケーブル３２を通してビデオゲーム装置１２にモニタ３４を接続する。このモニタ３４は典型的にはカラーテレビジョン受像機であり、ＡＶケーブル３２は、ビデオゲーム装置１２からの映像信号をカラーテレビのビデオ入力端子に入力し、音声信号を音声入力端子に入力する。したがって、カラーテレビ（モニタ）３４の画面上にたとえば３次元（３Ｄ）ビデオゲームのゲーム画像が表示され、左右のスピーカ３４ａからゲーム音楽や効果音などのステレオゲーム音声が出力される。
【００４６】
このゲームシステム１０において、ユーザまたはゲームプレイヤがゲーム（または他のアプリケーション）をプレイするために、ユーザはまずビデオゲーム装置１２の電源をオンし、次いで、ユーザはビデオゲーム（もしくはプレイしたいと思う他のアプリケーション）をストアしている適宜の光ディスク１８を選択し、その光ディスク１８をビデオゲーム装置１２のディスクドライブ１６にローディングする。応じて、ビデオゲーム装置１２がその光ディスク１８にストアされているソフトウェアに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはビデオゲーム装置１２に入力を与えるためにコントローラ２２を操作する。たとえば、操作部２６のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。操作部２６の他のものを動かすことによって、動画オブジェクト（プレイヤオブジェクト）を異なる方向に移動させ、または３次元（３Ｄ）のゲーム世界におけるユーザの視点（カメラ位置）を変化させることができる。
【００４７】
図２は図１実施例のビデオゲームシステム１０の電気的な構成を示すブロック図である。ビデオゲーム装置１２には、中央処理ユニット（以下、「ＣＰＵ」という。）３６が設けられる。このＣＰＵ３６は、コンピュータ或いはプロセサなどとも呼ばれ、ビデオゲーム装置１２の全体的な制御を担当する。ＣＰＵ３６ないしコンピュータは、ゲームプロセサとして機能し、このＣＰＵ３６には、バスを介して、メモリコントローラ３８が接続される。メモリコントローラ３８は主として、ＣＰＵ３６の制御の下で、バスを介して接続されるメインメモリ４０の書込みや読出しを制御する。このメモリコントローラ３８にはＧＰＵ(Graphics Processing Unit:グラフィックス処理装置) ４２が接続される。
【００４８】
ＧＰＵ４２は、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、メモリコントローラ３８を介してＣＰＵ３６からのグラフィクスコマンド(graphics command ：作画命令) を受け、そのコマンドに従って、ジオメトリユニット４４およびレンダリングユニット４６によって３次元（３Ｄ）ゲーム画像を生成する。つまり、ジオメトリユニット４４は、３次元座標系の各種オブジェクトやオブジェクト（複数のポリゴンで構成されている。そして、ポリゴンとは少なくとも３つの頂点座標によって定義される多角形平面をいう。）の回転，移動，変形等の座標演算処理を行う。レンダリングユニット４６は、各種オブジェクトの各ポリゴンにテクスチャ（Texture ：模様画像）を貼り付けるなどの画像生成処理を施す。したがって、ＧＰＵ４２によって、ゲーム画面上に表示すべき３Ｄ画像データが作成され、その画像データがフレームバッファ４８内に記憶される。
【００４９】
なお、ＧＰＵ４２が作画コマンドを実行するにあたって必要なデータ（プリミティブまたはポリゴンやテクスチャ等）は、ＧＰＵ４２がメモリコントローラ３８を介して、メインメモリ４０から入手する。
【００５０】
フレームバッファ４８は、たとえばラスタスキャンモニタ３４の１フレーム分の画像データを描画（蓄積）しておくためのメモリであり、ＧＰＵ４２によって１フレーム毎に書き換えられる。具体的には、フレームバッファ４８は、１画素（ピクセル）毎に、画像の色情報を順序立てて記憶している。ここで、色情報は、Ｒ，Ｇ，Ｂ，Ａについてのデータであり、たとえば、８ビットのＲ（赤）データ、８ビットのＧ（緑）データ、８ビットのＢ（青）データおよび８ビットのＡ（アルファ）データである。なお、Ａデータは、マスク（マット画像）についてのデータである。後述のビデオＩ／Ｆ５８がメモリコントローラ３８を介してフレームバッファ４８のデータを読み出すことによって、モニタ３４の画面上に３Ｄゲーム画像が表示される。
【００５１】
また、Ｚバッファ５０は、フレームバッファ４８に対応する画素数×１画素当たりの奥行きデータのビット数に相当する記憶容量を有し、フレームバッファ４８の各記憶位置に対応するドットの奥行き情報または奥行きデータ（Ｚ値）を記憶するものである。
【００５２】
なお、フレームバッファ４８およびＺバッファ５０は、ともにメインメモリ４０の一部を用いて構成されてもよく、また、これらはＧＰＵ４２の内部に設けられてもよい。
【００５３】
メモリコントローラ３８はまた、ＤＳＰ(Digital Signal Processor)５２を介して、オーディオ用のＲＡＭ（以下、「ＡＲＡＭ」という。）５４に接続される。したがって、メモリコントローラ３８は、メインメモリ４０だけでなく、サブメモリとしてのＡＲＡＭ５４の書込みおよび／または読出しを制御する。
【００５４】
ＤＳＰ５２は、サウンドプロセサとして働き、メインメモリ４０に記憶されたサウンドデータ（図示せず）を用いたり、ＡＲＡＭ５４に書き込まれている音波形データ（図示せず）を用いたりして、ゲームに必要な音、音声或いは音楽に対応するオーディオデータを生成する。
【００５５】
メモリコントローラ３８は、さらに、バスによって、各インタフェース（Ｉ／Ｆ）５６，５８，６０，６２および６４に接続される。コントローラＩ／Ｆ５６は、ビデオゲーム装置１２に接続されるコントローラ２２のためのインタフェースであり、コントローラ２２の操作部２６の操作信号または操作データを、メモリコントローラ３８を通してＣＰＵ３６に与える。ビデオＩ／Ｆ５８は、フレームバッファ４８にアクセスし、ＧＰＵ４２で作成した画像データを読み出して、画像信号または画像データ（ディジタルＲＧＢＡピクセル値）をＡＶケーブル３２（図１）を介してモニタ３４に与える。
【００５６】
外部メモリＩ／Ｆ６０は、ビデオゲーム装置１２の前面に挿入されるメモリカード３０（図１）をメモリコントローラ３８に連係させる。それによって、メモリコントローラ３８を介して、ＣＰＵ３６がこのメモリカード３０にデータを書込み、またはメモリカード３０からデータを読み出すことができる。オーディオＩ／Ｆ６２は、メモリコントローラ３８を通してＤＳＰ５２から与えられるオーディオデータまたは光ディスク１８から読み出されたオーディオストリームを受け、それらに応じたオーディオ信号（音声信号）をモニタ３４のスピーカ３４ａに与える。
【００５７】
そして、ディスクＩ／Ｆ６４は、ディスクドライブ１６をメモリコントローラ３８に接続し、したがって、ＣＰＵ３６がディスクドライブ１６を制御する。このディスクドライブ１６によって光ディスク１８から読み出されたプログラムデータやテクスチャデータ等が、ＣＰＵ３６の制御の下で、メインメモリ４０に書き込まれる。
【００５８】
図３にはメインメモリ４０のメモリマップが示される。メインメモリ４０は、プログラム記憶領域４０２およびデータ記憶領域４０４を含む。プログラム記憶領域４０２には、競争ゲームのゲームプログラムが記憶される。このゲームプログラムは、ゲームメイン処理プログラム４０２ａ、画像生成プログラム４０２ｂ、画像表示プログラム４０２ｃ、操作情報取得プログラム４０２ｄ、座標位置算出プログラム４０２ｅ、ポイント通過判断プログラム４０２ｆ、ポイント通過時間検出プログラム４０２ｇ、オブジェクト変形率算出プログラム４０２ｈ、オブジェクト変形率設定プログラム４０２ｉ、オブジェクト変形プログラム４０２ｋおよびオブジェクト移動プログラム４０２ｍなどによって構成される。
【００５９】
ゲームメイン処理プログラム４０２ａは、この実施例の競争ゲームのメイン処理を実行するためのプログラムである。画像生成プログラム４０２ｂは、仮想ゲーム空間のような仮想３次元空間を生成するとともに、当該仮想３次元空間に存在するプレイヤオブジェクト、ノンプレイヤオブジェクトおよび背景オブジェクト等を含むゲーム画像を生成するためのプログラムである。
【００６０】
ここで、プレイヤオブジェクトとは、プレイヤ（コンピュータプレイヤを含む。）の操作によって仮想３次元空間内を移動等する動画オブジェクトをいう。また、ノンプレイヤオブジェクトとは、プレイヤの操作によらないで、プログラムに従って移動等するオブジェクトをいう。背景オブジェクトとは、壁、床（地面）、柱、樹木などの背景についてのオブジェクトをいう。このような背景オブジェクトの配列等によって、競争ゲームのコースが形成されるのである。
【００６１】
画像表示プログラム４０２ｃは、画像生成プログラム４０２ｂの実行によって生成されたゲーム画像をモニタ３４に表示するためのプログラムである。操作情報取得プログラム４０２ｄは、プレイヤによる操作情報（操作入力）を取得するためのプログラムであり、コントローラＩ／Ｆ５６を介して入力されるコントローラ２２からの操作データ（操作信号）を検出して、データ記憶領域４０４に記憶する。座標位置算出プログラム４０２ｅは、操作情報取得プログラム４０２ｄによって取得された操作データに従って、移動後のプレイヤオブジェクトの位置座標（３次元座標）を算出するためのプログラムである。
【００６２】
ポイント通過判断プログラム４０２ｆは、座標位置算出プログラム４０２ｅによって算出された位置座標に基づいて、プレイヤオブジェクトが３次元仮想空間に設けられる競争ゲームのコースの通過ポイントを通過したかどうかを判断するためのプログラムである。ポイント通過時間検出プログラム４０２ｇは、プレイヤオブジェクトが競争ゲームのコースの通過ポイントを通過した時間および当該通過ポイントの情報（たとえば、番号）を検出するためのプログラムである。ポイント通過時間記憶プログラム４０２ｈは、競争ゲームのコースの通過ポイントを１番に（先頭で）通過したプレイヤオブジェクトの経過時間を当該プレイヤオブジェクトに対応づけて記憶するためのプログラムである。
【００６３】
オブジェクト変形率算出プログラム４０２ｉは、先頭で通過ポイントを通過したプレイヤオブジェクトの通過時間と自身が当該通過ポイントを通過した通過時間とに基づいて、自身の変形率（たとえば、拡大率）を算出するためのプログラムである。この第１実施例では、プレイヤオブジェクトは棒状に形成され、拡大率は、プレイヤオブジェクトの長手方向の長さを拡大（長く）する割合を意味する。
【００６４】
オブジェクト変形率設定プログラム４０２ｊは、先頭で通過ポイントを通過したプレイヤオブジェクトの変形率（拡大率）を所定の条件に応じて設定するためのプログラムである。ここで、所定の条件とは、この競争ゲームのプログラマないし開発者が任意に設定できる条件であり、この第１実施例では、先頭で通過ポイントを通過したプレイヤオブジェクトが他のプレイヤオブジェクトを１区間（連続する２つの通過ポイントで決定される区間）以上離しているかどうかという条件である。
【００６５】
ただし、上述したように、所定の条件は任意に設定できるため、これに限定される必要はない。したがって、たとえば、先頭で通過ポイントを通過したプレイヤオブジェクトが１区間を一定時間（たとえば、８秒）以内に通過したかどうかという条件を設定するようにしてもよい。
【００６６】
オブジェクト変形プログラム４０２ｋは、オブジェクト変形率算出プログラム４０２ｉまたはオブジェクト変形率設定プログラム４０２ｊによって、算出ないし設定された変形率（拡大率）に従って、プレイヤオブジェクトの大きさを変形させるためのプログラムである。
【００６７】
なお、プレイヤオブジェクトの拡大率の算出、拡大率の設定および拡大率に従う変形については、後で詳細に説明する。
【００６８】
オブジェクト動作プログラム４０２ｍは、プレイヤオブジェクトの姿勢を変化させる（この第１実施例では、「回転させる」）とともに、座標位置算出プログラム４０２ｅによって算出された座標位置にプレイヤオブジェクトを配置（移動）させるためのプログラムである。
【００６９】
図示は省略するが、プログラム記憶領域４０２には、ビデオゲーム装置１２で実行される仮想ゲーム（競争ゲーム）に必要な音（音楽）を出力するためのゲーム音楽再生プログラムやゲームの途中データや結果データのようなゲームデータを記憶（バックアップ）するためのバックアップ処理プログラムなども記憶される。
【００７０】
また、データ記憶領域４０４には、画像データ４０４ａ、操作データ４０４ｂ、座標データ４０４ｃおよび通過時間テーブル４０４ｄなどのデータが記憶される。
【００７１】
画像データ４０４ａは、ゲーム画像を生成するためのデータ（ポリゴンデータやテクスチャデータなど）である。操作データ４０４ｂは、操作情報取得プログラム４０２ｄに従って取得された操作データである。座標データ４０４ｃは、座標位置算出プログラム４０２ｅに従って算出された位置座標のデータである。通過時間テーブル４０４ｃは、ポイント通過時間検出プログラム４０２ｇに従って検出された通過時間および通過ポイントの番号に基づいて作成されるテーブルデータである（図７参照）。
【００７２】
なお、図示は省略するが、データ記憶領域４０４には、ゲーム中に演奏される音楽（ＢＧＭ）や効果音のような音（音楽）についてのサウンドデータも記憶される。また、データ記憶猟奇４０４には、この競争ゲームの進行に従って発生するゲームデータやフラグデータなども記憶（一時記憶）される。
【００７３】
図４（Ａ）には、この第１実施例の競争ゲームを３人でプレイする場合のゲーム画面７０の一例が表示される。このゲーム画面７０は、図１に示したモニタ３４に表示される。この図４（Ａ）を参照して、このゲーム画面７０では、１Ｐ用の画面が左上に表示され、２Ｐ用の画面が右上に表示され、３Ｐ用の画面が左下に表示され、そして、画面の右下がブランクにされる。ただし、競争ゲームを４人でプレイする場合には、図４（Ａ）でブランクにされている右下の領域が４Ｐ用の画面となる。また、図示は省略するが、競争ゲームを２人でプレイする場合には、ゲーム画面７０が上下に２分割され、上半分の領域が１Ｐ用の画面となり、下半分の領域が２Ｐ用の画面となる。
【００７４】
この競争ゲームでは、棒状の移動体（プレイヤオブジェクト）７２（７２ａ，７２ｂ，７２ｃ）がプレイヤ（コンピュータも含む。）の操作に従って進行方向に移動され、コースのゴールを目指すものである。また、図４（Ｂ）に示すように、移動体７２は、その中心を軸として所定の方向（たとえば、右向き）に回転（回転動作）する。つまり、移動体７２は、プレイヤの操作に従ってコース上の位置を変化され、自身の回転によってその姿勢（向き）が変化される。つまり、プレイヤは、移動体７２の姿勢を見ながら、コース上を進行させるように、当該移動体７２を移動させるのである。たとえば、図４（Ｂ）においては、図面の右方向が移動体の進行方向（ゴールに向かう方向）である。
【００７５】
また、競争ゲームでは、たとえば、移動体７２は、壁等の障害物に衝突する毎に、その生命力（ＬＰ）が減算され、ＬＰが０になると、１つ手前の通過ポイント（またはスタートポイント）に移動される（戻される）。したがって、障害物になるべく衝突せずに、コースに従って移動体７２を移動させて、先頭でゴールすることにより、競争ゲームに勝利することができる。
【００７６】
一般的に、このような競争ゲームでは、上級者と初級者とが同時にゲームを楽しむ場合には、上級者が操作する移動体と初級者が操作する移動体との間で、差が出てしまう（距離が離れてしまう）ため、より遅れている移動体の性能を上げるようにしてある。たとえば、順位が低い移動体（初級者が操作する移動体）では、その速度や加速度が高くされる。これにより、順位の高い移動体（上級者が操作する移動体）と順位の低い移動体との距離の差を少なくして、移動体（プレイヤ）同士を競い合わせることにより、ゲームをより白熱させるようにしてある。
【００７７】
しかし、このように、移動体の性能自体を変化させるようにすると、操作能力が高くても、移動体の性能以上で走行することができなくなる。その結果、初級者は、操作技量が低くても、容易に上級者と競い合うことができるため、ゲームを楽しむことができるが、上級者は、自己の操作能力を発揮することができず、ゲームへの満足感や面白みに欠けてしまうという問題がある。
【００７８】
そこで、この第１実施例では、移動体の性能を変化させるのではなく、コースの幅（コース幅）に対する各移動体の大きさを変化（変形）させることにより、ゲームの困難性（難易度）を変化させ、上級者と初級者とが同時にゲームを楽しんで、十分に満足感や面白みを得ることができるようにしてある。つまり、上級者はより困難な状況でゲームをプレイして、競争に勝利することで楽しさや満足感を得ることができる。一方で、初級者が比較的簡単な状況でゲームをプレイして、上級者と競い合ったり、時には競争に勝利したりすることで楽しさや満足感を得ることができる。
【００７９】
この第１実施例では、コースに予め通過ポイントを設けておき、先頭で通過ポイントを通過した移動体７２を所定の拡大率で変形させ、２番目以降の移動体７２は先頭で通過した移動体７２との差（時間差）に基づいて拡大率を算出し、算出した拡大率で変形させるようにしてある。言い換えると、通過ポイント毎に移動体同士の相対位置を検出して、その位置関係に応じた拡大率で移動体７２のそれぞれを変形させるようにしてある。以下、図５および図６を用いて具体的に説明することにする。
【００８０】
図５は、Ｓ字を左右逆にしたような形状のコースにおいて、移動体７２ａ、７２ｂ、７２ｃが競争している様子を示してある。このコースには、スタートとゴールとの間に４つの通過ポイントＰ１，Ｐ２，Ｐ３，Ｐ４が設けられる。図５に示すように、移動体７２ａが通過ポイントＰ１を通過するとき、移動体７２ａは先頭であり、移動体７２ｃは２番目であり、そして、移動体７２ｂは最後尾である。
【００８１】
この場合には、通過ポイントＰ１を先頭で通過した移動体７２ａの長さは所定の拡大率で変形され、移動体７２ｂおよび移動体７２ｃの長さは移動体７２ａとの時間差に基づく拡大率で変形される。ここで、図６（Ａ１）に示すように、スタート地点においては、すべての移動体７２（７２ａ，７２ｂ，７２ｃ）の大きさ（長さ）は５０％である。これは、図６（Ａ２）に示すように、通過ポイント（Ｐ１，Ｐ２，Ｐ３，Ｐ４）を先頭で通過したときの移動体７２の長さを１（１００％）とした場合における割合を示す。つまり、通過ポイントを先頭で通過した場合には、移動体７２の長さが５０％から１００％に長く（拡大）される。したがって、コース幅に対する移動体７２の大きさが大きくされ、当該移動体７２は壁等の障害物に衝突し易くなり、その結果として、当該移動体７２を操作するプレイヤのゲームの難易度が上がる。
【００８２】
ただし、図示は省略するが、通過ポイントを先頭で通過した移動体７２と他の移動体７２との差が１区間以上である場合には、つまり、所定の条件を満たす場合には、移動体７２の長さを１２０％に変形するようにしてある。つまり、単に先頭で通過する場合よりも、ゲームの難易度をさらに高くするようにしてある。
【００８３】
このように、通過ポイントを先頭で通過した場合には、予め設定されている割合で、移動体７２の長さが変形される。このとき、他の移動体７２と１区間以上離れているかどうかの条件で、異なる拡大率が設定される。
【００８４】
また、図５に示したように、移動体７２ｂおよび移動体７２ｃは、通過ポイントＰ１を先頭で通過していない。このように、通過ポイントを先頭で通過していない移動体７２では、先頭の移動体７２が通過ポイントを通過した通過時間と、自身が当該通過ポイントを通過した通過時間とに基づいて、その長さの拡大率が決定される。具体的には、図６（Ｂ１）に示すように、先頭から０〜８（秒）遅れで、通過ポイントを通過した場合には、５０％〜１００％の間で線形的（リニア）に拡大率が算出される。この第１実施例では、拡大率は数１に従って算出される。ただし、数１において、Ｔｆは先頭の移動体７２の通過時間であり、Ｔｘは自身の通過時間である。また、図６（Ｂ２）に示すように、先頭から８秒以上遅れている場合には、変形率は５０％に決定される。つまり、スタート地点の大きさ以下にはならないようにしてある。
【００８５】
なお、８秒の値は、ゲームのプログラマないし開発者によって設定される値であり、マップの大きさ（コースの長さ）や移動体の移動速度などによって可変的に設定することができる。
【００８６】
[数１]
拡大率（％）＝１００−（Ｔｘ−Ｔｆ）÷８×５０  （Ｔｘ−Ｔｆ＜８）
拡大率（％）＝５０  （Ｔｘ−Ｔｆ≧８）
なお、この第１実施例では、スタート地点における移動体７２の大きさをデフォルトとして、移動体７２の大きさを変形させる場合には、その大きさが拡大されることになるため、説明の便宜上、変形率を拡大率と呼ぶことにしてある。ただし、移動体７２の大きさ（長さ）は、一旦拡大された後に、その拡大率よりも小さい拡大率で拡大された場合には、縮小したように見える。
【００８７】
図７は、上述した通過時間テーブル４０４ｄの一例を示す図解図である。この図７を参照して、通過時間テーブル４０４ｄでは、オブジェクトネームに対応して、通過ポイントおよび通過時間が記述される。オブジェクトネームの欄には、プレイヤオブジェクト（移動体７２）の名称（または、識別情報）が記述される。図示は省略するが、オブジェクトネームは、通過時間テーブル４０４ｄの上から順に、１Ｐの移動体７２、２Ｐの移動体７２、３Ｐの移動体７２および４Ｐの移動体７２の名称が記述される。通過ポイントの欄には、該当する移動体７２が既に通過した通過ポイントのうち、最新の通過ポイントの番号、すなわち、よりゴールに近い通過ポイントの番号が記述される。通過時間の欄には、先頭で通過ポイントを通過した場合にのみ、スタート地点から当該通過ポイントを通過するまでの経過時間が記述される。したがって、先頭で通過ポイントを通過していない移動体７２については、通過時間は記述されない。図７においては、バー（横棒）を記述することにより、通過時間が記述されていないことを表現してある。
【００８８】
つまり、図７に示す通過時間テーブル４０４ｄでは、第２オブジェクトの（２Ｐの）移動体７２が通過ポイントＰ３を先頭で通過し、そのときの経過時間（通過時間）が２１秒３６であることが示される。また、第１オブジェクト、第３オブジェクトおよび第４オブジェクトのそれぞれに対応する移動体７２は通過ポイントＰ２を通過しているが、通過ポイントＰ３に到達していないことが示される。
【００８９】
このように、通過時間テーブル４０４ｄを設けておけば、２番目以降のプレイヤオブジェクト（移動体７２）が通過ポイントを通過するときの通過時間を検出するだけで、上述したように、先頭の通過時間との差分に基づいて、移動体７２の長さを変形させることができる。また、先頭の移動体７２が通過ポイントを通過したときに、この通過時間テーブル４０４ｄを参照することにより、当該先頭の移動体７２が他の移動体７２と１区間以上離れているかどうかを、容易に判断することができる。したがって、先頭の移動体７２についての拡大率も簡単に設定することができる。
【００９０】
図８は、図２に示したＣＰＵ３６が実行する競争ゲームの全体処理を示すフロー図である。この図８を参照して、ＣＰＵ３６が競争ゲームの全体処理を開始すると、まずステップＳ１で、初期ゲーム画面を設定する。ここでは、競争するコースのスタート地点を含む当該コースの一部を画面表示するとともに、競争ゲームに参加する移動体７２をスタート地点に配置するように画面表示する。ただし、上述したように、競争ゲームをプレイする人数に応じて、モニタ３４の画面は分割表示される。
【００９１】
なお、競争ゲームの開始前に、プレイヤは、プレイする人数、操作する移動体７２および競争するコースを選択する。
【００９２】
続くステップＳ３では、経過時間の計時を開始する。つまり、タイマ（図２では省略）をスタートする。次に、ステップＳ５で、各オブジェクト制御処理を実行する。つまり、後で詳細に説明する図９および図１０に示すオブジェクト制御処理を各プレイヤオブジェクト（移動体７２）について実行する。続いて、ステップＳ７で、ゲーム画面の表示処理を実行する。
【００９３】
そして、ステップＳ９では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了の指示が入力されたり、ゲームオーバになったりしたかどうかを判断する。ステップＳ９で“ＮＯ”であれば、つまりゲーム終了でなければ、そのままステップＳ５に戻る。一方、ステップＳ９で“ＹＥＳ”であれば、つまりゲーム終了であれば、ゲームの全体処理を終了する。
【００９４】
図９および図１０は、図８のステップＳ５において、各プレイヤオブジェクト（移動体７２）毎に実行されるオブジェクト制御処理を示すフロー図である。つまり、オブジェクト制御処理は、移動体７２毎に並列的に実行される。以下では、着目する１の移動体７２についてのオブジェクト制御処理についてのみ説明するが、着目する移動体７２を「当該移動体７２」と言う場合がある。
【００９５】
図９を参照して、オブジェクト制御処理を開始すると、ステップＳ２１で、操作データが有るかどうかを判断する。つまり、ＣＰＵ３６は、コントローラＩ／Ｆ５６に設けられるコントローラバッファ（図示せず）を参照して、操作データが入力されているかどうかを判断する。
【００９６】
ステップＳ２１で“ＮＯ”であれば、つまり操作データが無ければ、そのまま図１０に示すステップＳ５１に進む。一方、ステップＳ２１で“ＹＥＳ”であれば、つまり操作データが有れば、ステップＳ２３で、操作データに基づいて移動後の座標を算出する。具体的には、操作データが示すジョイスティックの傾き方向および傾き量から、当該移動体７２の移動方向および移動量を算出し、算出した移動方向および移動量と、現在の位置座標とから移動後の位置座標を算出する。
【００９７】
続くステップＳ２５では、通過ポイントを通過したかどうかを判断する。つまり、ステップＳ２３で算出した移動後の位置座標が通過ポイントを通過しているかどうかを判断する。ステップＳ２５で“ＮＯ”であれば、つまり通過ポイントを通過していなければ、そのままステップＳ５１に進む。一方、ステップＳ２５で“ＹＥＳ”であれば、つまり通過ポイントを通過していれば、ステップＳ２７で、通過した通過ポイントの番号を、メインメモリ４０のバッファ領域（図示せず）に記憶（一時記憶）する。
【００９８】
続いて、ステップＳ２９で、既に本（当該）通過ポイントを通過しているオブジェクト（移動体７２）がいるかどうかを判断する。つまり、本通過ポイントを先頭で通過するかどうかを判断する。ステップＳ２９で“ＹＥＳ”であれば、つまり本通過ポイントを先頭で通過しない場合には、既に本通過ポイントを通過している移動体７２がいると判断し、ステップＳ３１で、タイマを参照して現通過時間Ｔｘを取得する。次にステップＳ３３で、先頭の通過時間Ｔｆとの時間差ΔＴ（Ｔｘ−Ｔｆ）を算出する。
【００９９】
ステップＳ３５では、時間差ΔＴが８秒以上であるかどうかを判断する。時間差ΔＴが８秒以上であれば、ステップＳ３７で、拡大率を５０％に設定して、図１０に示すステップＳ４９に進む。一方、ステップＳ３５で“ＮＯ”であれば、つまり時間差ΔＴが８秒未満であれば、ステップＳ３９で、時間差ΔＴに基づいて所定の演算式（数１）に従って拡大率を算出して、ステップＳ４９に進む。
【０１００】
しかし、ステップＳ２９で“ＮＯ”であれば、つまり本通過ポイントを先頭で通過する場合には、既に本通過ポイントを通過している移動体７２はいないと判断し、ステップＳ４１で、通過時間Ｔｆを検出（取得）し、記憶する。つまり、タイマから通過時間Ｔｆを取得して、通過時間テーブル４０４ｄの該当する欄にその通過時間Ｔｆを記述する。続くステップＳ４３では、他のオブジェクト（移動体７２）と１区間以上離れているかどうかを判断する。ここでは、通過時間テーブル４０４ｄを参照して、通過ポイントの番号から判断する。
【０１０１】
ステップＳ４３で“ＮＯ”であれば、つまり他の移動体７２と１区間以上離れていない場合には、ステップＳ４５で、拡大率を１００％に設定して、ステップＳ４９に進む。一方、ステップＳ４３で“ＹＥＳ”であれば、つまり他の移動体７２と１区間以上離れている場合には、ステップＳ４７で、拡大率を１２０％に設定して、ステップＳ４９に進む。ただし、ステップＳ４７では、１区間の通過時間によって１００％〜１２０％にリニアに設定するようにすることもできる。
【０１０２】
図１０に示すように、ステップＳ４９では、設定または算出した拡大率に従ってオブジェクト（移動体７２）を長手方向に変形させる。続くステップＳ５１では、予め決められた回転量に基づいて姿勢を決定する。そして、ステップＳ５３で、オブジェクト（移動体７２）をマップ（コース）に配置するとともに、表示領域を更新して、オブジェクト制御処理をリターンする。
【０１０３】
なお、表示領域は、自身が画面の所定位置（たとえば、中央や進行方向よりも反対側にずれた位置）に配置されるように、更新される。これは、プレイヤが自身のプレイヤオブジェクト（移動体７２）を見やすくしたり、進行方向のコースを見やすくしたりするためである。
【０１０４】
第１実施例によれば、通過ポイント毎に他の移動体との相対位置を検出し、先頭で通過ポイントを通過する場合には、移動体を長く変形させ、先頭で通過ポイントを通過しない場合には、先頭で通過した移動体よりも小さい大きさに変形させるので、通過ポイントを早く通過するほど、ゲームの難易度を高くすることができる。つまり、ゲームの上級者と初級者とが同時にプレイする場合に、上級者はより高い難易度でプレイすることができ、初級者は上級者と白熱してプレイすることができるので、プレイヤの操作技量に拘わらずゲームへの満足感や楽しさを味わうことができる。
【０１０５】
なお、第１実施例では、通過ポイントを先頭で通過した場合には、所定の条件を満たすか否かで、異なる拡大率を設定するようにしたが、所定の条件を設定せずに、一定の拡大率を設定するようにしてもよい。かかる場合には、図９に示したステップＳ４３およびＳ４７の処理を削除すればよい。
【０１０６】
また、第１実施例では、通過ポイントを２番目以降に通過した場合であり、先頭との時間差が一定時間以上である場合には、一定の拡大率を設定するようにしたが、かかる限界値を設けずに、所定の演算式に従って拡大率を算出するようにしてもよい。かかる場合には、図９に示したステップＳ３５およびＳ３７の処理を削除すればよい。
【０１０７】
さらに、第１実施例では、移動体の長さを変形させることにより、同時にプレイするプレイヤのゲームの難易度を異ならせるようにしてあるが、移動体の回転速度を変化させるようにしてもよい。このようにしても、コース幅に対する移動体の大きさを変形させていると言うことができる。このような場合には、通過ポイントの通過時間が速いほど、移動体の回転速度を速くするようにすればよい。たとえば、コース幅が比較的狭い部分では、移動体の回転速度が速いと、当該部分を通過する場合には、回転のタイミングを計るのが難しく、コースの壁に衝突してしまう可能性が高くなるからである。つまり、移動体の回転速度が速い場合には、コース幅に対する移動体の相対的な大きさが大きくなる時間が長くなり、移動体の回転速度が遅い場合には、コース幅に対する移動体の相対な大きさが大きくなる時間が短くなる。
【０１０８】
また、第１実施例では、ビデオゲーム装置とモニタとが別個独立に設けられたゲームシステムについて説明したが、モニタが一体的に設けられたゲーム装置にも適用できることは言うまでもない。
＜第２実施例＞
第２実施例のゲームシステム１０は、一定時間毎に移動体７２の順位を検出し、順位に応じて決定される拡大率で移動体７２を変形させるようにした以外は第１実施例と同じであるため、重複する説明は省略することにする。
【０１０９】
たとえば、第２実施例では、一定時間毎に、各移動体７２のゴールまでの距離を算出し、各移動体７２の順位を決定する。図示は省略するが、第１実施例の図５に示したようなコースにおいては、そのコースの中央を通る仮想の線（点の集合）が設けられており、各点にはゴールからの距離が対応付けて記憶されている。ただし、仮想の線は、ゲーム画面としてモニタ３４に表示されることはない。ＣＰＵ３６は、仮想の線を構成する点のうち、移動体７２と最も近い点を当該移動体７２の位置に決定し、ゴールから当該位置までの距離に応じて、順位を決定する。図示は省略するが、決定した順位のデータ（順位データ）は、メインメモリ４０のバッファ領域に記憶（一時記憶）され、順位を決定する毎に書き換えられる。
【０１１０】
移動体７２の順位が決定されると、順位に応じた拡大率が設定される。たとえば、４人プレイでは、１位（先頭）の移動体７２の拡大率は１００％に設定され、２位の移動体７２の拡大率は８０％に設定され、３位の移動体７２の拡大率は６０％に設定され、４位の移動体７２の拡大率は５０％に設定される。また、３人プレイでは、１位の移動体７２の拡大率は１００％に設定され、２位の移動体７２の拡大率は８０％に設定され、３位の移動体７２の拡大率は５０％に設定される。さらに、２人プレイでは、１位の移動体７２の拡大率は８０％に設定され、２位の移動体７２の拡大率は５０％に設定される。
【０１１１】
ただし、これらの拡大率の数値は単なる例示であるため、競争ゲームの開発者やプログラマが任意に設定できる。また、プレイヤの人数に対応する拡大率のテーブルがメインメモリ４０に記憶されており、各テーブルは順位に対応して拡大率の数値が記述されている。そして、これらのテーブルは、たとえば、第１実施例に示した通過時間テーブル４０４ｄに変えて記憶される。
【０１１２】
このように、一定時間毎に検出される順位に応じて予め設定された拡大率に従って移動体７２は変形（長手方向の長さが変形）される。具体的には、第２実施例では、ＣＰＵ３６は、図８に示した全体処理のステップＳ５において、図１１に示すオブジェクト制御処理を実行する。なお、図示は省略するが、第２実施例では、先頭との時間差ΔＴに基づいて拡大率を決定することはないため、図８に示した全体処理においてステップＳ３の処理は削除される。また、ここでは、図９および図１０に示したオブジェクト制御処理と同じ処理については簡単に説明することにする。
【０１１３】
図１１を参照して、ＣＰＵ３６がオブジェクト制御処理を開始すると、ステップＳ６１で、操作データがあるかどうかを判断する。ステップＳ６１で“ＮＯ”であれば、そのままステップＳ６５に進む。一方、ステップＳ６１で“ＹＥＳ”であれば、ステップＳ６３で、操作データに基づいて移動後の座標を算出して、ステップＳ６５に進む。
【０１１４】
ステップＳ６５では、当該移動体７２の現在の順位を検出する。順位の検出方法は上述したとおりである。次のステップＳ６７では、順位に変動があるかどうかを判断する。ここでは、メインメモリ４０に一時記憶されている自身の順位（前回の順位）とステップＳ６５において検出した自身の順位（現在の順位）とを比較し、互いに不一致であるかどうかを判断する。
【０１１５】
ステップＳ６７で“ＮＯ”であれば、つまり前回の順位と今回の順位とが一致すれば、順位に変動がないと判断して、そのままステップＳ７３に進む。一方、ステップＳ６７で“ＹＥＳ”であれば、つまり前回の順位と今回の順位とが不一致であれば、順位に変動があると判断して、ステップＳ６９で、メインメモリ４０に一時記憶されている順位データを更新する。そして、ステップＳ７１で、順位に応じて予め決められた拡大率に基づいて、オブジェクトを長手方向に変形して、ステップＳ７３に進む。つまり、ステップＳ７１では、プレイヤの人数に応じた拡大率のテーブルを参照し、順位に応じた拡大率を決定（設定）して、当該拡大率に従って移動体７２を変形する。
【０１１６】
なお、第１実施例で述べたように、オブジェクト制御処理は各移動体７２について並列的に実行されているため、ステップＳ６５において自身の順位の変動のみを検出し、ステップＳ６９で自身の順位のみを更新すれば、結果的に全順位を更新することができるのである。
【０１１７】
ステップＳ７３では、予め決められた回転量に基づいて姿勢を決定する。そして、ステップＳ７５で、オブジェクト（移動体７２）をマップ上に配置するとともに、表示領域を更新して、オブジェクト制御処理をリターンする。
【０１１８】
なお、図８に示したように、ステップＳ５の処理は、一定時間（ステップＳ５、Ｓ７およびＳ９で構成されるループのスキャンタイム）毎に実行されるため、一定時間毎に検出される順位に従って、コース幅に対する移動体７２の大きさが変形されるのである。
【０１１９】
第２実施例によれば、一定時間毎に検出される順位に従って移動体７２の長さを変形させるので、コース幅に対する移動体の大きさを変形させることができる。したがって、第１実施例と同様の効果が得られる。
＜第３実施例＞
第３実施例のゲームシステム１０は、通過ポイント毎に移動体７２の相対位置を検出し、相対位置に応じてコース幅を変形させて、コース幅に対する移動体の大きさを変形させるようにした以外は第１実施例と同じであるため、重複した説明は省略する。
【０１２０】
第３実施例では、通過ポイントを先頭で通過した場合には、予め設定されている縮小率（掛け率）が設定される。この縮小率は、コース（背景オブジェクト）の幅を変形させる変形率であり、第１実施例と同様に、所定の条件に応じて、異なる値が設定される。所定の条件は、第１実施例で説明した条件と同様である。第３実施例では、通過ポイントを先頭で通過した場合には、縮小率を５０％に設定し、さらに、所定の条件を満たす場合には、縮小率を４０％に設定する。また、２番目以降の移動体７２では、先頭の通過時間との時間差ΔＴ（Ｔｘ−Ｔｆ）に基づいて算出される縮小率が設定される。具体的には、数２に従って縮小率は算出される。ただし、デフォルトのコース幅を１（１００％）とした場合の縮小率が算出されるのである。なお、時間差ΔＴが８秒以上である場合に、コース幅の縮小率を１００％にするのは、第１実施例で拡大率を一定値にした場合と同様の理由である。
【０１２１】
[数２]
縮小率（％）＝５０＋（Ｔｘ−Ｔｆ）÷８×５０  （Ｔｘ−Ｔｆ＜８）
縮小率（％）＝１００  （Ｔｘ−Ｔｆ≧８）
このように、数２に従った設定された縮小率に従ってコース幅を変形させることにより、先頭の移動体７２ほどコース幅が狭くなるようにしてある。
【０１２２】
なお、この第３実施例では、コース幅のデフォルト値を基準にして、コース幅を縮小するようにしてあるため、説明の便宜上、変形率を縮小率と呼ぶことにしてある。ただし、コース幅は、一旦縮小された後に、その縮小率よりも数値が大きい縮小率で縮小された場合には、拡大したように見える。
【０１２３】
たとえば、図１２には、４人で競争ゲームをプレイする場合のゲーム画面７０の一例が示される。このゲーム画面７０では、１Ｐ用，２Ｐ用，３Ｐ用および４Ｐ用の表示領域がそれぞれ設けられ、各表示領域は第１実施例で説明したように配置される。図１２に示すゲーム画面７０では、２Ｐの移動体７２ｂが或る通過ポイントを先頭で通過し、２番目に１Ｐの移動体７２ａが当該通過ポイントを通過し、３番目に４Ｐの移動体７２ｄが当該通過ポイントを通過し、４番目に３Ｐの移動体７２ｃが当該通過ポイントを通過した様子を示してある。つまり、通過ポイントを早く通過した移動体７２が通過するコース幅が他の移動体７２が通過するコース幅よりも狭くされる。
【０１２４】
なお、図１２においては、コースは斜線部で示される上下の壁で挟まれる領域で形成される。したがって、コース幅は、上下の壁の大きさで決定される。
【０１２５】
また、図示は省略するが、予め用意されているコース（デフォルトのコース）上に障害物が存在する場合には、コース幅を狭くした後に、当該コース上に障害物が配置されることになる。この点で、コース幅は、移動体７２が通過可能な幅と言うこともできる。
【０１２６】
このような第３実施例では、メインメモリ４０に記憶されるオブジェクト変形率算出プログラム４０２ｉは、先頭で通過ポイントを通過したプレイヤオブジェクトの通過時間と自身が当該通過ポイントを通過した通過時間とに基づいて、自身が通過するコース幅の縮小率を算出するためのプログラムである。
【０１２７】
また、第３実施例では、メインメモリ４０に記憶されるオブジェクト変形率設定プログラム４０２ｊは、先頭で通過ポイントを通過したプレイヤオブジェクトが通過するコース幅の縮小率を所定の条件に応じて設定するためのプログラムである。
【０１２８】
さらに、第３実施例では、メインメモリ４０に記憶されるオブジェクト変形プログラム４０２ｋは、オブジェクト変形率算出プログラム４０２ｉまたはオブジェクト変形率設定プログラム４０２ｊによって、算出ないし設定された縮小率に従って、該当するプレイヤオブジェクトのコース幅を変形させるためのプログラムである。
【０１２９】
なお、これら以外のプログラムは、第１実施例で説明した通りであるため、重複した説明は省略する。
【０１３０】
具体的には、第３実施例では、ＣＰＵ３６は、図８に示した全体処理のステップＳ５において、図１３および図１４に示すオブジェクト制御処理を実行する。なお、第３実施例のオブジェクト制御処理は、第１実施例のオブジェクト制御処理とほぼ同じであるため、同じ処理については簡単に説明することにする。
【０１３１】
図１３を参照して、ＣＰＵ３６はオブジェクト制御処理を開始すると、ステップＳ８１で、操作データが有るかどうかを判断する。ステップＳ８１で“ＮＯ”であれば、そのまま図１４に示すステップＳ１１１に進む。一方、ステップＳ８１で“ＹＥＳ”であれば、ステップＳ８３で、操作データに基づいて当該移動体７２の移動後の座標を算出する。次のステップＳ８５では、通過ポイントを通過したかどうかを判断する。
【０１３２】
ステップＳ８５で“ＮＯ”であれば、そのままステップＳ１１１に進む。しかし、ステップＳ８５で“ＹＥＳ”であれば、ステップＳ８７で、通過した通過ポイントの番号を一時記憶する。そして、ステップＳ８９で、既に本（当該）通過ポイントを通過しているオブジェクト（移動体７２）が存在するかどうかを判断する。
【０１３３】
ステップＳ８９で“ＹＥＳ”であれば、ステップＳ９１で、現通過時間Ｔｘをタイマから取得し、ステップＳ９３で、先頭の通過時間Ｔｆとの時間差ΔＴを算出する。そして、ステップＳ９５で、時間差ΔＴが８秒以上であるかどうかを判断する。ステップＳ９５で“ＹＥＳ”であれば、ステップＳ９７で、縮小率を１００％に設定して、図１４に示すステップＳ１０９に進む。しかし、ステップＳ９５で“ＮＯ”であれば、ステップＳ９９で、ΔＴに基づいて所定の演算式（数２）により縮小率を算出して、ステップＳ１０９に進む。
【０１３４】
一方、ステップＳ８９で“ＮＯ”であれば、ステップＳ１０１で、通過時間Ｔｆを取得および記憶し、ステップＳ１０３で、他の移動体７２から１区間以上離れているかどうかを判断する。ステップＳ１０３で“ＮＯ”であれば、ステップＳ１０５で、縮小率を５０パーセントに設定し、ステップＳ１０９に進む。しかし、ステップＳ１０３で“ＹＥＳ”であれば、ステップＳ１０７で、縮小率を４０％に設定して、ステップＳ１０９に進む。
【０１３５】
図１４に示すように、ステップＳ１０９では、縮小率に基づいてコース幅を変形する。そして、ステップＳ１１１で、予め決められた回転量に基づいて姿勢を決定し、ステップＳ１１３で、オブジェクト（移動体７２）をマップ上に配置するとともに、表示領域を更新して、オブジェクト制御処理をリターンする。
【０１３６】
第３実施例によれば、通過ポイントを早く通過した移動体ほどコース幅が狭くなるようにするので、コース幅に対する移動体の大きさを変形させることができ、第１実施例と同様の効果を得ることができる。
【０１３７】
なお、第３実施例では、通過ポイントを先頭で通過した場合には、所定の条件を満たすか否かで、異なる縮小率を設定するようにしたが、所定の条件を設定せずに、一定の縮小率を設定するようにしてもよい。かかる場合には、図１３に示したステップＳ１０３およびＳ１０７の処理を削除すればよい。
【０１３８】
また、第３実施例では、通過ポイントを２番目以降に通過した場合であり、先頭との時間差が一定時間以上である場合には、一定の縮小率を設定するようにしたが、かかる限界値を設けずに、所定の演算式に従って縮小率を算出するようにしてもよい。かかる場合には、図１３に示したステップＳ９５およびＳ９７の処理を削除すればよい。
【０１３９】
さらに、詳細な説明は省略するが、第２実施例に示した場合と同様に、順位に応じたコース幅の縮小率のテーブルを用意しておき、一定時間毎に順位を判別して、順位に応じてコース幅を変形させるようにしてもよい。
【０１４０】
なお、上述の実施例では、移動体のみを変形させたり、コース幅のみを変形させたりしたが、移動体およびコース幅の両方を変形させるようにしてもよい。
【図面の簡単な説明】
【０１４１】
【図１】図１はこの発明の第１実施例のゲームシステムを示す図解図である。
【図２】図２は図１に示すゲームシステムの電気的な構成を示すブロック図である。
【図３】図３は図２に示すメインメモリのメモリマップを示す図解図である。
【図４】図４は図１に示すモニタに表示されるゲーム画面の一例およびゲームにおける移動体の動作例を示す図解図である。
【図５】図５は図１に示すビデオゲーム装置で生成される仮想３次元空間に展開されるコースおよびコースを移動する移動体の一例を示す図解図である。
【図６】図６は図４および図５に示す移動体の大きさの変形例を示す図解図である。
【図７】図７は図２に示すメインメモリに記憶される通過時間テーブルの一例を示す図解図である。
【図８】図８は図２に示すＣＰＵのゲーム全体処理を示すフロー図である。
【図９】図９は図２に示すＣＰＵのオブジェクト制御処理の一部を示すフロー図である。
【図１０】図１０は図９に示すフロー図に後続するオブジェクト制御処理の他の一部を示すフロー図である。
【図１１】図１１は第２実施例におけるＣＰＵのオブジェクト制御処理を示すフロー図である。
【図１２】図１２は第３実施例におけるゲーム画面の例を示す図解図である。
【図１３】図１３は第３実施例におけるＣＰＵのオブジェクト制御処理の一部を示すフロー図である。
【図１４】図１４は図１３に示すフロー図に後続するオブジェクト制御処理の他の一部を示すフロー図である。
【符号の説明】
【０１４２】
１０  …ゲームシステム
１２  …ビデオゲーム装置
１８  …光ディスク
２２  …コントローラ
３４  …モニタ
３４ａ  …スピーカ
３６  …ＣＰＵ
３８  …メモリコントローラ
４０  …メインメモリ
４２  …ＧＰＵ
５２  …ＤＳＰ
５４  …ＡＲＡＭ
６２  …オーディオＩ／Ｆ
【図１】
2006081753.tif 000003
【図２】
2006081753.tif 000004
【図３】
2006081753.tif 000005
【図４】
2006081753.tif 000006
【図５】
2006081753.tif 000007
【図６】
2006081753.tif 000008
【図７】
2006081753.tif 000009
【図８】
2006081753.tif 000010
【図９】
2006081753.tif 000011
【図１０】
2006081753.tif 000012
【図１１】
2006081753.tif 000013
【図１２】
2006081753.tif 000014
【図１３】
2006081753.tif 000015
【図１４】
2006081753.tif 000016