(57)【要約】【課題】頻繁に移動する複数のオブジェクトの位置に基づいて仮想空間内の表示範囲を決定して画面を表示するときに、プレイヤにとって見やすい画面表示が可能なゲームプログラム、ゲーム装置を提供すること。【解決手段】基準点算出手段は、表示領域の所定の方向である基準方向について、複数のオブジェクトの位置に基づいた中心位置である基準点を算出する。第１の判定手段は、基準方向において、基準点の位置が表示領域の端から第１の距離以内の位置であるか否かを判定する。画面制御手段は、第１の判定手段で、基準点の位置が表示領域の端から第１の距離以内であると判定されたときに、表示領域に表示される仮想空間の表示内容を基準方向にスクロールする。【選択図】図３９
2010273880.tif 000002
【特許請求の範囲】
【請求項１】
複数のオブジェクトが存在する仮想空間を表示装置の所定の表示領域に表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、
前記コンピュータを、
前記表示領域の所定の方向である基準方向について、前記複数のオブジェクトの位置に基づいた中心位置である基準点を算出する基準点算出手段と、
前記基準方向において、前記基準点の位置が前記表示領域の端から第１の距離以内の位置であるか否かを判定する第１の判定手段と、
前記第１の判定手段で前記基準点の位置が前記表示領域の端から前記第１の距離以内であると判定されたときに、前記表示領域に表示される前記仮想空間の表示内容を前記基準方向にスクロールする画面制御手段として機能させる、ゲームプログラム。
【請求項２】
前記基準点算出手段は、前記基準方向において最も距離が離れている２つのオブジェクトの中点を前記基準点として算出する、請求項１に記載のゲームプログラム。
【請求項３】
前記画面制御手段は、前記第１の判定手段で前記基準点の位置が前記表示領域の端から前記第１の距離以内であると判定されたときに、前記基準点が表示領域の端から前記第１の距離の位置になるように前記仮想空間の表示内容を前記基準方向にスクロールする、請求項１に記載のゲームプログラム。
【請求項４】
前記画面制御手段は、前記第１の判定手段で前記基準点の位置が前記表示領域の端から前記第１の距離以内であると判定されたときに、前記表示領域に表示される前記仮想空間の表示内容を、前記基準方向のうち前記表示領域の端から前記第１の距離以内であると判定された側にスクロールする、請求項１に記載のゲームプログラム。
【請求項５】
前記ゲームプログラムは、前記コンピュータを、
前記基準方向において、前記表示領域の端から最も近くに位置する前記オブジェクトが前記第１の距離よりも当該表示領域の端に近い第３の距離以内に位置するか否かを判定する第２の判定手段として更に機能させ、
前記画面制御手段は、前記基準点の位置にかかわらず、前記第２の判定手段で前記表示領域の端から最も近くに位置する前記オブジェクトが前記第３の距離以内であると判定されたときは、当該オブジェクトが前記表示領域の端から当該第３の距離となる位置に表示されるように前記仮想空間の表示内容をスクロールする、請求項１に記載のゲームプログラム。
【請求項６】
前記第１の判定手段は、前記基準方向において、前記表示領域の一方の端から第１の距離以内の位置であるか否かを判定し、さらに前記表示領域の他方の端から第２の距離以内の位置であるか否かも判定し
前記画面制御手段は、前記第１の判定手段で前記基準点の位置が前記表示領域の一方の端から前記第１の距離以内であると判定されたときは、前記表示領域に表示される前記仮想空間の表示内容を前記基準方向のうち前記表示領域の一方の側にスクロールし、前記第１の判定手段で前記基準点の位置が前記表示領域の他方の端から前記第２の距離以内であると判定されたときは、前記表示領域に表示される前記仮想空間の表示内容を前記基準方向のうち前記表示領域の他方の側にスクロールする、請求項１に記載のゲームプログラム。
【請求項７】
前記第１の距離と前記第２の距離とは異なる値の距離である、請求項６に記載のゲームプログラム。
【請求項８】
前記基準方向のうち前記表示領域の一方の側は、前記仮想空間内における重力方向の反重力側であり、前記基準方向のうち前記表示領域の他方の側は、前記仮想空間内における重力方向の重力側であり、前記第１の距離は前記第２の距離より大きい距離である、請求項７に記載のゲームプログラム。
【請求項９】
前記第２の判定手段は、前記基準方向において、前記表示領域の一方の端から最も近くに位置する前記オブジェクトが前記第１の距離よりも当該一方の端に近い第３の距離以内に位置する否かを判定し、さらに前記表示領域の他方の端から最も近くに位置する前記オブジェクトが前記第２の距離よりも当該他方の端に近い第４の距離以内に位置する否かも判定し
前記画面制御手段は、前記基準点の位置にかかわらず、前記第２の判定手段で前記表示領域の一方の端から最も近くに位置する前記オブジェクトが前記第３の距離以内であると判定されたときは、当該オブジェクトが前記表示領域の一方の端から当該第３の距離となる位置に表示されるように前記仮想空間の表示内容をスクロールし、前記表示領域の他方の端から最も近くに位置する前記オブジェクトが前記第４の距離以内であると判定されたときは、当該オブジェクトが前記表示領域の他方の端から当該第４の距離となる位置に表示されるように前記仮想空間の表示内容をスクロールする、請求項６に記載のゲームプログラム。
【請求項１０】
前記第３の距離と前記第４の距離とは異なる値の距離である、請求項９に記載のゲームプログラム。
【請求項１１】
前記表示領域の基準方向において、一方の端側と他方の端側のいずれか一方が優先の側として設定されており、
前記画面制御手段は、前記表示領域の一方の端から最も近くに位置する前記オブジェクトが前記第３の距離以内であり、且つ、前記表示領域の他方の端から最も近くに位置するオブジェクトが前記第４の距離以内のときは、前記優先の側として設定されている側に前記仮想空間の表示内容をスクロールする、請求項９に記載のゲームプログラム。
【請求項１２】
前記ゲームプログラムは、前記コンピュータを、
前記基準方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出するオブジェクト間距離算出手段と、
前記オブジェクト間距離算出手段で算出された距離が予め定められた縮小閾値を越えたか否かを判定する縮小判定手段として更に機能させ、
前記画面制御手段は、前記縮小判定手段において、前記オブジェクト間距離算出手段で算出された距離が前記縮小閾値を越えたと判定されたとき、前記仮想空間の画像を所定の倍率で縮小表示する縮小表示手段を含む、請求項１に記載のゲームプログラム。
【請求項１３】
前記縮小表示手段は、前記所定の倍率による表示を目指して時間の経過と共に徐々に縮小していくように前記仮想空間の画像を縮小表示する、請求項１２に記載のゲームプログラム。
【請求項１４】
前記縮小表示手段は、前記仮想空間の画像を徐々に縮小させて表示する制御を行っている途中で前記オブジェクト間距離算出手段で算出された距離が前記縮小閾値より小さくなったと判定されたときは、当該縮小表示の制御を中止する、請求項１３に記載のゲームプログラム。
【請求項１５】
前記ゲームプログラムは、前記コンピュータを、
前記基準方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出するオブジェクト間距離算出手段と、
前記オブジェクト間距離算出手段で算出された距離が予め定められた拡大閾値より小さいか否かを判定する拡大判定手段としてさらに機能させ、
前記画面制御手段は、前記拡大判定手段において前記オブジェクト間距離算出手段で算出された距離が前記拡大閾値より小さいと判定されたとき、前記仮想空間の画像を所定の倍率で拡大表示する拡大表示手段を含む、請求項１に記載のゲームプログラム。
【請求項１６】
前記拡大表示手段は、前記所定の倍率による表示を目指して時間の経過と共に徐々に拡大していくように前記仮想空間の画像を拡大表示する、請求項１５に記載のゲームプログラム。
【請求項１７】
前記拡大表示手段は、前記仮想空間の画像を徐々に拡大させて表示する制御を行っている途中で前記オブジェクト間距離算出手段で算出された距離が前記拡大閾値を越えたと判定されたときは、当該拡大表示の制御を中止する、請求項１６に記載のゲームプログラム。
【請求項１８】
前記ゲームプログラムは、前記コンピュータを、前記基準方向と直交する直交方向において、前記仮想空間内での前記複数のオブジェクトの位置に基づいた中心位置である直交方向中心点を算出する直交方向中心点算出手段として更に機能させ、
前記画面制御手段は、前記直交方向中心点が前記表示領域の前記直交方向における中心位置となるように前記仮想空間の表示内容を前記直行方向にスクロールする、請求項１に記載のゲームプログラム。
【請求項１９】
前記表示領域の直交方向において、一方の端側と他方の端側のいずれか一方が優先の側として設定されており、
前記ゲームプログラムは、前記コンピュータを、
前記複数のオブジェクトのうちいずれかが前記直交方向における一方の端からの第５の距離以内に位置するか否かを判定する第３の判定手段として更に機能させ、
前記画面制御手段は、前記いずれかのオブジェクトが前記第５の距離以内に位置すると判定されたときは、前記優先の側の端から当該第５の距離となる位置に当該オブジェクトが表示されるように前記仮想空間の表示内容をスクロールする、請求項１８に記載のゲームプログラム。
【請求項２０】
前記ゲームプログラムは、前記コンピュータを、
前記基準方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出する第１のオブジェクト間距離算出手段と、
前記直交方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出する第２のオブジェクト間距離算出手段と、
前記第１のオブジェクト間距離算出手段または第２のオブジェクト間距離算出手段で算出された距離のいずれかが予め定められた縮小閾値を越えたか否かを判定する縮小判定手段として更に機能させ、
前記画面制御手段は、前記縮小判定手段において前記算出された距離のいずれかが前記縮小閾値を越えたと判定されたとき、前記仮想空間の画像を所定の倍率で縮小表示する縮小表示手段を含む、請求項１８に記載のゲームプログラム。
【請求項２１】
前記ゲームプログラムは、前記コンピュータを、
前記基準方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出する第１のオブジェクト間距離算出手段と、
前記直交方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出する第２のオブジェクト間距離算出手段と、
前記第１のオブジェクト間距離算出手段または第２のオブジェクト間距離算出手段で算出された距離のいずれかが予め定められた拡大閾値より小さいか否かを判定する拡大判定手段として更に機能させ、
前記画面制御手段は、前記拡大判定手段において前記算出された距離のいずれかが前記拡大閾値より小さいと判定されたとき、前記仮想空間の画像を所定の倍率で拡大表示する拡大表示手段を含む、請求項１８に記載のゲームプログラム。
【請求項２２】
前記複数のオブジェクトとは、複数のプレイヤがそれぞれ所定の操作装置を用いて操作可能なプレイヤオブジェクトである、請求項１に記載のゲームプログラム。
【請求項２３】
前記ゲームプログラムは、前記コンピュータを、ゲーム画面に表示される前記複数のオブジェクトの数に変化があったか否かを判定する変化発生判定手段として更に機能させ、
前記画面制御手段は、前記変化発生判定手段において変化があったと判定されたときは、当該変化前の前記オブジェクトに基づいて制御された表示領域の表示内容が当該変化後のオブジェクトに基づいて制御された表示領域の表示内容に徐々に近づいていくように当該表示内容の制御を行う切替制御手段を含む、請求項１または請求項２２に記載のゲームプログラム。
【請求項２４】
前記ゲームプログラムは、前記コンピュータを、
前記所定の操作装置から所定の操作入力が行われたか否かを判定する操作入力判定手段と、
前記操作入力判定手段によって前記所定の操作が行われたと判定されたとき、当該所定の操作が行われた操作装置に対応するプレイヤオブジェクトから所定の範囲内に他のプレイヤオブジェクトが存在するか否かを判定する近接プレイヤ存在判定手段と、
前記近接プレイヤ判定手段によって、所定の範囲内に他のプレイヤオブジェクトが存在すると判定されたとき、当該他のプレイヤオブジェクトと前記所定の操作が行われた操作装置に対応するプレイヤオブジェクトとを一体として操作可能とする操作一体化手段と、して更に機能させる、請求項２２に記載のゲームプログラム。
【請求項２５】
前記所定の操作装置は加速度センサを備えており、
前記操作入力判定手段は、前記所定の操作装置が備える所定のボタンが押された状態で所定値以上の加速度が検出されたか否かを判定する、請求項２４に記載のゲームプログラム。
【請求項２６】
前記他のオブジェクトと前記所定の操作が行われた操作装置に対応するプレイヤオブジェクトとが一体として操作可能な状態の間は、当該他のオブジェクトに設定されている所定の行動特性を当該所定の操作が行われた操作装置に対応するプレイヤオブジェクトが利用可能である、請求項２４に記載のゲームプログラム。
【請求項２７】
複数のオブジェクトが存在する仮想空間を表示装置の所定の表示領域に表示するゲーム装置であって、
前記表示領域の所定の方向である基準方向について、前記複数のオブジェクトの位置に基づいた中心位置である基準点を算出する基準点算出手段と、
前記基準方向において、前記基準点の位置が前記表示領域の端から第１の距離以内の位置であるか否かを判定する第１の判定手段と、
前記第１の判定手段で前記基準点の位置が前記表示領域の端から前記第１の距離以内であると判定されたときに、前記表示領域に表示される前記仮想空間の表示内容を前記基準方向にスクロールする画面制御手段とを備える、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間内のオブジェクトを表示装置に表示させるゲーム装置のコンピュータに実行させるゲームプログラムに関し、より特定的には、仮想空間内の複数のオブジェクトを表示装置に表示させるゲームプログラム、ゲーム装置に関する。
【背景技術】
【０００２】
従来より、複数のオブジェクトを表示装置の画面に表示させるゲーム装置が知られている（例えば、特許文献１）。このようなゲーム装置においては、例えば、仮想ゲーム空間内に存在する２体の敵オブジェクトを画面に表示する際に、２体の敵オブジェクトの中間点や、片方の敵の位置に仮想カメラの注視点を設定した上で表示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−１６５６４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したようなゲーム装置においては、以下に示す問題点があった。すなわち、上記のような仮想カメラの注視点の設定を行った上で、注視点を設定する対象となる敵オブジェクトが頻繁に移動するような場合には、その都度、注視点を再計算して画面の表示を行うために、注視点の変化が激しくなり、プレイヤにとって非常に見づらい画面表示となってしまっていた。また、敵オブジェクトが速い速度で移動するような場合も、当該移動に伴って注視点も速い速度で移動してしまう。そのために、このような場合もプレイヤにとって非常に見づらい画面表示となってしまっていた。
【０００５】
それ故に、本発明の目的は、頻繁に移動する複数のオブジェクトの位置に基づいて仮想空間内の表示範囲を決定して画面に表示するときに、プレイヤにとって見やすい画面表示が可能なゲームプログラム、ゲーム装置を提供することである。
【０００６】
また、本発明の他の目的は、複数プレイで楽しむゲームについての興趣性を高めることができるゲームプログラム、ゲーム装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
【０００８】
第１の発明は、複数のオブジェクトが存在する仮想空間を表示装置の所定の表示領域に表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、コンピュータを、基準点算出手段（Ｓ１２１）と、第１の判定手段（Ｓ１２２，Ｓ１２４）と、画面制御手段（Ｓ１２３，Ｓ１２５、Ｓ１３３、Ｓ１３５）として機能させる。基準点算出手段は、表示領域の所定の方向である基準方向について、複数のオブジェクトの位置に基づいた中心位置である基準点を算出する。第１の判定手段は、基準方向において、基準点の位置が表示領域の端から第１の距離以内の位置であるか否かを判定する。画面制御手段は、第１の判定手段で基準点の位置が表示領域の端から第１の距離以内であると判定されたときに、表示領域に表示される仮想空間の表示内容を基準方向にスクロールする。なお、上記基準方向とは、スクロール制御を行う方向に沿った方向である。例えば、縦スクロールの場合は、画面の縦方向（Ｙ軸方向）が基準方向である。また、横スクロールの場合は、画面の横方向（Ｘ軸方向）が基準方向である。
【０００９】
第１の発明によれば、プレイヤにとって見やすい画面表示が可能となる。
【００１０】
第２の発明は、第１の発明において、基準点算出手段は、基準方向において最も距離が離れている２つのオブジェクトの中点を基準点として算出する。
【００１１】
第２の発明によれば、複数のオブジェクトを画面内に全て表示することが可能となる。
【００１２】
第３の発明は、第１の発明において、画面制御手段は、第１の判定手段で基準点の位置が表示領域の端から第１の距離以内であると判定されたときに、基準点が表示領域の端から第１の距離の位置になるように仮想空間の表示内容を基準方向にスクロールする。
【００１３】
第４の発明は、第１の発明において、画面制御手段は、第１の判定手段で基準点の位置が表示領域の端から第１の距離以内であると判定されたときに、表示領域に表示される仮想空間の表示内容を、基準方向のうち表示領域の端から第１の距離以内であると判定された側にスクロールする。
【００１４】
第３乃至第４の発明によれば、画面の端に近づいたオブジェクトがあったときに、画面をスクロールすることで、画面の視認性を高めることができる。
【００１５】
第５の発明は、第１の発明において、ゲームプログラムは、コンピュータを、基準方向において、表示領域の端から最も近くに位置するオブジェクトが第１の距離よりも当該表示領域の端に近い第３の距離以内に位置するか否かを判定する第２の判定手段（Ｓ１２６、Ｓ１２７、Ｓ１３１）として更に機能させる。そして、画面制御手段は、基準点の位置にかかわらず、第２の判定手段で表示領域の端から最も近くに位置するオブジェクトが第３の距離以内であると判定されたときは、当該オブジェクトが表示領域の端から当該第３の距離となる位置に表示されるように仮想空間の表示内容をスクロールする。
【００１６】
第５の発明によれば、画面の端に近づいたオブジェクトがあったときに、当該オブジェクトの進行方向にかかる視認性を高めることができる。
【００１７】
第６の発明は、第１の発明において、第１の判定手段は、基準方向において、表示領域の一方の端から第１の距離以内の位置であるか否かを判定し、さらに表示領域の他方の端から第２の距離以内の位置であるか否かも判定する。そして、画面制御手段は、第１の判定手段で基準点の位置が表示領域の一方の端から第１の距離以内であると判定されたときは、表示領域に表示される仮想空間の表示内容を基準方向のうち表示領域の一方の側にスクロールし、第１の判定手段で基準点の位置が表示領域の他方の端から第２の距離以内であると判定されたときは、表示領域に表示される仮想空間の表示内容を基準方向のうち表示領域の他方の側にスクロールする。
【００１８】
第６の発明によれば、プレイヤにとって見やすい画面表示が可能となる。
【００１９】
第７の発明は、第６の発明において、第１の距離と第２の距離とは異なる値の距離である。
【００２０】
第７の発明によれば、オブジェクトの動きの特性に応じて画面の表示内容を制御することができ、より見やすい画面表示を行うことができる。
【００２１】
第８の発明は、第７の発明において、基準方向のうち表示領域の一方の側は、仮想空間内における重力方向の反重力側であり、基準方向のうち表示領域の他方の側は、仮想空間内における重力方向の重力側であり、第１の距離は第２の距離より大きい距離である。
【００２２】
第８の発明によれば、例えばジャンプ動作のような、重力の影響を考慮したようなオブジェクトの動きの特性に応じて画面の表示内容を制御することができ、より見やすい画面表示を行うことができる。
００２３００２４  
【００２３】
第９の発明は、第６の発明において、第２の判定手段は、基準方向において、表示領域の一方の端から最も近くに位置するオブジェクトが第１の距離よりも当該一方の端に近い第３の距離以内に位置する否かを判定し、さらに表示領域の他方の端から最も近くに位置するオブジェクトが第２の距離よりも当該他方の端に近い第４の距離以内に位置する否かも判定し、画面制御手段は、基準点の位置にかかわらず、第２の判定手段で表示領域の一方の端から最も近くに位置するオブジェクトが第３の距離以内であると判定されたときは、当該オブジェクトが表示領域の一方の端から当該第３の距離となる位置に表示されるように仮想空間の表示内容をスクロールし、表示領域の他方の端から最も近くに位置するオブジェクトが第４の距離以内であると判定されたときは、当該オブジェクトが表示領域の他方の端から当該第４の距離となる位置に表示されるように仮想空間の表示内容をスクロールする。
【００２４】
第９の発明によれば、画面の端に近づいたオブジェクトがあったときに、画面をスクロールすることで、仮想空間内におけるオブジェクト周辺の様子についての視認性を高めることができる。
【００２５】
第１０の発明は、第９の発明において、第３の距離と第４の距離とは異なる値の距離である。
【００２６】
第１０の発明によれば、オブジェクトの動きの特性に応じて画面の表示内容を制御することができ、より見やすい画面表示を行うことができる。
【００２７】
第１１の発明は、第９の発明において、表示領域の基準方向において、一方の端側と他方の端側のいずれか一方が優先の側として設定されている。そして、画面制御手段は、表示領域の一方の端から最も近くに位置するオブジェクトが第３の距離以内であり、且つ、表示領域の他方の端から最も近くに位置するオブジェクトが第４の距離以内のときは、優先の側として設定されている側に仮想空間の表示内容をスクロールする。
【００２８】
第１１の発明によれば、画面の両端にそれぞれ近づいているオブジェクトがあったときに、優先側にかかる視認性を高めることができる。
【００２９】
第１２の発明は、第１の発明において、ゲームプログラムは、コンピュータを、オブジェクト間距離算出手段（Ｓ７４）と、縮小判定手段（Ｓ７５）としてさらに機能させる。オブジェクト間距離算出手段は、基準方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出する。縮小判定手段は、オブジェクト間距離算出手段で算出された距離が予め定められた縮小閾値を越えたか否かを判定する。そして、画面制御手段は、縮小判定手段において、オブジェクト間距離算出手段で算出された距離が縮小閾値を越えたと判定されたとき、仮想空間の画像を所定の倍率で縮小表示する縮小表示手段（Ｓ８１、Ｓ８２、Ｓ８０）を含む。
【００３０】
第１３の発明は、第１２の発明において、縮小表示手段は、所定の倍率による表示を目指して時間の経過と共に徐々に縮小していくように仮想空間の画像を縮小表示する。
【００３１】
第１４の発明は、第１３の発明において、縮小表示手段は、仮想空間の画像を徐々に縮小させて表示する制御を行っている途中でオブジェクト間距離算出手段で算出された距離が縮小閾値より小さくなったと判定されたときは、当該縮小表示の制御を中止する。
【００３２】
第１２乃至第１４の発明によれば、プレイヤにとって、オブジェクトを認識しやすい画面を表示することができる。
【００３３】
第１５の発明は、第１の発明において、ゲームプログラムは、コンピュータを、オブジェクト間距離算出手段（Ｓ７４）と、拡大判定手段（Ｓ７６）としてさらに機能させる。オブジェクト間距離算出手段は、基準方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出する。拡大判定手段は、オブジェクト間距離算出手段で算出された距離が予め定められた拡大閾値より小さいか否かを判定する。そして、画面制御手段は、拡大判定手段においてオブジェクト間距離算出手段で算出された距離が拡大閾値より小さいと判定されたとき、仮想空間の画像を所定の倍率で拡大表示する拡大表示手段（Ｓ７７、Ｓ７８、Ｓ８０）を含む。
【００３４】
第１６の発明は、第１５の発明において、拡大表示手段は、所定の倍率による表示を目指して時間の経過と共に徐々に拡大していくように仮想空間の画像を拡大表示する。
【００３５】
第１７の発明は、第１６の発明において、拡大表示手段は、仮想空間の画像を徐々に拡大させて表示する制御を行っている途中でオブジェクト間距離算出手段で算出された距離が拡大閾値を越えたと判定されたときは、当該拡大表示の制御を中止する。
【００３６】
第１５乃至第１７の発明によれば、プレイヤにとって、オブジェクトを認識しやすい画面を表示することができる。
【００３７】
第１８の発明は、第１の発明において、ゲームプログラムは、コンピュータを、基準方向と直交する直交方向において、仮想空間内での複数のオブジェクトの位置に基づいた中心位置である直交方向中心点を算出する直交方向中心点算出手段（Ｓ１０１）として更に機能させる。そして、画面制御手段は、直交方向中心点が表示領域の直交方向における中心位置となるように仮想空間の表示内容を直行方向にスクロールする。
【００３８】
第１８の発明によれば、オブジェクトの動きの特性に応じて、プレイヤにとって見やすい画面を表示できる。
【００３９】
第１９の発明は、第１８の発明において、表示領域の直交方向において、一方の端側と他方の端側のいずれか一方が優先の側として設定されている。そして、ゲームプログラムは、コンピュータを、複数のオブジェクトのうちいずれかが直交方向における一方の端からの第５の距離以内に位置するか否かを判定する第３の判定手段（Ｓ１０３）として更に機能させる。そして、画面制御手段は、当該いずれかのオブジェクトが第５の距離以内に位置すると判定されたときは、優先の側の端から当該第５の距離となる位置に当該オブジェクトが表示されるように仮想空間の表示内容をスクロールする。
【００４０】
第１９の発明によれば、所定の方向と直交する方向における画面の端に近づいたオブジェクトがあったときに、当該オブジェクトの進行方向にかかる視認性を高めることができる。
【００４１】
第２０の発明は、第１８の発明において、ゲームプログラムは、コンピュータを、第１のオブジェクト間距離算出手段（Ｓ７３）と、第２のオブジェクト間距離算出手段（Ｓ７２）と、縮小判定手段（Ｓ７４，Ｓ７５）として更に機能させる。第１のオブジェクト間距離算出手段は、基準方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出する。第２のオブジェクト間距離算出手段は、直交方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出する。縮小判定手段は、第１のオブジェクト間距離算出手段または第２のオブジェクト間距離算出手段で算出された距離のいずれかが予め定められた縮小閾値を越えたか否かを判定する。そして、画面制御手段は、縮小判定手段において、算出された距離のいずれかが縮小閾値を越えたと判定されたとき、仮想空間の画像を所定の倍率で縮小表示する縮小表示手段を含む。
【００４２】
第２０の発明によれば、複数のオブジェクト間の距離が離れると画面が縮小表示されるため、プレイヤにとって、オブジェクト周辺の様子を認識しやすい画面を表示することができる。
【００４３】
第２１の発明は、第１８の発明において、ゲームプログラムは、コンピュータを、第１のオブジェクト間距離算出手段と、第２のオブジェクト間距離算出手段と、拡大判定手段として更に機能させる。第１のオブジェクト間距離算出手段は、基準方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出する。第２のオブジェクト間距離算出手段は、直交方向において最も距離が離れている２つのオブジェクト間の仮想空間内における距離を算出する。拡大判定手段は、第１のオブジェクト間距離算出手段または第２のオブジェクト間距離算出手段で算出された距離のいずれかが予め定められた拡大閾値より小さいか否かを判定する。そして、画面制御手段は、拡大判定手段において算出された距離のいずれかが拡大閾値より小さいと判定されたとき、仮想空間の画像を所定の倍率で拡大表示する拡大表示手段を含む。
【００４４】
第２１の発明によれば、複数のオブジェクト間の距離が近づけば、画面が拡大表示されるため、オブジェクトが認識しやすい画面を表示することができる。
【００４５】
第２２の発明は、第１の発明において、複数のオブジェクトとは、複数のプレイヤがそれぞれ所定の操作装置を用いて操作可能なプレイヤオブジェクトである。
【００４６】
第２２の発明によれば、複数のプレイヤによる同時プレイが可能なゲームにおいて、プレイヤにとって見やすい画面表示が可能となる。
【００４７】
第２３の発明は、第１または第２２の発明において、ゲームプログラムは、コンピュータを、ゲーム画面に表示される複数のオブジェクトの数に変化があったか否かを判定する変化発生判定手段（Ｓ５）として更に機能させる。そして、画面制御手段は、変化発生判定手段において変化があったと判定されたときは、当該変化前のオブジェクトに基づいて制御された表示領域の表示内容が当該変化後のオブジェクトに基づいて制御された表示領域の表示内容に徐々に近づいていくように当該表示内容の制御を行う切替制御手段（Ｓ６，Ｓ７）を含む。
【００４８】
第２３の発明によれば、プレイヤにとって、オブジェクトを認識しやすい画面を表示することができる。
【００４９】
第２４の発明は、第２２の発明において、ゲームプログラムは、コンピュータを、操作入力判定手段（Ｓ１６２）と、近接プレイヤ存在判定手段（Ｓ１６３）と、操作一体化手段（Ｓ１６４）と、して更に機能させる。操作入力判定手段は、所定の操作装置から所定の操作入力が行われたか否かを判定する。近接プレイヤ存在判定手段は、操作入力判定手段によって所定の操作が行われたと判定されたとき、当該所定の操作が行われた操作装置に対応するプレイヤオブジェクトから所定の範囲内に他のプレイヤオブジェクトが存在するか否かを判定する。操作一体化手段は、近接プレイヤ判定手段によって、所定の範囲内に他のプレイヤオブジェクトが存在すると判定されたとき、当該他のプレイヤオブジェクトと所定の操作が行われた操作装置に対応するプレイヤオブジェクトとを一体として操作可能とする。
【００５０】
第２４の発明によれば、複数プレイ、特に、協力プレイの楽しみを高めることができ、ゲームの興趣性を高めることができる。
【００５１】
第２５の発明は、第２４の発明において、所定の操作装置は加速度センサを備えている。そして、操作入力判定手段は、所定の操作装置が備える所定のボタンが押された状態で所定値以上の加速度が検出されたか否かを判定する。
【００５２】
第２５の発明によれば、単純な操作で多彩な操作内容を提供することができ、また、誤操作が行われることを防ぐこともできる。
【００５３】
第２６の発明は、第２４の発明において、他のオブジェクトと所定の操作が行われた操作装置に対応するプレイヤオブジェクトとが一体として操作可能な状態の間は、当該他のオブジェクトに設定されている所定の行動特性を当該所定の操作が行われた操作装置に対応するプレイヤオブジェクトが利用可能である。
【００５４】
第２６の発明によれば、複数プレイによるゲームの興趣性を高めることができる。
【００５５】
第２７の発明は、複数のオブジェクトが存在する仮想空間を表示装置の所定の表示領域に表示するゲーム装置であって、基準点算出手段（１０）と、第１の判定手段（１０）と、画面制御手段（１０）とを備える。基準点算出手段は、表示領域の所定の方向である基準方向について、複数のオブジェクトの位置に基づいた中心位置である基準点を算出する。第１の判定手段は、基準方向において、基準点の位置が表示領域の端から第１の距離以内の位置であるか否かを判定する。画面制御手段は、第１の判定手段で基準点の位置が表示領域の端から第１の距離以内であると判定されたときに、表示領域に表示される仮想空間の表示内容を基準方向にスクロールする。。
【００５６】
第２７の発明によれば、第１の発明と同様の効果を得ることができる。
【発明の効果】
【００５７】
本発明によれば、動きの激しい複数のオブジェクトが画面に表示されるときであっても、プレイヤにとって見やすいゲーム画面の表示が可能となる。
【図面の簡単な説明】
【００５８】
【図１】本発明の一実施形態に係るゲームシステム１を説明するための外観図
【図２】図１のゲーム装置本体５の機能ブロック図
【図３】図１のコントローラ７の上面後方から見た斜視図
【図４】図３のコントローラ７を下面前方から見た斜視図
【図５】図３のコントローラ７の上ハウジングを外した状態を示す斜視図
【図６】図３のコントローラ７の下ハウジングを外した状態を示す斜視図
【図７】図３のコントローラ７の構成を示すブロック図
【図８】本実施形態で想定するゲームの画面の一例
【図９】本実施形態における表示領域の概念を説明するための図
【図１０】本実施形態におけるゲームの操作方法について説明するための図
【図１１】持ち上げ操作について説明するための図
【図１２】持ち上げ操作について説明するための図
【図１３】持ち上げ操作について説明するための図
【図１４】持ち上げ操作について説明するための図
【図１５】持ち上げ操作について説明するための図
【図１６】１人用横スクロールの概要を説明するための図
【図１７】１人用縦スクロールの概要を説明するための図
【図１８】複数人用横スクロールの概要を説明するための図
【図１９】複数人用横スクロールの概要を説明するための図
【図２０】複数人用縦スクロールの概要を説明するための図
【図２１】複数人用縦スクロールの概要を説明するための図
【図２２】複数人用縦スクロールの概要を説明するための図
【図２３】複数人用縦スクロールの概要を説明するための図
【図２４】複数人用縦スクロールの概要を説明するための図
【図２５】拡大ズームの一例を示す図
【図２６】縮小ズームの一例を示す図
【図２７】切替処理について説明するための図
【図２８】ゲーム装置３の外部メインメモリ１２のメモリマップを示す図
【図２９】本発明の実施形態に係るゲーム処理を示すフローチャート
【図３０】持ち上げ処理の詳細を示したフローチャート
【図３１】持ち上げ処理の詳細を示したフローチャート
【図３２】図２９のステップＳ９で示した１人用画面制御処理の詳細を示したフローチャート
【図３３】図３２のステップＳ２２で示した１人用横スクロール制御処理の詳細を示したフローチャート
【図３４】図３２のステップＳ２３で示した１人用縦スクロール制御処理の詳細を示したフローチャート
【図３５】図２９のステップＳ１０で示した複数人用画面制御処理の詳細を示したフローチャート
【図３６】図３５のステップＳ５３で示した目標ズーム値算出処理の詳細を示したフローチャート
【図３７】図３５のステップＳ５７で示したズームキャンセル判定処理の詳細を示したフローチャート
【図３８】図３５のステップＳ６２で示した複数人用横スクロール処理の詳細を示したフローチャート
【図３９】図３５のステップＳ６３で示した複数人用縦スクロール処理の詳細を示したフローチャート
【図４０】図３５のステップＳ６３で示した複数人用縦スクロール処理の詳細を示したフローチャート
【図４１】図２９のステップＳ６で示したプレイヤオブジェクト数切替時制御処理の詳細を示したフローチャート
【図４２】図２９のステップＳ７で示した補完パラメータによる画面制御処理の詳細を示したフローチャート
【発明を実施するための形態】
【００５９】
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
【００６０】
（ゲームシステムの全体構成）
図１を参照して、本発明の実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、コントローラ７、およびマーカ部８を含む。本システムは、コントローラ７を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００６１】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００６２】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２には、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像が表示される。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部８が設置される。マーカ部８は、その両端に２つのマーカ８Ｒおよび８Ｌを備えている。マーカ８Ｒ（マーカ８Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部８はゲーム装置３に接続されており、ゲーム装置３はマーカ部８が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００６３】
コントローラ７は、当該コントローラ７自身に対して行われた操作の内容を示す操作データをゲーム装置３に与える入力装置である。コントローラ７とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ７とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ７とゲーム装置３とは有線で接続されてもよい。
【００６４】
（ゲーム装置３の内部構成）
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、およびＡＶ−ＩＣ１５等を有する。
【００６５】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４およびＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００６６】
また、システムＬＳＩ１１には、入出力プロセッサ１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００６７】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。より具体的には、ＧＰＵ１１ｂは、当該グラフィクスコマンドに従って３Ｄグラフィックスの表示に必要な計算処理、例えば、レンダリングの前処理にあたる３Ｄ座標から２Ｄ座標への座標変換などの処理や、テクスチャの張り込みなどの最終的なレンダリング処理を行うことで、ゲーム画像データを生成する。ここで、ＣＰＵ１０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ１１ｂに与える。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００６８】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。また、内部メインメモリ１１ｅは、外部メインメモリ１２と同様に、プログラムや各種データを記憶するものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。
【００６９】
上述のように生成された画像データおよび音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００７０】
入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、およびメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００７１】
入出力プロセッサ１１ａは、無線通信モジュール１８およびアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８およびアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２および無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データまたは途中データ）が記憶されてもよい。
【００７２】
また、入出力プロセッサ１１ａは、コントローラ７から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００７３】
さらに、入出力プロセッサ１１ａには、拡張コネクタ２０およびメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００７４】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、およびイジェクトボタン２６が設けられる。電源ボタン２４およびリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンにされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。また、一旦電源がオンにされた状態で、再度電源ボタン２４を押すと、低電力スタンバイモードへの移行が行われる。この状態でも、ゲーム装置３への通電は行われているため、インターネット等のネットワークに常時接続しておくことができる。なお、一旦電源がオンにされた状態で、電源をオフにしたいときは、電源ボタン２４を所定時間以上長押しすることで、電源をオフとすることが可能である。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００７５】
次に、図３および図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面前方から見た斜視図である。
【００７６】
図３および図４において、コントローラ７は、ハウジング７１と、当該ハウジング７１の表面に設けられた複数個の操作ボタンで構成される操作部７２とを備える。本実施例のハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
【００７７】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００７８】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に４つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング７１上面から突出した傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー７２ａの代わりに設けてもかまわない。
【００７９】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂおよび７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００８０】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置３本体の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００８１】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７からゲーム装置３へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２のうち、種別に対応するＬＥＤが点灯する。
【００８２】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図５のスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００８３】
一方、ハウジング７１下面には、凹部が形成されている。後述で明らかとなるが、ハウジング７１下面の凹部は、プレイヤがコントローラ７の前面をマーカ８Ｌおよび８Ｒに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００８４】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００８５】
ここで、以下の説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３および図４に示すように、互いに直交するｘｙｚ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をｚ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をｚ軸正方向とする。また、コントローラ７の上下方向をｙ軸とし、ハウジング７１の上面（操作ボタン７２ａ等が設けられた面）方向をｙ軸正方向とする。さらに、コントローラ７の左右方向をｘ軸とし、ハウジング７１の左側面（図３では表されずに図４で表されている側面）方向をｘ軸正方向とする。
【００８６】
次に、図５および図６を参照して、コントローラ７の内部構造について説明する。なお、図５は、コントローラ７の上ハウジング（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図６は、コントローラ７の下ハウジング（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図６に示す基板７００は、図５に示す基板７００の裏面から見た斜視図となっている。
【００８７】
図５において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、およびアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図６、図７参照）に接続される。マイコン７５１は本願発明のボタンデータ発生手段の一例として、操作ボタン７２ａ等の種類に応じた操作ボタンデータを発生させるように機能する。この仕組みは公知技術であるが、例えばキートップ下側に配置されたタクトスイッチなどのスイッチ機構による配線の接触／切断をマイコン７５１が検出することによって実現されている。より具体的には、操作ボタンが例えば押されると配線が接触して通電するので、この通電がどの操作ボタンにつながっている配線で発生したかをマイコン７５１が検出し、操作ボタンの種類に応じた信号を発生させている。
【００８８】
また、コントローラ７は、無線モジュール７５３（図７参照）およびアンテナ７５４によって、ワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６およびアンプ７０８が設けられる。また、加速度センサ７０１は、操作ボタン７２ｄの左側の基板７００上（つまり、基板７００の中央部ではなく周辺部）に設けられる。したがって、加速度センサ７０１は、コントローラ７の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ７の回転を良好な感度でゲーム装置３等が判定することができる。
【００８９】
一方、図６において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。さらに、基板７００の下主面上にサウンドＩＣ７０７およびマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１およびアンプ７０８と接続され、ゲーム装置３から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。
【００９０】
そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。バイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４は、基板７００等に形成された配線によってマイコン７５１と接続され、ゲーム装置３から送信された振動データに応じてその作動をオン／オフする。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【００９１】
次に、図７を参照して、コントローラ７の内部構成について説明する。なお、図７は、コントローラ７の構成を示すブロック図である。
【００９２】
図７において、コントローラ７は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、およびアンプ７０８の他に、その内部に通信部７５を備えている。
【００９３】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、および画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。この撮像情報演算部７４から出力される処理結果データに基づいて、コントローラ７の位置や動きに応じた信号を得ることができる。
【００９４】
コントローラ７は、３軸（ｘ、ｙ、ｚ軸）の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向（または他の対になった方向）のそれぞれに沿った直線加速度のみを検知する２軸の加速度検出手段を使用してもよい。例えば、この３軸または２軸の加速度センサ７０１は、アナログ・デバイセズ株式会社（Ａｎａｌｏｇ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．）またはＳＴマイクロエレクトロニクス社（ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ  Ｎ．Ｖ．）から入手可能であるタイプのものでもよい。加速度センサ７０１は、シリコン微細加工されたＭＥＭＳ（Ｍｉｃｒｏ  Ｅｌｅｃｔｒｏ  Ｍｅｃｈａｎｉｃａｌ  Ｓｙｓｔｅｍｓ：微小電子機械システム）の技術に基づいた静電容量式（静電容量結合式）であってもよい。しかしながら、既存の加速度検出手段の技術（例えば、圧電方式や圧電抵抗方式）あるいは将来開発される他の適切な技術を用いて３軸または２軸の加速度センサ７０１が提供されてもよい。
【００９５】
当業者には公知であるように、加速度センサ７０１に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度（直線加速度）のみを検知することができる。つまり、加速度センサ７０１からの直接の出力は、その２軸または３軸のそれぞれに沿った直線加速度（静的または動的）を示す信号である。このため、加速度センサ７０１は、非直線状（例えば、円弧状）の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
【００９６】
しかしながら、加速度センサ７０１から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ（例えばＣＰＵ１０）またはコントローラのプロセッサ（例えばマイコン７５１）などのコンピュータが処理を行うことによって、コントローラ７に関するさらなる情報を推測または算出（判定）することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサを搭載するコントローラが静的な状態であることを前提としてコンピュータ側で処理する場合（すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理する場合）、コントローラが現実に静的な状態であれば、検出された加速度に基づいてコントローラの姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかを知ることができる。具体的には、加速度センサの検出軸が鉛直下方向を向いている状態を基準としたとき、１Ｇ（重力加速度）がかかっているか否かだけで傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかも知ることができる。また、多軸の加速度センサの場合には、さらに各軸の加速度の信号に対して処理を施すことによって、各軸が重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ７０１からの出力に基づいて、プロセッサがコントローラ７の傾き角度のデータを算出する処理をおこなってもよいが、当該傾き角度のデータを算出する処理をおこなうことなく、加速度センサ７０１からの出力に基づいて、おおよその傾き具合を推定するような処理としてもよい。このように、加速度センサ７０１をプロセッサと組み合わせて用いることによって、コントローラ７の傾き、姿勢または位置を判定することができる。一方、加速度センサが動的な状態であることを前提とする場合には、重力加速度成分に加えて加速度センサの動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動き方向などを知ることができる。具体的には、加速度センサ７０１を備えるコントローラ７がユーザの手で動的に加速されて動かされる場合に、加速度センサ７０１によって生成される加速度信号を処理することによって、コントローラ７のさまざまな動きおよび／または位置を算出することができる。なお、加速度センサが動的な状態であることを前提とする場合であっても、加速度センサの動きに応じた加速度を所定の処理により除去すれば、重力方向対する傾きを知ることが可能である。他の実施例では、加速度センサ７０１は、信号をマイコン７５１に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度（例えば、重力加速度）を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角（あるいは、他の好ましいパラメータ）に変換するものであってもよい。
【００９７】
他の実施形態の例では、コントローラ７の動きを検出する動きセンサとして、回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるＭＥＭＳジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ７０１と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転（または角速度）を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
【００９８】
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、２つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロセンサとの基本的な差異と同様にジャイロセンサの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
【００９９】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、およびアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置３からのデータに応じて、サウンドＩＣ７０７およびバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置３から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置３から送信された振動データ（例えば、バイブレータ７０４をＯＮまたはＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。
【０１００】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの加速度信号（ｘ、ｙ、およびｚ軸方向加速度データ；以下、単に加速度データと記載する）、および撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、加速度データ、処理結果データ）を無線コントローラモジュール１９へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から無線コントローラモジュール１９への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ；登録商標）で構成される通信部７５の送信間隔は例えば５ｍｓである。マイコン７５１は、無線コントローラモジュール１９への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばブルートゥース（登録商標）の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その電波信号をアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からの加速度データ、および撮像情報演算部７４からの処理結果データが無線モジュール７５３で電波信号に変調されてコントローラ７から送信される。そして、ゲーム装置３の無線コントローラモジュール１９でその電波信号を受信し、ゲーム装置３で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、加速度データ、および処理結果データ）を取得する。そして、ゲーム装置３のＣＰＵ１０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【０１０１】
次に、図８〜図２２を用いて、本実施形態で想定するゲームの概要について説明する。本実施形態で想定するゲームは、１人〜最大４人までの同時プレイが可能なジャンプアクションゲームである。図８は、本実施形態で想定するゲームの画面の一例である。図８において、１画面内に４つのプレイヤオブジェクト１０１ａ〜１０１ｄが表示されている（以下、総称して単にプレイヤオブジェクト１０１と呼ぶこともある）。この画面は、４人同時プレイ中の画面を示している。その他、ブロック１０２が複数集合して構成されたプレイヤオブジェクト１０１の足場もいくつか表示されている。プレイヤはコントローラ７を用いてジャンプ操作を行うことで、各プレイヤオブジェクト１０１をこの足場に飛び乗らせることが可能となっている。この画面は、仮想ゲーム空間（２次元空間でも３次元空間でもよいが、本実施形態では、３次元空間）を撮影した画面である。当該仮想ゲーム空間は、ある程度の広さを有した区間であり、このうち、プレイヤオブジェクト１０１が居る場所を含む領域が、図９に示すような表示領域（仮想カメラで撮影される領域）として、テレビ２に表示される。また、当該仮想ゲーム空間内には、スタート地点とゴール地点が設けられており、本ゲームは、このスタート地点からゴール地点を目指してプレイヤオブジェクト１０１を進めていくゲームである。また、仮想ゲーム空間は、上記ブロック１０２や地形オブジェクトを適切に配置することによって、上記スタート地点とゴール地点を結ぶようなルート（コース）が構成されており、基本的に、このルートに沿ってプレイヤオブジェクト１０１を進めていく。
【０１０２】
ここで、以下の本実施形態の説明においては、説明の便宜上、仮想ゲーム空間内における距離や画面上の距離を示すために、”ユニット”という単位を用いることがある。本実施形態においては、１ユニットの大きさは、仮想ゲーム空間内において、図８に示したブロック１０２の１つ分の大きさであるものとする。また、本実施形態では、後述するように、画面のズーム処理が適宜行われるが、倍率が１．０倍の状態では、１画面の大きさは縦１４×横２５．５ユニット分の大きさであるものとする（倍率０．５倍であれば、１画面は縦２８×横５１ユニット分の広さとなり、倍率２倍であれば、１画面は縦７×横１２．７５ユニット分の広さとなる）。また、以下では、画面横方向をＸ軸、画面縦方向をＹ軸として説明する。
【０１０３】
本実施形態での操作について説明すると、プレイヤは、コントローラ７を十字キー７２ａが左側にくるような横長の状態で把持して操作を行う。図１０に、コントローラ７の状態とゲーム画面の対応関係を示す。本実施形態では、十字キー７２ａを用いてプレイヤオブジェクト１０１を上下左右方向に移動させ、ボタン７２ｃでプレイヤオブジェクト１０１をジャンプさせることが可能である。また、ボタン７２ｂを押下したままプレイヤオブジェクト１０１を移動させることで、プレイヤオブジェクト１０１をダッシュ移動させることも可能となっている。また、コントローラ７を振る操作を行うことで、「スピンジャンプ」と呼ばれる、プレイヤオブジェクト１０１をスピンさせながらのジャンプも可能である。但し、他のプレイヤオブジェクト１０１が近くにいるときにコントローラ７を振った場合は、以下に説明するような「持ち上げ」操作が可能である。
【０１０４】
上記「持ち上げ」操作について説明すると、まず、複数プレイ、例えば、２人同時プレイの場合を想定する。また、一方のプレイヤが（以下、１Ｐプレイヤ）が操作するプレイヤオブジェクトを１Ｐオブジェクト、他方のプレイヤ（以下、２Ｐプレイヤ）が操作するオブジェクトを２Ｐオブジェクトと呼ぶ。そして、図１１に示すように、１Ｐオブジェクト１０１ａの側に２Ｐオブジェクト１０１ｂがいる状態で、１Ｐプレイヤが、ボタン７２ｂを押下したまま、コントローラ７を振る操作を行う。すると、図１２に示すように、１Ｐオブジェクト１０１ａは２Ｐオブジェクト１０１ｂを持ち上げることができる。この持ち上げ状態は、１Ｐプレイヤがボタン７２ｂを押下し続けている間、継続される。そして、１Ｐオブジェクト１０１ａが２Ｐオブジェクト１０１ｂを持ち上げている状態で、１Ｐプレイヤがボタン７２ｂを離すと、図１３に示すように、２Ｐオブジェクト１０１ｂを投げることが可能となる。なお、持ち上げられているときの２Ｐオブジェクト１０１ｂの操作については、２Ｐプレイヤがコントローラ７を振ることで持ち上げ状態を解除することが可能である。
【０１０５】
また、本ゲームでは、プレイヤオブジェクト１０１が所定のアイテムを取得することで、予め設定された所定の「能力」を有するキャラクタに変身することが可能となっている。例えば、「ファイヤフラワー」というアイテムを取得することで「火炎弾を投げる」能力を有するキャラクタ（以下、ファイヤーキャラクタと呼ぶ）や、「プロペラ」というアイテムを取得することで、「一定時間宙を浮遊する」能力を有するキャラクタ（以下、プロペラキャラクタと呼ぶ）に変身することができる。そして、例えば、図１１の状態において、２Ｐオブジェクト１０１ｂが「プロペラキャラクタ」に変身した状態とする。この場合、上記のような操作で１Ｐオブジェクト１０１ａが２Ｐオブジェクト１０１ｂを持ち上げた状態で、１Ｐプレイヤがコントローラ７を振ることで、２Ｐオブジェクトの「能力」を利用可能となる。すなわち、「プロペラキャラクタ」ではない１Ｐオブジェクト１０１ａが、図１４に示すように、２Ｐオブジェクトの浮遊能力を利用して、一定時間、宙を浮遊することが可能となる。同様に、２Ｐオブジェクトが「ファイヤーキャラクタ」に変身していた場合は、２Ｐオブジェクト１０１ｂを持ち上げた状態で１Ｐプレイヤがコントローラ７を振ることで、図１５に示すように、火炎弾を発射することが可能となる。なお、上記変身できるキャラクタの種類については、上記のような「能力」を有していない種類のキャラクタがあってもよい。この場合は、持ち上げた状態でコントローラ７を振ると、２Ｐオブジェクト１０１ｂを持ち上げた状態のまま、上記「スピンジャンプ」が行われる。また、持ち上げられている間の２Ｐオブジェクト１０１ｂについては、２Ｐプレイヤがコントローラ７で所定の操作を行うことで、「火炎弾」を投げる等、上記「能力」を使うことは可能である。
【０１０６】
そして、本発明は、プレイヤオブジェクト１０１の移動に伴う画面のスクロール制御やズームの制御、更には、上記の持ち上げ操作にかかるものである。
【０１０７】
具体的には、本実施形態にかかる画面のスクロール制御処理については、以下の４つに大別される。
（１）１人用の横スクロール制御（以下、１人用横スクロール）
（２）１人用の縦スクロール制御（以下、１人用縦スクロール）
（３）複数人プレイ時の横スクロール制御（以下、複数人用横スクロール）
（４）複数人プレイ時の縦スクロール制御（以下、複数人用縦スクロール）
以下、各スクロール制御処理の概要を説明する。なお、以下の各スクロール制御の説明においては、画面のズーム倍率が１．０倍であることを前提として説明する。また、以下の説明では、プレイヤオブジェクト１０１の位置を基準とした各種処理についての説明が出てくるが、本実施形態では、プレイヤオブジェクト１０１の足元に「基点」を設定しておき、この「基点」を基準にして、すなわち、プレイヤオブジェクト１０１の位置として、各種処理を実行するものとする。そのため、以下で単に「プレイヤオブジェクト１０１の位置」と表現することもあるが、この場合も、上記「基点」の位置を指しているものとする。
【０１０８】
［１人用横スクロール］
まず、プレイヤが１人だけでプレイする場合（以下、１人プレイと呼ぶ）における横スクロール制御処理（以下、１人用横スクロール処理と呼ぶ）について説明する。１人プレイ時は、図１６に示すように、画面にはプレイヤオブジェクト１０１が一つしか表示されない。この場合は、原則として、プレイヤオブジェクト１０１は画面座標系におけるＸ軸上での中心となる位置に常に表示されるように、画面のスクロールが制御される。つまり、図１６のような状態で、プレイヤがプレイヤオブジェクトを右方向に移動させると、この操作に伴って画面も右スクロール（画面右方向へのスクロール）し、プレイヤオブジェクトを左方向に移動させると、画面も左スクロール（画面左方向へのスクロール）することになる。
【０１０９】
［１人用縦スクロール］
次に、１人プレイ時における縦スクロール制御処理（以下、１人用縦スクロール処理と呼ぶ）について説明する。図１７は、１人用縦スクロール処理の概要を説明するための図である。１人用縦スクロールの場合は、プレイヤの操作の結果、プレイヤオブジェクト１０１（の足元部分）の画面上における表示位置（つまり、画面座標系における位置）が、画面の上端から５ユニット分以内の位置に来ることになったときに、上スクロール（画面上方向へのスクロール）が行われる。図１７でいうと、プレイヤの操作を反映してプレイヤオブジェクト１０１を移動させた結果、上スクロール開始ライン１１１よりも上の位置にプレイヤオブジェクト１０１が表示されることになる場合に、上スクロールが行われる。また、プレイヤオブジェクト１０１の表示位置が、画面の下端から４．５ユニット分以内の位置に来ることになる場合に、下スクロール（画面下方向へのスクロール）が行われる。図１７でいうと、下スクロール開始ライン１１２よりも下にプレイヤオブジェクト１０１が移動することになったときに、下スクロールが行われる。換言すれば、画面表示上においては、プレイヤオブジェクト１０１は、原則として上スクロール開始ライン１１１〜下スクロール開始ライン１１２の間に常に表示されることとなるような制御が行われる。
【０１１０】
なお、上スクロールの判定用の領域のほうが下スクロールの領域よりも多いユニット数に設定されている（つまり、上スクロールのほうは開始がより早い）のは、スクロールの「優先方向」という概念を設定しているためである。本ゲームは、上記のようにいわゆるジャンプアクションゲームであり、仮想空間内に重力の概念が設けられている。そのため、主に縦スクロールを行う場面については、ジャンプする方向（すなわち、反重力側の方向。典型的には、上方向）についての視認性を高めるために、当該反重力側の方向を「優先方向」と設定し、上スクロールのほうがより早く開始されるようにしている。また、横スクロールに関しては、本ゲームは、上記のように、ゴール地点を目指して進んでいくゲームである。そこで、ゲーム中の各場面（エリア）において、ゴール地点に近づく方の方向を優先方向として設定しておき、その方向については、より早くに画面スクロールが開始されるようにすることで、進行すべき方向への視認性を高くしている。なお、優先方向は、上下方向と左右方向で個別に設定されている（以下、それぞれ「縦優先方向」と「横優先方向」と呼ぶ）。また、縦スクロール（縦優先方向）に関しては、ゲームの場面に応じて、上記反重力方向を縦優先方向とする場合と、ゴール地点に近づく方の方向を縦優先方向とする場合とを適宜使い分けるようにしても良い。
【０１１１】
［複数人用横スクロール］
次に、２人〜４人のプレイヤによる同時プレイ（以下、複数プレイと呼ぶ）時における横スクロール制御処理（以下、複数人用横スクロール処理）について説明する。複数プレイ時は、画面内に複数のプレイヤオブジェクト１０１が表示されることになるが、複数人用横スクロール処理では、基本的には、画面に表示されているプレイヤオブジェクト１０１のうち、最も右に表示されるプレイヤオブジェクト（以下、最右オブジェクトと呼ぶ）と、最も左に表示されるプレイヤオブジェクト（以下、最左オブジェクトと呼ぶ）とのＸ軸上における中間位置が画面のＸ軸上における中央となるようにスクロール制御が実行される。但し、このような、最右オブジェクトと最左オブジェクトの中間地点が画面中央に来るような画面を考えたときに、上記横優先方向、および、最も端に表示されるプレイヤオブジェクトの位置との関係によっては、更に以下のような制御も実行される。まず、横優先方向が右方向である場合であって、上記のような画面を算出した場合、図１８に示すように、最右オブジェクトが画面の右端（つまり、表示領域の右端）から７ユニット以内の位置に来ることになる場合は、図１９に示すように、当該最右オブジェクトが、画面の右端から７ユニットの位置に表示されるようにスクロール制御が行われる。また、横優先方向が左方向の場合であって、Ｘ軸上において、最左オブジェクトが画面の左端（つまり、表示領域の左端）から７ユニット分以内の位置に表示されることになる場合は、当該最左オブジェクトが、画面の左端から７ユニットの位置に表示されるようにスクロール制御が行われる。
【０１１２】
［複数人用縦スクロール］
次に、複数プレイ時における縦スクロール制御処理（以下、複数人用縦スクロール処理）について説明する。図２０〜図２４は、当該複数人用縦スクロール処理の概念を説明するための図である。複数人用縦スクロール処理では、基本的には、以下のような制御で画面スクロールの制御が実行される。まず、仮想ゲーム空間内に存在している複数のプレイヤオブジェクト１０１のうち、ゲーム画面において最も上に表示されることになるプレイヤオブジェクト（以下、最上オブジェクトと呼ぶ）と、最も下に表示されることになるプレイヤオブジェクト（以下、最下オブジェクトと呼ぶ）との、Ｙ軸上における中間位置（以下、この位置を基準点と呼ぶ）を仮想ゲーム空間の座標系において考える（当該基準点の位置の算出も、上記プレイヤオブジェクト１０１の足元に設けられている「基点」を基準として計算する）。そして、この基準点が画面座標系においてどこに位置するかによって、上スクロールおよび下スクロールの制御を行う。具体的には、図２０に示すような状態で（この図では、基準点は、ほぼ画面の中央に位置している）プレイヤが最上オブジェクトおよび最下オブジェクトをそれぞれ右上にジャンプさせる操作を行った場合を考える。この場合、プレイヤの操作を反映した結果、図２１に示すように、上記基準点が画面の上端（つまり、表示領域の上端）からＹ軸上で６．２５ユニット以内の位置（図２１の上スクロール開始ライン１２１よりも上側）に表示されることになる場合は、図２２に示すように、当該基準点の位置が画面の上端から６．２５ユニットの位置になる画面が表示されるように上スクロール制御が行われる。また、上記基準点が画面の下端（つまり、表示領域の下端）からＹ軸上で３．７５ユニット以内の位置（図２１では、下スクロール開始ライン１２２より下側）に表示されることになる場合は、当該基準点の位置が画面の下端から３．７５ユニットの位置になるように下スクロール制御が行われる。なお、詳細は後述するが、「画面の上端から６．２５ユニット」や「画面の下端から３．７５ユニット」という値については、上記ズーム倍率に応じて適宜変更される。
【０１１３】
但し、このような画面を仮定した場合に、図２３に示すように、最上オブジェクトの足元（つまり、上記「基点」）の位置が画面上端から４ユニット以内の位置（図２３の点線１３１よりも上側）に表示されることになる場合は、図２４に示すように、最上オブジェクトの足元が画面上端から４ユニットの位置に来るようにスクロールの制御が行われる。また、最下オブジェクトの足元が画面下端から２ユニット以内の位置（図２４の点線１３２よりも下側）に表示されることになる場合は、最下オブジェクトの足元の位置が画面下端から２ユニットの位置に来るようにスクロールの制御が行われる。また、最上オブジェクトの足元位置が画面上端から４ユニット以内の位置に表示され、且つ、最下オブジェクトの足元位置が画面下端から２ユニット以内の位置に表示されることになる場合は、上記縦優先方向として設定されている方向についての処理を優先させる。
【０１１４】
このように、本実施形態では、１人プレイ時と複数プレイ時とで、異なるスクロール制御を行っている。また、縦方向のスクロールと横方向のスクロールとでも異なる制御を行っている。
【０１１５】
また、本実施形態では、（特に複数プレイ時において）ゲーム画面をプレイヤにより見やすくするために、以下のような画面のズーム制御も行っている。まず、１人プレイ時については、基本的には固定の倍率、本実施形態では、１．０倍で表示する（但し、ゲームの進行上、所定の場面においては、適宜、予め定められた倍率が適用されることもある）。一方、複数プレイ時は、各プレイヤオブジェクト１０１間の距離に基づいて、ズーム倍率が決定される。すなわち、プレイヤオブジェクト間の距離が近いときは拡大ズームを行い（図２５参照）、プレイヤオブジェクト間の距離が離れるとは縮小ズームを行う（図２６参照）という処理を行っている。具体的には、以下のような処理でズーム制御が行われる。
【０１１６】
まず、横方向における仮想空間内での最端プレイヤオブジェクト間の距離Ｄｉｓｔ＿Ｘが算出される。すなわち、最右オブジェクトと最左オブジェクト間の距離である。次に、縦方向における仮想空間内での最端プレイヤオブジェクト間の距離Ｄｉｓｔ＿Ｙが算出される。すなわち、最上オブジェクトと最下オブジェクト間の距離である。次に、距離Ｄｉｓｔ＿ＸとＤｉｓｔ＿Ｙのうち、いずれか大きい方の値を選択してＤｉｓｔ＿ＸＹとする。そして、当該Ｄｉｓｔ＿ＸＹの値が、予め定められた第１の閾値（以下、縮小閾値と呼ぶ）より大きくなると（つまり、最端のプレイヤオブジェクト同士がある程度遠く離れた場合）、当該縮小閾値と関連づけて設定されている第１のズーム倍率（以下、縮小用目標ズーム倍率）を目指して、ゆっくりと縮小ズームする処理が行われる。また、縮小ズーム中に、上記Ｄｉｓｔ＿ＸＹの値が縮小閾値より小さくなると、縮小ズームの処理は途中でキャンセルされる。
【０１１７】
一方、Ｄｉｓｔ＿ＸＹの値が、予め定められた第２の閾値（以下、拡大閾値と呼ぶ）より小さくなると（つまり、最端のプレイヤオブジェクト同士がある程度近づいた場合）、当該拡大閾値と関連づけて設定されている第２のズーム倍率（以下、拡大用目標ズーム倍率と呼ぶ）を目指して、ゆっくりと拡大ズームする処理が行われる。また、拡大ズーム中に、上記Ｄｉｓｔ＿ＸＹの値が拡大閾値より大きくなると、拡大ズームの処理は途中でキャンセルされる。このように、本実施形態では、最端のプレイヤオブジェクト同士の距離が所定の閾値を越えたか否かによって、段階的な拡大、あるいは縮小ズーム処理を行っている。
【０１１８】
更に、本実施形態では、プレイ中であるプレイヤオブジェクト１０１の数に変化が生じた場合に、１人プレイ用と複数プレイ用の画面制御の切替をスムーズに行うために、以下のような処理を行っている。例えば、２人同時プレイを行っていたときに、一方のプレイヤがゲームオーバーとなってしまい、１人用プレイに切り替わる場合を想定する。このような場合、例えば、２人プレイ時（ゲームオーバ時）において、ズーム倍率が０．２５倍で画面が表示されていたとする。そして、１人プレイになったため、ズーム倍率を１．０倍にして表示しようとする。このときに、１人プレイになった途端に、画面表示が０．２５倍での表示から１．０倍の表示に急に切り替わってしまうことを防ぐため、本実施形態では、０．２５倍の状態から１．０倍に向けて、１２．５％ずつズーム倍率を変化させていくという処理を行っている（図２７のグラフ参照）。画面のスクロール制御についても同様で、例えば、２人プレイ時に画面の右側に表示されていたプレイヤオブジェクト１０１が、１人プレイとなった途端に急に画面中央部に表示されることを防ぐため、徐々にプレイヤオブジェクト１０１が画面の中央部に位置するようにスクロール制御を行う。つまり、２人プレイ時における画面の制御パラメータを、１人プレイ時における画面制御パラメータを目標として徐々に変化させていくという処理を行っている。
【０１１９】
このように、本実施形態では、複数プレイ時において最も端に表示されるプレイヤオブジェクトの位置等に基づいて、画面スクロール制御やズーム制御を行っている。これにより、プレイヤにとってより見やすい画面を表示することが可能となる。
【０１２０】
次に、ゲーム装置３によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際に外部メインメモリ１２に記憶されるデータについて説明する。図２８は、ゲーム装置３の外部メインメモリ１２のメモリマップを示す図である。図２８において、外部メインメモリ１２は、プログラム記憶領域２０１およびデータ記憶領域２０９を含む。プログラム記憶領域２０１、および、一部のデータ記憶領域２０９のデータは、光ディスク４に記憶され、ゲームプログラム実行時には外部メインメモリ１２に転送されて記憶される。
【０１２１】
プログラム記憶領域２０１は、ＣＰＵ１０によって実行されるゲームプログラムを記憶し、このゲームプログラムは、メイン処理プログラム２０２と、１人用横スクロール制御プログラム２０３と、１人用縦スクロール制御プログラム２０４と、複数人用横スクロール制御プログラム２０５と、複数人用縦スクロール制御プログラム２０６と、ズーム制御プログラム２０７と、プレイ人数変更時制御プログラム２０８などによって構成される。
【０１２２】
メイン処理プログラム２０２は、後述する図２９のフローチャートの処理に対応するプログラムである。１人用横スクロール制御プログラム２０３と、１人用縦スクロール制御プログラム２０４と、複数人用横スクロール制御プログラム２０５と、複数人用縦スクロール制御プログラム２０６は、それぞれの画面スクロールの制御処理をＣＰＵ１０に実行させるためのプログラムである。ズーム制御プログラム２０７は、ズームの制御処理をＣＰＵ１０に実行させるためのプログラムであり、プレイ人数変更時制御プログラム２０８は、上述したような、１人プレイ用と複数プレイ用の画面制御の切替に関する処理をＣＰＵ１０に実行させるためのプログラムである。
【０１２３】
データ記憶領域２０９には、画像データ２１０、コースデータ２１１、操作データ２１５、表示プレイヤオブジェクト数２１９、プレイヤ数変化フラグ２２０、ズームフラグ２２１、縮小閾値データ２２２、拡大閾値データ２２３、縮小用目標ズーム倍率データ２２４、拡大用目標ズーム倍率データ２２５、目標ズーム倍率２２６、上スクロール開始閾値２２７、下スクロール開始閾値２２８、横スクロールパラメータ２２９、縦スクロールパラメータ２３０、ズームパラメータ２３１、切替発生時最終パラメータ２３２、補完パラメータ２３３などのデータが記憶される。
【０１２４】
画像データ２１０は、ゲーム画像として表示される各種オブジェクト等のデータである。
【０１２５】
コースデータ２１１は、仮想ゲーム空間に関するデータである。各コースは複数のエリアで構成されており、コースデータ２１１には、各エリアに関する情報であるエリア情報２１２が複数含まれる。各エリア情報２１２には、各エリアにおける優先方向を示す縦優先方向データ２１３、横優先方向データ２１４が含まれる。また、エリア情報２１２には、その他、各エリアの開始位置や終了位置、地形オブジェクト等の配置を示す情報等を示すデータも含まれる。
【０１２６】
操作データ２１５は、コントローラ７からゲーム装置３へ送信されてくる操作データである。上述したように、コントローラ７からゲーム装置３へ１／２００秒に１回の割合で操作データが送信されるので、外部メインメモリ１２に記憶される操作データ２１５はこの割合で更新される。本実施形態においては、外部メインメモリ１２には、最新の（最後に取得された）操作データのみが記憶されればよい。
【０１２７】
操作データ２１５には、加速度データ２１６、マーカ座標データ２１７、および操作ボタンデータ２１８が含まれる。加速度データ２１６は、加速度センサ７０１によって検出された加速度（加速度ベクトル）を示すデータである。ここでは、加速度データ２１６は、図３に示すＸＹＺの３軸の方向に関する加速度を各成分とする３次元の加速度ベクトルを示す。また、本実施形態においては、コントローラ７が静止している状態で加速度センサ７０１が検出する加速度ベクトルの大きさを"１"とする。つまり、加速度センサ７０１によって検出される重力加速度の大きさは"１"である。
【０１２８】
マーカ座標データ２１７は、撮像情報演算部７４の画像処理回路７４４によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための２次元座標系で表現される。なお、撮像素子７４３によって２つのマーカ８Ｒおよび８Ｌが撮像される場合には、２つのマーカ座標が算出される。一方、撮像素子７４３の撮像可能な範囲内にマーカ８Ｒおよび８Ｌのいずれか一方が位置しない場合には、撮像素子７４３によって１つのマーカのみが撮像され、１つのマーカ座標のみが算出される。また、撮像素子７４３の撮像可能な範囲内にマーカ８Ｒおよび８Ｌの両方が位置しない場合には、撮像素子７４３によってマーカが撮像されず、マーカ座標は算出されない。したがって、マーカ座標データ２１７は、２つのマーカ座標を示す場合もあるし、１つのマーカ座標を示す場合もあるし、マーカ座標がないことを示す場合もある。
【０１２９】
操作ボタンデータ２１８は、各操作ボタン７２ａ〜７２ｉに対する入力状態を示すデータである。
【０１３０】
表示プレイヤオブジェクト数２１９は、画面に表示されているプレイヤオブジェクトの数を示すデータであり、ゲームプレイに参加しているプレイヤの数でもある。
【０１３１】
プレイヤ数変化フラグ２２０は、ゲームプレイ中において、画面に表示されるプレイヤオブジェクトの数に変化が生じたか否かを示すためのフラグである。ズームフラグ２２１は、ズーム処理を行っている途中であるか否かを示すためのフラグである。
【０１３２】
縮小閾値データ２２２は、縮小ズームを行うか否かを判定するための閾値を示すデータである。端同士に位置するプレイヤオブジェクト間の距離が当該閾値を越えると、縮小ズームが行われる。拡大閾値データ２２３は、拡大ズームを行うか否かを判定するための閾値を示すデータである。端同士に位置するプレイヤオブジェクト間の距離が当該閾値より小さくなると、拡大ズームが行われる。
【０１３３】
縮小用ズーム倍率データ２２４は、上記縮小閾値を越えた際の縮小ズームにおいて目標となるズーム倍率である。本実施形態では、０．５倍とする。また、拡大用ズーム倍率データ２２５は、上記拡大閾値を下回った際の拡大ズームにおいて目標となるズーム倍率である。本実施形態では、２．０倍とする。
【０１３４】
目標ズーム倍率２２６は、目標とするズーム倍率を示すデータであり、本実施形態では、上記縮小用ズーム倍率データ２２４または拡大用ズーム倍率データ２２５のいずれかの値が設定されることになる。
【０１３５】
上スクロール開始閾値２２７は、上記図２１等で示したような、複数人縦スクロール処理で用いられる「上から６．２５ユニット」に相当する情報である。また、下スクロール開始閾値２２８は、図２１の「下から３．７５ユニット」に相当する内容の情報である。
【０１３６】
横スクロールパラメータ２２９は、画面の横スクロール制御のために必要となる各種パラメータである。例えば、スクロール方向、スクロール量やスクロール速度等を示すパラメータである。また、縦スクロールパラメータ２３０は、画面の縦スクロール制御のために必要となる各種パラメータである。
【０１３７】
ズームパラメータ２３１は、ズーム倍率を示す情報である。切替発生時最終パラメータ２３２は、表示プレイヤオブジェクト数に変化が生じた際の、最終的な上記スクロールパラメータやズームパラメータなどを保存したものである。補完パラメータ２３３は、上述したような、表示プレイヤオブジェクト数に変化が生じた際の処理において用いられるデータである。
【０１３８】
次に、図２９〜図４２を参照して、ゲーム装置３によって実行されるゲーム処理について説明する。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動プログラムを実行し、これによって外部メインメモリ１２等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムが外部メインメモリ１２に読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図２９に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
【０１３９】
まず、ＣＰＵ１０は、以降の処理において用いられるデータの初期化処理を実行する（ステップＳ１）。具体的には、ゲームに参加するプレイヤの数を検出し、その数を表示プレイヤオブジェクト数２１９に設定する。また、ＣＰＵ１０は、コースデータ２１１を読み込み、３次元のゲーム空間を構築し、参加人数分のプレイヤオブジェクト１０１やブロック１０２、各種地形オブジェクトや敵オブジェクト等を適宜配置する。また、ズームパラメータ２３１として”１．０倍”を設定し、プレイヤ数変化フラグ２２０、ズームフラグ２２１にオフを設定する。その他、上スクロール開始閾値２２７や下スクロール開始閾値２２８等、ゲームの開始に当たって必要な各種データの初期化が実行される。そして、ＣＰＵ１０は、以上のように構築されたゲーム空間を表すゲーム画像を生成し、当該生成したゲーム画像をモニタ２に表示する。以降、ステップＳ２〜Ｓ１２の処理ループが１フレーム毎に繰り返されることによって、ゲームが進行していく。
【０１４０】
初期化処理が終われば、次に、ＣＰＵ１０は、コントローラ７から送信されてきたデータを取得し、操作データ２１５として外部メインメモリ１２に記憶する（ステップＳ２）。
【０１４１】
次に、ＣＰＵ１０は、当該操作データ２１５に基づいてゲーム処理を実行する（ステップＳ３）。すなわち、当該操作データ２１５に基づいてプレイヤオブジェクト１０１を行動させる。また、当該処理の中で、上記持ち上げ操作に関する処理も行われる。図３０および図３１は、当該ステップＳ３におけるゲーム処理の一環として、ＣＰＵ１０に適宜呼び出されて実行される持ち上げ処理の詳細を示すフローチャートである。なお、図３０および図３１のフローチャートの処理は、各プレイヤオブジェクト毎に実行される。図３０において、まず、ＣＰＵ１０は、他のプレイヤキャラクタを持ち上げた状態であるか否かを示すための持ち上げフラグ（図示は省略するが、外部メインメモリ１２に適宜記憶される。また、当該フラグは各プレイヤオブジェクト毎に用意されている。）がオンに設定されているか否かを判定する（ステップＳ１６１）。当該判定の結果、持ち上げフラグがオンではないときは（ステップＳ１６１でＮＯ）、ＣＰＵ１０は、操作データ２１５を参照して、ボタン７２ｂが押下された状態でコントローラ７が振られたか否かを判定する（ステップＳ１６２）。コントローラ７が振られたか否かについては、例えば、加速度データ２１６で示される加速度が所定値以上であるか否かによって判定する。また、判定に用いる加速度の軸の数については、３軸で判定しても良いし、２軸で判定するようにしてもよい。また、軸毎に重み付けを掛けて判定するようにしても良い。例えばＸ軸方向の加速度にはより大きな重み付けをするようにしてもよい。
【０１４２】
ステップＳ１６２の判定の結果、ボタン７２ｂが押下されたままコントローラ７が振られたと判定されなかったときは（ステップＳ１６２でＮＯ）、当該持ち上げ処理は終了する。一方、ボタン７２ｂが押下されたままコントローラ７が振られたと判定されたときは（ステップＳ１６２でＹＥＳ、次に、ＣＰＵ１０は、当該操作が行われたプレイヤオブジェクト１０１から仮想空間内における所定の距離内に他のプレイヤオブジェクト１０１が存在するか否かを判定する（ステップＳ１６３）。当該判定の結果、所定距離内に他のプレイヤオブジェクト１０１がいないときは（ステップＳ１６３でＮＯ）、ＣＰＵ１０は、上記「スピンジャンプ」のための処理を実行し（ステップＳ１６６）、当該持ち上げ処理を終了する。一方、所定距離内に他のプレイヤオブジェクトが存在すれば（ステップＳ１６３でＹＥＳ）、次に、ＣＰＵ１０は、最も近い位置に存在するプレイヤオブジェクト１０１を持ち上げる処理を実行する（ステップＳ１６４）。そして、ＣＰＵ１０は、当該操作が行われたプレイヤオブジェクト１０１に対応する持ち上げフラグにオンを設定する（ステップＳ１６５）。そして、当該持ち上げ処理を終了する。
【０１４３】
一方、上記ステップＳ１６１の判定の結果、持ち上げフラグがオンのときは（ステップＳ１６１でＹＥＳ）、既に他のプレイヤオブジェクト１０１を持ち上げている状態であると考えられる。このときは、次に、ＣＰＵ１０は、ボタン７２ｂが（押下され続けている状態から）離されたか否かを判定する（ステップＳ１６７）。その結果、ボタン７２ｂが離されたときは（ステップＳ１６７でＹＥＳ）、ＣＰＵ１０は、持ち上げている他のプレイヤオブジェクト１０１を投げる処理を実行する（ステップＳ１６８）。そして、持ち上げフラグにオフを設定し（ステップＳ１６９）、当該持ち上げ処理は終了する。
【０１４４】
一方、上記ステップＳ１６７の判定の結果、ボタン７２ｂが離されていない（つまり、押下され続けている状態）ときは（ステップＳ１６７でＮＯ）、次に、ＣＰＵ１０は、上記のように加速度データ２１６に基づいて、コントローラ７が振られたか否かを判定する（ステップＳ１７０）。当該判定の結果、コントローラ７が振られていないときは（ステップＳ１７０でＮＯ）、ＣＰＵ１０は、当該持ち上げ処理は終了する。一方、コントローラ７が振られたときは（ステップＳ１７０でＹＥＳ）、次に、ＣＰＵ１０は、現在持ち上げている他のプレイヤオブジェクト１０１は、何らかの「能力」を有するか否か（「能力」を有するキャラクタに変身した状態か否か）を判定する（ステップＳ１７１）。当該判定の結果、「能力」を有していないときは（ステップＳ１７１でＮＯ）、ＣＰＵ１０は、他のプレイヤオブジェクト１０１を持ち上げたままでの上記「スピンジャンプ」の処理を実行する（ステップＳ１７３）。一方、ステップＳ１７１の判定の結果、他のプレイヤオブジェクト１０１が「能力」を有しているときは（ステップＳ１７１でＹＥＳ）、ＣＰＵ１０は、当該持ち上げられている他のプレイヤオブジェクト１０１の能力を発動する処理を実行する（ステップＳ１７２）。例えば、上記「ファイヤーキャラクタ」に変身していれば、火炎弾を発射するための処理を実行する。また、「プロペラキャラクタ」に変身していたときは、ジャンプしても着地せずに、そのまま宙に浮遊した状態とするための処理が実行される。以上で、当該持ち上げ処理は終了する。
【０１４５】
図２９に戻り、次に、ＣＰＵ１０は、プレイヤ数変化フラグ２２０がオンに設定されているか否かを判定する（ステップＳ４）。当該判定の結果、プレイヤ数変化フラグ２２０がオンであれば（ステップＳ４でＹＥＳ）、後述するステップＳ７の処理に進む。
【０１４６】
一方、プレイヤ数変化フラグ２２０がオフであれば（ステップＳ４でＮＯ）、次に、ＣＰＵ１０は、表示されているプレイヤオブジェクト１０１の数に変化があったか否かを判定する（ステップＳ５）。例えば、２人同時プレイ中に、一方のプレイヤがゲームオーバーになったか等を判定する。当該判定の結果、表示されているプレイヤオブジェクト１０１の数に変化があったときは（ステップＳ５でＹＥＳ）、表示プレイヤオブジェクト数２１９を適宜更新して、後述するステップＳ６の処理に進み、プレイヤ数に変化が生じたときの切替のための処理を実行する。
【０１４７】
一方、表示されているプレイヤオブジェクト１０１の数に変化がないときは（ステップＳ５でＮＯ）、次に、ＣＰＵ１０は、表示プレイヤオブジェクト数２１９が”１”か否か、つまり、１人プレイか複数プレイかを判定する（ステップＳ８）。当該判定の結果、表示プレイヤオブジェクト数２１９が”１”のときは（ステップＳ８でＹＥＳ）、後述するステップＳ９の処理に進み、１人プレイ用の画面制御処理を実行する。一方、表示プレイヤオブジェクト数２１９が”１”ではないときは（ステップＳ８でＮＯ）、後述のステップＳ１０の処理に進み、複数プレイ用の画面制御処理を実行する。
【０１４８】
次に、ＣＰＵ１０は、ステップＳ７、ステップＳ９、あるいは、ステップＳ１０の処理結果に基づいて、画面を描画する処理を実行する（ステップＳ１１）。ステップＳ１１の後、ＣＰＵ１０は、所定のゲーム終了条件が満たされたか否かを判定し（ステップＳ１２）、ＹＥＳの場合、ゲーム処理を終了し、ＮＯの場合、ステップＳ２に戻って、ゲーム処理を繰り返す。
【０１４９】
次に、上記ステップＳ９にかかる１人用画面制御処理について説明する。この処理では、１人プレイ時の各種画面制御処理が行われる。図３２は、上記ステップＳ９で示した１人用画面制御処理の詳細を示すフローチャートである。図３２において、まず、ＣＰＵ１０は、ズームパラメータ２３１に所定のズーム倍率を設定する（ステップＳ２１）。本実施形態では、基本的には、１人プレイ時は１．０倍を設定する。但し、コース上の所定の場所に来たときは強制的に拡大ズームを行う等、１人プレイ時であっても、ゲーム進行に応じて予め設定されたズーム倍率が適宜設定されることもある。
【０１５０】
次に、ＣＰＵ１０は、１人用横スクロール処理を実行する（ステップＳ２２）。図３３は、上記ステップＳ２２で示した１人用横スクロール処理の詳細を示すフローチャートである。図３３において、まず、ＣＰＵ１０は、上記ゲーム処理の結果（あるいは、操作データ２１５を参照して）、プレイヤオブジェクト１０１が右方向に移動したか否かを判定する（ステップＳ３１）。その結果、右方向に移動していたときは、ＣＰＵ１０は、画面の右スクロール制御を行うためのパラメータを算出して横スクロールパラメータ２２９に設定する（ステップＳ３２）。すなわち、移動後のプレイヤオブジェクト１０１の位置がＸ軸上において画面の中心に表示されるように、仮想ゲーム空間内から表示領域（図９参照）の位置を決定する。そして、当該表示領域が画面に表示されるように、画面スクロール方向やスクロール量等のパラメータを決定する。
【０１５１】
次に、ＣＰＵ１０は、上記横スクロールパラメータ２２９に基づいて、仮想カメラを制御する（ステップＳ３５）。これは、本実施形態が仮想ゲーム空間を３次元空間として構築しているためである。仮想ゲーム空間を２次元空間で構築しているような場合は、既知の２次元の画像処理を用いるようにすればよい。
【０１５２】
一方、上記ステップＳ３１の判定の結果、プレイヤオブジェクト１０１が右方向に移動していないときは（ステップＳ３１でＮＯ）、次に、ＣＰＵ１０は、左方向へ移動したか否かを判定する（ステップＳ３３）。当該判定の結果、左方向へ移動していたときは（ステップＳ３３でＹＥＳ）、ＣＰＵ１０は、画面の左スクロール制御を行うためのパラメータを算出して横スクロールパラメータ２２９に設定する（ステップＳ３４）。そして、上記ステップＳ３５の処理に進む。一方、左方向へも移動していないときは（ステップＳ３３でＮＯ）、横スクロール制御を行う必要はないため、１人用横スクロール処理を終了する。
【０１５３】
図３２に戻り、ステップＳ２２の処理の次に、ＣＰＵ１０は、１人用縦スクロール処理を実行する（ステップＳ２３）。図３４は、上記ステップＳ２３で示した１人用横スクロール処理の詳細を示すフローチャートである。図３４において、まず、ＣＰＵ１０は、上記操作データ２１５を反映してプレイヤオブジェクト１０１を移動させた結果、画面座標系（つまり、直前のフレームにかかる処理で決定された表示領域上）において、プレイヤオブジェクト１０１の位置が上記図１７で示したような上スクロール開始ライン１１１よりも上の位置（画面上端から５ユニット以内の位置）に表示されることになるか否かを判定する（ステップＳ４１）。当該判定の結果、上スクロール開始ライン１１１よりも上の位置に表示されるときは（ステップＳ４１でＹＥＳ）、ＣＰＵ１０は、画面の上スクロール制御を行うためのパラメータを算出して縦スクロールパラメータ２３０に設定する（ステップＳ４２）。次に、ＣＰＵ１０は、当該縦スクロールパラメータ２３０に基づいて、仮想カメラを制御する（ステップＳ４５）。
【０１５４】
一方、上記ステップＳ４１の判定の結果、上スクロール開始ライン１１１よりも上の位置には表示されないときは（ステップＳ４１でＮＯ）、次に、ＣＰＵ１０は、操作反映後のプレイヤオブジェクト１０１の位置が上記図１７で示したような下スクロール開始ライン１１２よりも下の位置（画面下端から４．５ユニット以内の位置）に表示されることになるか否かを判定する（ステップＳ４３）。当該判定の結果、下スクロール開始ライン１１２よりも下の位置に表示されるときは（ステップＳ４３でＹＥＳ）、ＣＰＵ１０は、画面の下スクロール制御を行うためのパラメータを縦スクロールパラメータ２３０に設定する（ステップＳ４４）。そして、上記ステップＳ４５の処理に進む。一方、下スクロール開始ライン１１２より下の位置にも表示されないときは（ステップＳ４３でＮＯ）、縦スクロール制御を行う必要はないため、ＣＰＵ１０は、１人用縦スクロール処理を終了する。
【０１５５】
次に、上記図２９のステップＳ１０で示した、複数プレイ時の画面制御処理について説明する。図３５は、上記ステップＳ１０で示した複数人用画面制御処理の詳細を示すフローチャートである。図３５において、まず、ＣＰＵ１０は、プレイヤの操作の反映後におけるプレイヤオブジェクト１０１のうち、上下左右の４方向について、それぞれ最も端に位置することになるプレイヤオブジェクト１０１を検出する（ステップＳ５１）。すなわち、上記最右オブジェクト、最左オブジェクト、最上オブジェクト、最下オブジェクトを検出する。
【０１５６】
次に、ＣＰＵ１０は、ズームフラグ２２１がオフに設定されているか否かを判定する（ステップＳ５２）。これは、例えばズーム倍率を１．０倍から２．０倍にするときに、本実施形態では若干の時間をかけてゆっくりと拡大ズームしていくが、このズームの途中であるか否か、つまり、ズーム処理中であるか否かを判定するものである。当該判定の結果、ズームフラグ２２１がオフのときは（ステップＳ５２でＹＥＳ）、ＣＰＵ１０は、目標ズーム値算出処理を実行する（ステップＳ５３）。本処理は、上記最右オブジェクトや最左オブジェクト等の位置関係に基づき、目標とするズーム倍率を決定するための処理である。
【０１５７】
図３６は、上記ステップＳ５３で示した目標ズーム値算出処理の詳細を示すフローチャートである。図３６において、まず、ＣＰＵ１０は、直近に目標ズーム倍率が設定されたときから所定時間以上経過しているか否かを判定する（ステップＳ７１）。これは、例えば、一旦縮小ズームが開始した後、一定時間の間は、例え拡大ズームのための条件を満たしても、拡大ズームを開始させないようにするためである。当該判定の結果、所定時間が経過していなければ（ステップＳ７１でＮＯ）、ＣＰＵ１０は、当該目標ズーム値算出処理を終了する。一方、所定時間が経過していれば（ステップＳ７１でＹＥＳ）、次に、ＣＰＵ１０は、仮想ゲーム空間内でのＸ軸上における最端プレイヤオブジェクトの間の距離Ｄｉｓｔ＿Ｘを算出する（ステップＳ７２）。つまり、最右オブジェクトと最左オブジェクトとの間のＸ軸上における距離を算出する。
【０１５８】
次に、ＣＰＵ１０は、Ｙ軸上における最端プレイヤオブジェクトの間の距離Ｄｉｓｔ＿Ｙを算出する（ステップＳ７３）。つまり、最上オブジェクトと最下オブジェクトとの間のＹ軸上における距離を算出する。なお、当該距離の算出に際しては、所定の係数を乗じて算出しても良い。
【０１５９】
次に、ＣＰＵ１０は、距離Ｄｉｓｔ＿Ｘと距離Ｄｉｓｔ＿Ｙとを比較し、いずれか大きい方の値を距離Ｄｉｓｔ＿ＸＹとして設定する（ステップＳ７４）。
【０１６０】
次に、ＣＰＵ１０は、距離Ｄｉｓｔ＿ＸＹが、縮小閾値データ２２２で示される値である縮小閾値を越えたか否かを判定する（ステップＳ７５）。つまり、Ｘ軸上またはＹ軸上における最端プレイヤオブジェクト間の距離が所定距離以上離れたか否かを判定する。その結果、距離Ｄｉｓｔ＿ＸＹが縮小閾値を越えていたときは（ステップＳ７５でＹＥＳ）、当該縮小閾値に対応して設定されたズーム倍率である縮小用目標ズーム倍率データ２２４を外部メインメモリ１２から読み出し、目標ズーム倍率２２６として設定する（ステップＳ８１）。
【０１６１】
次に、ＣＰＵ１０は、当該目標ズーム倍率２２６で示される倍率に徐々に近づいていくように、現在のフレームにかかる処理で実際に適用するズーム倍率を決定し、ズームパラメータ２３１に設定する（ステップＳ８２）。例えば、現在のズーム倍率が１．０倍で、目標ズーム値が２．０倍のときは、１フレーム毎に０．０１倍ずつ大きくすることを決定し、ズームパラメータ２３１に１．０１倍を示す値を設定する。その結果、最初のフレームとなる現在のフレームでは、後に実行される描画処理において１．０１倍のズーム倍率のゲーム画像が描画されることになる。続いて、ＣＰＵ１０は、ズームフラグに”縮小”を設定する（ステップＳ８３）。
【０１６２】
次に、ＣＰＵ１０は、ズームパラメータ２３１に基づいて、仮想カメラを制御する（ステップＳ８０）。例えば、画角等の仮想カメラのパラメータの調整が行われる。その後、ＣＰＵ１０は、目標ズーム値算出処理を終了する。
【０１６３】
一方、上記ステップＳ７５の判定の結果、距離Ｄｉｓｔ＿ＸＹが縮小閾値を越えていないときは（ステップＳ７５でＮＯ）、次に、ＣＰＵ１０は、距離Ｄｉｓｔ＿ＸＹが、拡大閾値データ２２３で示される値である拡大閾値より小さいか否かを判定する（ステップＳ７６）。つまり、Ｘ軸上における最端プレイヤオブジェクト間の距離が所定距離以上近づいたか否かを判定する。その結果、距離Ｄｉｓｔ＿ＸＹが拡大閾値より小さいときは（ステップＳ７６でＹＥＳ）、拡大用目標ズーム倍率データ２２５を外部メインメモリ１２から読み出し、目標ズーム倍率２２６として設定する（ステップＳ７７）。
【０１６４】
次に、ＣＰＵ１０は、上記ステップＳ８２の処理同様に、当該目標ズーム倍率に徐々に近づいていくように、現在のフレームにかかる処理で実際に適用するズーム倍率を決定し、ズームパラメータ２３１に設定する（ステップＳ７８）。例えば、現在のズーム倍率が１．０倍で、目標ズーム倍率が０．５倍であれば、０．０１倍ずつ小さくしていくことを決定し、ズームパラメータ２３１には０．９９倍を示す値を設定する。
【０１６５】
次に、ＣＰＵ１０は、ズームフラグに”拡大”を設定する（ステップＳ７９）。その後、上記ステップＳ８０の処理に進む。
【０１６６】
一方、上記ステップＳ７６の判定の結果、距離Ｄｉｓｔ＿ＸＹが拡大閾値より小さくないときは（ステップＳ７６でＮＯ）、ＣＰＵ１０は、ズームフラグ２２１にオフを設定し（ステップＳ８４）、目標ズーム値算出処理を終了する。
【０１６７】
図３５に戻り、目標ズーム値算出処理が終了すれば、次に、ＣＰＵ１０は、ズームフラグ２２１がオフに設定されているか否かを判定する（ステップＳ５４）。その結果、オフであるときは（ステップＳ５４でＹＥＳ）、後述のステップＳ６２の処理へと進む。一方、オフでないときは（ステップＳ５４でＮＯ）、上記ズームパラメータ２３１に基づいて、表示領域（上記図９参照）の位置を決定する（ステップＳ５５）。その結果、ズーム倍率が大きくなるに連れて、表示領域の大きさはより小さく決定され、ズーム倍率が小さくなるに連れて、表示領域の大きさはより大きく決定されることになる。
【０１６８】
次に、ＣＰＵ１０は、上記図２１で示したような、複数人用縦スクロール処理で用いられる、上スクロール開始ライン１２１、下スクロール開始ライン１２２に相当する値（「画面の上端から６．２５ユニット」や「画面の下端から３．７５ユニット」）の設定を行う（ステップＳ５６）。具体的には、ＣＰＵ１０は、以下の数式を用いてこれらの値を算出し、それぞれ、上スクロール開始閾値２２７、下スクロール開始閾値２２８として設定する。
上スクロール開始閾値＝（１００＋（１２．０＊（ｚｏｏｍ−１．０）））＊ｚｏｏｍ／１６）ユニット
下スクロール開始閾値＝（６０＋（１２．０＊（ｚｏｏｍ−１．０）））＊ｚｏｏｍ／１６）ユニット
なお、変数ｚｏｏｍは、現在のズーム倍率（ズームパラメータ２３１）を示す。また、その他の値は、ピクセル数を示す。上記の数式によって、そのときのズーム倍率に応じた上スクロール開始ライン１２１、下スクロール開始ライン１２２に相当する値が設定されることになる。なお、この上記の数式はあくまで一例であり、この数式に限らず、ゲームの内容に照らし合わせて適切な上スクロール開始閾値、下スクロール開始閾値が算出できれば、どのような数式を用いても良い。また、数式の種類を複数用意しておき、コースによって数式を使い分けるようにしても良い
【０１６９】
ステップＳ５６の処理が終われば、ＣＰＵ１０は、後述するステップＳ６２、Ｓ６３にかかるスクロール制御に関する処理に進む。
【０１７０】
一方、上記ステップＳ５２の判定の結果、ズームフラグ２２１がオフではないときは（ステップＳ５２でＮＯ）、拡大あるいは縮小ズームの処理の途中の状態と考えられるため、以下のような処理が実行される。まず、ＣＰＵ１０は、ズームキャンセル判定処理を実行する（ステップＳ５７）。この処理は、上述したような、例えば、縮小ズーム中に、上記Ｄｉｓｔ＿ＸＹの値が縮小閾値より小さくなったとき（一旦遠く離れた最端のプレイヤオブジェクトが、縮小ズームが終わる前に近づいたような場合）は、縮小ズームの処理を途中でキャンセルするための処理である。
【０１７１】
図３７は、上記ステップＳ５７で示したズームキャンセル判定処理の詳細を示すフローチャートである。図３７において、まず、ＣＰＵ１０は、図３６を用いて上述したステップＳ７２〜Ｓ７４と同様の処理を行い、距離Ｄｉｓｔ＿ＸＹを算出する（ステップＳ９１〜Ｓ９３）。
【０１７２】
次に、ＣＰＵ１０は、ズームフラグ２２１が”拡大”か否かを判定する（ステップＳ９４）。当該判定の結果、ズームフラグが”拡大”のときは（ステップＳ９４でＹＥＳ）、次に、ＣＰＵ１０は、距離Ｄｉｓｔ＿ＸＹが拡大閾値より大きいか否かを判定する（ステップＳ９５）。つまり、拡大ズーム中に、最端のプレイヤオブジェクトの間の距離が拡大閾値データ２２３で設定されている距離よりも大きくなったか否かを判定する。当該判定の結果、距離Ｄｉｓｔ＿ＸＹが拡大閾値より大きくないときは（ステップＳ９５でＮＯ）、ＣＰＵ１０は、ズームキャンセル処理を終了する。一方、距離Ｄｉｓｔ＿ＸＹが拡大閾値より大きいときは（ステップＳ９５でＹＥＳ）、ＣＰＵ１０は、拡大ズームをキャンセルさせるために、ズームフラグ２２１にオフを設定する（ステップＳ９７）。そして、ＣＰＵ１０は、ズームキャンセル処理を終了する。
【０１７３】
一方、上記ステップＳ９４の判定の結果、ズームフラグ２２１が”拡大”ではないときは（ステップＳ９４でＮＯ）、ズームフラグは”縮小”であると考えられる。そのため、このときは、ＣＰＵ１０は、距離Ｄｉｓｔ＿ＸＹが縮小閾値より小さいか否かを判定する（ステップＳ９６）。つまり、縮小ズーム中に、最端のプレイヤオブジェクトの間の距離が縮小閾値データ２２２で設定されている距離よりも近くなったか否かを判定する。当該判定の結果、距離Ｄｉｓｔ＿ＸＹが縮小閾値より小さくないときは（ステップＳ９６でＮＯ）、ＣＰＵ１０は、ズームキャンセル処理を終了する。一方、距離Ｄｉｓｔ＿ＸＹが縮小閾値よりも小さいときは（ステップＳ９６でＹＥＳ）、ＣＰＵ１０は、縮小ズームをキャンセルさせるために、上記ステップＳ９７の処理を行う。そして、ＣＰＵ１０は、ズームキャンセル処理を終了する。
【０１７４】
図３５に戻り、ステップＳ５７のズームキャンセル判定処理が終了すれば、次に、ＣＰＵ１０は、ズームフラグ２２１が”オフ”か否かを判定する（ステップＳ５８）。当該判定の結果、ズームフラグが”オフ”のときは、この時点でズーム処理がキャンセルされることになり、ＣＰＵ１０は、後述のステップＳ６２に処理を進める。
【０１７５】
一方、ズームフラグがオフではないときは（ステップＳ５８でＮＯ）、上述したような「時間をかけたズーム処理」を継続するための処理が実行される。すなわち、目標ズーム倍率２２６およびズームパラメータ２３１を参照して、現在のフレームにかかる処理で適用されるズーム倍率を決定し、ズームパラメータ２３１を更新する（ステップＳ５９）。例えば、ズーム倍率１．０倍から目標ズーム倍率２．０倍を目指しての拡大ズームの場合であれば、フレーム毎に０．０１倍ずつズーム倍率を上げていくような設定処理が実行される。
【０１７６】
次に、ＣＰＵ１０は、ズームパラメータ２３１に設定された値が目標ズーム倍率２２６の値に達したか否かを判定する（ステップＳ６０）。つまり、ズーム処理の終了か否かを判定する。当該判定の結果、まだ目標ズーム倍率に達していないときは（ステップＳ６０でＮＯ）、ＣＰＵ１０は、上述したステップＳ５５の処理に進む。一方、目標ズーム倍率に達したときは（ステップＳ６０でＹＥＳ）、ＣＰＵ１０は、ズームフラグ２２１に”オフ”を設定する（ステップＳ６１）。そして、ＣＰＵ１０は、上述したステップＳ５５の処理に進む。
【０１７７】
次に、上記ステップＳ６２およびＳ６３にかかるスクロール制御に関する処理の詳細を説明する。上記ステップＳ５６の処理の後、ＣＰＵは、まず、複数人用横スクロール処理を実行する（ステップＳ６２）。図３８は、上記ステップＳ６２で示した複数人用横スクロール処理の詳細を示すフローチャートである。図３８において、まず、ＣＰＵ１０は、プレイヤの操作を反映した後の仮想ゲーム空間内における最右オブジェクトと最左オブジェクトのＸ軸上における中心位置を算出する（ステップＳ１０１）。次に、ＣＰＵ１０は、上記算出した中心位置が画面座標系において画面の左右の中央に位置するような表示領域を暫定表示領域として算出する（ステップＳ１０２）。
【０１７８】
次に、ＣＰＵ１０は、当該暫定表示領域に関連するエリア情報２１２を参照し、横優先方向データ２１４で示される横優先方向が右方向か否かを判定する（ステップＳ１０３）。当該判定の結果、横優先方向が右方向であるときは（ステップＳ１０３でＹＥＳ）、ＣＰＵ１０は、暫定表示領域において、最右オブジェクトの表示位置が画面の右端から７ユニット以内の位置となるか否かを判定する（ステップＳ１０４）。つまり、画面の右端に近づいているプレイヤオブジェクトが存在するか否かを判定している。当該判定の結果、最右オブジェクトの表示位置が画面の右端から７ユニット以内の位置となるときは（ステップＳ１０４でＹＥＳ）、最右オブジェクトが画面の右端に寄りすぎていることになるため、ＣＰＵ１０は、最右オブジェクトの表示位置が画面右端から７ユニットの位置に来るような表示領域を確定表示領域として算出し（ステップＳ１０５）、後述するステップＳ１０９の処理へと進む。一方、ステップＳ１０４の判定の結果、最右オブジェクトの表示位置が画面の右端から７ユニット以内の位置にならないときは（ステップＳ１０４でＮＯ）、ＣＰＵ１０は、暫定表示領域を確定表示領域として設定し（ステップ１０６）、後述するステップＳ１０９の処理へと進む。
【０１７９】
一方、上記ステップＳ１０３の判定の結果、横優先方向が右方向ではないときは（ステップＳ１０３でＮＯ）、横優先方向は左方向であると考えられる。この場合は、ＣＰＵ１０は、暫定表示領域において、最左オブジェクトの表示位置が画面の左端から７ユニット以内の位置となるか否かを判定する（ステップＳ１０７）。つまり、画面の左端に近づいているプレイヤオブジェクトが存在するか否かを判定している。当該判定の結果、最左オブジェクトの表示位置が画面の左端から７ユニット以内の位置となるときは（ステップＳ１０７でＹＥＳ）、ＣＰＵ１０は、最左オブジェクトの表示位置が画面左端から７ユニットの位置に来るような表示領域を確定表示領域として算出し（ステップＳ１０８）、後述するステップＳ１０９の処理へと進む。一方、ステップＳ１０７の判定の結果、最左オブジェクトの表示位置が画面の左端から７ユニット以内の位置にならないときは（ステップＳ１０７でＮＯ）、ＣＰＵ１０は、上記ステップＳ１０６の処理で暫定表示領域を確定表示領域として設定し、ステップＳ１０９の処理へと進む。
【０１８０】
次に、ＣＰＵ１０は、当該確定表示領域に基づいて、横スクロール制御のためのパラメータを設定し、横スクロールパラメータ２２９に格納する（ステップＳ１０９）。つまり、確定表示領域が表示されるように横スクロールパラメータ２２９を設定する。０１８４そして、ＣＰＵ１０は、当該横スクロールパラメータ２２９に基づいて仮想カメラの制御を行う（ステップＳ１１０）。以上で、複数人用横スクロール処理は終了する。
０１８５
【０１８１】
図３５に戻り、ステップＳ６２にかかる複数人用横スクロール処理が終了すれば、ＣＰＵ１０は、次に、複数人用縦スクロール処理を実行する（ステップＳ６３）。図３９〜図４０は、上記ステップＳ６３で示した複数人用縦スクロール処理の詳細を示すフローチャートである。図３９において、まず、ＣＰＵ１０は、図１６等を用いて説明したような「基準点」を算出する（ステップＳ１２１）。すなわち、仮想ゲーム空間内において、最上オブジェクトと最下オブジェクトのＹ軸上における中間点を基準点として算出する。
【０１８２】
次に、当該基準点の位置が、（直前のフレームにかかる処理で算出された表示領域において）上スクロール開始閾値２２７で示されるユニット数以内（以下、単に上側閾値と呼ぶ。上記図２１の例では、上から６．２５ユニット以内）の位置になるか否かを判定する（ステップＳ１２２）。すなわち、当該基準点を画面座標系（２次元座標）に変換し、変換後の画面座標系における位置が上側閾値以内に来るか否かを判定する。当該判定の結果、画面上端から上側閾値以内に基準点が位置するときは（ステップＳ１２２でＹＥＳ）、ＣＰＵ１０は、上記図１７で示したように、Ｙ軸上において基準点の位置が上側閾値となる位置（図１７では画面上端から６．２５ユニットの位置）に来るように、暫定表示領域を算出する（ステップＳ１２３）。その後、ＣＰＵ１０は、後述するステップＳ１２６の処理に進む。
【０１８３】
一方、上記ステップＳ１２２の判定の結果、基準点の位置が画面上端から上側閾値以内には来ないときは（ステップＳ１２２でＮＯ）、次に、ＣＰＵ１０は、基準点の位置が下スクロール開始閾値２２８で示されるユニット数以内（以下、単に下側閾値と呼ぶ。上記図２１の例では、下から３．７５ユニット以内）の位置になるか否かを判定する（ステップＳ１２４）。当該判定の結果、画面下端から下側閾値以内に基準点が位置するときは（ステップＳ１２４でＹＥＳ）、ＣＰＵ１０は、Ｙ軸上において基準点の位置が下側閾値となる位置（図２１等の例では画面下端から３．７５ユニットの位置）に来るように、暫定表示領域を算出する（ステップＳ１２５）。その後、ＣＰＵ１０は、後述するステップＳ１２６の処理に進む。
【０１８４】
一方、上記ステップＳ１２４の判定の結果、画面下端から下側閾値以内に基準点が位置しないときは（ステップＳ１２４でＮＯ）、ＣＰＵ１０は、以下に説明するステップＳ１２６の処理に進む。
【０１８５】
図４０において、ＣＰＵ１０は、上記暫定表示領域において、最上オブジェクトの位置が、画面の上端から４ユニット以内に位置するか否かを判定する（ステップＳ１２６）。当該判定の結果、最上オブジェクトが画面の上端から４ユニット以内に位置するときは（ステップＳ１２６でＹＥＳ）、次に、ＣＰＵ１０は、暫定表示領域において、最下オブジェクトの位置が、画面の下端から２ユニット以内に位置するか否かを判定する（ステップＳ１２７）。当該判定の結果、最下オブジェクトが画面の下端から２ユニット以内に位置しないときは（ステップＳ１２７でＮＯ）、最上オブジェクトのみが画面の上端に寄りすぎている状態であるため、ＣＰＵ１０は、最上オブジェクトが画面上端から４ユニットの位置に表示されるような表示領域を確定表示領域として算出する（ステップＳ１３０）。一方、最下オブジェクトが画面の下端から２ユニット以内に位置するときは（ステップＳ１２７でＹＥＳ）、最上オブジェクトおよび最下オブジェクト共に、画面の上下の端に寄りすぎている状態と考えられるため、次に、ＣＰＵ１０は、エリア情報２１２を参照して、縦優先方向データ２１３で示される縦優先方向が下方向であるか否かを判定する（ステップＳ１２８）。当該判定の結果、縦優先方向が下方向であるときは（ステップＳ１２８でＹＥＳ）、ＣＰＵ１０は、最下オブジェクトが画面下端から２ユニットの位置に表示されるような表示領域を確定表示領域として算出する（ステップＳ１２９）。
【０１８６】
一方、縦優先方向が下方向ではないときは（ステップＳ１２８でＮＯ）、ＣＰＵ１０は、上記ステップＳ１３０の処理によって、最上オブジェクトが画面上端から４ユニットの位置に表示されるような表示領域を確定表示領域として算出する。その後、後述のステップＳ１３３の処理に進む。
【０１８７】
一方、上記ステップＳ１２６の判定の結果、最上オブジェクトが画面の上端から４ユニット以内に位置しないときは（ステップＳ１２６でＮＯ）、次に、ＣＰＵ１０は、暫定表示領域において、最下オブジェクトの位置が、画面の下端から２ユニット以内に位置するか否かを判定する（ステップＳ１３１）。その結果、最下オブジェクトが画面の下端から２ユニット以内に位置するときは（ステップＳ１３１でＹＥＳ）、ＣＰＵ１０は、最下オブジェクトが画面下端から２ユニットの位置に表示されるような表示領域を確定表示領域として算出する（ステップＳ１３２）。次に、ＣＰＵ１０は、当該確定表示領域に基づいて、縦スクロールパラメータ２３０を設定する（ステップＳ１３３）。すなわち、確定表示領域が表示されるように縦スクロールの方向等を設定する。続いて、ＣＰＵ１０は、当該縦スクロールパラメータ２３０に基づいて仮想カメラの制御を行う（ステップＳ１３４）。
【０１８８】
一方、上記ステップＳ１３１の判定の結果、最下オブジェクトが画面の下端から２ユニット以内に位置しないときは（ステップＳ１３１でＮＯ）、ＣＰＵ１０は、暫定表示領域を確定表示領域として設定する（ステップＳ１３５）。そして、上記ステップＳ１３３の処理へと進む。以上で、複数人用縦スクロール処理が終了する。
【０１８９】
図３５に戻り、ステップＳ６３の複数人用縦スクロール処理が終われば、複数人用画面制御処理は終了する。
【０１９０】
次に、図２９のステップＳ６およびＳ７にかかる処理の詳細について説明する。これらの処理は、例えば２人同時プレイ中に一方のプレイヤがゲームオーバーになる、あるいは、１人プレイ中に他のプレイヤが途中参加した、等で、画面に表示されているプレイヤオブジェクト数に変化が生じたときの画面制御方式の切替のための処理が実行される。
【０１９１】
図４１は、上記ステップＳ６で示したプレイヤオブジェクト数切替時制御処理の詳細を示すフローチャートである。図４１において、まず、ＣＰＵ１０は、プレイヤ数変化フラグ２２０にオンを設定する（ステップＳ１４１）。
【０１９２】
次に、ＣＰＵ１０は、直前のフレームにかかる処理ループにおいて算出された、スクロール制御およびズーム制御に関するパラメータを、切替発生時最終パラメータ２３２として記憶する（ステップＳ１４２）。すなわち、横スクロールパラメータ２２９、縦スクロールパラメータ２３０、およびズームパラメータ２３１を、切替発生時最終パラメータ２３２に格納する。
【０１９３】
次に、ＣＰＵ１０は、プレイヤオブジェクト数の変化内容が、「複数から１人」となる変化であるか否かを判定する（ステップＳ１４３）。つまり、複数プレイから１人プレイに切り替わったのか、１人プレイから複数プレイに切り替わったのかを判定する。当該判定の結果、プレイヤオブジェクト数の変化内容が「複数から１人」であるときは（ステップＳ１４３でＹＥＳ）、複数プレイから１人プレイに切り替わったと考えられるため、ＣＰＵ１０は、図３２等を用いて上述した１人用画面制御処理を実行し（ステップＳ１４４）、１人プレイ用のスクロールパラメータ２２９および２３０、ズームパラメータ２３１、目標ズーム倍率２２６などを算出する。
【０１９４】
そして、ＣＰＵ１０は、上記切替発生時最終パラメータ２３２（この場合、複数プレイ時における最終のズームパラメータ等が記憶されている）と、上記ステップＳ１４４で算出された各種パラメータに基づいて、補完パラメータ２３３を算出する（ステップＳ１４５）。例えば、ズーム倍率について、上記切替発生時最終パラメータ２３２として記憶された目標ズーム倍率から、１人プレイ用の目標ズーム倍率である１．０倍に向けて１２．５％ずつ近づくようなパラメータを補完パラメータとして算出する。切替発生時最終パラメータ２３２として記憶された目標ズーム倍率が２．０倍で、１人プレイ時の目標ズーム倍率が１．０倍という場合を例にすると、補完パラメータ２３３として、ズーム倍率＝１．８７５倍、を示す値が設定される。
【０１９５】
一方、上記ステップＳ１４３の判定の結果、プレイヤオブジェクト数の変化内容が「複数から１人」ではないときは（ステップＳ１４３でＮＯ）、１人プレイから複数プレイに切り替わった（あるいは、３人同時プレイ→２人同時プレイのような、複数プレイ時においてプレイ人数が変化した）と考えられるため、ＣＰＵ１０は、図３５等を用いて上述した複数人用画面制御処理を実行し（ステップＳ１４６）、複数プレイ用の各種スクロールパラメータ、ズームパラメータ２３１、目標ズーム倍率２２６などを算出する。
【０１９６】
そして、ＣＰＵ１０は、上記切替発生時最終パラメータ２３２（この場合、１人プレイ時における最終のズームパラメータ等が記憶されている）と、上記ステップＳ１４６で算出された各種パラメータに基づいて、補完パラメータ２３３を算出する（ステップＳ１４７）。例えば、１人プレイ時のズーム倍率等から、上記複数プレイ用の目標ズーム倍率等に１２．５％ずつ近づけるようなパラメータを補完パラメータとして算出する。以上で、プレイヤオブジェクト数切替時制御処理は終了する。
【０１９７】
図２９に戻り、ステップＳ６にかかる処理が終われば、次に、ＣＰＵ１０は、補完パラメータによる画面制御処理を実行する（ステップＳ７）。図４２は、上記ステップＳ７で示した補完パラメータによる画面制御処理の詳細を示すフローチャートである。図４２において、まず、ＣＰＵ１０は、上記算出された補完パラメータに基づいて仮想カメラを制御する（ステップＳ１５１）。
【０１９８】
次に、ＣＰＵ１０は、補完パラメータ２３３で示されるズーム倍率やスクロールパラメータが、その目標とする値（上記ステップＳ１４４やＳ１４６で算出された目標ズーム倍率等の値）に達したか否かを判定する（ステップＳ１５２）。当該判定の結果、目標とする値まで達していれば（ステップＳ１５２でＹＥＳ）、ＣＰＵ１０は、プレイヤ数変化フラグ２２０にオフを設定し（ステップＳ１５３）、当該処理を終了する。一方、目標とする値まで達していないときは（ステップＳ１５２でＮＯ）、ＣＰＵ１０は、プレイヤ数変化フラグ２２０に変更は加えずに、そのまま当該処理を終了する。
【０１９９】
以上で、本実施形態にかかるゲーム処理の説明を終了する。
【０２００】
このように、本実施形態では、複数プレイ時において、プレイヤオブジェクト１０１と画面端との距離関係に基づき、プレイヤに見やすい画面となるような画面スクロール制御を行っている。また、複数人の縦スクロール処理においては、上述した基準点の位置を用いた制御（図２１、図２２等参照）を実行することで、例えば、画面中央付近に位置するプレイヤオブジェクト１０１がジャンプしたような場合に、当該ジャンプによるプレイヤオブジェクトの上下移動に敏感に反応して画面も上下にスクロールしてしまうことを防ぐことができる。つまり、プレイヤオブジェクトが画面中央付近に位置するときにジャンプしたとしても、画面は頻繁にスクロールしないため、プレイヤにとって見やすい画面を提供することができる。かつ、画面の端までプレイヤオブジェクトが移動していなくても、ある程度画面の端に近づけば、その進行方向にかかる画面がスクロールされて表示され、視認性も高めることが可能となる。
【０２０１】
また、上記複数人の縦スクロール処理における基準点を用いたスクロール制御に関して、スクロールを行うか否かの閾値（図２１の上スクロール開始ライン１２１、下スクロール開始ライン１２２）の設定についても、画面のズーム倍率に応じて適切な値を設定しているため、よりプレイヤにとって見やすい画面が提供できる。
【０２０２】
また、表示されるプレイヤオブジェクトの数に変化が生じたときも、補完パラメータを用いて、１人用と複数人用のズーム制御やスクロール制御処理がスムーズに切り替わるようしている。これにより、プレイヤにとって違和感の無い見やすく、遊びやすい画面を提供することができる。
【０２０３】
また、複数プレイ時において、上述したような「持ち上げ操作」を実行可能とすることで、いずれかのプレイヤオブジェクト１０１が上述したような「能力」を有するキャラクタに変身した際に、他のプレイヤが当該変身したキャラクタを持ち上げることでその「能力」を使うことができるようになるため、協力プレイを行うときの興趣性を高めることができる。更には、ゲームが下手なプレイヤとゲームが上手いプレイヤとで複数プレイを行うような場合、例えば上手いプレイヤが下手なプレイヤのプレイヤオブジェクトを持ち上げることで、下手なプレイヤは特に操作を行うことなく、先に連れて行ってもらうことが可能となる。例えば、障害物が多い場面や穴がたくさん設けられている足場の悪い場面等、当該持ち上げ操作を利用することで、下手なプレイヤも先に進むことが可能となり、協力プレイの興趣性を高めることができる。また、積極的に複数人プレイを行うことへの動機付けともなる。また、「持ち上げ操作」をプレイヤオブジェクト同士で対戦して楽しむゲームに適用することで、対戦の駆け引きやゲーム性を高めることができ、対戦ゲームの興趣性を高めることもできる。
【０２０４】
また、ゲームの難易度を下げ、遊びやすくすることを目的とした場合、プレイヤが行う操作を極力簡便なものとすべく、ゲーム操作で使用するボタン数を少なくしてゲームデザインを行う場合がある。このような場合、例えば上記実施形態では、十字キー７２ａとボタン７２ｂ（ダッシュ移動用）およびボタン７２ｃ（ジャンプ用）の２つのボタンを基本とする操作体系（いわゆる１レバー・２ボタン方式）としているが、このような少ないボタン数であっても、上記のようにコントローラ７を「振る」という操作と組み合わせることで、ボタン数を抑えつつ多様な操作が可能となり、ゲームの興趣性を高めることができる。
【０２０５】
なお、上述の実施形態において、ズーム処理については、拡大閾値および縮小閾値を用いて拡大ズームまたは縮小ズームを行っていた。この拡大閾値、縮小閾値については、それぞれ１つだけではなく、複数設けることによって段階的な拡大、縮小ズームを行うようにしても良い。例えば、第１の縮小閾値を距離２００、これに対応するズーム倍率として、第１の縮小用目標ズーム倍率を０．８倍と設定する。更に、第２の縮小閾値として距離６００、これに対応するズーム倍率として、第２の縮小用目標ズーム倍率を０．５倍と設定する。これにより、例えば、Ｘ軸上での最端プレイヤオブジェクト間の距離が２００〜６００（単位は任意）の間は０．８倍のズーム倍率でゲーム画面が表示され、当該距離が６００を越えると、０．５倍のズーム倍率でゲーム画面が表示されるようになる。更に、上記コースやエリア毎に異なる拡大閾値や縮小閾値を設定してもよい。
【０２０６】
また、上述の実施例では、ゲーム画面の一例として、テレビ２の画面全体に仮想ゲーム空間の様子を表示したもの（いわゆる全画面表示）を例にしていた。つまり、上記表示領域がテレビ２の画面全体に表示される場合を例としたが、これに限らず、画面の一部分のみに上記表示領域を表示するようなレイアウトのゲーム画面の場合にも本発明は適用可能である。この場合は、上記「画面の端からｎユニット以内」の判定閾値にかかる部分を、表示領域の端からｎユニット以内、として適用すればよい。
【０２０７】
また、上記実施形態は、一般的な横長の比率となる画面（４：３や１６：９）にゲーム画像を表示するような場合を例としているが、縦長の画面の場合にも本発明は適用可能である。
【産業上の利用可能性】
【０２０８】
本発明にかかるゲームプログラムおよびゲーム装置は、頻繁に動くオブジェクトが複数表示されるときでもプレイヤにとって見やすい画面を表示することができ、据置型ゲーム装置、携帯型ゲーム装置、ゲームプログラムが実行される携帯型情報端末等に有用である。
【符号の説明】
【０２０９】
１…ゲームシステム
２…モニタ
２ａ…スピーカ
３…ゲーム装置
４…光ディスク
７…コントローラ
１０…ＣＰＵ
１１…システムＬＳＩ
１１ａ…入出力プロセッサ
１１ｂ…ＧＰＵ
１１ｃ…ＤＳＰ
１１ｄ…ＶＲＡＭ
１１ｅ…内部メインメモリ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１５…ＡＶ−ＩＣ
１６…ＡＶコネクタ
１７…フラッシュメモリ
１８…無線通信モジュール
１９…無線コントローラモジュール
２０…拡張コネクタ
２１…外部メモリカード用コネクタ
２２…アンテナ
２３…アンテナ
２４…電源ボタン
２５…リセットボタン
２６…イジェクトボタン
７１…ハウジング
７２…操作部
７３…コネクタ
７４…撮像情報演算部
７４１…赤外線フィルタ
７４２…レンズ
７４３…撮像素子
７４４…画像処理回路
７５…通信部
７５１…マイコン
７５２…メモリ
７５３…無線モジュール
７５４…アンテナ
７００…基板
７０１…加速度センサ
７０２…ＬＥＤ
７０３…水晶振動子
７０４…バイブレータ
７０７…サウンドＩＣ
７０８…アンプ
【図１】
2010273880.tif 000003
【図２】
2010273880.tif 000004
【図３】
2010273880.tif 000005
【図４】
2010273880.tif 000006
【図５】
2010273880.tif 000007
【図６】
2010273880.tif 000008
【図７】
2010273880.tif 000009
【図８】
2010273880.tif 000010
【図９】
2010273880.tif 000011
【図１０】
2010273880.tif 000012
【図１１】
2010273880.tif 000013
【図１２】
2010273880.tif 000014
【図１３】
2010273880.tif 000015
【図１４】
2010273880.tif 000016
【図１５】
2010273880.tif 000017
【図１６】
2010273880.tif 000018
【図１７】
2010273880.tif 000019
【図１８】
2010273880.tif 000020
【図１９】
2010273880.tif 000021
【図２０】
2010273880.tif 000022
【図２１】
2010273880.tif 000023
【図２２】
2010273880.tif 000024
【図２３】
2010273880.tif 000025
【図２４】
2010273880.tif 000026
【図２５】
2010273880.tif 000027
【図２６】
2010273880.tif 000028
【図２７】
2010273880.tif 000029
【図２８】
2010273880.tif 000030
【図２９】
2010273880.tif 000031
【図３０】
2010273880.tif 000032
【図３１】
2010273880.tif 000033
【図３２】
2010273880.tif 000034
【図３３】
2010273880.tif 000035
【図３４】
2010273880.tif 000036
【図３５】
2010273880.tif 000037
【図３６】
2010273880.tif 000038
【図３７】
2010273880.tif 000039
【図３８】
2010273880.tif 000040
【図３９】
2010273880.tif 000041
【図４０】
2010273880.tif 000042
【図４１】
2010273880.tif 000043
【図４２】
2010273880.tif 000044