以下、本発明の実施形態の例について図面に基づき詳細に説明する。
図1は本発明の実施形態に係るゲーム装置のハードウェア構成の一例を示す。本実施形態に係るゲーム装置10は、例えば家庭用ゲーム機(据置型ゲーム機)、携帯用ゲーム機、業務用ゲーム機、パーソナルコンピュータ、携帯電話機(スマートフォンを含む)、又は携帯情報端末(タブレット型コンピュータを含む)によって実現される。
図1に示すように、ゲーム装置10は制御部11、記憶部12、光ディスクドライブ部13、通信部14、操作部15、表示部16、及び音声出力部17を含む。
制御部11は例えば1又は複数のマイクロプロセッサ等を含み、オペレーティングシステムやその他のプログラムに従って処理を実行する。記憶部12は主記憶部(例えばRAM)及び補助記憶部(例えばハードディスクドライブ又はソリッドステートドライブ)を含む。
光ディスクドライブ部13は光ディスクに記憶されたプログラムやデータを読み取る。プログラムやデータは光ディスクを介してゲーム装置10に供給される。なお、ゲーム装置10は、光ディスク以外の情報記憶媒体(例えばメモリカード)に記憶されたプログラム又はデータを読み取るための構成要素を含むようにしてもよい。また、光ディスク以外の情報記憶媒体を介してプログラムやデータがゲーム装置10に供給されるようにしてもよい。
通信部14は通信ネットワークを介してデータ通信を行うためのインタフェースである。プログラムやデータは通信ネットワークを介して遠隔地からゲーム装置10に供給されるようにしてもよい。
操作部15は、ユーザがゲーム操作を行うためのものである。例えば、ゲーム装置10が家庭用ゲーム機である場合、家庭用ゲーム機に備えられるゲームコントローラが操作部15に相当する。すなわち、ゲームコントローラに含まれている複数の操作部材(例えばボタンやスティック等)が操作部15に相当する。
また例えば、ゲーム装置10が携帯用ゲーム機である場合、複数の操作部材が携帯用ゲーム機本体に備えられており、これらの操作部材が操作部15に相当する。また、ゲーム装置10がパーソナルコンピュータである場合、パーソナルコンピュータに備えられているマウス又はキーボード等が操作部15に相当する。また、ゲーム装置10が携帯電話機又は携帯情報端末である場合、携帯電話機又は携帯情報端末に備えられているキー、スティック、又はタッチパネル等が操作部15に相当する。
表示部16は例えば液晶表示パネル又は有機ELディスプレイ等であり、制御部11の指示に従って画面を表示する。音声出力部17は例えばスピーカ又はヘッドホン等であり、制御部11の指示に従って音声データを出力する。
ゲーム装置10ではゲームプログラムが実行されることによってゲームが実行される。例えば、ゲーム装置10では、ユーザの操作対象であるユーザキャラクタグループと、敵キャラクタグループとが対戦するゲームが実行される。なお以下では、上記ゲームの一例として、ユーザの操作対象であるユーザキャラクタグループと、敵キャラクタグループとの間で移動物体(例えばボール又はパック等)を用いて行われる競技を模したゲームについて説明する。より具体的にはサッカーゲームについて説明する。
このサッカーゲームでは、ユーザが操作するサッカーチームと、対戦相手が操作するサッカーチームとの試合が実行される。「対戦相手」は他のユーザである場合もあれば、コンピュータ(制御部11)である場合もある。
なお、このサッカーゲームでは、コンピュータが操作するサッカーチームと、コンピュータが操作するサッカーチームとの試合が実行される場合もある。また、複数のユーザが協力して操作するサッカーチームと、対戦相手が操作するサッカーチームとの試合が実行される場合もある。この場合、「対戦相手」は一又は複数の他のユーザである場合もあれば、コンピュータである場合もある。
以下では、ユーザが操作するサッカーチーム(以下「ユーザチーム」と記載する。)と、対戦相手(コンピュータ)が操作するサッカーチーム(以下「敵チーム」と記載する。)との試合が実行される場合について説明する。
サッカーゲームでは仮想的な空間が記憶部12(主記憶部)に構築され、上記試合が仮想空間内で行われる。図2は仮想空間の一例を示す。図2に示す仮想空間20は、互いに直交する3つの座標軸Xw,Yw,Zwが設定された仮想3次元空間である。
仮想空間20には、サッカーフィールドを表すオブジェクトであるフィールド22が配置される。フィールド22上にはゴールライン24及びタッチライン26が描かれている。二本のゴールライン24及び二本のタッチライン26に囲まれた矩形領域であるピッチ28内で試合は行われる。
フィールド22上には、サッカーゴールを表すオブジェクトであるゴール30が配置される。また、サッカーボール(移動物体)を表すオブジェクト(移動物体オブジェクト)であるボール32が仮想空間20に配置される。ゴール30の一方はユーザチームに関連づけられ、他方は敵チームに関連づけられる。いずれか一方のサッカーチームに関連づけられたゴール30内にボール32が移動すると、他方のサッカーチームの得点イベントが発生する。
また、ユーザチームに所属するサッカー選手を表すキャラクタオブジェクトであるキャラクタ34Aと、敵チームに所属するサッカー選手を表すキャラクタオブジェクトであるキャラクタ34Bとが仮想空間20に配置される。図2では一部省略されているが、ユーザチームに所属する11名のキャラクタ34Aと、敵チームに所属する11名のキャラクタ34Bとが仮想空間20に配置される。なお以下では、キャラクタ34A,34Bのことを総称して「キャラクタ34」と記載する場合がある。
仮想空間20には仮想カメラ36が設定される。この仮想カメラ36から見た仮想空間20を示すゲーム画面が表示部16に表示される。例えば、仮想カメラ36はボール32の移動に基づいて仮想空間20内を移動する。なお、ゲーム装置10では、ユーザが見たいと想定される仮想空間20内の領域がゲーム画面に表示されるように仮想カメラ36が制御されるようになっている。この点については後述する。
図3はゲーム画面の一例を示す。図3に示すゲーム画面40には、ボール32と、ユーザチームに所属する5名のキャラクタ34Aと、敵チームに所属する2名のキャラクタ34Bとが表示されている。
また、ゲーム画面40にはカーソル42が表示されている。カーソル42は、ユーザの操作対象になっているキャラクタ34Aを示す。なお、ユーザの操作対象は一のキャラクタ34Aに固定されるようにしてもよいし、ボール32の移動やユーザの切替操作に従って、ユーザチームに属するキャラクタ34Aのうちで切り替わるようにしてもよい。
ユーザの操作対象になっているキャラクタ34Aはユーザの操作に従って行動する。すなわち、ユーザの操作対象になっているキャラクタ34Aは、ユーザの移動指示操作に従って移動したり、ユーザのパス指示操作又はシュート指示操作に従ってパス又はシュートを行ったりする。
一方、ユーザチームに属するキャラクタ34Aのうちで、ユーザの操作対象になっていないキャラクタ34Aは行動制御データ(例えばAI(人工知能))に従って行動する。なお、敵チームに属するキャラクタ34Bも行動制御データに従って行動する。
なお以下では、ユーザの操作対象になっているキャラクタ34Aのことを「ユーザキャラクタ」と記載する。また、ユーザチームに属するキャラクタ34Aのうちで、ユーザの操作対象になっていないキャラクタ34Aのことを「味方キャラクタ」と記載する。敵チームに属するキャラクタ34Bのことを「敵キャラクタ」と記載する。
以下、上記のゲーム装置10において、ユーザが見たいと想定される仮想空間20内の領域がゲーム画面40に表示されるように仮想カメラ36を制御するための技術について説明する。
図4はゲーム装置10で実現される機能ブロックの一例を示す機能ブロック図である。図4に示すように、ゲーム装置10はデータ記憶部50、評価値算出部52、及び仮想カメラ設定部54を含む。
例えば、データ記憶部50は記憶部12又は光ディスクによって実現される。なお、データ記憶部50は、ゲーム装置10からアクセス可能な装置の記憶部によって実現されるようにしてもよい。ただし、この場合、データ記憶部50はゲーム装置10以外の装置に含まれることになる。
一方、評価値算出部52及び仮想カメラ設定部54は制御部11によって実現される。すなわち、制御部11がプログラムに従って処理を実行することによって、制御部11が評価値算出部52及び仮想カメラ設定部54として機能するようになる。
データ記憶部50について説明する。データ記憶部50はゲームを実行するために必要なデータを記憶する。
例えば、仮想空間20に配置されるオブジェクトのモデルデータがデータ記憶部50に記憶される。また、キャラクタ34のモーションデータがデータ記憶部50に記憶される。
また例えば、ゲーム(試合)の現在状況を示すゲーム状況データがデータ記憶部50に記憶される。例えば、下記に示すようなデータがゲーム状況データに含まれる。
(1)ボール32の状態データ(位置データ及び移動方向データ等)
(2)キャラクタ34の状態データ
(3)仮想カメラ36の状態データ(位置データ及び視線方向データ等)
(4)得点データ
(5)経過時間データ
図5はキャラクタ34の状態データの一例を示す。図5に示すように、キャラクタ34の状態データは「ID」、「ポジション」、「位置」、「移動方向」、「移動速度」、「動作情報」、「能力パラメータ」、「ボールフラグ」、及び「操作対象フラグ」フィールドを含む。
「ID」フィールドはキャラクタ34を一意に識別する識別情報を示す。なお、「P1」〜「P11」はユーザチームに属するキャラクタ34AのIDであり、「P21」〜「P31」は敵チームに属するキャラクタ34BのIDである。
「ポジション」フィールドはキャラクタ34のポジション(役割)を示し、例えば、フォワード(FW)、ミッドフィルダー(MF)、ディフェンダー(DF)、及びゴールキーパー(GK)のいずれかが「ポジション」フィールドに登録される。「位置」、「移動方向」、及び「移動速度」フィールドはキャラクタ34の位置、移動方向、及び移動速度を示す。
「動作情報」フィールドはキャラクタ34の動作に関する情報を示す。例えば、現在再生されているモーションデータの種類(現在行っている動作の種類)及びモーションデータにおける再生位置を示す情報が「動作情報」フィールドに記憶される。
「動作情報」フィールドに記憶される情報は上記情報に限られない。例えば、キャラクタ34がピッチ28内のある位置(例えばオープンスペース)に向かってダッシュしているような場合における当該位置も「動作情報」フィールドに記憶される。なお以下では、キャラクタ34がピッチ28内のある位置に向かってダッシュしているような場合における当該位置のことを「ダッシュ目標位置」と記載する。
「能力パラメータ」フィールドはキャラクタ34の能力の高さを示すパラメータを示す。例えば、ドリブル能力、パス能力、又はシュート能力等の攻撃能力に関するパラメータや、タックル能力又はマーク能力等の守備能力に関するパラメータが「能力パラメータ」フィールドに記憶される。
「ボールフラグ」フィールドはキャラクタ34がボール32を保持している否かを示す。例えば、値「0」又は「1」が「ボールフラグ」フィールドに登録される。値「0」はキャラクタ34がボール32を保持していないことを示し、値「1」はキャラクタ34がボール32を保持していることを示す。
「操作対象フラグ」フィールドはキャラクタ34がユーザの操作対象になっている否かを示す。例えば、値「0」又は「1」が「操作対象フラグ」フィールドに登録される。値「0」はキャラクタ34がユーザの操作対象になっていないことを示し、値「1」はキャラクタ34がユーザの操作対象になっていることを示す。
また例えば、味方キャラクタや敵キャラクタの行動を制御するための行動制御データがデータ記憶部50に記憶される。
また例えば、ユーザチームの戦術を示すデータがデータ記憶部50に記憶される。なお、ユーザはユーザチームのフォーメーションや作戦を試合前や試合中に設定することが可能であり、ユーザによって設定されたフォーメーションや作戦を示すデータがデータ記憶部50に記憶される。なお、ユーザが設定可能な作戦としては、例えば「カウンターアタック」、「サイドアタック」、又は「中央突破」等がある。なお、敵チームの戦術を示すデータもデータ記憶部50に記憶される。
評価値算出部52について説明する。評価値算出部52は、仮想空間20内に設定される複数の部分領域の各々の評価値を、仮想空間20内のオブジェクトの状態情報に基づいて算出する。
図6は仮想空間20内に設定される複数の部分領域の一例を示す。図6に示す例では、ピッチ28を短手方向(Zw軸方向)にM分割(9分割)し、かつ、長手方向(Xw軸方向)にN分割(15分割)することによって、M行(9行)*N列(15列)の升目状の部分領域60がピッチ28に仮想的に設定されている。
なお、図6において、ピッチ28の左側に記載されている数字は行番号を示し、ピッチ28の上側に記載されている数字は列番号を示す。また、以下では、第i行及び第j列の部分領域60のことを部分領域[i,j]と記載する。
評価値算出部52は各部分領域60の評価値を算出する。この評価値は、ユーザが部分領域60を見たいと考える可能性の高さを示すものである。すなわち、この評価値は、部分領域60をユーザに見せる必要性の高さを示すものである。言い換えれば、この評価値は、部分領域60をゲーム画面40に表示する必要性の高さを示すものである。このため、評価値算出部52は、ユーザが見たいと考える可能性が高い部分領域60の評価値が高くなるようにして、各部分領域60の評価値を算出する。
例えば、評価値算出部52は各部分領域60の評価値を初期設定する。図7は各部分領域60の初期評価値の一例を示す。図7に示すように、評価値算出部52はゴール30に近い部分領域60の初期評価値を高く設定し(例えば「5」に設定し)、ゴール30から離れた部分領域60の初期評価値を低く設定する(例えば「1」に設定する)。
また、評価値算出部52は、ボール32(又はボール32を保持するキャラクタ34)の状態情報に基づいて、各部分領域60の評価値を算出する。
ボール32が位置している部分領域60や、ボール32が付近にある部分領域60は、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52は、ボール32が位置している部分領域60や、ボール32が付近にある部分領域60の評価値を上げる。
図8は、この場合の評価値算出部52の動作について説明するための図である。なお、ここではボール32が部分領域[3,4]に位置している場合を想定する。
この場合、評価値算出部52は、第4列に属する部分領域60と、第4列に隣接する第3列及び第5列に属する部分領域60との評価値に所定係数(1より大きい値を有する係数:例えば1.5)を乗じる。なお、図8では評価値の小数点以下を四捨五入している。
要するに、ボール32が部分領域[i,j]に位置している場合、評価値算出部52は、第(j−n)列〜第(j+n)列の各列に属する部分領域60の評価値に所定係数を乗じる。なお、「n」は1以上の整数である。図8に示した例では「n」が「1」になっているが、「n」は2以上の数値であってもよい。
なお、ボール32(又はボール32を保持するキャラクタ34)の進行方向にある部分領域60も、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52は、ボール32(又はボール32を保持するキャラクタ34)の進行方向にある部分領域60の評価値を上げるようにしてもよい。
また、評価値算出部52は、味方キャラクタの状態情報に基づいて、各部分領域60の評価値を算出するようにしてもよい。
例えば、味方キャラクタがピッチ28内のある位置(例えばオープンスペース)に向かってダッシュしている場合、この味方キャラクタのダッシュ目標位置を含んでいる部分領域60や、味方キャラクタのダッシュ目標位置付近にある部分領域60は、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52は、味方キャラクタのダッシュ目標位置を含んでいる部分領域60や、味方キャラクタのダッシュ目標位置付近にある部分領域60の評価値を増加するようにしてもよい。
図9は、この場合の評価値算出部52の動作について説明するための図である。なお、ここでは味方キャラクタのダッシュ目標位置が部分領域[7,3]に含まれている場合を想定する。
この場合、評価値算出部52は、第4列に属する部分領域60の評価値と、第4列に隣接する第3列及び第5列に属する部分領域60の評価値とに所定係数(1より大きい値を有する係数:例えば1.5)を乗じる。
要するに、味方キャラクタのダッシュ目標位置が部分領域[i,j]に含まれている場合、評価値算出部52は、第(j−n)列〜第(j+n)列の各列に属する部分領域60の評価値に所定係数を乗じる。なお、「n」は1以上の整数である。図9に示した例では「n」が「1」になっているが、「n」は2以上の数値であってもよい。
なお、第3列及び第4列に属する部分領域60は、図8に示す場合と図9に示す場合の両方において所定係数が乗じられる。ここで、所定係数が「1.5」であるとすると、第3列及び第4列に属する部分領域60には「2.25」が乗じられることになる。なお、図9では評価値の小数点以下を四捨五入している。また、図8に示す場合における係数と、図9に示す場合における係数とは同じであってもよいし、異なっていてもよい。
また例えば、味方キャラクタが位置している部分領域60や、味方キャラクタ付近にある部分領域60は、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52は、味方キャラクタが位置している部分領域60や、味方キャラクタ付近にある部分領域60の評価値を上げるようにしてもよい。
また例えば、味方キャラクタの進行方向にある部分領域60も、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52は、味方キャラクタの進行方向にある部分領域60の評価値を上げるようにしてもよい。
また例えば、敵キャラクタがボール32を保持しているような場合、ユーザは敵チームのためのオープンスペース(すなわちユーザキャラクタ及び味方キャラクタが付近に位置していない領域)を把握したいと考えるため、敵チームのためオープンスペースに対応する部分領域60は、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52(領域取得手段)は敵チームのためのオープンスペースを取得し、敵チームのためのオープンスペースに対応する部分領域60の評価値を上げるようにしてもよい。
なお、評価値算出部52は、ユーザキャラクタの状態情報に基づいて、各部分領域60の評価値を算出するようにしてもよい。
例えば、ユーザはユーザキャラクタの周辺領域を見たいと考えるため、ユーザキャラクタが位置している部分領域60や、ユーザキャラクタ付近にある部分領域60は、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52は、ユーザキャラクタが位置している部分領域60や、ユーザキャラクタ付近にある部分領域60の評価値を上げるようにしてもよい。
また例えば、ユーザはユーザキャラクタの進行方向にある領域を見たいと考えるため、ユーザキャラクタの進行方向にある部分領域60も、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52は、ユーザキャラクタの進行方向にある部分領域60の評価値を上げるようにしてもよい。
また、評価値算出部52は、敵キャラクタの状態情報に基づいて、各部分領域60の評価値を算出するようにしてもよい。
例えば、ユーザはユーザチームのためのオープンスペース(すなわち敵キャラクタが付近に位置していないような領域)を把握したいと考えるため、ユーザチームのためのオープンスペースに対応する部分領域60は、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52(領域取得手段)はユーザチームのためのオープンスペースを取得し、ユーザチームのためのオープンスペースに対応する部分領域60の評価値を上げるようにしてもよい。
また、評価値算出部52は、能力が基準よりも高いキャラクタ34の状態情報に基づいて、各部分領域60の評価値を算出するようにしてもよい。
例えば、ユーザキャラクタがボール32を保持している場合、ユーザは攻撃能力が高い味方キャラクタの位置を把握したいと考えるため、攻撃能力が高い味方キャラクタが位置している部分領域60は、ユーザが見たいと考える可能性が高い部分領域60である。このため、ユーザチームに属するキャラクタ34Aがボール32を保持している場合に、評価値算出部52は、攻撃能力が基準よりも高い(すなわち攻撃能力パラメータの値が基準値よりも高い)味方キャラクタが位置している部分領域60の評価値を上げるようにしてもよい。
また例えば、敵キャラクタがボール32を保持している場合、ユーザは攻撃能力が高い敵キャラクタの位置を把握したいと考えるため、攻撃能力が高い敵キャラクタが位置している部分領域60は、ユーザが見たいと考える可能性が高い部分領域60である。このため、敵チームに属するキャラクタ34Bがボール32を保持している場合に、評価値算出部52は、攻撃能力が基準よりも高い(すなわち攻撃能力パラメータの値が基準値よりも高い)敵キャラクタが位置している部分領域60の評価値を上げるようにしてもよい。
また、評価値算出部52は、ユーザチームの戦術に関する戦術情報に基づいて、各部分領域60の評価値を算出するようにしてもよい。
例えば、ユーザはユーザチームの戦術に応じた領域の状況を把握したいと考える。例えば、ユーザチームの作戦が「サイドアタック」である場合、ユーザはタッチライン26の付近の領域の状況を把握したいと考える。このため、ユーザチームの戦術に対応する部分領域60は、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52は、ユーザチームの戦術に対応する部分領域60の評価値を上げるようにしてもよい。
また、評価値算出部52は、敵チームの戦術に関する戦術情報に基づいて、各部分領域60の評価値を算出するようにしてもよい。
例えば、敵キャラクタがボール32を保持している場合、敵チームの攻撃に備えるために、ユーザは敵チームの戦術に応じた領域の状況を把握したいと考える。例えば、敵チームの作戦が「サイドアタック」である場合、ユーザはタッチライン26の付近の領域の状況を把握したいと考える。このため、敵チームの戦術に対応する部分領域60は、ユーザが見たいと考える可能性が高い部分領域60である。このため、評価値算出部52は、敵チームの戦術に対応する部分領域60の評価値を上げるようにしてもよい。
仮想カメラ設定部54について説明する。仮想カメラ設定部54は、複数の部分領域60の各々の評価値に基づいて、仮想カメラ36の位置、視線方向、及び画角のうちの少なくとも一つを設定する。ゲーム装置10では、仮想カメラ設定部54によって設定された仮想カメラ36から見た仮想空間20を示すゲーム画面が表示部16に表示される。
図10及び図11は仮想カメラ36の設定方法の一例について説明するための図である。なお、図10において、符号「72L」は、仮想カメラ36の視野内の、視線方向38よりも左側の領域(以下「左側視野領域」と記載する。)を示す。また、符号「72R」は、仮想カメラ36の視野内の、視線方向38よりも右側の領域(以下「右側視野領域」と記載する。)を示す。
図10に示すように、仮想カメラ設定部54は仮想カメラ36の視線方向38を基本視線方向70に設定する。例えば、基本視線方向70は注視対象への方向である。なお例えば、「注視対象」はボール32(又はボール32を保持しているキャラクタ34)である。「注視対象」はユーザキャラクタであってもよい。
そして、仮想カメラ設定部54は、仮想カメラ36の左側視野領域72Lに含まれる部分領域60の評価値の合計値SLを算出する。また、仮想カメラ設定部54は、仮想カメラ36の右側視野領域72Rに含まれる部分領域60の評価値の合計値SRを算出する。
仮想カメラ設定部54は合計値SL,SRを比較する。そして、合計値SL,SRの比較結果に基づいて、仮想カメラ設定部54は仮想カメラ36の視線方向38を基本視線方向70から変更する。
例えば、合計値SLが合計値SRよりも大きい場合、図11に示すように、仮想カメラ設定部54は、仮想カメラ36の位置(視点位置)を回転の中心として基本視線方向70から反時計回りに角度θだけ回転してなる方向を、仮想カメラ36の視線方向38とする。
なお、角度θは合計値SLと合計値SRとの差に基づいて設定される。例えば、角度θは下記式(1)に基づいて設定される。
θ=f(|SL−SR|) ・・・ (1)
上記式(1)において、関数fは、合計値SLと合計値SRとの差に基づいて角度θを算出するための関数であり、関数fは、合計値SLと合計値SRとの差の絶対値が大きいほど、角度θが大きくなるように設定される。
一方、合計値SRが合計値SLよりも大きい場合、仮想カメラ設定部54は、仮想カメラ36の位置(視点位置)を回転の中心として基本視線方向70から時計回りに角度θだけ回転してなる方向を、仮想カメラ36の視線方向38とする。なお、角度θは上記式(1)に基づいて設定される。
なお、仮想カメラ36の設定方法は以上に説明した例に限られない。図12は仮想カメラ36の設定方法の他の一例について説明するための図である。
図12に示すように、仮想カメラ設定部54は、仮想カメラ36の視線方向38の候補である複数の視線方向候補80A〜80Gを設定する。視線方向候補80Aは注視対象への方向である。例えば、「注視対象」はボール32(又はボール32を保持しているキャラクタ34)であり、視線方向候補80Aは図10における基本視線方向70と同様である。なお、「注視対象」はユーザキャラクタであってもよい。
視線方向候補80Bは、仮想カメラ36の位置(視点位置)を回転の中心として視線方向候補80Aから反時計回りに角度Δθだけ回転してなる方向である。さらに、視線方向候補80Cは、仮想カメラ36の位置を回転の中心として視線方向候補80Bから反時計回りに角度Δθだけ回転してなる方向である。また、視線方向候補80Dは、仮想カメラ36の位置を回転の中心として視線方向候補80Cから反時計回りに角度Δθだけ回転してなる方向である。
また、視線方向候補80Eは、仮想カメラ36の位置を回転の中心として視線方向候補80Aから時計回りに角度Δθだけ回転してなる方向である。さらに、視線方向候補80Fは、仮想カメラ36の位置を回転の中心として視線方向候補80Eから時計回りに角度Δθだけ回転してなる方向である。また、視線方向候補80Gは、仮想カメラ36の位置を回転の中心として視線方向候補80Fから時計回りに角度Δθだけ回転してなる方向である。
仮想カメラ設定部54は仮想カメラ36の視線方向38を視線方向候補80Aに設定し、仮想カメラ36の視野に含まれる部分領域60の評価値の合計値SAを算出する。また、仮想カメラ設定部54は、仮想カメラ36の視線方向38を視線方向候補80Bに設定し、仮想カメラ36の視野に含まれる部分領域60の評価値の合計値SBを算出する。同様に、仮想カメラ設定部54は、仮想カメラ36の視線方向38を視線方向候補80C,80D,80E,80F,80Gに設定した場合の上記合計値SC,SD,SE,SF,SGをそれぞれ算出する。
そして、仮想カメラ設定部54は、複数の視線方向候補80A〜80Gのうちで上記合計値が最も大きい視線方向候補を仮想カメラ36の視線方向38として設定する。
図13は仮想カメラ36の設定方法の他の一例について説明するための図である。
仮想カメラ設定部54は、注視対象への方向90を仮想カメラ36の視線方向38として設定する。例えば、「注視対象」はボール32(又はボール32を保持しているキャラクタ34)である。なお、「注視対象」はユーザキャラクタであってもよい。
そして、仮想カメラ設定部54は、仮想カメラ36の視野に含まれる部分領域60の評価値の合計値Sを算出し、この合計値Sが基準合計値以上であるか否かを判定する。
合計値Sが基準合計値未満である場合、仮想カメラ36の視野に含まれる部分領域60の数を増やすべく、仮想カメラ設定部54は、注視対象から離れるように(すなわち仮想カメラ36と注視対象との間の距離が大きくなるように)、仮想カメラ36を移動させる。例えば、仮想カメラ設定部54は、仮想カメラ36から注視対象への方向90とは逆の方向92に仮想カメラ36を所定距離移動させる。そして、仮想カメラ設定部54は、仮想カメラ36の視野に含まれる部分領域60の評価値の合計値Sを算出し、この合計値Sが基準合計値以上であるか否かを判定する。
合計値Sが基準合計値以上になるまで仮想カメラ設定部54は上記処理を実行する。合計値Sが基準合計値以上である場合、仮想カメラ設定部54はその位置を仮想カメラ36の位置として決定する。
なお、合計値Sが基準合計値未満である場合、仮想カメラ36の視野に含まれる部分領域60の数を増やすべく、仮想カメラ設定部54は仮想カメラ36の画角を大きくするようにしてもよい。すなわち、合計値Sが基準合計値以上になるまで、仮想カメラ設定部54は仮想カメラ36の画角を徐々に大きくするようにしてもよい。
あるいは、合計値Sが基準合計値未満である場合、仮想カメラ設定部54は、仮想カメラ36の位置を回転の中心として仮想カメラ36の視線方向38を反時計回り又は時計回りに回転させるようにしてもよい。すなわち、合計値Sが基準合計値以上になるまで、仮想カメラ設定部54は、仮想カメラ36の視線方向38を反時計回り又は時計回りに徐々に回転させるようにしてもよい。
次に、以上に説明した機能ブロックを実現するためにゲーム装置10で実行される処理について説明する。図14及び図15はゲーム装置10で実行される処理の一例を示すフロー図である。図14及び図15はゲーム装置10で実行される処理のうち、仮想カメラ36の設定に関する処理を示している。制御部11がプログラムに従って図14及び図15に示す処理を実行することによって、制御部11が評価値算出部52及び仮想カメラ設定部54として機能するようになる。
なお、図14及び図15に示す処理では、説明の簡便のため、ボール32の位置と味方キャラクタのダッシュ目標位置とを考慮して仮想カメラ36を設定する場合について示している。ただし、上述した他の情報を考慮して仮想カメラ36を設定する場合にも同様の処理を実行するようにすればよい。
図14に示すように、制御部11(評価値算出部52)は各部分領域60の評価値を初期化する(S101)。なお、各部分領域60の初期評価値は予め定められており、記憶部12又は光ディスクに記憶されている。
その後、制御部11はボール32が位置している部分領域[i,j]を検出する(S102)。そして、制御部11(評価値算出部52)は、第j−1列〜第j+1列の各列に属する各部分領域60の評価値に係数(例えば1.5)を乗じる(S103)。
また、制御部11は、ピッチ28内のある位置に向けてダッシュしている味方キャラクタが存在しているか否かを判定する(S104)。ピッチ28内のある位置に向けてダッシュしている味方キャラクタが存在している場合、制御部11は、味方キャラクタのダッシュ目標位置が位置している部分領域[i,j]を検出する(S105)。そして、制御部11(評価値算出部52)は、第j−1列〜第j+1列の各列に属する各部分領域60の評価値に係数(例えば1.5)を乗じる(S106)。
ステップS101〜S106が実行された後、制御部11(仮想カメラ設定部54)は仮想カメラ36を設定するための処理(図15のS107〜S116)を実行する。
すなわち、図15に示すように、制御部11は仮想カメラ36の視線方向38を基本視線方向70に設定する(S107)。そして、制御部11は、仮想カメラ36の左側視野領域72Lに含まれる部分領域60の評価値の合計値SLを算出する(S108)。また、制御部11は、仮想カメラ36の右側視野領域72Rに含まれる部分領域60の評価値の合計値SRを算出する(S109)。
その後、制御部11は合計値SLが合計値SRよりも大きいか否かを判定する(S110)。合計値SLが合計値SRよりも大きい場合、制御部11は、合計値SLから合計値SRを引くことによって得られる値を関数fに代入することによって、角度θを算出する(S111)。先述したように、関数fは、合計値SLと合計値SRとの差に基づいて角度θを算出するための関数である。そして、制御部11は、仮想カメラ36の位置(視点位置)を回転の中心として基本視線方向70から反時計回りに角度θだけ回転してなる方向を、仮想カメラ36の視線方向38として設定する(S112)。
一方、合計値SLが合計値SRよりも大きくない場合、制御部11は、合計値SRが合計値SLよりも大きいか否かを判定する(S113)。合計値SRが合計値SLよりも大きい場合、制御部11は、合計値SRから合計値SLを引くことによって得られる値を関数fに代入することによって、角度θを算出する(S114)。そして、制御部11は、仮想カメラ36の位置(視点位置)を回転の中心として基本視線方向70から時計回りに角度θだけ回転してなる方向を、仮想カメラ36の視線方向38として設定する(S115)。
ステップS113において、合計値SRが合計値SLよりも大きくないと判定された場合とは、合計値SRと合計値SLとが等しい場合である。この場合、制御部11は基本視線方向70を仮想カメラ36の視線方向38として設定する(S116)。
ステップS112,S115,S116が実行された後、制御部11は、仮想カメラ36から見た仮想空間20を示すゲーム画面40を表示部16に表示する(S117)。
以上に説明したゲーム装置10ではピッチ28内に複数の部分領域60が設定され、各部分領域60の評価値が算出される。この場合、ユーザが見たいと考える可能性が高い部分領域60の評価値が高くなるようにして、各部分領域60の評価値が算出される。そして、このようにして算出された各部分領域60の評価値に基づいて、仮想カメラ36の位置、向きや画角が設定される。ゲーム装置10によれば、ユーザが見たい仮想空間20内の領域がゲーム画面40に表示されるように図ることが可能になる。
なお、本発明は以上に説明した実施形態に限定されるものではない。
[1]例えば、評価値が高い部分領域60が仮想カメラ36の視野外に位置している場合、仮想カメラ設定部54は、当該部分領域60が仮想カメラ36の視野に含まれるように、仮想カメラ36を設定するようにしてもよい。
例えば、評価値が基準値以上である部分領域60が仮想カメラ36の視野外に位置している場合、仮想カメラ設定部54は、当該部分領域60が仮想カメラ36の視野に含まれるようになるまで、仮想カメラ36を後方(仮想カメラ36から注視対象への方向とは逆方向)に移動させるようにしてもよい。
[2]例えば、評価値算出部52はゲームの現在状況に基づいて部分領域60の数及び大きさを変えるようにしてもよい。言い換えれば、評価値算出部52は、ピッチ28を複数の部分領域60に分割する場合の分割の細かさを、ゲームの現在状況に基づいて変えるようにしてもよい。図16はこの場合の評価値算出部52の動作について説明するための図である。
例えば、評価値算出部52は、ボール32(又はボール32を保持しているキャラクタ34)が所定領域内に位置しているか否かに基づいて、部分領域60の数及び大きさを変えるようにしてもよい。
より具体的には、ゴールライン24への垂線距離が基準距離D以下である領域94内にボール32(又はボール32を保持しているキャラクタ34)が位置している場合には、上記領域94内にボール32(又はボール32を保持しているキャラクタ34)が位置していない場合に比べて、評価値算出部52は部分領域60の数を多くし、かつ、部分領域60の大きさ(面積)を小さく設定するようにしてもよい。
つまり、上記領域94内にボール32が位置している場合には、上記領域94内にボール32が位置していない場合に比べて、評価値算出部52はピッチ28の短手方向の分割数(M)及び長手方向の分割数(N)を多くするようにしてもよい。例えば図16に示す例では、図6に示す例に比べて、ピッチ28の短手方向の分割数(M)及び長手方向の分割数(N)がそれぞれ2倍になっている。すなわち、図16に示す例では、ピッチ28を短手方向に18分割し、かつ、長手方向に30分割することによって、18行*30列の部分領域60がピッチ28に仮想的に設定されている。
このようにすれば、ボール32がゴール30前に位置している場面では部分領域60が細かく設定されるようになる。部分領域60が細かく設定されている場合には、ボール32やキャラクタ34が少し動いただけでも、部分領域60の評価値に変化が生じるようになり、それに応じて、仮想カメラ36の位置や向きも変化するようになる。このため、以上のようにすれば、ボール32がゴール30前に位置している場面においてキャラクタ34の動きに合わせて素早く仮想カメラ36の位置や向きを変えることができるようになる。その結果、ゴール30前におけるキャラクタ34の動きがゲーム画面40に表示されるようになる。
[3]例えば、操作部25は、ユーザによって指定されたゲーム画面40内の位置を検出するための検出部を含むようにしてもよい。例えば、操作部25はタッチパネルを含むようにしてもよい。
この場合、評価値算出部52は、検出部の検出結果に関する検出結果情報を取得するようにしてもよい。そして、評価値算出部52は上記検出結果情報に基づいて各部分領域60の評価値を算出するようにしてもよい。例えば、評価値算出部52は、ユーザによって指定されたゲーム画面40内の位置に対応する部分領域60の評価値を下げるようにしてもよい。例えば、ユーザがタッチパネル上に指を接触させている場合、ユーザの指が接触しているタッチパネル上の位置に対応するゲーム画面40内の位置はユーザの指によって隠れてしまうため、ユーザから見え難くなる。このため、以上のようにすることによって、ユーザから見え難い位置の評価値を下げるようにしてもよい。
[4]例えば、本発明は、図17に示すようなゲームシステム100にも適用することが可能である。図17に示すゲームシステム100はゲーム装置10とゲームサーバ102とを含んでいる。ゲームサーバ102は例えば制御部等を備えたサーバコンピュータである。
ゲームシステム100では、ゲーム装置10とゲームサーバ102とが通信ネットワーク104を介してデータを授受することによってゲームが実行される。
例えば、ゲームシステム100では、ゲームサーバ102に備えられた記憶部、又はゲームサーバ102からアクセス可能な装置に備えられた記憶部にゲーム状況データ等が記憶される。
また、ゲームシステム100では、ゲーム装置10において行われた操作に関するデータがゲーム装置10からゲームサーバ102に送信される。ゲームサーバ102では、ゲーム装置10から送信されたデータに基づいて、ゲーム状況データが更新される。そして、ゲーム状況データの更新内容を示すデータがゲームサーバ102からゲーム装置10に送信される。ゲーム装置10では、ゲームサーバ102から送信されたデータに基づいて、ゲーム画面40が表示部16に表示される。
この場合、仮想カメラ36の設定をゲーム装置10において実行するようにしてもよいし、ゲームサーバ102において実行するようにしてもよい。すなわち、評価値算出部52及び仮想カメラ設定部54をゲーム装置10において実現するようにしてもよいし、ゲームサーバ102において実現するようにしてもよい。
また、上記の場合、評価値算出部52及び仮想カメラ設定部54の一方をゲームサーバ102において実現し、他方をゲーム装置10において実現するようにしてもよい。
例えば、評価値算出部52をゲームサーバ102において実現し、仮想カメラ設定部54をゲーム装置10において実現するようにしてもよい。この場合、評価値算出部52の算出結果を示すデータをゲームサーバ102からゲーム装置10に送信し、ゲーム装置10では、ゲームサーバ102から送信されたデータに基づいて、仮想カメラ設定部54が仮想カメラ36を設定するようにすればよい。
あるいは、評価値算出部52をゲーム装置10において実現し、仮想カメラ設定部54をゲームサーバ102において実現するようにしてもよい。この場合、評価値算出部52の算出結果を示すデータをゲーム装置10からゲームサーバ102に送信し、ゲームサーバ102では、ゲーム装置10から送信されたデータに基づいて、仮想カメラ設定部54が仮想カメラ36を設定するようにすればよい。
なお、ゲームシステム100では、ゲームサーバ102においてゲーム状況データが更新された場合に、更新後の現在状況データに基づいてゲームサーバ102がゲーム画面40を生成するようにしてもよい。そして、生成されたゲーム画面40を示すデータがゲームサーバ102からゲーム装置10に送信されるようにしてもよい。
[5]以上では、本発明をサッカーゲームに適用した場合について説明した。しかしながら、本発明はサッカーゲーム以外のスポーツゲームにも適用することが可能である。例えば、本発明は、移動物体(ボール又はパック)を用いて行われる競技を模したゲーム(野球ゲーム、バスケットボールゲーム、又はアメリカンフットボールゲーム等)にも適用することが可能である。また、本発明はスポーツゲーム以外のゲームにも適用することが可能である。例えば、ユーザの操作対象であるユーザキャラクタグループと敵キャラクタグループとが仮想空間内で戦闘するようなゲームにも本発明は適用することができる。