[go: up one dir, main page]

JP5469379B2 - ゲームプログラム、および、ゲーム装置 - Google Patents

ゲームプログラム、および、ゲーム装置 Download PDF

Info

Publication number
JP5469379B2
JP5469379B2 JP2009129591A JP2009129591A JP5469379B2 JP 5469379 B2 JP5469379 B2 JP 5469379B2 JP 2009129591 A JP2009129591 A JP 2009129591A JP 2009129591 A JP2009129591 A JP 2009129591A JP 5469379 B2 JP5469379 B2 JP 5469379B2
Authority
JP
Japan
Prior art keywords
distance
display area
display
virtual space
game program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009129591A
Other languages
English (en)
Other versions
JP2010273880A (ja
Inventor
重之 足助
聖隆 竹本
誠 佐々木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Priority to JP2009129591A priority Critical patent/JP5469379B2/ja
Priority to US12/550,859 priority patent/US8313376B2/en
Publication of JP2010273880A publication Critical patent/JP2010273880A/ja
Application granted granted Critical
Publication of JP5469379B2 publication Critical patent/JP5469379B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • A63F13/42Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle
    • A63F13/428Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment by mapping the input signals into game commands, e.g. mapping the displacement of a stylus on a touch screen to the steering angle of a virtual vehicle involving motion or position input signals, e.g. signals representing the rotation of an input controller or a player's arm motions sensed by accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/69Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by enabling or updating specific game elements, e.g. unlocking hidden features, items, levels or versions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/822Strategy games; Role-playing games
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/843Special adaptations for executing a specific game genre or game mode involving concurrently two or more players on the same game device, e.g. requiring the use of a plurality of controllers or of a specific view of game data for each player
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/64Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/80Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
    • A63F2300/8088Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game involving concurrently several players in a non-networked game, e.g. on the same game console

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Description

本発明は、仮想空間内のオブジェクトを表示装置に表示させるゲーム装置のコンピュータに実行させるゲームプログラムに関し、より特定的には、仮想空間内の複数のオブジェクトを表示装置に表示させるゲームプログラム、ゲーム装置に関する。
従来より、複数のオブジェクトを表示装置の画面に表示させるゲーム装置が知られている(例えば、特許文献1)。このようなゲーム装置においては、例えば、仮想ゲーム空間内に存在する2体の敵オブジェクトを画面に表示する際に、2体の敵オブジェクトの中間点や、片方の敵の位置に仮想カメラの注視点を設定した上で表示している。
特開平10−165647号公報
しかしながら、上述したようなゲーム装置においては、以下に示す問題点があった。すなわち、上記のような仮想カメラの注視点の設定を行った上で、注視点を設定する対象となる敵オブジェクトが頻繁に移動するような場合には、その都度、注視点を再計算して画面の表示を行うために、注視点の変化が激しくなり、プレイヤにとって非常に見づらい画面表示となってしまっていた。また、敵オブジェクトが速い速度で移動するような場合も、当該移動に伴って注視点も速い速度で移動してしまう。そのために、このような場合もプレイヤにとって非常に見づらい画面表示となってしまっていた。
それ故に、本発明の目的は、頻繁に移動する複数のオブジェクトの位置に基づいて仮想空間内の表示範囲を決定して画面に表示するときに、プレイヤにとって見やすい画面表示が可能なゲームプログラム、ゲーム装置を提供することである。
また、本発明の他の目的は、複数プレイで楽しむゲームについての興趣性を高めることができるゲームプログラム、ゲーム装置を提供することである。
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係の一例を示したものであって、本発明を何ら限定するものではない。
第1の発明は、複数のオブジェクトが存在する仮想空間を表示装置の所定の表示領域に表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、コンピュータを、基準点算出手段(S121)と、第1の判定手段(S122,S124)と、画面制御手段(S123,S125、S133、S135)として機能させる。基準点算出手段は、表示領域の所定の方向である基準方向について、複数のオブジェクトの位置に基づいた中心位置である基準点を算出する。第1の判定手段は、基準方向において、基準点の位置が表示領域の端から第1の距離以内の位置であるか否かを判定する。画面制御手段は、第1の判定手段で基準点の位置が表示領域の端から第1の距離以内であると判定されたときに、表示領域に表示される仮想空間の表示内容を基準方向にスクロールする。なお、上記基準方向とは、スクロール制御を行う方向に沿った方向である。例えば、縦スクロールの場合は、画面の縦方向(Y軸方向)が基準方向である。また、横スクロールの場合は、画面の横方向(X軸方向)が基準方向である。
第1の発明によれば、プレイヤにとって見やすい画面表示が可能となる。
第2の発明は、第1の発明において、基準点算出手段は、基準方向において最も距離が離れている2つのオブジェクトの中点を基準点として算出する。
第2の発明によれば、複数のオブジェクトを画面内に全て表示することが可能となる。
第3の発明は、第1の発明において、画面制御手段は、第1の判定手段で基準点の位置が表示領域の端から第1の距離以内であると判定されたときに、基準点が表示領域の端から第1の距離の位置になるように仮想空間の表示内容を基準方向にスクロールする。
第4の発明は、第1の発明において、画面制御手段は、第1の判定手段で基準点の位置が表示領域の端から第1の距離以内であると判定されたときに、表示領域に表示される仮想空間の表示内容を、基準方向のうち表示領域の端から第1の距離以内であると判定された側にスクロールする。
第3乃至第4の発明によれば、画面の端に近づいたオブジェクトがあったときに、画面をスクロールすることで、画面の視認性を高めることができる。
第5の発明は、第1の発明において、ゲームプログラムは、コンピュータを、基準方向において、表示領域の端から最も近くに位置するオブジェクトが第1の距離よりも当該表示領域の端に近い第3の距離以内に位置するか否かを判定する第2の判定手段(S126、S127、S131)として更に機能させる。そして、画面制御手段は、基準点の位置にかかわらず、第2の判定手段で表示領域の端から最も近くに位置するオブジェクトが第3の距離以内であると判定されたときは、当該オブジェクトが表示領域の端から当該第3の距離となる位置に表示されるように仮想空間の表示内容をスクロールする。
第5の発明によれば、画面の端に近づいたオブジェクトがあったときに、当該オブジェクトの進行方向にかかる視認性を高めることができる。
第6の発明は、第1の発明において、第1の判定手段は、基準方向において、表示領域の一方の端から第1の距離以内の位置であるか否かを判定し、さらに表示領域の他方の端から第2の距離以内の位置であるか否かも判定する。そして、画面制御手段は、第1の判定手段で基準点の位置が表示領域の一方の端から第1の距離以内であると判定されたときは、表示領域に表示される仮想空間の表示内容を基準方向のうち表示領域の一方の側にスクロールし、第1の判定手段で基準点の位置が表示領域の他方の端から第2の距離以内であると判定されたときは、表示領域に表示される仮想空間の表示内容を基準方向のうち表示領域の他方の側にスクロールする。
第6の発明によれば、プレイヤにとって見やすい画面表示が可能となる。
第7の発明は、第6の発明において、第1の距離と第2の距離とは異なる値の距離である。
第7の発明によれば、オブジェクトの動きの特性に応じて画面の表示内容を制御することができ、より見やすい画面表示を行うことができる。
第8の発明は、第7の発明において、基準方向のうち表示領域の一方の側は、仮想空間内における重力方向の反重力側であり、基準方向のうち表示領域の他方の側は、仮想空間内における重力方向の重力側であり、第1の距離は第2の距離より大きい距離である。
第8の発明によれば、例えばジャンプ動作のような、重力の影響を考慮したようなオブジェクトの動きの特性に応じて画面の表示内容を制御することができ、より見やすい画面表示を行うことができる。
00230024
第9の発明は、第6の発明において、第2の判定手段は、基準方向において、表示領域の一方の端から最も近くに位置するオブジェクトが第1の距離よりも当該一方の端に近い第3の距離以内に位置する否かを判定し、さらに表示領域の他方の端から最も近くに位置するオブジェクトが第2の距離よりも当該他方の端に近い第4の距離以内に位置する否かも判定し、画面制御手段は、基準点の位置にかかわらず、第2の判定手段で表示領域の一方の端から最も近くに位置するオブジェクトが第3の距離以内であると判定されたときは、当該オブジェクトが表示領域の一方の端から当該第3の距離となる位置に表示されるように仮想空間の表示内容をスクロールし、表示領域の他方の端から最も近くに位置するオブジェクトが第4の距離以内であると判定されたときは、当該オブジェクトが表示領域の他方の端から当該第4の距離となる位置に表示されるように仮想空間の表示内容をスクロールする。
第9の発明によれば、画面の端に近づいたオブジェクトがあったときに、画面をスクロールすることで、仮想空間内におけるオブジェクト周辺の様子についての視認性を高めることができる。
第10の発明は、第9の発明において、第3の距離と第4の距離とは異なる値の距離である。
第10の発明によれば、オブジェクトの動きの特性に応じて画面の表示内容を制御することができ、より見やすい画面表示を行うことができる。
第11の発明は、第9の発明において、表示領域の基準方向において、一方の端側と他方の端側のいずれか一方が優先の側として設定されている。そして、画面制御手段は、表示領域の一方の端から最も近くに位置するオブジェクトが第3の距離以内であり、且つ、表示領域の他方の端から最も近くに位置するオブジェクトが第4の距離以内のときは、優先の側として設定されている側に仮想空間の表示内容をスクロールする。
第11の発明によれば、画面の両端にそれぞれ近づいているオブジェクトがあったときに、優先側にかかる視認性を高めることができる。
第12の発明は、第1の発明において、ゲームプログラムは、コンピュータを、オブジェクト間距離算出手段(S74)と、縮小判定手段(S75)としてさらに機能させる。オブジェクト間距離算出手段は、基準方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出する。縮小判定手段は、オブジェクト間距離算出手段で算出された距離が予め定められた縮小閾値を越えたか否かを判定する。そして、画面制御手段は、縮小判定手段において、オブジェクト間距離算出手段で算出された距離が縮小閾値を越えたと判定されたとき、仮想空間の画像を所定の倍率で縮小表示する縮小表示手段(S81、S82、S80)を含む。
第13の発明は、第12の発明において、縮小表示手段は、所定の倍率による表示を目指して時間の経過と共に徐々に縮小していくように仮想空間の画像を縮小表示する。
第14の発明は、第13の発明において、縮小表示手段は、仮想空間の画像を徐々に縮小させて表示する制御を行っている途中でオブジェクト間距離算出手段で算出された距離が縮小閾値より小さくなったと判定されたときは、当該縮小表示の制御を中止する。
第12乃至第14の発明によれば、プレイヤにとって、オブジェクトを認識しやすい画面を表示することができる。
第15の発明は、第1の発明において、ゲームプログラムは、コンピュータを、オブジェクト間距離算出手段(S74)と、拡大判定手段(S76)としてさらに機能させる。オブジェクト間距離算出手段は、基準方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出する。拡大判定手段は、オブジェクト間距離算出手段で算出された距離が予め定められた拡大閾値より小さいか否かを判定する。そして、画面制御手段は、拡大判定手段においてオブジェクト間距離算出手段で算出された距離が拡大閾値より小さいと判定されたとき、仮想空間の画像を所定の倍率で拡大表示する拡大表示手段(S77、S78、S80)を含む。
第16の発明は、第15の発明において、拡大表示手段は、所定の倍率による表示を目指して時間の経過と共に徐々に拡大していくように仮想空間の画像を拡大表示する。
第17の発明は、第16の発明において、拡大表示手段は、仮想空間の画像を徐々に拡大させて表示する制御を行っている途中でオブジェクト間距離算出手段で算出された距離が拡大閾値を越えたと判定されたときは、当該拡大表示の制御を中止する。
第15乃至第17の発明によれば、プレイヤにとって、オブジェクトを認識しやすい画面を表示することができる。
第18の発明は、第1の発明において、ゲームプログラムは、コンピュータを、基準方向と直交する直交方向において、仮想空間内での複数のオブジェクトの位置に基づいた中心位置である直交方向中心点を算出する直交方向中心点算出手段(S101)として更に機能させる。そして、画面制御手段は、直交方向中心点が表示領域の直交方向における中心位置となるように仮想空間の表示内容を直行方向にスクロールする。
第18の発明によれば、オブジェクトの動きの特性に応じて、プレイヤにとって見やすい画面を表示できる。
第19の発明は、第18の発明において、表示領域の直交方向において、一方の端側と他方の端側のいずれか一方が優先の側として設定されている。そして、ゲームプログラムは、コンピュータを、複数のオブジェクトのうちいずれかが直交方向における一方の端からの第5の距離以内に位置するか否かを判定する第3の判定手段(S103)として更に機能させる。そして、画面制御手段は、当該いずれかのオブジェクトが第5の距離以内に位置すると判定されたときは、優先の側の端から当該第5の距離となる位置に当該オブジェクトが表示されるように仮想空間の表示内容をスクロールする。
第19の発明によれば、所定の方向と直交する方向における画面の端に近づいたオブジェクトがあったときに、当該オブジェクトの進行方向にかかる視認性を高めることができる。
第20の発明は、第18の発明において、ゲームプログラムは、コンピュータを、第1のオブジェクト間距離算出手段(S73)と、第2のオブジェクト間距離算出手段(S72)と、縮小判定手段(S74,S75)として更に機能させる。第1のオブジェクト間距離算出手段は、基準方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出する。第2のオブジェクト間距離算出手段は、直交方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出する。縮小判定手段は、第1のオブジェクト間距離算出手段または第2のオブジェクト間距離算出手段で算出された距離のいずれかが予め定められた縮小閾値を越えたか否かを判定する。そして、画面制御手段は、縮小判定手段において、算出された距離のいずれかが縮小閾値を越えたと判定されたとき、仮想空間の画像を所定の倍率で縮小表示する縮小表示手段を含む。
第20の発明によれば、複数のオブジェクト間の距離が離れると画面が縮小表示されるため、プレイヤにとって、オブジェクト周辺の様子を認識しやすい画面を表示することができる。
第21の発明は、第18の発明において、ゲームプログラムは、コンピュータを、第1のオブジェクト間距離算出手段と、第2のオブジェクト間距離算出手段と、拡大判定手段として更に機能させる。第1のオブジェクト間距離算出手段は、基準方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出する。第2のオブジェクト間距離算出手段は、直交方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出する。拡大判定手段は、第1のオブジェクト間距離算出手段または第2のオブジェクト間距離算出手段で算出された距離のいずれかが予め定められた拡大閾値より小さいか否かを判定する。そして、画面制御手段は、拡大判定手段において算出された距離のいずれかが拡大閾値より小さいと判定されたとき、仮想空間の画像を所定の倍率で拡大表示する拡大表示手段を含む。
第21の発明によれば、複数のオブジェクト間の距離が近づけば、画面が拡大表示されるため、オブジェクトが認識しやすい画面を表示することができる。
第22の発明は、第1の発明において、複数のオブジェクトとは、複数のプレイヤがそれぞれ所定の操作装置を用いて操作可能なプレイヤオブジェクトである。
第22の発明によれば、複数のプレイヤによる同時プレイが可能なゲームにおいて、プレイヤにとって見やすい画面表示が可能となる。
第23の発明は、第1または第22の発明において、ゲームプログラムは、コンピュータを、ゲーム画面に表示される複数のオブジェクトの数に変化があったか否かを判定する変化発生判定手段(S5)として更に機能させる。そして、画面制御手段は、変化発生判定手段において変化があったと判定されたときは、当該変化前のオブジェクトに基づいて制御された表示領域の表示内容が当該変化後のオブジェクトに基づいて制御された表示領域の表示内容に徐々に近づいていくように当該表示内容の制御を行う切替制御手段(S6,S7)を含む。
第23の発明によれば、プレイヤにとって、オブジェクトを認識しやすい画面を表示することができる。
第24の発明は、第22の発明において、ゲームプログラムは、コンピュータを、操作入力判定手段(S162)と、近接プレイヤ存在判定手段(S163)と、操作一体化手段(S164)と、して更に機能させる。操作入力判定手段は、所定の操作装置から所定の操作入力が行われたか否かを判定する。近接プレイヤ存在判定手段は、操作入力判定手段によって所定の操作が行われたと判定されたとき、当該所定の操作が行われた操作装置に対応するプレイヤオブジェクトから所定の範囲内に他のプレイヤオブジェクトが存在するか否かを判定する。操作一体化手段は、近接プレイヤ判定手段によって、所定の範囲内に他のプレイヤオブジェクトが存在すると判定されたとき、当該他のプレイヤオブジェクトと所定の操作が行われた操作装置に対応するプレイヤオブジェクトとを一体として操作可能とする。
第24の発明によれば、複数プレイ、特に、協力プレイの楽しみを高めることができ、ゲームの興趣性を高めることができる。
第25の発明は、第24の発明において、所定の操作装置は加速度センサを備えている。そして、操作入力判定手段は、所定の操作装置が備える所定のボタンが押された状態で所定値以上の加速度が検出されたか否かを判定する。
第25の発明によれば、単純な操作で多彩な操作内容を提供することができ、また、誤操作が行われることを防ぐこともできる。
第26の発明は、第24の発明において、他のオブジェクトと所定の操作が行われた操作装置に対応するプレイヤオブジェクトとが一体として操作可能な状態の間は、当該他のオブジェクトに設定されている所定の行動特性を当該所定の操作が行われた操作装置に対応するプレイヤオブジェクトが利用可能である。
第26の発明によれば、複数プレイによるゲームの興趣性を高めることができる。
第27の発明は、複数のオブジェクトが存在する仮想空間を表示装置の所定の表示領域に表示するゲーム装置であって、基準点算出手段(10)と、第1の判定手段(10)と、画面制御手段(10)とを備える。基準点算出手段は、表示領域の所定の方向である基準方向について、複数のオブジェクトの位置に基づいた中心位置である基準点を算出する。第1の判定手段は、基準方向において、基準点の位置が表示領域の端から第1の距離以内の位置であるか否かを判定する。画面制御手段は、第1の判定手段で基準点の位置が表示領域の端から第1の距離以内であると判定されたときに、表示領域に表示される仮想空間の表示内容を基準方向にスクロールする。。
第27の発明によれば、第1の発明と同様の効果を得ることができる。
本発明によれば、動きの激しい複数のオブジェクトが画面に表示されるときであっても、プレイヤにとって見やすいゲーム画面の表示が可能となる。
本発明の一実施形態に係るゲームシステム1を説明するための外観図 図1のゲーム装置本体5の機能ブロック図 図1のコントローラ7の上面後方から見た斜視図 図3のコントローラ7を下面前方から見た斜視図 図3のコントローラ7の上ハウジングを外した状態を示す斜視図 図3のコントローラ7の下ハウジングを外した状態を示す斜視図 図3のコントローラ7の構成を示すブロック図 本実施形態で想定するゲームの画面の一例 本実施形態における表示領域の概念を説明するための図 本実施形態におけるゲームの操作方法について説明するための図 持ち上げ操作について説明するための図 持ち上げ操作について説明するための図 持ち上げ操作について説明するための図 持ち上げ操作について説明するための図 持ち上げ操作について説明するための図 1人用横スクロールの概要を説明するための図 1人用縦スクロールの概要を説明するための図 複数人用横スクロールの概要を説明するための図 複数人用横スクロールの概要を説明するための図 複数人用縦スクロールの概要を説明するための図 複数人用縦スクロールの概要を説明するための図 複数人用縦スクロールの概要を説明するための図 複数人用縦スクロールの概要を説明するための図 複数人用縦スクロールの概要を説明するための図 拡大ズームの一例を示す図 縮小ズームの一例を示す図 切替処理について説明するための図 ゲーム装置3の外部メインメモリ12のメモリマップを示す図 本発明の実施形態に係るゲーム処理を示すフローチャート 持ち上げ処理の詳細を示したフローチャート 持ち上げ処理の詳細を示したフローチャート 図29のステップS9で示した1人用画面制御処理の詳細を示したフローチャート 図32のステップS22で示した1人用横スクロール制御処理の詳細を示したフローチャート 図32のステップS23で示した1人用縦スクロール制御処理の詳細を示したフローチャート 図29のステップS10で示した複数人用画面制御処理の詳細を示したフローチャート 図35のステップS53で示した目標ズーム値算出処理の詳細を示したフローチャート 図35のステップS57で示したズームキャンセル判定処理の詳細を示したフローチャート 図35のステップS62で示した複数人用横スクロール処理の詳細を示したフローチャート 図35のステップS63で示した複数人用縦スクロール処理の詳細を示したフローチャート 図35のステップS63で示した複数人用縦スクロール処理の詳細を示したフローチャート 図29のステップS6で示したプレイヤオブジェクト数切替時制御処理の詳細を示したフローチャート 図29のステップS7で示した補完パラメータによる画面制御処理の詳細を示したフローチャート
以下、本発明の実施の形態について、図面を参照して説明する。尚、この実施例により本発明が限定されるものではない。
(ゲームシステムの全体構成)
図1を参照して、本発明の実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、コントローラ7、およびマーカ部8を含む。本システムは、コントローラ7を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2には、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像が表示される。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部8が設置される。マーカ部8は、その両端に2つのマーカ8Rおよび8Lを備えている。マーカ8R(マーカ8Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部8はゲーム装置3に接続されており、ゲーム装置3はマーカ部8が備える各赤外LEDの点灯を制御することが可能である。
コントローラ7は、当該コントローラ7自身に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ7とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ7とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ7とゲーム装置3とは有線で接続されてもよい。
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
また、システムLSI11には、入出力プロセッサ11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。より具体的には、GPU11bは、当該グラフィクスコマンドに従って3Dグラフィックスの表示に必要な計算処理、例えば、レンダリングの前処理にあたる3D座標から2D座標への座標変換などの処理や、テクスチャの張り込みなどの最終的なレンダリング処理を行うことで、ゲーム画像データを生成する。ここで、CPU10は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU11bに与える。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。また、内部メインメモリ11eは、外部メインメモリ12と同様に、プログラムや各種データを記憶するものであり、CPU10のワーク領域やバッファ領域として用いられる。
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
入出力プロセッサ(I/Oプロセッサ)11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
また、入出力プロセッサ11aは、コントローラ7から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンにされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。また、一旦電源がオンにされた状態で、再度電源ボタン24を押すと、低電力スタンバイモードへの移行が行われる。この状態でも、ゲーム装置3への通電は行われているため、インターネット等のネットワークに常時接続しておくことができる。なお、一旦電源がオンにされた状態で、電源をオフにしたいときは、電源ボタン24を所定時間以上長押しすることで、電源をオフとすることが可能である。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
次に、図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
図3および図4において、コントローラ7は、ハウジング71と、当該ハウジング71の表面に設けられた複数個の操作ボタンで構成される操作部72とを備える。本実施例のハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7からゲーム装置3へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5のスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
一方、ハウジング71下面には、凹部が形成されている。後述で明らかとなるが、ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ8Lおよび8Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するxyz軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をz軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をz軸正方向とする。また、コントローラ7の上下方向をy軸とし、ハウジング71の上面(操作ボタン72a等が設けられた面)方向をy軸正方向とする。さらに、コントローラ7の左右方向をx軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をx軸正方向とする。
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上ハウジング(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下ハウジング(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。マイコン751は本願発明のボタンデータ発生手段の一例として、操作ボタン72a等の種類に応じた操作ボタンデータを発生させるように機能する。この仕組みは公知技術であるが、例えばキートップ下側に配置されたタクトスイッチなどのスイッチ機構による配線の接触/切断をマイコン751が検出することによって実現されている。より具体的には、操作ボタンが例えば押されると配線が接触して通電するので、この通電がどの操作ボタンにつながっている配線で発生したかをマイコン751が検出し、操作ボタンの種類に応じた信号を発生させている。
また、コントローラ7は、無線モジュール753(図7参照)およびアンテナ754によって、ワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の回転を良好な感度でゲーム装置3等が判定することができる。
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置3から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置3から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。この撮像情報演算部74から出力される処理結果データに基づいて、コントローラ7の位置や動きに応じた信号を得ることができる。
コントローラ7は、3軸(x、y、z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向、左右方向、および前後方向で直線加速度を検知する。また、他の実施形態においては、ゲーム処理に用いる制御信号の種類によっては、上下および左右方向(または他の対になった方向)のそれぞれに沿った直線加速度のみを検知する2軸の加速度検出手段を使用してもよい。例えば、この3軸または2軸の加速度センサ701は、アナログ・デバイセズ株式会社(Analog Devices, Inc.)またはSTマイクロエレクトロニクス社(STMicroelectronics N.V.)から入手可能であるタイプのものでもよい。加速度センサ701は、シリコン微細加工されたMEMS(Micro Electro Mechanical Systems:微小電子機械システム)の技術に基づいた静電容量式(静電容量結合式)であってもよい。しかしながら、既存の加速度検出手段の技術(例えば、圧電方式や圧電抵抗方式)あるいは将来開発される他の適切な技術を用いて3軸または2軸の加速度センサ701が提供されてもよい。
当業者には公知であるように、加速度センサ701に用いられるような加速度検出手段は、加速度センサの持つ各軸に対応する直線に沿った加速度(直線加速度)のみを検知することができる。つまり、加速度センサ701からの直接の出力は、その2軸または3軸のそれぞれに沿った直線加速度(静的または動的)を示す信号である。このため、加速度センサ701は、非直線状(例えば、円弧状)の経路に沿った動き、回転、回転運動、角変位、傾斜、位置、または姿勢等の物理特性を直接検知することはできない。
しかしながら、加速度センサ701から出力される加速度の信号に基づいて、ゲーム装置のプロセッサ(例えばCPU10)またはコントローラのプロセッサ(例えばマイコン751)などのコンピュータが処理を行うことによって、コントローラ7に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサを搭載するコントローラが静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサによって検出される加速度が重力加速度のみであるとして処理する場合)、コントローラが現実に静的な状態であれば、検出された加速度に基づいてコントローラの姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかを知ることができる。具体的には、加速度センサの検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かだけで傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかも知ることができる。また、多軸の加速度センサの場合には、さらに各軸の加速度の信号に対して処理を施すことによって、各軸が重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ701からの出力に基づいて、プロセッサがコントローラ7の傾き角度のデータを算出する処理をおこなってもよいが、当該傾き角度のデータを算出する処理をおこなうことなく、加速度センサ701からの出力に基づいて、おおよその傾き具合を推定するような処理としてもよい。このように、加速度センサ701をプロセッサと組み合わせて用いることによって、コントローラ7の傾き、姿勢または位置を判定することができる。一方、加速度センサが動的な状態であることを前提とする場合には、重力加速度成分に加えて加速度センサの動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動き方向などを知ることができる。具体的には、加速度センサ701を備えるコントローラ7がユーザの手で動的に加速されて動かされる場合に、加速度センサ701によって生成される加速度信号を処理することによって、コントローラ7のさまざまな動きおよび/または位置を算出することができる。なお、加速度センサが動的な状態であることを前提とする場合であっても、加速度センサの動きに応じた加速度を所定の処理により除去すれば、重力方向対する傾きを知ることが可能である。他の実施例では、加速度センサ701は、信号をマイコン751に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサが静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
他の実施形態の例では、コントローラ7の動きを検出する動きセンサとして、回転素子または振動素子などを内蔵したジャイロセンサを用いてもよい。この実施形態で使用されるMEMSジャイロセンサの一例として、アナログ・デバイセズ株式会社から入手可能なものがある。加速度センサ701と異なり、ジャイロセンサは、それが内蔵する少なくとも一つのジャイロ素子の軸を中心とした回転(または角速度)を直接検知することができる。このように、ジャイロセンサと加速度センサとは基本的に異なるので、個々の用途のためにいずれの装置が選択されるかによって、これらの装置からの出力信号に対して行う処理を適宜変更する必要がある。
具体的には、加速度センサの代わりにジャイロセンサを用いて傾きや姿勢を算出する場合には、大幅な変更を行う。すなわち、ジャイロセンサを用いる場合、検出開始の状態において傾きの値を初期化する。そして、当該ジャイロセンサから出力される角速度データを積分する。次に、初期化された傾きの値からの傾きの変化量を算出する。この場合、算出される傾きは、角度に対応する値が算出されることになる。一方、加速度センサによって傾きを算出する場合には、重力加速度のそれぞれの軸に関する成分の値を、所定の基準と比較することによって傾きを算出するので、算出される傾きはベクトルで表すことが可能であり、初期化を行わずとも、加速度検出手段を用いて検出される絶対的な方向を検出することが可能である。また、傾きとして算出される値の性質は、ジャイロセンサが用いられる場合には角度であるのに対して、加速度センサが用いられる場合にはベクトルであるという違いがある。したがって、加速度センサに代えてジャイロセンサが用いられる場合、当該傾きのデータに対して、2つのデバイスの違いを考慮した所定の変換を行う必要がある。加速度検出手段とジャイロセンサとの基本的な差異と同様にジャイロセンサの特性は当業者に公知であるので、本明細書ではさらなる詳細を省略する。ジャイロセンサは、回転を直接検知できることによる利点を有する一方、一般的には、加速度センサは、本実施形態で用いるようなコントローラに適用される場合、ジャイロセンサに比べて費用効率が良いという利点を有する。
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置3からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置3から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置3から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの加速度信号(x、y、およびz軸方向加速度データ;以下、単に加速度データと記載する)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、加速度データ、処理結果データ)を無線コントローラモジュール19へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(Bluetooth;登録商標)で構成される通信部75の送信間隔は例えば5msである。マイコン751は、無線コントローラモジュール19への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばブルートゥース(登録商標)の技術に基づいて、所定周波数の搬送波を用いて操作情報で変調し、その電波信号をアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からの加速度データ、および撮像情報演算部74からの処理結果データが無線モジュール753で電波信号に変調されてコントローラ7から送信される。そして、ゲーム装置3の無線コントローラモジュール19でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、加速度データ、および処理結果データ)を取得する。そして、ゲーム装置3のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、ブルートゥース(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
次に、図8〜図22を用いて、本実施形態で想定するゲームの概要について説明する。本実施形態で想定するゲームは、1人〜最大4人までの同時プレイが可能なジャンプアクションゲームである。図8は、本実施形態で想定するゲームの画面の一例である。図8において、1画面内に4つのプレイヤオブジェクト101a〜101dが表示されている(以下、総称して単にプレイヤオブジェクト101と呼ぶこともある)。この画面は、4人同時プレイ中の画面を示している。その他、ブロック102が複数集合して構成されたプレイヤオブジェクト101の足場もいくつか表示されている。プレイヤはコントローラ7を用いてジャンプ操作を行うことで、各プレイヤオブジェクト101をこの足場に飛び乗らせることが可能となっている。この画面は、仮想ゲーム空間(2次元空間でも3次元空間でもよいが、本実施形態では、3次元空間)を撮影した画面である。当該仮想ゲーム空間は、ある程度の広さを有した区間であり、このうち、プレイヤオブジェクト101が居る場所を含む領域が、図9に示すような表示領域(仮想カメラで撮影される領域)として、テレビ2に表示される。また、当該仮想ゲーム空間内には、スタート地点とゴール地点が設けられており、本ゲームは、このスタート地点からゴール地点を目指してプレイヤオブジェクト101を進めていくゲームである。また、仮想ゲーム空間は、上記ブロック102や地形オブジェクトを適切に配置することによって、上記スタート地点とゴール地点を結ぶようなルート(コース)が構成されており、基本的に、このルートに沿ってプレイヤオブジェクト101を進めていく。
ここで、以下の本実施形態の説明においては、説明の便宜上、仮想ゲーム空間内における距離や画面上の距離を示すために、”ユニット”という単位を用いることがある。本実施形態においては、1ユニットの大きさは、仮想ゲーム空間内において、図8に示したブロック102の1つ分の大きさであるものとする。また、本実施形態では、後述するように、画面のズーム処理が適宜行われるが、倍率が1.0倍の状態では、1画面の大きさは縦14×横25.5ユニット分の大きさであるものとする(倍率0.5倍であれば、1画面は縦28×横51ユニット分の広さとなり、倍率2倍であれば、1画面は縦7×横12.75ユニット分の広さとなる)。また、以下では、画面横方向をX軸、画面縦方向をY軸として説明する。
本実施形態での操作について説明すると、プレイヤは、コントローラ7を十字キー72aが左側にくるような横長の状態で把持して操作を行う。図10に、コントローラ7の状態とゲーム画面の対応関係を示す。本実施形態では、十字キー72aを用いてプレイヤオブジェクト101を上下左右方向に移動させ、ボタン72cでプレイヤオブジェクト101をジャンプさせることが可能である。また、ボタン72bを押下したままプレイヤオブジェクト101を移動させることで、プレイヤオブジェクト101をダッシュ移動させることも可能となっている。また、コントローラ7を振る操作を行うことで、「スピンジャンプ」と呼ばれる、プレイヤオブジェクト101をスピンさせながらのジャンプも可能である。但し、他のプレイヤオブジェクト101が近くにいるときにコントローラ7を振った場合は、以下に説明するような「持ち上げ」操作が可能である。
上記「持ち上げ」操作について説明すると、まず、複数プレイ、例えば、2人同時プレイの場合を想定する。また、一方のプレイヤが(以下、1Pプレイヤ)が操作するプレイヤオブジェクトを1Pオブジェクト、他方のプレイヤ(以下、2Pプレイヤ)が操作するオブジェクトを2Pオブジェクトと呼ぶ。そして、図11に示すように、1Pオブジェクト101aの側に2Pオブジェクト101bがいる状態で、1Pプレイヤが、ボタン72bを押下したまま、コントローラ7を振る操作を行う。すると、図12に示すように、1Pオブジェクト101aは2Pオブジェクト101bを持ち上げることができる。この持ち上げ状態は、1Pプレイヤがボタン72bを押下し続けている間、継続される。そして、1Pオブジェクト101aが2Pオブジェクト101bを持ち上げている状態で、1Pプレイヤがボタン72bを離すと、図13に示すように、2Pオブジェクト101bを投げることが可能となる。なお、持ち上げられているときの2Pオブジェクト101bの操作については、2Pプレイヤがコントローラ7を振ることで持ち上げ状態を解除することが可能である。
また、本ゲームでは、プレイヤオブジェクト101が所定のアイテムを取得することで、予め設定された所定の「能力」を有するキャラクタに変身することが可能となっている。例えば、「ファイヤフラワー」というアイテムを取得することで「火炎弾を投げる」能力を有するキャラクタ(以下、ファイヤーキャラクタと呼ぶ)や、「プロペラ」というアイテムを取得することで、「一定時間宙を浮遊する」能力を有するキャラクタ(以下、プロペラキャラクタと呼ぶ)に変身することができる。そして、例えば、図11の状態において、2Pオブジェクト101bが「プロペラキャラクタ」に変身した状態とする。この場合、上記のような操作で1Pオブジェクト101aが2Pオブジェクト101bを持ち上げた状態で、1Pプレイヤがコントローラ7を振ることで、2Pオブジェクトの「能力」を利用可能となる。すなわち、「プロペラキャラクタ」ではない1Pオブジェクト101aが、図14に示すように、2Pオブジェクトの浮遊能力を利用して、一定時間、宙を浮遊することが可能となる。同様に、2Pオブジェクトが「ファイヤーキャラクタ」に変身していた場合は、2Pオブジェクト101bを持ち上げた状態で1Pプレイヤがコントローラ7を振ることで、図15に示すように、火炎弾を発射することが可能となる。なお、上記変身できるキャラクタの種類については、上記のような「能力」を有していない種類のキャラクタがあってもよい。この場合は、持ち上げた状態でコントローラ7を振ると、2Pオブジェクト101bを持ち上げた状態のまま、上記「スピンジャンプ」が行われる。また、持ち上げられている間の2Pオブジェクト101bについては、2Pプレイヤがコントローラ7で所定の操作を行うことで、「火炎弾」を投げる等、上記「能力」を使うことは可能である。
そして、本発明は、プレイヤオブジェクト101の移動に伴う画面のスクロール制御やズームの制御、更には、上記の持ち上げ操作にかかるものである。
具体的には、本実施形態にかかる画面のスクロール制御処理については、以下の4つに大別される。
(1)1人用の横スクロール制御(以下、1人用横スクロール)
(2)1人用の縦スクロール制御(以下、1人用縦スクロール)
(3)複数人プレイ時の横スクロール制御(以下、複数人用横スクロール)
(4)複数人プレイ時の縦スクロール制御(以下、複数人用縦スクロール)
以下、各スクロール制御処理の概要を説明する。なお、以下の各スクロール制御の説明においては、画面のズーム倍率が1.0倍であることを前提として説明する。また、以下の説明では、プレイヤオブジェクト101の位置を基準とした各種処理についての説明が出てくるが、本実施形態では、プレイヤオブジェクト101の足元に「基点」を設定しておき、この「基点」を基準にして、すなわち、プレイヤオブジェクト101の位置として、各種処理を実行するものとする。そのため、以下で単に「プレイヤオブジェクト101の位置」と表現することもあるが、この場合も、上記「基点」の位置を指しているものとする。
[1人用横スクロール]
まず、プレイヤが1人だけでプレイする場合(以下、1人プレイと呼ぶ)における横スクロール制御処理(以下、1人用横スクロール処理と呼ぶ)について説明する。1人プレイ時は、図16に示すように、画面にはプレイヤオブジェクト101が一つしか表示されない。この場合は、原則として、プレイヤオブジェクト101は画面座標系におけるX軸上での中心となる位置に常に表示されるように、画面のスクロールが制御される。つまり、図16のような状態で、プレイヤがプレイヤオブジェクトを右方向に移動させると、この操作に伴って画面も右スクロール(画面右方向へのスクロール)し、プレイヤオブジェクトを左方向に移動させると、画面も左スクロール(画面左方向へのスクロール)することになる。
[1人用縦スクロール]
次に、1人プレイ時における縦スクロール制御処理(以下、1人用縦スクロール処理と呼ぶ)について説明する。図17は、1人用縦スクロール処理の概要を説明するための図である。1人用縦スクロールの場合は、プレイヤの操作の結果、プレイヤオブジェクト101(の足元部分)の画面上における表示位置(つまり、画面座標系における位置)が、画面の上端から5ユニット分以内の位置に来ることになったときに、上スクロール(画面上方向へのスクロール)が行われる。図17でいうと、プレイヤの操作を反映してプレイヤオブジェクト101を移動させた結果、上スクロール開始ライン111よりも上の位置にプレイヤオブジェクト101が表示されることになる場合に、上スクロールが行われる。また、プレイヤオブジェクト101の表示位置が、画面の下端から4.5ユニット分以内の位置に来ることになる場合に、下スクロール(画面下方向へのスクロール)が行われる。図17でいうと、下スクロール開始ライン112よりも下にプレイヤオブジェクト101が移動することになったときに、下スクロールが行われる。換言すれば、画面表示上においては、プレイヤオブジェクト101は、原則として上スクロール開始ライン111〜下スクロール開始ライン112の間に常に表示されることとなるような制御が行われる。
なお、上スクロールの判定用の領域のほうが下スクロールの領域よりも多いユニット数に設定されている(つまり、上スクロールのほうは開始がより早い)のは、スクロールの「優先方向」という概念を設定しているためである。本ゲームは、上記のようにいわゆるジャンプアクションゲームであり、仮想空間内に重力の概念が設けられている。そのため、主に縦スクロールを行う場面については、ジャンプする方向(すなわち、反重力側の方向。典型的には、上方向)についての視認性を高めるために、当該反重力側の方向を「優先方向」と設定し、上スクロールのほうがより早く開始されるようにしている。また、横スクロールに関しては、本ゲームは、上記のように、ゴール地点を目指して進んでいくゲームである。そこで、ゲーム中の各場面(エリア)において、ゴール地点に近づく方の方向を優先方向として設定しておき、その方向については、より早くに画面スクロールが開始されるようにすることで、進行すべき方向への視認性を高くしている。なお、優先方向は、上下方向と左右方向で個別に設定されている(以下、それぞれ「縦優先方向」と「横優先方向」と呼ぶ)。また、縦スクロール(縦優先方向)に関しては、ゲームの場面に応じて、上記反重力方向を縦優先方向とする場合と、ゴール地点に近づく方の方向を縦優先方向とする場合とを適宜使い分けるようにしても良い。
[複数人用横スクロール]
次に、2人〜4人のプレイヤによる同時プレイ(以下、複数プレイと呼ぶ)時における横スクロール制御処理(以下、複数人用横スクロール処理)について説明する。複数プレイ時は、画面内に複数のプレイヤオブジェクト101が表示されることになるが、複数人用横スクロール処理では、基本的には、画面に表示されているプレイヤオブジェクト101のうち、最も右に表示されるプレイヤオブジェクト(以下、最右オブジェクトと呼ぶ)と、最も左に表示されるプレイヤオブジェクト(以下、最左オブジェクトと呼ぶ)とのX軸上における中間位置が画面のX軸上における中央となるようにスクロール制御が実行される。但し、このような、最右オブジェクトと最左オブジェクトの中間地点が画面中央に来るような画面を考えたときに、上記横優先方向、および、最も端に表示されるプレイヤオブジェクトの位置との関係によっては、更に以下のような制御も実行される。まず、横優先方向が右方向である場合であって、上記のような画面を算出した場合、図18に示すように、最右オブジェクトが画面の右端(つまり、表示領域の右端)から7ユニット以内の位置に来ることになる場合は、図19に示すように、当該最右オブジェクトが、画面の右端から7ユニットの位置に表示されるようにスクロール制御が行われる。また、横優先方向が左方向の場合であって、X軸上において、最左オブジェクトが画面の左端(つまり、表示領域の左端)から7ユニット分以内の位置に表示されることになる場合は、当該最左オブジェクトが、画面の左端から7ユニットの位置に表示されるようにスクロール制御が行われる。
[複数人用縦スクロール]
次に、複数プレイ時における縦スクロール制御処理(以下、複数人用縦スクロール処理)について説明する。図20〜図24は、当該複数人用縦スクロール処理の概念を説明するための図である。複数人用縦スクロール処理では、基本的には、以下のような制御で画面スクロールの制御が実行される。まず、仮想ゲーム空間内に存在している複数のプレイヤオブジェクト101のうち、ゲーム画面において最も上に表示されることになるプレイヤオブジェクト(以下、最上オブジェクトと呼ぶ)と、最も下に表示されることになるプレイヤオブジェクト(以下、最下オブジェクトと呼ぶ)との、Y軸上における中間位置(以下、この位置を基準点と呼ぶ)を仮想ゲーム空間の座標系において考える(当該基準点の位置の算出も、上記プレイヤオブジェクト101の足元に設けられている「基点」を基準として計算する)。そして、この基準点が画面座標系においてどこに位置するかによって、上スクロールおよび下スクロールの制御を行う。具体的には、図20に示すような状態で(この図では、基準点は、ほぼ画面の中央に位置している)プレイヤが最上オブジェクトおよび最下オブジェクトをそれぞれ右上にジャンプさせる操作を行った場合を考える。この場合、プレイヤの操作を反映した結果、図21に示すように、上記基準点が画面の上端(つまり、表示領域の上端)からY軸上で6.25ユニット以内の位置(図21の上スクロール開始ライン121よりも上側)に表示されることになる場合は、図22に示すように、当該基準点の位置が画面の上端から6.25ユニットの位置になる画面が表示されるように上スクロール制御が行われる。また、上記基準点が画面の下端(つまり、表示領域の下端)からY軸上で3.75ユニット以内の位置(図21では、下スクロール開始ライン122より下側)に表示されることになる場合は、当該基準点の位置が画面の下端から3.75ユニットの位置になるように下スクロール制御が行われる。なお、詳細は後述するが、「画面の上端から6.25ユニット」や「画面の下端から3.75ユニット」という値については、上記ズーム倍率に応じて適宜変更される。
但し、このような画面を仮定した場合に、図23に示すように、最上オブジェクトの足元(つまり、上記「基点」)の位置が画面上端から4ユニット以内の位置(図23の点線131よりも上側)に表示されることになる場合は、図24に示すように、最上オブジェクトの足元が画面上端から4ユニットの位置に来るようにスクロールの制御が行われる。また、最下オブジェクトの足元が画面下端から2ユニット以内の位置(図24の点線132よりも下側)に表示されることになる場合は、最下オブジェクトの足元の位置が画面下端から2ユニットの位置に来るようにスクロールの制御が行われる。また、最上オブジェクトの足元位置が画面上端から4ユニット以内の位置に表示され、且つ、最下オブジェクトの足元位置が画面下端から2ユニット以内の位置に表示されることになる場合は、上記縦優先方向として設定されている方向についての処理を優先させる。
このように、本実施形態では、1人プレイ時と複数プレイ時とで、異なるスクロール制御を行っている。また、縦方向のスクロールと横方向のスクロールとでも異なる制御を行っている。
また、本実施形態では、(特に複数プレイ時において)ゲーム画面をプレイヤにより見やすくするために、以下のような画面のズーム制御も行っている。まず、1人プレイ時については、基本的には固定の倍率、本実施形態では、1.0倍で表示する(但し、ゲームの進行上、所定の場面においては、適宜、予め定められた倍率が適用されることもある)。一方、複数プレイ時は、各プレイヤオブジェクト101間の距離に基づいて、ズーム倍率が決定される。すなわち、プレイヤオブジェクト間の距離が近いときは拡大ズームを行い(図25参照)、プレイヤオブジェクト間の距離が離れるとは縮小ズームを行う(図26参照)という処理を行っている。具体的には、以下のような処理でズーム制御が行われる。
まず、横方向における仮想空間内での最端プレイヤオブジェクト間の距離Dist_Xが算出される。すなわち、最右オブジェクトと最左オブジェクト間の距離である。次に、縦方向における仮想空間内での最端プレイヤオブジェクト間の距離Dist_Yが算出される。すなわち、最上オブジェクトと最下オブジェクト間の距離である。次に、距離Dist_XとDist_Yのうち、いずれか大きい方の値を選択してDist_XYとする。そして、当該Dist_XYの値が、予め定められた第1の閾値(以下、縮小閾値と呼ぶ)より大きくなると(つまり、最端のプレイヤオブジェクト同士がある程度遠く離れた場合)、当該縮小閾値と関連づけて設定されている第1のズーム倍率(以下、縮小用目標ズーム倍率)を目指して、ゆっくりと縮小ズームする処理が行われる。また、縮小ズーム中に、上記Dist_XYの値が縮小閾値より小さくなると、縮小ズームの処理は途中でキャンセルされる。
一方、Dist_XYの値が、予め定められた第2の閾値(以下、拡大閾値と呼ぶ)より小さくなると(つまり、最端のプレイヤオブジェクト同士がある程度近づいた場合)、当該拡大閾値と関連づけて設定されている第2のズーム倍率(以下、拡大用目標ズーム倍率と呼ぶ)を目指して、ゆっくりと拡大ズームする処理が行われる。また、拡大ズーム中に、上記Dist_XYの値が拡大閾値より大きくなると、拡大ズームの処理は途中でキャンセルされる。このように、本実施形態では、最端のプレイヤオブジェクト同士の距離が所定の閾値を越えたか否かによって、段階的な拡大、あるいは縮小ズーム処理を行っている。
更に、本実施形態では、プレイ中であるプレイヤオブジェクト101の数に変化が生じた場合に、1人プレイ用と複数プレイ用の画面制御の切替をスムーズに行うために、以下のような処理を行っている。例えば、2人同時プレイを行っていたときに、一方のプレイヤがゲームオーバーとなってしまい、1人用プレイに切り替わる場合を想定する。このような場合、例えば、2人プレイ時(ゲームオーバ時)において、ズーム倍率が0.25倍で画面が表示されていたとする。そして、1人プレイになったため、ズーム倍率を1.0倍にして表示しようとする。このときに、1人プレイになった途端に、画面表示が0.25倍での表示から1.0倍の表示に急に切り替わってしまうことを防ぐため、本実施形態では、0.25倍の状態から1.0倍に向けて、12.5%ずつズーム倍率を変化させていくという処理を行っている(図27のグラフ参照)。画面のスクロール制御についても同様で、例えば、2人プレイ時に画面の右側に表示されていたプレイヤオブジェクト101が、1人プレイとなった途端に急に画面中央部に表示されることを防ぐため、徐々にプレイヤオブジェクト101が画面の中央部に位置するようにスクロール制御を行う。つまり、2人プレイ時における画面の制御パラメータを、1人プレイ時における画面制御パラメータを目標として徐々に変化させていくという処理を行っている。
このように、本実施形態では、複数プレイ時において最も端に表示されるプレイヤオブジェクトの位置等に基づいて、画面スクロール制御やズーム制御を行っている。これにより、プレイヤにとってより見やすい画面を表示することが可能となる。
次に、ゲーム装置3によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際に外部メインメモリ12に記憶されるデータについて説明する。図28は、ゲーム装置3の外部メインメモリ12のメモリマップを示す図である。図28において、外部メインメモリ12は、プログラム記憶領域201およびデータ記憶領域209を含む。プログラム記憶領域201、および、一部のデータ記憶領域209のデータは、光ディスク4に記憶され、ゲームプログラム実行時には外部メインメモリ12に転送されて記憶される。
プログラム記憶領域201は、CPU10によって実行されるゲームプログラムを記憶し、このゲームプログラムは、メイン処理プログラム202と、1人用横スクロール制御プログラム203と、1人用縦スクロール制御プログラム204と、複数人用横スクロール制御プログラム205と、複数人用縦スクロール制御プログラム206と、ズーム制御プログラム207と、プレイ人数変更時制御プログラム208などによって構成される。
メイン処理プログラム202は、後述する図29のフローチャートの処理に対応するプログラムである。1人用横スクロール制御プログラム203と、1人用縦スクロール制御プログラム204と、複数人用横スクロール制御プログラム205と、複数人用縦スクロール制御プログラム206は、それぞれの画面スクロールの制御処理をCPU10に実行させるためのプログラムである。ズーム制御プログラム207は、ズームの制御処理をCPU10に実行させるためのプログラムであり、プレイ人数変更時制御プログラム208は、上述したような、1人プレイ用と複数プレイ用の画面制御の切替に関する処理をCPU10に実行させるためのプログラムである。
データ記憶領域209には、画像データ210、コースデータ211、操作データ215、表示プレイヤオブジェクト数219、プレイヤ数変化フラグ220、ズームフラグ221、縮小閾値データ222、拡大閾値データ223、縮小用目標ズーム倍率データ224、拡大用目標ズーム倍率データ225、目標ズーム倍率226、上スクロール開始閾値227、下スクロール開始閾値228、横スクロールパラメータ229、縦スクロールパラメータ230、ズームパラメータ231、切替発生時最終パラメータ232、補完パラメータ233などのデータが記憶される。
画像データ210は、ゲーム画像として表示される各種オブジェクト等のデータである。
コースデータ211は、仮想ゲーム空間に関するデータである。各コースは複数のエリアで構成されており、コースデータ211には、各エリアに関する情報であるエリア情報212が複数含まれる。各エリア情報212には、各エリアにおける優先方向を示す縦優先方向データ213、横優先方向データ214が含まれる。また、エリア情報212には、その他、各エリアの開始位置や終了位置、地形オブジェクト等の配置を示す情報等を示すデータも含まれる。
操作データ215は、コントローラ7からゲーム装置3へ送信されてくる操作データである。上述したように、コントローラ7からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、外部メインメモリ12に記憶される操作データ215はこの割合で更新される。本実施形態においては、外部メインメモリ12には、最新の(最後に取得された)操作データのみが記憶されればよい。
操作データ215には、加速度データ216、マーカ座標データ217、および操作ボタンデータ218が含まれる。加速度データ216は、加速度センサ701によって検出された加速度(加速度ベクトル)を示すデータである。ここでは、加速度データ216は、図3に示すXYZの3軸の方向に関する加速度を各成分とする3次元の加速度ベクトルを示す。また、本実施形態においては、コントローラ7が静止している状態で加速度センサ701が検出する加速度ベクトルの大きさを"1"とする。つまり、加速度センサ701によって検出される重力加速度の大きさは"1"である。
マーカ座標データ217は、撮像情報演算部74の画像処理回路744によって算出される座標、すなわち上記マーカ座標を示すデータである。マーカ座標は、撮像画像に対応する平面上の位置を表すための2次元座標系で表現される。なお、撮像素子743によって2つのマーカ8Rおよび8Lが撮像される場合には、2つのマーカ座標が算出される。一方、撮像素子743の撮像可能な範囲内にマーカ8Rおよび8Lのいずれか一方が位置しない場合には、撮像素子743によって1つのマーカのみが撮像され、1つのマーカ座標のみが算出される。また、撮像素子743の撮像可能な範囲内にマーカ8Rおよび8Lの両方が位置しない場合には、撮像素子743によってマーカが撮像されず、マーカ座標は算出されない。したがって、マーカ座標データ217は、2つのマーカ座標を示す場合もあるし、1つのマーカ座標を示す場合もあるし、マーカ座標がないことを示す場合もある。
操作ボタンデータ218は、各操作ボタン72a〜72iに対する入力状態を示すデータである。
表示プレイヤオブジェクト数219は、画面に表示されているプレイヤオブジェクトの数を示すデータであり、ゲームプレイに参加しているプレイヤの数でもある。
プレイヤ数変化フラグ220は、ゲームプレイ中において、画面に表示されるプレイヤオブジェクトの数に変化が生じたか否かを示すためのフラグである。ズームフラグ221は、ズーム処理を行っている途中であるか否かを示すためのフラグである。
縮小閾値データ222は、縮小ズームを行うか否かを判定するための閾値を示すデータである。端同士に位置するプレイヤオブジェクト間の距離が当該閾値を越えると、縮小ズームが行われる。拡大閾値データ223は、拡大ズームを行うか否かを判定するための閾値を示すデータである。端同士に位置するプレイヤオブジェクト間の距離が当該閾値より小さくなると、拡大ズームが行われる。
縮小用ズーム倍率データ224は、上記縮小閾値を越えた際の縮小ズームにおいて目標となるズーム倍率である。本実施形態では、0.5倍とする。また、拡大用ズーム倍率データ225は、上記拡大閾値を下回った際の拡大ズームにおいて目標となるズーム倍率である。本実施形態では、2.0倍とする。
目標ズーム倍率226は、目標とするズーム倍率を示すデータであり、本実施形態では、上記縮小用ズーム倍率データ224または拡大用ズーム倍率データ225のいずれかの値が設定されることになる。
上スクロール開始閾値227は、上記図21等で示したような、複数人縦スクロール処理で用いられる「上から6.25ユニット」に相当する情報である。また、下スクロール開始閾値228は、図21の「下から3.75ユニット」に相当する内容の情報である。
横スクロールパラメータ229は、画面の横スクロール制御のために必要となる各種パラメータである。例えば、スクロール方向、スクロール量やスクロール速度等を示すパラメータである。また、縦スクロールパラメータ230は、画面の縦スクロール制御のために必要となる各種パラメータである。
ズームパラメータ231は、ズーム倍率を示す情報である。切替発生時最終パラメータ232は、表示プレイヤオブジェクト数に変化が生じた際の、最終的な上記スクロールパラメータやズームパラメータなどを保存したものである。補完パラメータ233は、上述したような、表示プレイヤオブジェクト数に変化が生じた際の処理において用いられるデータである。
次に、図29〜図42を参照して、ゲーム装置3によって実行されるゲーム処理について説明する。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、ROM/RTC13に記憶されている起動プログラムを実行し、これによって外部メインメモリ12等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムが外部メインメモリ12に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図29に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。
まず、CPU10は、以降の処理において用いられるデータの初期化処理を実行する(ステップS1)。具体的には、ゲームに参加するプレイヤの数を検出し、その数を表示プレイヤオブジェクト数219に設定する。また、CPU10は、コースデータ211を読み込み、3次元のゲーム空間を構築し、参加人数分のプレイヤオブジェクト101やブロック102、各種地形オブジェクトや敵オブジェクト等を適宜配置する。また、ズームパラメータ231として”1.0倍”を設定し、プレイヤ数変化フラグ220、ズームフラグ221にオフを設定する。その他、上スクロール開始閾値227や下スクロール開始閾値228等、ゲームの開始に当たって必要な各種データの初期化が実行される。そして、CPU10は、以上のように構築されたゲーム空間を表すゲーム画像を生成し、当該生成したゲーム画像をモニタ2に表示する。以降、ステップS2〜S12の処理ループが1フレーム毎に繰り返されることによって、ゲームが進行していく。
初期化処理が終われば、次に、CPU10は、コントローラ7から送信されてきたデータを取得し、操作データ215として外部メインメモリ12に記憶する(ステップS2)。
次に、CPU10は、当該操作データ215に基づいてゲーム処理を実行する(ステップS3)。すなわち、当該操作データ215に基づいてプレイヤオブジェクト101を行動させる。また、当該処理の中で、上記持ち上げ操作に関する処理も行われる。図30および図31は、当該ステップS3におけるゲーム処理の一環として、CPU10に適宜呼び出されて実行される持ち上げ処理の詳細を示すフローチャートである。なお、図30および図31のフローチャートの処理は、各プレイヤオブジェクト毎に実行される。図30において、まず、CPU10は、他のプレイヤキャラクタを持ち上げた状態であるか否かを示すための持ち上げフラグ(図示は省略するが、外部メインメモリ12に適宜記憶される。また、当該フラグは各プレイヤオブジェクト毎に用意されている。)がオンに設定されているか否かを判定する(ステップS161)。当該判定の結果、持ち上げフラグがオンではないときは(ステップS161でNO)、CPU10は、操作データ215を参照して、ボタン72bが押下された状態でコントローラ7が振られたか否かを判定する(ステップS162)。コントローラ7が振られたか否かについては、例えば、加速度データ216で示される加速度が所定値以上であるか否かによって判定する。また、判定に用いる加速度の軸の数については、3軸で判定しても良いし、2軸で判定するようにしてもよい。また、軸毎に重み付けを掛けて判定するようにしても良い。例えばX軸方向の加速度にはより大きな重み付けをするようにしてもよい。
ステップS162の判定の結果、ボタン72bが押下されたままコントローラ7が振られたと判定されなかったときは(ステップS162でNO)、当該持ち上げ処理は終了する。一方、ボタン72bが押下されたままコントローラ7が振られたと判定されたときは(ステップS162でYES、次に、CPU10は、当該操作が行われたプレイヤオブジェクト101から仮想空間内における所定の距離内に他のプレイヤオブジェクト101が存在するか否かを判定する(ステップS163)。当該判定の結果、所定距離内に他のプレイヤオブジェクト101がいないときは(ステップS163でNO)、CPU10は、上記「スピンジャンプ」のための処理を実行し(ステップS166)、当該持ち上げ処理を終了する。一方、所定距離内に他のプレイヤオブジェクトが存在すれば(ステップS163でYES)、次に、CPU10は、最も近い位置に存在するプレイヤオブジェクト101を持ち上げる処理を実行する(ステップS164)。そして、CPU10は、当該操作が行われたプレイヤオブジェクト101に対応する持ち上げフラグにオンを設定する(ステップS165)。そして、当該持ち上げ処理を終了する。
一方、上記ステップS161の判定の結果、持ち上げフラグがオンのときは(ステップS161でYES)、既に他のプレイヤオブジェクト101を持ち上げている状態であると考えられる。このときは、次に、CPU10は、ボタン72bが(押下され続けている状態から)離されたか否かを判定する(ステップS167)。その結果、ボタン72bが離されたときは(ステップS167でYES)、CPU10は、持ち上げている他のプレイヤオブジェクト101を投げる処理を実行する(ステップS168)。そして、持ち上げフラグにオフを設定し(ステップS169)、当該持ち上げ処理は終了する。
一方、上記ステップS167の判定の結果、ボタン72bが離されていない(つまり、押下され続けている状態)ときは(ステップS167でNO)、次に、CPU10は、上記のように加速度データ216に基づいて、コントローラ7が振られたか否かを判定する(ステップS170)。当該判定の結果、コントローラ7が振られていないときは(ステップS170でNO)、CPU10は、当該持ち上げ処理は終了する。一方、コントローラ7が振られたときは(ステップS170でYES)、次に、CPU10は、現在持ち上げている他のプレイヤオブジェクト101は、何らかの「能力」を有するか否か(「能力」を有するキャラクタに変身した状態か否か)を判定する(ステップS171)。当該判定の結果、「能力」を有していないときは(ステップS171でNO)、CPU10は、他のプレイヤオブジェクト101を持ち上げたままでの上記「スピンジャンプ」の処理を実行する(ステップS173)。一方、ステップS171の判定の結果、他のプレイヤオブジェクト101が「能力」を有しているときは(ステップS171でYES)、CPU10は、当該持ち上げられている他のプレイヤオブジェクト101の能力を発動する処理を実行する(ステップS172)。例えば、上記「ファイヤーキャラクタ」に変身していれば、火炎弾を発射するための処理を実行する。また、「プロペラキャラクタ」に変身していたときは、ジャンプしても着地せずに、そのまま宙に浮遊した状態とするための処理が実行される。以上で、当該持ち上げ処理は終了する。
図29に戻り、次に、CPU10は、プレイヤ数変化フラグ220がオンに設定されているか否かを判定する(ステップS4)。当該判定の結果、プレイヤ数変化フラグ220がオンであれば(ステップS4でYES)、後述するステップS7の処理に進む。
一方、プレイヤ数変化フラグ220がオフであれば(ステップS4でNO)、次に、CPU10は、表示されているプレイヤオブジェクト101の数に変化があったか否かを判定する(ステップS5)。例えば、2人同時プレイ中に、一方のプレイヤがゲームオーバーになったか等を判定する。当該判定の結果、表示されているプレイヤオブジェクト101の数に変化があったときは(ステップS5でYES)、表示プレイヤオブジェクト数219を適宜更新して、後述するステップS6の処理に進み、プレイヤ数に変化が生じたときの切替のための処理を実行する。
一方、表示されているプレイヤオブジェクト101の数に変化がないときは(ステップS5でNO)、次に、CPU10は、表示プレイヤオブジェクト数219が”1”か否か、つまり、1人プレイか複数プレイかを判定する(ステップS8)。当該判定の結果、表示プレイヤオブジェクト数219が”1”のときは(ステップS8でYES)、後述するステップS9の処理に進み、1人プレイ用の画面制御処理を実行する。一方、表示プレイヤオブジェクト数219が”1”ではないときは(ステップS8でNO)、後述のステップS10の処理に進み、複数プレイ用の画面制御処理を実行する。
次に、CPU10は、ステップS7、ステップS9、あるいは、ステップS10の処理結果に基づいて、画面を描画する処理を実行する(ステップS11)。ステップS11の後、CPU10は、所定のゲーム終了条件が満たされたか否かを判定し(ステップS12)、YESの場合、ゲーム処理を終了し、NOの場合、ステップS2に戻って、ゲーム処理を繰り返す。
次に、上記ステップS9にかかる1人用画面制御処理について説明する。この処理では、1人プレイ時の各種画面制御処理が行われる。図32は、上記ステップS9で示した1人用画面制御処理の詳細を示すフローチャートである。図32において、まず、CPU10は、ズームパラメータ231に所定のズーム倍率を設定する(ステップS21)。本実施形態では、基本的には、1人プレイ時は1.0倍を設定する。但し、コース上の所定の場所に来たときは強制的に拡大ズームを行う等、1人プレイ時であっても、ゲーム進行に応じて予め設定されたズーム倍率が適宜設定されることもある。
次に、CPU10は、1人用横スクロール処理を実行する(ステップS22)。図33は、上記ステップS22で示した1人用横スクロール処理の詳細を示すフローチャートである。図33において、まず、CPU10は、上記ゲーム処理の結果(あるいは、操作データ215を参照して)、プレイヤオブジェクト101が右方向に移動したか否かを判定する(ステップS31)。その結果、右方向に移動していたときは、CPU10は、画面の右スクロール制御を行うためのパラメータを算出して横スクロールパラメータ229に設定する(ステップS32)。すなわち、移動後のプレイヤオブジェクト101の位置がX軸上において画面の中心に表示されるように、仮想ゲーム空間内から表示領域(図9参照)の位置を決定する。そして、当該表示領域が画面に表示されるように、画面スクロール方向やスクロール量等のパラメータを決定する。
次に、CPU10は、上記横スクロールパラメータ229に基づいて、仮想カメラを制御する(ステップS35)。これは、本実施形態が仮想ゲーム空間を3次元空間として構築しているためである。仮想ゲーム空間を2次元空間で構築しているような場合は、既知の2次元の画像処理を用いるようにすればよい。
一方、上記ステップS31の判定の結果、プレイヤオブジェクト101が右方向に移動していないときは(ステップS31でNO)、次に、CPU10は、左方向へ移動したか否かを判定する(ステップS33)。当該判定の結果、左方向へ移動していたときは(ステップS33でYES)、CPU10は、画面の左スクロール制御を行うためのパラメータを算出して横スクロールパラメータ229に設定する(ステップS34)。そして、上記ステップS35の処理に進む。一方、左方向へも移動していないときは(ステップS33でNO)、横スクロール制御を行う必要はないため、1人用横スクロール処理を終了する。
図32に戻り、ステップS22の処理の次に、CPU10は、1人用縦スクロール処理を実行する(ステップS23)。図34は、上記ステップS23で示した1人用横スクロール処理の詳細を示すフローチャートである。図34において、まず、CPU10は、上記操作データ215を反映してプレイヤオブジェクト101を移動させた結果、画面座標系(つまり、直前のフレームにかかる処理で決定された表示領域上)において、プレイヤオブジェクト101の位置が上記図17で示したような上スクロール開始ライン111よりも上の位置(画面上端から5ユニット以内の位置)に表示されることになるか否かを判定する(ステップS41)。当該判定の結果、上スクロール開始ライン111よりも上の位置に表示されるときは(ステップS41でYES)、CPU10は、画面の上スクロール制御を行うためのパラメータを算出して縦スクロールパラメータ230に設定する(ステップS42)。次に、CPU10は、当該縦スクロールパラメータ230に基づいて、仮想カメラを制御する(ステップS45)。
一方、上記ステップS41の判定の結果、上スクロール開始ライン111よりも上の位置には表示されないときは(ステップS41でNO)、次に、CPU10は、操作反映後のプレイヤオブジェクト101の位置が上記図17で示したような下スクロール開始ライン112よりも下の位置(画面下端から4.5ユニット以内の位置)に表示されることになるか否かを判定する(ステップS43)。当該判定の結果、下スクロール開始ライン112よりも下の位置に表示されるときは(ステップS43でYES)、CPU10は、画面の下スクロール制御を行うためのパラメータを縦スクロールパラメータ230に設定する(ステップS44)。そして、上記ステップS45の処理に進む。一方、下スクロール開始ライン112より下の位置にも表示されないときは(ステップS43でNO)、縦スクロール制御を行う必要はないため、CPU10は、1人用縦スクロール処理を終了する。
次に、上記図29のステップS10で示した、複数プレイ時の画面制御処理について説明する。図35は、上記ステップS10で示した複数人用画面制御処理の詳細を示すフローチャートである。図35において、まず、CPU10は、プレイヤの操作の反映後におけるプレイヤオブジェクト101のうち、上下左右の4方向について、それぞれ最も端に位置することになるプレイヤオブジェクト101を検出する(ステップS51)。すなわち、上記最右オブジェクト、最左オブジェクト、最上オブジェクト、最下オブジェクトを検出する。
次に、CPU10は、ズームフラグ221がオフに設定されているか否かを判定する(ステップS52)。これは、例えばズーム倍率を1.0倍から2.0倍にするときに、本実施形態では若干の時間をかけてゆっくりと拡大ズームしていくが、このズームの途中であるか否か、つまり、ズーム処理中であるか否かを判定するものである。当該判定の結果、ズームフラグ221がオフのときは(ステップS52でYES)、CPU10は、目標ズーム値算出処理を実行する(ステップS53)。本処理は、上記最右オブジェクトや最左オブジェクト等の位置関係に基づき、目標とするズーム倍率を決定するための処理である。
図36は、上記ステップS53で示した目標ズーム値算出処理の詳細を示すフローチャートである。図36において、まず、CPU10は、直近に目標ズーム倍率が設定されたときから所定時間以上経過しているか否かを判定する(ステップS71)。これは、例えば、一旦縮小ズームが開始した後、一定時間の間は、例え拡大ズームのための条件を満たしても、拡大ズームを開始させないようにするためである。当該判定の結果、所定時間が経過していなければ(ステップS71でNO)、CPU10は、当該目標ズーム値算出処理を終了する。一方、所定時間が経過していれば(ステップS71でYES)、次に、CPU10は、仮想ゲーム空間内でのX軸上における最端プレイヤオブジェクトの間の距離Dist_Xを算出する(ステップS72)。つまり、最右オブジェクトと最左オブジェクトとの間のX軸上における距離を算出する。
次に、CPU10は、Y軸上における最端プレイヤオブジェクトの間の距離Dist_Yを算出する(ステップS73)。つまり、最上オブジェクトと最下オブジェクトとの間のY軸上における距離を算出する。なお、当該距離の算出に際しては、所定の係数を乗じて算出しても良い。
次に、CPU10は、距離Dist_Xと距離Dist_Yとを比較し、いずれか大きい方の値を距離Dist_XYとして設定する(ステップS74)。
次に、CPU10は、距離Dist_XYが、縮小閾値データ222で示される値である縮小閾値を越えたか否かを判定する(ステップS75)。つまり、X軸上またはY軸上における最端プレイヤオブジェクト間の距離が所定距離以上離れたか否かを判定する。その結果、距離Dist_XYが縮小閾値を越えていたときは(ステップS75でYES)、当該縮小閾値に対応して設定されたズーム倍率である縮小用目標ズーム倍率データ224を外部メインメモリ12から読み出し、目標ズーム倍率226として設定する(ステップS81)。
次に、CPU10は、当該目標ズーム倍率226で示される倍率に徐々に近づいていくように、現在のフレームにかかる処理で実際に適用するズーム倍率を決定し、ズームパラメータ231に設定する(ステップS82)。例えば、現在のズーム倍率が1.0倍で、目標ズーム値が2.0倍のときは、1フレーム毎に0.01倍ずつ大きくすることを決定し、ズームパラメータ231に1.01倍を示す値を設定する。その結果、最初のフレームとなる現在のフレームでは、後に実行される描画処理において1.01倍のズーム倍率のゲーム画像が描画されることになる。続いて、CPU10は、ズームフラグに”縮小”を設定する(ステップS83)。
次に、CPU10は、ズームパラメータ231に基づいて、仮想カメラを制御する(ステップS80)。例えば、画角等の仮想カメラのパラメータの調整が行われる。その後、CPU10は、目標ズーム値算出処理を終了する。
一方、上記ステップS75の判定の結果、距離Dist_XYが縮小閾値を越えていないときは(ステップS75でNO)、次に、CPU10は、距離Dist_XYが、拡大閾値データ223で示される値である拡大閾値より小さいか否かを判定する(ステップS76)。つまり、X軸上における最端プレイヤオブジェクト間の距離が所定距離以上近づいたか否かを判定する。その結果、距離Dist_XYが拡大閾値より小さいときは(ステップS76でYES)、拡大用目標ズーム倍率データ225を外部メインメモリ12から読み出し、目標ズーム倍率226として設定する(ステップS77)。
次に、CPU10は、上記ステップS82の処理同様に、当該目標ズーム倍率に徐々に近づいていくように、現在のフレームにかかる処理で実際に適用するズーム倍率を決定し、ズームパラメータ231に設定する(ステップS78)。例えば、現在のズーム倍率が1.0倍で、目標ズーム倍率が0.5倍であれば、0.01倍ずつ小さくしていくことを決定し、ズームパラメータ231には0.99倍を示す値を設定する。
次に、CPU10は、ズームフラグに”拡大”を設定する(ステップS79)。その後、上記ステップS80の処理に進む。
一方、上記ステップS76の判定の結果、距離Dist_XYが拡大閾値より小さくないときは(ステップS76でNO)、CPU10は、ズームフラグ221にオフを設定し(ステップS84)、目標ズーム値算出処理を終了する。
図35に戻り、目標ズーム値算出処理が終了すれば、次に、CPU10は、ズームフラグ221がオフに設定されているか否かを判定する(ステップS54)。その結果、オフであるときは(ステップS54でYES)、後述のステップS62の処理へと進む。一方、オフでないときは(ステップS54でNO)、上記ズームパラメータ231に基づいて、表示領域(上記図9参照)の位置を決定する(ステップS55)。その結果、ズーム倍率が大きくなるに連れて、表示領域の大きさはより小さく決定され、ズーム倍率が小さくなるに連れて、表示領域の大きさはより大きく決定されることになる。
次に、CPU10は、上記図21で示したような、複数人用縦スクロール処理で用いられる、上スクロール開始ライン121、下スクロール開始ライン122に相当する値(「画面の上端から6.25ユニット」や「画面の下端から3.75ユニット」)の設定を行う(ステップS56)。具体的には、CPU10は、以下の数式を用いてこれらの値を算出し、それぞれ、上スクロール開始閾値227、下スクロール開始閾値228として設定する。
上スクロール開始閾値=(100+(12.0*(zoom−1.0)))*zoom/16)ユニット
下スクロール開始閾値=(60+(12.0*(zoom−1.0)))*zoom/16)ユニット
なお、変数zoomは、現在のズーム倍率(ズームパラメータ231)を示す。また、その他の値は、ピクセル数を示す。上記の数式によって、そのときのズーム倍率に応じた上スクロール開始ライン121、下スクロール開始ライン122に相当する値が設定されることになる。なお、この上記の数式はあくまで一例であり、この数式に限らず、ゲームの内容に照らし合わせて適切な上スクロール開始閾値、下スクロール開始閾値が算出できれば、どのような数式を用いても良い。また、数式の種類を複数用意しておき、コースによって数式を使い分けるようにしても良い
ステップS56の処理が終われば、CPU10は、後述するステップS62、S63にかかるスクロール制御に関する処理に進む。
一方、上記ステップS52の判定の結果、ズームフラグ221がオフではないときは(ステップS52でNO)、拡大あるいは縮小ズームの処理の途中の状態と考えられるため、以下のような処理が実行される。まず、CPU10は、ズームキャンセル判定処理を実行する(ステップS57)。この処理は、上述したような、例えば、縮小ズーム中に、上記Dist_XYの値が縮小閾値より小さくなったとき(一旦遠く離れた最端のプレイヤオブジェクトが、縮小ズームが終わる前に近づいたような場合)は、縮小ズームの処理を途中でキャンセルするための処理である。
図37は、上記ステップS57で示したズームキャンセル判定処理の詳細を示すフローチャートである。図37において、まず、CPU10は、図36を用いて上述したステップS72〜S74と同様の処理を行い、距離Dist_XYを算出する(ステップS91〜S93)。
次に、CPU10は、ズームフラグ221が”拡大”か否かを判定する(ステップS94)。当該判定の結果、ズームフラグが”拡大”のときは(ステップS94でYES)、次に、CPU10は、距離Dist_XYが拡大閾値より大きいか否かを判定する(ステップS95)。つまり、拡大ズーム中に、最端のプレイヤオブジェクトの間の距離が拡大閾値データ223で設定されている距離よりも大きくなったか否かを判定する。当該判定の結果、距離Dist_XYが拡大閾値より大きくないときは(ステップS95でNO)、CPU10は、ズームキャンセル処理を終了する。一方、距離Dist_XYが拡大閾値より大きいときは(ステップS95でYES)、CPU10は、拡大ズームをキャンセルさせるために、ズームフラグ221にオフを設定する(ステップS97)。そして、CPU10は、ズームキャンセル処理を終了する。
一方、上記ステップS94の判定の結果、ズームフラグ221が”拡大”ではないときは(ステップS94でNO)、ズームフラグは”縮小”であると考えられる。そのため、このときは、CPU10は、距離Dist_XYが縮小閾値より小さいか否かを判定する(ステップS96)。つまり、縮小ズーム中に、最端のプレイヤオブジェクトの間の距離が縮小閾値データ222で設定されている距離よりも近くなったか否かを判定する。当該判定の結果、距離Dist_XYが縮小閾値より小さくないときは(ステップS96でNO)、CPU10は、ズームキャンセル処理を終了する。一方、距離Dist_XYが縮小閾値よりも小さいときは(ステップS96でYES)、CPU10は、縮小ズームをキャンセルさせるために、上記ステップS97の処理を行う。そして、CPU10は、ズームキャンセル処理を終了する。
図35に戻り、ステップS57のズームキャンセル判定処理が終了すれば、次に、CPU10は、ズームフラグ221が”オフ”か否かを判定する(ステップS58)。当該判定の結果、ズームフラグが”オフ”のときは、この時点でズーム処理がキャンセルされることになり、CPU10は、後述のステップS62に処理を進める。
一方、ズームフラグがオフではないときは(ステップS58でNO)、上述したような「時間をかけたズーム処理」を継続するための処理が実行される。すなわち、目標ズーム倍率226およびズームパラメータ231を参照して、現在のフレームにかかる処理で適用されるズーム倍率を決定し、ズームパラメータ231を更新する(ステップS59)。例えば、ズーム倍率1.0倍から目標ズーム倍率2.0倍を目指しての拡大ズームの場合であれば、フレーム毎に0.01倍ずつズーム倍率を上げていくような設定処理が実行される。
次に、CPU10は、ズームパラメータ231に設定された値が目標ズーム倍率226の値に達したか否かを判定する(ステップS60)。つまり、ズーム処理の終了か否かを判定する。当該判定の結果、まだ目標ズーム倍率に達していないときは(ステップS60でNO)、CPU10は、上述したステップS55の処理に進む。一方、目標ズーム倍率に達したときは(ステップS60でYES)、CPU10は、ズームフラグ221に”オフ”を設定する(ステップS61)。そして、CPU10は、上述したステップS55の処理に進む。
次に、上記ステップS62およびS63にかかるスクロール制御に関する処理の詳細を説明する。上記ステップS56の処理の後、CPUは、まず、複数人用横スクロール処理を実行する(ステップS62)。図38は、上記ステップS62で示した複数人用横スクロール処理の詳細を示すフローチャートである。図38において、まず、CPU10は、プレイヤの操作を反映した後の仮想ゲーム空間内における最右オブジェクトと最左オブジェクトのX軸上における中心位置を算出する(ステップS101)。次に、CPU10は、上記算出した中心位置が画面座標系において画面の左右の中央に位置するような表示領域を暫定表示領域として算出する(ステップS102)。
次に、CPU10は、当該暫定表示領域に関連するエリア情報212を参照し、横優先方向データ214で示される横優先方向が右方向か否かを判定する(ステップS103)。当該判定の結果、横優先方向が右方向であるときは(ステップS103でYES)、CPU10は、暫定表示領域において、最右オブジェクトの表示位置が画面の右端から7ユニット以内の位置となるか否かを判定する(ステップS104)。つまり、画面の右端に近づいているプレイヤオブジェクトが存在するか否かを判定している。当該判定の結果、最右オブジェクトの表示位置が画面の右端から7ユニット以内の位置となるときは(ステップS104でYES)、最右オブジェクトが画面の右端に寄りすぎていることになるため、CPU10は、最右オブジェクトの表示位置が画面右端から7ユニットの位置に来るような表示領域を確定表示領域として算出し(ステップS105)、後述するステップS109の処理へと進む。一方、ステップS104の判定の結果、最右オブジェクトの表示位置が画面の右端から7ユニット以内の位置にならないときは(ステップS104でNO)、CPU10は、暫定表示領域を確定表示領域として設定し(ステップ106)、後述するステップS109の処理へと進む。
一方、上記ステップS103の判定の結果、横優先方向が右方向ではないときは(ステップS103でNO)、横優先方向は左方向であると考えられる。この場合は、CPU10は、暫定表示領域において、最左オブジェクトの表示位置が画面の左端から7ユニット以内の位置となるか否かを判定する(ステップS107)。つまり、画面の左端に近づいているプレイヤオブジェクトが存在するか否かを判定している。当該判定の結果、最左オブジェクトの表示位置が画面の左端から7ユニット以内の位置となるときは(ステップS107でYES)、CPU10は、最左オブジェクトの表示位置が画面左端から7ユニットの位置に来るような表示領域を確定表示領域として算出し(ステップS108)、後述するステップS109の処理へと進む。一方、ステップS107の判定の結果、最左オブジェクトの表示位置が画面の左端から7ユニット以内の位置にならないときは(ステップS107でNO)、CPU10は、上記ステップS106の処理で暫定表示領域を確定表示領域として設定し、ステップS109の処理へと進む。
次に、CPU10は、当該確定表示領域に基づいて、横スクロール制御のためのパラメータを設定し、横スクロールパラメータ229に格納する(ステップS109)。つまり、確定表示領域が表示されるように横スクロールパラメータ229を設定する。0184そして、CPU10は、当該横スクロールパラメータ229に基づいて仮想カメラの制御を行う(ステップS110)。以上で、複数人用横スクロール処理は終了する。
0185
図35に戻り、ステップS62にかかる複数人用横スクロール処理が終了すれば、CPU10は、次に、複数人用縦スクロール処理を実行する(ステップS63)。図39〜図40は、上記ステップS63で示した複数人用縦スクロール処理の詳細を示すフローチャートである。図39において、まず、CPU10は、図16等を用いて説明したような「基準点」を算出する(ステップS121)。すなわち、仮想ゲーム空間内において、最上オブジェクトと最下オブジェクトのY軸上における中間点を基準点として算出する。
次に、当該基準点の位置が、(直前のフレームにかかる処理で算出された表示領域において)上スクロール開始閾値227で示されるユニット数以内(以下、単に上側閾値と呼ぶ。上記図21の例では、上から6.25ユニット以内)の位置になるか否かを判定する(ステップS122)。すなわち、当該基準点を画面座標系(2次元座標)に変換し、変換後の画面座標系における位置が上側閾値以内に来るか否かを判定する。当該判定の結果、画面上端から上側閾値以内に基準点が位置するときは(ステップS122でYES)、CPU10は、上記図17で示したように、Y軸上において基準点の位置が上側閾値となる位置(図17では画面上端から6.25ユニットの位置)に来るように、暫定表示領域を算出する(ステップS123)。その後、CPU10は、後述するステップS126の処理に進む。
一方、上記ステップS122の判定の結果、基準点の位置が画面上端から上側閾値以内には来ないときは(ステップS122でNO)、次に、CPU10は、基準点の位置が下スクロール開始閾値228で示されるユニット数以内(以下、単に下側閾値と呼ぶ。上記図21の例では、下から3.75ユニット以内)の位置になるか否かを判定する(ステップS124)。当該判定の結果、画面下端から下側閾値以内に基準点が位置するときは(ステップS124でYES)、CPU10は、Y軸上において基準点の位置が下側閾値となる位置(図21等の例では画面下端から3.75ユニットの位置)に来るように、暫定表示領域を算出する(ステップS125)。その後、CPU10は、後述するステップS126の処理に進む。
一方、上記ステップS124の判定の結果、画面下端から下側閾値以内に基準点が位置しないときは(ステップS124でNO)、CPU10は、以下に説明するステップS126の処理に進む。
図40において、CPU10は、上記暫定表示領域において、最上オブジェクトの位置が、画面の上端から4ユニット以内に位置するか否かを判定する(ステップS126)。当該判定の結果、最上オブジェクトが画面の上端から4ユニット以内に位置するときは(ステップS126でYES)、次に、CPU10は、暫定表示領域において、最下オブジェクトの位置が、画面の下端から2ユニット以内に位置するか否かを判定する(ステップS127)。当該判定の結果、最下オブジェクトが画面の下端から2ユニット以内に位置しないときは(ステップS127でNO)、最上オブジェクトのみが画面の上端に寄りすぎている状態であるため、CPU10は、最上オブジェクトが画面上端から4ユニットの位置に表示されるような表示領域を確定表示領域として算出する(ステップS130)。一方、最下オブジェクトが画面の下端から2ユニット以内に位置するときは(ステップS127でYES)、最上オブジェクトおよび最下オブジェクト共に、画面の上下の端に寄りすぎている状態と考えられるため、次に、CPU10は、エリア情報212を参照して、縦優先方向データ213で示される縦優先方向が下方向であるか否かを判定する(ステップS128)。当該判定の結果、縦優先方向が下方向であるときは(ステップS128でYES)、CPU10は、最下オブジェクトが画面下端から2ユニットの位置に表示されるような表示領域を確定表示領域として算出する(ステップS129)。
一方、縦優先方向が下方向ではないときは(ステップS128でNO)、CPU10は、上記ステップS130の処理によって、最上オブジェクトが画面上端から4ユニットの位置に表示されるような表示領域を確定表示領域として算出する。その後、後述のステップS133の処理に進む。
一方、上記ステップS126の判定の結果、最上オブジェクトが画面の上端から4ユニット以内に位置しないときは(ステップS126でNO)、次に、CPU10は、暫定表示領域において、最下オブジェクトの位置が、画面の下端から2ユニット以内に位置するか否かを判定する(ステップS131)。その結果、最下オブジェクトが画面の下端から2ユニット以内に位置するときは(ステップS131でYES)、CPU10は、最下オブジェクトが画面下端から2ユニットの位置に表示されるような表示領域を確定表示領域として算出する(ステップS132)。次に、CPU10は、当該確定表示領域に基づいて、縦スクロールパラメータ230を設定する(ステップS133)。すなわち、確定表示領域が表示されるように縦スクロールの方向等を設定する。続いて、CPU10は、当該縦スクロールパラメータ230に基づいて仮想カメラの制御を行う(ステップS134)。
一方、上記ステップS131の判定の結果、最下オブジェクトが画面の下端から2ユニット以内に位置しないときは(ステップS131でNO)、CPU10は、暫定表示領域を確定表示領域として設定する(ステップS135)。そして、上記ステップS133の処理へと進む。以上で、複数人用縦スクロール処理が終了する。
図35に戻り、ステップS63の複数人用縦スクロール処理が終われば、複数人用画面制御処理は終了する。
次に、図29のステップS6およびS7にかかる処理の詳細について説明する。これらの処理は、例えば2人同時プレイ中に一方のプレイヤがゲームオーバーになる、あるいは、1人プレイ中に他のプレイヤが途中参加した、等で、画面に表示されているプレイヤオブジェクト数に変化が生じたときの画面制御方式の切替のための処理が実行される。
図41は、上記ステップS6で示したプレイヤオブジェクト数切替時制御処理の詳細を示すフローチャートである。図41において、まず、CPU10は、プレイヤ数変化フラグ220にオンを設定する(ステップS141)。
次に、CPU10は、直前のフレームにかかる処理ループにおいて算出された、スクロール制御およびズーム制御に関するパラメータを、切替発生時最終パラメータ232として記憶する(ステップS142)。すなわち、横スクロールパラメータ229、縦スクロールパラメータ230、およびズームパラメータ231を、切替発生時最終パラメータ232に格納する。
次に、CPU10は、プレイヤオブジェクト数の変化内容が、「複数から1人」となる変化であるか否かを判定する(ステップS143)。つまり、複数プレイから1人プレイに切り替わったのか、1人プレイから複数プレイに切り替わったのかを判定する。当該判定の結果、プレイヤオブジェクト数の変化内容が「複数から1人」であるときは(ステップS143でYES)、複数プレイから1人プレイに切り替わったと考えられるため、CPU10は、図32等を用いて上述した1人用画面制御処理を実行し(ステップS144)、1人プレイ用のスクロールパラメータ229および230、ズームパラメータ231、目標ズーム倍率226などを算出する。
そして、CPU10は、上記切替発生時最終パラメータ232(この場合、複数プレイ時における最終のズームパラメータ等が記憶されている)と、上記ステップS144で算出された各種パラメータに基づいて、補完パラメータ233を算出する(ステップS145)。例えば、ズーム倍率について、上記切替発生時最終パラメータ232として記憶された目標ズーム倍率から、1人プレイ用の目標ズーム倍率である1.0倍に向けて12.5%ずつ近づくようなパラメータを補完パラメータとして算出する。切替発生時最終パラメータ232として記憶された目標ズーム倍率が2.0倍で、1人プレイ時の目標ズーム倍率が1.0倍という場合を例にすると、補完パラメータ233として、ズーム倍率=1.875倍、を示す値が設定される。
一方、上記ステップS143の判定の結果、プレイヤオブジェクト数の変化内容が「複数から1人」ではないときは(ステップS143でNO)、1人プレイから複数プレイに切り替わった(あるいは、3人同時プレイ→2人同時プレイのような、複数プレイ時においてプレイ人数が変化した)と考えられるため、CPU10は、図35等を用いて上述した複数人用画面制御処理を実行し(ステップS146)、複数プレイ用の各種スクロールパラメータ、ズームパラメータ231、目標ズーム倍率226などを算出する。
そして、CPU10は、上記切替発生時最終パラメータ232(この場合、1人プレイ時における最終のズームパラメータ等が記憶されている)と、上記ステップS146で算出された各種パラメータに基づいて、補完パラメータ233を算出する(ステップS147)。例えば、1人プレイ時のズーム倍率等から、上記複数プレイ用の目標ズーム倍率等に12.5%ずつ近づけるようなパラメータを補完パラメータとして算出する。以上で、プレイヤオブジェクト数切替時制御処理は終了する。
図29に戻り、ステップS6にかかる処理が終われば、次に、CPU10は、補完パラメータによる画面制御処理を実行する(ステップS7)。図42は、上記ステップS7で示した補完パラメータによる画面制御処理の詳細を示すフローチャートである。図42において、まず、CPU10は、上記算出された補完パラメータに基づいて仮想カメラを制御する(ステップS151)。
次に、CPU10は、補完パラメータ233で示されるズーム倍率やスクロールパラメータが、その目標とする値(上記ステップS144やS146で算出された目標ズーム倍率等の値)に達したか否かを判定する(ステップS152)。当該判定の結果、目標とする値まで達していれば(ステップS152でYES)、CPU10は、プレイヤ数変化フラグ220にオフを設定し(ステップS153)、当該処理を終了する。一方、目標とする値まで達していないときは(ステップS152でNO)、CPU10は、プレイヤ数変化フラグ220に変更は加えずに、そのまま当該処理を終了する。
以上で、本実施形態にかかるゲーム処理の説明を終了する。
このように、本実施形態では、複数プレイ時において、プレイヤオブジェクト101と画面端との距離関係に基づき、プレイヤに見やすい画面となるような画面スクロール制御を行っている。また、複数人の縦スクロール処理においては、上述した基準点の位置を用いた制御(図21、図22等参照)を実行することで、例えば、画面中央付近に位置するプレイヤオブジェクト101がジャンプしたような場合に、当該ジャンプによるプレイヤオブジェクトの上下移動に敏感に反応して画面も上下にスクロールしてしまうことを防ぐことができる。つまり、プレイヤオブジェクトが画面中央付近に位置するときにジャンプしたとしても、画面は頻繁にスクロールしないため、プレイヤにとって見やすい画面を提供することができる。かつ、画面の端までプレイヤオブジェクトが移動していなくても、ある程度画面の端に近づけば、その進行方向にかかる画面がスクロールされて表示され、視認性も高めることが可能となる。
また、上記複数人の縦スクロール処理における基準点を用いたスクロール制御に関して、スクロールを行うか否かの閾値(図21の上スクロール開始ライン121、下スクロール開始ライン122)の設定についても、画面のズーム倍率に応じて適切な値を設定しているため、よりプレイヤにとって見やすい画面が提供できる。
また、表示されるプレイヤオブジェクトの数に変化が生じたときも、補完パラメータを用いて、1人用と複数人用のズーム制御やスクロール制御処理がスムーズに切り替わるようしている。これにより、プレイヤにとって違和感の無い見やすく、遊びやすい画面を提供することができる。
また、複数プレイ時において、上述したような「持ち上げ操作」を実行可能とすることで、いずれかのプレイヤオブジェクト101が上述したような「能力」を有するキャラクタに変身した際に、他のプレイヤが当該変身したキャラクタを持ち上げることでその「能力」を使うことができるようになるため、協力プレイを行うときの興趣性を高めることができる。更には、ゲームが下手なプレイヤとゲームが上手いプレイヤとで複数プレイを行うような場合、例えば上手いプレイヤが下手なプレイヤのプレイヤオブジェクトを持ち上げることで、下手なプレイヤは特に操作を行うことなく、先に連れて行ってもらうことが可能となる。例えば、障害物が多い場面や穴がたくさん設けられている足場の悪い場面等、当該持ち上げ操作を利用することで、下手なプレイヤも先に進むことが可能となり、協力プレイの興趣性を高めることができる。また、積極的に複数人プレイを行うことへの動機付けともなる。また、「持ち上げ操作」をプレイヤオブジェクト同士で対戦して楽しむゲームに適用することで、対戦の駆け引きやゲーム性を高めることができ、対戦ゲームの興趣性を高めることもできる。
また、ゲームの難易度を下げ、遊びやすくすることを目的とした場合、プレイヤが行う操作を極力簡便なものとすべく、ゲーム操作で使用するボタン数を少なくしてゲームデザインを行う場合がある。このような場合、例えば上記実施形態では、十字キー72aとボタン72b(ダッシュ移動用)およびボタン72c(ジャンプ用)の2つのボタンを基本とする操作体系(いわゆる1レバー・2ボタン方式)としているが、このような少ないボタン数であっても、上記のようにコントローラ7を「振る」という操作と組み合わせることで、ボタン数を抑えつつ多様な操作が可能となり、ゲームの興趣性を高めることができる。
なお、上述の実施形態において、ズーム処理については、拡大閾値および縮小閾値を用いて拡大ズームまたは縮小ズームを行っていた。この拡大閾値、縮小閾値については、それぞれ1つだけではなく、複数設けることによって段階的な拡大、縮小ズームを行うようにしても良い。例えば、第1の縮小閾値を距離200、これに対応するズーム倍率として、第1の縮小用目標ズーム倍率を0.8倍と設定する。更に、第2の縮小閾値として距離600、これに対応するズーム倍率として、第2の縮小用目標ズーム倍率を0.5倍と設定する。これにより、例えば、X軸上での最端プレイヤオブジェクト間の距離が200〜600(単位は任意)の間は0.8倍のズーム倍率でゲーム画面が表示され、当該距離が600を越えると、0.5倍のズーム倍率でゲーム画面が表示されるようになる。更に、上記コースやエリア毎に異なる拡大閾値や縮小閾値を設定してもよい。
また、上述の実施例では、ゲーム画面の一例として、テレビ2の画面全体に仮想ゲーム空間の様子を表示したもの(いわゆる全画面表示)を例にしていた。つまり、上記表示領域がテレビ2の画面全体に表示される場合を例としたが、これに限らず、画面の一部分のみに上記表示領域を表示するようなレイアウトのゲーム画面の場合にも本発明は適用可能である。この場合は、上記「画面の端からnユニット以内」の判定閾値にかかる部分を、表示領域の端からnユニット以内、として適用すればよい。
また、上記実施形態は、一般的な横長の比率となる画面(4:3や16:9)にゲーム画像を表示するような場合を例としているが、縦長の画面の場合にも本発明は適用可能である。
本発明にかかるゲームプログラムおよびゲーム装置は、頻繁に動くオブジェクトが複数表示されるときでもプレイヤにとって見やすい画面を表示することができ、据置型ゲーム装置、携帯型ゲーム装置、ゲームプログラムが実行される携帯型情報端末等に有用である。
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
4…光ディスク
7…コントローラ
10…CPU
11…システムLSI
11a…入出力プロセッサ
11b…GPU
11c…DSP
11d…VRAM
11e…内部メインメモリ
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
15…AV−IC
16…AVコネクタ
17…フラッシュメモリ
18…無線通信モジュール
19…無線コントローラモジュール
20…拡張コネクタ
21…外部メモリカード用コネクタ
22…アンテナ
23…アンテナ
24…電源ボタン
25…リセットボタン
26…イジェクトボタン
71…ハウジング
72…操作部
73…コネクタ
74…撮像情報演算部
741…赤外線フィルタ
742…レンズ
743…撮像素子
744…画像処理回路
75…通信部
751…マイコン
752…メモリ
753…無線モジュール
754…アンテナ
700…基板
701…加速度センサ
702…LED
703…水晶振動子
704…バイブレータ
707…サウンドIC
708…アンプ

Claims (29)

  1. 複数のオブジェクトが存在する仮想空間を表示装置の所定の表示領域に表示するゲーム装置のコンピュータに実行させるゲームプログラムであって、
    前記コンピュータを、
    記複数のオブジェクトの位置に基づいた中心位置である基準点を算出する基準点算出手段と、
    前記表示領域の所定の方向である基準方向において、前記基準点の位置が前記表示領域の端から第1の距離以内の位置であるか否かを判定する第1の判定手段と、
    前記第1の判定手段で前記基準点の位置が前記表示領域の端から前記第1の距離以内であると判定されたときに、前記表示領域に表示される前記仮想空間の表示内容を前記基準方向にスクロールする画面制御手段として機能させる、ゲームプログラム。
  2. 前記基準点算出手段は、前記基準方向において最も距離が離れている2つのオブジェクトの中点を前記基準点として算出する、請求項1に記載のゲームプログラム。
  3. 前記画面制御手段は、前記第1の判定手段で前記基準点の位置が前記表示領域の端から前記第1の距離以内であると判定されたときに、前記基準点が表示領域の端から前記第1の距離の位置になるように前記仮想空間の表示内容を前記基準方向にスクロールする、請求項1に記載のゲームプログラム。
  4. 前記画面制御手段は、前記第1の判定手段で前記基準点の位置が前記表示領域の端から前記第1の距離以内であると判定されたときに、前記表示領域に表示される前記仮想空間の表示内容を、前記基準方向のうち前記表示領域の端から前記第1の距離以内であると判定された側にスクロールする、請求項1に記載のゲームプログラム。
  5. 前記ゲームプログラムは、前記コンピュータを、
    前記基準方向において、前記表示領域の端から最も近くに位置する前記オブジェクトが前記第1の距離よりも当該表示領域の端に近い第3の距離以内に位置するか否かを判定する第2の判定手段として更に機能させ、
    前記画面制御手段は、前記基準点の位置にかかわらず、前記第2の判定手段で前記表示領域の端から最も近くに位置する前記オブジェクトが前記第3の距離以内であると判定されたときは、当該オブジェクトが前記表示領域の端から当該第3の距離となる位置に表示されるように前記仮想空間の表示内容をスクロールする、請求項1に記載のゲームプログラム。
  6. 前記第1の判定手段は、前記基準方向において、前記表示領域の一方の端から第1の距離以内の位置であるか否かを判定し、さらに前記表示領域の他方の端から第2の距離以内の位置であるか否かも判定し
    前記画面制御手段は、前記第1の判定手段で前記基準点の位置が前記表示領域の一方の端から前記第1の距離以内であると判定されたときは、前記表示領域に表示される前記仮想空間の表示内容を前記基準方向のうち前記表示領域の一方の側にスクロールし、前記第1の判定手段で前記基準点の位置が前記表示領域の他方の端から前記第2の距離以内であると判定されたときは、前記表示領域に表示される前記仮想空間の表示内容を前記基準方向のうち前記表示領域の他方の側にスクロールする、請求項1に記載のゲームプログラム。
  7. 前記第1の距離と前記第2の距離とは異なる値の距離である、請求項6に記載のゲームプログラム。
  8. 前記基準方向のうち前記表示領域の一方の側は、前記仮想空間内における重力方向の反重力側であり、前記基準方向のうち前記表示領域の他方の側は、前記仮想空間内における重力方向の重力側であり、前記第1の距離は前記第2の距離より大きい距離である、請求項7に記載のゲームプログラム。
  9. 前記第2の判定手段は、前記基準方向において、前記表示領域の一方の端から最も近くに位置する前記オブジェクトが前記第1の距離よりも当該一方の端に近い第3の距離以内に位置する否かを判定し、さらに前記表示領域の他方の端から最も近くに位置する前記オブジェクトが前記第2の距離よりも当該他方の端に近い第4の距離以内に位置する否かも判定し
    前記画面制御手段は、前記基準点の位置にかかわらず、前記第2の判定手段で前記表示領域の一方の端から最も近くに位置する前記オブジェクトが前記第3の距離以内であると判定されたときは、当該オブジェクトが前記表示領域の一方の端から当該第3の距離となる位置に表示されるように前記仮想空間の表示内容をスクロールし、前記表示領域の他方の端から最も近くに位置する前記オブジェクトが前記第4の距離以内であると判定されたときは、当該オブジェクトが前記表示領域の他方の端から当該第4の距離となる位置に表示されるように前記仮想空間の表示内容をスクロールする、請求項に記載のゲームプログラム。
  10. 前記第3の距離と前記第4の距離とは異なる値の距離である、請求項9に記載のゲームプログラム。
  11. 前記表示領域の基準方向において、一方の端側と他方の端側のいずれか一方が優先の側として設定されており、
    前記画面制御手段は、前記表示領域の一方の端から最も近くに位置する前記オブジェクトが前記第3の距離以内であり、且つ、前記表示領域の他方の端から最も近くに位置するオブジェクトが前記第4の距離以内のときは、前記優先の側として設定されている側に前記仮想空間の表示内容をスクロールする、請求項9に記載のゲームプログラム。
  12. 前記ゲームプログラムは、前記コンピュータを、
    前記基準方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出するオブジェクト間距離算出手段と、
    前記オブジェクト間距離算出手段で算出された距離が予め定められた縮小閾値を越えたか否かを判定する縮小判定手段として更に機能させ、
    前記画面制御手段は、前記縮小判定手段において、前記オブジェクト間距離算出手段で算出された距離が前記縮小閾値を越えたと判定されたとき、前記仮想空間の画像を所定の倍率で縮小表示する縮小表示手段を含む、請求項1に記載のゲームプログラム。
  13. 前記縮小表示手段は、前記所定の倍率による表示を目指して時間の経過と共に徐々に縮小していくように前記仮想空間の画像を縮小表示する、請求項12に記載のゲームプログラム。
  14. 前記縮小表示手段は、前記仮想空間の画像を徐々に縮小させて表示する制御を行っている途中で前記オブジェクト間距離算出手段で算出された距離が前記縮小閾値より小さくなったと判定されたときは、当該縮小表示の制御を中止する、請求項13に記載のゲームプログラム。
  15. 前記ゲームプログラムは、前記コンピュータを、
    前記基準方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出するオブジェクト間距離算出手段と、
    前記オブジェクト間距離算出手段で算出された距離が予め定められた拡大閾値より小さいか否かを判定する拡大判定手段としてさらに機能させ、
    前記画面制御手段は、前記拡大判定手段において前記オブジェクト間距離算出手段で算出された距離が前記拡大閾値より小さいと判定されたとき、前記仮想空間の画像を所定の倍率で拡大表示する拡大表示手段を含む、請求項1に記載のゲームプログラム。
  16. 前記拡大表示手段は、前記所定の倍率による表示を目指して時間の経過と共に徐々に拡大していくように前記仮想空間の画像を拡大表示する、請求項15に記載のゲームプログラム。
  17. 前記拡大表示手段は、前記仮想空間の画像を徐々に拡大させて表示する制御を行っている途中で前記オブジェクト間距離算出手段で算出された距離が前記拡大閾値を越えたと判定されたときは、当該拡大表示の制御を中止する、請求項16に記載のゲームプログラム。
  18. 前記ゲームプログラムは、前記コンピュータを、前記基準方向と直交する直交方向において、前記仮想空間内での前記複数のオブジェクトの位置に基づいた中心位置である直交方向中心点を算出する直交方向中心点算出手段として更に機能させ、
    前記画面制御手段は、前記直交方向中心点が前記表示領域の前記直交方向における中心位置となるように前記仮想空間の表示内容を前記直行方向にスクロールする、請求項1に記載のゲームプログラム。
  19. 前記表示領域の直交方向において、一方の端側と他方の端側のいずれか一方が優先の側として設定されており、
    前記ゲームプログラムは、前記コンピュータを、
    前記複数のオブジェクトのうちいずれかが前記直交方向における一方の端からの第5の距離以内に位置するか否かを判定する第3の判定手段として更に機能させ、
    前記画面制御手段は、前記いずれかのオブジェクトが前記第5の距離以内に位置すると判定されたときは、前記優先の側の端から当該第5の距離となる位置に当該オブジェクトが表示されるように前記仮想空間の表示内容をスクロールする、請求項18に記載のゲームプログラム。
  20. 前記ゲームプログラムは、前記コンピュータを、
    前記基準方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出する第1のオブジェクト間距離算出手段と、
    前記直交方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出する第2のオブジェクト間距離算出手段と、
    前記第1のオブジェクト間距離算出手段または第2のオブジェクト間距離算出手段で算出された距離のいずれかが予め定められた縮小閾値を越えたか否かを判定する縮小判定手段として更に機能させ、
    前記画面制御手段は、前記縮小判定手段において前記算出された距離のいずれかが前記縮小閾値を越えたと判定されたとき、前記仮想空間の画像を所定の倍率で縮小表示する縮小表示手段を含む、請求項18に記載のゲームプログラム。
  21. 前記ゲームプログラムは、前記コンピュータを、
    前記基準方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出する第1のオブジェクト間距離算出手段と、
    前記直交方向において最も距離が離れている2つのオブジェクト間の仮想空間内における距離を算出する第2のオブジェクト間距離算出手段と、
    前記第1のオブジェクト間距離算出手段または第2のオブジェクト間距離算出手段で算出された距離のいずれかが予め定められた拡大閾値より小さいか否かを判定する拡大判定手段として更に機能させ、
    前記画面制御手段は、前記拡大判定手段において前記算出された距離のいずれかが前記拡大閾値より小さいと判定されたとき、前記仮想空間の画像を所定の倍率で拡大表示する拡大表示手段を含む、請求項18に記載のゲームプログラム。
  22. 前記複数のオブジェクトとは、複数のプレイヤがそれぞれ所定の操作装置を用いて操作可能なプレイヤオブジェクトである、請求項1に記載のゲームプログラム。
  23. 前記ゲームプログラムは、前記コンピュータを、ゲーム画面に表示される前記複数のオブジェクトの数に変化があったか否かを判定する変化発生判定手段として更に機能させ、
    前記画面制御手段は、前記変化発生判定手段において変化があったと判定されたときは、当該変化前の前記オブジェクトに基づいて制御された表示領域の表示内容が当該変化後のオブジェクトに基づいて制御された表示領域の表示内容に徐々に近づいていくように当該表示内容の制御を行う切替制御手段を含む、請求項1または請求項22に記載のゲームプログラム。
  24. 前記ゲームプログラムは、前記コンピュータを、
    前記所定の操作装置から所定の操作入力が行われたか否かを判定する操作入力判定手段と、
    前記操作入力判定手段によって前記所定の操作が行われたと判定されたとき、当該所定の操作が行われた操作装置に対応するプレイヤオブジェクトから所定の範囲内に他のプレイヤオブジェクトが存在するか否かを判定する近接プレイヤ存在判定手段と、
    前記近接プレイヤ存在判定手段によって、所定の範囲内に他のプレイヤオブジェクトが存在すると判定されたとき、当該他のプレイヤオブジェクトと前記所定の操作が行われた操作装置に対応するプレイヤオブジェクトとを一体として操作可能とする操作一体化手段と、して更に機能させる、請求項22に記載のゲームプログラム。
  25. 前記所定の操作装置は加速度センサを備えており、
    前記操作入力判定手段は、前記所定の操作装置が備える所定のボタンが押された状態で所定値以上の加速度が検出されたか否かを判定する、請求項24に記載のゲームプログラム。
  26. 前記他のオブジェクトと前記所定の操作が行われた操作装置に対応するプレイヤオブジェクトとが一体として操作可能な状態の間は、当該他のオブジェクトに設定されている所定の行動特性を当該所定の操作が行われた操作装置に対応するプレイヤオブジェクトが利用可能である、請求項24に記載のゲームプログラム。
  27. 複数のオブジェクトが存在する仮想空間を表示装置の所定の表示領域に表示するゲーム装置であって、
    記複数のオブジェクトの位置に基づいた中心位置である基準点を算出する基準点算出手段と、
    前記表示領域の所定の方向である基準方向において、前記基準点の位置が前記表示領域の端から第1の距離以内の位置であるか否かを判定する第1の判定手段と、
    前記第1の判定手段で前記基準点の位置が前記表示領域の端から前記第1の距離以内であると判定されたときに、前記表示領域に表示される前記仮想空間の表示内容を前記基準方向にスクロールする画面制御手段とを備える、ゲーム装置。
  28. 複数のオブジェクトが存在する仮想空間を表示装置の所定の表示領域に表示するゲームシステムであって、
    前記複数のオブジェクトの位置に基づいた中心位置である基準点を算出する基準点算出手段と、
    前記表示領域の所定の方向である基準方向において、前記基準点の位置が前記表示領域の端から第1の距離以内の位置であるか否かを判定する第1の判定手段と、
    前記第1の判定手段で前記基準点の位置が前記表示領域の端から前記第1の距離以内であると判定されたときに、前記表示領域に表示される前記仮想空間の表示内容を前記基準方向にスクロールする画面制御手段とを備える、ゲームシステム。
  29. 複数のオブジェクトが存在する仮想空間を表示装置の所定の表示領域に表示するゲーム装置を制御するためのゲーム処理制御方法であって、
    前記複数のオブジェクトの位置に基づいた中心位置である基準点を算出する基準点算出ステップと、
    前記表示領域の所定の方向である基準方向において、前記基準点の位置が前記表示領域の端から第1の距離以内の位置であるか否かを判定する第1の判定ステップと、
    前記第1の判定ステップにおいて前記基準点の位置が前記表示領域の端から前記第1の距離以内であると判定されたときに、前記表示領域に表示される前記仮想空間の表示内容を前記基準方向にスクロールする画面制御ステップとを備える、ゲーム処理制御方法。
JP2009129591A 2009-05-28 2009-05-28 ゲームプログラム、および、ゲーム装置 Active JP5469379B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009129591A JP5469379B2 (ja) 2009-05-28 2009-05-28 ゲームプログラム、および、ゲーム装置
US12/550,859 US8313376B2 (en) 2009-05-28 2009-08-31 Computer-readable storage medium having game program stored therein and game apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009129591A JP5469379B2 (ja) 2009-05-28 2009-05-28 ゲームプログラム、および、ゲーム装置

Publications (2)

Publication Number Publication Date
JP2010273880A JP2010273880A (ja) 2010-12-09
JP5469379B2 true JP5469379B2 (ja) 2014-04-16

Family

ID=43220866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009129591A Active JP5469379B2 (ja) 2009-05-28 2009-05-28 ゲームプログラム、および、ゲーム装置

Country Status (2)

Country Link
US (1) US8313376B2 (ja)
JP (1) JP5469379B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7942743B2 (en) * 2004-01-20 2011-05-17 Nintendo Co., Ltd. Game apparatus and storage medium storing game program
JP5396620B2 (ja) * 2010-01-08 2014-01-22 任天堂株式会社 情報処理プログラム及び情報処理装置
JP5622447B2 (ja) * 2010-06-11 2014-11-12 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理システム及び情報処理方法
US8700999B2 (en) * 2011-08-15 2014-04-15 Google Inc. Carousel user interface for document management
US9164579B2 (en) * 2011-11-15 2015-10-20 Lg Electronics Inc. Electronic device for granting authority based on context awareness information
US10016686B2 (en) * 2012-01-23 2018-07-10 Konami Digital Entertainment Co., Ltd. Game control device, game control method, a non-transitory computer-readable recording medium, and game system
US9258462B2 (en) * 2012-04-18 2016-02-09 Qualcomm Incorporated Camera guided web browsing based on passive object detection
JP5528495B2 (ja) * 2012-04-26 2014-06-25 株式会社コナミデジタルエンタテインメント ゲーム制御装置、ゲーム制御方法、ゲームプログラムおよびゲームシステム
JP6099327B2 (ja) * 2012-07-26 2017-03-22 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理方法および情報処理システム
US10140198B1 (en) 2012-10-30 2018-11-27 Google Llc Networked desktop environment
JP6121181B2 (ja) * 2013-02-05 2017-04-26 株式会社バンダイナムコエンターテインメント ゲームシステム及びプログラム
JP2014235596A (ja) 2013-06-03 2014-12-15 任天堂株式会社 情報処理プログラム、情報処理システム、情報処理装置、および情報処理方法
US10599325B2 (en) * 2015-04-14 2020-03-24 Flying Wisdom Studios Navigating virtual environments
JP6594498B2 (ja) * 2018-07-17 2019-10-23 株式会社カプコン 映像生成方法、映像生成プログラムおよび映像生成装置
JP7411368B2 (ja) * 2019-09-30 2024-01-11 株式会社バンダイナムコエンターテインメント コンピュータシステム、サーバシステム及びプログラム
JP7319635B2 (ja) * 2021-11-02 2023-08-02 グリー株式会社 コンピュータプログラム、仮想空間表示装置、及び仮想空間表示方法
US11893222B2 (en) * 2022-05-27 2024-02-06 Honeywell International Inc. Automatically scaling trend chart graphical display generation in a toxic gas monitoring system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5470080A (en) * 1992-11-20 1995-11-28 Sega Of America, Inc. Multi-player video game apparatus with single screen mode and split screen mode
CN1111464A (zh) * 1993-06-30 1995-11-08 世嘉企业股份有限公司 图像处理装置及其方法和带图像处理装置的电子装置
TW318226B (ja) * 1995-05-11 1997-10-21 Sega Enterprises Kk
JP3745475B2 (ja) 1996-12-06 2006-02-15 株式会社セガ ゲーム装置及び画像処理装置
JP3442965B2 (ja) * 1997-04-25 2003-09-02 任天堂株式会社 ビデオゲームシステムおよびビデオゲーム用記憶媒体
JP3426105B2 (ja) * 1997-04-25 2003-07-14 任天堂株式会社 ビデオゲームシステムおよびビデオゲーム用記憶媒体
US6256047B1 (en) * 1997-06-04 2001-07-03 Konami Co., Ltd. Method of judging hits and computer-readable storage medium storing game data
US6424353B2 (en) * 1997-09-11 2002-07-23 Sega Enterprises, Ltd. Computer game apparatus
JP3967502B2 (ja) * 1998-11-27 2007-08-29 株式会社スクウェア・エニックス ゲーム進行制御方法
JP4240343B2 (ja) * 1998-12-19 2009-03-18 株式会社セガ 画像生成装置および画像生成方法
JP3998858B2 (ja) * 1999-05-28 2007-10-31 株式会社バンダイナムコゲームス ゲーム装置、ゲーム装置の画像処理方法および記録媒体
US6375572B1 (en) * 1999-10-04 2002-04-23 Nintendo Co., Ltd. Portable game apparatus with acceleration sensor and information storage medium storing a game progam
JP2001170355A (ja) * 1999-12-14 2001-06-26 Kceo Inc ビデオゲーム装置、ゲーム画像の表示制御方法及び可読記録媒体
JP2003280785A (ja) * 2002-03-26 2003-10-02 Sony Corp 画像表示処理装置、および画像表示処理方法、並びにコンピュータ・プログラム
JP3813945B2 (ja) * 2003-05-07 2006-08-23 任天堂株式会社 ゲーム装置およびゲームプログラム
CA2563716A1 (en) * 2004-04-23 2005-11-10 Cirque Corporation An improved method for scrolling and edge motion on a touchpad
JP4961112B2 (ja) * 2005-03-14 2012-06-27 任天堂株式会社 ゲームプログラム、ゲーム装置、ゲームシステム、およびゲーム処理方法
JP4262217B2 (ja) * 2005-04-26 2009-05-13 任天堂株式会社 ゲームプログラム及びゲーム装置
JP4405430B2 (ja) * 2005-05-12 2010-01-27 任天堂株式会社 ゲームプログラムおよびゲーム装置
US8708822B2 (en) * 2005-09-01 2014-04-29 Nintendo Co., Ltd. Information processing system and program
JP4646001B2 (ja) * 2005-09-15 2011-03-09 株式会社ソニー・コンピュータエンタテインメント ゲーム制御プログラム
US9327191B2 (en) * 2006-05-08 2016-05-03 Nintendo Co., Ltd. Method and apparatus for enhanced virtual camera control within 3D video games or other computer graphics presentations providing intelligent automatic 3D-assist for third person viewpoints
US20080174567A1 (en) * 2006-12-19 2008-07-24 Woolley Richard D Method for activating and controlling scrolling on a touchpad
JP4326568B2 (ja) * 2007-02-20 2009-09-09 任天堂株式会社 情報処理装置および情報処理プログラム
US8882594B2 (en) * 2007-04-05 2014-11-11 Microsoft Corporation Control scheme for real time strategy game

Also Published As

Publication number Publication date
JP2010273880A (ja) 2010-12-09
US20100304858A1 (en) 2010-12-02
US8313376B2 (en) 2012-11-20

Similar Documents

Publication Publication Date Title
JP5469379B2 (ja) ゲームプログラム、および、ゲーム装置
JP4773492B2 (ja) ゲーム装置およびゲームプログラム
JP5669336B2 (ja) ポインティング入力を利用した、3d視点およびオブジェクト指定の制御方法および装置
US8366528B2 (en) Computer readable storage medium having game program stored thereon, game apparatus, and game control method
JP5522902B2 (ja) 情報処理プログラムおよび情報処理装置
JP5154775B2 (ja) ゲームプログラムおよびゲーム装置
JP5390093B2 (ja) ゲームプログラムおよびゲーム装置
JP5520656B2 (ja) プログラム及び画像生成装置
JP5291305B2 (ja) ゲームプログラムおよびゲーム装置
US9751013B2 (en) Storage medium, information processing system, and information processing method for adjusting images based on movement information
JP2009089904A (ja) ゲームプログラムおよびゲーム装置
JP5498690B2 (ja) ゲームプログラムおよびゲーム装置
JP2013078624A (ja) ゲームシステムおよびゲームプログラム
JP5632657B2 (ja) 画像処理プログラム、画像処理装置、画像処理システム及び画像処理方法
JP5259965B2 (ja) 情報処理プログラム、および、情報処理装置
JP2010142404A (ja) ゲームプログラムおよびゲーム装置
JP2010201180A (ja) ゲーム装置およびゲームプログラム
JP5945297B2 (ja) ゲームプログラムおよびゲーム装置
JP2014039862A (ja) ゲーム装置およびゲームプログラム
JP6046220B2 (ja) ゲーム装置およびゲームプログラム

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110902

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120314

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140123

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140131

R150 Certificate of patent or registration of utility model

Ref document number: 5469379

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250