(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
[1.シミュレーション装置のハードウェア構成]
以下、本発明の実施形態の一例について図面に基づき詳細に説明する。本実施形態では、本発明に係るシミュレーション装置(コンピュータ)を、ゲーム装置を用いて実現する場合を説明する。ゲーム装置は、例えば、家庭用・業務用ゲーム機(据置型ゲーム機)、携帯ゲーム機、携帯電話機(スマートフォンを含む)、携帯情報端末(タブレット型端末)又はパーソナルコンピュータ等によって実現される。ここでは、実施形態に係るゲーム装置を家庭用ゲーム機によって実現する場合について説明する。
【0011】
図1は、本発明の実施形態に係るゲーム装置のハードウェア構成を示す図である。
図1に示すゲーム装置10は、表示部32及び音声出力部34に接続される。表示部32は、例えば、家庭用テレビ受像機又は液晶ディスプレイなどである。音声出力部34は、例えば、家庭用テレビ受像機に内蔵されたスピーカ又はヘッドホンなどである。
【0012】
ゲーム装置10は、公知のコンピュータゲームシステムである。ゲーム装置10は、バス12、制御部14、主記憶16、画像処理部18、入出力処理部20、音声処理部22、光ディスク再生部24、ハードディスク26、通信インタフェース28、及びコントローラ30を含む。
【0013】
制御部14は、一又は複数の制御部(例えば、CPU等)を含む。制御部14は、図示しないROMに格納されるオペレーティングシステムや、光ディスク36から読み出されるプログラムに基づいて、ゲーム装置10の各部を制御する処理や情報処理を実行する。
【0014】
主記憶16は、例えば、RAMを含む。光ディスク36から読み出されたプログラム及びデータは、主記憶16に書き込まれる。主記憶16は、制御部14の作業用メモリとしても用いられる。バス12は、アドレス及びデータをゲーム装置10の各部でやり取りするためのものである。
【0015】
画像処理部18は、VRAMを含む。画像処理部18は、制御部14から供給される画像データに基づいてVRAM上にゲーム画面を描画する。VRAM上に描画されたゲーム画面は、ビデオ信号に変換されて所定のタイミングで表示部32に出力される。
【0016】
入出力処理部20は、制御部14が、音声処理部22、光ディスク再生部24、ハードディスク26、通信インタフェース28、及びコントローラ30にアクセスするためのインタフェースである。
【0017】
音声処理部22は、サウンドバッファを含む。音声処理部22は、光ディスク36からサウンドバッファに読み出された音声データを、音声出力部34から出力する。
【0018】
通信インタフェース28は、インターネットなどの通信ネットワークに、ゲーム装置10を有線又は無線接続するためのインタフェースである。
【0019】
光ディスク再生部24は、光ディスク36(情報記憶媒体)に記録されたプログラムやデータを読み取る。本実施形態においては、プログラムやデータをゲーム装置10に供給するために、光ディスク36が用いられる場合を説明するが、メモリカード等の他の情報記憶媒体が用いられて、プログラムやデータがゲーム装置10に対して供給されるようにしてもよい。他にも例えば、通信ネットワークを介して遠隔地からプログラムやデータがゲーム装置10に供給されるようにしてもよい。
【0020】
ハードディスク26は、一般的なハードディスク装置(補助記憶装置)である。なお、本実施形態において光ディスク36に記憶されるものとして説明するプログラムやデータは、ハードディスク26に記憶されていてもよい。
【0021】
コントローラ30は、ユーザによる各種ゲーム操作を受け付けるための汎用操作手段である。ゲーム装置10には、一又は複数のコントローラ30が有線又は無線接続される。入出力処理部20は、一定周期毎(例えば、1/60秒毎)にコントローラ30の各操作部材の状態をスキャンする。このスキャン結果を表す操作信号は、バス12を介して制御部14に入力される。制御部14は、操作信号に基づいてユーザのゲーム操作を特定する。なお、本実施形態において、ユーザがコントローラ30から行う操作は、他の種々の操作に置き換えてよい。例えば、音声を検出する音声検出装置(例えば、マイク)をゲーム装置10に接続しておき、音声解析を行うことにより各種操作が行われるようにしてもよい。また、コントローラ30は、有線又は無線で外部から接続されるものの他、ゲーム装置10とコントローラ30が一体的なハウジングを形成していてもよい。
【0022】
[2.ゲーム装置が実行するシミュレーション]
ゲーム装置10は、光ディスク36から読み出したゲームプログラムを実行することによって、複数のチーム同士で対戦するスポーツの試合における選手の動作をシミュレートするゲームを実行する。ここでのスポーツの試合とは、現実世界で行われる各種競技を含む意味である。例えば、ゲーム装置10は、選手が移動物体(例えば、ボールやパック等)を移動目標位置(例えば、ゴール)に移動させることを目指すスポーツに関するゲームを実行する。
【0023】
特に、本実施形態では、ユーザが操作するチーム(以降、「ユーザチーム」という。)と、対戦相手(コンピュータ又は他のユーザ)が操作するチーム(以降、「対戦相手チーム」という。)と、の間でサッカーの試合を行うサッカーゲームが実行される。例えば、当該サッカーゲームでは、現実世界のサッカーチームに対応するチーム、及び、現実世界のサッカー選手に対応するゲームキャラクタが用いられる。各ゲームキャラクタは、現実世界のサッカーチームを模した複数のチームの何れかに所属することになる。ゲーム装置10がサッカーゲームを開始すると、ゲーム空間が主記憶16に構築される。
【0024】
図2は、ゲーム空間の一例を示す図である。
図2に示すゲーム空間40は、互いに直交する三つの座標軸(Xw軸、Yw軸、及びZw軸)が設定された仮想的な3次元空間である。
図2に示すように、ゲーム空間40には、サッカーフィールドを表すオブジェクトであるフィールド42(他のオブジェクトが配置される平面)が配置される。
【0025】
フィールド42上には、サッカーのゴールを表すオブジェクトであるゴール44が配置され、2本のゴールライン46及び2本のタッチライン48が表されている。ゴールライン46及びタッチライン48によって囲まれたピッチ50及び当該ピッチ50の周囲(ゴールライン46又はタッチライン48に接するピッチ50外の所定領域)において、試合が行われる。
【0026】
また、フィールド42上には、サッカーボール(移動物体)を表すオブジェクトであるボール52と、ユーザチームに所属するサッカー選手を表すオブジェクトであるキャラクタ54と、対戦相手チームに所属するサッカー選手を表すオブジェクトであるキャラクタ56と、が配置される。各オブジェクトの位置は、例えば、ワールド座標系(Xw−Yw−Zw座標系)の3次元座標で特定される。なお、
図2では省略されているが、フィールド42上には、ユーザチームに所属する11体のキャラクタ54と、対戦相手チームに所属する11体のキャラクタ56と、が配置される。
【0027】
また、キャラクタ54(56)とボール52とが近づくと、所定条件の下、当該キャラクタ54(56)とボール52とが関連づけられる。この場合、キャラクタ54(56)の移動動作は、ドリブル動作になる。以下では、キャラクタ54(56)にボール52が関連づけられた状態のことを「キャラクタ54(56)がボール52を保持している」と記載する。ボール52を保持しているキャラクタ54(56)は、所与の動作(例えば、パス動作又はシュート動作)を行うことにより、ボール52を移動させる。キャラクタ54(56)がボール52を移動させてゴール44内にボール52が移動すると、得点イベントが発生する。
【0028】
また、ゲーム空間40には、仮想カメラ58(視点)が設定される。ゲーム空間40を仮想カメラ58から見た様子を表すゲーム画面が、表示部32に表示される。ゲーム画面は、ゲーム空間40に配置された各オブジェクトの頂点座標が、所定の座標変換演算を用いてワールド座標系からスクリーン座標系に座標変換されることによって生成される。
【0029】
本実施形態では、ゲーム空間40に配置されたキャラクタ54(56)のうち、ユーザチームに所属するキャラクタ54のうちの何れかが、ユーザの操作対象(プレイヤキャラクタ)に設定される。ユーザの操作対象は、ユーザの操作に基づいて動作する。例えば、ユーザの操作対象は、ユーザが指示した方向に移動したり、ユーザが指示した種類の動作(シュート動作やパス動作等)をしたりする。
【0030】
ユーザの操作対象以外のキャラクタ54(56)は、コンピュータの制御下に置かれる。以降では、ユーザの操作対象以外のキャラクタ54(56)を、ノンプレイヤキャラクタともいう。本実施形態では、ノンプレイヤキャラクタを動作させるために、2種類の制御モードが用意されている。
【0031】
第1のモードでは、ゲーム制作者が予め定めた行動アルゴリズム(行動ルール)に基づいて、ノンプレイヤキャラクタが動作する。以降、この第1のモードを、シミュレーションモードという。シミュレーションモードでは、公知の種々の行動アルゴリズムを適用可能である。例えば、シミュレーションモードでは、ゲーム制作者等により予めプログラミングされたアルゴリズム(又は、動作を定義したデータ)や一又は複数のランダム要素に基づいて、ノンプレイヤキャラクタの動作が決定される。
【0032】
第2のモードでは、現実世界で行われたスポーツの試合において、選手が実際に行った動作を定義したデータに基づいて、ノンプレイヤキャラクタが動作する。以降、この第2のモードを、イミテーションモードという。当該データには、例えば、現実世界でのサッカーの試合において得点イベントが発生した際の選手の動作や、あるチームが失点しそうな状況で失点を防いだ際の選手の動作が定義されている。なお、イミテーションモードでは、ノンプレイヤキャラクタは、上記データに定義された動作を完全に再現しなければならない訳ではない。即ち、ノンプレイヤキャラクタは、あくまで上記データに定義された動作に基づいて動作すればよく、現実世界で選手が実際に行った動作と、ノンプレイヤキャラクタが行う動作と、には一定範囲のずれが許容される。イミテーションモードに移行した場合、ユーザは、現実世界で起きたスポーツの試合でのイベントを再現することを目指したり、当該イベントよりも良い結果を得ることを目指したりする。
【0033】
本実施形態では、ノンプレイヤキャラクタは、原則として、シミュレーションモードで動作する。そして、実行中のゲームの状況が現実世界の試合の状況に類似する場合、ノンプレイヤキャラクタのうちの全部又は一部が、イミテーションモードでの制御に切り替わる。なお、一部のノンプレイヤキャラクタのみがイミテーションモードで動作する場合、他のノンプレイヤキャラクタは、シミュレーションモードで動作する。即ち、ゲーム空間40では、シミュレーションモードで動作するノンプレイヤキャラクタと、イミテーションモードで動作するノンプレイヤキャラクタと、が共存する。
【0034】
イミテーションモードで動作するノンプレイヤキャラクタは、所定条件のもとで、シミュレーションモードでの制御に戻る。例えば、現実の選手が実際に行った一連の動作をノンプレイヤキャラクタがやり終えた場合、実行中のゲームの状況が現実世界の試合の状況に類似しなくなった場合、及び、ユーザの操作対象が所定動作を行った場合には、イミテーションモードで動作していたノンプレイヤキャラクタが、シミュレーションモードでの動作制御に戻る。その後、ゲームの状況が再び現実世界の試合の状況に類似した場合、ノンプレイヤキャラクタのうちの全部又は一部が、イミテーションモードで動作する。以降、試合が終了するまで、ノンプレイヤキャラクタの制御は、シミュレーションモードとイミテーションモードとで切り替わる。
【0035】
上記のように、本実施形態のゲーム装置10は、実行中のゲームの状況に応じて、ノンプレイヤキャラクタの制御を、シミュレーションモードとイミテーションモードとで切り替えることで、ノンプレイヤキャラクタの動作制御の高度化を実現する構成になっている。以下、本技術について、詳細に説明する。
【0036】
[3.ゲーム装置において実現される機能]
図3は、ゲーム装置10で実現される機能のうち、本発明に関連する機能を示す機能ブロック図である。
図3に示すように、ゲーム装置10は、ゲームプログラムを実行することによって、ゲームデータ記憶部60、取得部62、第1制御部64、判定部66、第2制御部68、及び第3制御部70を実現する。
【0037】
ゲームデータ記憶部60は、主記憶16、ハードディスク26、及び光ディスク36を主として実現され、他の各機能は、制御部14を主として実現される。なお、ゲーム装置10において必須の機能は、取得部62、第1制御部64、判定部66、及び第2制御部68であり、他の機能は省略するようにしてもよい。
【0038】
[3−1.ゲームデータ記憶部]
ゲームデータ記憶部60は、スポーツの試合をシミュレートするために必要な各種データを記憶する。ここでは、ゲームデータ記憶部60が記憶するデータの一例として、シナリオデータベース及びゲーム状況データを説明する。
【0039】
[シナリオデータベース]
図4は、シナリオデータベースのデータ格納例を示す図である。
図4に示すように、シナリオデータベースは、現実世界において選手が実際に行った動作を定義するデータの集まりである。ここでは、シナリオデータベースは、現実世界で行われたスポーツの試合の状況と、当該試合での現実選手(例えば、現実世界のサッカー選手)の動作と、を関連付けたデータを複数含む。以降では、シナリオデータベースに格納される各データ単位(レコード)のことを、シナリオともいう。
【0040】
各シナリオは、状況と動作との組み合わせからなる。例えば、各シナリオには、現実世界での試合の状況と各選手の動作との組み合わせが時系列的に格納される。より具体的には、各シナリオは、フィールド上の各選手及びボールの状態が時系列的に格納され、例えば、下記の項目を含む。なお、各シナリオが定義する動作の期間(即ち、シナリオが何秒間の動作を定義しているか)は、シナリオごとに共通であってもよいし、異なっていてもよい。即ち、あるシナリオは、現実世界の試合における5秒間の動作を示し、他のシナリオは、現実世界の試合における10秒間の動作を示すようにしてもよい。
(1)現実世界での試合におけるボールの状態(例えば、位置、方向、及び移動速度)
(2)現実世界での試合における選手の状態(例えば、位置、向き、移動速度、姿勢(ポーズ)、行動、及びその他の状態(例えば、選手が横たわっているか、飛び上がっているか等))
(3)現実世界での試合時間(試合開始又は再開からの経過時間)、及び、その時点での各チームの得点
【0041】
各シナリオに格納される位置や方向は、ワールド座標系の座標又はベクトルで定義されている。例えば、現実世界におけるピッチ内での位置や方向が、ゲーム空間40におけるピッチ50内での位置や方向に対応するように、各シナリオが定義されている。即ち、各シナリオが示すピッチ50上でのボール52やキャラクタ54(56)の位置や方向と、現実世界のピッチ上での実際のボールや選手の位置や方向と、は略一致している。このようにシナリオを定義しておくことで、比較的簡易な処理で、現実世界の選手が移動した位置や方向に基づいてノンプレイヤキャラクタを動作させることができる。
【0042】
各シナリオに格納される移動速度も同様に、現実世界でのボールや選手の移動速度に対応するゲーム空間40内の速度が定義されている。また、ゲームにおいてキャラクタ54(56)がとることができる複数種類の姿勢が用意されており、現実世界において実際に選手がとった姿勢が、これら複数種類の姿勢の何れに属するかを示す情報が、選手の姿勢を示す情報として、各シナリオに格納される。このようにシナリオを定義しておくことで、比較的簡易な処理で、現実世界の選手の移動速度や姿勢に基づいてノンプレイヤキャラクタを動作させることができる。
【0043】
同様に、ゲームにおいてキャラクタ54(56)が行うことができる複数種類の行動が用意されており、現実世界において実際に選手がした行動が、これら複数種類の行動の何れに属するかを示す情報が、選手の行動を示す情報として、各シナリオに格納される。更に、ゲームにおいてキャラクタ54(56)がとることができる複数種類の状態が用意されており、現実世界における選手の状態が、これら複数種類の状態の何れに属するかを示す情報が、選手の状態を示す情報として、各シナリオに格納される。このようにシナリオを定義しておくことで、比較的簡易な処理で、現実世界の選手が行った行動に基づいてノンプレイヤキャラクタを動作させることができる。
【0044】
また、本実施形態では、各シナリオには、当該シナリオで制御するノンプレイヤキャラクタの数が定義されている。更に、ここでは、各シナリオには、当該シナリオに基づいたイミテーションモードで制御対象とするチームを識別する情報と、当該チームの所属選手のうちで制御対象とするキャラクタ54(56)を識別する情報と、が格納されている。このようにシナリオを定義しておくことで、現実世界の選手に対応するノンプレイヤキャラクタを、当該選手が実際に行った動作に基づいて制御することができる。
【0045】
即ち、各シナリオには、当該シナリオに基づいたイミテーションモードで制御対象とするキャラクタ54(56)ごとに、当該キャラクタ54(56)に対応する現実世界の選手が試合で実際に行った動作が時系列的に格納されている。別の言い方をすれば、各シナリオには、当該シナリオに基づいたイミテーションモードで動作させるべきノンプレイヤキャラクタを識別する情報が格納されており、当該ノンプレイヤキャラクタごとに、ピッチ50上ですべき動作(即ち、現実世界で選手が行った動作)が、時系列で格納されている。
【0046】
シナリオデータベースに格納される各シナリオは、設定者(例えば、ゲーム制作者、データ提供者、ユーザ等)の操作により内容が定められてもよいし、設定者が設定した内容に基づいて、自動的に生成されるようにしてもよい。例えば、設定者は、現実世界における各選手やボールの位置及び向きを時系列的に示す情報のみを手入力で行い、当該情報の時系列的な変化から各選手の姿勢や行動を解析するアルゴリズムを用いて、各シナリオが生成されるようにしてもよい。
【0047】
なお、シナリオデータベースの各シナリオに格納される項目は、上記の例に限られない。各シナリオには、現実世界でのスポーツの試合の状況と各選手の動作との組み合わせが格納されるようにすればよい。例えば、各シナリオには、ボールを保持している選手を識別する情報や、各チームに設定されているフォーメーションや各選手のポジションを識別する情報が格納されているようにしてもよい。他にも例えば、試合の戦況を示す種々の情報(例えば、ボール支配率や選手の走行距離)等が格納されていてもよい。
【0048】
[ゲーム状況データ]
ゲーム状況データは、実行中のゲームの状況(即ち、シミュレート中の試合の状況)を示す。例えば、下記のようなパラメータが、ゲーム状況データに格納される。ゲーム状況データは、ゲームの進行に応じて適宜更新される。
(1)ユーザの操作対象を識別する情報
(2)各ノンプレイヤキャラクタが、シミュレーションモード及びイミテーションモードの何れで動作しているかを識別する情報
(3)ボール52を保持するキャラクタ54(56)を識別する情報
(4)ボール52の現在の状態(例えば、ボール52の位置、移動方向、及び移動速度)
(5)キャラクタ54(56)の現在の状態(例えば、キャラクタ54(56)の位置、移動方向、移動速度、姿勢、行動、及びその他の状態)
(6)実行中の試合の戦況(例えば、両チームの得点、試合の経過時間)
【0049】
なお、ゲーム状況データに格納されるデータは、上記の例に限られない。ゲーム状況データは、ゲーム空間40の現在の状況を示すデータが格納されるようにすればよく、仮想カメラ58の現在の位置及び視線方向、各チームに設定されている作戦やフォーメーション、及び、各キャラクタ54(56)に設定された現在のポジションが、ゲーム状況データに格納されているようにしてもよい。
【0050】
また、ゲームデータ記憶部60に記憶されるデータは、上記の例に限られない。ゲームデータ記憶部60は、ゲームを実行するために必要なデータを記憶すればよい。例えば、各キャラクタ54(56)に関するデータ(例えば、選手を固有に識別する情報や選手の能力パラメータ等)や、各チームに設定可能なフォーメーションを示すデータが記憶されているようにしてもよい。
【0051】
[3−2.取得部]
取得部62は、現実世界で行われたスポーツの試合の状況を示す状況と、当該試合での現実選手の動作と、を関連付けたデータ(例えば、シナリオ)を記憶する記憶手段(例えば、ゲームデータ記憶部60)の記憶内容を取得する。取得部62は、ゲームデータ記憶部60に記憶されたシナリオデータベースに格納された各シナリオを取得する。
【0052】
[3−3.第1制御部]
第1制御部64は、架空世界に配置された複数の架空選手(例えば、複数のチームの何れかに所属するノンプレイヤキャラクタ)のうち、ユーザの操作対象以外の架空選手の動作をシミュレートする。ここでは、第1制御部64は、ゲーム状況データに格納された各ノンプレイヤキャラクタの現在の状態と、所与の行動アルゴリズムと、に基づいて、各ノンプレイヤキャラクタの動作をシミュレートする。
【0053】
例えば、第1制御部64は、各ノンプレイヤキャラクタ及びボール52の現在の状態を示すパラメータを、行動アルゴリズムに定義された数式に代入することによって、各ノンプレイヤキャラクタがすべき動作を決定する。より具体的には、例えば、第1制御部64は、ボール52の状態を示すパラメータ(例えば、位置、移動方向、及び移動速度)と、各ノンプレイヤキャラクタの状態を示すパラメータ(例えば、位置、移動方向、移動速度、及びポジション)と、を行動アルゴリズムの数式に代入することで、複数種類の動作のうちで、各ノンプレイヤキャラクタがすべき動作(例えば、移動すべき位置又は方向)を計算する。
【0054】
別の言い方をすれば、第1制御部64は、シナリオデータベースに格納されたシナリオに基づかずに、各ノンプレイヤキャラクタの動作をシミュレートする。なお、第1制御部64は、一又は複数のランダム要素に基づいて、各ノンプレイヤキャラクタの動作を変化させるようにしてもよい。即ち、例えば、第1制御部64は、各ノンプレイヤキャラクタに、所与の行動アルゴリズムと、一又は複数の乱数と、に基づいて定まる動作をさせるようにしてもよい。
【0055】
本実施形態では、第1制御部64は、架空世界の試合の状況(例えば、ゲーム状況データが示す状況)とシナリオが示す状況とが類似すると判定された場合、ユーザの操作対象以外の複数の架空選手(例えば、ノンプレイヤキャラクタ)のうち、第2制御部68の制御対象(即ち、イミテーションモードで動作するノンプレイヤキャラクタ)以外の架空選手を動作させる。即ち、第1制御部64は、キャラクタ54(56)のうちで、ユーザの操作対象及び第2制御部68の制御対象以外を、上記のようにして動作させる。
【0056】
なお、第1制御部64がノンプレイヤキャラクタを移動させる方法は、上記の例に限られない。第1制御部64による動作制御は、公知の種々のシミュレーション方法を適用可能である。例えば、第1制御部64は、各ノンプレイヤキャラクタのポジションや能力等に基づいて動作を決定するようにしてもよいし、試合の戦況に応じてノンプレイヤキャラクタの動作を決定するようにしてもよい。
【0057】
[3−4.判定部]
判定部66は、シミュレーション中の架空世界の試合の状況(即ち、実行中のゲームの状況)と、シナリオが示す状況(例えば、複数のシナリオのそれぞれが示す状況)と、が類似するか否かを判定する。判定部66は、ゲーム状況データが示す状況と、各シナリオが示す状況と、のずれが基準以上であるか否かを判定する。
【0058】
図5は、ゲーム状況データが示す状況とシナリオの状況とが類似する場合を示す図である。
図5に示すように、例えば、ピッチ50上でのボール52及びキャラクタ54(56)の位置関係と、シナリオに格納されたボール及び選手の位置関係(
図5では、ピッチ50A、ボール52A及びキャラクタ54A(56A)と記載する)と、のずれが比較的少ない場合に、判定部66は、これらの状況が類似すると判定する。
【0059】
ここでは、判定部66は、各シナリオでの制御対象となるノンプレイヤキャラクタごとに、当該ノンプレイヤキャラクタに対応する状況の類似度(選手状況類似度)を算出する。この点、ピッチ全体を考えると状況があまり似ていなくても、ある特定のノンプレイヤキャラクタ(例えば、ボールを保持するノンプレイヤキャラクタ)を基準に状況を比較すると、状況が似ることがある。特に、本実施形態のようなゲームでは、例えば、ボール52の近くにいるノンプレイヤキャラクタの動作は試合の状況変化に強く影響し、ボール52から離れているノンプレイヤキャラクタの動作は試合の状況変化にあまり影響しない。このため、ある特定のノンプレイヤキャラクタに対応する選手状況類似度を算出することで、試合の状況の類似度を的確に算出することができる。
【0060】
具体的には、各シナリオには、当該シナリオでの制御対象となるノンプレイヤキャラクタに関するm種類(mは自然数。ここでは、2以上とする。)のパラメータが含まれている。判定部66は、各シナリオでの制御対象となるノンプレイヤキャラクタに関するm種類のパラメータと、ゲーム状況データが示す当該m種類のパラメータと、に基づいて、選手状況類似度を算出する。当該選手状況類似度は、これらm種類のパラメータのずれ具合を示す。
【0061】
例えば、判定部66は、これらm種類のパラメータを、予め定められた数式に代入することで選手状況類似度を算出する。この数式は、ノンプレイヤキャラクタごとに異なっていてもよいし、共通であってもよい。ここでは、判定部66は、各シナリオに格納されたm種類のパラメータをm次元のベクトルとみなし、ゲーム状況データが示すm種類のパラメータもm次元のベクトルとみなす。判定部66は、これら2つのベクトルの方向関係に基づいて、選手状況類似度を算出する。判定部66は、これら2つのベクトルのなす角度に関する数値を、選手状況類似度として算出する。
【0062】
そして、判定部66は、シナリオでの制御対象となる各ノンプレイヤキャラクタの選手状況類似度に基づいて、総合的な類似度(以降、単に類似度という。)を算出する。例えば、判定部66は、各ノンプレイヤキャラクタの選手状況類似度の加重合計を算出することで、類似度を算出する。判定部66は、類似度が基準値未満である場合は状況が類似しないと判定し、類似度が基準値以上である場合は状況が類似すると判定する。なお、基準値は、シナリオごとに異なる値を用いてもよいし、共通の値を用いてもよい。例えば、現実世界の選手の位置関係とキャラクタ54(56)の位置関係とが略一致していなければ、ゲーム空間40で再現することが難しいシナリオの場合は、この基準値を比較的高く設定しておくようにしてもよい。
【0063】
なお、判定部66による判定方法は、上記の例に限られない。例えば、判定部66が類似度を算出する際に、パラメータに応じて重み付けが行われるようにしてもよい。例えば、本実施形態のようなゲームでは、先述のように、ボール52の近くにいるキャラクタ54(56)の状態が試合の状況変化に強く影響するため、判定部66は、ボール52の状態を示すパラメータ、及び、ボール52を保持するキャラクタ54(56)の状態を示すパラメータに乗算する係数を、他のパラメータの係数よりも大きくすることで、ボール52の状態、及び、ボール52を保持するキャラクタ54(56)を、より重要視して選手状況類似度を算出するようにしてもよい。また、選手状況類似度を算出する際に、各ノンプレイヤキャラクタにマーク相手の設定があるか否か、ボール52を保持するノンプレイヤキャラクタが可能なパスに関する情報、ピッチ50上の空きスペースに関する情報、試合時間やスコア、ポジション、能力(スキル)、チーム、フォーメーションに関する情報を用いるようにしてもよい。更に、判定部66が、選手状況類似度を加重合計する際に、ノンプレイヤキャラクタに応じて重み付けが行われるようにしてもよい。例えば、判定部66は、ボール52の比較的近くにいるノンプレイヤキャラクタの選手状況類似度の係数を比較的高くするようにしてもよい。
【0064】
[3−5.第2制御部]
第2制御部68は、架空世界の試合の状況(例えば、実行中のゲームの状況)とシナリオが示す状況(例えば、複数のシナリオのうちの少なくとも一つが示す状況)とが類似すると判定された場合、ユーザの操作対象以外の架空選手(例えば、複数のチームのそれぞれに所属する複数のノンプレイヤキャラクタのうちの一部)を、第1制御部64による制御に代えて、当該状況に関連付けられた動作(例えば、複数のシナリオのうち、類似すると判定されたシナリオが示す動作)に基づいて制御する。
【0065】
例えば、第2制御部68は、シナリオデータベースに格納された各シナリオのうち、判定部66が算出した類似度が基準値以上のシナリオに基づいて、ノンプレイヤキャラクタを動作させる。即ち、第2制御部68は、一又は複数のノンプレイヤキャラクタを、シミュレーションモードでの動作制御から、類似度が基準以上のシナリオに基づくイミテーションモードでの動作制御に切り替える。
【0066】
本実施形態では、第2制御部68は、架空世界の試合の状況(例えば、実行中のゲームの状況)とシナリオが示す状況とが類似すると判定された場合、当該シナリオに基づいて、ユーザの操作対象以外の複数の架空選手のうちから、当該第2制御部68の制御対象(例えば、複数のノンプレイヤキャラクタからなるキャラクタグループ)を選出する。第2制御部68の制御対象となるノンプレイヤキャラクタは、1体であってもよいし、複数体であってもよい。また、全てのノンプレイヤキャラクタが第2制御部68の制御対象となってもよいし、一部のノンプレイヤキャラクタのみが第2制御部68の制御対象となってもよい。また例えば、本実施形態のように選手状況類似度を算出する場合には、選手状況類似度が基準値以上となるノンプレイヤキャラクタのみが第2制御部68の制御対象となってもよい。
【0067】
ここでは、各シナリオには、当該シナリオに基づいて動作させるべきキャラクタ54(56)が定義されているので、第2制御部68は、各チームのノンプレイヤキャラクタのうち、各シナリオが示すキャラクタ54(56)を制御対象に選出する。第2制御部68は、当該選出されたキャラクタ54(56)を、第1制御部64による制御に代えて制御することになる。
【0068】
図6は、イミテーションモードにおける動作制御を説明するための図である。
図6では、ボール52を保持するキャラクタ54が他のキャラクタ54にパスをする動作と、対戦相手チームのキャラクタ56がボール52を奪おうとする動作と、がシナリオに定義されているものとする。この場合、シナリオに定義されたパスの方向V
0と、キャラクタ54がボール52をパスする方向V
1と、のずれが基準以内になるように、第2制御部68は、ボール52を保持するキャラクタ54にパス動作をさせる。また、シナリオに定義された選手の移動方向V
2と、キャラクタ56の移動方向V
3と、のずれが基準以内になるように、第2制御部68は、キャラクタ56を移動させる。このように、第2制御部68は、シナリオに定義された各選手の動作と、各選手に対応するノンプレイヤキャラクタが行う動作と、のずれが基準未満となるように、ノンプレイヤキャラクタを動作させる。具体的には、例えば、第2制御部68は、下記のようにして、ノンプレイヤキャラクタをイミテーションモードで動作させる。
【0069】
例えば、第2制御部68は、シナリオが示す各選手の位置、移動方向、又は移動速度と、各選手に対応するノンプレイヤキャラクタの位置、移動方向、又は移動速度と、のずれが基準未満となるように、ノンプレイヤキャラクタを移動させる。ここでは、シナリオが示す選手の位置とノンプレイヤキャラクタの位置との距離が基準未満になることが、位置のずれが基準未満になることに相当する。また、シナリオが示す選手の移動方向とノンプレイヤキャラクタの移動方向との角度が基準未満になることが、移動方向のずれが基準未満になることに相当する。また、シナリオが示す選手の移動速度とノンプレイヤキャラクタの移動速度との差が基準未満になることが、移動速度のずれが基準未満になることに相当する。
【0070】
また例えば、ボールを保持する選手の動作がシナリオに定義されている場合、第2制御部68は、この選手がボールを移動させた位置、移動方向、又は移動速度と、ボール52を保持するノンプレイヤキャラクタがボール52を移動させた位置、移動方向、又は移動速度と、のずれが基準未満となるように、当該ノンプレイヤキャラクタにボール52を移動させる。ここでは、シナリオが示すボールの位置とノンプレイヤキャラクタが移動させたボール52の位置との距離が基準未満になることが、位置のずれが基準未満になることに相当する。また、シナリオが示すボールの移動方向とノンプレイヤキャラクタが移動させたボール52の移動方向との角度が基準未満になることが、移動方向のずれが基準未満になることに相当する。また、シナリオが示すボールの移動速度とノンプレイヤキャラクタが移動させたボール52の移動速度との差が基準未満になることが、移動速度のずれが基準未満になることに相当する。
【0071】
また例えば、ボールを保持する選手の動作と他の選手の動作とがシナリオに定義されている場合、第2制御部68は、シナリオが示すボール又はボールを保持する選手と他の選手との位置関係と、ボール52又はボール52を保持するキャラクタ54(56)と他のキャラクタ54(56)との位置関係と、のずれが基準未満となるように、ノンプレイヤキャラクタを移動させる。ここでは、シナリオが示すボール又はボールを保持する選手を基準とした他の選手の位置と、ボール52又はボール52を保持するキャラクタ54(56)を基準とした他のキャラクタ54(56)の位置と、のずれが基準未満になることが、位置関係のずれが基準未満になることに相当する。
【0072】
また例えば、第2制御部68は、シナリオが示す各選手が動作を行ったタイミング(例えば、パスやシュートのタイミングや動き出しタイミング)と、当該選手に対応するノンプレイヤキャラクタが当該動作を行うタイミングと、のずれが基準未満となるように、ノンプレイヤキャラクタを動作させる。ここでは、シナリオに定義される動作タイミングと、ノンプレイヤキャラクタが動作を行った動作タイミングと、の時間差が基準未満になることが、タイミングのずれが基準未満になることに相当する。
【0073】
なお、第2制御部68によるノンプレイヤキャラクタの制御方法は、上記の例に限られない。第2制御部68は、シナリオに定義された動作に基づいて、ノンプレイヤキャラクタを動作させるようにすればよい。他にも例えば、複数種類のそれぞれの動作に類似する動作を定めておき、第2制御部68は、シナリオが示す動作に類似する動作を、ノンプレイヤキャラクタにさせるようにしてもよい。
【0074】
[3−6.第3制御部]
第3制御部70は、ユーザの操作対象(例えば、キャラクタ56)を、当該ユーザの操作に基づいて動作させる。ここでは、ユーザがコントローラ30を用いて行うことができる複数種類の操作のそれぞれと、操作対象にさせるべき動作の種類と、の関連付け(即ち、操作と動作の対応関係)がゲームデータ記憶部60に記憶されているものとする。第3制御部70は、ユーザの操作対象に、ユーザが行った操作に関連付けられた種類の動作をさせる。例えば、第3制御部70は、ユーザが方向指示操作を行った場合、当該方向指示操作が示す方向にユーザの操作対象を移動させ、ユーザがパス操作やシュート操作を行った場合、ユーザの操作対象にパスやシュートをさせる。
【0075】
[4.ゲーム装置において実行される処理]
図7は、ゲーム装置10が実行する処理を示すフロー図である。
図7に示す処理は、ゲームが開始された場合に実行される。制御部14は、光ディスク36に記憶されたプログラムに従って、下記に説明する処理を実行し、
図3に示す機能ブロックが実現される。なお、ここでは、説明の簡略化のため、同時に実行できるシナリオを一つとし、一つのシナリオで複数のノンプレイヤキャラクタを制御する場合の処理フローについて説明する。
【0076】
まず、
図7に示すように、制御部14は、ゲーム空間40を構築して、試合を開始させる(S1)。S1においては、制御部14は、ゲーム状況データを生成して主記憶16に記録する。例えば、制御部14は、ボール52及び各キャラクタ54(56)を、ピッチ50上の初期位置に配置する。なお、本実施形態では、ゲームの開始時点では、ノンプレイヤキャラクタは、シミュレーションモードで動作するように設定するものとするが、開始時点でイミテーションモードで動作するノンプレイヤキャラクタがいてもよい。
【0077】
制御部14は、ユーザの操作に基づいて、ユーザの操作対象を動作させる(S2)。S2においては、制御部14は、ユーザが行った操作に関連付けられた動作を、ユーザの操作対象にさせる。
【0078】
制御部14は、シミュレーションモードで動作するノンプレイヤキャラクタを動作させる(S3)。S3においては、制御部14は、各ノンプレイヤキャラクタの現在の状態と所与の行動アルゴリズムとに基づいて、シミュレーションモードで動作するノンプレイヤキャラクタの動作を決定する。即ち、制御部14は、シナリオに基づかずにノンプレイヤキャラクタの動作をシミュレートする。
【0079】
制御部14は、ゲーム状況データを参照し、ノンプレイヤキャラクタのうちで、イミテーションモードで動作するノンプレイヤキャラクタがいるか否かを判定する(S4)。即ち、S4においては、制御部14は、イミテーションモードの実行中であるか否かを判定する。イミテーションモードで動作するノンプレイヤキャラクタがいると判定された場合(S4;Y)、S10の処理に移行する。この場合、制御部14は、使用中のシナリオに基づいて、イミテーションモードでの動作制御を継続することになる。
【0080】
一方、イミテーションモードで動作するノンプレイヤキャラクタがいないと判定された場合(S4;N)、制御部14は、実行中のゲームの状況と、シナリオデータベースの各シナリオが示す状況と、の類似度を算出する(S5)。S5においては、制御部14は、ゲーム状況データに格納されたパラメータと、各シナリオに格納されたパラメータと、を比較して類似度を算出する。
【0081】
本実施形態では、先述のように、制御部14は、各シナリオの制御対象となるノンプレイヤキャラクタごとに、選手状況類似度を算出する。なお、各ノンプレイヤキャラクタの選手状況類似度の算出方法は、当該ノンプレイヤキャラクタの現在の状況に応じて異なるようにしてもよい。例えば、選手状況類似度の算出対象のノンプレイヤキャラクタとボール52の位置関係次第では、ボール52から遠い状況はある程度無視するか、選手状況類似度の数値に影響を与えないようにしてもよい。更に、例えば、ノンプレイヤキャラクタと、選手状況類似度の算出方法(例えば、参照すべきパラメータの種類)と、の関連付けがゲームプログラムに定義されており、制御部14は、各ノンプレイヤキャラクタに関連付けられた算出方法に基づいて、選手状況類似度を算出するようにしてもよい。そして、制御部14は、ノンプレイヤキャラクタごとに算出した選手状況類似度を所与の数式に代入して、類似度を算出する。制御部14は、シナリオごとに算出した類似度を、主記憶16に一時的に記録する。
【0082】
制御部14は、S5で算出した類似度が基準値以上のシナリオがあるか否かを判定する(S6)。なお、基準値は、予め定められた値であってもよいし、実行中のゲームに応じて変化する値であってもよい。
【0083】
類似度が基準値以上のシナリオがないと判定された場合(S6;N)、S13の処理に移行する。この場合、実行中のゲームの状況に似たシナリオがないので、各ノンプレイヤキャラクタは、イミテーションモードで動作せず、シミュレーションモードで動作する。
【0084】
一方、類似度が基準値以上のシナリオがあると判定された場合(S6;Y)、制御部14は、類似度が基準値以上のシナリオを取得する(S7)。なお、ここでは、類似度が基準値以上のシナリオが複数存在する場合、制御部14は、最も類似度が高いシナリオを取得する。
【0085】
制御部14は、S7で取得したシナリオに基づいて、各チームのノンプレイヤキャラクタのうちから、イミテーションモードの制御対象を選出する(S8)。S8においては、制御部14は、各チームのノンプレイヤキャラクタのうち、シナリオが示すノンプレイヤキャラクタ(例えば、シナリオが示す現実世界の選手と同じ選手名のノンプレイヤキャラクタ)を、イミテーションモードの制御対象として選出する。
【0086】
制御部14は、S8で選出したノンプレイヤキャラクタを、シミュレーションモードでの制御からイミテーションモードでの制御に切り替える(S9)。S9においては、制御部14は、ゲーム状況データを参照し、S8で選出したノンプレイヤキャラクタをイミテーションモードで制御する旨を格納する。
【0087】
制御部14は、シナリオに格納された動作に基づいて、制御対象のノンプレイヤキャラクタを、イミテーションモードで動作させる(S10)。S10の処理の詳細は、先述した通りであり、シナリオが示す選手の動作と、ノンプレイヤキャラクタの動作と、のずれが基準未満になるように、ノンプレイヤキャラクタを動作させる。
【0088】
制御部14は、イミテーションモードの解除条件が満たされるか否かを判定する(S11)。解除条件は、現在実行しているイミテーションモードの制御を解除するか否かを判定するための予め定められた条件である。例えば、実行中のゲームの状況が、シナリオに格納されたデータが示す状況に類似しなくなったか否かを示す条件や、シナリオに格納された動作が終了したか否かを示す条件である。
【0089】
解除条件が満たされると判定された場合(S11;Y)、制御部14は、イミテーションモードで制御していたノンプレイヤキャラクタを、シミュレーションモードでの制御に切り替える(S12)。S12においては、制御部14は、ゲーム状況データを参照して、イミテーションモードで制御していたノンプレイヤキャラクタを、イミテーションモードで制御している旨を格納し、イミテーションモードでの動作制御を解除する。
【0090】
一方、解除条件が満たされないと判定された場合(S11;N)、S12の処理は実行されない。この場合、イミテーションモードでの動作制御が継続されることになる。
【0091】
制御部14は、終了条件が満たされるか否かを判定する(S13)。終了条件は、本処理を終了するために予め定められた条件であればよい。例えば、試合の終了時間が到来したか否か、又は、ユーザがゲーム終了操作をしたか否か等である。終了条件が満たされると判定された場合(S13;Y)、本処理は終了する。終了条件が満たされると判定されない場合(S13;N)、S2の処理に戻る。
【0092】
以上説明したゲーム装置10によれば、実行中のゲームの状況がシナリオの状況と類似する場合に、当該シナリオに定義された現実世界の選手の動作に基づいて、ノンプレイヤキャラクタを動作させるので、スポーツの試合での選手の動きに関するシミュレーションの精度を向上させることができる。特に、実施形態のようにボール52を用いたゲームでは、ボール52の状態がゲームの状況に大きく左右するため、ボール52に対して選手がどのように動作したかをシナリオに定義することで、ボール52に対するノンプレイヤキャラクタの動作の精度を向上させることができる。
【0093】
また、イミテーションモードの実行中でも、一部のノンプレイヤキャラクタはシミュレーションモードで動作するため、シミュレーションモードで動作するノンプレイヤキャラクタと、イミテーションモードで動作するノンプレイヤキャラクタと、をゲーム空間40において共存させることができる。特に、実施形態のようにボール52を用いたゲームでは、例えば、ボールに比較的近い選手の動作のみをシナリオに定義しておくことで、ボール52から比較的遠いノンプレイヤキャラクタ(即ち、試合の状況変化にあまり影響しないノンプレイヤキャラクタ)は、シミュレーションモードで動作させることができる。
【0094】
また、ゲーム状況データが示す状況との類似度が高いシナリオに基づいて、イミテーションモードの制御対象を選出するので、現実選手の動作に基づいて動作させるべきノンプレイヤキャラクタのみを、イミテーションモードで制御することができる。特に、実施形態のようにボール52を用いたゲームでは、例えば、ボールに比較的近い選手の動作のみをシナリオに定義しておくことで、試合の状況変化に強く影響するノンプレイヤキャラクタのみをイミテーションモードで制御することができる。
【0095】
また、シナリオデータベースには複数のシナリオが格納されているため、現実選手の動作を定義した種々のシナリオを用いて、ノンプレイヤキャラクタの動作制御を行うことができる。
【0096】
また、シナリオには、ユーザチームのキャラクタ54の動作と、対戦相手チームのキャラクタ56の動作と、が格納されているため、複数のチームのそれぞれに所属するノンプレイヤキャラクタの動作を一のシナリオに基づいて制御することができる。特に、実施形態のようにボール52を用いたゲームでは、各選手の動作が対戦相手の選手の動作に応じて変化するため、両チームの選手の動作をシナリオに定義しておくことで、より効果的にシミュレーションの精度を向上することができる。
【0097】
また、シナリオに基づいた動作制御をゲームに適用することによって、スポーツゲームにおけるゲームキャラクタのシミュレーションの精度を向上することができるので、よりリアリティの高いゲームをユーザに提供することができる。このため、現実世界のスポーツの試合での名シーンをユーザに再現させたり、現実世界のスポーツの試合でのイベントとは違う結果となるようにユーザに修正させたりすることができる。例えば、現実のサッカーにおいて得点が発生したシーンにおける選手の動作をシナリオに定義しておくことで、当該シーンを再現させるようにゲームをプレイさせたり、逆に、失点をせず現実とは異なる結果が得られるようにゲームをプレイさせたりすることができる。
【0098】
[5.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0099】
図8は、変形例の機能ブロック図である。
図8に示すように、以降説明する変形例では、実施形態の機能に加えて、切り替え部72が実現される。切り替え部72は、制御部14を主として実現される。なお、ゲーム装置10において、切り替え部72は省略するようにしてもよい。
【0100】
(1)例えば、あるシナリオに基づいたイミテーションモードの実行中において、ユーザの操作対象が、実行中のシナリオとはかけ離れた行動をした場合は、イミテーションモードで動作しているノンプレイヤキャラクタを、シミュレーションモードでの動作制御に戻すようにしてもよい。
【0101】
変形例(1)のゲーム装置10は、切り替え部72を含む。切り替え部72は、第2制御部68による制御中にユーザの操作対象が行った動作に基づいて、第2制御部68の制御対象を、第2制御部68による制御から第1制御部64による制御に切り替える。第2制御部68による制御中とは、イミテーションモードの実行中のことである。
【0102】
例えば、本変形例でのシナリオの解除条件は、ユーザの操作対象が所定類型の動作をしたか否かを示す条件である。即ち、各シナリオには、当該シナリオに基づいたイミテーションモードの実行を停止するための条件として、複数種類の動作のうちの少なくとも一つが定められている。
【0103】
切り替え部72は、ユーザの操作に基づいて、実行中のシナリオに関連付けられた上記動作を、ユーザの操作対象が行ったか否かを判定する。ユーザの操作対象が当該動作を行ったと判定された場合、切り替え部72は、第2制御部68の制御対象のノンプレイヤキャラクタを、イミテーションモードでの制御から、シミュレーションモードでの制御に切り替える。
【0104】
変形例(1)によれば、ユーザの操作対象が行った動作に応じた最適な動作制御をすることができる。例えば、ユーザの操作対象がシナリオとはかけ離れた動作をした場合は、シナリオの実行をユーザが望んでいないと推測し、シミュレーションモードでの制御に切り替えることができるので、よりユーザの好みに合ったゲームを提供することができる。
【0105】
(2)また例えば、あるシナリオに基づいたイミテーションモードの実行中において、実行中のゲームの状況が、当該シナリオが示す状況とは類似しなくなった場合は、イミテーションモードで動作するノンプレイヤキャラクタを、シミュレーションモードでの動作制御に戻すようにしてもよい。
【0106】
変形例(2)の判定部66は、第2制御部68の制御中における架空世界の試合の状況(例えば、実行中のゲームの状況)が、類似すると判定された状況に類似しなくなったか否かを判定する。類似すると判定された状況とは、実行中のシナリオに格納された状況である。なお、判定部66の判定方法は、実施形態で説明した方法と同様であり、これらの状況の類似度を算出して基準値以上であるか否かを判定する。即ち、判定部66は、イミテーションモードの実行中において、シナリオが示す状況とゲーム状況データが示す状況との類似度を算出する。
【0107】
切り替え部72は、架空世界の試合の状況(例えば、実行中のゲームの状況)が、類似すると判定された状況(即ち、実行中のシナリオの状況)に類似しなくなったと判定された場合、第2制御部68の制御対象を、第2制御部68による制御から第1制御部64による制御に切り替える。状況が類似しなくなるとは、判定部66が算出した類似度が基準値以上の状態から基準値未満の状態に変化することである。類似度が基準未満になったと判定された場合、切り替え部72は、第2制御部68の制御対象のノンプレイヤキャラクタを、イミテーションモードでの制御から、シミュレーションモードでの制御に切り替える。
【0108】
変形例(2)によれば、シミュレーション中の試合の状況に応じた最適な動作制御をすることができる。特に、上記のようなゲームでは、イミテーションモードで動作するノンプレイヤキャラクタと、シミュレーションモードで動作するノンプレイヤキャラクタと、が共存するため、ゲームの進行次第では、シナリオが示す状況に類似しなくなる場合がある。この場合は、試合の状況が類似しなくなった以上、シナリオに基づいてノンプレイヤキャラクタを制御してもシミュレーションの精度を向上させることができないので、イミテーションモードを解除するで、ゲームの進行に応じた最適な動作制御をユーザに提供することができる。
【0109】
(3)また例えば、あるシナリオに基づいたイミテーションモードの実行中において、実行中のゲームの状況が、当該シナリオに格納された状況とは類似しなくなった場合は、イミテーションモードで動作するノンプレイヤキャラクタを、他のシナリオに基づいたイミテーションモードでの動作制御に切り替えるようにしてもよい。
【0110】
変形例(3)の第2制御部68は、架空世界の試合の状況(例えば、実行中のゲームの状況)が、類似すると判定された状況(例えば、実行中のシナリオが示す状況)に類似しなくなったと判定された場合、当該類似しなくなったと判定された状況に対応するシナリオに基づいた制御から、他のシナリオに基づいた制御に切り替える。他のシナリオとは、実行中のシナリオ以外のシナリオであり、例えば、類似度が基準値以上のシナリオのうち実行中のシナリオ以外のものである。
【0111】
実行中のシナリオが示す状況とゲーム状況データが示す状況とが類似しなくなった場合、第2制御部68は、実行中のシナリオに基づいたイミテーションモードの実行を停止し、他のシナリオに基づいたイミテーションモードを実行する。例えば、実行中のシナリオに基づいたイミテーションモードで動作するノンプレイヤキャラクタが、他のシナリオに基づいたイミテーションモードでの制御対象に選出された場合は、第2制御部68は、実行中のシナリオに基づいたイミテーションモードで動作するノンプレイヤキャラクタを、他のシナリオに基づいたイミテーションモードでの制御に切り替える。
【0112】
変形例(3)によれば、シミュレーション中の試合の状況に応じた最適なシナリオに基づいて、現実選手の動作に基づいた動作制御をすることができる。特に、実施形態で説明したようなゲームでは、シナリオに基づいてイミテーションモードの実行中に、ゲームの状況が大きく変化することがある。この場合に、現在の状況に応じた最適なシナリオに切り替えることで、シミュレーションの精度をより効果的に向上することができる。
【0113】
(4)また例えば、あるシナリオに基づいたイミテーションモードの実行中において、ユーザの操作対象が、当該シナリオとはかけ離れた行動をした場合は、イミテーションモードで動作するノンプレイヤキャラクタを、他のシナリオに基づいたイミテーションモードでの動作制御に切り替えるようにしてもよい。
【0114】
第2制御部68は、当該第2制御部68による制御中にユーザの操作対象が行った動作に基づいて、類似すると判定された状況に対応するシナリオ(例えば、実行中のシナリオ)に基づいた制御から、他のシナリオ(例えば、実行中のシナリオ以外のシナリオ)に基づいた制御に切り替える。
【0115】
変形例(4)でも、変形例(1)と同様、各シナリオに動作の種類が関連付けられており、第2制御部68は、ユーザの操作対象が、実行中のシナリオに関連付けられた動作をしたか否かを判定することになる。第2制御部68は、ユーザの操作対象が実行中のシナリオに関連付けられた動作をした場合、他のシナリオに基づいたイミテーションモードに切り替える。また、変形例(4)においても、変形例(3)と同様、第2制御部68は、ゲーム状況データが示す状況との類似度が基準値以上であるシナリオのうちから、切り替え後に用いるシナリオを決定するようにしてもよい。
【0116】
変形例(4)によれば、シミュレーション中の試合の状況に応じた最適なシナリオに切り替えて、ノンプレイヤキャラクタの動作制御を行うことができる。例えば、ユーザの操作対象がシナリオとはかけ離れた動作をした場合は、現在のシナリオの実行をユーザが望んでいないと推測して他のシナリオでの制御に切り替えることができるので、よりユーザの好みに合ったシナリオを提供することができる。
【0117】
(5)また例えば、実施形態では、説明の簡略化のため、あるシナリオに基づいたイミテーションモードが実行中において、他のシナリオに基づいたイミテーションモードが実行されない場合を説明したが、複数のシナリオのそれぞれに基づいたイミテーションモードが同時に実行されるようにしてもよい。即ち、複数のノンプレイヤキャラクタのそれぞれが、互いに異なるシナリオに基づいたイミテーションモードで動作するようにしてもよい。
【0118】
第2制御部68は、架空世界の試合の状況(例えば、実行中のゲームの状況)と複数のシナリオのうちの複数が示す状況とが類似すると判定された場合、当該類似すると判定された複数の状況のうち、一の状況に関連付けられた動作に基づいて、ユーザの操作対象以外の複数の架空選手の一部(例えば、ノンプレイヤキャラクタのうちの一部)を動作させ、他の状況に関連付けられた動作に基づいて、当該一部の架空選手以外を動作させる。
【0119】
類似度が基準値以上のシナリオが複数存在する場合、第2制御部68は、これら複数のシナリオごとに、イミテーションモードを実行することになる。即ち、第2制御部68は、複数のシナリオに基づいて、複数のノンプレイヤキャラクタを動作させる。例えば、第2制御部68は、類似度が最も高いシナリオに基づいて、当該シナリオに基づいたイミテーションモードでの制御対象を選出する。そして、第2制御部68は、次に類似度が高いシナリオに基づいて、イミテーションモードでの制御対象にまだ選出されていないノンプレイヤキャラクタのうちから、当該シナリオに基づいたイミテーションモードでの制御対象を選出する。
【0120】
以降、第2制御部68は、類似度が基準以上のシナリオがなくなるまで、又は、制御対象に選出されていないノンプレイヤキャラクタがいなくなるまで、類似度が高い順に、シナリオに基づいたイミテーションモードでの制御対象の選出を繰り返す。第2制御部68は、上記選出したノンプレイヤキャラクタを、各シナリオに格納された動作に基づいて動作させることになる。
【0121】
変形例(5)によれば、シミュレーション中の試合の状況に応じて複数のシナリオを同時に使用して、各ノンプレイヤキャラクタの動作制御を行うことができる。このため、例えば、あるノンプレイヤキャラクタのグループは、あるシナリオに基づいて動作し、別のグループは別のシナリオに基づいて動作させることができるので、より効果的にシミュレーションの精度を向上させることができる。
【0122】
なお、複数のシナリオに基づいて、複数のノンプレイヤキャラクタを同時に制御する方法は、上記の例に限られない。例えば、各ノンプレイヤキャラクタに対応する選手状況類似度が最も高いシナリオに基づいて、当該ノンプレイヤキャラクタを制御するようにしてもよい。他にも例えば、各ノンプレイヤキャラクタを、他のノンプレイヤキャラクタを制御するためのシナリオに対応するシナリオに基づいて制御するようにしてもよい。
【0123】
(6)また例えば、上記においては、ノンプレイヤキャラクタがシナリオに基づいて動作する場合を説明したが、ユーザの操作対象がシナリオに基づいて動作するようにしてもよい。この場合、ユーザの操作対象の動作がシナリオが示す動作に近づくように、ユーザの操作が補正されるようにしてもよい。
【0124】
第3制御部70は、架空世界の試合の状況(例えば、実行中のゲームの状況)とシナリオが示す状況とが類似すると判定された場合、当該状況に関連付けられた動作と、ユーザの操作と、に基づいて、ユーザの操作対象を動作させる。なお、変形例(6)においては、第2制御部68は、ユーザの操作対象を、イミテーションモードでの制御対象として選出する。即ち、シナリオに定義された動作において、ユーザの操作対象に設定されたキャラクタ54を示す情報が含まれている。
【0125】
図9は、変形例(6)における第3制御部70の制御内容を説明するための図である。第3制御部70は、ユーザの操作に対応する動作と、シナリオに定義された動作と、のずれが小さくなるように、ユーザの操作対象の動作を変更する。動作のずれについては、実施形態で説明した内容と同様であり、例えば、
図9に示すように、ユーザの操作対象が所定方向V
4にボール52を移動させることがシナリオに定義されている場合、第3制御部70は、ユーザが指示したボール52の移動方向V
5が、シナリオに定義されたボール52の移動方向V
4に近づくように、ユーザの操作対象の動作を補正して、ボール52を移動方向V
6に移動させる。
【0126】
変形例(6)によれば、ユーザの操作対象の動作を、現実世界の選手の動作に基づいて制御することができる。このため、シナリオが示す現実世界での試合のイベントをユーザが再現しやすくなる。
【0127】
(7)また例えば、ユーザが指示した操作に対応する動作と、シナリオに定義された動作と、のずれが比較的大きい場合にのみ、変形例(6)で説明した補正が行われるようにしてもよい。
【0128】
第3制御部70は、架空世界の試合の状況(例えば、実行中のゲームの状況)とシナリオが示す状況とが類似すると判定された場合、当該状況に関連付けられた動作と、ユーザが行った操作に対応する動作と、に関するずれを取得する。動作のずれについては、実施形態で説明した内容と同様であり、例えば、第3制御部70は、シナリオに格納された動作が示すキャラクタ54の位置又は移動方向と、ユーザが行った操作に対応するキャラクタ54の位置又は移動方向と、のずれを取得する。また例えば、第3制御部70は、シナリオに格納された動作が示すボール52の位置又は移動方向と、ユーザが行った操作に応じて操作対象が移動させるボール52の位置又は移動方向と、のずれを取得する。
【0129】
第3制御部70は、当該取得されたずれが基準以上である場合、上記類似する状況に関連付けられた動作と、ユーザの操作と、に基づいて、ユーザの操作対象を動作させる。この制御方法は、変形例(6)と同様である。即ち、第3制御部70は、当該取得されたずれが基準未満である場合、シナリオに格納された動作に基づかず、ユーザの操作に基づいて、ユーザの操作対象を動作させる。
【0130】
変形例(7)によれば、現実世界の選手の動作と、ユーザが行った操作に対応する動作と、のずれが比較的大きい場合に、ユーザの操作対象の動作を、現実世界の選手の動作に基づいて制御することができる。例えば、ユーザの操作対象の動作がシナリオの動作に近づくように常に補正すると、ユーザが操作対象を操作する感覚に狂いが生じてしまう可能性があるが、上記のずれが比較的小さい場合は、ユーザの操作通りに操作対象を動作させてもシナリオを再現できる可能性が高いため、ユーザの操作対象の動作をシナリオの動作に近づける補正を行わないことにより、ユーザの操作感覚に狂いが生じてしまう可能性を低減することができる。
【0131】
(8)また例えば、実施形態と上記変形例の二つ以上とを組み合わせるようにしてもよい。
【0132】
また例えば、上記においては、各シナリオに基づいて複数のノンプレイヤキャラクタを動作させる場合を説明したが、一のシナリオに基づいて一のノンプレイヤキャラクタが動作するようにしてもよい。この場合、各シナリオには、当該シナリオに基づいて動作させるべき一のキャラクタ54(56)を示す情報が含まれている。判定部66は、各シナリオが示す状況と、当該一のキャラクタ54(56)の現在の状態と、に基づいて類似度を算出し、第2制御部68は、類似度が基準値以上である場合に、当該一のキャラクタ54(56)をシナリオに基づいて制御することになる。
【0133】
また例えば、選手状況類似度を加重合計することで算出される類似度に基づいて、イミテーションモードで使用されるシナリオが特定される場合を説明したが、シナリオの特定方法は、これに限られない。ゲーム状況データが示す状況に類似するシナリオが、使用対象として特定されるようにすればよい。他にも例えば、判定部66は、選手状況類似度を算出せずに、試合の全体的な状況に関する類似度(例えば、得点差等の戦況に関する類似度)を算出し、当該類似度が比較的高いシナリオのうちから、選手状況類似度を算出することで使用対象のシナリオを特定するようにしてもよい。また例えば、イミテーションモードで使用されるシナリオを検索する方法は、一つのシナリオが何人のノンプレイヤキャラクタをコントロールできるかや、多数のシナリオを同時に実行できるかに応じて変わるようにしてもよい。
【0134】
また例えば、第2制御部68が各シナリオに基づいた動作制御を行う際に、当該シナリオに定義された最初の動作から順番に、ノンプレイヤキャラクタにさせる必要はなく、当該シナリオに定義された途中の動作から、ノンプレイヤキャラクタにさせるようにしてもよい。
【0135】
また例えば、シナリオに含まれるパラメータは、上記の例に限られない。各シナリオには、現実世界で行われた試合での選手に関するパラメータが格納されるようにすればよい。他にも例えば、現実世界で行われた試合での各選手の感情値や疲労度等を示すパラメータが、シナリオに格納されているようにしてもよい。この場合、当該パラメータに対応するパラメータがゲーム状況データに格納されているものとする。そして、判定部66は、ノンプレイヤキャラクタの感情値や疲労度等と、シナリオが示す選手の感情値や疲労度等と、を比較して状況が類似するか否かを判定することになる。
【0136】
また例えば、各シナリオには、現実世界で行われた試合での選手の動作が時系列で格納される場合を説明したが、あるタイミングで選手が行った動作のみが格納されるようにしてもよい。
【0137】
また例えば、キャラクタ54の何れかがユーザの操作対象に設定される場合を例に挙げて説明したが、ユーザの操作対象がいないようにしてもよい。即ち、ゲーム空間40に配置された全てのキャラクタ54(56)が、第1制御部66又は第2制御部68により制御されるようにしてもよい。
【0138】
また例えば、ゲーム空間40を、
図2に示すような3次元空間として説明したが、本発明に係るゲーム空間は、キャラクタ54(56)やボール52の位置等が、2つの座標要素で管理されるような2次元ゲーム空間であってもよい。
【0139】
また、上記においては、主に、スタンドアロン型ゲームを例に挙げて説明したが、ソーシャルネットワークを利用したオンライン型ゲーム(例えば、いわゆるブラウザ型ゲームやネイティブアプリ型ゲームを含む)等の種々のゲームに本発明を適用するようにしてもよい。この場合、ユーザが操作する端末に接続されたサーバが、本発明に係るゲーム装置に相当するようにしてもよい。
【0140】
また例えば、本発明をゲームに適用する場合、サッカーゲーム以外のスポーツゲーム(例えば、バスケットボールゲーム、アイスホッケーゲーム、又は、アメリカンフットボールゲーム)全般に適用することができる。また例えば、本発明は、ゲーム装置以外のシミュレーション装置にも適用できる。例えば、現実のスポーツ選手の練習を支援するためにシミュレーションを行う装置にも、本発明に係る技術を適用することができる。
【0141】
[6.発明のまとめ]
以上のような記載から、本発明は例えば以下のように把握される。
本発明に係るシミュレーション装置は、スポーツ(例えば、サッカー)の試合における選手の動作をシミュレートするシミュレーション装置(10)であって、架空世界(例えば、ゲーム空間40)に配置された複数の架空選手(例えば、キャラクタ54)のうち、ユーザの操作対象以外の架空選手の動作をシミュレートする第1制御手段(64)と、現実世界で行われた前記スポーツの試合の状況と、当該試合での現実選手の動作と、を関連付けたデータを記憶する記憶手段(60)の記憶内容を取得する手段(62)と、シミュレーション中の前記架空世界の試合の状況と、前記データが示す状況と、が類似するか否かを判定する判定手段(66)と、前記架空世界の試合の状況と前記データが示す状況とが類似すると判定された場合、前記ユーザの操作対象以外の架空選手を、前記第1制御手段(64)による制御に代えて、当該状況に関連付けられた動作に基づいて制御する第2制御手段(68)と、を含むことを特徴とする。
【0142】
本発明に係るシミュレーション方法は、スポーツ(例えば、サッカー)の試合における選手の動作をシミュレートするシミュレーション方法であって、架空世界(例えば、ゲーム空間40)に配置された複数の架空選手(例えば、キャラクタ54)のうち、ユーザの操作対象以外の架空選手の動作をシミュレートする第1制御ステップ(64)と、現実世界で行われた前記スポーツの試合の状況と、当該試合での現実選手の動作と、を関連付けたデータを記憶する記憶手段(60)の記憶内容を取得するステップ(62)と、シミュレーション中の前記架空世界の試合の状況と、前記データが示す状況と、が類似するか否かを判定する判定ステップ(66)と、前記架空世界の試合の状況と前記データが示す状況とが類似すると判定された場合、前記ユーザの操作対象以外の架空選手を、前記第1制御ステップ(64)における制御に代えて、当該状況に関連付けられた動作に基づいて制御する第2制御ステップ(68)と、を含むことを特徴とする。
【0143】
本発明に係るプログラムは、スポーツ(例えば、サッカー)の試合における選手の動作をシミュレートするコンピュータ(10)を、架空世界(例えば、ゲーム空間40)に配置された複数の架空選手(例えば、キャラクタ54)のうち、ユーザの操作対象以外の架空選手の動作をシミュレートする第1制御手段(64)、現実世界で行われた前記スポーツの試合の状況と、当該試合での現実選手の動作と、を関連付けたデータを記憶する記憶手段(60)の記憶内容を取得する手段(62)、シミュレーション中の前記架空世界の試合の状況と、前記データが示す状況と、が類似するか否かを判定する判定手段(66)、前記架空世界の試合の状況と前記データが示す状況とが類似すると判定された場合、前記ユーザの操作対象以外の架空選手を、前記第1制御手段(64)による制御に代えて、当該状況に関連付けられた動作に基づいて制御する第2制御手段(68)、として機能させる。
【0144】
また、本発明に係る情報記憶媒体は、上記プログラムを記録したコンピュータ読み取り可能な情報記憶媒体である。
【0145】
本発明によれば、スポーツの試合における選手の動きに関するシミュレーションの精度を向上させることができる。
【0146】
また、本発明の一態様では、前記架空世界(例えば、ゲーム空間40)には、前記ユーザの操作対象以外の架空選手(例えば、キャラクタ54)が複数配置され、前記第2制御手段(68)は、前記架空世界の試合の状況と前記データが示す状況とが類似すると判定された場合、前記ユーザの操作対象以外の前記複数の架空選手のうちの一部を、前記第1制御手段(64)による制御に代えて、当該状況に関連付けられた動作に基づいて制御し、前記第1制御手段(64)は、前記架空世界の試合の状況と前記データが示す状況とが類似すると判定された場合、前記ユーザの操作対象以外の前記複数の架空選手のうち、前記第2制御手段(68)の制御対象以外の架空選手を制御する、ことを特徴とする。当該態様によれば、第1制御手段が制御する架空選手と、第2制御手段が制御する架空選手と、を架空世界において共存させることができる。
【0147】
また、本発明の一態様では、前記第2制御手段(68)は、前記架空世界(例えば、ゲーム空間40)の試合の状況と前記データが示す状況とが類似すると判定された場合、当該データに基づいて、前記ユーザの操作対象以外の前記複数の架空選手(例えば、キャラクタ54)のうちから、当該第2制御手段(68)の制御対象を選出する手段(68)を含み、当該選出された架空選手を、前記第1制御手段(64)による制御に代えて制御する、ことを特徴とする。当該態様によれば、現実選手の動作に基づいて動作させるべき架空選手のみを、第2制御手段により制御させることができる。
【0148】
また、本発明の一態様では、前記シミュレーション装置(10)は、前記第2制御手段(68)による制御中に前記ユーザの操作対象が行った動作に基づいて、前記第2制御手段(68)の制御対象を、前記第2制御手段(68)による制御から前記第1制御手段(64)による制御に切り替える手段(72)、を更に含むことを特徴とする。当該態様によれば、ユーザの操作対象が行った動作に応じた最適な動作制御をすることができる。
【0149】
また、本発明の一態様では、前記判定手段(66)は、前記第2制御手段(68)の制御中における前記架空世界(例えば、ゲーム空間40)の試合の状況が、前記類似すると判定された状況に類似しなくなったか否かを判定し、前記シミュレーション装置(10)は、前記架空世界の試合の状況が前記類似すると判定された状況に類似しなくなったと判定された場合、前記第2制御手段(68)の制御対象を、前記第2制御手段(68)による制御から前記第1制御手段(64)による制御に切り替える手段(72)、を更に含むことを特徴とする。当該態様によれば、シミュレーション中の試合の状況に応じた最適な動作制御をすることができる。
【0150】
また、本発明の一態様では、前記記憶手段(60)には、複数の前記データが記憶されており、前記判定手段(66)は、前記架空世界(例えば、ゲーム空間40)の試合の状況と、前記複数のデータのそれぞれが示す状況と、が類似するか否かを判定し、前記第2制御手段(68)は、前記架空世界の試合の状況と前記複数のデータのうちの少なくとも一つが示す状況とが類似すると判定された場合、当該類似すると判定された状況に関連付けられた動作に基づいて、前記ユーザの操作対象以外の架空選手(例えば、キャラクタ54)を制御する、ことを特徴とする。当該態様によれば、現実選手の動作を定義した種々のデータを用いてシミュレーションを行うことができる。
【0151】
また、本発明の一態様では、前記判定手段(66)は、前記第2制御手段(68)の制御中における前記架空世界(例えば、ゲーム空間40)の試合の状況が、前記類似すると判定された状況に類似しなくなったか否かを判定し、前記第2制御手段(68)は、前記架空世界の試合の状況が前記類似すると判定された状況に類似しなくなったと判定された場合、当該類似しなくなったと判定された状況に対応するデータに基づいた制御から、他の前記データに基づいた制御に切り替える、ことを特徴とする。当該態様によれば、シミュレーション中の試合の状況に応じた最適なデータに基づいて、現実選手の動作に基づいた動作制御をすることができる。
【0152】
また、本発明の一態様では、前記第2制御手段(68)は、前記第2制御手段(68)による制御中に前記ユーザの操作対象が行った動作に基づいて、前記類似すると判定された状況に対応するデータに基づいた制御から、他の前記データが示す動作に基づいた制御に切り替える、ことを特徴とする。当該態様によれば、シミュレーション中の試合の状況に応じた最適なデータに切り替えて、架空選手(例えば、キャラクタ54)の動作制御を行うことができる。
【0153】
また、本発明の一態様では、前記第2制御手段(68)は、前記架空世界(例えば、ゲーム空間40)の試合の状況と前記複数のデータのうちの複数が示す状況とが類似すると判定された場合、当該類似すると判定された複数の状況のうち、一の状況に関連付けられた動作に基づいて、前記ユーザの操作対象以外の複数の架空選手(例えば、キャラクタ54)の一部を動作させ、他の前記状況に関連付けられた動作に基づいて、当該一部の架空選手(例えば、キャラクタ54)以外を動作させる、ことを特徴とする。当該態様によれば、シミュレーション中の試合の状況に応じて複数のデータを同時に使用して、各架空選手(例えば、キャラクタ54)の動作制御を行うことができる。
【0154】
また、本発明の一態様では、前記ユーザの操作対象を、当該ユーザの操作に基づいて動作させる手段(70)であって、前記架空世界(例えば、ゲーム空間40)の試合の状況と前記データが示す状況とが類似すると判定された場合、当該状況に関連付けられた動作と、前記ユーザの操作と、に基づいて、前記ユーザの操作対象を動作させる第3制御手段(70)を更に含む、ことを特徴とする。当該態様によれば、ユーザの操作対象の動作を、現実世界の選手の動作に基づいて制御することができる。
【0155】
また、本発明の一態様では、前記第3制御手段(70)は、前記架空世界(例えば、ゲーム空間40)の試合の状況と前記データが示す状況とが類似すると判定された場合、当該状況に関連付けられた動作と、前記ユーザが行った操作に対応する動作と、に関するずれを取得する手段(70)を更に含み、当該取得されたずれが基準以上である場合、当該状況に関連付けられた動作と、前記ユーザの操作と、に基づいて、前記ユーザの操作対象を動作させる、ことを特徴とする。当該態様によれば、現実世界の選手の動作と、ユーザが行った操作に対応する動作と、のずれが比較的大きい場合に、ユーザの操作対象の動作を、現実世界の選手の動作に基づいて制御することができる。
【0156】
また、本発明の一態様では、前記シミュレーション装置(10)は、複数のチーム同士で対戦するスポーツ(例えば、サッカー)の試合での選手の動作をシミュレートし、前記複数の架空選手(例えば、キャラクタ54)のそれぞれは、前記複数のチームの何れかに所属し、前記第1制御手段(64)は、前記複数のチームの何れかに所属する前記複数の架空選手のうち、前記ユーザの操作対象以外の架空選手の動作をシミュレートし、前記データは、現実世界で行われた試合における前記複数のチームのそれぞれの選手の動作を示し、前記第2制御手段(68)は、前記架空世界(例えば、ゲーム空間40)の試合の状況と前記データが示す状況とが類似すると判定された場合、当該状況に関連付けられた動作に基づいて、前記複数のチームのそれぞれに所属する架空選手を制御する、ことを特徴とする。当該態様によれば、複数のチームのそれぞれに所属する架空選手の動作を一のデータに基づいて制御することができる。
【0157】
また、本発明の一態様では、前記シミュレーション装置(10)は、スポーツ(例えば、サッカー)の試合での選手の動作をシミュレートするゲームを実行し、前記複数の架空選手のそれぞれは、ゲームキャラクタ(例えば、キャラクタ54)であり、前記第1制御手段(64)は、前記ユーザの操作対象以外のゲームキャラクタの動作をシミュレートし、前記第2制御手段(68)は、前記類似すると判定された状況に関連付けられた動作に基づいて、前記ユーザの操作対象以外のゲームキャラクタを制御する、ことを特徴とする。当該態様によれば、スポーツの選手を模したゲームキャラクタのシミュレーションの精度を向上することができる。