説明

ゲーム装置の制御プログラム、記憶媒体、及びゲーム装置

【課題】競争だけでなく協力してプレイを進行させるゲームプログラムを提供する。
【解決手段】仮想空間内で複数のプレイヤキャラクタが移動可能であり、ゲーム終了時において各プレイヤキャラクタに付与された総得点を競うゲームプログラムである。ゲーム進行部310は、複数のプレイヤキャラクタと総得点とを画面表示させる。オブジェクト移動部320は、操作信号に基づき、当該プレイヤキャラクタを仮想空間内で移動させる。オブジェクト数判定部330は、仮想空間内の所定エリア又は所定オブジェクトに属するプレイヤキャラクタの数を判定する。得点付与部340は、所定エリア又は所定オブジェクトに属するプレイヤキャラクタに対して、判定されたプレイヤキャラクタの数に応じて得点を付与する。これにより、判定されたプレイヤキャラクタの数に応じて得点を付与することで、ユーザに協力してプレイする意欲をもたせることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、特にゲーム装置の制御プログラム、記憶媒体、及びゲーム装置に関する。
【背景技術】
【0002】
従来より、コンシューマ用ビデオゲーム装置や業務用ビデオゲーム装置(以下、ゲーム装置という。)において、複数のプレイヤキャラクタ同士が対戦する対戦ゲーム(対戦などの競争を行うゲーム。以下、同じ。)が存在する。
このような、対戦ゲームにおいては、自ユーザの指示により制御されるプレイヤキャラクタと、他ユーザの指示により制御されるプレイヤキャラクタと、場合によってはビデオゲーム装置の制御手段(CPU、Central Processing Unit、中央処理装置)が制御するプレイヤキャラクタが得点を競い合い、ゲームを行うことができる。最終的には、取得した総合得点(スコア)等により、各プレイヤキャラクタの順位を決定する。
【0003】
このような、従来の複数のプレイヤキャラクタで対戦する対戦ゲームを行うゲーム装置として、特許文献1を参照すると、コースの各所にプレイヤキャラクタに対して得点を付与する得点エリアが設定されており、その得点エリアにプレイヤキャラクタが到達することで得点を付与した結果、その得点エリアが消滅するというアクションゲームが存在する(以下、従来技術1とする。)。
従来技術1の対戦ゲームでは、具体的に、GPS(Global Positioning System)の機能を利用して、複数プレイヤそれぞれがゲーム装置の位置検出情報を利用しながらゲームを行う。
従来技術1によれば、対戦ゲームの戦闘エリアには、得点ポイントを含む得点エリアが設定されており([0039]を参照)、ゲーム装置を持ったプレイヤが得点エリアを通過すると、得点処理が行われる([0048]を参照)。
また、得点エリアを2番目に通過すると、得点処理を行わなくしたり、異なる得点処理を行ったりする([0071]、[0073]を参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平10−216361号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1のゲームでは、複数のプレイヤキャラクタは常に対抗(競争)しており、ゲームの内容として、互いに協力することはなかった。
このため、競い合うだけのゲームとなり、対戦に対する駆け引き等があまり必要なく、単純なゲームの内容となっていた。
【0006】
本発明は、このような状況に鑑みてなされたものであり、上述の課題を解消することを目的とする。
【課題を解決するための手段】
【0007】
本発明のゲーム装置の制御プログラムは、仮想空間内で複数のプレイヤキャラクタが移動可能であり、ゲーム終了時において前記プレイヤキャラクタに付与された総得点を競うゲームをコンピュータに実行させるゲームプログラムにおいて、前記コンピュータを、前記プレイヤキャラクタ、及び前記プレイヤキャラクタに付与された総得点を画面表示させるゲーム進行手段、前記プレイヤキャラクタに対応する操作信号に基づき、該プレイヤキャラクタを前記仮想空間内で移動させる移動手段、前記仮想空間内の所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタの数を算出するオブジェクト数判定手段、前記所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタに対して、算出された前記プレイヤキャラクタの数に応じて得点を付与する付与手段として機能させることを特徴とする。
本発明のゲーム装置の制御プログラムは、前記コンピュータを、前記プレイヤキャラクタが前記所定エリア又は所定オブジェクトに属した順番を算出する順番判定手段、前記順番が早いプレイヤキャラクタに対応する前記操作信号によって、該プレイヤキャラクタが前記所定エリア又は所定オブジェクトから離脱した場合、前記順番が遅いプレイヤキャラクタを、当該所定エリア又は所定オブジェクトから離脱させる強制離脱手段として機能させることを特徴とする。
本発明のゲーム装置の制御プログラムは、前記付与手段は、前記所定エリア又は所定オブジェクトに属した前記プレイヤキャラクタの数が多いほど、多くの得点を該プレイヤキャラクタそれぞれに付与することを特徴とする。
本発明のゲーム装置の制御プログラムは、前記付与手段は、設定された回数又は時間に従って、前記プレイヤキャラクタに得点を付与することを特徴とする。
本発明のゲーム装置の制御プログラムは、前記コンピュータを、前記所定エリア又は所定オブジェクトに属した順番が最も遅いプレイヤキャラクタに対応する操作信号に基づき、当該所定エリア又は所定オブジェクトに属する他のプレイヤキャラクタが当該所定エリアから離脱する方向を決定させる移動方向決定手段として機能させることを特徴とする。
本発明のゲーム装置の制御プログラムは、前記コンピュータを、前記所定エリア又は所定オブジェクトに属した前記プレイヤキャラクタの数を基に、回転の最高速度又は最低速度を調整し、回転速度加速の指示を検知した際の加速量を制限する回転制御手段として機能させ、前記強制離脱手段は、前記所定エリア又は所定オブジェクトに属した前記プレイヤキャラクタの数に従って、飛び出す距離を小さくするように制御することを特徴とする。
本発明のゲーム装置の制御プログラムは、前記付与手段は、前記所定エリア又は所定オブジェクトに属した前記プレイヤキャラクタが一回転することで、該プレイヤキャラクタに得点を付与することを特徴とする。
本発明のコンピュータ読み取り可能な記憶媒体は、仮想空間内で複数のプレイヤキャラクタが移動可能であり、ゲーム終了時において前記プレイヤキャラクタに付与された総得点を競うゲームをコンピュータに実行させるゲームプログラムを記録したコンピュータ読み取り可能な記録媒体において、前記コンピュータを、前記プレイヤキャラクタ、及び前記プレイヤキャラクタに付与された総得点を画面表示させるゲーム進行手段、前記プレイヤキャラクタに対応する操作信号に基づき、該プレイヤキャラクタを前記仮想空間内で移動させる移動手段、前記仮想空間内の所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタの数を算出するオブジェクト数判定手段、前記所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタに対して、算出された前記プレイヤキャラクタの数に応じて得点を付与する付与手段として機能させるためのゲーム装置の制御プログラムを記録したことを特徴とする。
本発明のゲーム装置は、仮想空間内で複数のプレイヤキャラクタが移動可能であり、ゲーム終了時において前記プレイヤキャラクタに付与された総得点を競うゲームを実行するゲーム装置において、前記プレイヤキャラクタ、及び前記プレイヤキャラクタに付与された総得点を画面表示させるゲーム進行手段と、前記プレイヤキャラクタに対応する操作信号に基づき、該プレイヤキャラクタを前記仮想空間内で移動させる移動手段と、前記仮想空間内の所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタの数を算出するオブジェクト数判定手段と、前記所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタに対して、算出された前記プレイヤキャラクタの数に応じて得点を付与する付与手段とを備えることを特徴とする。
【発明の効果】
【0008】
本発明によれば、プレイヤキャラクタの数に応じて得点を付与することで、複数のプレイヤキャラクタが競争と協力を繰り返すゲーム性の高いゲームを提供することができる。
【図面の簡単な説明】
【0009】
【図1】本発明の実施の形態に係るゲーム装置10の制御ブロック図である。
【図2A】本発明の実施の形態に係る主記憶部110のプレイヤキャラクタデータ210と、バー回転データ230の構成を示す概念図である。
【図2B】本発明の実施の形態に係る補助記憶部120の協力ゲーム部300の構成を示す概念図である。
【図3A】本発明の実施の形態に係る協力ゲームの概念を示す画面例である。
【図3B】本発明の実施の形態に係るバー500とプレイヤキャラクタ610の構成を示す概念図である。
【図4】本発明の実施の形態に係るゲーム装置10の協力ゲーム処理のフローチャートである。
【図5】本発明の実施の形態に係るゲーム装置10の協力ゲーム処理に係るコリジョン/回転処理のフローチャートである。
【図6】本発明の実施の形態に係るゲーム装置10の協力ゲーム処理に係るCPU思考処理の難易度に係る概念図である。
【図7A】本発明の実施の形態に係る通常コリジョン処理の概念図である。
【図7B】本発明の実施の形態に係るキャッチコリジョン処理の概念図である。
【図8】本発明の実施の形態に係るバー付与得点状態変更処理の描画の概念図である。
【図9】本発明の実施の形態に係る離脱処理の概念図である。
【図10】本発明の実施の形態に係る得点付与処理のフローチャートである。
【図11】本発明の実施の形態に係る連結数基準得点付与処理の概念図である。
【図12】本発明の他の実施の形態に係る得点付与処理のフローチャートである。
【図13】本発明の他の実施の形態に係る順番基準得点付与処理の概念図である。
【発明を実施するための形態】
【0010】
<実施の形態>
〔ゲーム装置10の制御構成〕
まず、図1を参照して、ゲーム装置10の制御構成について説明する。
ゲーム装置10は、携帯型や据え置き型のコンシューマ用ビデオゲーム装置、専用の店舗に設置される業務用ビデオゲーム装置、PC(Personal Computer)、携帯電話、スマートフォン、携帯端末、PDA(Personal Data Assistant)等である。また、ゲーム装置10は、本実施形態に係る協力ゲームを実行するためのハードウェア資源である。
ゲーム装置10は、CPU100(制御手段、ゲーム実行手段)と、主記憶部110と、補助記憶部120と、BIOS130と、ペリフェラルI/F140(周辺機器接続インターフェイス手段)と、バスアービタ150と、グラフィックプロセッサ160(描画手段)と、グラフィックメモリ170と、ビデオBIOS175と、オーディオプロセッサ180と、オーディオメモリ190と、通信I/F200とを含んで構成される。
【0011】
CPU100は、CISC(Complex Instruction Set Computer、複合命令セットコンピュータ)方式やRISC(Reduced Instruction Set Computer、縮小命令セットコンピュータ)方式のCPU(Central Processing Unit、中央処理装置)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Processor、特定用途向けプロセッサー)等である演算・制御能力を備えた制御手段である。
また、CPU100に、後述する、主記憶部110やバスアービタ150やグラフィックプロセッサ160やオーディオプロセッサ180等の機能を含ませることも可能である。
【0012】
主記憶部110は、RAM(Random Access Memory)等の主記憶用に使われる高速な記憶手段を含んで構成される。
主記憶部110には、ゲーム装置10をコンピュータとして機能させるためのOSが補助記憶部120から読み出されて記憶されている。
また、主記憶部110には、CPU100が実行する、各種プログラムやオブジェクト等が補助記憶部120からロードされて記憶され、プロセスやスレッド等として実行される。また、主記憶部110は、このプロセスに関わるデータについても記憶している。各プロセスやスレッド等は、OSのAPI(Application Programming Interface)を介して、ゲーム装置10の各機能にアクセス可能である。
また、主記憶部110には、プレイヤキャラクタデータ210、背景他オブジェクトデータ220、バー回転データ230が記憶されている。これらのデータは、各ステージのプレイ開始時にCPU100が補助記憶部120から初期データを読み出して記憶し、プレイの進行に従って変更する。
プレイヤキャラクタデータ210は、ユーザが制御の指示をするプレイヤキャラクタに関連するデータを記憶する部位である。このプレイヤキャラクタデータ210の詳細は後述する。
背景他オブジェクトデータ220は、スクロールする背景、バー500(図3A)等のポリゴンの集合体である描画用オブジェクトを含むデータである。また、背景他オブジェクトデータ220は、各キャラクタが移動するマップの3次元座標データを含んでいる。さらに、背景他オブジェクトデータ220には、各キャラクタの移動範囲を限定するための領域データ、後述するゴールの基準範囲データ等を含ませることができる。
バー回転データ230は、後述する得点付与に係るバー500(図3A)に係るデータである。このバー回転データ230の詳細についても後述する。
また、これらの他にも、主記憶部110には、各プレイ時にユーザが選択したステージのID(Identification)、難易度、コントローラの種別等の設定等のデータを記憶する。さらに、最高スコアデータ、他のサーバのアクセスに係るデータ、プレイの結果、リプレイのデータ等を記憶してもよい。これらのデータは、補助記憶部120の不揮発性メモリにも記憶できる。
【0013】
補助記憶部120は、SSD(Solid State Drive)等のフラッシュメモリディスク、HDD(Hard Disk Drive)、磁気テープ装置、光ディスク装置等の補助記憶手段である。
補助記憶部120には、後述するように、アプリやOSのプログラムやデータが記憶されている。これらのプログラムやデータは、CPU100やDMA(Direct Memory Access)等を用いて、主記憶部110に記憶して実行可能である。
また、補助記憶部120には、本実施形態に係る協力ゲームに係るプログラムである協力ゲーム部300と、これに付随するデータとが記憶されている。
協力ゲーム部300は、ゲームプレイ時に、適宜、主記憶部110等に読み出されて、これをCPU100が実行する。
協力ゲームに付随するデータとしては、プレイヤキャラクタデータ210や背景他オブジェクトデータ220に係る初期データ、ステージのマップ等のデータ、デモ画像等のデータ、BGM(Background music)や効果音のデータ等、ゲームのプレイに必要なデータが記憶されている。
【0014】
この協力ゲーム部300を含む補助記憶手段は、例えば、ゲーム装置10用の光学記憶媒体や磁気記憶媒体やフラッシュメモリディスク等を用い、ゲーム装置10に挿入等して実行することも可能である。
すなわち、ゲーム装置10は、補助記憶部120を切り換えることで、各種の他のゲーム等も実行するように構成できる。
また逆に、補助記憶部120のHDD等に、光学記憶媒体等から協力ゲーム部300をインストールして記憶しておくような構成も可能である。
【0015】
BIOS130は、BIOS(Basic Input Output System)が記憶されたROM(Read Only Memory)やNOR型フラッシュメモリやSRAM等の不揮発性記憶媒体である。
このBIOS130は、ファームウェア用のプログラムと、ゲーム装置10の各種機能を実現するためのプログラムと、これらのプログラムの設定を記憶するSRAM等の構成部位から構成されている。
具体的には、BIOS130は、ゲーム装置10が起動する際に、CPU100のマイクロコードの設定を行ったり、各部の初期化を行ったり、補助記憶部120の例えば最初のパーティションからOSが実行されるよう指示したりする。
なお、BIOS130のプログラムをNOR型フラッシュメモリ等に記憶しておき、BIOS130の設定を記憶するフラッシュメモリやバッテリバックアップSRAM(Static Random Access Memory)や、EEPROM等の書き換え可能な不揮発性のメモリ等を別に備えていてもよい。
【0016】
ペリフェラルI/F140は、各種周辺機器(ペリフェラル)に接続するための、USB、IEEE1394、シリアル、パラレル、赤外線、無線等のインターフェイスを提供する構成部位である。
ペリフェラルI/F140は、主に、携帯型や据え置き型のコンシューマ用ビデオゲーム装置やPC等の場合は、ボタン、ジョイスティック、ジョイパッド、タッチパネル等のコントローラ、振動モーター等のフォースフィードバック部等を接続するためのインターフェイスとなる構成部位である。このペリフェラルI/F140は、Bluetooth(登録商標)等の無線インターフェイスを用いて構成してもよい。
また、ペリフェラルI/F140は、専用の店舗に設置される業務用ビデオゲーム装置の場合、照明、ICカードリーダ/ライタ、スイッチ、コイン投入部等のような周辺機器と接続することができる。
他にも、スティック型コントローラ、加速度検出器、振動装置等のフォースフィードバック装置、足踏み/手押し式のスイッチ、ディスプレイモニタの画面上の位置を検出する位置検出器、タッチパッド、タッチパネル、キーボード、マウスやトラックボール等のポインティングデバイス等を、ペリフェラルI/F140に接続して用いることができる。
また、ペリフェラルI/F140は、電子スイッチ等を制御することもでき、各種周辺機器の電源をオン/オフにして消費電力を抑えたりすることもできる。
【0017】
バスアービタ150は、いわゆる「チップセット」等の、各部を接続するためのバスインターフェイスを提供する集積回路である。このバスアービタ150で接続される各部のバスは、スピードが異なっていてもよく、上り及び下りで非対称であってもよい。
また、例えば、CPU100と、主記憶部110と、バスアービタ150の間は広帯域で高速なバスで接続され、グラフィックプロセッサ160とバスアービタ150の間も広帯域で高速なバスで接続されるのが好適である。
なお、CPU100にDDR3/4 SDRAMやXDR DRAM等のバスインターフェイスが内蔵されて、主記憶部110を直接読み書きするように構成されていてもよい。
【0018】
グラフィックプロセッサ160は、3次元CGを描画する機能をもつグラフィックプロセッサである。グラフィックプロセッサ160は、ポリゴンのジオメトリ(座標)の計算を行うジオメトリ部162と、ジオメトリ計算が行われたポリゴンをラスタライズ又はレンダリング(描画)するレンダリング部164とを含んで構成される。
また、グラフィックプロセッサ160は、描画された画像をディスプレイモニタやプロジェクタ等の表示装置に出力するため、RAMDAC(RAM D/Aコンバーター)やHDMIインターフェイス等を備えている。グラフィックプロセッサ160は、色差(D端子)出力や、HDMI出力を用いて、家庭用の通常のテレビ(Television)を表示装置として、ゲームの仮想空間の表示を行うことができる。なお、このテレビは、スピーカ等から音声を再生させることもできる。
なお、ディスプレイモニタを、ゲーム装置10に備えるような構成も可能である。携帯型ゲーム装置や携帯端末や携帯電話等を用いる場合、このディスプレイモニタには液晶、有機EL、LED、LEDアレイ、MEMSプロジェクタ等を用いることができる。
【0019】
ジオメトリ部162は、ポリゴンの3次元空間での座標(ワールド座標)について、行列の回転や拡大等を行って、アフィン変換等を行い、ポリゴンの2次元空間での座標を求める構成部位である。また、ジオメトリ部162は、ポリゴンの分割やスプライン補完等のテッセレーションを行う、「ジオメトリシェーダ」(又はバーテックスシェーダ)を備えることもできる。
レンダリング部164は、座標計算されたポリゴンについて、テクスチャと呼ばれる画像データを貼り付け、各種効果を加えてグラフィックメモリ170に描画する構成部位である。この各種効果としては、プログラマブル・シェーダ等を用いて、光点・影(シェーディング)計算、明暗の表現、半透明、ぶれ、霧、ぼかし、HDR(ハイダイナミックレンジ合成)等の計算を行うことができる。また、レンダリング部164が描画するポリゴンの種類としては、点ポリゴン(ポイント)、線ポリゴン(ラインリスト)、三角形や四角形といった面ポリゴン、面ポリゴンの集合体等がある。加えて、レンダリング部164がレイトレーシング(Ray Tracing)等を用いて描画を行う際には、円、楕円、球、メタボール等の領域で定義される物体を描画することも可能である。
なお、ジオメトリ部162を、CPU100にて処理するように構成することも可能である。この場合は主記憶部110に記憶するプログラムをCPU100が実行して作成したポリゴンの座標を、グラフィックメモリ170に転送等する。レンダリング部164は、このポリゴンの座標に従って、ポリゴンを描画する。
さらに、グラフィックプロセッサ160には、図示しない物理エンジン部を備えてもよい。物理エンジン部は、ポリゴン同士の接触・衝突演算や、服や波の動きといった物理現象のシミュレートをCPU100より高速に実行することができる。
【0020】
グラフィックメモリ170は、グラフィックプロセッサ160が描画するために高速に読み書きができる記憶媒体である。
たとえば、このグラフィックメモリとして、DDRやGDDR(Graphics Double Data Rate)等の広帯域なメモリを高レベルのメモリインターリーブ等を用いて接続することができる。
また、システムLSIのようにグラフィックメモリをグラフィックプロセッサ160に内蔵する構成も可能である。
また、グラフィックプロセッサ160が描画している間に、ディスプレイモニタに表示するためのデュアルポート構成を用いることも可能である。
なお、各オブジェクト又は各オブジェクトの一部のデータを主記憶部110に備え、直接、グラフィックメモリ170に転送し、描画するような構成も可能である。
【0021】
ビデオBIOS175は、グラフィックプロセッサ160用のBIOSが記憶されたフラッシュメモリ等である。
CPU100が、パッチによりこのビデオBIOS175を更新することで、グラフィックプロセッサ160の機能や表示品質を向上させたり、表示上の不都合(バグ)を直したりすることができる。
【0022】
オーディオプロセッサ180は、音楽や音声や効果音を出力するためのPCM(Wave)音源等を備えたDSP(デジタル・シグナル・プロセッサ)等である。オーディオプロセッサ180は、物理演算音源、FM音源等の計算を行い、残響や反射等の各種音声効果を計算することもできる。
オーディオプロセッサ180の出力は、D/A(デジタル・アナログ)変換され、デジタルアンプ等に接続されて、スピーカ等で音楽や音声や効果音として再生される。また、オーディオプロセッサ180は、マイクから入力した音声の音声認識等にも対応することができる。なお、上述のHDMIインターフェイスを用いて、音声出力信号をテレビ等に出力したり、別途Line out端子や専用端子から出力したりする構成も可能である。
【0023】
オーディオメモリ190は、音楽や音声や効果音のためのデジタル変換されたデータを記憶している記憶媒体である。
オーディオプロセッサ180とオーディオメモリ190とを一体的に構成することも当然可能である。
【0024】
通信I/F200は、ネットワークに接続するための(有線/無線LAN、電話線、携帯電話網、PHS網、電灯線ネットワーク、IEEE1394等)インターフェイスである。
通信I/F200からネットワークを介して、ゲーム装置10は、アプリやOSやパッチ等を図示しないサーバからダウンロードすることができる。また、逆に、通信I/F200を用いて、他のゲーム装置10のユーザと、複数のプレイヤによる協力ゲームを行うことができる。
また、複数のゲーム装置10が通信可能に接続されることで、サーバ等を介して、ゲームのスコア(点数、総得点、得点等)の集計や、他の遊戯施設に配置されたゲーム装置との間で対戦ゲームを行ったり、ランキングを集計したりすることが可能である。
【0025】
〔プレイヤキャラクタデータ210とバー回転データ230の構成〕
次に、図2Aを参照して、プレイヤキャラクタデータ210とバー回転データ230の詳細について説明する。
プレイヤキャラクタデータ210は、各プレイヤキャラクタのプレイ時の各種属性のデータを記憶する部位である。図2Aを参照すると、プレイヤキャラクタデータ210は、プレイヤ(のID)、移動指示、キャラクタ(の種類)、スコア、好意度、座標、属するバー、順番等の属性を記憶することができる。
「プレイヤ」の属性は、プレイヤのID等を記憶する部位である。このプレイヤのIDとともにプレイヤの名称等を記憶することもできる。
「移動指示」の属性は、移動やバーの把持や離脱等の各種ゲームに係る指示を行う対象を記憶する。具体的には、ペリフェラルI/F140のコントローラのIDに対応したユーザ1〜ユーザnの操作信号により指示を行うか、CPU100が移動指示の思考処理による指示を行うかについての選択を記憶する。
「キャラクタ」の属性は、各プレイヤキャラクタについて、描画する際のキャラクタをどの種類のオブジェクトにするかの選択を記憶する。このキャラクタは、大きさや移動差速度や思考パターンやキャラクタ同士の好意度といった値について、それぞれ異なった値を備えることができる。
「スコア」の属性は、各プレイヤキャラクタのプレイ時の総得点となるスコアを記憶する。このスコアは、バー500(図3A)の「残回数」がある場合、回転する度に連結したプレイヤキャラクタの数に応じて付与される。本実施形態の協力ゲーム処理において、各プレイヤキャラクタは、ゴールに到達した際の最終的なスコアを協力しつつ競う。また、「スコア」の属性は、ゲーム開始から複数ステージのプレイに係る、各プレイヤキャラクタに付与されたスコアの合計も記憶することができる。
「好意度」の属性は、各プレイヤキャラクタ同士の「相性」となる好意度のテーブルである。この好意度のテーブルは、例えば、同時にプレイする各プレイヤキャラクタ分の好意度の値を記憶することができる。この好意度の値は、例えば、好意度が高ければプラス値を記憶し、好意度が低ければマイナス値を記憶する。好意度のテーブルには、例えば、プレイヤキャラクタの種類別に初期値が決まっており、更に、プレイの進行により変化する。また、CPU100は、好意度の値に従ってプレイヤキャラクタの動作を制御する。
「座標」の属性は、例えばステージのマップ上の座標や画面上の座標を、例えば2次元座標を用いて記憶することができる。この「座標」は、バー回転データ230の「座標」の属性と同様の座標系の値を記憶することができる。また、各キャラクタオブジェクトを描画する際の3次元座標、加速度、姿勢等は、この「座標」属性に記憶することができる。さらに、この「座標」属性は、各キャラクタオブジェクトが「属する」状態になっていた場合の回転角度や回転速度等も記憶することができる。
「属するバー」の属性は、「属する」状態になったバーの座標やバー#(バー番号)の値等を記憶する。また、「属するバー」の属性には、当該プレイヤキャラクタがバー500に属しておらず、マップ上を飛んでいる状態の場合には、「なし」の値を記憶することができる。
「順番」の属性は、当該プレイヤキャラクタがバー500に「属する」状態になった場合の連結の順番を記憶する。この連結の順番については下記で述べる。ここで、当該プレイヤキャラクタがバー500に属していない場合には、例えば、「0」の値を記憶することができる。
【0026】
バー回転データ230は、バー500(図3A)の各種属性のデータを記憶する部位である。図2Aを参照すると、バー回転データ230は、バーの番号やID(バー#)、残回数、座標、バーの種類等の属性について各値を記憶する。このうち、バーの番号やIDとしては、ステージ上で出現する順番等に沿った番号のデータを並べて記憶することができる。
「バー#」の属性は、バー500(図3A)の番号やID等を記憶する。このバー500の番号やIDとしては、ステージ毎にスクロールの登場順に記憶することができる。
「残回数」の属性は、後述するバー付与得点状態変更処理(図5、図8)で用いるための値を記憶する。つまり、「残回数」の属性は、各バーで回転した場合に得点を付与できる残回数の値を記憶している。この残回数の値として、−1等の値を指定することで、何回でも得点を付与できるような属性を与えることもできる。また、残回数の値として、回転の回数ではなく、画面上に出現してからの時間やステージの経過時間を「残回数」に設定することもできる。
「座標」の属性は、例えば、スクロールするステージを2次元座標で捉えた仮想座標系を基にした「マップ」において、各バー500の座標を記憶する。なお、この「座標」については、ステージの3次元座標を用いて記憶したり、各ステージのマップ上の座標と画面上の3次元座標との対応関係についても記憶したりすることができる。
「種類」の属性は、通常のバー、平行/回転移動するバー、把持するとプレイヤキャラクタがダメージを受けたり痺れたりして所定時間動けなくなるバー、一見把持できそうで把持できないバー、残回数が無かったり、通常のバーよりも残回数が多かったりする「スペシャル」のバー、把持すると高速で回転するバー、把持すると他プレイヤキャラクタを連結させないことによって「無敵状態」になるバー等の種類を記憶する。
【0027】
〔協力ゲーム部300の構成〕
次に、図2Bを参照して、補助記憶部120に記憶された協力ゲーム部300の詳細について説明する。
協力ゲーム部300は、主にゲーム進行部310(ゲーム進行手段)、オブジェクト移動部320(オブジェクト移動手段)、オブジェクト数判定部330(オブジェクト数判定手段)、得点付与部340(得点付与手段)、順番判定部350(順番判定手段)、及び強制離脱部360(強制離脱手段)、回転制御部370(回転制御手段)、キャラクタ属性データ部380、を含んで構成される。
CPU100は、協力ゲーム部300の少なくとも一部を主記憶部110に読み出して実行することで、ハードウェア資源を用いて本発明の実施の形態に係る各処理を実現することができる。
【0028】
ゲーム進行部310は、後述する協力ゲームのメインプログラムとなる部位である。具体的には、ゲーム進行部310は、協力ゲームのプレイ時の仮想空間やデモ画面等を描画させ、各種処理を行う。
また、ゲーム進行部310は、協力ゲームのプレイ時に、複数のプレイヤキャラクタを仮想空間内に描画するように指示し、ゲームの進行に従って他のオブジェクトや背景等を描画し、スコアを表示するよう、グラフィックプロセッサ160に指示する。
また、ゲーム進行部310は、オーディオプロセッサ180を用いてBGMを演奏させ、効果音を出力させる。また、ゲーム進行部310は、各プレイヤキャラクタの総得点を画面表示させる。
また、ゲーム進行部310は、α−β枝刈りやモンテカルロ法等を行う人工知能プログラムを備えており、CPU100により操作の指示を行うプレイヤキャラクタについて、ターゲットとなるオブジェクトの設定、移動、把持、回転等の動作設定を行う。
【0029】
オブジェクト移動部320は、ペリフェラルI/F140から入力された各ユーザのプレイヤキャラクタに対応する操作信号に基づき、当該プレイヤキャラクタを仮想空間内で移動させる部位である。
また、オブジェクト移動部320は、各プレイヤキャラクタの仮想空間内の座標を変更させることで、各プレイヤキャラクタを移動させる。この移動の際には、仮想空間の視点の移動等である「画面スクロール」を考慮した移動を行うことができる。
また、オブジェクト移動部320は、この各プレイヤキャラクタの移動の際に、他のプレイヤキャラクタやバー等のオブジェクトとの2次元や3次元での座標の差を、距離等として算出し、「つかみ判定」を行う。具体的には、当該距離等が近かったり、オブジェクト同士の距離の絶対値が所定距離未満だったりした場合には「接触」と判断する。
また、オブジェクト移動部320は、各プレイヤキャラクタの特性に基づき、当該プレイヤキャラクタオブジェクトを移動させ、後述するバー500(図3A)のオブジェクトにプレイヤキャラクタのオブジェクトが接触した場合に、後述する「回転」の処理を行う。この「回転」の処理中は、当該プレイヤキャラクタを接触したバー500を把持(キャッチ)した状態になるような処理を行う。つまり、オブジェクト移動部320は、この把持した状態においては、バー500と当該プレイヤキャラクタとを、データとして結びつけ、回転等の所定の処理を行える(以下、「属する」という。)ように設定する。
また、オブジェクト移動部320は、バー500に「属する」状態になっていないプレイヤキャラクタ同士が接触した場合には、「通常コリジョン」によりプレイヤキャラクタ同士を反発させる。また、オブジェクト移動部320は、当該プレイヤキャラクタがバー500に「属する」状態になって回転している場合、接触した他のプレイヤキャラクタを連結させ回転させる「キャッチコリジョン」の処理を行うことができる。これらの処理については後述する。
なお、オブジェクト移動部320は、この「接触」の検知としては、各オブジェクトの座標を単純に計算するのではなく、グラフィックプロセッサ160の物理エンジンを用いてポリゴン同士の座標の重なり等により検知することもできる。
【0030】
オブジェクト数判定部330は、所定エリア又は所定オブジェクトに属するプレイヤキャラクタの数と、連結の順番とを判定する部位である。
オブジェクト数判定部330は、例えば、バー500の周囲において、所定座標内や所定のポリゴン等で示される区画を「所定エリア」として、当該所定エリア内にいるプレイヤキャラクタの数を算出することができる。また、オブジェクト数判定部330は、1つのバー500に複数のプレイヤキャラクタが「属する」状態となっている場合、この数を算出することもできる。
また、オブジェクト数判定部330は、バー500にプレイヤキャラクタが「属する」状態になった順番を基に、連結の順番を算出することができる。なお、この場合、オブジェクト数判定部330は、全てのプレイヤキャラクタが当該バー500から離脱したら、連結の順番は0となるように設定できる。
さらに、オブジェクト数判定部330は、バー500の中心からの距離を用いて順位付けを行い、所定エリア内の「属する」状態になっているプレイヤキャラクタの連結の順番を算出することもできる。さらに、オブジェクト数判定部330は、より単純には、バー500に「属する」際の並びのデータから、連結の順番を算出することもできる。
このように連結の順番を用いて、後述する得点の付与を変更したり強制離脱させたりといった処理を行うことで、ユーザのスコア取得のための選択が豊富になり、対抗(競争)と協力を使い分けてゲーム性を高めることができる。
【0031】
得点付与部340は、所定エリア又は所定オブジェクトに属するプレイヤキャラクタに対して、得点を付与する部位である。
得点付与部340は、具体的には、オブジェクト数判定部330の算出したプレイヤキャラクタの数に応じて、得点を付与する。つまり、1つのバー500に「属する」状態になったプレイヤキャラクタの数が多いほど、回転時に、高い得点を各プレイヤキャラクタに付与する。
また、得点付与部340は、後述するように、プレイヤキャラクタが回転した際に、プレイヤキャラクタに得点を付与できる回数又は時間を制限することができる。この回数又は時間の制限として、例えば、得点付与部340は、バー回転データ230から、「属する」状態になったバー500に対応する「残回数」の属性を、回転の回数に従って減少させることができる。つまり、例えば、得点付与部340は、当該バー500の「残回数」が0以下となった場合には、プレイヤキャラクタが回転しても、得点を付与しないように構成することができる。同様に、得点付与部340は、時間の制限としては、仮想空間の画面内に表示されてから所定時間が過ぎると、当該バー500においてプレイヤキャラクタが回転しても得点を付与しないように構成することができる。これにより、ゲームに緊張感を与えて、どのバー500を選んで移動するかについて戦略性を高めることができる。
なお、得点付与部340は、後述する他の実施の形態のように、プレイヤキャラクタの連結の順番に従って、付与する得点を変化させるように構成することもできる。
【0032】
順番判定部350は、プレイヤキャラクタが所定エリア又は所定オブジェクトに属した順番を算出する部位である。
ここで、本発明の実施の形態に係る協力ゲームにおいては、複数のプレイヤキャラクタが1つのバー500を中心に、連結して(連なって)回転することができる。
順番判定部350は、複数のプレイヤキャラクタが「属する」状態になった場合には、そのバー500の中心からの順位が何番目であるかを示す、連結の順位の値等(以下、「連結の順番」という。)を設定する。
順番判定部350は、この順番としては、最初に「属する」状態になったプレイヤキャラクタを1番等の最も小さい順番にする。この上で、順番判定部350は、後述するキャッチコリジョンにより更に「属する」状態になったプレイヤキャラクタの順番を順次増加させるといった処理を行う。
また、順番判定部350は、バー500に「属する」状態になったプレイヤキャラクタが複数いる場合、各プレイヤキャラクタの連結の順番を、プレイヤキャラクタデータ210を読み出して算出することもできる。
【0033】
強制離脱部360は、順番が小さいプレイヤキャラクタが所定エリア又は所定オブジェクトから離脱した場合、順番が大きいプレイヤキャラクタを当該所定エリア又は所定オブジェクトから離脱させる部位である。
強制離脱部360は、プレイヤキャラクタに対応するコントローラ等からのバー500から離脱する操作信号を受信した場合、このプレイヤキャラクタの回転を途中で停止させ、離脱させる。この際に、同じバー500に、他のプレイヤキャラクタが「属する」状態になって回転している場合、離脱した当該プレイヤキャラクタよりも連結の順番が大きいプレイヤキャラクタは、同時に強制的に離脱させることができる。これにより、他のキャラクタが連結し回転することで高い得点を得ることを妨害する/許容するかについて、連結の順番が小さい、つまり早く「属する」状態になったキャラクタの操作を優先させる。これにより、ゲーム性を高めることができる。
また、強制離脱部360は、複数のプレイヤキャラクタが連結しているほど、離脱時の飛び出し速度又は距離を小さくさせるよう制御する。強制離脱部360は、キャラクタ属性データの回転加速比率及びジャンプ力比率を用いて、離脱時の飛び出し速度又は距離を算出する。
【0034】
回転制御部370は、連結して回転する際の各プレイヤキャラクタの描画等を制御する部位である。
つまり、回転制御部370は、回転の速度、半径、強制離脱時の飛び出し速度等がゲームに適さない値にならないよう、調整を行う部位である。
ここで、本実施形態に係る協力ゲームにおいては、プレイヤキャラクタを描画する際に、画面上で識別性を高め見栄えを良くするよう、大きめに描画する。このため、連なって回転させる際、連結の順番に従って比例するように速度や回転の半径等を大きくすると、画面上に収まりきらなくなったり、連結した順番が遅く、外側で回転するプレイヤキャラクタにスピードが付きすぎてしまったりするという問題があった。
このため、回転制御部370は、複数のプレイヤキャラクタが連結しているほど、回転の最高速度、最低速度が小さくなるよう調整する。
また、回転制御部370は、複数のプレイヤキャラクタが連結しているほど、各プレイヤキャラクタが一度の回転速度の加速操作による加速量を制限する。この加速操作は、コントローラの加速度センサやアナログスティック等の値を基に、回転のスピード(角速度)を変化させるものである。回転制御部370は、連なって回転しているプレイヤキャラクタの加速量の合計により回転速度を算出するように構成する。このため、回転制御部370は、キャラクタ属性データ380の回転加速比率を用いて、回転の加速量の最大値を制限する。
これにより、複数のプレイヤキャラクタが連結しても、見栄えよく連なって回転させることができる。また、複数のプレイヤキャラクタが連結している場合、各プレイヤキャラクタが協力して加速操作することによって、回転速度を急加速させることができる。よって、プレイヤキャラクタが連なって回転するのを見たいというユーザの意欲を惹起させたり、協力操作をさせたりすることで、ゲーム性を高めることができる。
また、回転速度や飛び出し速度を制限することで、画面外に飛び出すことが少なくなり、ゲーム性を高めることができる。
【0035】
キャラクタ属性データ部380は、各プレイヤキャラクタの種別によるパラメータ、全プレイヤキャラクタに共通するパラメータ、プレイヤキャラクタのオブジェクトの大きさ、CPUの思考処理データ等の各種データを変数等にて記憶している。
キャラクタ属性データ部380は、各プレイヤキャラクタの種類別のパラメータとしては、回転操作のタイミングに係るテクニック値、加速度に係るスピード値、最大のジャンプ力に係るパワー値、回転速度加速操作による加速量の最大値、他のプレイヤキャラクタの種別に対する好意度の初期値、体重、大きさ等のテーブル等を記憶する。
また、キャラクタ属性データ部380は、全プレイヤキャラクタに共通するパラメータとして、キャッチする座標の範囲、連結から離脱した際に、バー500からの連結の番号に応じて付加するジャンプ力の倍率である「ジャンプ力倍率」を記憶する。さらに、連結から離脱した際のジャンプ力のパワー値を、連結の番号に応じて変化させる「ジャンプ力比率」も記憶する。加えて、回転速度加速操作による加速量の最大値を制限する「回転加速比率」等も記憶する。
キャラクタ属性データ部380の各データは、ユーザによるプレイヤキャラクタ610〜640の設定後、ゲームのプレイ開始時にCPU100により補助記憶部120から読み出され、主記憶部110のプレイヤキャラクタデータ210等の部位に記憶される。
【0036】
〔ゲーム装置10の協力ゲーム処理〕
ここで、図3A〜図11を参照して、本発明の実施の形態に係るゲーム装置10による協力ゲーム処理について詳しく説明する。
本発明の実施の形態に係るゲーム装置10は、複数のプレイヤキャラクタでプレイするアクションゲームを実行する。特に、ゲーム装置10は、複数のプレイヤキャラクタが獲得得点を競うゲームにおいて、複数のプレイヤキャラクタそれぞれが連なり合うことでプレイヤのプレイ操作と獲得得点に影響を与える協力ゲームを実行することができる。
このような本実施形態の協力ゲームでは、複数のプレイヤキャラクタ同士の関係性がゲームに大きな影響を与えるため、興趣性を向上させることができる。
【0037】
ここで、図3Aと図3Bとを参照して、本発明の実施の形態に係る協力ゲームの例の1つである、回転ジャンプゲームの概要について説明する。
図3Aの画面例400は、本実施形態に係る回転ジャンプゲームの仮想空間の概念図である。この回転ジャンプゲームは、各プレイヤキャラクタが、画面上に配置されたバー500を回転して飛びつつ、ゴールを目指すという競争ゲームである。プレイ時に、CPU100は、協力ゲーム部300を用いて、プレイヤキャラクタ同士で競い合い又は協力し合う各種の処理を行う。
より具体的に説明すると、本実施形態の回転ジャンプゲームでは、1つのステージが、例えば横方向に所定距離の長さを備えている。このステージは、プレイの進行に従い、所定速度でスクロールして動いていく。画面例400においては、画面のスクロールの方向は左から右方向である。このスクロールは、背景他オブジェクトデータ220のステージに係るデータをグラフィックプロセッサ160にてレンダリングする際に、2.5次元の視点位置となるカメラを、ステージの左から右に移動させることで実現できる。このステージ上のスクロールされた位置は、例えば、画面上部に「スタート」から「ゴール」までの位置として表示することができる。カメラの距離は先頭と最後尾との距離に応じて、変動させることが好適である。また、カメラのアングルは、斜め後ろに設定するのが好適である。
各ステージには、バー500が所定の間隔やパターンで配置されている。バー500について、スクロールに対応して、主に右から左に動いてゆくことになる。
なお、スクロールとは別に、所定パターンで所定方向に平行移動したり回転したりする種類のバー500を用いることも好適である。
また、ステージの背景をスクロールさせるのではなく、配置されたバー500のみがスクロールするような描画を行うこともできる。また、所定速度で強制的にスクロールさせるのではなく、先頭のプレイヤキャラクタが画面例400の右端から15%〜30%程度の位置にきたら、先頭の位置に合わせてスクロールするような構成も可能である。
また、各ステージには、バー500以外にも、落下時の加速度とは反対の加速度を与える「トランポリン」や、プレイヤキャラクタを攻撃して落下させるような「敵キャラクタ」、その位置座標を通過すると得点が得られる「コイン」、把持すると当該プレイヤキャラクタを自由に移動させられる「風船」、無敵化/回転中のプレイヤキャラクタの自動追尾をしたり強制離脱させたりする/バー500を引き寄せたりの残回数を回復させたりするといった特殊効果のある「アイテム」等を配置することもできる。
【0038】
ここで、画面例400では、4体のプレイヤキャラクタ610〜640が存在する例を示している。以下の説明においても、このプレイヤキャラクタ610〜640にて、ゲームのプレイを行う例について説明する。各プレイヤキャラクタは、ペリフェラルI/F140に接続されたコントローラのボタンや各種センサによる動作の指示の信号(入力情報、入力信号、操作信号)の検知、又はCPU100が実行するゲーム進行部310の思考処理により動作が指示される。
プレイヤキャラクタ610〜640には、重力に対応する画面の下方向の加速度がかかっており、何も操作の指示をしないと下方に落下する。このため、プレイヤキャラクタ610〜640は、バー500を把持して回転し、その勢いで上方に飛び出すといった動作を行う。ユーザは、コントローラにより、回転からの離脱時の飛び出し方向を程度変化させ、又落下時に落下方向をある程度変化させられる。なお、画面のスクロールに従って、画面外に出た場合にも、落下と同様の扱いとなる。この場合は、下方又は上方から、プレイヤキャラクタ610〜640が再登場するが、時間的なロスとなる。
プレイヤキャラクタ610〜640がバー500を把持して回転する度に、CPU100は、後述するような所定の条件に従って得点を付与するかしないかを決定する。また、例えば、画面例400のプレイヤキャラクタ630が回転している際に、プレイヤキャラクタ640が接触すると、「キャッチコリジョン」となり、連結して回転する。この連結の回転により、通常とは異なる得点を得ることができる。
画面例400では、このようにして得た総得点であるスコアを、例えば、プレイヤキャラクタ毎に四隅に表示する。
所定時間が経過し、ステージの端までスクロールすると、画面は一旦停止して、所定時間以内に各プレイヤキャラクタが図示しない「ゴール」に着地して、1ステージが終了となる。この際のスコアにより、プレイヤキャラクタ610〜640の勝敗が決定される。
【0039】
図3Bは、バー500と、プレイヤキャラクタとの関係を示す概念図である。
各バー500は、仮想空間内の空中に配置する棒のギミックである。各プレイヤキャラクタ610〜640は、このバー500を把持して回転し、離脱時にジャンプする。
バー500は、バー位置指示オブジェクト510の両端に、バーラインオブジェクト520が接続されているように描画することができる。ここで、バーラインオブジェクト520は、プレイヤキャラクタが連なって回転しているときに透過する可能性があるため、半透明の力場のような見た目に描画することが好適である。
図3Bの例では、プレイヤキャラクタ610は、このバーラインオブジェクト520に接触して、コントローラのボタンの押下等の指示により、把持することができる。プレイヤキャラクタ610は、把持が完了すると、当該バー500に「属する」状態になり、回転することができる。なお、プレイヤキャラクタ610が、バーラインオブジェクト520に必ずしも重ならなくても、所定距離以内又は所定エリア内にいる場合には「接触」して把持できるように構成することで、より操作性を高めることができる。
以下で、この協力ゲーム処理について、図4のフローチャートを参照して、ステップ毎に詳細に説明する。
【0040】
(ステップS101)
まず、CPU100は、協力ゲーム部300のゲーム進行部310を用いて、初期化処理を行う。
具体的には、CPU100は、協力ゲーム部300の記憶された記憶媒体(図示せず)を光学ドライブやフラッシュメモリディスクの挿入口等に投入されて、補助記憶部120が構成された際に、これを読み出して実行する。
この際に、まず、CPU100は、初期化画面を表示し、協力ゲームに係るムービー(動画像)等を再生する。この上で、ユーザがゲームのプレイの「開始」をペリフェラルI/F140に接続されたコントローラ等で指示したことを検知して、プレイを開始する。
この開始の際に、CPU100は、ユーザからのコントローラ等による指示を基にして、プレイヤキャラクタの人数、キャラクタ種別、コントローラの割り当て、CPU100が思考処理を担当するか否かといった設定等を行う。図4の例では、4体のプレイヤキャラクタ610〜640を用いる際に、ユーザが3人以下の場合、協力ゲーム部300のプログラムで制御するプレイヤキャラクタを用いる。また、CPU100は、ユーザの指示に従って、プレイ時の難易度やステージを選択することもできる。
【0041】
(ステップS102)
次に、CPU100は、ゲーム進行部310を用いて、モデル読み込み処理を行う。
具体的に、CPU100は、補助記憶部120からユーザが選択したプレイヤキャラクタの種別に応じたプレイヤキャラクタデータ210の初期データ(図示せず)を読み出し、主記憶部110にコピーする。
加えて、CPU100は、ユーザが選択したステージに対応する背景他オブジェクトデータ220を補助記憶部120から読み出して同様に主記憶部110に記憶する。
この際に、CPU100は、「ロード中」といった表示をグラフィックプロセッサ160に表示させ、オーディオプロセッサ180からBGMを演奏させる。
CPU100は、その他のゲームに係るデータについても読み出して、主記憶部110に記憶する。
その後、CPU100は、ゲームを開始させる。
なお、ゲーム開始の前に、CPU100は、デモ画像等を表示することもできる。この際に、ステージを高速に一望するようにカメラ位置を移動させて、ユーザの期待感を高める等の演出を行ってもよい。
【0042】
(ステップS103)
次に、CPU100は、ゲーム進行部310を用いて、プレイヤキャラクタ発射処理を行う。
具体的には、CPU100は、ユーザにより選択されたプレイヤキャラクタ610〜640について、最初に「選手紹介」のデモンストレーションを行い、大砲のようなオブジェクト(図示せず)に入るように演出する。
CPU100は、プレイヤキャラクタ610〜640を4体とも大砲のようなオブジェクトに入った後、「READY」の合図の後、一斉に発射し、カメラを上空へ移動させる。
CPU100は、ゲーム開始位置までカメラを移動したら、画面下から4体のプレイヤキャラクタ610〜640が打ち上がるよう、グラフィックプロセッサ160に描画させる。この際、ユーザのコントローラの指示により、プレイヤキャラクタ610〜640は、左右への方向操作が可能である。CPU100は、到達する高さが全てほぼ同じになるように設定する。
その後、CPU100は、「GO!」という表示とともに、スタート位置からカメラをステージの端に向かって通常のスクロールをさせてゆく。
これにより、各プレイヤキャラクタは回転とジャンプのアクションを駆使して、ゴール地点を目指してプレイを進行させる。
【0043】
(ステップS104)
ゲームの進行に従って、CPU100は、ゲーム進行部310を用いて、ゲーム画像描画処理を行う。
具体的には、CPU100は、背景他オブジェクトデータ220を用いて、背景画像をグラフィックプロセッサ160により描画させ、バー500のオブジェクトを表示する。この表示の際には、カメラの移動により上述した図3Aのようなスクロールを行い、画面を描画する。
【0044】
なお、CPU100は、プレイヤキャラクタ610〜640が画面上方向に移動したときにはカメラをズームアウトして描画させるような処理を行うことができる。これにより、プレイヤキャラクタ610〜640を見失わないようにすることができる。
このズームアウトは、画面横方向では判定しないようにすることで、すぐにズームアウトして、わずらわしい感じをユーザに与えるのを防ぐことができる。また、ズームアウトした際には、できるだけ早く通常のカメラに戻るように構成することが好適である。
【0045】
(ステップS105)
次に、CPU100は、オブジェクト移動部320を用いて、当たり判定処理を行う。
具体的には、CPU100は、プレイヤキャラクタ610〜640が、ステージの2次元のマップ上で、他のオブジェクトと座標が近接等して「接触」状態になっているか否かについて算出する、いわゆる当たり判定を行う。
この処理では、まず、CPU100は、各プレイヤキャラクタ610〜640のオブジェクトの仮想空間内の3次元座標から、マップ上の2次元座標を算出する。この上で、CPU100は、プレイヤキャラクタ610〜640が、バー500や他のプレイヤキャラクタ610〜640のオブジェクトと接触しているか否かを算出する。ここで、CPU100は、各オブジェクトが、完全にマップ上で座標が重なっていなくても、所定距離未満の場合には「接触」状態であると判定する。しかしながら、CPU100は、単なる背景となっているオブジェクト、例えば遠景のビル画像等とは、当たり判定を行わない。
さらに、CPU100は、プレイヤキャラクタ610〜640が、バー500に「属する」状態になっている場合には、これも「接触」状態と検出する。
CPU100は、これらの当たり判定結果を、主記憶部110に記憶する。
【0046】
(ステップS106)
次に、CPU100は、コリジョン/回転処理を行う。
具体的には、CPU100は、各プレイヤキャラクタ610〜640の「通常コリジョン」「キャッチコリジョン」を判定してそれぞれの処理を行う。
また、CPU100は、単独や連結しての回転による得点付与の処理を行う。この得点付与の際に、プレイヤキャラクタ610〜640は、単独での回転よりも、協力してバー500を回転した方が付与される得点が多いため、協力することがプレイの戦略上必要になる。よって、協力ゲームを実現できる。
このコリジョン/回転処理の詳細については後述する。
【0047】
(ステップS107)
ここで、CPU100は、オブジェクト移動部320を用いてキャラクタ移動描画処理を行う。
具体的には、CPU100は、プレイヤキャラクタ610〜640のそれぞれについて、バー500に「属する」状態になり回転しているか、バー500から離脱して飛んでいるかといった現在の状態に従って、グラフィックプロセッサ160に描画させる。
また、この際に、CPU100は、キャッチした際の効果用のオブジェクト、2次元描画のビルボード・オブジェクト、アニメーション等をグラフィックプロセッサ160に再生させる。また、プレイヤキャラクタ610〜640が得点を得た場合に、その得点も描画させる。またCPU100は、オーディオプロセッサ180から、効果音等も再生させる。
【0048】
(ステップS108)
次に、CPU100は、ゲーム進行部310を用いて、ステージのゴールに到達したか否かについて判定する。この判定では、移動したカメラの座標がステージのゴールに到達したかについて判定する。
Yes、すなわちゴールに到達した場合、CPU100は、処理をステップS109に進める。
No、すなわちまだゴールではない場合、CPU100は、処理をステップS104に戻し、さらにゲームのプレイを進行させる。
【0049】
なお、CPU100は、このゴールに到達したか否かの判定について、カメラの座標ではなく、ゲーム開始からの所定時間を計算して判定することができる。また、CPU100は、バー回転データ230のバー#が全て出現したことを検知することもできる。
【0050】
また、ステージの所定箇所等でスクロールを一時的に停止して、例えば、「すべての棒を回れ」といった「お題」を提示し、その達成に従って各プレイヤキャラクタ610〜640に得点を付与するような処理も可能である。
【0051】
(ステップS109)
ステージのゴールに到達した場合、CPU100は、ゲーム進行部310を用いて、終了処理を行う。
この終了処理においては、CPU100は、例えば空中に浮いているゴールのオブジェクト(図示せず)をグラフィックプロセッサ160に描画させ、プレイヤキャラクタ610〜640がこの上に着地した場合に、プレイを終了させる。この際、CPU100は、着地した順番、ゴールのオブジェクト上の所定の着地点からの距離、着地までの時間やタイミング等に応じて、「着地ボーナス」の得点を着地したプレイヤキャラクタ610〜640に付与する。このゴールのオブジェクト上の所定の着地点は、背景他オブジェクトデータ220の基準範囲データから求めることができる。また、CPU100は、例えば、着地した順番が早く、所定の着地点より距離が少なく、バー500を離脱して着地までの時間やタイミングが早い、といった場合に高い着地ボーナスを付与するように構成することができる。
CPU100は、ゴールに到達して所定時間が経過したら、「GOAL!」表示をさせ、ステージを終了させる。この際、CPU100は、プレイヤキャラクタ610〜640について、当該ステージの総得点であるスコアにより、ランキングを計算して勝ち負けとして表示する。
以上により、協力ゲーム処理を終了する。
【0052】
次に、図5のフローチャートを参照して、上述のコリジョン/回転処理の詳細について説明する。
このコリジョン/回転処理は、プレイヤキャラクタ毎に、移動、キャッチ、回転、回転からの離脱/強制離脱等の動作設定を行う。
【0053】
〈コリジョン/回転処理の詳細〉
(ステップS200)
まず、CPU100は、ゲーム進行部310を用いて、動作設定を行うプレイヤキャラクタ610〜640(以下、自プレイヤキャラクタという。)の移動指示をユーザから検知するのか、CPU100がプログラムにより動作設定の処理(以下、思考処理という。)を制御するのかを判定する。この判定については、CPU100は、プレイヤキャラクタデータ210から、対応するプレイヤキャラクタ610〜640の「移動指示」属性を読み出して判断する。
Yes、すなわち、CPU100が思考処理を行う場合、CPU100は、処理をステップS201に進める。
No、すなわち、ユーザの指示により動作設定を行う場合、CPU100は、処理をステップS202に進める。
【0054】
(ステップS201)
自プレイヤキャラクタが、CPU100により動作設定をするように設定されていた場合、CPU100は、ゲーム進行部310を用いて、CPU思考処理を行う。
ここで、図6を参照して、CPU100がプレイヤキャラクタ630を自プレイヤキャラクタとして動作設定をする際の、CPU思考処理の例について説明する。
まず、CPU100は、ユーザにより設定された難易度に従って、どのような動作設定をするかを選択する。
たとえば、図6のように、プレイヤキャラクタ630のルート検索を行う検索範囲700〜720を、難易度毎に設定する。すなわち、難易度が高い場合は広い検索範囲700を用い、難易度が中程度の場合には中程度の検索範囲710を用い、難易度が低い場合には狭い検索範囲720を用いる。なお、この検索範囲700〜720については、バー500に「属する」状態になり、さらに他のプレイヤキャラクタ610〜640と連結している場合には、連結した人数に応じて広い検索範囲を用いることができる。
ここで、CPU100は、検索範囲内の最も右上に位置するバー500を目標地点として、次に移動するバー500を選択する。この上で、自プレイヤキャラクタが、バー500を把持する毎、又は空中で移動している間に、次の移動先となるターゲットを検索する。CPU100は、移動先となるターゲットとして、基本的には検索範囲700〜720内にあるバー500を検索して選択する。また、CPU100は、オブジェクト数判定部330を用いて、所定エリア内に、プレイヤキャラクタ610〜640がいるかを検索し、ターゲット対象にすることもできる。
このターゲットの検索の際、CPU100は、現在位置から到達可能な全てのルートを検索する。検索範囲700〜720が広くなると、二つ、三つ先のバー500をターゲットとするようになる。その際は、当該ターゲットとなったバー500に至るための最短及び最速のルートを検索して決定することができる。この最短ルートは、ターゲットに至る複数のルートを検索し、比較することで求められる。また、ダイクストラ法のようなアルゴリズムを用いて最短ルートを計算してもよい。
また、CPU100は、ターゲット候補をソートして、最適なターゲットを検索することもできる。たとえば、検索範囲700〜720内に、下記で説明する好意度が一定以上になっているキャラがいるか、又は好意度が低いライバルキャラが存在するかによりソートできる。
【0055】
このターゲットとルートの計算の際に、CPU100は、ターゲットとする条件については、各プレイヤキャラクタ610、620、640との間の好意度により制御する。
まず、ターゲットとルートの計算において、CPU100は、「好意度」を基に、どのターゲットを検索するか判断する。ここで、CPU100は、プレイ中での他のプレイヤキャラクタ610〜640との行動の「からみあい」状況を検知して、好意度を加算/減算することができる。たとえば、連結して回転すると好意度を上げることができる。また、連結した際に回転を強制離脱した場合や、通常コリジョンで下方に押しやった場合等に、好意度を下げることができる。
これにより、CPU100は、好意度が高いプレイヤキャラクタ610、620、640がターゲットの場合には、連結して回転しようとするように動作設定できる。また、CPU100は、逆に好意度が低いプレイヤキャラクタ610、620、640が連結して回転した際に強制離脱させたり、通常コリジョンでわざと下に押しやったりといった、「復讐」するような挙動を実現することができる。この各プレイヤキャラクタ610、620、640への好意度について、好意度が高く/低くなる行動と反対の行動を検知した場合には、初期値にリセットするように構成することもできる。
また、CPU100は、各プレイヤキャラクタ610、620、640のスコアに応じて、「好意度」を変化させる。たとえば、この例における自プレイヤキャラクタであるプレイヤキャラクタ630のスコアが2〜4位であった場合には、1位のプレイヤキャラクタへの好意度を下げ、連結しないように動作設定する。これにより、ゲームの進行に応じて1位のプレイヤキャラクタを入れ替えることができ、どのプレイヤキャラクタに連結(協力)しないようにするかを常に確認しながらゲームを進めることができる。よって、プレイヤキャラクタ610〜640が対抗と協力とを繰り返すことになり、ゲーム性を高めることができる。
【0056】
このようにターゲットとルートを計算した後、CPU100は、次に把持したりキャッチしたりしようとする他プレイヤキャラクタやバー500との相対座標及び自プレイヤキャラクタの状態により、実際の動作設定を行う。
具体的には、CPU100は、「属する」状態になっていない場合、左右移動の軌道制御を行うよう動作設定する。
また、CPU100は、ターゲットとなるバー500に接触した場合、把持して「属する」状態にするか否かについて動作設定する。
また、CPU100は、ターゲットの他プレイヤキャラクタであるプレイヤキャラクタ610、620、640のいずれかに近い場合には、キャッチコリジョンするか通常コリジョンをするかについて動作設定する。
また、CPU100は、回転中は、回転を続けるか強制離脱するかについても、動作設定する。
【0057】
(ステップS202)
次に、CPU100は、ユーザが自プレイヤキャラクタの動作設定を行う場合、ゲーム進行部310を用いて、プレイヤ入力取得処理を行う。
この処理においては、CPU100は、ペリフェラルI/F140に接続された自プレイヤキャラクタに対応したコントローラ等からの操作信号を検知して、その検知に従った動作設定を行う。
具体的には、CPU100は、ユーザが空中にいる場合には、コントローラの左右ボタン、アナログコントローラの左右、加速度センサの左右等の操作信号を検知して左右に移動するような動作設定を行う。これは、回転したバー500から離脱した際の「ジャンプ」時にも同様である。
また、CPU100は、ユーザが所定のボタンを押下したことを検知して、接触しているオブジェクトの把持を行うための動作設定をする。この把持においては、バー500と他のプレイヤキャラクタ610〜640(以下、他プレイヤキャラクタという。)が接触していた場合には、他プレイヤキャラクタを優先させるような動作設定が好適である。これにより、回転中の他プレイヤキャラクタを把持しやすくなり、ゲームの操作性を高めることができる。
さらに、CPU100は、回転時にユーザが所定のボタンを押下したことを検知して、離脱の動作設定を行う。この離脱の動作設定においては、回転のタイミングにより、高さや加速度等を変更して、連結している他プレイヤキャラクタを含めて「ジャンプ」させる。
【0058】
(ステップS203)
次に、CPU100は、オブジェクト移動部320を用いて、自プレイヤキャラクタがバー500に「属する」状態になり、回転しているか否かについて判定する。
Yes、すなわち、回転している場合、CPU100は、処理をステップS210に進める。
No、すなわち、回転していない場合、CPU100は、処理をステップS204に進める。
【0059】
(ステップS204)
ここで、CPU100は、自プレイヤキャラクタが回転していない場合、オブジェクト移動部320を用いて、「通常コリジョン」をしているか否かについて判定する。
具体的には、CPU100は、自プレイヤキャラクタが、他プレイヤキャラクタと接触し、当該他プレイヤキャラクタがバー500に「属する」状態でなかった場合には、「通常コリジョン」として、Yesと判定する。また、当該他プレイヤキャラクタがバー500に「属する」状態であっても、自プレイヤキャラクタについて把持の動作設定がなかった場合にも、Yesと判定する。それ以外の場合、CPU100は、Noと判定する。
Yesの場合、CPU100は、処理をステップS205に進める。
Noの場合、CPU100は、処理をステップS206に進める。
【0060】
(ステップS205)
CPU100は、他プレイヤキャラクタと「通常コリジョン」していた場合、オブジェクト移動部320を用いて、通常コリジョン処理を行う。
図7Aを参照して、この通常コリジョン処理について説明する。ここでは、プレイヤキャラクタ620を自プレイヤキャラクタ、プレイヤキャラクタ610を他プレイヤキャラクタとして説明する。
CPU100は、空中で自プレイヤキャラクタが他プレイヤキャラクタと接触した場合に、上述の当たり定により弾き合うように移動方向の動作設定を行う。この際、移動ベクトルと、自プレイヤキャラクタと他プレイヤキャラクタの大きさの差や体重差に応じて、加速度を付加し、弾きあうよう構成することができる。しかしながら、CPU100は、2次元の座標系において、上方から自プレイヤキャラクタが他プレイヤキャラクタに接触した場合、上方向へ跳ね上げるように加速度を付加する。これにより、ゲームの操作性を高めて、反発した際の見た目を面白くすることができる。
また、CPU100は、他プレイヤキャラクタがバー500に属して回転中であったものの、ユーザが把持する指示をしていなかった場合、回転している他プレイヤキャラクタに弾かれるように、自プレイヤキャラクタに加速度を付加する。この際に、CPU100は、接触した瞬間の他プレイヤキャラクタの回転位置に依存するよう、自プレイヤキャラクタの飛んでいく方向を設定する。すなわち、弾かれる方向により、期待する方向に飛んだり、逆に意図しない方向に飛んだりするという効果が得られ、ゲームを複雑にしてユーザを楽しませることができる。
その後、CPU100は、処理をステップS217に進める。
なお、CPU100は、複数の他プレイヤキャラクタが連なって回転していた場合には、その人数に応じて加速度を増やし、「回転加速比率」により最大値を調整する。また、CPU100は、他プレイヤキャラクタに後ろから当たった場合は、弾かれないように設定できる。
【0061】
(ステップS206)
CPU100は、通常コリジョンではなかった場合、オブジェクト移動部320を用いて、自プレイヤキャラクタと他プレイヤキャラクタとが「キャッチコリジョン」をしているか否かについて判定する。ここでは、他プレイヤキャラクタがバー500に「属する」状態になっており、ユーザが自プレイヤキャラクタにおいて把持の指示をした操作信号を検知した場合、「キャッチコリジョン」としてYesであると判定する。それ以外の場合には、Noと判定する。
Yesの場合、CPU100は、処理をステップS207に進める。
Noの場合、CPU100は、処理をステップS208に進める。
【0062】
(ステップS207)
CPU100は、自プレイヤキャラクタが他プレイヤキャラクタと「キャッチコリジョン」した場合、順番判定部350を用いて、キャッチコリジョン処理を行う。
図7Bを参照して、キャッチコリジョン処理について説明する。図7Bにおいても、プレイヤキャラクタ620を自プレイヤキャラクタ、プレイヤキャラクタ610を他プレイヤキャラクタとして説明する。
CPU100は、自プレイヤキャラクタが落下しているときでも、バー500を把持して「属する」状態になっている他プレイヤキャラクタがある場合、当該他プレイヤキャラクタを把持する「キャッチコリジョン」の処理を行うことができる。
具体的には、CPU100は、他プレイヤキャラクタの端部に移動して、把持するような形状で一緒に回転し始める。この際、CPU100は、他プレイヤキャラクタが複数、連結して回転している場合には、末端まで滑り落ちた後、最後尾を把持するように描画させる。
そして、CPU100は、プレイヤキャラクタデータ210のキャッチコリジョンした他キャラクタの「属するバー」属性の値を読み出して、自プレイヤキャラクタの「属するバー」属性に書き込む。また、CPU100は、連結の順番を算出し、自プレイヤキャラクタの「順番」属性に書き込む。
その後、CPU100は、処理をステップS217に進める。
【0063】
(ステップS208)
CPU100は、通常コリジョンでもキャッチコリジョンでもなかった場合、自プレイヤキャラクタがバー500に接触しているか否か判定する。ここでは、CPU100は、バー500に接触した状態で、把持の動作設定がされている場合Yesと判定する。上述したように、ユーザの場合はボタン押下等の指示があり、CPU100の思考処理で設定されていた場合に、把持の動作設定となる。また、上述したように、CPU100は、バー500と必ずしもオブジェクト同士が重なっていなくても、近接していれば接触状態と判断する。
ここで、CPU100は、バー500に自プレイヤキャラクタが接触して、把持の指示が出ている場合以外には、Noと判定する。
Yesの場合、CPU100は、処理をステップS209に進める。
Noの場合、CPU100は、処理をステップS217に進める。
【0064】
なお、CPU100は、敵キャラクタやコインや風船やアイテム等の他のオブジェクトに接触した場合には、それぞれの処理を行うこともできる。
また、CPU100は、一時停止時に所定のオブジェクトに着地した場合にも、別途、得点等を計算する処理を行うこともできる。
【0065】
(ステップS209)
CPU100は、自プレイヤキャラクタがバー500と接触し、把持の指示が動作設定されていた場合、バー接触回転開始処理を行う。
具体的には、CPU100は、プレイヤキャラクタデータ210の自プレイヤキャラクタの「属するバー」属性に、接触したバー500の情報を書き込む。これにより、CPU100は、自プレイヤキャラクタを「属する」状態とする。そして、CPU100は、自プレイヤキャラクタの「座標」属性に、初期の回転角度を設定する。
また、CPU100は、連結の順番を「1」として、自プレイヤキャラクタの「順番」属性に書き込む。
その上で、CPU100は、処理をステップS217に進める。
【0066】
(ステップS210)
ここで、自プレイヤキャラクタが回転している場合、CPU100は、オブジェクト数判定部330を用いて、バー連結数算出処理を行う。
具体的には、CPU100は、プレイヤキャラクタデータ210を読み出し、自プレイヤキャラクタの「属するバー」属性を読み出す。この上で、CPU100は、自プレイヤキャラクタと同じバー500と「属する」状態になっている他プレイヤキャラクタが何体いるかを算出する。
また、CPU100は、自プレイヤキャラクタの連結の順番についても算出する。
【0067】
(ステップS211)
次に、CPU100は、回転制御部370を用いて、回転処理を行う。
この回転処理においては、CPU100は、自プレイヤキャラクタの連結の順番に従って、「属する」状態になっているバー500から所定の半径にて、所定のスピードにて自プレイヤキャラクタを回転させる。具体的には、CPU100は、回転した後で、プレイヤキャラクタデータ210の自プレイヤキャラクタの「座標」属性に、回転した角度等を変更して書き込む。
この回転の際には、CPU100は、上述したように連結の順番により調整するため、ユーザに見栄えよく描画し、ゲーム性を高めることができる。
すなわち、CPU100は、
・複数のプレイヤキャラクタが連結しているほど、回転の最高速度、最低速度を調整する
・複数のプレイヤキャラクタが連結しているほど、各プレイヤキャラクタの一度の回転速度加速操作による加速量を制限する
等の制御を行うことができる。
【0068】
(ステップS212)
次に、CPU100は、回転制御部370を用いて、回転が終了したか否かについて判定する。具体的には、CPU100は、プレイヤキャラクタデータ210の自プレイヤキャラクタの回転した角度等が所定角度以上になっていた場合、一回転したと判定して、Yesと判定する。それ以外の場合にはNoと判定する。
Yesの場合、CPU100は、回転終了として、処理をステップS213に進める。
Noの場合、CPU100は、まだ回転中として、処理をステップS215に進める。
【0069】
(ステップS213)
一回転が終了した場合、CPU100は、得点付与部340を用いて、バー付与得点状態算出処理を行う。
図8を参照して説明すると、各バー500は、各バーで回転した場合に得点を付与できる残回数を記憶している。つまり、所定回数/所定時間以内に回転した場合までは得点を付与するものの、それ以上回転しても得点を得ることはできないように構成している。図8の例では、4回までは得点が得られるものの、それ以上回転しても得点が得られないことになる。すなわち、画面上に表示されているバー500は有限なので、各プレイヤキャラクタは、残回数があるバー500をターゲットとして回転する必要がある。
CPU100は、バー回転データ230から、自プレイヤキャラクタが「属する」状態になっているバー500の「残回数」属性の値を読み出して主記憶部110に記憶する。その上で、バー500の「残回数」属性を減算する。なお、CPU100は、他プレイヤキャラクタが、連結して回転している場合でも、例えば、一回転につき1回だけ「残回数」属性の値を減らすようにする。
また、CPU100は、当該バー500の「残回数」属性の値を、バー位置指示オブジェクト510に、例えば、目盛りの減少、色の変化、明度の変化、といった変化をさせて描画させる。これにより、ユーザがバー500の残回数を容易に視認することができ、ゲーム性を向上させられる。
【0070】
(ステップS214)
次に、CPU100は、得点付与部340を用いて、得点付与処理を行う。
本実施形態においては、連結している人数が多ければ、連結した自プレイヤキャラクタ及び他プレイヤキャラクタが、全て、人数に応じた同一の得点を得ることができる連結数基準の得点付与処理を行う。
この連結数基準の得点付与処理の詳細については、後述する。
得点付与処理が終了した後、CPU100は、処理をステップS215に進める。
【0071】
(ステップS215)
ここで、CPU100は、強制離脱部360を用いて、自プレイヤキャラクタが、回転からの離脱の指示が動作設定されているか否かについて判定する。
Yes、すなわち、離脱の指示が動作設定されている場合、CPU100は、処理をステップS216に進める。
No、すなわち、離脱の指示がなく、回転中又は回転が終了して把持している状態の場合は、CPU100は、処理をステップS217に進める。
【0072】
(ステップS216)
CPU100は、回転の離脱の指示が動作設定されている場合、強制離脱部360を用いて、離脱処理を行う。
図9を参照して、この処理の詳細について説明する。
CPU100は、上述したように、離脱の指示があった場合には、プレイヤキャラクタをバー500から離れさせジャンプさせる「離脱」を行う。CPU100は、本実施形態の強制離脱部360により、回転中であっても、「強制離脱」によりバー500から離脱するように構成する。
この離脱の際には、連結の順番に従って、自プレイヤキャラクタと、自プレイヤキャラクタよりも後に連なって回転している他プレイヤキャラクタを強制的に離脱させるように構成することが好適である。これにより、内側の自プレイヤキャラクタは、外側の他プレイヤキャラクタと連なって回転して後述するように高い得点を得るか否かについて選択することができ、ゲームの戦略性を高めることができる。
【0073】
また、CPU100は、離脱の際に、複数のプレイヤキャラクタが連結しているほど、飛び出し距離が小さくなるように制御する。
これにより、複数のプレイヤキャラクタが連結している場合は、飛び出し位置が画面端に近い一番外側のプレイヤキャラクタが画面外に飛び出すことが少なくなる。
【0074】
また、CPU100は、離脱の際の回転角度により、ジャンプする方向を変化させるようにする。これにより、自プレイヤキャラクタはより柔軟に飛ぶ方向を変化させられ、又、他プレイヤキャラクタを意図した方向に押しやることができる。よって、ゲームの戦略性を高めることができる。
なお、逆に、CPU100は、離脱の際のジャンプの飛び出し範囲は、回転の段階に関わらず、上側120度の範囲に限定するように構成することも可能である。すなわち、この構成では、CPU100は、強制離脱の指示の動作設定を検知してから、ある程度の回転をさせ、その後、自プレイヤキャラクタと後の順番の他プレイヤキャラクタを離脱させる。これにより、回転の離脱の際に、あまり細かいタイミングの制御が必要となくなるため、ユーザが、回転の残回数があるバー500を選択して、他プレイヤキャラクタと協力しながらゲームのプレイを進めやすくなるという効果が得られる。
【0075】
また、回転操作と飛び出し操作のタイミング及び方向については、一番外側のプレイヤキャラクタが動作設定するような構成も可能である。このような構成の場合は、内側の連結された側のプレイヤキャラクタは、最後に連結したプレイヤキャラクタが離脱の動作設定をするまで、何もすることができない。これにより、連結して回転させるか、単独で回転させるかについて、より広い選択を与え、ゲーム性を高めることができる。
【0076】
(ステップS217)
ここで、CPU100は、自プレイヤキャラクタのコリジョン又は回転についての処理が終わった後、すべてのプレイヤキャラクタについて当該処理を行ったか否かについて判定する。
Yes、すなわち、全てのプレイヤキャラクタについての処理が終了した場合、CPU100は、コリジョン/回転処理を終了する。
No、すなわち、まだ他のプレイヤキャラクタについての処理を行う場合には、CPU100は、処理をステップS200に戻して処理を続ける。
以上により、コリジョン/回転処理を終了する。
【0077】
〈得点付与処理の詳細〉
次に、図10と図11とを参照して、本発明の実施の形態に係る得点付与処理の詳細について説明する。
本実施形態では、連なって回転すると、連結したプレイヤキャラクタの人数nに応じて、全員の付与得点(ポイント)がn倍になるよう制御する。
以下で、図10のフローチャートを参照して、各ステップの詳細について説明する。
【0078】
(ステップS301)
まず、CPU100は、得点付与部340を用いて、連結数得点加算処理を行う。
CPU100は、バー連結数算出処理にてオブジェクト数判定部330により取得された、同じバー500に連結して回転しているプレイヤキャラクタ610〜640の数を人数nとして取得する。
その上で、CPU100は、人数n×所定値のポイント(point、pt)を得点として算出する。たとえば、1体で回転する際に付与する所定値のポイントが10ポイントの場合、n×10(ポイント)の得点を、全員に付与するポイントとする。すなわち、CPU100は、1体が回転した場合は10ポイント、2体が連結して回転した場合は20ポイント、3体の場合は30ポイント、4体では40ポイント、といった得点を算出する。
【0079】
(ステップS302)
次に、CPU100は、得点付与部340を用いて、連結数基準得点付与処理を行う。
具体的には、CPU100は、上述の処理で算出された人数nに応じた得点を、プレイヤキャラクタデータ210の対応するプレイヤキャラクタの「スコア」属性に加算する。
ここで、途中から回転に加わり、すなわち連結して回転したプレイヤキャラクタであっても、同じ点数を付与することが好適である。
しかしながら、この際、CPU100は、「属する」状態になっているバーの残回数がない場合には、加算をしない。
また、CPU100は、回転が途中で、強制離脱されたキャラクタについても、得点を加算しないように構成できる。
なお、回転の途中で連結した場合、一回転が終了してからさらにもう一回転した時だけ、そのプレイヤキャラクタに得点を付与するように構成してもよい。また、上述したように、回転が途中でも得点を付与する構成も可能である。
以上により、得点付与処理を終了する。
【0080】
以上のように構成することで、以下のような効果を得ることができる。
本発明の実施の形態に係るゲーム装置10においては、バー500に「属する」状態になったプレイヤキャラクタの数に応じて、得点付与部340が得点を付与する。
この際、スコアが2〜4位のプレイヤキャラクタを操作するユーザは、スコア1位のプレイヤキャラクタには、連結しないようにゲームを行うようになる。よって、ゲームのプレイの進行によって、1位のプレイヤキャラクタが入れ替わるため、ユーザはどのプレイヤキャラクタに連結(協力)しないようにするかを常に確認しながらゲームを進めることとなる。
これにより、プレイヤが競争(対抗)と協力とを繰り返すことになるため、ゲームの戦略性が高まるという効果が得られる。よって、複数のプレイヤに対し、従来とは異なる興趣性の高いゲームを提供することができる。
【0081】
また、本発明の実施の形態に係るゲーム装置10は、プレイヤキャラクタがバー500に「属する」状態となった場合、内側から何番目であるか等の連結の順番を、順番判定部350により判定、算出する。
また、この順番に従って、回転状態において、自プレイヤキャラクタより連結の順番が大きい、すなわち外側の他プレイヤキャラクタを強制離脱部360により離脱させる。
これにより、ユーザは、自プレイヤキャラクタが回転中に他のプレイヤキャラクタが連結した場合でも、当該他プレイヤキャラクタのスコアの順位により、強制離脱するか回転を続けるかについて選択できる。よって、ユーザが競争(対抗)又は協力の戦略を使い分けることができ、ゲーム性を高めることができる。
【0082】
また、本実施形態の得点付与部340は、同じバー500に「属する」状態になったプレイヤキャラクタの人数nが多いほど多くの得点を、「属する」状態の全てのプレイヤキャラクタに付与する。
これにより、1体のプレイヤキャラクタが回転している際に、協力して回転してより多くの得点を得るというモチベーションを与えることができ、ゲーム性を高めることができる。
【0083】
また、本実施形態の得点付与部340は、バー500の残回数として、バー500を所定回数以上回転したり、所定時間が経過したりすると、得点を付与しないように構成する。
これにより、バー500の配置される本数がステージ毎に限られており、回転の残回数が設定されているバー500から得点を得て、総合得点であるスコアを最大限に上げるというゲーム目的のために、プレイヤが協力することを求めることができる。
【0084】
また、本実施形態の回転制御部370は、複数のプレイヤキャラクタが連結しているほど、回転の最高速度、最低速度を調整することができる。
また、本実施形態の回転制御部370は、複数のプレイヤキャラクタが連結しているほど、各プレイヤキャラクタの一度の回転速度加速操作による加速量を制限することができる。
これにより、連なって回転する際の、プレイヤキャラクタ同士の見栄えを良くすることができ、ユーザのプレイ意欲を惹起することができる。
また、プレイヤキャラクタ同士が協力して回転速度加速操作することによって、回転速度を急加速でき、ゲーム性を高めることができる。
【0085】
また、本実施形態の強制離脱部360は、複数のプレイヤキャラクタが連結しているほど、飛び出し距離が小さくなるように調整できる。
これにより、連なって回転していた場合に、外側のプレイヤキャラクタが遠くに飛ばされ過ぎるのを防ぐことができ、ゲームの操作性を向上させ、難易度を適切にすることができる。
【0086】
また、本実施形態の強制離脱部360は、連結の順番が小さいプレイヤキャラクタが、連結の順番が大きいプレイヤキャラクタに対して、バー500から離脱させるよう制御することができる。
これにより、他のプレイヤキャラクタと連なって回転する協力をさせたくない際に、プレイヤキャラクタが操作することができ、ゲームのプレイ時の自由度を向上させ、ゲーム性を高めることができる。また、ユーザの苛立ちを抑え、ゲームのプレイへの意欲を惹起させられる。
【0087】
<他の実施の形態>
ここで、図12と図13とを参照して、本発明の他の実施の形態について説明する。
本発明の他の実施の形態においては、ゲーム装置10(図1)と同じ構成のゲーム装置を用いて協力ゲームを行う。
この際、CPU100は、協力ゲーム処理、コリジョン/回転処理についても、図4、図5のフローチャートと同様に処理することができる。
しかしながら、本発明の別の実施の形態において、ステップS214(図5)の得点付与処理について、CPU100は、順番を基準とした異なる処理を行い、得点付与の方法を変更する。
以下で、この本発明の他の実施の形態に係る順番基準の得点付与処理について、図12のフローチャートを基に詳しく説明する。
【0088】
〈得点付与処理の詳細〉
(ステップS321)
まず、CPU100は、順番判定部350を用いて、同じバー500に「属する」状態になっているプレイヤキャラクタ毎に、連結の順番を算出する。
この連結の順番は、上述したのと同様に、一番内側、即ち最も早くバー500に「属する」状態になったプレイヤキャラクタを1番として、プレイヤキャラクタ毎に順次増加させる。
【0089】
(ステップS322)
次に、CPU100は、得点付与部340を用いて、順番基準得点付与処理を行う。
図13を参照して説明すると、本発明の他の実施の形態においては、外側のプレイヤキャラクタに高い得点を付与する。
具体的には、CPU100は、得点付与部340により、連結の順番毎に、基本となるポイントをn倍したポイントを、各プレイヤキャラクタのスコア属性に加算する。ここでは、例えば、連結の順位が1番目のプレイヤキャラクタに付与する得点が10ポイントであった場合、2番目のプレイヤキャラクタは20ポイント、3番目は30ポイント、4番目は40ポイントといった点数を付与する。
つまり、把持して回転を始めたプレイヤキャラクタより外側で連なって回転した方がより多くのポイントを得られる。
これにより、自プレイヤキャラクタと他プレイヤキャラクタの位置関係と、協力関係とがより複雑になり、戦略性を高めることができる。
【0090】
なお、上記実施の形態の構成及び動作は例であって、本発明の趣旨を逸脱しない範囲で適宜変更して実行することができることは言うまでもない。
【産業上の利用可能性】
【0091】
本発明のゲームプログラムは、プレイ中に競争させるだけでなく協力させるように構成され、ゲーム性を高められるため、各種ゲーム装置に適用でき、産業上利用可能性がある。
【符号の説明】
【0092】
10 ゲーム装置
100 CPU
110 主記憶部
120 補助記憶部
130 BIOS
140 ペリフェラルI/F
150 バスアービタ
160 グラフィックプロセッサ
162 ジオメトリ部
164 レンダリング部
170 グラフィックメモリ
175 ビデオBIOS
180 オーディオプロセッサ
190 オーディオメモリ
200 通信I/F
210 プレイヤキャラクタデータ
220 背景他オブジェクトデータ
230 バー回転データ
300 協力ゲーム部
310 ゲーム進行部
320 オブジェクト移動部
330 オブジェクト数判定部
340 得点付与部
350 順番判定部
360 強制離脱部
370 回転制御部
380 キャラクタ属性データ部
400 画面例
500 バー
510 バー位置指示オブジェクト
520 バーラインオブジェクト
600、610、620、630、640 プレイヤキャラクタ
700、710、720 検索範囲



【特許請求の範囲】
【請求項1】
仮想空間内で複数のプレイヤキャラクタが移動可能であり、ゲーム終了時において前記プレイヤキャラクタに付与された総得点を競うゲームをコンピュータに実行させるゲームプログラムにおいて、
前記コンピュータを、
前記プレイヤキャラクタ、及び前記プレイヤキャラクタに付与された総得点を画面表示させるゲーム進行手段、
前記プレイヤキャラクタに対応する操作信号に基づき、該プレイヤキャラクタを前記仮想空間内で移動させる移動手段、
前記仮想空間内の所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタの数を算出するオブジェクト数判定手段、
前記所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタに対して、算出された前記プレイヤキャラクタの数に応じて得点を付与する付与手段として機能させる
ことを特徴とするゲーム装置の制御プログラム。
【請求項2】
前記コンピュータを、
前記プレイヤキャラクタが前記所定エリア又は所定オブジェクトに属した順番を算出する順番判定手段、
前記順番が早いプレイヤキャラクタに対応する前記操作信号によって、該プレイヤキャラクタが前記所定エリア又は所定オブジェクトから離脱した場合、前記順番が遅いプレイヤキャラクタを、当該所定エリア又は所定オブジェクトから離脱させる強制離脱手段として機能させる
ことを特徴とする請求項1に記載のゲーム装置の制御プログラム。
【請求項3】
前記付与手段は、前記所定エリア又は所定オブジェクトに属した前記プレイヤキャラクタの数が多いほど、多くの得点を該プレイヤキャラクタそれぞれに付与する
ことを特徴とする請求項1又は2に記載のゲーム装置の制御プログラム。
【請求項4】
前記付与手段は、設定された回数又は時間に従って、前記プレイヤキャラクタに得点を付与する
ことを特徴とする請求項1乃至3のいずれか1項に記載のゲーム装置の制御プログラム。
【請求項5】
前記コンピュータを、
前記所定エリア又は所定オブジェクトに属した順番が最も遅いプレイヤキャラクタに対応する操作信号に基づき、当該所定エリア又は所定オブジェクトに属する他のプレイヤキャラクタが当該所定エリアから離脱する方向を決定させる移動方向決定手段として機能させる
ことを特徴とする請求項1乃至4のいずれか1項に記載のゲーム装置の制御プログラム。
【請求項6】
前記コンピュータを、
前記所定エリア又は所定オブジェクトに属した前記プレイヤキャラクタの数を基に、回転の最高速度又は最低速度を調整し、回転速度加速の指示を検知した際の加速量を制限する回転制御手段として機能させ、
前記強制離脱手段は、前記所定エリア又は所定オブジェクトに属した前記プレイヤキャラクタの数に従って、飛び出す距離を小さくするように制御する
ことを特徴とする請求項1乃至5のいずれか1項に記載のゲーム装置の制御プログラム。
【請求項7】
前記付与手段は、前記所定エリア又は所定オブジェクトに属した前記プレイヤキャラクタが一回転することで、該プレイヤキャラクタに得点を付与する
ことを特徴とする請求項1乃至6のいずれか1項に記載のゲーム装置の制御プログラム。
【請求項8】
仮想空間内で複数のプレイヤキャラクタが移動可能であり、ゲーム終了時において前記プレイヤキャラクタに付与された総得点を競うゲームをコンピュータに実行させるゲームプログラムを記録したコンピュータ読み取り可能な記録媒体において、
前記コンピュータを、
前記プレイヤキャラクタ、及び前記プレイヤキャラクタに付与された総得点を画面表示させるゲーム進行手段、
前記プレイヤキャラクタに対応する操作信号に基づき、該プレイヤキャラクタを前記仮想空間内で移動させる移動手段、
前記仮想空間内の所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタの数を算出するオブジェクト数判定手段、
前記所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタに対して、算出された前記プレイヤキャラクタの数に応じて得点を付与する付与手段として機能させるためのゲーム装置の制御プログラムを記録した
ことを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項9】
仮想空間内で複数のプレイヤキャラクタが移動可能であり、ゲーム終了時において前記プレイヤキャラクタに付与された総得点を競うゲームを実行するゲーム装置において、
前記プレイヤキャラクタ、及び前記プレイヤキャラクタに付与された総得点を画面表示させるゲーム進行手段と、
前記プレイヤキャラクタに対応する操作信号に基づき、該プレイヤキャラクタを前記仮想空間内で移動させる移動手段と、
前記仮想空間内の所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタの数を算出するオブジェクト数判定手段と、
前記所定エリア又は所定オブジェクトに属する前記プレイヤキャラクタに対して、算出された前記プレイヤキャラクタの数に応じて得点を付与する付与手段とを備える
ことを特徴とするゲーム装置。



【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2012−249860(P2012−249860A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−125523(P2011−125523)
【出願日】平成23年6月3日(2011.6.3)
【出願人】(000132471)株式会社セガ (811)
【Fターム(参考)】