(57)【要約】【課題】プレイヤに対してより違和感を与えないようにしながら、初心者プレイヤでも上手にコースを走行させてレースゲームを楽しませることが可能なゲームプログラム等を提供すること【解決手段】仮想空間内の所定のコース内において所定のオブジェクトをプレイヤの操作に基づいて移動させるゲーム処理において、まず、プレイヤの操作に基づいた所定のオブジェクトの移動方向を制御するための入力にかかる入力量を取得する。次に、所定のオブジェクトの現在の移動方向と、所定のコースにおける目的地へ向かう方向である進行方向との関係に基づいて、移動方向を制御するための入力にかかる入力量に所定の補正値を増減させることで、所定のオブジェクトの移動方向がコースの進行方向に沿った方向に近づくように当該入力量を補正する。そして、補正後の上記入力量に基づいて、所定のオブジェクトの移動を制御する。【選択図】図１６
2018064767.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間内の所定のコース内において所定のオブジェクトをプレイヤの操作に基づいて移動させるゲーム処理を実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記プレイヤの操作に基づいた前記所定のオブジェクトの移動方向を制御するための入力にかかる入力量を取得する移動制御入力量取得ステップと、
前記所定のオブジェクトの現在の移動方向と、前記所定のコースにおける目的地へ向かう方向である進行方向との関係に基づいて、前記移動方向を制御するための入力にかかる入力量に所定の補正値を増減させることで、前記所定のオブジェクトの移動方向が前記コースの進行方向に沿った方向に近づくように当該入力量の補正制御を行う、補正処理ステップと、
前記補正された前記移動方向を制御するための入力にかかる入力量に基づいて、前記仮想空間内における前記所定のオブジェクトの移動を制御する移動制御ステップと、を前記コンピュータに実行させる、ゲームプログラム。
【請求項２】
前記ゲームプログラムは、前記コースの幅方向軸における両端の位置を示す端データを取得する端データ取得ステップを更に前記コンピュータに実行させ、
前記補正処理ステップでは、前記端データに基づいて前記コースの進行方向を算出し、当該算出した進行方向と前記所定のオブジェクトの現在の移動方向との関係に基づいて前記補正値を決定する、請求項１に記載のゲームプログラム。
【請求項３】
前記ゲームプログラムは、前記コースの一部分に対応し、進行可能な箇所であることを示すパスの情報を複数含むパスデータと、当該複数のパスに基づき構成される進行可能路の幅を示す幅データとを所定の記憶部から取得するパス・幅データ取得ステップを更に実行させ、
前記端データ取得ステップでは、前記パスデータと幅データとに基づいて、前記所定のオブジェクトの位置を基準とした所定範囲内のコースにおける端の位置を算出することで前記端データを取得する、請求項２に記載のゲームプログラム。
【請求項４】
前記コースは、途中で分岐するルートを有しており、
前記パスデータには、分岐点となるコース上の位置に対応する前記パスである分岐パスの情報が含まれており、
前記ゲームプログラムは、前記分岐パスに対応するコース上の位置に前記所定のオブジェクトが存在するとき、当該オブジェクトの進行方向側にかかる複数のパスのうちからいずれか１つのパスを、そのときの当該オブジェクトの移動方向に基づいて選択する分岐先選択ステップを更に実行させ、
前記端データ取得ステップでは、前記選択したパスに基づいて前記端の位置を算出する、請求項３に記載のゲームプログラム。
【請求項５】
前記分岐するルートの少なくとも一部は、前記所定のオブジェクトが所定の条件を満たしている状態であるときに進行可能となるルートである、請求項４に記載のゲームプログラム。
【請求項６】
前記補正処理ステップでは、前記コースの幅方向軸における両端のうち前記所定のオブジェクトに近いほうの端から、当該所定オブジェクトまでの距離に基づいて、前記補正値を決定する、請求項２に記載のゲームプログラム。
【請求項７】
前記補正処理ステップでは、前記コースの道幅方向軸における両端のうち前記所定のオブジェクトに近いほうの端における前記進行方向と、所定のオブジェクトの移動方向とが為す角度に基づいて、前記補正値を決定する、請求項２に記載のゲームプログラム。
【請求項８】
前記ゲームプログラムは、前記コースの道幅方向軸における両端のうち前記所定のオブジェクトに近いほうの端にかかる進行方向とは垂直な方向で、かつ、コースの内側方向に向けた加速度を、前記所定のオブジェクトに更に加える、追加移動ステップを更に前記コンピュータに実行させ、
前記移動制御ステップは、前記補正された前記移動方向を制御するための入力にかかる入力量と、前記追加移動ステップで加えられた加速度とに基づいて、前記所定のオブジェクトの移動を制御する、請求項２に記載のゲームプログラム。
【請求項９】
前記追加移動ステップは、前記所定のオブジェクトと当該所定のオブジェクトに近いほうの端との間の距離に応じて、当該所定のオブジェクトに加える加速度の大きさを決定する、請求項８に記載のゲームプログラム。
【請求項１０】
前記補正処理ステップでは、前記所定のオブジェクトの現在の移動方向と前記進行方向との関係に加えて、前記プレイヤの操作に基づいた前記所定のオブジェクトの移動方向を制御するための入力とに基づいて、前記補正量を決定する、請求項１に記載のゲームプログラム。
【請求項１１】
前記補正処理ステップは、前記コースの道幅方向軸における両端のいずれか一方から所定範囲内に前記所定のオブジェクトが存在する場合に実行される、請求項１に記載のゲームプログラム。
【請求項１２】
前記ゲーム処理は、レース用のゲームプログラムであり、
前記所定のオブジェクトの移動方向を制御するための入力は、ハンドルの操作入力である、請求項１に記載のゲームプログラム。
【請求項１３】
前記移動制御入力量取得ステップは、自身に加えられた動きを検出するための動きセンサを有するコントローラから出力された、当該コントローラ自身に加えられた動きを示す値に基づいて、前記入力量を算出する、請求項１に記載のゲームプログラム。
【請求項１４】
仮想空間内の所定のコース内において所定のオブジェクトをプレイヤの操作に基づいて移動させるゲーム処理を実行するゲーム装置のコンピュータを制御するためにゲーム処理方法であって、
前記プレイヤの操作に基づいた前記所定のオブジェクトの移動方向を制御するための入力にかかる入力量を取得する移動制御入力量取得ステップと、
前記所定のオブジェクトの現在の移動方向と、前記所定のコースにおける目的地へ向かう方向である進行方向との関係に基づいて、前記移動方向を制御するための入力にかかる入力量に所定の補正値を増減させることで、前記所定のオブジェクトの移動方向が前記コースの進行方向に沿った方向に近づくように当該入力量の補正制御を行う、補正処理ステップと、
前記補正された前記移動方向を制御するための入力にかかる入力量に基づいて、前記仮想空間内における前記所定のオブジェクトの移動を制御する移動制御ステップとを前記コンピュータに実行させる、ゲーム処理方法。
【請求項１５】
所定のコントローラに対するプレイヤの操作に基づいて、仮想空間内の所定のコース内において所定のオブジェクトを移動させるゲーム処理を実行するゲーム装置であって、
前記プレイヤの操作に基づいた前記所定のオブジェクトの移動方向を制御するための入力にかかる入力量を取得する移動制御入力量取得部と、
前記所定のオブジェクトの現在の移動方向と、前記所定のコースにおける目的地へ向かう方向である進行方向との関係に基づいて、前記移動方向を制御するための入力にかかる入力量に所定の補正値を増減させることで、前記所定のオブジェクトの移動方向が前記コースの進行方向に沿った方向に近づくように補正制御を行う補正処理部と、
前記補正された前記移動方向を制御するための入力にかかる入力量に基づいて、前記仮想空間内における前記所定のオブジェクトの移動を制御する移動制御部とを備える、ゲーム装置。
【請求項１６】
前記所定のコントローラは、コントローラ自身に加えられた動きを検出するための動きセンサを備えており、
前記移動制御入力量取得部は、前記動きセンサにより検出された前記コントローラ自身に加えられた動きに基づいて前記入力量を算出する、請求項１５に記載のゲーム装置。
【請求項１７】
所定のコントローラに対するプレイヤの操作に基づいて、仮想空間内の所定のコース内において所定のオブジェクトを移動させるゲーム処理を実行するゲームシステムであって、
前記プレイヤの操作に基づいた前記所定のオブジェクトの移動方向を制御するための入力にかかる入力量を取得する移動制御入力量取得部と、
前記所定のオブジェクトの現在の移動方向と、前記所定のコースにおける目的地へ向かう方向である進行方向との関係に基づいて、前記移動方向を制御するための入力にかかる入力量に所定の補正値を増減させることで、前記所定のオブジェクトの移動方向が前記コースの進行方向に沿った方向に近づくように補正制御を行う補正処理部と、
前記補正された前記移動方向を制御するための入力にかかる入力量に基づいて、前記仮想空間内における前記所定のオブジェクトの移動を制御する移動制御部とを備える、ゲームシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲーム処理に関し、より特定的には、仮想空間内の所定のコース内において所定のオブジェクトをプレイヤの操作に基づいて移動させるゲーム処理に関する。
【背景技術】
【０００２】
従来から、レースゲームにおいて、ゲーム操作に不慣れな初心者プレイヤのゲーム操作（運転操作）、特に速度操作入力に該当するアクセル操作やブレーキ操作を自動的に補正して運転操作を補助する技術が知られている（例えば、特許文献１、２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１９５００２号公報
【特許文献２】特開２００４−２３６７９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のような技術では、例えば自車がコーナーを曲がる際に、初心者は、ハンドル操作に意識が集中して、アクセル操作やブレーキ操作が疎かになり易いという観点から、速度超過とならないようにブレーキ量の操作補正を行い、自車の速度そのものに補正を加えていた。しかし、このような速度を直接制御する手法では、補正の制御が行われたことをプレイヤに感じとられやすいという側面があった。すなわち、プレイヤに対して違和感を与えやすいという側面があった。
【０００５】
それ故に、本発明の目的は、プレイヤに対してより違和感を与えないようにしながら、初心者プレイヤでも上手にコースを走行させてレースゲームを楽しませることが可能なゲームプログラム等を提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【０００７】
構成例の一例は、仮想空間内の所定のコース内において所定のオブジェクトをプレイヤの操作に基づいて移動させるゲーム処理を実行するゲーム装置のコンピュータに実行させるゲームプログラムであって、移動制御入力量取得ステップと、補正処理ステップと、移動制御ステップとをコンピュータに実行させる。移動制御入力量取得ステップでは、プレイヤの操作に基づいた所定のオブジェクトの移動方向を制御するための入力にかかる入力量を取得する。補正処理ステップでは、所定のオブジェクトの現在の移動方向と、所定のコースにおける目的地へ向かう方向である進行方向との関係に基づいて、移動方向を制御するための入力にかかる入力量に所定の補正値を増減させることで、所定のオブジェクトの移動方向がコースの進行方向に沿った方向に近づくように当該入力量の補正制御を行う。そして、移動制御ステップでは、補正された移動方向を制御するための入力にかかる入力量に基づいて、仮想空間内における所定のオブジェクトの移動を制御する。
【０００８】
上記構成例によれば、例えばレースゲームにおいて、レースゲームがあまり上手くないプレイヤであっても、プレイヤに違和感を与えずに、プレイヤのハンドル操作（移動方向を制御するための入力）をサポートし、ゲームの興趣性を高めることができる。
【０００９】
他の構成例として、ゲームプログラムは、コースの幅方向軸における両端の位置を示す端データを取得する端データ取得ステップを更にコンピュータに実行させてもよい。そして、補正処理ステップでは、端データに基づいてコースの進行方向を算出し、当該算出した進行方向と所定のオブジェクトの現在の移動方向との関係に基づいて補正値を決定してもよい。
【００１０】
上記構成例によれば、コースの端の位置とコースの進行方向とに基づいた補正を行うことができ、例えばコースアウトしそうな場合は強めの補正を行うことでコースアウトを防止すると共に、そうではない場合は、プレイヤに違和感を与えない程度の弱い補正を行うことで、ゲームの興趣性を高めることができる。
【００１１】
他の構成例として、ゲームプログラムは、コースの一部分に対応し、進行可能な箇所であることを示すパスの情報を複数含むパスデータと、当該複数のパスに基づき構成される進行可能路の幅を示す幅データとを所定の記憶部から取得するパス・幅データ取得ステップを更に実行させてもよい。そして、端データ取得ステップでは、パスデータと幅データとに基づいて、所定のオブジェクトの位置を基準とした所定範囲内のコースにおける端の位置を算出することで端データを取得してもよい。また、上記コースは、途中で分岐するルートを有していてもよく、パスデータには、分岐点となるコース上の位置に対応するパスである分岐パスの情報が含まれていてもよい。そして、ゲームプログラムは、分岐パスに対応するコース上の位置に所定のオブジェクトが存在するとき、当該オブジェクトの進行方向側にかかる複数のパスのうちからいずれか１つのパスを、そのときの当該オブジェクトの移動方向に基づいて選択する分岐先選択ステップを更に実行させてもよい。そして、端データ取得ステップでは、選択したパスに基づいて端の位置を算出してもよい。更には、分岐するルートの少なくとも一部は、所定のオブジェクトが所定の条件を満たしている状態であるときに進行可能となるルートであってもよい。例えば所定のオブジェクトが所定のアイテムを所持している状態である場合にのみ、分岐するルートが出現するようにしてもよい。
【００１２】
上記構成例によれば、例えばプレイヤオブジェクトの周辺にかかるコースの構成をリアルタイムで把握することができる。これにより、例えば隠しルートが急に出現する等の場合を想定した柔軟な処理が実行でき、また、レースコースにより多彩なギミックを設定しやすくなり、ゲームの興趣性高めることができる。
【００１３】
他の構成例として、補正処理ステップでは、コースの幅方向軸における両端のうち所定のオブジェクトに近いほうの端から、当該所定オブジェクトまでの距離に基づいて、補正値を決定してもよい。また、補正処理ステップでは、コースの道幅方向軸における両端のうち所定のオブジェクトに近いほうの端における進行方向と、所定のオブジェクトの移動方向とが為す角度に基づいて、補正値を決定するようにしてもよい。また、補正処理ステップでは、所定のオブジェクトの現在の移動方向と進行方向との関係に加えて、プレイヤの操作に基づいた所定のオブジェクトの移動方向を制御するための入力とに基づいて（例えば、ハンドル操作入力を考慮して）補正量を決定してもよい。更に、補正処理ステップは、コースの道幅方向軸における両端のいずれか一方から所定範囲内に所定のオブジェクトが存在する場合に実行されるようにしてもよい。
【００１４】
上記構成例によれば、例えばコースアウトの危険性が高いときほど強い補正を行い、その危険性が低い場合は弱めの補正を行う、というような、コースの端を意識した補正処理や、所定のオブジェクトのその時々の状況に応じた細やかな補正処理を行うことができる。
【００１５】
他の構成例として、ゲームプログラムは、コースの道幅方向軸における両端のうち所定のオブジェクトに近いほうの端にかかる進行方向とは垂直な方向で、かつ、コースの内側方向に向けた加速度を、所定のオブジェクトに更に加える追加移動ステップをコンピュータに実行させてもよい。そして、移動制御ステップは、補正された移動方向を制御するための入力にかかる入力量と、追加移動ステップで加えられた加速度とに基づいて、所定のオブジェクトの移動を制御してもよい。また、追加移動ステップは、所定のオブジェクトと当該所定のオブジェクトに近いほうの端との間の距離に応じて、当該所定のオブジェクトに加える加速度の大きさを決定してもよい。
【００１６】
上記構成例によれば、移動方向を制御するための入力にかかる入力量の補正に加えて更に所定のオブジェクトの移動に補正を行うため、例えばコースアウトの防止をより効果的に行うことができる。
【００１７】
他の構成例として、ゲーム処理は、レース用のゲームプログラムであり、所定のオブジェクトの移動方向を制御するための入力は、ハンドルの操作入力であってもよい。
【００１８】
上記構成例によれば、レースゲームの興趣性を更に高めることができる。
【００１９】
また、他の構成例として、移動制御入力量取得ステップでは、自身に加えられた動きを検出するための動きセンサを有するコントローラから出力された、当該コントローラ自身に加えられた動きを示す値に基づいて、上記所定のオブジェクトの移動方向を制御するための入力にかかる入力量を算出してもよい。
【００２０】
上記構成例によれば、コントローラ自身を動かすことで、例えばハンドル操作の臨場感を高めることができる。同時に、このようなコントローラ自身の動きや姿勢を利用する場合、プレイヤの操作の難易度が高くなる傾向もあるところ、上記補正制御による補正はより効果的に機能し、レースゲームの興趣性を更に高めることができる。
【発明の効果】
【００２１】
本実施形態によれば、例えばレースゲームがあまり上手くないプレイヤに対しても、プレイヤに違和感を与えることを抑えながらコースを上手く走らせることができ、ゲームの興趣性を高めることができる。特に、このようなプレイヤが上手くコースを走行できている間は違和感を与えないようにしながら、例えばコースアウトしそうな状態になれば、強めの補正を行ってコースアウトすることを防止し、コースを上手く走行している状態を継続させることができる。
【図面の簡単な説明】
【００２２】
【図１】本実施形態にかかるゲームシステムの機能ブロック図
【図２】コントローラ６の外観を示す正面図
【図３】コントローラ６の構成を示す機能ブロック図
【図４】ハンドルコントローラの一例を示す図
【図５】他のコントローラの一例を示す図
【図６】他のコントローラの一例を示す図
【図７】携帯型ゲーム装置の一例を示す図
【図８】本実施形態に係るゲーム画面の一例
【図９】ゲーム装置本体３のメインメモリ１２に格納されるプログラムおよび情報の一例
【図１０】パスの概念を説明するための図
【図１１】パスの概念を説明するための図
【図１２】パスの概念を説明するための図
【図１３】コースの分岐に関して説明するための図
【図１４】コースの分岐に関して説明するための図
【図１５】コースの分岐に関して説明するための図
【図１６】ハンドルアシスト処理の詳細を示すフローチャート
【図１７】アシスト処理用コース情報３０８の一例
【図１８】パス決定処理で行われる処理の概要を説明するための図
【図１９】パス決定処理で行われる処理の概要を説明するための図
【図２０】パス決定処理で行われる処理の概要を説明するための図
【図２１】パス決定処理の詳細を示すフローチャート
【図２２】アシスト処理の詳細を示すフローチャート
【図２３】コースアウト防止処理の概要を説明するための図
【図２４】コースアウト防止処理の詳細を示すフローチャート
【図２５】予測ハンドル処理で行われる処理の概要を説明するための図
【図２６】予測ハンドル処理で行われる処理の概要を説明するための図
【図２７】ハンドル入力値の補正量について説明するための図
【図２８】予測ハンドル処理が行われる場合について説明するための図
【図２９】予測ハンドル処理の詳細を示すフローチャート
【図３０】基本アシスト処理の処理概要を説明するための図
【図３１】基本アシスト処理の詳細を示すフローチャート
【図３２】コース向き揃え処理の概要を説明するための図
【図３３】コース向き揃え処理の概要を説明するための図
【図３４】コース向き揃え処理の詳細を示すフローチャート
【発明を実施するための形態】
【００２３】
以下、本発明の一実施形態について説明する。
【００２４】
図１は、本実施形態にかかるゲームシステムの機能ブロック図である。図１において、ゲームシステム１は、表示手段の一例である家庭用テレビジョン受像機（以下、モニタと記載する）２と、モニタ２に図示しない接続コードを介して接続する据置型のゲーム装置本体３と、当該ゲーム装置本体３と無線接続可能なコントローラ６とを含む。
【００２５】
モニタ２は、ゲーム装置本体３から出力されるゲーム画像を表示する。
【００２６】
ゲーム装置本体３は、当該ゲーム装置本体３で読み取り可能な所定の記憶媒体（例えばメモリーカード、光ディスク、ハードディスク等）に記憶されたゲームプログラム等に基づいてゲーム処理等を実行する。本実施形態においては、ゲーム装置本体３はプロセッサ部１１、メインメモリ１２、システムＬＳＩ１３、無線通信部１４およびＡＶ−ＩＣ（Ａｕｄｉｏ  Ｖｉｄｅｏ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１５等を有する。
【００２７】
プロセッサ部１１は、メインメモリ１２やシステムＬＳＩ１３等を用いて所定の情報処理プログラムを実行する。これにより、ゲーム装置本体３における各種機能（例えば、ゲーム処理）が実現される。
【００２８】
システムＬＳＩ１３には、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１６、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１７、入出力プロセッサ１８、等が含まれる。
【００２９】
ＧＰＵ１６は、プロセッサ部１１からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＤＳＰ１７は、オーディオプロセッサとして機能し、メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。入出力プロセッサ１８は、無線通信部１４を介して、コントローラ６との間でデータの送受信を実行したりする。具体的には、入出力プロセッサ１８は、上記無線通信部１４を介して、コントローラ６から送信される操作データ等を受信し、メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００３０】
また、ゲーム装置本体５において生成される画像および音声のうち、モニタ２に出力される画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、図示しないＡＶコネクタを介して、読み出した画像データをモニタ２に出力するとともに、読み出した音声データをモニタ２に内蔵されるスピーカに出力する。
【００３１】
コントローラ６は、当該コントローラ６に対して行われた操作の内容を示す操作データをゲーム装置本体３に送信するものである。ここで、図２〜図３を参照して、本実施形態で用いられるコントローラ６について説明する。図２は、コントローラ６の外観を示す正面図である。コントローラ６は、左右にグリップ部１０３Ｌ、１０３Ｒ（以下、総称してグリップ部１０３と呼ぶこともある）を備えるハウジング６１と、ハウジング１０２の表面上に設けられた開口部から突出する第１アナログスティック６３および第２アナログスティック６４、および複数個の操作ボタンを含むデジタルボタン部とから構成される。当該デジタルボタン部には、十字キー６５と、第１種操作ボタン６６Ａ〜６６Ｄ、第２種操作ボタン６７Ａ〜６７Ｃ、Ｌボタン６８Ｌ、Ｒボタン６８Ｒ、電源ボタン６９とが含まれる。第１種操作ボタン６６Ａ〜６６Ｄには、当該コントローラ６が接続されたゲーム装置本体３が実行するゲームプログラムに応じた機能が適宜割り当てられる（なお、Ｌボタン６８Ｌ、Ｒボタン６８Ｒも同様に、ゲームプログラムに応じた機能が適宜割り当てられる）。例えば、操作ボタン６６Ａ〜６６Ｄは、後述するレースゲームにおいて、自車オブジェクトのアクセル操作やブレーキ操作等に用いられる。また、第２種操作ボタン６７Ａ〜６７Ｃは、例えば、ゲーム装置のシステムが直接的に制御を行うような機能が割り当てられる。一例を挙げると、ホームボタンやスタートボタン、セレクトボタンとして用いられる。
【００３２】
また、第１アナログスティック６３および第２アナログスティック６４は、無操作状態である中立状態を中心として、平面内の任意の方向（３６０度内の任意の方向）に傾けて操作することが可能なジョイスティックであり、当該任意の方向を指示（入力）するために用いられる。なお、本実施形態では、第１アナログスティック６３が後述するレースゲームにおけるステアリング操作のために用いられる。
【００３３】
次に、図３を参照して、コントローラ６の内部構成について説明する。図３は、コントローラ６の構成を示す機能ブロック図である。図３において、コントローラ６は、通信部７５と、デジタルボタン部７２と、アナログスティック部７３とを備えている。また、これらの構成部はそれぞれ電気的に接続されている。
【００３４】
デジタルボタン部７２は、上述した第１種操作ボタン６６Ａ〜６６Ｄ、第２種操作ボタン６７Ａ〜６７Ｃ、Ｌボタン６８Ｌ、Ｒボタン６８Ｒ、電源ボタン６９に対する入力状態（各操作ボタンが押下されたか否か）を示す信号を通信部７５のマイコン７５１へ出力する。
【００３５】
また、アナログスティック部７３は、上述の第１アナログスティック６３および第２アナログスティック６４に対する入力状態を示す信号を通信部７５のマイコン７５１へ出力する。アナログスティック部７３は、それぞれのアナログスティックに対する入力信号を多段階に、例えば、ある方向への方向入力を２５６段階で検知できる。例えば、ニュートラルポジション（無操作状態である中立状態）が０、ある方向に最大までスライドさせた状態を２５５とし、その傾き具合を示す信号をマイコン７５１に出力可能である。
【００３６】
通信部７５は、マイコン７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理を行う際にメモリ７５２を記憶領域として用いながら、デジタルボタン部７２、アナログスティック部７３から取得した上記信号に基づいて操作データを生成する。そして、無線モジュール７５３を制御して、当該操作データをゲーム装置本体３へ無線送信する。
【００３７】
なお、以下の説明では、後述するレースゲームにおける自車オブジェクトの操作を行うコントローラの一例として、上述のようなコントローラ６を例に説明するが、自車オブジェクトの操作に用いるコントローラについては、上記のものに限るものではない。他の実施形態では、例えば、加速度センサや角速度センサや慣性センサ等の動き検出用センサを内蔵したコントローラを用いても良い。この場合は、例えばコントローラ自体の傾き（姿勢）を検出して、これを操作データ（ハンドル操作）として用いれば良い。例えば、図４に示すような、ハンドル型の形状を模したコントローラを用いても良い。当該ハンドルコントローラには上記の動き検出用センサが内蔵されており、これに基づき当該ハンドルコントローラの傾きを検出し、これを操作データとして用いれば良い。
【００３８】
また、例えば、図５に示すような形状のコントローラ８を用いても良い。図５は、コントローラ８を正面後方から見た斜視図である。図５におけるコントローラ８は、ハウジング８１と、当該ハウジング８１の表面に設けられた複数個の操作ボタンで構成される操作部とを備える。当該ハウジング８１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。また、当該コントローラ８は、上記のような動き検出用センサも内蔵している。このようなコントローラ８を、横長の姿勢にして両手で把持し、ハンドルを模した操作を行ってもよい。
【００３９】
また、その他、図６に示すような、表示装置を有するコントローラ９を用いても良い。
コントローラ９は、例えばプラスチック成型によって形成されたハウジング９１を有している。また、コントローラ９は、操作部として、２本のアナログスティック９２や、十字キーや複数の操作ボタン等を備える。また、コントローラ９は動き検出センサも備える。プレイヤは、コントローラ９に設けられた各ボタンを押下することや、あるいは、コントローラ９自体を動かしてその位置や姿勢を変えることによって、ハンドル操作を行うことができる。
【００４０】
また、上記のような据え置き型ゲームシステムの他、図７に示すような、携帯型ゲーム装置（コントローラとゲーム装置が一体化したもの）であっても、本実施形態で説明する処理は適用可能である。また、このような携帯型ゲーム装置は、上記のような動き検出センサを内蔵していてもよい。
【００４１】
次に、本実施形態にかかる情報処理システムで実行される情報処理（各携帯ゲーム１０で実行される情報処理）の動作概要を説明する。本実施形態では、レースゲームを例として説明する。図８は、本実施形態に係るゲーム画面の一例である。本レースゲームでは、仮想３次元空間を仮想カメラで撮影したゲーム画像が表示される。図８では、自車オブジェクト１０１が表示されている。プレイヤは、上記コンロトーラ６を用いて、当該自車オブジェクト１０１の操作を行う。なお、本ゲームでは、基本的には、いわゆるＴＰＳ視点での画像が表示されるが、所定の操作でＦＰＳ視点での画像に切り替え可能としてもよい。
【００４２】
自車オブジェクト１０１の操作に関して説明する。本実施形態では、上記コントローラ６の第１アナログスティック６３を用いて、自車オブジェクト１０１のハンドル操作（ステアリング操作）を行うことができる。すなわち、第１アナログスティック６３を左右方向に傾けることで、ハンドル操作を行うことができる。換言すれば、自車オブジェクト１０１の移動方向を指示するための入力を行うことができる。また、Ａボタン６６Ａでアクセル、Ｂボタン６６Ｂでブレーキの操作が可能である。また、本実施形態では、レース中に取得可能なアイテムがコース上に配置されている。そして、プレイヤは、例えばＲボタン６８Ｒを押下することで、取得したアイテムを「使用」することもできる。アイテムの使用する、あるいは、一部のアイテムについてはそれを所持しているだけで、プレイヤにとって有利となる所定の効果が発生する。
【００４３】
上記のようなレースゲームにおいて、本実施形態では、レースゲームの初心者やレースゲームが下手なプレイヤでも快適にプレイできるようにサポートする処理が実行される。具体的には、上記プレイヤが行ったハンドル操作に基づくハンドル入力データに対して、後述するような処理を施すことで、ハンドル入力の値を補正し、自車オブジェクト１０１のハンドル制御や移動制御を行う。
【００４４】
ここで、ハンドル入力の値について補足説明する。本実施形態では、上記第１アナログスティック６３は、ある方向への方向入力を２５６段階で検知できる。そして、上記第１アナログスティック６３を用いてプレイヤが入力可能な左右方向にかかる値（その傾き具合を示す値）については、上記検知された内容が、−１（左）〜＋１（右）の範囲内の値（０がニュートラルポジション）に変換されて扱われるものとする。換言すれば、プレイヤが第１アナログスティック６３を用いて入力可能なハンドル入力値は、−１〜＋１の範囲内の値である。一方、本実施形態におけるレースゲームにおいては、自車オブジェクト１０１を制御するためのハンドル入力値として、−２〜＋２の範囲が割り当てられている。つまり、プレイヤの入力操作に基づいた、−１〜＋１の範囲内のハンドル入力値は、後述のような処理によって補正された結果、−２〜＋２の範囲内の値となり得る。例えば、プレイヤが入力した−１のハンドル入力値が、後述の処理によって例えば−２に補正され、この補正後のハンドル入力値が自車オブジェクト１０１の移動制御に用いられることになる。そのため、プレイヤが入力可能なハンドル入力値以上の自車オブジェクト１０１の移動も可能となっている。
【００４５】
上記のようなハンドル入力値の補正（サポート処理）について、より具体的には、本実施形態では、主に、以下のような処理を行う。
（１）コースアウト防止の処理
自車オブジェクト１０１がコースアウトしそうな場合に、コースアウトを避けようとするプレイヤの操作に基づくハンドル入力値を補正して、コースアウトしないようにハンドル入力値を更に大きな値とする等の処理が実行される。
（２）予測ハンドル処理
現在はコースアウトするような状況ではないが、ハンドル入力の有無に関わらず、自車オブジェクト１０１がそのまま進むとコースアウトすることが予測される場合に、予めコースアウトしないように、ハンドル入力にコースの進行方向寄りの補正を加える処理が実行される。
（３）基本アシスト処理
プレイヤのハンドル入力が、コースの進行方向（ゴール）に向かおうとするような入力（換言すると、意図的な逆走やコースアウト狙いの操作ではない入力）の場合に、コースの左右の端（壁）からの距離に応じて、コースの進行方向に向くようにハンドル入力値を補正する処理も実行される。
（４）コース向き揃え処理
自車オブジェクト１０１の位置や予想進行経路に関して、コースアウトの危険性が小さいであろう状態のときに、自車オブジェクト１０１がなるべくコースに沿ってまっすぐ走れるようにハンドル入力値を補正する処理も実行される。換言すれば、コースアウト等の危険性が小さい状況において、自車オブジェクト１０１の姿勢（向き）をコースに沿った姿勢（向き）に近づけるようにハンドル入力値に補正をかける、というような処理である。
【００４６】
上述のような処理により、レースゲームの初心者や、レースゲームが下手なプレイヤであっても、コースアウト等することなくコースを走行させることができ、レースゲームの興趣性を高めることができる。また、プレイヤの操作に基づくハンドル入力値を補正することで自車オブジェクト１０１の移動制御を行うため、自車オブジェクト１０１の挙動に関して、プレイヤに不自然さを感じさせずに、そのハンドル操作をサポートすることもできる。例えが、プレイヤのハンドル操作とは関係なく自車オブジェクトの速度を直接的に補正するような制御の場合に比べて、プレイヤが現実にハンドル操作している内容に沿うようにさりげなく補正することができる。そのため、プレイヤに違和感を与えることなく、上記のようなハンドル操作のサポートが可能となる。
【００４７】
また、他のプレイヤと対戦する場合であって、その対戦相手がレースゲームの上手いプレイヤであるような場合でも、上記のようなアシストの処理によって、比較的拮抗したレースを展開することができ、ゲームの興趣性を高めることができる（補足すると、レースゲームが下手なプレイヤほど、上記のようなアシスト処理の恩恵を受けやすい。上手いプレイヤの場合は、上記のようなアシスト処理が働く余地は少ないため、結果的に、拮抗したレース展開が期待できる。）。
【００４８】
次に、図９〜図３４を参照して、本実施形態におけるゲーム処理をより詳細に説明する。
【００４９】
図９は、ゲーム装置本体３のメインメモリ１２に格納されるプログラムおよび情報の一例を示している。メインメモリ１２には、ゲーム処理プログラム３０１、操作データ３０２、レースコースデータ３０５、パスデータ３０６、アシスト利用設定データ３０７、アシスト処理用コース情報３０８、プレイヤハンドル入力値３０９等が格納される。
【００５０】
ゲーム処理プログラム３０１は、上述したようなレースゲーム処理を実行するためのプログラムである。
【００５１】
操作データ３０２は、コントローラ６に対して行われた各種操作を示すデータである。操作データ３０２には、デジタルボタンデータ３０３、アナログスティックデータ３０４等が含まれる。デジタルボタンデータ３０３は、上述したような各種デジタルボタンに対して行われた操作内容を示すデータであり、各種ボタンの押下状態を示すデータである。本実施形態では、オンかオフかを示すデータとなる。アナログスティックデータ３０４は、上記アナログスティックに対して行われた操作内容（傾き方向と傾き具合）を示すデータである。２本のアナログスティックそれぞれについて、所定方向への傾き具合を２５６段階で示したデータである。
【００５２】
レースコースデータ３０５は、上記のレースコースを構築するためのデータである。コースの形状やコース上の配置物の関するデータ等が含まれている。
【００５３】
パスデータ３０６は、レースゲームのコースに基づいて予め生成されたデータであり、後述する処理で用いられる「パス」の基になるデータである。当該パスの概念について、図１０〜図１１を用いて説明する。図１０は、レースコースの一部分を俯瞰で示した図であり、図１１は、当該レースコースに基づいて生成されたパスの概念を示す模式図である。パスは、レースコースに沿って複数配置されている概念であり、換言すれば、パスのそれぞれは、レースコースの一部分に対応する概念といえる。また、図１１では、円形で示しているが、ゲーム処理においては、球形の概念として捉える。具体的には、パスデータ３０６には、複数のパスのそれぞれについて、中心座標と、半径（大きさ）と、法線を示す情報と、順序が次のパスを示す情報と、順序が前のパスを示す情報とが含まれる。また、後述する分岐パスであるか通常パスであるかを示す情報もパスデータ３０６には含まれている。なお、パスの「順序」については、レースコースのスタート地点のパスが１番目であり、ゴール地点のパスが最後の順序となるものとする。また、中心座標について、例えば道幅を示す軸をｘ軸、高さ方向をｙ軸、奥行き方向をｚ軸として考えると、ｙ軸座標は、原則として、コースの路面（地表）部分となるように設定される。また、ｘ軸座標については、道幅の中心となるように設定される。そのため、各パスの中心点（ｘ軸座標）をコースに沿って結んでいくと、概ねレースコースの中心を通るようなラインができることになる（図１２参照）。また、図１１や図１２からわかるように、各パスは、その位置におけるコースの道幅や左右の端（換言すれば、コースの外側と内側の境界）を示すものであるともいえる（レースコースによっては、例えばトンネル状やチューブ状のコースであれば、その高さ等も示すことになる）。このように、パスデータ３０６は、レースコースの所定の一部分の構成を示すデータであるともいえる。本実施形態では、このようなパスデータ３０６を用いて、自車オブジェクト１０１の直近において通過した経路の把握や、直後の進行方向の予測が行われる。また、コースが分岐している場合は、その分岐先の決定等にも用いられる。なお、以下の説明においては、上記のコースの道幅方向軸における左右の端のことを「コース端」と総称する。換言すれば、本実施形態の説明において、「コース端」とは、スタート地点やゴール地点の意味ではなく、コースの横幅における左右の端のことを意図する。
【００５４】
ここで、コースの分岐に関して補足説明する。本実施形態のレースゲームでは、自車オブジェクト１０１が所定の条件を満たした場合、分岐コースが出現する。例えば、レースコース上に配置されている所定のアイテムを自車オブジェクト１０１が取得したとき、そのアイテムを所持している間（他のアイテムを新たに取得するまでの間）は、分岐コースが出現し、自車オブジェクト１０１をその分岐コースに移動させることが可能となる。例えば、図１３に示すようなコースおよびパス設定があるとする。図１３は、ヘアピンカーブを俯瞰した図である。また、コースの中央には、「芝生」があるとする。そして、自車オブジェクト１０１が、右側を走行しているとする。図１３は、上記の所定の条件を満たしていない状態であるとする。この場合は、自車オブジェクト１０１は、コース内しか走行できず、芝生部分には進入することはできない。一方、所定の条件を満たしている場合は、図１４に示すように、分岐コースに対応する６つのパスが芝生部分に出現する。そして、このパスが配置されている部分には自車オブジェクト１０１は進入可能となる。つまり、所定の条件を満たしている間は、「芝生を横切る」というような分岐コースが出現することになる。なお、この例では芝生という例を示したが、もちろん、最初から途中で２つに分岐するようなコースであれば（図１５参照）、上記所定の条件を満たすまでもなく、進行方向の分岐が可能となる。なお、以下の説明では、自身の前後いずれかにパスが複数存在しているパスのことを「分岐パス」と呼び、そうではないパスについては「通常パス」と呼ぶこともある。また、各パスの中心点（中心座標）のことを「中心パス点」と呼ぶ。また、右端のパス点については「右端パス点」、左端のパス点については「左端パス点」と呼ぶ。
【００５５】
図９に戻り、次に、アシスト利用設定データ３０７は、本実施形態で示すようなハンドルアシスト機能自体をプレイヤが利用するか否かを示すデータである。例えば、レースゲームの「ゲーム設定」等でプレイヤの入力に基づき設定される。
【００５６】
アシスト処理用コース情報３０８は、上記パスデータ３０６に基づいて生成されるデータであり、例えば、コースアウトの判定等でレースコースの左右の端を把握するために用いられる。
【００５７】
プレイヤハンドル入力値３０９は、操作データ３０２、より具体的には、アナログスティックデータ３０４に基づいて生成される。第１アナログスティック６３に対するプレイヤの入力に基づいた自車オブジェクト１０１のハンドル操作内容（ハンドルの入力量）を示すデータである。具体的には、第１アナログスティック６３の左右方向のそれぞれについて２５６段階で示される第１アナログスティック６３の傾き具合を、０をニュートラルポジションとして、−１〜＋１の範囲内の値に変換したデータである。
【００５８】
次に、図１６のフローチャートを参照して、ゲーム装置本体３のプロセッサ部１１によって実行されるレースゲームにおけるハンドルアシスト処理の流れを説明する。なお、ここでは、主に上記のようなハンドルアシストにかかる処理について説明し、その他のゲーム処理については、直接には関係しないため、その説明は省略する。
【００５９】
図１６は、本実施形態にかかるハンドルアシスト処理の詳細を示すフローチャートである。なお、図１６におけるステップＳ２〜Ｓ７の処理ループは、例えば１フレーム毎に繰り返し実行される。
【００６０】
まず、ステップＳ１で、プロセッサ部１１は、パスデータ事前解釈処理を実行する。この処理では、パスデータ３０６に基づいて、上記図１１で示したような複数のパスを生成する処理が実行される。更に、当該生成したパスに基づいて、アシスト処理用コース情報３０８を生成する処理が実行される。当該アシスト処理用コース情報３０８の概念を図１７に示す。図１７は、上記図１１のようなパスに基づいたアシスト処理用コース情報３０８の例である。当該アシスト処理用コース情報は、各パスの中心点同士を結んだ線と、右端パス点同士を結んだ線と、左端パス点同士を結んだ線で表すことができる情報である。
【００６１】
図１６に戻り、次に、ステップＳ２で、プロセッサ部１１は、操作データ３０２を取得する。更に、プロセッサ部１１は、当該操作データ３０２に基づいて、プレイヤの入力に係るハンドル入力値を示すプレイヤハンドル入力値３０９を生成する（すなわち、第１アナログスティック６３の左右方向それぞれにかかる傾き具合を、−１〜＋１の範囲内の値に変換する）。
【００６２】
次に、ステップＳ３で、プロセッサ部１１は、アシスト利用設定データ３０７を参照して、「ハンドルアシスト」を利用する設定になっているか否かを判定する。当該判定の結果、利用する設定になっていないときは（ステップＳ３でＮＯ）、ステップＳ４で、プロセッサ部１１は、アシストを用いない自車オブジェクト１０１の移動処理を実行する。すなわち、プレイヤハンドル入力値３０９をそのまま利用する自車オブジェクト１０１の姿勢および移動の制御を行う。その後、上記ステップＳ２に戻り、処理が繰り返される。
【００６３】
一方、「ハンドルアシスト」を利用する設定になっているときは（ステップＳ３でＹＥＳ）、ステップＳ５で、プロセッサ部１１は、パス決定処理を実行する。
【００６４】
［パス決定処理］
ここで、図１８〜図２０を用いて、当該パス決定処理で行われる処理の概要について説明する。この処理では、自車オブジェクト１０１の現在位置からみて前後２つずつのパスを決定する処理が行われる。また、分岐がある場合には、その分岐先を判定する処理も実行される。具体的には、まず、自車オブジェクト１０１の位置および向きに基づいて、自車オブジェクト１０１に最も近いパス点が検索される。以下ではこのパス点を「基準パス点」と呼ぶ。なお、この基準パス点の検索においては、前回選ばれたパス点の前後にあるパス点を優先的に選ぶような制御も実行される。更に、当該基準パス点の前後に設定されているパス点を検索し、当該基準パス点が「通常パス」であるか「分岐パス」であるかを判定する処理も実行される（前後いずれかに複数のパス点が存在すれば、分岐パスとされる）。つまり、現在位置を基準とした分岐先の有無をリアルタイムに判断するため、例えば、所定条件が満たされたために急に「隠しルート」が出現したという場合にも柔軟に対応できる。
【００６５】
基準パス点が決定されると、次に、自車オブジェクト１０１の移動速度およびハンドル入力値に基づいて、「基準方向」が算出される。この基準方向は、その時点における自車オブジェクトの進行方向を示す方向ベクトルである。更に、この基準方向を用いて、基準パス点から前後２つずつのパス点が決定される。以下では、この前後２つずつのパス点について、第１前方パス点、第２前方パス点、第１後方パス点、第２後方パス点と呼ぶ。また、基準バス点が上記のような分岐パスである場合は、その分岐先の決定も行われる。基準パスが分岐パスである場合における第１の前方パス点の決定の一例を、図１８のような自車オブジェクトとパスとの位置関係を例として説明する。図１８では、自車オブジェクト１０１と、基準方向（ベクトル）４０１、自車オブジェクト１０１に最も近いパス４０２およびその基準パス点４０３が示される。また、当該パス４０２は分岐パスでもあり、分岐先となるパス（候補パス）として、第１候補パス４０４およびその中心点である第１候補パス点４０５、第２候補パス４０６およびその中心点である第２候補パス点４０７も示されている。このような位置関係の場合、まず、基準方向４０１の先に、衝突する候補パス（球形として判断される）が存在するか否かが判定される。図１８の場合は、第２候補パス４０６のみが基準方向４０１と衝突する関係となっている。このように、衝突する候補パスが１つだけの場合は、当該衝突した候補パスにかかるパス点（第２候補パス点４０７）が、第１前方パス点（換言すれば、次のパス点）として決定される。
【００６６】
次に、基準方向４０１と衝突する候補パスが複数あった場合の例について、図１９を用いて説明する。図１９では、第１候補パス４０４と第２候補パス４０６の双方が基準方向４０１に衝突するような位置関係を示している。この場合は、まず、自車オブジェクト１０１から、候補となるパス点（図１９の例では、第１候補パス点４０５および第２候補パス点４０７）へそれぞれ向かう方向ベクトル４１１および４１２を算出する。そして、当該算出した方向ベクトルのうち、基準方向４０１に最も近い方向ベクトルを判別し、その方向ベクトルにかかる候補パス点を次のパス点（第１前方パス点）として決定する。図１９の例では、方向ベクトル４１１よりも方向ベクトル４１２のほうが基準方向４０１に近いため、第２候補パス点４０７が第１前方パス点として決定されることになる。
【００６７】
次に、基準方向４０１と衝突するパスがなかった場合の例について、図２０を用いて説明する。図２０では、基準方向４０１が、第１候補パス４０４および第２候補パス４０６のいずれにも衝突しないような位置関係を示している。このような場合は、基準パス点４０３から各候補パスのパス点４０５および４０７へ向かう方向ベクトルのうち、基準方向に最も近くなるようなベクトルにかかるパス点を第１前方パス点として決定する。図２０の例では、方向ベクトル４１１よりも方向ベクトル４１２のほうが基準方向４０１に近いため、第２候補パス点４０７が第１前方パス点として決定されることになる。
【００６８】
また、第２前方パス点についても、上記と同様の処理で決定されることになる。すなわち、上記第１前方パス点にかかるパスを基準パスとして（また、基準方向はそのまま流用して）、上記と同様の処理を行う。
【００６９】
また、第１後方パス点の決定については、まず、自車オブジェクト１０１がそれまでに通過したパスを記憶しておく（例えば最大８つまで記憶しておく）。そして、上記後方パスの候補を検索したときにこれら通過したパスが存在していれば、そのパスにかかるパス点を第１後方パス点として決定する。一方、通過したパス点が記憶されていない場合は、上記の基準方向を逆向きにしたベクトルを用いて、上記と同様の処理を行う。第２後方パス点の決定についても、同様の処理が行われる。
【００７０】
上記のようにして、基準パス点と、その前後２つずつのパス点が決定すれば、更に、パスの補間処理も行われる。この補間処理は、上記決定された５つのパスそれぞれの右端パス点、および、左端パス点に基づいて曲線補間を行う処理である。換言すると、上記５つのパス点に基づいてコースの左右の端（壁）を算出する（いわばコースの左右幅の大きさ確定する）処理である。上記決定された５つのパスそれぞれの右端パス点同士を曲線補間しながら結んでいくことで、自車オブジェクト１０１の前後にかかるコースの右端（いわば、コース幅の右端を示す壁のような概念）が算出される。同様に、左端パス点同士を曲線補間しながら結んでいくことで、自車オブジェクト１０１の前後にかかるコースの左端（を示す壁のような概念）が算出される。このようにして算出されたコース端の情報が、後述のコースアウト防止処理等における「コース端」として用いられる。また、このような曲線補間を行うことで、後述するアシスト処理によって自車オブジェクト１０１が走行する際でも、なめらかに走行させることが可能となる。
【００７１】
なお、このようなコース左右の端はあくまで上記のパスに基づいて生成されるものであるため、実際に画面に表示されるレースコースの左右端の位置とは厳密に一致している必要はなく、多少ずれた位置となっていてもよい。
【００７２】
ところで、上記のようなパス決定処理は、換言すれば、自車オブジェクト１０１の周辺にかかるコースの構成（コース端の位置等）をリアルタイムで判定（把握）しているということもできる。そのため、上記のようなコース分岐に関して、分岐コースが所定の条件を満たした場合にのみ出現するというような場合でも柔軟に対応することができる。これにより、レースコースのギミック等をより充実させることができ、ゲームの興趣性をより高めることもできる。
【００７３】
次に、図２１に、パス決定処理の詳細を示すフローチャートを示す。図２１において、まず、ステップＳ１１で、プロセッサ部１１は、上述したような基準方向、および、基準パス点を算出、決定する処理を実行する。また、決定した基準パス点が通常パスであるか分岐パスであるかを判定する処理も実行される。
【００７４】
次に、ステップＳ１２で、プロセッサ部１１は、上述したような第１前方パス点、第２前方パス点、第１後方パス点、第２後方パス点の４つのパス点を決定する処理を実行する。
【００７５】
次に、ステップＳ１３で、プロセッサ部１１は、上記決定された５つのパス点に基づいて、上述したような補間処理を実行する。以上で、パス決定処理は終了する。
【００７６】
図１６に戻り、パス決定処理が終われば、次に、ステップＳ６で、プロセッサ部１１は、アシスト処理を実行する。図２２は、当該アシスト処理の詳細を示すフローチャートである。図２２において、まず、ステップＳ２１で、プロセッサ部１１は、コースアウト防止処理を実行する。
【００７７】
［コースアウト防止処理］
図２３を用いて、このコースアウト防止処理について説明する。図２３は、コースアウト防止処理のいくつかの例を示す模式図である。まず、この処理は、自車オブジェクト１０１がコース端にかなり接近している状態、換言すればコースアウト寸前といえるような状態のときに実行される。図２３の例でいうと、閾値線４５１Ａよりも左側、または、閾値線４５１Ｂよりも右側に自車オブジェクト１０１（の一部）が存在している状態であることが実行条件とされる。そして、自車オブジェクト１０１の速度ベクトル４５２（その速度と方向）と、自車オブジェクト１０１から最も近いコース端の向き（進行すべき方向）とに基づいて、（プレイヤからのハンドル入力値に加えて）ハンドルを強制的に回す方向およびその量（図２３では、まとめて補正量４５３として示される）が算出される。ここで、速度ベクトル４５２には、自車オブジェクト１０１の移動速度と移動する方向を示す成分が含まれている。
【００７８】
図２３では、４つの例（Ｃａｓｅ）を示している。この例では、上記のコース端の向き（進行方向）については、全てのＣａｓｅで図の上方向となる。また、この例では、Ｃａｓｅ１よりもＣａｓｅ２のほうが、自車オブジェクト１０１がコース左端に対してより垂直な角度で接近していることを示す。また、Ｃａｓｅ２よりもＣａｓｅ３のほうが、更にコース左端に対して垂直な角度で接近していることを示す。この場合、Ｃａｓｅ１よりもＣａｓｅ２のほうがより大きくハンドルを切る必要がある。また、Ｃａｓｅ２よりもＣａｓｅ３のほうがより大きくハンドルを切る必要がある。そのため、ハンドルを回す方向については、いずれも右方向であるが、その量（補正量４５３Ａ〜４５３Ｃ）については、Ｃａｓｅ１（補正量４５３Ａ）よりもＣａｓｅ２（補正量４５３Ｂ）のほうが大きく算出される。また、Ｃａｓｅ２（補正量４５３Ｂ）よりもＣａｓｅ３（補正量４５３Ｃ）のほうがより大きく算出されることになる。換言すれば、速度ベクトル４５２がコース端に対して垂直な角度に近づくほど、その補正量は大きく算出され、速度ベクトル４５２と進行方向との角度差が小さいほど、その補正量も少なくなるような制御が行われる。
【００７９】
また、上記のハンドルを回す方向とその量との他に、自車オブジェクト１０１の速度ベクトル５４２と、上記コース端の向き（進行すべき方向）とに基づいて、自車オブジェクト１０１自体を強制的に移動させる力を示す強制移動ベクトル４５４Ａ〜４５４Ｃも算出される。これは、上記のハンドル入力値の補正だけではコースアウトを防げない可能性もあるため、ハンドル入力値の補正とは別に、自車オブジェクト１０１自体をコース端から遠ざけるように移動させるものである（自車オブジェクト１０１の姿勢はそのままでコース内側にスライド移動させるようなイメージとなる）。より具体的には、強制移動ベクトルに基づく加速度を自車オブジェクト１０１に加える。つまり、補正後のハンドル入力値に基づく自車オブジェクト１０１の移動に、更に強制移動ベクトルに基づく移動を加えることになる。この強制移動ベクトルについても、Ｃａｓｅ１（強制移動ベクトル４５４Ａ）よりはＣａｓｅ２（強制移動ベクトル４５４Ｂ）のほうがより強い（長い）ベクトルとなり、Ｃａｓｅ２（強制移動ベクトル４５４Ｂ）よりもＣａｓｅ３（強制移動ベクトル４５４Ｃ）のほうがより強いベクトルとなる。なお、この例では、上記速度ベクトルが進行方向側に向いていることから、強制移動ベクトルの方向についてはＣａｓｅ１〜３のいずれも右方向となっている。
【００８０】
また、Ｃａｓｅ４の場合は、自車オブジェクト１０１がやや逆走気味となるような向きでコース右端に近づいている状態を示している。この場合も、自車オブジェクト１０１の速度ベクトル４５２と、上記コース端の向き（進行すべき方向）とに基づいて、補正するハンドル方向および補正量４５３Ｄと、強制移動ベクトル４５４Ｄとが算出される。この場合は、自車オブジェクト１０１の速度ベクトルが進行方向とは逆方向の成分が含まれていることから、自車オブジェクト１０１を進行方向側に向けやすくするために、強制移動ベクトルについては、左上方向に向けたベクトル（速度ベクトル４５２とは逆方向のベクトル）が算出されている。
【００８１】
このように、コースアウト防止処理では、今のままではコースアウトが避けられないような状況である場合に、自車オブジェクト１０１の速度ベクトルと、自車オブジェクト１０１から最も近いコース端の向きとに基づき、コースアウトしないようにするためのハンドル入力値の補正量と強制移動ベクトルとが算出される。
【００８２】
なお、本実施形態では、このコースアウト防止処理では、絶対に自車オブジェクト１０１がコースアウトしないように、上記ハンドル入力値の補正方向・補正量と強制移動ベクトルが算出される。換言すれば、プレイヤが意図的にコースアウトしようとしても、コースアウト防止処理が機能する限りは、コースアウトができないようになっている。
【００８３】
図２４に、コースアウト防止処理のフローチャートを示す。図２４において、まず、ステップＳ３１で、プロセッサ部１１は、上記のようなコースアウト防止処理を実行する条件が満たされているか否かを判定する。上記の例では、図２３の閾値線４５１Ａおよび４５１Ｂの外側（コース端に近い側）に自車オブジェクト１０１が存在しているか否かを判定し、存在していれば、実行条件を満たすと判定されることになる。なお、当該判定処理は、上記のような閾値線４５１を用いる判定処理に限るものではなく、同様の判定ができればどのような判定処理を用いてもよい。
【００８４】
ステップＳ３１の判定の結果、実行条件が満たされていない場合は（ステップＳ３１でＮＯ）、コースアウト防止処理は終了する。つまり、この場合は実質的なコースアウト防止処理は行われないことになる。一方、実行条件を満たすと判定された場合は（ステップＳ３１でＹＥＳ）、ステップＳ３２で、プロセッサ部１１は、自車オブジェクト１０１の速度ベクトル４５２を算出する。更に、ステップＳ３３で、プロセッサ部１１は、自車オブジェクト１０１から最も近いコース端の向きを算出する。そして、ステップＳ３４で、プロセッサ部１１は、上記速度ベクトル４５２およびコース端の向きに基づいて、上記ハンドル入力補正量４５３、および、上記強制移動ベクトル４５４を算出する。以上で、コースアウト防止処理は終了する。
【００８５】
図２２に戻り、コースアウト防止処理の次に、ステップＳ２２で、プロセッサ部１１は、自車オブジェクト１０１がレースコースの路面部分に接しているか否かを判定する。換言すれば、自車オブジェクト１０１が、（ジャンプ等によって）宙に浮いている状態ではないか否かを判定する。当該判定の結果、路面に接していない場合は（ステップＳ２２でＮＯ）、ステップＳ２４で、後述する基本アシスト処理が実行される。一方、路面に接している場合は（ステップＳ２２でＹＥＳ）、ステップＳ２３で、プロセッサ部１１は、上記のコースアウト防止のための制御が行われたか否かを判定する。すなわち、上記図２４のステップＳ３１でＹＥＳと判定されたか否かを判定する。その結果、コースアウト防止のための制御が行われていた場合は（ステップＳ２３でＹＥＳ）、ステップＳ２６で、プロセッサ部１１は、基本アシスト処理を実行する。一方、コースアウト防止のための制御は行われていなかった場合は（ステップＳ２３でＮＯ）、ステップＳ２５で、プロセッサ部１１は、予測ハンドル処理を実行する、その後、ステップＳ２６で基本アシスト処理を実行する。
【００８６】
［予測ハンドル処理］
上記予測ハンドル処理および基本アシスト処理について説明する。まず、予測ハンドル処理について説明する。図２５〜２６は、予測ハンドル処理で行われる処理の概要を説明するための図である。この処理では、すぐにではないが、そのまま進むとコースアウトすることが予想されるような場合に、コースアウトの危険性を下げるために、コースの進行すべき方向により沿って進める状態となるように、ハンドル入力を補正する処理である。図２５の例は、自車オブジェクト１０１が直進している場合（プレイヤがハンドル操作していない場合も含む）の、予測ハンドルによる補正の一例を示す図である。また、図２６は、直進していない場合、すなわち、左右いずれかのハンドル入力がある状態か、あるいは、自車オブジェクト１０１が「ドリフト」している状態のときの予測ハンドルの例を示す図である。
【００８７】
まず、当該予測ハンドル処理が実行される条件について説明すると、本処理は、コースアウト防止の制御が行われなかった場合で、かつ、自車オブジェクト１０１からコース端までの直線距離ｄが所定値よりも短い場合、に実行される。つまり、自車オブジェクト１０１がコース端からある程度近づいている状態のときに実行され得る。
【００８８】
自車オブジェクト１０１が直進している場合の予測ハンドルの処理として、次のような処理が実行される。まず、自車オブジェクト１０１の速度ベクトル４５２に基づき、自車オブジェクト１０１の進行軌道４６１を予測する。次に、当該予測した進行軌道４６１に基づいて、自車オブジェクト１０１とコース端との衝突点を予測する（以下、この点を予測衝突点と呼ぶ）。そして、この予測衝突点におけるコース端の向き（進行方向）を算出する。図２５では、当該予測衝突点およびその向きについて、点および矢印で構成されるコース端向き４６２として示している。
【００８９】
ここで、予測衝突点について、本実施形態では、自車オブジェクト１０１の横幅における左右端を基準として算出している。図２５の例では、自車オブジェクト１０１が左側のコース端に衝突予測される例であるため、自車オブジェクト１０１の左端とコース端とを結ぶ直線をコース端向き４６２の算出に利用している（右側のコース端への衝突が予測される場合は、この逆となる）。なお、他の実施形態では、これに限らず、例えば自車オブジェクト１０１の中心を通る直線を利用して予測衝突点を算出しても良い。
【００９０】
そして、上記のように、コース端向き４６２が算出できれば、当該コース端向き４６２と速度ベクトル４５２（速度成分および向き成分）とに基づいて、ハンドルを強制的に回す方向とその量、すなわち、ハンドル入力補正量４５３が算出される。図２５では、左方向へのハンドル回転とその補正量が算出されることになる。そのため、仮に、図２５のような状態のときにプレイヤがハンドル操作を行っていないとしても、左方向へのある程度のハンドル入力が発生し、自車オブジェクトの向き（姿勢）が少しだけコースの進行方向に沿ったものに変化することになる。
【００９１】
ここで、ハンドル入力値の補正量（ハンドルを回す方向およびその量）について、図２７を用いて補足説明する。当該補正量は、図２７のＣａｓｅ１で示されるように、自車オブジェクト１０１からコース端までの距離ｄが大きく、予測衝突点における、コースの向きと、自車オブジェクト１０１の向きとの向きが近いほど、補正量としては小さくなるように算出される。また、Ｃａｓｅ２で示されるように、コース端までの距離ｄが小さく、予測衝突点における、コースの向きと、自車オブジェクト１０１の向きとの向きが遠いほど、補正量は大きくなるように算出される。
【００９２】
次に、図２６の、自車オブジェクト１０１が直進していない場合の予測ハンドル処理について説明する。上記の直進の場合は、進行軌道４６１も直線になるため、速度ベクトル４５２で示される向き成分を利用してハンドル入力値の補正量４５３が算出されていた。一方、左右いずれかのハンドル入力がある状態や、自車オブジェクト１０１がドリフトしている状態のときは、予測される軌道も直線ではなくなる。そのため、直進していない場合は、上記の速度ベクトル４５２における向き成分の代わりに、予測衝突点において予測される自車オブジェクト１０１の向きを利用する。図２６でいうと、速度ベクトル４５２の向きではなく、衝突時向き４６３で示される向きを利用して、ハンドル入力値の補正量４５３を算出する。
【００９３】
ここで、予測ハンドル処理が行われる場合とそうではない場合について図２８を用いて補足説明する。この図では、プレイヤが（コースアウトしないような意図の）ハンドル入力を行いながらカーブを通過する場合を想定している。この場合、図２８のＣａｓｅ１で示される状態では、コースアウトしてしまうことが予測されるため、上記予測ハンドル処理が実行され、その結果、プレイヤのハンドル入力値に加えて、更にコース内側に向けたハンドル入力が加えられることになる。一方、図２８のＣａｓｅ２のような場合であれば、コースアウトする見込みがないため、予測ハンドル処理は行われないことになる。
【００９４】
次に、図２９に、予測ハンドル処理のフローチャートを示す。図２９において、まず、ステップＳ４１で、プロセッサ部１１は、上記のような予測ハンドル処理の実行条件が満たされているか否かを判定する。当該実行条件を満たしていない場合は（ステップＳ４１でＮＯ）、予測ハンドル処理は終了する。一方、実行条件が満たされていた場合は（ステップＳ４１でＹＥＳ）、次に、ステップＳ４２で、プロセッサ部１１は、自車オブジェクト１０１の速度ベクトル４５２を算出する。続くステップＳ４３で、プロセッサ部１１は、速度ベクトル４５２に基づいて、上述したような予測衝突点とそこでのコースの向きを示すコース端向き４６２を算出する。
【００９５】
次に、ステップＳ４４で、プロセッサ部１１は、所定時間内に自車オブジェクト１０１が予測衝突点に到達するか否か（つまり、コースアウトすることになるか否か）を判定する。その結果、所定時間内に到達しない場合は（ステップＳ４４でＮＯ）、予測ハンドル処理は終了する（上述の図２８のＣａｓｅ２のような場合に該当）。一方、所定時間内の到達が予測される場合は（ステップＳ４４でＹＥＳ）、ステップＳ４５で、プロセッサ部１１は、予測衝突点における自車オブジェクト１０１の向きである衝突時向き４６３を算出する。
【００９６】
次に、ステップＳ４６で、プロセッサ部１１は、自車オブジェクト１０１が直進している状態か否かを判定する。その結果、直進している場合は（ステップＳ４６でＹＥＳ)、ステップＳ４７で、プロセッサ部１１は、速度ベクトル４５２の速度成分、向き成分、および、上記予測衝突点におけるコース端向き４６２に基づいて、ハンドル入力値の補正量を算出する。一方、直進していない場合は（ステップＳ４６でＮＯ)、ステップＳ４８で、プロセッサ部１１は、速度ベクトル４５２の速度成分と、衝突時向き４６３と、コース端向き４６２とに基づいて、ハンドル入力値の補正量を算出する。以上で、予測ハンドル処理は終了する。
【００９７】
［基本アシスト処理］
次に、基本アシスト処理について説明する。本処理は、プレイヤのハンドル入力が、コースの進行方向に向かおうとするような入力の場合に、自車オブジェクト１０１の姿勢をコースの進行方向に沿う姿勢により近づけるためにハンドル入力値を補正する処理である。本処理は、次のような条件が満たされる場合に実行される。まず、１つ目の条件として、プレイヤからのハンドル入力、または、上記コースアウト防止処理または上記予測ハンドル処理に基づくハンドル入力（つまり、プレイヤがハンドル操作していない場合でも、上記の補正によるハンドル操作が発生している）があることが条件となる。２つ目の条件として、ハンドル入力が、コースの前方（進行方向、ゴール方向）に向かうように入力されていることが条件となる。なお、コースアウト防止処理または予測ハンドル処理に基づくハンドル入力は、必然的にコースの前方に向かう入力となるため、実質的には、プレイヤのハンドル入力がコース前方に向かおうとするものであるか否かが判定できればよい。更に、３つ目の条件として、自車オブジェクト１０１がある程度コース端に近い位置に存在していることも条件となる。具体的には、次に説明する図３０の閾値線４７１Ａより左側、または４７１Ｂより右側に自車オブジェクト１０１存在している場合である（なお、当該閾値線４７１は、上記コースアウト防止処理の場合よりもコース内側に寄った位置となるよう設定されている）。これら３つの条件を全て満たしている場合に、基本アシスト処理は行われることになる。
【００９８】
図３０を用いて、基本アシスト処理の処理概要を説明する。図３０では、４つのＣａｓｅが示されている。Ｃａｓｅ１〜３は、自車オブジェクト１０１（の少なくとも一部）が閾値線４７１Ａより左側に存在している状態である。また、Ｃａｓｅ４は、自車オブジェクト１０１（の少なくとも一部）が閾値線４７１Ｂより右側に存在している状態である。基本アシスト処理では、まず、自車オブジェクト１０１の速度ベクトル４５２と、自車オブジェクト１０１に最も近いコース端のコース端向き４６２を算出する。更に、自車オブジェクト１０１から当該コース端までの距離ｄも算出する。そして、プレイヤの入力に係るハンドル入力値と、上記距離ｄと、速度ベクトル４５２と、コース端向き４６２とに基づいて、ハンドル入力値の補正量４５３、および、上記コースアウト防止処理の場合と同様の強制移動ベクトル４５４を算出する。なお、ハンドル入力値の補正量に関して、本処理では、ハンドルを回す方向（ハンドルの向き）については、ここでは補正はされない。ハンドルを回す量についてのみ、例えば所定の倍率がかけられる等で補正量が算出される。上記のように、本処理は、コース前方に向かおうとするハンドル入力がなされていることが前提となっており、その向きについては補正の必要性はないからである。
【００９９】
また、ハンドル入力値の補正量４５３、および、強制移動ベクトル４５４の大きさについては、距離ｄの長さが短くなるほど、強い補正がかかるように算出される。図３０では、Ｃａｓｅ１よりもＣａｓｅ２のほうが、より強い補正量が算出される。また、Ｃａｓｅ２よりもＣａｓｅ３のほうが、より強い補正量が算出される。
【０１００】
また、Ｃａｓｅ４では、自車オブジェクト１０１がやや逆走気味となるような向きとなっている。ここで、上記コースアウト防止処理では、同様の状況の場合、強制移動ベクトルとして速度ベクトルと逆方向のベクトルが算出される例を示していた。一方、当該基本アシスト処理では、強制移動ベクトル４５４Ｄの向きについては、常にコース端の向きに垂直な方向となる。この処理では、上記コースアウト防止処理ほどの強い補正は行わないためである。
【０１０１】
なお、当該基本アシスト処理と上記コースアウト防止処理は重複して実行され得る。そのため、コースアウト防止処理による補正と基本アシスト処理による補正とが合算されてハンドル入力値が補正されることもあり得る。
【０１０２】
図３１に、基本アシスト処理のフローチャートを示す。図３１において、まず、ステップＳ６１で、プロセッサ部１１は、上述したような基本アシスト処理の実行条件が満たされているか否かを判定する。実行条件が満たされていない場合は（ステップＳ６１でＮＯ）、基本アシスト処理は終了する。実行条件が満たされている場合は（ステップＳ６１でＹＥＳ）、ステップＳ６２で、プロセッサ部１１は、自車オブジェクト１０１の速度ベクトル４５２を算出する。更に、ステップＳ６３で、プロセッサ部１１は、自車オブジェクト１０１から最も近いコース端のコース端向き４６２を算出する。更に、ステップＳ６４で、プロセッサ部１１は、自車オブジェクト１０１から上記コース端までの距離ｄを算出する。そして、ステップＳ６５で、プロセッサ部１１は、上記速度ベクトル４５２、コース端向き４６２、距離ｄ、プレイヤハンドル入力値３０９に基づいて、ハンドル入力値の補正量４５３および自車オブジェクトの強制移動ベクトル４５４を算出する。以上で、基本アシスト処理は終了する。
【０１０３】
図２２に戻り、次に、ステップＳ２７で、プロセッサ部１１は、（今回の処理ループにおいて）コースアウト防止の制御、または、予測ハンドルの制御が行われたか否かを判定する。その結果、行われていれば（ステップＳ２７でＹＥＳ）、アシスト処理は終了する。一方、いずれも行われていなかったときは（ステップＳ２７でＮＯ）、ステップＳ２８で、プロセッサ部１１は、コース向き揃え処理を実行する。その後、アシスト処理が終了する。
【０１０４】
［コース向き揃え処理］
次に、図３２を用いて、上記コース向き揃え処理の概要を説明する。この処理は、コースアウト等の危険性が小さい状況において、自車オブジェクト１０１がなるべくコースに沿って走れるようにハンドル入力値に補正をかける処理である。その実行条件としては、以下の３つの条件を満たした場合に実行される。まず、１つ目として、（現在の処理ループにおける）これまでの処理において、コースアウト防止処理、予測ハンドル処理、基本アシスト処理の全てのアシスト制御が行われていないことが条件となる。また、２つ目として、自車オブジェクト１０１がドリフト状態ではないことも条件となる。更に、３つ目として、カーブの外側に向かう状況、またはカーブの内側に向かう場合であって、コース端に衝突する（コースアウトする）と予測される状況であることも条件となる。
【０１０５】
この処理では、次のような処理が実行される。まず、自車オブジェクト１０１の速度ベクトル４５２の算出と、自車オブジェクト１０１に最も近いコース端向き４６２の算出が行われる。そして、当該速度ベクトル４５２およびコース端向き４６２に基づいて、ハンドル入力値の補正方向および補正量４５３の算出が行われる。ここで、本処理では、コース端向き４６２と速度ベクトル４５２との向きとが大きく違っているほど（両者の角度差が大きいほど）、補正量４５３が大きくなるように、また、コース端向き４６２と速度ベクトル４５２との向きとが近いほど（両者の角度差が小さいほど）、その補正量４５３が小さくなるように算出される。図３２の例でいうと、コース端向き４６２と速度ベクトル４５２の向き（両者のなす角度）について見ると、Ｃａｓｅ１よりもＣａｓｅ２のほうが、その向きの違いが大きくなっている。そのため、Ｃａｓｅ１よりもＣａｓｅ２のほうが、その補正量としては大きな値が算出される。更に、Ｃａｓｅ２とＣａｓｅ３を比べると、Ｃａｓｅ３のほうが、両者の向きの違いが大きなものとなっている。そのため、そのため、Ｃａｓｅ２よりもＣａｓｅ３のほうが、その補正量としては大きな値が算出されることになる。
【０１０６】
なお、本処理においては、プレイヤのハンドル入力を優先させる制御も行われる。例えば、プレイヤからのハンドル入力が検出されている場合は、上記の補正量を弱めたり、あるいは、全く補正しないようにしたりする制御も行われる。
【０１０７】
コース向き揃え処理の他の一例を図３３に示す。図３３は、自車オブジェクト１０１がカーブを通過する場合の一例を示す図である。まず、図３３のＣａｓｅ１では、自車オブジェクト１０１は、カーブの内側に向かう状態となっている。また、カーブの内側の端に衝突する恐れもない状態である。このような場合は、コース向き揃えの処理は行われないことになる。一方、Ｃａｓｅ２では、自車オブジェクト１０１がカーブの中間に差し掛かり、自車オブジェクト１０１がカーブの外側に向かう状態に変化している。このように、カーブの外側に向かう状態となれば、コース向き揃え処理が実行される。その結果、自車オブジェクト１０１の走行軌道が、少し内側向きに変化することになる、
【０１０８】
このように、コース向き揃え処理では、他のアシスト処理が行われていない状況で、プレイヤのハンドル入力を優先させながらも、自車オブジェクト１０１の向きがコース向きに沿う方向に近づくように若干の補正を加える、という処理行うものである。
【０１０９】
図３４に、コース向き揃え処理のフローチャートを示す。図３４において、まず、ステップＳ７１で、プロセッサ部１１は、上記のようなコース向き揃え処理の実行条件が満たされているか否かを判定する。その結果、満たされていない場合は（ステップＳ７１でＮＯ）、コース向き揃え処理は終了する。一方、実行条件が満たされていた場合は（ステップＳ７１でＹＥＳ）、ステップＳ７２で、プロセッサ部１１は、自車オブジェクト１０１の速度ベクトル４５２を算出する。更に、ステップＳ７３で、プロセッサ部１１は、自車オブジェクト１０１から最も近いコース端向き４６２を算出する。
【０１１０】
次に、ステップＳ７４で、プロセッサ部１１は、操作データ３０２を参照して、プレイヤからのハンドル入力が行われているか否かを判定する。その結果、プレイヤのハンドル入力が行われていない場合は（ステップＳ７４でＮＯ）、ステップＳ７５で、プロセッサ部１１は、上記速度ベクトル４５２の向きおよびコース端向き４６２に基づいて、ハンドル入力の補正値４５３を算出する。一方、プレイヤからのハンドル入力が行われている場合は（ステップＳ７４でＹＥＳ）、ステップＳ７６で、プロセッサ部１１は、プレイヤのハンドル入力を考慮した補正量の算出処理を行う。例えば、上記ステップＳ７５の処理で算出される補正量４５３よりも小さな値の補正量となるように補正量４５３を算出する。また、他の実施形態では、補正量として０を設定するようにしてもよいし、ステップＳ７６の処理自体行わないような制御としても良い。以上で、コース向き揃え処理は終了する。
【０１１１】
図１６に戻り、アシスト処理が終われば、ステップＳ７で、プロセッサ部１１は、上記アシスト処理の結果を反映して自車オブジェクト１０１を移動させる。すなわち、上述したアシスト処理において算出された補正量を用いて、プレイヤハンドル入力値３０９を補正し、当該補正後の値で自車オブジェクト１０１を移動制御する処理が実行される。その後、上記ステップＳ２に戻り、処理が繰り返される。
【０１１２】
以上で、本実施形態にかかるハンドルアシスト処理の詳細説明を終了する。
【０１１３】
このように、本実施形態では、上記のようなアシスト処理を用いて補正量を算出し、プレイヤが入力したハンドル入力値を補正している。そして、当該補正後のハンドル入力値を用いて、自車オブジェクト１０１の移動制御を行っている。これにより、自車オブジェクト１０１の動きについてプレイヤに違和感を与えずに、プレイヤのハンドル操作をサポートできる。また、レースゲームが下手なプレイヤであっても、上記のようなアシスト処理によって、レースコースを上手く走れるようにサポートでき、ゲームの興趣性をより高めることができる。
【０１１４】
また、上記補正内容の決定についても、上記のようにコース端に基づいて補正量を決定している。そのため、コースアウトしそうな場合や、コース端が壁であった場合はその壁への激突等の、コースに沿った走行にプレイヤが失敗しそうな場合を想定した、より適切な補正が可能となる。
【０１１５】
なお、上述したようなハンドルアシスト処理にかかる制御は、基本的には、コースアウトの回避（コース端への衝突の回避）を主眼としたものであったが、この他、他の実施形態では、例えば所定のオブジェクトとの衝突を回避するために上記のような制御処理を適用してもよい。この場合は、上述した処理におけるコース端との衝突（コースアウト）の判定を、所定のオブジェクトとの衝突に置き換えるような処理とすればよい。特に、上述した処理におけるコース端におけるコースの向き（進行方向、コース端向き）に該当するものとして、所定のオブジェクトとの予測衝突点での接線であって、コースの進行方向側の線を用いるようにすればよい。また、実行する制御に関しては、上述した予測ハンドル処理と、コースアウト防止処理に相当する処理のみを実行するようにすればよい。
【０１１６】
また、その他、対戦レースの場合に、上述したような処理を適用しても良い。ここで、対戦レースの場合、コースの壁に正面からぶつかってしまった場合の復帰が初心者にとっては難しい場合が多い。そのため、上級者との対戦が十分に楽しめなくなる可能性もある。そこで、上述したような処理を利用してコースの壁を検知するようにして、コース壁に衝突させずに、自車オブジェクトを旋回させるような制御を行ってもよい。このときは、そのときにプレイヤから入力されているハンドル入力方向に自車オブジェクトを旋回させるようにすればよい。また、もしプレイヤからのハンドル入力が無かった場合は、前回（一番最後）までにプレイヤから入力されたハンドル入力方向に旋回させるようにすればよい。そして、コース壁と衝突しなくなる向きまで自車オブジェクトを旋回させれば、このような処理を終了すればよい。
【０１１７】
また、ハンドル入力に関して、上記の例では、第１アナログスティック６３を用いたアナログ入力である場合を例に挙げた。この他、例えば十字キー６５による入力をハンドル操作に用いるようにしても良い。この場合は、デジタル入力となるため、上記プレイヤハンドル入力値３０９は、−１、０、＋１のうちのいずれかの値となるが、この場合でも、上記のような補正処理は適用可能である。
【０１１８】
また、上記実施形態では、コース端の算出については、上記パスデータ３０６を用いて、自車オブジェクト１０１の現在位置の前後２パス分におけるコースの端をリアルタイムに算出するようにしていた。この他、他の実施形態では、コース端を示す情報については、上記のようなパスデータの形式に限らず、他の形式でデータを持たせるようにしてもよい。例えば、仮想空間内におけるコース端の座標を羅列したような端データを用いてもよい。このようなデータを用いて、コース端の位置を判別し、上記のようなコースアウトの判定やコース端向き４６３の算出等を行ってもよい。
【０１１９】
また、上記の例ではレースゲームの例を挙げたが、この他、例えばレースでは無いドライブゲーム等にも上記の処理は適用可能である。例えば、プレイヤが自分で仮想空間内における目的地（レースゲームのゴールに相当）を設定して、当該仮想空間内を走行するようなドライブゲームにも適用可能である。
【０１２０】
また、上記実施形態においては、ハンドル入力値を補正するための一連の処理が単一の装置において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【符号の説明】
【０１２１】
１    ゲームシステム
２    モニタ
３    ゲーム装置本体
６    コントローラ
１１  プロセッサ部
１２  メインメモリ
１３  システムＬＳＩ
１４    無線通信部
１５    ＡＶ−ＩＣ
【図１】
2018064767.tif 000003
【図２】
2018064767.tif 000004
【図３】
2018064767.tif 000005
【図４】
2018064767.tif 000006
【図５】
2018064767.tif 000007
【図６】
2018064767.tif 000008
【図７】
2018064767.tif 000009
【図８】
2018064767.tif 000010
【図９】
2018064767.tif 000011
【図１０】
2018064767.tif 000012
【図１１】
2018064767.tif 000013
【図１２】
2018064767.tif 000014
【図１３】
2018064767.tif 000015
【図１４】
2018064767.tif 000016
【図１５】
2018064767.tif 000017
【図１６】
2018064767.tif 000018
【図１７】
2018064767.tif 000019
【図１８】
2018064767.tif 000020
【図１９】
2018064767.tif 000021
【図２０】
2018064767.tif 000022
【図２１】
2018064767.tif 000023
【図２２】
2018064767.tif 000024
【図２３】
2018064767.tif 000025
【図２４】
2018064767.tif 000026
【図２５】
2018064767.tif 000027
【図２６】
2018064767.tif 000028
【図２７】
2018064767.tif 000029
【図２８】
2018064767.tif 000030
【図２９】
2018064767.tif 000031
【図３０】
2018064767.tif 000032
【図３１】
2018064767.tif 000033
【図３２】
2018064767.tif 000034
【図３３】
2018064767.tif 000035
【図３４】
2018064767.tif 000036