(57)【要約】【課題】オブジェクト空間におけるオブジェクトの重さを利用したオブジェクトを配置するゲームにおいて、処理負荷を軽減させたゲーム演算を行うことができるプログラム、情報記憶媒体、ゲーム機を提供する。【解決手段】複数のオブジェクトそれぞれの重さに基づいて、軸に対して垂直な所与の面における単位面あたりの値を求め、求めた値に基づいて、複数のオブジェクトからなるオブジェクト群の傾きを算出する。【選択図】図２
2009201808.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト空間に、予め所与の軸を設定して、オブジェクトを配置するゲームのためのプログラムであって、
プレーヤからの入力情報に基づき、オブジェクトを配置する処理を行うオブジェクト空間配置部と、
複数のオブジェクトからなるオブジェクト群の前記軸に対する傾きを、当該複数のオブジェクトそれぞれの重さに基づいて算出する傾き算出部と、
算出された傾きの大きさが所定値を超えたか否かに基づいて、ゲーム判定を行うゲーム演算部として、コンピュータを機能させることを特徴とするプログラム。
【請求項２】
請求項１において、
算出された傾きの方向を表示する表示制御部として、コンピュータを更に機能させることを特徴とするプログラム。
【請求項３】
請求項１又は２において、
所与の条件に基づいて、前記オブジェクトを配置させることが可能か否かを判断する配置判断部と、
判断結果を表示させる制御を行う表示制御部として、コンピュータを更に機能させ、
前記オブジェクト空間配置部が、
配置させることが可能と判断された前記オブジェクトを、配置する処理を行うことを特徴とするプログラム。
【請求項４】
コンピュータ読み取り可能な情報記憶媒体であって、請求項１〜３のいずれかのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項５】
オブジェクト空間に、予め所与の軸を設定して、オブジェクトを配置するゲームのためのゲーム機であって、
プレーヤからの入力情報に基づき、オブジェクトを配置する処理を行うオブジェクト空間配置部と、
複数のオブジェクトからなるオブジェクト群の前記軸に対する傾きを、当該複数のオブジェクトそれぞれの重さに基づいて算出する傾き算出部と、
算出された傾きの大きさが所定値を超えたか否かに基づいて、ゲーム判定を行うゲーム演算部とを含むことを特徴とするゲーム機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体、及び、ゲーム機に関する。
【背景技術】
【０００２】
従来から、仮想的な３次元空間であるオブジェクト空間（ゲーム空間）において所与の視点（仮想カメラ）から見える画像を生成するゲーム機（画像生成装置）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【０００３】
このようなゲーム機では、オブジェクト空間に存在するオブジェクトの重さを用いた演算処理を行う場合がある。
【０００４】
例えば、仮想重力を設定し、仮想重力の方向に基づいて、可動ブロックを移動させてゲーム演算を行うものがある（特許文献１）。
【０００５】
また、プレーヤからの入力情報に基づいて、地面の傾斜を制御して、物理的にキャラクタが地面を転がるまたは滑るようにキャラクタを制御するものがある（特許文献２）。
【０００６】
しかし、オブジェクト空間におけるオブジェクトの重さを利用した演算処理は、処理負荷が高いという問題が生じていた。
【特許文献１】特開２００３−２６０２６９号公報
【特許文献２】特開２００７−７５４６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、従来の課題に鑑みたものであり、その目的は、オブジェクト空間におけるオブジェクトの重さを利用したオブジェクトを配置するゲームにおいて、演算処理の処理負荷を軽減させることができるプログラム、情報記憶媒体、ゲーム機を提供することにある。
【課題を解決するための手段】
【０００８】
（１）本発明は、
オブジェクト空間に、予め所与の軸を設定して、オブジェクトを配置するゲームのためのプログラムであって、
プレーヤからの入力情報に基づき、オブジェクトを配置する処理を行うオブジェクト空間配置部と、
複数のオブジェクトからなるオブジェクト群の前記軸に対する傾きを、当該複数のオブジェクトそれぞれの重さに基づいて算出する傾き算出部と、
算出された傾きの大きさが所定値を超えたか否かに基づいて、ゲーム判定を行うゲーム演算部として、コンピュータを機能させることを特徴とするプログラムに関する。
【０００９】
本発明は、上記プログラムを記憶した情報記憶媒体、上記各部として構成するゲーム機に関係する。
【００１０】
本発明によれば、従来よりも処理負荷を軽減させて、オブジェクトの重さに基づいて演算処理を行うことができる。
【００１１】
（２）また、本発明のプログラム、情報記憶媒体、ゲーム機は、
算出された傾きの方向を表示する表示制御部として、コンピュータを更に機能させるようにしてもよい。
【００１２】
本発明によれば、傾き方向が表示されるので、プレーヤはどの方向にオブジェクトを配置すればよいのか瞬時に判断することができる。
【００１３】
（３）また、本発明のプログラム、情報記憶媒体、ゲーム機は、
所与の条件に基づいて、前記オブジェクトを配置させることが可能か否かを判断する配置判断部と、
判断結果を表示させる制御を行う表示制御部として、コンピュータを更に機能させ、
前記オブジェクト空間配置部が、
配置させることが可能と判断された前記オブジェクトを、配置する処理を行うようにしてもよい。
【００１４】
本発明によれば、プレーヤは、オブジェクトを配置させることが可能か否かを瞬時に把握することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００１６】
１．構成
図１に本実施形態のゲーム機（画像生成装置）の機能ブロック図の例を示す。なお本実施形態のゲーム機は図１の構成要素（各部）の一部を省略した構成としてもよい。
【００１７】
操作部１６０は、プレーヤがオブジェクト（椅子、机、キャラクタ、移動体等）の操作データを入力するためのものであり、その機能は、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイ、或いは筺体などにより実現できる。
【００１８】
また、操作部１６０は、加速度センサや撮像部、或いは角速度を検出するジャイロセンサを備えた入力機器によってプレーヤからの入力データ（操作データ）を入力できるものでもよい。例えば、入力装置は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。また、入力装置には、プレーヤが把持する刀型コントローラや銃型コントローラ、あるいはプレーヤが身につける（プレーヤが手に装着する）グローブ型コントローラなど実際の道具を模して作られたコントローラも含まれる。また入力装置には、入力装置と一体化されているゲーム装置、携帯型ゲーム装置、携帯電話なども含まれる。
【００１９】
例えば、入力機器に備えられた加速度センサは、３軸（Ｘ軸、Ｙ軸、Ｚ軸）の加速度を検出する。すなわち、加速度センサは、上下方向、左右方向、及び、前後方向の加速度を検出することができる。なお、加速度センサは、５ｍｓｅｃ毎に加速度を検出している。また、加速度センサは、１軸、２軸、６軸の加速度を検出するものであってもよい。また、入力機器に備えられた加速度センサによって検出された加速度（例えば、重力加速度）に基づいて、入力機器の傾き（傾きの方向、大きさ）を求めてもよい。なお、加速度センサから検出された加速度は、入力機器の通信部によってゲーム装置（本体装置）に送信される。
【００２０】
また、入力機器に備えられた撮像部は、赤外線フィルタ、レンズ、撮像素子（イメージセンサ）、画像処理回路を含む。赤外線フィルタは、入力装置の前方に配置され、表示部１９０に関連付けられて配置されている光源から入射する光から赤外線のみを通過させる。レンズは、赤外線フィルタを透過した赤外線を集光して撮像素子へ出射する。撮像素子は、例えば、ＣＭＯＳセンサやＣＣＤのような固体撮像素子であり、レンズが集光した赤外線を撮像して撮像画像を生成する。撮像素子で生成された撮像画像は、画像処理回路で処理される。例えば、撮像素子から得られた撮像画像を処理して高輝度部分を検知し、撮像画像における光源の位置情報（特定位置）を検出する。なお、光源が複数存在する場合には、撮像画像上の位置情報を複数検出する。また、複数の光源を利用して撮像画像上の位置情報を複数検出し、検出された位置情報の基準軸からの回転角度（傾き）を求め、光源に対する入力機器自体の傾きを求めてもよい。なお、検出した撮像画像上の位置情報は、通信部によって、本体装置に送信される。
【００２１】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。なお、オブジェクトデータ記憶部１７６は、オブジェクトのオブジェクトデータが記憶される。
【００２２】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）を記憶することができる。
【００２３】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００２４】
通信部１９６は外部（例えば他のゲーム機）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００２５】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体１８０や記憶部１７０に記憶してもよい。このようにプログラムやデータを受信してゲーム機を機能させる場合も本発明の範囲内に含む。
【００２６】
処理部１００（プロセッサ）は、操作部１６０からの入力情報（操作データ）やプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。ここでゲーム処理としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、キャラクタやマップなどのオブジェクトを配置する処理、オブジェクトを表示する処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【００２７】
この処理部１００は記憶部１７０内の主記憶部１７２をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００２８】
処理部１００は、オブジェクト空間配置部１１０、移動・動作処理部１１１、傾き算出部１１２、仮想カメラ制御部１１４、ゲーム演算部１１６、表示制御部１１８、配置判断部１１９、描画部１２０、音生成部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００２９】
オブジェクト空間配置部１１０は、オブジェクト（机、椅子、等の積み上げ対象のオブジェクト）、フィールドオブジェクト（板、盤、床オブジェクト）の他に、キャラクタ、建物、球場、車、樹木、柱、壁、マップ（地形）などの表示物を表す各種オブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト）をオブジェクト空間に配置設定する処理を行う。例えば、ワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義であり、例えば、ワールド座標系でのＸ、Ｙ、Ｚ軸の各軸の正方向からみて時計回りに回る場合における回転角度）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００３０】
本実施形態のオブジェクト空間配置部１１０は、オブジェクト空間に、プレーヤからの入力情報に基づいてオブジェクトを配置する処理を行う。
【００３１】
オブジェクト空間配置部１１０は、例えば、第１のオブジェクト（例えば、フィールドオブジェクト）を予めオブジェクト空間に配置し、プレーヤからの入力情報に基づいて第２のオブジェクト（例えば、椅子オブジェクト）を配置するようにしてもよい。また、オブジェクト空間配置部１１０は、配置判断部１１９における判断結果に基づき配置可能と判断されたオブジェクトを配置する処理を行うようにしてもよい。
【００３２】
移動・動作処理部１１１は、オブジェクトの移動・動作演算を行う。すなわち操作部１６０によりプレーヤが入力した入力情報（操作データ）や、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作（モーション、アニメーション）させたりする処理を行う。具体的には、オブジェクトの移動情報（位置、回転角度、速度、或いは加速度）や動作情報（オブジェクトを構成する各パーツの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求める処理を行う。なおフレームは、オブジェクトの移動・動作処理や画像生成処理を行う時間の単位である。
【００３３】
傾き算出部１１２は、複数のオブジェクトからなるオブジェクト群（複数のオブジェクトからなるオブジェクト全体）の軸に対する傾きを、複数のオブジェクトそれぞれの重さに基づいて算出する。具体的には、傾き算出部１１２は、複数のオブジェクトそれぞれの軸に垂直な所定軸からの高さに基づいて、前記傾きを算出する。また、傾き算出部１１２は、複数のオブジェクトそれぞれの重さに基づいて、軸に対して垂直な所与の面における単位面あたりの値を求め、求めた値に基づいて、傾きを算出する。
【００３４】
仮想カメラ制御部１１４は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、ワールド座標系における仮想カメラの位置（Ｘ、Ｙ、Ｚ）又は回転角度（例えば、Ｘ、Ｙ、Ｚ軸の各軸の正方向からみて時計回りに回る場合における回転角度）を制御する処理を行う。要するに、視点位置、視線方向、画角を制御する処理を行う。
【００３５】
つまり、本実施形態の仮想カメラ制御部１１４は、プレーヤからの入力情報に基づき、軸回りに仮想カメラを移動させると共に、仮想カメラの向きを制御するようにしてもよい。
【００３６】
また、仮想カメラ制御部１１４は、仮想カメラを、予め決められた回転角度で回転させてもよい。この場合には、仮想カメラの位置又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラについて上記の制御処理が行われる。
【００３７】
ゲーム演算部１１６は、種々のゲーム演算処理を行う。例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲームステージ毎のクリア条件を満たすか否かを判定する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理、最終ステージをクリアした場合にはエンディングを進行させる処理などがある。特に、本実施形態のゲーム演算部１１６は、算出された傾きの大きさが所定値を超えたか否かに基づいて、ゲーム判定を行う。
【００３８】
表示制御部１１８は、算出された傾きの方向を表示する。また、オブジェクトの配置が可能であるか否かの判断結果を表示させる制御を行う。
【００３９】
配置判断部１１９は、所与の条件に基づいて、オブジェクトを配置させることが可能か否かを判断する。
【００４０】
描画部１２０は、処理部１００で行われる種々の処理（ゲーム処理）の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。いわゆる３次元ゲーム画像を生成する場合には、まずオブジェクト（モデル）の各頂点の頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）を含むオブジェクトデータ（モデルデータ）が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理（頂点シェーダによるシェーディング）が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。
【００４１】
頂点処理では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換（カメラ座標変換）、クリッピング処理、透視変換（投影変換）、ビューポート変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。
【００４２】
そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）が行われる。ピクセル処理では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を描画バッファ１７４（ピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ、レンダリングターゲット）に出力（描画）する。すなわち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として１画面に表示できるように画像を生成することができる。
【００４３】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００４４】
そして描画部１２０は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【００４５】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後（透視投影変換後）のオブジェクトデータ（オブジェクトの頂点の位置座標、テクスチャ座標、色データ（輝度データ）、法線ベクトル、或いはα値等）は、オブジェクトデータ記憶部１７６に保存される。
【００４６】
テクスチャマッピングは、記憶部１７０のテクスチャ記憶部１７８に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定（付与）されるテクスチャ座標等を用いて記憶部１７０のテクスチャ記憶部１７８からテクスチャ（色（ＲＧＢ）、α値などの表面プロパティ）を読み出す。そして、２次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【００４７】
隠面消去処理としては、描画ピクセルのＺ値（奥行き情報）が格納されるＺバッファ１７９（奥行きバッファ）を用いたＺバッファ法（奥行き比較法、Ｚテスト）による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Ｚバッファ１７９に格納されるＺ値を参照する。そして参照されたＺバッファ１７９のＺ値と、プリミティブの描画ピクセルでのＺ値とを比較し、描画ピクセルでのＺ値が、仮想カメラから見て手前側となるＺ値（例えば小さなＺ値）である場合には、その描画ピクセルの描画処理を行うとともにＺバッファ１７９のＺ値を新たなＺ値に更新する。
【００４８】
αブレンディング（α合成）は、α値（Ａ値）に基づく半透明合成処理（通常αブレンディング、加算αブレンディング又は減算αブレンディング等）のことである。
【００４９】
なお、α値は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、バンプ情報などとして使用できる。
【００５０】
音生成部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００５１】
なお、本実施形態のゲーム機は、１人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、１つの端末を用いて生成してもよいし、ネットワーク（伝送ライン、通信回線）などで接続された複数の端末（ゲーム機、携帯電話）を用いて分散処理を行ってもよい。
【００５２】
２．本実施形態の手法
図２は、本実施形態のゲーム画面の一例を示す。本実施形態は、オブジェクト空間の中空に予めフィールドＦ（板、盤、床オブジェクト、第１のオブジェクト）を設定し、バランスの中心となる軸Ｐ（支軸）に対して重さのバランスを保ちながら、フィールドＦから所定の高さ（例えば１０マス）まで、椅子、机、ブロック等のオブジェクトＯＢ（第２のオブジェクト）を次々と積み上げるゲームである。以下、具体的な処理内容について説明する。
【００５３】
（１）オブジェクトを配置する手法
本実施形態では、複数のゲームステージが用意されている。各ステージの初期状態では、１又は複数のフィールドＦが水平に設定され、フィールドＦに対して垂直な軸Ｐが設定されている。
【００５４】
そして、本実施形態では、プレーヤからの入力情報に基づき、オブジェクトＯＢの向き・位置を決定し、決定された向き・位置にオブジェクトＯＢを配置する処理を行っている。
【００５５】
また、本実施形態のフィールドＦの上面は、縦横のマス目からなり、オブジェクトＯＢは、複数のマスからなる３次元の立体（例えば、立方体）で構成される。そして、オブジェクトＯＢは、フィールドＦや他のオブジェクトＯＢ´のマス目に合うように配置される。
【００５６】
また、本実施形態では、大きさや重さが異なる複数のオブジェクトＯＢを用意している。オブジェクトＯＢには、予め基準となる重さが設定されており、１マス（単位体積）あたりの重さが決められている。例えば、椅子オブジェクトＯＢ１に対して、１マスあたりの重さを５に設定し、椅子オブジェクトＯＢ１が縦２マス・横２マス・高さ２マスの立方体で構成されている場合には、椅子オブジェクトＯＢ１の重さは３０になる。
【００５７】
オブジェクトＯＢの配布順は、コンピュータのアルゴリズムに基づきオブジェクトの重さの変化に規則性をもたせて決定される。例えば、重さ１００のオブジェクトを第Ｎ番目に配布した場合には、第（Ｎ＋１）番目に配布するオブジェクトの重さは４０、第（Ｎ＋２）番目に配布するオブジェクトの重さは２０、第（Ｎ＋３）番目に配布するオブジェクトは４０とし、第（Ｎ＋１）〜第（Ｎ＋３）の各オブジェクトの重さが第Ｎのオブジェクトの重さよりも軽く、その合計の重さが、第Ｎ番目に配布した重さと同等になるように配布している。このようにすれば、プレーヤはバランスの調整を行いながら、オブジェクトを配置させることができるからである。
【００５８】
また、本実施形態は、所定条件に基づいて、オブジェクトＯＢが配置可能か否かを判断している。例えば、他のオブジェクトＯＢ´やフィールドＦの上に、オブジェクトを配置する際には、オブジェクトＯＢの少なくとも１／３以上の面積が、他のオブジェクトＯＢ´やフィールドＦに接していることを条件としている。
【００５９】
例えば、図３（Ａ）に示すように、オブジェクトＯＢがフィールドＦに接している面積が１／２である場合には、オブジェクトＯＢは配置可能と判断される。しかし、図３（Ｂ）に示すように、オブジェクトＯＢがフィールドＦに接している面積が１／４である場合には、オブジェクトＯＢは配置不可能と判断される。
【００６０】
なお、本実施形態ではオブジェクトが配置可能な場合には、オブジェクトＯＢを青色で表示させるようにし、配置不可能な場合には、オブジェクトＯＢを赤色で表示させるようにしている。プレーヤが、オブジェクトＯＢが配置可能か否かを瞬時に判断できるようにするためである。
【００６１】
また、本実施形態では、図２に示すように、現在配布されているのオブジェクト（例えば、椅子オブジェクト）の次に配布されるオブジェクト（例えば、机オブジェクト）を表示するようにしている。
【００６２】
（２）傾きベクトルの算出手法
本実施形態では、フィールドＦの重さ、及び、オブジェクトＯＢの重さに基づいて、傾きベクトルＶを算出している。なお、傾きベクトルＶは、フィールドＦ及びオブジェクトＯＢ全体の軸Ｐに対する傾きの大きさ（傾き度合い）、傾きの方向を示す。
【００６３】
本実施形態では、傾きベクトルＶを求めるために、図４に示すように、フィールドＦの高さの位置に、面Ｍ（軸Ｐに垂直な面）を仮想的に設定し、面Ｍと軸Ｐとの交点が、面Ｍの中心点Ｏになるように、面Ｍを設定している。そして、本実施形態では、面Ｍにおける傾きベクトルＶを求めている。なお、本実施形態では、中心点Ｏを原点とし、軸Ｐをｙ軸、面Ｍをｘｚ平面に設定した３次元の座標系を設定している。
【００６４】
つまり、本実施形態では、フィールドＦ及び、オブジェクトＯＢの重さに基づいて、ｘ軸プラス方向のベクトルｖ１ａ、ｘ軸マイナス方向のベクトルｖ１ｂ、ｚ軸プラス方向のベクトルｖ２ａ、ｚ軸マイナス方向のベクトルｖ２ｂを求め、最終的に面Ｍ上の傾きベクトルＶを求めている。
【００６５】
例えば、フィールドＦの重さが軸Ｐに対して均一である場合に、図４に示すように、重さのあるオブジェクトＯＢが配置されると、中心点ＯからオブジェクトＯＢの位置Ｑの方向が、傾きベクトルＶの方向になる。なお、傾きベクトルＶの方向は、中心点Ｏに対して点Ｑと点対称となる点Ｑ´を示すものであってもよい。
【００６６】
次に、具体的に、傾きベクトルＶの算出手法について説明する。
【００６７】
まず、本実施形態では、高さ係数Ｋ１を用いて面Ｍにおけるセル単位の重さ（１マス目×１マス目単位の重さ、単位面あたりの重さ）を求める。例えば、高さ係数Ｋ１は、面Ｍからのマス数（高さ）に比例する値である。本実施形態では、面Ｍからのマス数（高さ）の値に１．０を乗じた値を、高さ係数Ｋ１の値として設定している。この乗じる数を調節することで、高さによる傾きへの影響度を調整してもよい。
【００６８】
つまり、面Ｍの各セルの重さは、下式（１）によって求める。
【００６９】
セルの重さ＝（第１の高さのセルの重さ×第１の高さの高さ係数Ｋ１）＋・・・＋（第Ｎの高さのセルの重さ×第Ｎの高さの高さ係数Ｋ１）・・・（１）
図５は、高さ係数Ｋ１を用いて面Ｍにおける各セルの重さを示した図である。
【００７０】
図５の例によれば、ｘ軸マイナス方向１マス目、ｚ軸プラス方向１マス目のセルの重さは２０であり、ｘ軸プラス方向１マス目、ｚ軸プラス方向１マス目のセルの重さは２０であり、ｘ軸プラス方向３マス目、ｚ軸プラス方向１マス目のセルの重さは６０である。
【００７１】
次に、本実施形態では、ｘ軸、ｚ軸それぞれの軸に対する左側の傾き割合Ｌｐ、右側の傾き割合Ｒｐの算出する。なお、左側は軸プラス方向から見て左であり、右側は、軸プラス方向から見て右であることを示す。
【００７２】
まず、ｚ軸に対する左側の傾き割合Ｌｐ、ｚ軸に対する右側の傾き割合Ｒｐを求める手法について図６を用いて説明する。
【００７３】
本実施形態では、高さ係数Ｋ１を用いて、面Ｍの各セルの重さ計算した後に、水平係数Ｋ２を用いて、ｚ軸に対する左側の全体重さＬｗ（全体重さ左）、ｚ軸に対する左側の中央部の重さＬｗａ（中央部重さ左）、ｚ軸に対する左側の全体重さＬｗから、ｚ軸に対する左側の中央部の重さＬｗａを除いた重さＬｗｂ（中央部ヌキ重さ左）を求める。
【００７４】
また、同様に、水平係数Ｋ２を用いて、ｚ軸に対する右側の全体重さＲｗ（全体重さ右）、ｚ軸に対する右側の中央部の重さＲｗａ（中央部重さ右）、ｚ軸に対する右側の全体重さＲｗから、ｚ軸に対する右側の中央部の重さＲｗａを除いた重さＲｗｂ（中央部ヌキ重さ右）を求める。なお、本実施形態では、ｚ軸を中心に左右１マス目を、中央部に設定している。
【００７５】
ここで、水平係数Ｋ２は、ｚ軸からのセル数に比例する値である。本実施形態では、ｚ軸からのセル数の値に０．２を乗じた値を水平係数Ｋ２の値として設定している。
【００７６】
Ｌｗ、Ｌｗａ、Ｌｗｂは、下式（２）〜（４）によって求めることができる。
【００７７】
Ｌｗ＝ｚ軸左側１マス目の重さ合計×ｚ軸左側１マス目の水平係数＋・・・＋ｚ軸左側Ｎマス目の重さ合計×ｚ軸左側Ｎマス目の水平係数・・・（２）
Ｌｗａ＝ｚ軸左側１マス目の重さ合計×ｚ軸左側１マス目の水平係数・・・（３）
Ｌｗｂ＝Ｌｗ−Ｌｗａ・・・（４）
同様に、Ｒｗ、Ｒｗａ、Ｒｗｂも、同様に下式（５）〜（７）によって求めることができる。
【００７８】
Ｒｗ＝ｚ軸右側１マス目の重さ合計×ｚ軸右側１マス目の水平係数＋・・・＋ｚ軸右側Ｎマス目の重さ合計×ｚ軸右側のＮマス目の水平係数・・・（５）
Ｒｗａ＝ｚ軸右側１マス目の重さ合計×ｚ軸右側１マス目の水平係数・・・（６）
Ｒｗｂ＝Ｒｗ−Ｒｗａ・・・（７）
具体的に、Ｌｗ、Ｌｗａ、Ｌｗｂ、Ｒｗ、Ｒｗａ、Ｒｗｂの各重さを求める例を、図６を用いて説明する。
【００７９】
図６に示す各セルに記載された数値は、高さ係数適用後のセルの重さ合計値を示す（空セルは０を示す）。
【００８０】
例えば、Ｌｗ＝（２０＋１０）×０．２＋６０×０．６＋６０×０．８＝９０、Ｌｗａ＝（２０＋１０）×０．２＝６、Ｌｗｂ＝Ｌｗ−Ｌｗａ＝８４として算出される。また、Ｒｗ＝（２０＋１０）×０．２＋６０×０．６＋４０×０．８＝７４、Ｒｗａ＝（２０＋１０）×０．２＝６、Ｒｗｂ＝Ｒｗ−Ｒｗａ＝６８として算出される。
【００８１】
そして、本実施形態では、Ｌｗ、Ｌｗａ、Ｌｗｂ、Ｒｗ、Ｒｗａ、Ｒｗｂを用いて、中央部分を除く全体の重さに対する中央部の重さの割合を用いて、軸Ｐに対する傾き方向へ中央部の重さの一部が加算されるように傾き補正を行っている。このようにすれば、結果的に中央部の重さは、傾きに与える影響が強くなるので、中央部にだけバランスよく簡単に積み上げるという事態を防止することができるからである。
【００８２】
具体的に、傾き補正について説明する。
【００８３】
まず、中央部の重さの合計Ｗａ（中央部重さ合計）を下式（８）、中央部分を除く全体の重さの合計値Ｗｂ（中央部ヌキ重さ合計）を、下式（９）によって求める。
【００８４】
Ｗａ＝Ｌｗａ＋Ｒｗａ・・・（８）
Ｗｂ＝Ｌｗｂ＋Ｒｗｂ・・・（９）
そして、中央部分を除く全体の重さに対する中央部の重さの割合Ｗｐを下式（１０）によって求める。
【００８５】
Ｗｐ＝Ｗａ／Ｗｂ・・・（１０）
そして、傾き補正倍率Ｋｐ´を用いて、下式（１１）によって、中央部傾き補正係数Ｋｐを求める。本実施形態では、傾き補正倍率Ｋｐ´は１．５に設定している。
【００８６】
Ｋｐ＝Ｗｐ×Ｋｐ´・・・（１１）
なお、Ｋｐは、最大値（０．３）以下（Ｋｐ≦０．３）になるように調整している。
【００８７】
そして、重さを求めるための加算用の中央部の重さＤ（加算用中央部重さ）を、下式（１２）によって求める。
【００８８】
Ｄ＝Ｗａ×Ｋｐ・・・（１２）
また、左側加算用の中央部の残り部分の重さＬｄ（加算用中央部残り重さ左）、右側加算用の中央部の残り部分の重さＲｄ（加算用中央部残り重さ右）を、下式（１３）、（１４）によって求める。
【００８９】
Ｌｄ＝Ｌｗｂ×（１−Ｋｐ）・・・（１３）
Ｒｄ＝Ｒｗｂ×（１−Ｋｐ）・・・（１４）
次に、左側の重さ合計値Ｌｅ（傾き強化前重さ合計値左）と、右側の重さ合計値Ｒｅ（傾き強化前重さ合計値右）とを求める。本実施形態では、左右の全体重さＬｗ、Ｒｗを比較して、重いほうにＤを加算してＬｅ、Ｒｅを求める。
【００９０】
例えば、左右の全体重さを比較して左側が重いと判定されると、左側の重さ合計値Ｌｅは、下式（１５）によって求めることができる。
【００９１】
Ｌｅ＝Ｌｗｂ＋Ｄ＋Ｌｄ＋Ｌｆ・・・（１５）
また、右側の重さ合計値Ｒｅは、下式（１６）によって求めることができる。
【００９２】
Ｒｅ＝Ｒｗｂ＋Ｒｄ＋Ｒｆ・・・（１６）
なお、左側のフィールドＦの重さＬｆ（床重さ左）を加算対象とし、右側のフィールドＦの重さＲｆ（床重さ右）をＲｅの加算対象としているのは、ゲーム開始直後の安定感や不安定感を意図的に生じさせてゲームの多様性を高めるためである。例えば、軸Ｐに対して重さが均一なフィールドＦを設定した場合には、ゲーム開始直後の状態はバランスが安定する。一方、軸Ｐに対して重さが不均一なフィールドＦを設定した場合には、ゲーム開始直後からフィールドＦが傾いている状況が生じることになる。つまり、軸Ｐに対するフィールドＦの形状やフィールドＦの重さに応じて、ゲーム開始直後のフィールドＦの傾きを変化させることができる。
【００９３】
また、本実施形態では、このようにフィールドＦの重さを用いて傾きベクトルＶの算出しているが、面ＭはフィールドＦの高さを基準に設定しているので、高さ係数Ｋ１に関わらず、予め設定されたフィールドＦの重さを用いて演算を行っている。なお、複数のフィールドを設定した場合であって、各フィールドの高さが異なる場合には、低い方のフィールドの高さを面Ｍの基準の高さに設定する。かかる場合には、基準となるフィールド以外のフィールドの重さは、予め設定されたフィールドの重さに、面Ｍからの高さに応じた高さ係数Ｋ１を乗じてもよい。
【００９４】
そして、最終的な左側の重さ合計値Ｌｃ（計算用重さ合計値左）、最終的な右側の重さ合計値Ｒｃ（計算用重さ合計値右）を求める。本実施形態では、Ｌｗ、Ｒｗを比較し、重い方の重さ合計値に、傾き調整値Ｊを乗算する。調整値Ｊは、傾き度合いを強化するものである。
【００９５】
例えば、Ｌｗ＞Ｒｗである場合には、Ｌｃ＝Ｌｅ×Ｊ、Ｒｃ＝Ｒｅとなる。
【００９６】
そして、求めたＬｃ、Ｒｃを用いて、ｚ軸より左側の傾き割合Ｌｐ（傾き割合左）は下式（１７）によって求まり、ｚ軸より右側の傾き割合Ｒｐ（傾き割合右）は、下式（１８）によって求まる。
【００９７】
Ｌｐ＝Ｌｃ／Ｒｃ・・・（１７）
Ｒｐ＝Ｒｃ／Ｌｃ・・・（１８）
以上のように、ｚ軸に対する左右の傾き割合Ｌｐ、Ｒｐを求めることができる。
【００９８】
また、本実施形態では同様に、ｘ軸に対する左右の傾き割合Ｌｐ、Ｒｐを求めている。かかる場合には、ｘ軸を中心に左右１マス目を、中央部に設定している。また、ｚ軸に対する左右の傾き割合Ｌｐ、Ｒｐを求める場合と同様に、ｘ軸からのセル数に比例して水平係数Ｋ３を設定している。つまりｘ軸からのセル数の値に０．２を乗じた値を水平係数Ｋ３の値として設定している。
【００９９】
そして、最終的に傾きベクトルＶを次のようにして求めている。
【０１００】
まず、図７に示すように、ベクトルｖ１ａの方向を、中心点Ｏからｘ軸プラス方向に設定し、ベクトルｖ１ｂの方向を、中心点Ｏからｘ軸マイナス方向に設定し、ベクトルｖ２ａの方向を、中心点Ｏからｚ軸プラス方向に設定し、ベクトルｖ２ｂの方向を、中心点Ｏからｚ軸マイナス方向に設定する。
【０１０１】
そして、ベクトルｖ１ａの値（大きさ）にｚ軸より右側傾き割合Ｒｐを設定し、ベクトルｖ１ｂの値（大きさ）にｚ軸より左側傾き割合Ｌｐを設定し、ベクトルｖ２ａの値（大きさ）にｘ軸より右側傾き割合Ｒｐを設定し、ベクトルｖ２ｂの値（大きさ）にｘ軸より左側傾き割合Ｌｐを設定する。
【０１０２】
そして、ベクトルｖ１ａ、ｖ１ｂの大きさを比較し、大きい方のベクトルから１を引いた大きさのベクトルをＶ１とする。また、ベクトルｖ２ａ、ｖ２ｂの大きさを比較し、大きい方のベクトルから１を引いた大きさのベクトルをＶ２とする。
【０１０３】
そして、ベクトルＶ１、Ｖ２から傾きベクトルＶの大きさ・方向を求める。例えば、傾きベクトルＶの大きさは、ベクトルＶ１、Ｖ２を合成することによって求めている。具体的には、ベクトルＶ１、Ｖ２をそれぞれ２乗して得た値を加算して、平方することによって求めている。
【０１０４】
なお、本実施形態では、後述するゲーム演算処理のために、傾きベクトルＶの値（大きさ）に所定値（例えば、１００）を乗じている。
【０１０５】
本実施形態では、以上のように、フィールドＦやオブジェクトＯＢの傾きを示す傾きベクトルＶを求めているので、物理法則に基づくシミュレーション処理よりも処理負荷を軽減させることができる。
【０１０６】
（３）傾きベクトルを用いたゲーム演算処理
本実施形態では、算出された傾きベクトルＶを用いて次のようにゲーム演算処理を行っている。
【０１０７】
まず、本実施形態では、図２に示すように、傾きベクトルＶの方向を矢印Ａで表示している。このようにすれば、プレーヤは、フィールドＦ及びオブジェクトＯＢが現在どの方向に傾こうとしているのかを瞬時に検知できる。なお、傾きベクトルＶに基づいて、軸Ｐを支軸にフィールドＦやオブジェクトＯＢを傾かせる画像を生成してもよい。なお、本実施形態では、傾きベクトルＶの方向と逆方向を、矢印で表示するようにしてもよい。
【０１０８】
また、本実施形態では、傾きベクトルＶの大きさに基づいて、フィールドＦやオブジェクトＯＢの軸Ｐに対するバランス状態を示すモード表示を行っている。このようにすれば、プレーヤが瞬時にフィールドＦやオブジェクトＯＢのバランス状態を認識することができる。
【０１０９】
例えば、傾きベクトルＶの大きさが０〜５の範囲である場合には、レベル１のモードと判定し、レベル１の場合には矢印Ａを表示しないように制御している。つまり、傾きベクトルＶの大きさが０（零）、あるいは０と近似とみなせる数値（１〜５などの小さい数値）である場合には、バランスが安定していることをプレーヤが容易に認識できるように、矢印Ａを表示しないようにしている。
【０１１０】
そして、傾きベクトルＶの大きさが６〜１７の範囲である場合には、レベル２のモードとして判定する。レベル２のモードでは、青色の矢印Ａを表示する。また、傾きベクトルＶの大きさが１８〜２３の範囲である場合には、レベル３のモードとして判定する。レベル３のモードの場合には、オレンジ色の矢印Ａを表示する。そして、傾きベクトルＶの大きさが２３〜２８の範囲である場合には、レベル４のモードとして判定する。レベル４のモードでは、オレンジ色の矢印Ａを点滅させる表示制御を行う。また、傾きベクトルＶの大きさが２８以上である場合には、レベル５のモード、つまり危険モードと判定する。危険モードでは赤色の矢印Ａを表示する。
【０１１１】
特に、本実施形態では、危険モードになってから所定期間（例えば、２０秒間）経過した場合には、ゲームオーバーと判定している。例えば、危険モードになってから１５秒経過した場合には、崩壊寸前とみなして、赤色の矢印Ａを点滅させるようにしている。また、危険モードになってから所定期間内に、オブジェクトＯＢが適切に配置されレベル４以下のモードになったと判定された場合には、危険モードが解除される。
【０１１２】
また、本実施形態では、フィールドＦから積み上げたオブジェクトＯＢの高さを求め、高さが所定値（例えば１０マス）を超えたか否かを判定している。そして、フィールドＦから積み上げたオブジェクトＯＢの高さが所定値を超えたと判定された場合には、モードがレベル２以下であることを条件に、ゲームステージをクリアする処理を行っている。なお、レベルに関係なくフィールドＦから所定値（例えば１０マス）まで積むことをクリア条件としてもよい。
【０１１３】
（４）仮想カメラの制御
本実施形態では、プレーヤからの入力情報に基づいて、自由に仮想カメラＣの位置・向きを制御することができる。例えば、図８に示すように、プレーヤからの入力情報に基づき、軸Ｐを中心に（軸Ｐ回りに）仮想カメラＣを回転移動させるようにしてもよい。また、仮想カメラＣが、操作対象のオブジェクトＯＢの位置やフィールドＦと軸Ｐの交点を向くように仮想カメラＣの向きを制御するようにしてもよい。このようにすれば、適切な位置に基づいて仮想カメラから見える画像が生成されるので、プレーヤは配置位置、向きを適切に判断してオブジェクトＯＢを配置させることができる。
【０１１４】
３．フローチャート
次に、本実施形態の詳細な処理例について図９（Ａ）（Ｂ）のフローチャートを用いて説明する。
【０１１５】
ゲームメインの処理について、図９（Ａ）を用いて説明する。まずステージが開始されると（ステップＳ１１１）、メッセージイベントが有るか否かを判定し（ステップＳ１１２）、メッセージイベントが有ると判定された場合には（ステップＳ１１２のＹｅｓ）、メッセージイベントを実行する（ステップＳ１１３）。
【０１１６】
そして、クリア条件を表示する処理を行い（ステップＳ１１４）、ゲームを開始する処理を行う（ステップＳ１１５）。
【０１１７】
次に、オブジェクトを配布する処理を行い（ステップＳ１１６）、キー入力の処理を行う（ステップＳ１１７）。なお、キー入力の処理については、具体的には、図９（Ｂ）を用いて後述する。
【０１１８】
そして、一定時間内にオブジェクトが配置されたか否かを判定し（ステップＳ１１８）、一定時間内にオブジェクトが配置されたと判定された場合には（ステップＳ１１８のＹｅｓ）、傾きベクトルを計算する（ステップＳ１１９）。一方、一定時間内にオブジェクトが配置されていないと判定された場合には（ステップＳ１１８のＮｏ）、危険モードを開始する処理を行う（ステップＳ１２１）。
【０１１９】
そして、傾きベクトルの大きさが所定値以上か否かを判断し（ステップＳ１２０）、傾きベクトルの大きさが所定値以上であると判断されると（ステップＳ１２０のＹｅｓ）、危険モードを開始する処理を行う（ステップＳ１２１）。一方、傾きベクトルの大きさが所定値以上でないと判断されると（ステップＳ１２０のＮｏ）、次のステップに進む。
【０１２０】
ステップＳ１２１の処理後に、一定時間内に傾きが回復したか否かを判定する処理を行う（ステップＳ１２２）。一定時間内に傾きが回復した場合には（ステップＳ１２２のＹｅｓ）、危険モードを解除し（ステップＳ１２３）、次のステップに進む。
【０１２１】
ステップＳ１２０の処理において、傾きベクトルの大きさが所定値以上でないと判断された場合（ステップＳ１２０のＮｏ）、あるいは、危険モードを解除する処理が行われると（ステップＳ１２３）、クリア条件を満たすか否かを判定する（ステップＳ１２４）。
【０１２２】
クリア条件を満たさないと判定されると（ステップＳ１２４のＮｏ）、ステップＳ１１６に戻る。一方、クリア条件を満たすと判定されると（ステップＳ１２４）、ステージクリアの処理を行う（ステップＳ１２５）。そして、セレクトモードがＯＮに設定されているか否かを判定し（ステップＳ１２６）、セレクトモードがＯＮに設定されている場合には（ステップＳ１２６のＹｅｓ）、ステージを選択する処理（ステップＳ１２９）に進み、選択したステージからゲームが開始される。一方、セレクトモードがＯＮに設定されていない場合には（ステップＳ１２６のＮｏ）、クリアしたステージが最終ステージか否かを判断し（ステップＳ１２７）、最終ステージであると判定されると（ステップＳ１２７のＹｅｓ）、エンディングの処理を行い（ステップＳ１２８）処理を終了する。一方、最終ステージでないと判定されると（ステップＳ１２７のＮｏ）、次のステージに進む。
【０１２３】
ステップＳ１２２において、一定時間内に傾きが回復しないと判断された場合には（ステップＳ１２２のＮｏ）、ゲームオーバーの処理を行う（ステップＳ１３０）。そして、リトライするか否かを判断し（ステップＳ１３１）、リトライすると判断された場合には（ステップＳ１３１のＹｅｓ）、同じステージの処理に進む。一方、リトライしないと判断された場合には（ステップＳ１３１のＮｏ）、セレクトモードがＯＮに設定されているか否かを判断し（ステップＳ１３２）、セレクトモードがＯＮに設定されている場合には（ステップＳ１３２のＹｅｓ）、ステージを選択する処理（ステップＳ１２９）に進み、選択したステージからゲームが開始される。一方、セレクトモードがＯＮに設定されていない場合には（ステップＳ１３２のＮｏ）、メニュー（タイトル表示）を行い、処理を終了する。
【０１２４】
次に、ゲームメインの処理における、キー入力の処理（ステップ１１７）について、より具体的に図９（Ｂ）を用いて説明する。
【０１２５】
キー入力があると判断されると（ステップＳ２１０）、入力データ（入力信号）に基づき次の処理を行う。
【０１２６】
まず、入力データＩｎＡ（例えばスタートボタン）を受け付けた場合には、ポーズメニューを表示し（ステップＳ２１１）、入力持ちの処理に進む（ステップＳ２１２）、キャンセルが入力されると、処理が終了する。
【０１２７】
そして、「やり直し」が選択されると再確認処理を行い（ステップＳ２１３）、やり直す場合には（ステップＳ２１３のＹｅｓ）、ゲームメイン処理の図９（Ａ）に示すゲームメイン処理のＡに戻る。一方、やり直さない場合には（ステップＳ２１３のＮｏ）、キー入力処理のＢに戻る。また、「タイトルへ」が選択されると、再確認処理を行い（ステップＳ２１４）、「タイトルに」戻る場合には（ステップＳ２１４のＹｅｓ）、メニュー（タイトル表示）の処理を行う（ステップＳ２１５）。一方、タイトルに戻らない場合には（ステップＳ２１４のＮｏ）、キー入力処理のＢに戻る。
【０１２８】
次に、入力データＩｎＢを受け付けた場合には、次の処理を行う。まず、既にストックがあるか否かを判断する（ステップＳ２１６）、既にオブジェクトのストックがあると判断されると（ステップＳ２１６のＹｅｓ）、オブジェクトのストックを入れ替える処理を行う（ステップＳ２１８）。一方、オブジェクトのストックがないと判断されると（ステップＳ２１６のＮｏ）、オブジェクトをストックする処理を行う（ステップＳ２１７）。
【０１２９】
また、入力データＩｎＣを受け付けた場合には、オブジェクトの向きを変更する処理を行う（ステップＳ２１９）。
【０１３０】
また、入力データＩｎＤ（十字キーによる上下左右いずれかの方向の入力データＩｎＤａ〜ＩｎＤｄ）を受け付けた場合には、オブジェクトの配置位置を、十字キーの方向に対応づけて変更する処理を行う（ステップＳ２２０）。
【０１３１】
そして、ステップＳ２１８、ステップＳ２１９、ステップ２２０の処理後、オブジェクトが配置可能か否かを判定し（ステップＳ２２１）、配置可能であると判断された場合には（ステップＳ２２１のＹｅｓ）、青のボックスでオブジェクトを表示する処理を行う（ステップＳ２２３）、一方、配置不能であると判断された場合には（ステップＳ２２１のＮｏ）、赤のボックスでオブジェクトを表示する処理を行う（ステップＳ２２２）。
【０１３２】
また、入力データＩｎＥを受け付けた場合には、オブジェクトが配置可能か否かを判断し（ステップＳ２２４）、オブジェクトが配置可能であると判断されると（ステップＳ２２４のＹｅｓ）、オブジェクトを配置する処理を行う（ステップＳ２２６）、一方、オブジェクトが配置可能でないと判断されると（ステップＳ２２４のＮｏ）、ブザーを鳴らす処理を行う（ステップＳ２２５）。以上で処理が終了し、ゲームメインの処理に戻る。
【０１３３】
４．応用例
（１）クリア条件・配置条件
本実施形態では、所定の範囲内にオブジェクトを隙間無く埋めることをクリア条件の少なくとも１つの条件としてもよいし、オブジェクト空間に目標点を設けて、目標点に向けてオブジェクトを積み上げることを、クリア条件の少なくとも１つの条件としてもよい。また、指定された個数のオブジェクトを積むことを、クリア条件の少なくとも１つの条件としてもよい。また、特定のオブジェクトの上には、常にオブジェクトを配置することができないように制御してもよい。
【０１３４】
（２）コントローラの傾き
加速度センサや、ジャイロセンサを備えるコントローラを用いて入力情報を取得する場合には、検出したコントローラの傾きベクトルＣｖを用いて、傾きベクトルＶを求めてもよい。例えば、上述した軸Ｐと面Ｍとからなる３次元の座標軸と、コントローラの３次元の座標軸を対応付けて、傾きベクトルＶに、コントローラの傾きベクトルＣｖを加算するようにする。また、危険モードの状態にあるときに限って、コントローラの傾きベクトルＣｖを、傾きベクトルＶに加算するようにしてもよい。このようにすれば、プレーヤは、実際にコントローラを用いてバランス感覚を得るという面白味を体感することができる。また、瞬時に重さのバランスを図りたいときに、オブジェクトを配置するためのキー入力を行わずに、コントローラの傾きのみで、バランスを保つことができる。
【０１３５】
（３）フィールドの形状について
本実施形態では、フィールドの形状は種々の形状とすることができる。例えば、フィールドは、単位面積（マス）によって構成される三角形、四角形等の多角形の形状や、星型、円形、環状等、種々の形状とすることができる。また、フィールドの重心に軸Ｐを設定してもよいし、フィールドの重心以外の点に、軸Ｐを設定してもよい。例えば、軸Ｐに対して垂直な平面上に、軸Ｐと交差しないフィールドを設定してもよい。
【０１３６】
（４）その他
本実施形態では、３次元における積み上げゲームの例を説明したが、２次元における積み上げゲームにも応用してもよい。また、オブジェクトの基準となる重さは時間経過に応じて変化させるようにしてもよい。
【図面の簡単な説明】
【０１３７】
【図１】本実施形態のゲーム機の機能ブロック図の例。
【図２】本実施形態の表示画面の一例。
【図３】図３（Ａ）（Ｂ）は、本実施形態のオブジェクトの配置に関する説明図。
【図４】図４は、本実施形態の傾きベクトルの説明図。
【図５】図５は、本実施形態の傾きベクトルの算出手法の説明図。
【図６】図６は、本実施形態の傾きベクトルの算出手法の説明図。
【図７】図７は、本実施形態の傾きベクトルの算出手法の説明図。
【図８】本実施形態の仮想カメラの制御の説明図。
【図９（Ａ）】本実施形態の処理のフローチャート。
【図９（Ｂ）】本実施形態の処理のフローチャート。
【符号の説明】
【０１３８】
Ｆ  フィールド、
ＯＢ  オブジェクト、
Ｖ  傾きベクトル、
１００  処理部、
１１０  オブジェクト空間配置部、
１１１  移動・動作処理部、
１１２  傾き算出部、
１１４  仮想カメラ制御部、
１１６  ゲーム演算部、
１１８  表示制御部、
１１９  配置判断部、
１２０  描画部、１３０  音生成部、
１６０  操作部、
１７０  記憶部、１７２  主記憶部、
１７４  描画バッファ、
１７６  オブジェクトデータ記憶部、
１７８  テクスチャ記憶部、
１７９  ｚバッファ、
１８０  情報記憶媒体、１９０  表示部、１９２  音出力部、１９６  通信部
【図１】
2009201808.tif 000003
【図２】
2009201808.tif 000004
【図３】
2009201808.tif 000005
【図４】
2009201808.tif 000006
【図５】
2009201808.tif 000007
【図６】
2009201808.tif 000008
【図７】
2009201808.tif 000009
【図８】
2009201808.tif 000010
【図９（Ａ）】
2009201808.tif 000011
【図９（Ｂ）】
2009201808.tif 000012