(57)【特許請求の範囲】
【請求項１】
ゲーム空間に登場する移動体キャラクタと、当該移動体キャラクタを運転する運転者キャラクタと、当該移動体キャラクタに搭乗する搭乗者キャラクタとを含む複数のキャラクタを動作させるゲーム装置であって、
プレイヤによって操作される複数個の操作スイッチを有するコントローラの、第１の操作スイッチに加えられる操作に応じて第１の操作データを取得し、第２の操作スイッチに加えられる操作に応じて第２の操作データを取得する操作データ取得手段と、
前記第１の操作データに応じて、前記運転者キャラクタに所定の動作を行わせると共に、前記移動体キャラクタの向きおよび進行方向を変化させる第１動作制御手段と、
前記第２の操作データに応じて、前記搭乗者キャラクタの姿勢を一方の方向に加重する動作を行うように変化させ、前記移動体キャラクタの向き、進行方向および進行方向を軸とした回転方向の傾きを変化させる第２動作制御手段と、
前記複数のキャラクタを含むゲーム画像を生成して表示装置に表示させる画像処理手段とを備える、ゲーム装置。
【請求項２】
前記操作データ取得手段は、第３の操作スイッチに加えられる操作に応じて第３の操作データをさらに取得し、
前記第３の操作データに応じて、前記運転者キャラクタと搭乗者キャラクタとの配置が交代するようにそれぞれのキャラクタの配置座標を徐々に変化させるキャラクタ交代手段をさらに備え、
前記画像処理手段は、前記配置座標に前記キャラクタが配置されたゲーム画像を生成して表示装置に表示させる、請求項１に記載のゲーム装置。
【請求項３】
ゲーム空間に登場する移動体キャラクタと、当該移動体キャラクタを運転する運転者キャラクタと、当該移動体キャラクタに搭乗する搭乗者キャラクタとを含む複数のキャラクタを動作させるゲーム装置のコンピュータで実行されるプログラムであって、
プレイヤによって操作される複数個の操作スイッチを有するコントローラの、第１の操作スイッチに加えられる操作に応じて第１の操作データを取得し、第２の操作スイッチに加えられる操作に応じて第２の操作データを取得する操作データ取得ステップと、
前記第１の操作データに応じて、前記運転者キャラクタに所定の動作を行わせると共に、前記移動体キャラクタの向きおよび進行方向を変化させる第１動作制御ステップと、
前記第２の操作データに応じて、前記搭乗者キャラクタの姿勢を一方の方向に加重する動作を行うように変化させ、前記移動体キャラクタの向き、進行方向および進行方向を軸とした回転方向の傾きを変化させる第２動作制御ステップと、
前記複数のキャラクタの画像を生成して表示装置に表示させる画像処理ステップとを、前記コンピュータに実行させる、ゲームプログラム。
【請求項４】
前記操作データ取得ステップは、第３の操作スイッチに加えられる操作に応じて第３の操作データをさらに取得し、
前記第３の操作データに応じて、前記運転者キャラクタと搭乗者キャラクタとの配置が交代するようにそれぞれのキャラクタの配置座標を徐々に変化させるキャラクタ交代ステップを前記コンピュータにさらに実行させ、
前記画像処理ステップは、前記配置座標に前記キャラクタが配置されたゲーム画像を生成して表示装置に表示させる、請求項３に記載のゲームプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ゲーム装置に関し、より特定的には、プレイヤが画面上に表示されるキャラクタを操作するゲーム装置に関する。
【０００２】
【従来の技術】
従来のレースゲームやアクションゲームにおいて、プレイヤは、１人のプレイヤにつき１つのキャラクタを操作することが一般的である。例えば、従来のレースゲームでは、１人のプレイヤが１台の車（１人のドライバ）を操作することによって、レースゲームが行われる。ここで、従来のレースゲームやアクションゲームでは、複数のキャラクタを操作するというゲーム感覚を得ることができないので、プレイヤの面白みは半減してしまう。
【０００３】
そこで、１人のプレイヤが複数のキャラクタを操作する技術が考えられている。例えば、特開２００１−３００１４３号公報に記載の発明が挙げられる。かかる発明は、ゲームの進行を停止または遅くすることによって、その間に２体以上のキャラクタを操作するものである。これによって、プレイヤは、複数のキャラクタを容易に操作することができる。
【０００４】
【発明が解決しようとする課題】
上述した従来の技術では、１人のプレイヤが複数のキャラクタを同時に操作することはできなかった。上述したように、従来のレースゲームやアクションゲームでは、１人のプレイヤが複数のキャラクタを操作することはできない。また、上記公報に記載の発明においても、１人のプレイヤが複数のキャラクタを操作することはできても、操作を同時に行うことはできない。以上のように、プレイヤは、複数のキャラクタを同時に操作するというゲーム感覚を得ることができなかった。そのため、複数のキャラクタを操作するゲームにおける面白みを半減させていた。
【０００５】
なお、ＲＰＧゲームでは、従来から１人のプレイヤが複数のキャラクタを操作することが行われている。しかし、従来のＲＰＧゲームでは、プレイヤは、複数のキャラクタを順番に操作しているだけであり、複数のプレイヤを同時に操作することはできない。従って、従来のＲＰＧゲームにおいても、上記公報に記載の発明と同様、複数のキャラクタを操作するゲームにおける面白みは十分に発揮されていなかった。
【０００６】
それ故に、本発明の目的は、複数のキャラクタを同時に操作させるという新規なゲーム感覚をプレイヤに与えることができるゲーム装置を提供することである。
【０００７】
【課題を解決するための手段および発明の効果】
この発明は、上記の目的を達成するために、次のように構成される。
すなわち、請求項１に係る発明によれば、ゲーム装置は、ゲーム空間に登場する移動体キャラクタと、当該移動体キャラクタを運転する運転者キャラクタと、当該移動体キャラクタに搭乗する搭乗者キャラクタとを含む複数のキャラクタを動作させる。ゲーム装置は、プレイヤによって操作される複数個の操作スイッチを有するコントローラの、第１の操作スイッチに加えられる操作に応じて第１の操作データを取得し、第２の操作スイッチに加えられる操作に応じて第２の操作データを取得する操作データ取得手段と、第１の操作データに応じて、運転者キャラクタに所定の動作を行わせると共に、移動体キャラクタの向きおよび進行方向を変化させる第１動作制御手段と、第２の操作データに応じて、搭乗者キャラクタの姿勢を一方の方向に加重する動作を行うように変化させ、移動体キャラクタの向き、進行方向および進行方向を軸とした回転方向の傾きを変化させる第２動作制御手段と、複数のキャラクタを含むゲーム画像を生成して表示装置に表示させる画像処理手段とを備える。
【００１０】
また、請求項２に係る発明によれば、操作データ取得手段は、第３の操作スイッチに加えられる操作に応じて第３の操作データをさらに取得する。ゲーム装置は、第３の操作データに応じて、運転者キャラクタと搭乗者キャラクタとの配置が交代するようにそれぞれのキャラクタの配置座標を徐々に変化させるキャラクタ交代手段をさらに備える。画像処理手段は、配置座標にキャラクタが配置されたゲーム画像を生成して表示装置に表示させる。
【００１１】
また、請求項３に係る発明によれば、ゲームプログラムは、ゲーム空間に登場する移動体キャラクタと、当該移動体キャラクタを運転する運転者キャラクタと、当該移動体キャラクタに搭乗する搭乗者キャラクタとを含む複数のキャラクタを動作させるゲーム装置のコンピュータで実行される。ゲームプログラムは、プレイヤによって操作される複数個の操作スイッチを有するコントローラの、第１の操作スイッチに加えられる操作に応じて第１の操作データを取得し、第２の操作スイッチに加えられる操作に応じて第２の操作データを取得する操作データ取得ステップと、第１の操作データに応じて、運転者キャラクタに所定の動作を行わせると共に、移動体キャラクタの向きおよび進行方向を変化させる第１動作制御ステップと、第２の操作データに応じて、搭乗者キャラクタの姿勢を一方の方向に加重する動作を行うように変化させ、移動体キャラクタの向き、進行方向および進行方向を軸とした回転方向の傾きを変化させる第２動作制御ステップと、複数のキャラクタの画像を生成して表示装置に表示させる画像処理ステップとを、コンピュータに実行させる。
【００１２】
また、請求項４に係る発明によれば、操作データ取得ステップは、第３の操作スイッチに加えられる操作に応じて第３の操作データをさらに取得する。ゲームプログラムは、第３の操作データに応じて、運転者キャラクタと搭乗者キャラクタとの配置が交代するようにそれぞれのキャラクタの配置座標を徐々に変化させるキャラクタ交代ステップをコンピュータにさらに実行させる。画像処理手段は、配置座標にキャラクタが配置されたゲーム画像を生成して表示装置に表示させる。
【００２３】
【発明の実施の形態】
図１は本発明の一実施形態に係るゲームシステムの構成を示す外観図であり、図２はそのブロック図である。図１、図２に示すように、ゲームシステムは、ゲーム機本体１０１、ＤＶＤ−ＲＯＭ１０２、メモリカード１０３、コントローラ１０４、スピーカ２０１およびテレビ１０５を備える。ＤＶＤ−ＲＯＭ１０２およびメモリカード１０３は、ゲーム機本体１０１に着脱自在に装着される。コントローラ１０４は、ゲーム機本体１０１に設けられる複数（図１では、４つ）のコントローラポート１０４用コネクタのいずれかに接続される。また、テレビ１０５およびスピーカ２０１は、ＡＶケーブル等によって接続される。なお、他の実施形態においては、ゲーム機本体１０１とコントローラ１０４との通信は、通信ケーブルを用いずに無線通信によって行われてもよい。以下、本発明に係るゲームシステムにおける各部を詳細に説明する。以下、図２を参照しながら、ゲームシステムにおける一般的な動作を説明する。
【００２４】
外部記憶媒体の一例であるＤＶＤ−ＲＯＭ１０２は、ゲームプログラムやキャラクタデータ等のゲームに関するデータを固定的に記憶している。プレイヤがゲームを行う場合、ＤＶＤ−ＲＯＭ１０２はゲーム機本体１０１に装着される。なお、ゲームプログラム等を記憶する手段は、ＤＶＤ−ＲＯＭ１０２に限らず、例えばＣＤ−ＲＯＭ、ＭＯ、メモリカード、ＲＯＭカートリッジ等の記憶媒体であってもよい。メモリカード１０３は、例えばフラッシュメモリ等の書き換え可能な記憶媒体によって構成され、例えばゲームにおけるセーブデータ等のデータを記録する。
【００２５】
ゲーム機本体１０１は、ＤＶＤ−ＲＯＭ１０２に記録されているゲームプログラムを読み出し、ゲーム処理を行う。ゲーム機本体１０１の構成およびゲーム処理の詳細は後述する。コントローラ１０４は、プレイヤがゲーム操作に関する入力を行うための入力装置であり、複数の操作スイッチを有する。コントローラ１０４は、プレイヤによる操作スイッチの押圧等に応じて操作データをゲーム機本体１０１に出力する。テレビ１０５は、ゲーム機本体１０１から出力された画像データを画面に表示する。また、スピーカ２０１は、典型的にはテレビ１０５に内蔵されており、ゲーム機本体１０１から出力されたゲーム中の音声を出力する。
【００２６】
次に、ゲーム機本体１０１の構成について説明する。図２において、ゲーム機本体１０１内には、ＣＰＵ２０２およびそれに接続されるメモリコントローラ２０３が設けられる。さらに、ゲーム機本体１０１内において、メモリコントローラ２０３は、グラフィックスプロセッシングユニット（ＧＰＵ）２０４と、メインメモリ２０５と、ＤＳＰ２０６を介してサブメモリ２０７と、各種インターフェース（ＩＦ）２０８〜２１１とに接続される。メモリコントローラ２０３は、これら各構成要素間のデータ転送を制御する。
【００２７】
ゲーム開始の際、まず、ＤＶＤドライブ２１３は、ゲーム機本体１０１に装着されたＤＶＤ−ＲＯＭ１０２を駆動する。ＤＶＤ−ＲＯＭ１０２に記憶されているゲームプログラムは、ＤＶＤＩ／Ｆ２１２およびメモリコントローラ２０３を介して、メインメモリ２０５に読み込まれる。メインメモリ２０５上のプログラムをＣＰＵ２０２が実行することによって、ゲームが開始される。ゲーム開始後、プレイヤは、操作スイッチを用いてコントローラ１０４に対してゲーム操作等の入力を行う。プレイヤによる入力に従い、コントローラ１０４は、操作データをゲーム機本体１０１に出力する。コントローラ１０４から出力される操作データは、コントローラＩ／Ｆ２０８およびメモリコントローラ２０３を介してＣＰＵ２０２に入力される。ＣＰＵ２０２は、入力された操作データに応じてゲーム処理を行う。ゲーム処理における画像データ生成等に際して、ＧＰＵ２０４やＤＳＰ２０６が用いられる。また、サブメモリ２０７は、ＤＳＰ２０６が所定の処理を行う際に用いられる。
【００２８】
ＧＰＵ２０４は、ジオメトリユニット２１４およびレンダリングユニット２１５を含み、画像処理専用のメモリに接続されている。この画像処理専用メモリは、例えばカラーバッファ２１６およびＺバッファ２１７として利用される。ジオメトリユニット２１４は、仮想３次元空間であるゲーム空間に置かれた物体や図形に関する立体モデル（例えばポリゴンで構成されるオブジェクト）の座標についての演算処理を行うものであり、例えば立体モデルの回転・拡大縮小・変形や、ワールド座標系の座標から視点座標系やスクリーン座標系の座標への変換を行うものである。レンダリングユニット２１５は、所定のテクスチャに基づいて、スクリーン座標に投影された立体モデルについて各ピクセルごとのカラーデータ（ＲＧＢデータ）をカラーバッファ２１６に書き込むことによって、ゲーム画像を生成するためのものである。また、カラーバッファ２１６は、レンダリングユニット２１５によって生成されたゲーム画像データ（ＲＧＢデータ）を保持するために確保されたメモリ領域である。Ｚバッファ２１７は、３次元の視点座標から２次元のスクリーン座標に変換する際に失われる視点からの奥行情報を保持するために確保されたメモリ領域である。ＧＰＵ２０４は、これらを用いてテレビ１０５に表示すべき画像データを生成し、適宜メモリコントローラ２０３およびビデオＩ／Ｆ２０９を介してテレビ１０５に出力する。なお、ゲームプログラム実行時にＣＰＵ２０２において生成される音声データは、メモリコントローラ２０３からオーディオＩ／Ｆ２１１を介して、スピーカ２０１に出力される。なお、本実施例では、画像処理専用のメモリを別途設けたハードウェア構成としたが、これに限らず例えばメインメモリ２０５の一部を画像処理用のメモリとして利用する方式（ＵＭＡ：Ｕｎｉｆｉｅｄ  Ｍｅｍｏｒｙ  Ａｒｃｈｉｔｅｃｔｕｒｅ）を使うようにしてもよい。
【００２９】
次に、コントローラ１０４において生成される操作データについて説明する。図３は、図１に示すコントローラ１０４の操作スイッチの構成を示す図である。図３において、コントローラ１０４は、Ｚボタン３０１と、Ｒボタン３０２と、Ｌボタン３０３と、Ａボタン３０４と、Ｂボタン３０５と、Ｘボタン３０６と、Ｙボタン３０７と、スタートボタン３０８と、十字キー３０９と、メインアナログスティック３１０と、サブアナログスティック３１１とを有する構成である。以上のように構成されるコントローラ１０４において生成される操作データの構成を、図４に示す。
【００３０】
図４に示すように、操作データは例えば７バイトで構成される。１バイト目の８ビットは、Ｚボタン３０１、Ｒボタン３０２、Ｌボタン３０３と、Ａボタン３０４と、Ｂボタン３０５と、Ｘボタン３０６と、Ｙボタン３０７およびスタートボタン３０８の操作状態を表す。具体的には、１バイト目の８ビットは、上記各ボタンが押圧されているか否かを表す。２バイト目は、十字キー３０９の操作状態を表す。２バイト目の最初の４ビットは、それぞれ十字キー３０９における上下左右ボタンが押圧されているか否かを表す。なお、２バイト目の残り４ビットは、本実施形態においては使用されない。
【００３１】
３バイト目は、メインアナログスティック３１０のｘ軸データを表す。ｘ軸データとは、図３に示すｘ軸の方向についてメインアナログスティック３１０が傾倒されている度合を示すデータである。すなわち、３バイト目は、図３に示すｘ軸の方向にメインアナログスティック３１０がどの程度倒されているかを示す。従って、メインアナログスティック３１０は、プレイヤが当該スティックを倒す度合に応じて入力される値が異なる。また、４バイト目は、メインアナログスティック３１０のｙ軸データを表す。ｙ軸データとは、図３に示すｙ軸の方向についてメインアナログスティック３１０が傾倒されている度合を示すデータである。以上より、操作データの３バイト目および４バイト目によって、メインアナログスティック３１０が傾倒されている角度（度合）と方向を表すことができる。また、５バイト目および６バイト目は、サブアナログスティック３１１についてのｘ軸データおよびｙ軸データを表す。従って、メインアナログスティック３１０の場合と同様、操作データの５バイト目および６バイト目によって、サブアナログスティック３１１が傾倒されている角度（度合）と方向を表すことができる。
【００３２】
７バイト目は、Ｒボタン３０２およびＬボタン３０３のアナログデータを表す。ここで、Ｒボタン３０２（Ｌボタン３０３）のアナログデータは、Ｒボタン３０２（Ｌボタン３０３）が押圧されている度合を示すデータである。従って、７バイト目のデータが示す値は、プレイヤがＲボタン３０２またはＬボタン３０３を押す度合（例えばボタンの押込み量）に応じて変化する。なお、７バイト目の最初の４ビットがＲボタン３０２のアナログデータを表し、残りの４ビットがＬボタン３０３のアナログデータを表す。
【００３３】
次に、本実施形態において行われるゲームの概要を説明する。図５は、本実施形態において行われるゲームの表示例を示す図である。また、図６は、図５に示すゲームにおいてプレイヤが操作するキャラクタを示す図である。なお、図６（ａ）はカート後方から見た図であり、図６（ｂ）はカート側方から見た図である。本実施形態におけるゲームは、図５に示すようなレースゲームであり、プレイヤは、図６に示すキャラクタを操作する。図６に示すように、プレイヤが操作するキャラクタは、移動体キャラクタ（カート）６０１と、当該移動体キャラクタ６０１を運転する運転者キャラクタ６０２と、当該運転者キャラクタ６０２の他に移動体キャラクタ６０１に搭乗する搭乗者キャラクタ６０３とからなる。なお、移動体キャラクタ６０１、運転者キャラクタ６０２および搭乗者キャラクタ６０３は一体的に移動する。ここで、プレイヤは、大きく分けて２種類の操作を行う。１つは、運転者キャラクタ６０２に対して行う操作である。もう一つは、搭乗者キャラクタ６０３に対して行う操作である。ここで、運転者キャラクタ６０２および移動体キャラクタ６０３に対する操作は、各キャラクタの挙動に加え、移動体キャラクタ６０１の挙動にも反映される。従って、プレイヤは、運転者キャラクタ６０２を操作するとともに、搭乗者キャラクタ６０３を操作することによって、移動体キャラクタ６０１を操作することになる。本レースゲームは、プレイヤが上記２種類の操作を行うことによってカートを運転し、他のプレイヤやゲーム装置によって操作される他のカートとレースを行うゲームである。なお、以下の説明において、プレイヤが操作するキャラクタ、すなわち、移動体キャラクタ６０１と、運転者キャラクタ６０２と、搭乗者キャラクタ６０３とからなるキャラクタを、操作対象キャラクタと呼ぶ。なお、本実施形態においては、プレイヤの所望のタイミングで、運転者キャラクタ６０２と搭乗者キャラクタ６０３とを交代させることが可能である。具体的には、本実施形態に係るゲームにおいては、運転者キャラクタ６０２および搭乗者キャラクタ６０３となりうる、人物を模した複数の人物キャラクタが予め用意されており、レース中における所望のタイミングでコントローラのボタンが操作されたことに応じて、運転者キャラクタ６０２に設定されているキャラクタと、搭乗者キャラクタ６０３に設定されているキャラクタとを変更することができる。また、各人物キャラクタにそれぞれ固有の属性（例えば、体重等）を持たせており、体重の重い人物キャクタが運転者であるときには移動体キャラクタ６０３を回転し難くし、搭乗者である場合には回転しやすくなるように、移動体キャラクタ６０３の動作をさらに変化させる。
【００３４】
次に、本実施形態に係るゲーム装置において行われるゲーム処理を説明する。ここで、ゲーム装置とは、ＤＶＤ−ＲＯＭ１０２が装着されたゲーム機本体１０１およびコントローラ１０４とを含むものである。図７は、本ゲーム装置のＣＰＵ２０２およびＧＰＵ２０４の協調動作によって行われるゲーム処理の流れを示すフローチャートである。なお、本実施例では、ＣＰＵ２０２とＧＰＵ２０４の協調動作によってゲーム処理を行わせているが、例えばＣＰＵ２０２のみによってジオメトリ処理等のほぼ全ての処理を行わせることも可能である。
【００３５】
ゲームが開始されると、まず、ＣＰＵ２０２は、ゲーム空間を形成する（ステップＳ１０１）。具体的には、ＣＰＵ２０２は、レースコース等の地形を形成するための地形オブジェクトを、ゲーム空間である３次元のワールド座標系に配置する。次に、ＣＰＵ２０２は、ゲームに登場する操作対象キャラクタをワールド座標系の初期座標に配置する（ステップＳ１０２）。なお、複数のプレイヤがいる場合や、プレイヤが１人であってもゲーム装置のコンピュータによって自動制御（操作）される操作対象キャラクタがある場合には、複数の操作対象キャラクタがゲームに登場する。以上の処理によって、レースを開始するための準備がなされ、ステップＳ１０２の後、レースが開始される。
【００３６】
レース開始後、ＣＰＵ２０２は、コントローラ１０４から図４に示す操作データを取得し（ステップＳ１０３）、操作データの入力があるか否かを判定する（ステップＳ１０４）。ステップＳ１０４において、「操作データの入力がある」とは、操作データの中にゲーム操作に必要な入力に関するデータが含まれていることを示す。ここで、本実施形態においては、ゲーム操作には、例えば、Ｚボタン３０１、Ｒボタン３０２、Ｌボタン３０３、Ａボタン３０４、メインアナログスティック３１０が使用されるものとする。従って、取得された操作データの中にこれらの入力に関するデータが含まれている場合、ＣＰＵ２０２は、操作データの入力があると判定する。逆に、取得された操作データの中にこれらの入力に関するデータが含まれていない場合、ＣＰＵ２０２は、操作データの入力がないと判定する。例えば、ステップＳ１０３において取得された操作データの中に、サブアナログスティック３１１の入力に関するデータのみが含まれている場合、ＣＰＵ２０２は操作データの入力がないと判定する。
【００３７】
ステップＳ１０４の判定において、操作データの入力がないと判定された場合、ＣＰＵ２０２は、ステップＳ１０５およびステップＳ１０６の処理をスキップし、ステップＳ１０７の処理を行う。一方、ステップＳ１０４の判定において、操作データの入力があると判定された場合、ＣＰＵ２０２は、キャラクタ交代処理を行う（ステップＳ１０５）。キャラクタ交代処理とは、図６に示す運転者キャラクタ６０２および搭乗者キャラクタ６０３の位置関係および役割の変更に関する処理である。なお、キャラクタ交代処理の詳細は、図９において説明されている。ステップＳ１０５の次に、ＣＰＵ２０２は、キャラクタ動作決定処理を行う（ステップＳ１０６）。キャラクタ動作決定処理とは、運転者キャラクタ６０２、搭乗者キャラクタ６０３および移動体キャラクタ６０１の動作を決定する処理である。なお、キャラクタ動作決定処理の詳細は、図１３において説明されている。
【００３８】
次に、ＣＰＵ２０２はＧＰＵ２０４に対して座標変換命令を発行し、これに応じてＧＰＵ２０４は、キャラクタや地形オブジェクト等について、上記ワールド座標系から仮想カメラを基準とするカメラ座標系（視点座標系ともいう）に変換する（ステップＳ１０７）。ここで、仮想カメラは、ゲーム空間を画面に表示する際の視点である。次に、ＧＰＵ２０４は、ステップＳ１０７において変換したカメラ座標系をさらに２次元の投影平面座標系（スクリーン座標系ともいう）に変換する（ステップＳ１０８）。この投影平面座標系へ変換処理の際に、ＧＰＵ２０４は、クリッピングやテクスチャの指定等や照明処理等を行うとともに、視点からの奥行情報をＺバッファに格納する。そして、ＧＰＵ２０４は、ラスタ処理、すなわち、Ｚバッファ２１７を参照しながら投影平面座標系に投影された各ポリゴンについてテクスチャに基づいた色情報（カラーデータ）をカラーバッファ２１６に書き込む（描画する）処理によって、ゲーム画像を生成し（ステップＳ１０９）、そのゲーム画像をテレビ１０５に表示させる（ステップＳ１１０）。以上のステップＳ１０３〜ステップＳ１１０の処理によって、１つのゲーム画像が生成、表示される。
【００３９】
ステップＳ１１０の次に、ＣＰＵ２０２は、ゲームを終了するか否かを判定する（ステップＳ１１１）。例えば、レースが終了した場合や、プレイヤが所定のゲーム終了操作を行った場合、ＣＰＵ２０２はゲームを終了すると判定する。ゲームを終了すると判定された場合、ＣＰＵ２０２は、図１０に示す処理を終了する。一方、ゲームを終了すると判定されなかった場合、ＣＰＵ２０２は、ステップＳ１０３〜ステップＳ１１１の一連の処理を繰り返す。
【００４０】
次に、ステップＳ１０５のキャラクタ交代処理について説明する。まず、キャラクタ交代処理の概要を説明する。上述したように、キャラクタ交代処理とは、図６に示す運転者キャラクタ６０２および搭乗者キャラクタ６０３の位置関係および役割の変更に関する処理である。具体的には、キャラクタ交代処理において、ＣＰＵ２０２は、プレイヤからキャラクタ交代の操作入力があった場合、運転者キャラクタ６０２および搭乗者キャラクタ６０３の位置関係および役割を変更する。本実施形態において、かかる変更処理は、コントローラ１０４のＺボタン３０１が押圧されることによって開始されるものとする。Ｚボタン３０１が押圧されると、ＣＰＵ２０２は、運転者キャラクタ６０２と搭乗者キャラクタ６０３とを変更するアニメーション（換言すれば、運転者キャラクタと搭乗者キャラクタのモーションデータを再生する）を表示させる。
【００４１】
図８は、図７のステップＳ１０５に示すキャラクタ交代処理におけるアニメーションの一例を示す図である。ＣＰＵ２０２は、図８に示すように、運転者キャラクタ６０２（図８では、キャラクタＢ）が車両後部に移動し、搭乗者キャラクタ６０３（図８では、キャラクタＡ）が車両前部に移動するように、複数のゲーム画像を表示させる。かかる表示は、図７に示すステップＳ１０３からステップＳ１１１までのループに係る処理を複数回繰り返すことによって行われる。図８を例にとって説明すると、ステップＳ１１０において図８（ａ）〜（ｅ）に示す画像が順に表示されることによって、運転者キャラクタ６０２と搭乗者キャラクタ６０３とを変更するアニメーションが表示されることとなる。ステップＳ１０５のキャラクタ交代処理は、かかる表示を行うための処理である。以下、キャラクタ交代処理の詳細を説明する。
【００４２】
図９は、図７に示すステップＳ１０５の詳細を示すフローチャートである。まず、ＣＰＵ２０２は、交代処理フラグがＯＮであるか否かを判定する（ステップＳ２０１）。ここで、交代処理フラグとは、ＣＰＵ２０２がキャラクタ交代処理を行っている途中か否かを示すフラグである。すなわち、交代処理フラグがＯＮであることは、ＣＰＵ２０２がキャラクタ交代処理を行っている途中であることを意味する。逆に、交代処理フラグがＯＦＦであることは、ＣＰＵ２０２がキャラクタ交代処理を行っていないことを示す。ステップＳ２０１において、交代処理フラグがＯＮである場合、ＣＰＵ２０２は、ステップＳ２０４の処理を行い、ステップＳ２０２の処理をとばす。従って、キャラクタ交代処理の途中では、ＣＰＵ２０２はステップＳ１０３において取得した操作データを用いた処理を行わない。つまり、キャラクタ交代処理の途中では、プレイヤからの操作入力は無視される。
【００４３】
一方、ステップＳ２０１において、交代処理フラグがＯＦＦである場合、ＣＰＵ２０２は、ステップＳ１０３において取得した操作データに基づいて、Ｚボタン３０１の入力がＯＮであるか否かを判定する（ステップＳ２０２）。ステップＳ２０２の判定は、ステップＳ１０３において取得された操作データにおける１バイト目の１ビット目を参照することによって行われる（図４参照）。ステップＳ２０２の判定において、Ｚボタン３０１の入力がＯＮである場合、ＣＰＵ２０２は、交代処理フラグをＯＮに設定し（ステップＳ２０３）、ステップＳ２０４の処理を行う。一方、Ｚボタン３０１の入力がＯＦＦである場合、ＣＰＵ２０２は、ステップＳ１０５のキャラクタ交代処理を終了する。
【００４４】
ステップＳ２０１において交代処理フラグがＯＮである場合、または、ステップＳ２０３において交代処理フラグがＯＮに設定された場合、ＣＰＵ２０２は、配置変換処理を行う（ステップＳ２０４）。配置変換処理とは、図８に示す表示例のように、運転者キャラクタ６０２および搭乗者キャラクタ６０３の配置を変更するための処理である。すなわち、ステップＳ２０４において、ＣＰＵ２０２は、運転者キャラクタ６０２と搭乗者キャラクタ６０３とを交代するように、それぞれの配置座標や姿勢を徐々に変化させる。図８を例に説明すると、直前のループ（ステップＳ１０３〜ステップＳ１１１のループ）における配置変換処理において、運転者キャラクタ６０２および搭乗者キャラクタ６０３が図８（ｂ）に示す状態であった場合、図８（ｃ）に示す状態に各キャラクタの動作を決定する。上述したように、キャラクタ交代処理は、図７に示すステップＳ１０３からステップＳ１１１までのループに係る処理を複数回繰り返すことによって行われる。すなわち、運転者キャラクタ６０２と搭乗者キャラクタ６０３とを変更する処理は、１回の配置変換処理で各キャラクタを交代させるものではなく、配置変換処理を複数回行うことによって完了するものである。
【００４５】
次に、ＣＰＵ２０２は、キャラクタの交代が完了したか否かを判定する（ステップＳ２０５）。ステップＳ２０５の判定は、直前に行われたステップＳ２０４の配置変換処理の内容に基づいて行われる。図８を例にとって説明すると、直前に行われた配置変換処理において運転者キャラクタ６０２および搭乗者キャラクタ６０３が図８（ｅ）に示す状態となった場合、ＣＰＵ２０２は、キャラクタの交代が完了したと判定する。逆に、直前に行われた配置変換処理において各キャラクタが図８（ｅ）に示す状態となっていない場合、ＣＰＵ２０２は、キャラクタの交代が完了していないと判定する。
【００４６】
ステップＳ２０５の判定において、キャラクタの交代が完了していない場合、ステップＳ１０５のキャラクタ交代処理を終了する。なお、この場合、交代処理フラグはＯＮに設定されたままであるので、次のループ（ステップＳ１０３からステップＳ１１１までのループ）において再度、ステップＳ２０４の配置変換処理が行われる。一方、ステップＳ２０５の判定において、キャラクタの交代が完了した場合、ＣＰＵ２０２は、運転者キャラクタ６０２および搭乗者キャラクタ６０３のキャラクタデータを変更する（ステップＳ２０６）。キャラクタデータとは、上述したキャラクタに固有の属性をいい、本実施形態においては、キャラクタの体重データである。すなわち、ステップＳ２０６において、ＣＰＵ２０２は、運転者キャラクタ６０２の体重データと、搭乗者キャラクタ６０３の体重データとを変更する。次に、ＣＰＵ２０２は、交代処理フラグをＯＦＦに設定し（ステップＳ２０７）、キャラクタ交代処理を終了する。
【００４７】
次に、ステップＳ１０６のキャラクタ動作決定処理について説明する。まず、キャラクタ動作決定処理の概要を説明する。キャラクタ動作決定処理は、運転者キャラクタ６０２、搭乗者キャラクタ６０３および移動体キャラクタ６０１それぞれの動作を、コントローラ１０４からの操作データに基づいて決定する処理である。以下、図１０から図１２を用いて、各キャラクタの動作とコントローラ１０４の操作との関係について説明する。
【００４８】
運転者キャラクタ６０２は、メインアナログスティック３１０によって操作される。具体的には、プレイヤがメインアナログスティック３１０を傾倒することによって、運転者キャラクタ６０２はハンドル操作を行う。なお、メインアナログスティック３１０の操作は、移動体キャラクタ６０１の動作（カート）にも関連している。
【００４９】
図１０は、メインアナログスティック３１０が右に傾倒されている場合における、図６に示す各キャラクタの表示状態を示す図である。なお、図１０（ａ）はカート後方から見た図であり、図１０（ｂ）はカート側方から見た図である。図１０（ｂ）のように、メインアナログスティック３１０が右に傾倒されている場合、運転者キャラクタ６０２はハンドルを右に切り、首を右に回す。なお、この場合、移動体キャラクタ６０１は前輪を右方向を向け、進行方向を右に変化させる。
【００５０】
搭乗者キャラクタ６０３は、コントローラ１０４のＲボタン３０２およびＬボタン３０３によって操作される。具体的には、プレイヤがＲボタン３０２を押圧することによって、搭乗者キャラクタ６０３は移動体キャラクタ６０１の右側に荷重する動作を行う。また、プレイヤがＬボタン３０３を押圧することによって、搭乗者キャラクタ６０３はカートの左側に荷重する動作を行う。なお、Ｒボタン３０２およびＬボタン３０３の操作は、移動体キャラクタ６０１の動作にも関連している。
【００５１】
図１１は、Ｒボタン３０２が押圧されている場合における、図６に示す各キャラクタの表示状態を示す図である。図８のように、Ｒボタン３０２が押圧されている場合、搭乗者キャラクタ６０３は、移動体キャラクタ６０１の右側に体重をかけるように動作する。この場合、移動体キャラクタ６０１は、姿勢を所定角度（図１１では、Δα１）だけ右に傾けて、かつ、進行方向を右に変化させる。なお、本実施形態においては、Ｒボタン３０２またはＬボタン３０３が押圧されているか否かのみに基づいて、搭乗者キャラクタ６０３の動作が決定される。ここで、他の実施形態においては、Ｒボタン３０２またはＬボタン３０３の押込み具合に応じて、搭乗者キャラクタ６０３の体重のかけ方（姿勢）が変化するようにしてもよい。
【００５２】
次に、移動体キャラクタ６０１の動作について説明する。移動体キャラクタ６０１は、メインアナログスティック３１０、Ｒボタン３０２およびＬボタン３０３によって進行方向が決定され、Ａボタン３０４によって移動する速さが決定される。従って、移動体キャラクタ６０１の進行方向に関する動作と、運転者キャラクタ６０２および搭乗者キャラクタ６０３の動作とは、連動している。換言すれば、移動体キャラクタ６０１の動作は、運転者キャラクタ６０２および搭乗者キャラクタ６０３の動作によって変化する。図１２は、メインアナログスティック３１０およびＲボタン３０２（Ｌボタン３０３）を操作した場合における、図６に示す移動体キャラクタ６０１の進行方向を示す図である。以下、移動体キャラクタ６０１の操作の詳細を説明する。
【００５３】
まず、図１２（ａ）のように、メインアナログスティック３１０のみが所定角度だけ右に傾いている場合、移動体キャラクタ６０１の向きは右にΔβ１だけ変化する。図１２（ａ）は、図１０に示す場合と同じ場合である。また、図１２（ｂ）のように、Ｒボタン３０２のみが押圧されている場合、移動体キャラクタ６０１の向きは右にΔα２だけ変化する。なお、図１２（ｂ）は、図１１に示す場合と同じ場合である。従って、図１２（ｂ）には示していないが、移動体キャラクタ６０１は、図１１に示すように、進行方向を軸とした回転方向にΔα１だけ姿勢を傾けている。
【００５４】
次に、図１２（ｃ）のように、メインアナログスティック３１０が所定角度（図１２（ａ）の場合と同じ角度）だけ右に傾いており、かつ、Ｒボタン３０２が押圧されている場合、移動体キャラクタ６０１の向きは右にΔγ１だけ変化する。なお、この場合、運転者キャラクタ６０２は右にハンドルを切る動作を行うように操作され、搭乗者キャラクタ６０３は移動体キャラクタ６０１の右側に荷重する動作を行うように操作されている。ここで、Δγ１は、Δβ１とΔα２との和よりも大きい。従って、運転者キャラクタ６０２と搭乗者キャラクタ６０３との双方について移動体キャラクタ６０１が右に曲がるように操作されている場合、どちらか一方が操作されている場合よりも大きく右に曲がることになる。換言すれば、移動体キャラクタ６０１を右に曲がらせやすい状態にする。
【００５５】
また、図１２（ｄ）のように、メインアナログスティック３１０が所定角度（図１２（ａ）の場合と同じ角度）だけ右に傾いており、かつ、Ｌボタン３０３が押圧されている場合、移動体キャラクタ６０１の向きは右にΔγ２だけ変化する。なお、この場合、運転者キャラクタ６０２は右にハンドルを切る動作を行うように操作され、搭乗者キャラクタ６０３は移動体キャラクタ６０１の左側に荷重する動作を行うように操作されている。ここで、Δγ２は、Δβ１よりも小さい。従って、運転者キャラクタ６０２について移動体キャラクタ６０１が右に曲がるように操作されており、搭乗者キャラクタ６０３について移動体キャラクタ６０１が左に曲がるように操作されている場合、運転者キャラクタ６０２のみを操作する場合よりも右に曲がる角度が小さくなる。換言すれば、移動体キャラクタ６０１を右に曲がらせにくい状態にする。以上のように、移動体キャラクタ６０１の動作は、運転者キャラクタ６０２に関する操作に加えて、搭乗者キャラクタ６０３に関する操作を反映させて決定される。
【００５６】
以下、ステップＳ１０６のキャラクタ動作決定処理の詳細について説明する。図１３は、図７に示すステップＳ１０６の詳細を示すフローチャートである。まず、ＣＰＵ２０２は、交代処理フラグがＯＮであるか否かを判定する（ステップＳ３０１）。交代処理フラグがＯＮである場合、ＣＰＵ２０２は、キャラクタ動作決定処理を終了する。従って、キャラクタ交代処理の途中では、ＣＰＵ２０２はステップＳ１０３において取得した操作データを用いた処理を行わない。つまり、キャラクタ交代処理の途中では、プレイヤからの操作入力は無視される。一方、交代処理フラグがＯＦＦである場合、ＣＰＵ２０２は、第１の動作制御処理を行う（ステップＳ３０２）。第１の動作制御処理とは、運転者キャラクタ６０２の動作を制御する処理である。第１の動作制御処理では、コントローラ１０４に含まれるメインアナログスティック３１０に加えられた操作に基づいて、運転者キャラクタ６０２の動作が決定される。以下、第１の動作制御処理の詳細を説明する。
【００５７】
図１４は、図１３に示すステップＳ３０２の詳細を示すフローチャートである。まず、ＣＰＵ２０２は、運転者キャラクタ６０２が操作されているか否かを判定する（ステップＳ４０１）。ステップＳ４０１における判定は、ステップＳ１０３において取得された操作データに、運転者キャラクタ６０２を操作するためのデータが含まれているか否かによって行われる。すなわち、当該操作データにおけるメインアナログスティック３１０に関する領域（３バイト目および４バイト目）に、メインアナログスティック３１０が傾倒されていることを示す情報が含まれている場合、ＣＰＵ２０２は運転者キャラクタ６０２が操作されていると判定する。逆に、当該操作データにおけるメインアナログスティック３１０に関する領域のデータが、メインアナログスティック３１０が傾倒されていないことを示す場合、ＣＰＵ２０２は運転者キャラクタ６０２が操作されていないと判定する。ステップＳ４０１の判定において、運転者キャラクタ６０２が操作されていない場合、ＣＰＵ２０２は、ステップＳ３０２の第１の動作制御処理を終了する。一方、ステップＳ４０１の判定において、運転者キャラクタ６０２が操作されている場合、ＣＰＵ２０２は、ステップＳ１０３において取得した操作データから運転者キャラクタ６０２用の操作命令を抽出する（ステップＳ４０２）。すなわち、ＣＰＵ２０２は、当該操作データから３バイト目および４バイト目のデータを抽出する。さらに、ＣＰＵ２０２は、抽出した操作命令に基づいて運転者キャラクタ６０２の動作を決定して（ステップＳ４０３）、ステップＳ３０２の第１の動作制御処理を終了する。ステップＳ４０３において決定される動作は、例えば、メインアナログスティック３１０のｘ軸方向における傾倒角度に応じた分だけ、運転者キャラクタ６０２がハンドルを切り、首を回すように決定される。
【００５８】
図１３の説明に戻り、第１の動作制御処理の後、ＣＰＵ２０２は、第２の動作制御処理を行う（ステップＳ３０３）。第２の動作制御処理とは、搭乗者キャラクタ６０３および移動体キャラクタ６０１の動作を制御する処理である。第２の動作制御処理では、コントローラ１０４に含まれるＲボタン３０２およびＬボタン３０３に加えられた操作に基づいて、搭乗者キャラクタ６０３の動作が決定される。さらに、第２の動作制御処理では、搭乗者キャラクタ６０３の動作を反映して移動体キャラクタ６０１の動作が決定される。すなわち、メインアナログスティック３１０およびＡボタン３０４に加え、上記Ｒボタン３０２およびＬボタン３０３に加えられた操作に基づいて、移動体キャラクタ６０１の動作が決定される。以下、第２の動作制御処理の詳細を説明する。
【００５９】
図１５は、図１３に示すステップＳ３０３の詳細を示すフローチャートである。まず、ＣＰＵ２０２は、搭乗者キャラクタ６０３に関する動作決定処理を行う（ステップＳ５０１）。搭乗者キャラクタ６０３に関する動作決定処理は、コントローラ１０４に含まれるＲボタン３０２およびＬボタン３０３に加えられた操作に基づいて、搭乗者キャラクタ６０３の動作を決定する処理である。以下、ステップＳ５０１に示す搭乗者キャラクタ６０３に関する動作決定処理の詳細を説明する。
【００６０】
図１６は、図１５に示すステップＳ５０１の詳細を示すフローチャートである。まず、ＣＰＵ２０２は、搭乗者キャラクタ６０３が操作されているか否かを判定する（ステップＳ６０１）。ステップＳ６０１における判定は、ステップＳ１０３において取得された操作データに、搭乗者キャラクタ６０３を操作するためのデータが含まれているか否かによって行われる。すなわち、当該操作データにおけるＲボタン３０２およびＬボタン３０３に関する領域に、Ｒボタン３０２またはＬボタン３０３が押圧されていることを示す情報が含まれている場合、ＣＰＵ２０２は搭乗者キャラクタ６０３が操作されていると判定する。逆に、当該操作データにおけるＲボタン３０２およびＬボタン３０３に関する領域のデータが、Ｒボタン３０２またはＬボタン３０３が押圧されていないことを示す場合、ＣＰＵ２０２は搭乗者キャラクタ６０３が操作されていないと判定する。なお、本実施形態においては、操作データにおけるＲボタン３０２およびＬボタン３０３に関する領域として、１バイト目の２ビット目および３ビット目を用いることとし、７バイト目のアナログデータは用いないこととする。
【００６１】
ステップＳ６０１の判定において、搭乗者キャラクタ６０３が操作されていない場合、ＣＰＵ２０２は、ステップＳ５０１の第２の動作制御処理を終了する。一方、ステップＳ６０１の判定において、搭乗者キャラクタ６０３が操作されている場合、ＣＰＵ２０２は、ステップＳ１０３において取得した操作データから搭乗者キャラクタ６０３用の操作命令を抽出する（ステップＳ６０２）。すなわち、ＣＰＵ２０２は、当該操作データから１バイト目の２ビット目および３ビット目のデータを抽出する。さらに、ＣＰＵ２０２は、抽出した操作命令に基づいて搭乗者キャラクタ６０３の動作を決定して（ステップＳ６０３）、ステップＳ５０１の搭乗者キャラクタ６０３の動作制御処理を終了する。ステップＳ６０３において、搭乗者キャラクタ６０３の動作は、Ｒボタン３０２が押圧されたときは移動体キャラクタ６０１の右側に荷重をかけ、Ｌボタン３０３が押圧されたときは移動体キャラクタ６０１の左側に荷重をかけるように決定される。
【００６２】
図１５の説明に戻り、搭乗者キャラクタ６０３に関する動作決定処理の後、ＣＰＵ２０２は、移動体キャラクタ６０１に関する動作決定処理を行う（ステップＳ５０２）。移動体キャラクタ６０１に関する動作決定処理は、メインアナログスティック３１０およびＡボタン３０４に加え、Ｒボタン３０２およびＬボタン３０３に加えられた操作に基づいて、移動体キャラクタ６０１の動作を決定する処理である。以下、ステップＳ５０２に示す移動体キャラクタ６０１に関する動作決定処理の詳細を説明する。
【００６３】
図１７は、図１５に示すステップＳ５０２の詳細を示すフローチャートである。まず、ＣＰＵ２０２は、運転者キャラクタ６０２が操作されているか否か、すなわち、運転者キャラクタ６０２がハンドルを切る動作に関する操作が行われているか否かを判定する（ステップＳ７０１）。ステップＳ７０１の判定は、図１４に示すステップＳ４０１の判定と同様である。ステップＳ７０１の判定が肯定の場合、ＣＰＵ２０２は、搭乗者キャラクタ６０３が操作されているか否か、すなわち、搭乗者キャラクタ６０３が荷重をかける動作に関する操作が行われているか否かを判定する（ステップＳ７０２）。ステップＳ７０２の判定は、図１６に示すステップＳ６０１の判定と同様である。ステップＳ７０２の判定が否定の場合、すなわち、運転者キャラクタ６０２および搭乗者キャラクタ６０３双方に関する操作が行われていない場合、ＣＰＵ２０２は、移動体キャラクタ６０１の姿勢を現状のまま維持する（ステップＳ７０３）。
【００６４】
ステップＳ７０１またはステップＳ７０２のどちらかにおいて、判定結果が肯定であった場合、ＣＰＵ２０２は、操作に応じて姿勢を変化させる（ステップＳ７０４）。具体的には、ＣＰＵ２０２は、ステップＳ１０３において取得された操作データから、メインアナログスティック３１０、Ｒボタン３０２およびＬボタン３０３に関するデータを抽出し、抽出したデータに基づいて移動体キャラクタ６０１の姿勢を決定する。移動体キャラクタ６０１の姿勢を決定する方法については、上述した図１２の説明において述べられている。
【００６５】
ステップＳ７０４の次に、ＣＰＵ２０２は、キャラクタの属性に応じてさらに姿勢を変化させる（ステップＳ７０５）。上述したように、本実施形態においては、運転者キャラクタ６０２および搭乗者キャラクタ６０３となりうる複数の人物キャラクタが予め用意されており、各人物キャラクタは、それぞれ固有の属性（本実施形態においては、体重）を有している。ステップＳ７０５の処理では、ＣＰＵ２０２は、各人物キャラクタ固有の体重属性に基づいて、移動体キャラクタ６０１の姿勢をさらに変化させる。例えば、ＣＰＵ２０２は、移動体キャラクタ６０１（移動体キャラクタ６０１）の前方に乗車する運転者キャラクタ６０２と、後方に乗車する搭乗者キャラクタ６０３との体重差に基づいて、搭乗者キャラクタ６０３の荷重動作による移動体キャラクタ６０１の曲がり具合を変化させる。具体的には、図１２において、当該体重差によって、図１２（ｃ）に示すΔγ１や同図（ｄ）に示すΔγ２の値を変化させる。例えば、運転者キャラクタ６０２の体重が重く、搭乗者キャラクタ６０３の体重が軽い場合、搭乗者キャラクタ６０３の荷重動作による移動体キャラクタ６０１の曲がり具合を小さくする。すなわち、Δγ１とΔβ１との差、および、Δγ２とΔβ１との差を小さくする。逆に、運転者キャラクタ６０２の体重が軽く、搭乗者キャラクタ６０３の体重が思い場合、Δγ１とΔβ１との差、および、Δγ２とΔβ１との差を大きくする。以上のステップＳ７０１〜Ｓ７０５の処理によって、移動体キャラクタ６０１の姿勢が決定される。
【００６６】
移動体キャラクタ６０１の姿勢決定後、すなわち、ステップＳ７０３またはステップＳ７０５の後、ＣＰＵ２０２は、移動体キャラクタ６０１のアクセル操作が行われているか否かを判定する（ステップＳ７０６）。ステップＳ７０６における判定は、ステップＳ１０３において取得された操作データに、移動体キャラクタ６０１のアクセルを操作するためのデータが含まれているか否かによって行われる。すなわち、当該操作データにおけるＡボタン３０４に関する領域（１バイト目の４ビット目）に、Ａボタン３０４が押圧されていることを示す情報が含まれている場合、ＣＰＵ２０２はアクセル操作が行われていると判定する。逆に、当該操作データにおけるＡボタン３０４に関する領域のデータが、Ａボタン３０４が押圧されていないことを示す場合、ＣＰＵ２０２はアクセル操作が行われていないと判定する。
【００６７】
ステップＳ７０６の判定が否定の場合、ＣＰＵ２０２は、ステップＳ７１０の処理を行う。一方、ステップＳ７０６の判定が肯定の場合、ＣＰＵ２０２は、姿勢方向の加速度を決定する（ステップＳ７０７）。姿勢方向の加速度は、ベクトルで表現され、当該ベクトルの方向は、ステップＳ７０１〜ステップＳ７０５において決定される移動体キャラクタ６０１の姿勢によって定められる。姿勢方向の加速度については、図１８において説明されている。さらに、ＣＰＵ２０２は、搭乗者キャラクタ６０３が荷重をかける動作に関する操作がされているか否かを判定する（ステップＳ７０８）。なお、ステップＳ７０８の判定は、ステップＳ７０２の判定と同様である。ステップＳ７０８の判定が否定の場合、ＣＰＵ２０２は、ステップＳ７１０の処理を行う。一方、ステップＳ７０８の判定が肯定の場合、ＣＰＵ２０２は、荷重による加速度を設定する（ステップＳ７０９）。本実施形態において、荷重による加速度は、移動体キャラクタ６０１の進行方向に対して所定の角度を有するベクトルで表現される。なお、荷重による加速度については、図１８において説明されている。
【００６８】
ステップ７０６、Ｓ７０８またはＳ７０９の後、ＣＰＵ２０２は、移動体キャラクタ６０１の速度を算出する（ステップＳ７１３）。図１８は、図１７のステップＳ７１３における移動体キャラクタの速度算出方法を説明するための図である。図１８のように、ステップＳ７１３の算出では、現在の速度を示すベクトル７０１と、姿勢方向の加速度を示すベクトル７０２と、荷重による加速度を示すベクトル７０３との和として、移動体キャラクタの速度を示すベクトル７０４が算出される。ここで、現在の速度を示すベクトル７０１は、前回のループ（ステップＳ１０３からＳ１１０までのループ）におけるステップＳ７１３において算出された移動体キャラクタ６０１の速度に基づいて決定される。また、上述したように、姿勢方向の加速度を示すベクトル７０２はステップＳ７０７において算出されるものであり、その方向は、メインアナログスティック３１０ならびにＲボタン３０２およびＬボタン３０３による操作に基づいて決定される。また、ベクトル７０２の大きさは、Ａボタン３０４の押圧（例えば、押圧されている時間）によって決定される。荷重による加速度を示すベクトル７０３はステップＳ７０９において算出され、その方向は、移動体キャラクタ６０１の進行方向に対して所定の角度を向く方向となる。また、ベクトル７０３の大きさは、予め定められた所定の大きさである。なお、他の実施形態において、Ｒボタン３０２またはＬボタン３０３の押込み具合に応じて、搭乗者キャラクタ６０３の体重のかけ方（姿勢）が変化する場合、ベクトル７０２の大きさは、Ｒボタン３０２またはＬボタン３０３の押込み具合に応じて変化する。なお、移動体キャラクタ６０１の速度は、姿勢方向の加速度や荷重による加速度が算出されていない場合、これらの加速度を０として算出される。例えば、図１８において、荷重による加速度がない場合、すなわち、搭乗者キャラクタ６０３の荷重操作が行われていない場合、移動体キャラクタ６０１の速度は、現在の速度を示すベクトル７０１と、姿勢方向の加速度を示すベクトル７０２との和のベクトル７０５として示される。
【００６９】
次に、ＣＰＵ２０２は、ステップＳ７１０において算出した速度に基づいて、移動体キャラクタ６０１の位置を更新して（ステップＳ７１１）、ステップＳ５０２の移動体キャラクタ６０１の動作決定処理を終了する。以上により、移動体キャラクタ６０１の表示すべき姿勢および位置が決定される。なお、運転者キャラクタ６０２および搭乗者キャラクタ６０３の位置は、移動体キャラクタ６０１の上に乗車するように決定される。
【００７０】
以上のように、本実施形態によれば、プレイヤは、運転者キャラクタ６０２および搭乗者キャラクタ６０３という２つのキャラクタを同時に操作することができる。ここで、単に２つのキャラクタを同時に操作する場合、プレイヤは、２つのキャラクタに注意を払って操作しなければならないので、ゲーム操作が非常に困難になるという問題がある。しかし、本実施形態によれば、上記２つのキャラクタの動作に基づいて、移動体キャラクタ６０１の動作が決定される。従って、プレイヤは、結果的には１つのキャラクタ、すなわち、移動体キャラクタ６０１にのみ注意を払って操作すればよいので、２つのキャラクタを同時に操作する困難さを意識せずにゲームを行うことができる。
【００７１】
なお、本実施形態においては、移動体キャラクタ６０１と、運転者キャラクタ６０２と、搭乗者キャラクタ６０３という３つのキャラクタがプレイヤによる操作対象であった。ここで、プレイヤの操作対象は、必ずしも３つである必要はなく、少なくとも２つのキャラクタであればよい。例えば、プレイヤが操作する対象は、移動体キャラクタと、搭乗者キャラクタとの２つのキャラクタであってもよい。
【００７２】
また、本実施形態においては、キャラクタは、それぞれ１人の人物や１つのカートを単位とするものであった。ここで、他の実施形態においては、１つのキャラクタは、複数の人物や移動体（カート）から構成されるものであってもよい。例えば、搭乗者キャラクタは２人の人物から構成されるものであって、プレイヤが操作するカートには運転者キャラクタも含め合計３人の人物が乗車していてもよい。
【００７３】
なお、本実施形態においては、図７に示すステップＳ１０５においてキャラクタ交代処理を行った。キャラクタ交代処理において、プレイヤは、運転者キャラクタ６０２と搭乗者キャラクタ６０３とを交代させることによって、同じ操作を行った場合でも移動体キャラクタの挙動を変化させることができる。例えば、キャラクタＡが運転者キャラクタ６０２であり、キャラクタＢが搭乗者キャラクタ６０３である場合と、その逆の場合とでは、移動体キャラクタ６０１の曲がり具合が異なるものとなる。これによって、ゲームの面白みがさらに増すと考えられる。なお、本実施形態においては、キャラクタの属性は体重であったが、身長等の体型的な属性であってもよく、また、体型等とは全く無関係な属性であってもかまわない。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るゲームシステムの構成を示す外観図である。
【図２】本実施形態に係るゲームシステムのハードウェア構成を示す図である。
【図３】図１に示すコントローラ１０４の操作スイッチの構成を示す図である。
【図４】図１に示すコントローラ１０４において生成される操作データの構成を示す図である。
【図５】本実施形態において行われるゲームの表示例を示す図である。
【図６】図５に示すゲームにおいてプレイヤが操作するキャラクタを示す図である。
【図７】本ゲーム装置のＣＰＵ２０２において行われるゲーム処理の流れを示すフローチャートである。
【図８】図７のステップＳ１０５に示すキャラクタ交代処理におけるアニメーションの一例を示す図である。
【図９】図７に示すステップＳ１０５の詳細を示すフローチャートである。
【図１０】メインアナログスティック３１０が右に傾倒されている場合における、図６に示す各キャラクタの表示状態を示す図である。
【図１１】Ｒボタン３０２が押圧されている場合における、図６に示す各キャラクタの表示状態を示す図である。
【図１２】メインアナログスティック３１０およびＲボタン３０２（Ｌボタン３０３）を操作した場合における、図６に示す移動体キャラクタ６０１の進行方向を示す図である。
【図１３】図７に示すステップＳ１０６の詳細を示すフローチャートである。
【図１４】図１３に示すステップＳ３０２の詳細を示すフローチャートである。
【図１５】図１３に示すステップＳ３０３の詳細を示すフローチャートである。
【図１６】図１５に示すステップＳ５０１の詳細を示すフローチャートである。
【図１７】図１５に示すステップＳ５０２の詳細を示すフローチャートである。
【図１８】図１７のステップＳ７１３における移動体キャラクタの速度算出方法を説明するための図である。
【符号の説明】
１０１  ゲーム機本体
１０２  ＤＶＤ−ＲＯＭ
１０３  メモリカード
１０４  コントローラ
１０５  テレビ
２０２  ＣＰＵ
【図１】
0003797607.tif 000002
【図２】
0003797607.tif 000003
【図３】
0003797607.tif 000004
【図４】
0003797607.tif 000005
【図５】
0003797607.tif 000006
【図６】
0003797607.tif 000007
【図７】
0003797607.tif 000008
【図８】
0003797607.tif 000009
【図９】
0003797607.tif 000010
【図１０】
0003797607.tif 000011
【図１１】
0003797607.tif 000012
【図１２】
0003797607.tif 000013
【図１３】
0003797607.tif 000014
【図１４】
0003797607.tif 000015
【図１５】
0003797607.tif 000016
【図１６】
0003797607.tif 000017
【図１７】
0003797607.tif 000018
【図１８】
0003797607.tif 000019