以下、本発明の実施形態の一例について図面に基づき詳細に説明する。本発明の実施形態に係るゲーム装置は、例えば家庭用ゲーム機(据置型ゲーム機)、携帯ゲーム機、携帯電話機、携帯情報端末(PDA)、パーソナルコンピュータ、又はサーバコンピュータによって実現される。以下では、本発明の実施形態に係るゲーム装置を家庭用ゲーム機によって実現する場合について説明する。
図1は本発明の実施形態に係るゲーム装置のハードウェア構成を示す。図1に示すように、ゲーム装置10は家庭用ゲーム機11、表示部30、音声出力部31、光ディスク32、及びメモリカード33を含む。表示部30及び音声出力部31は家庭用ゲーム機11に接続される。表示部30は、例えば家庭用テレビ又は液晶モニタであり、音声出力部31は、例えば家庭用テレビに内蔵されたスピーカ又はヘッドホンである。光ディスク32及びメモリカード33は情報記憶媒体であり、家庭用ゲーム機11に装着される。
家庭用ゲーム機11は公知のコンピュータゲームシステムである。家庭用ゲーム機11はバス12、制御部13、主記憶14、画像処理部15、音声処理部16、光ディスクドライブ17、メモリカードスロット18、通信インタフェース(I/F)19、コントローラインタフェース(I/F)20、及び操作受付部21を含む。
バス12はアドレス及びデータを家庭用ゲーム機11の各部でやり取りするためのものである。制御部13、主記憶14、画像処理部15、音声処理部16、光ディスクドライブ17、メモリカードスロット18、通信インタフェース19、及びコントローラインタフェース20は、バス12によって相互データ通信可能に接続される。
制御部13は、図示しないROMに格納されるオペレーティングシステムや、光ディスク32又はメモリカード33から読み出されるプログラムに基づいて、家庭用ゲーム機11の各部の制御処理や情報処理を実行する。主記憶14は例えばRAMを含み、光ディスク32又はメモリカード33から読み出されたプログラム及びデータが必要に応じて書き込まれる。主記憶14は制御部13の作業用としても用いられる。
画像処理部15はVRAMを含み、制御部13によって供給される画像データに基づいてVRAM上にゲーム画面を描画する。そして画像処理部15は、そのゲーム画面をビデオ信号に変換して所定のタイミングで表示部30に出力する。音声処理部16はサウンドバッファを含み、光ディスク32からサウンドバッファに読み出された各種音声データ(ゲーム音楽、ゲーム効果音、メッセージ等)を音声出力部31から出力する。
光ディスクドライブ17は、光ディスク32に記録されたプログラムやデータを読み取る。ここではプログラムやデータを家庭用ゲーム機11に供給するために光ディスク32を用いることとするが、例えばメモリカード33等の他のあらゆる情報記憶媒体を用いるようにしてもよい。なお、インターネット等のデータ通信網を介して遠隔地からプログラムやデータを家庭用ゲーム機11に供給するようにしてもよい。
メモリカードスロット18はメモリカード33を装着するためのインタフェースである。メモリカード33は不揮発性メモリ(例えばEEPROMなど)を含み、例えばセーブデータなどの各種ゲームデータを記憶する。通信インタフェース19は、インターネットなどのデータ通信網に通信接続するためのインタフェースである。コントローラインタフェース20は複数のコントローラ23を無線接続するためのインタフェースである。なお、コントローラインタフェース20はコントローラ23を有線接続するためのインタフェースとしてもよい。
操作受付部21はユーザの操作を受け付けるためのものである。操作受付部21は、発光部22と、1又は複数のコントローラ23と、を含む。図2は操作受付部21の一例を示し、図3はコントローラ23の一例を示す。
図2に示すように、発光部22は複数の光源を含み、表示部30の上部に配置される。図2に示す例では、発光部22の両端部に光源34a,34bが設けられている。なお、発光部22は表示部30の下部に配置されるようにしてもよい。
図3に示すように、コントローラ23はユーザが操作を行うための操作手段である。コントローラ23は略直方体の形状を有し、コントローラ23の表面23aには方向ボタン27及びボタン28a,28b,28cが設けられている。また、図1に示すように、コントローラ23は撮像部24及び撮影画像解析部25を含む。撮像部24は例えばCCD等の撮像素子であり、コントローラ23の前端部23b(一の側面)に設けられる。
撮影画像解析部25は例えばマイクロプロセッサ等であり、コントローラ23に内蔵される。ユーザがコントローラ23の前端部23bを表示部30の方に向けると、撮像部24の撮影画像には光源34a,34bが写し出される。撮影画像解析部25は、撮像部24の撮影画像に写し出された光源34a,34bの位置を解析する。そして、この解析結果に基づいて、コントローラ23の前端部23bが指し示す位置が取得される。このため、操作受付部21は、表示部30に表示されるゲーム画面上の位置をユーザが指し示すためのポインティングデバイスとして用いられる。なお、以下では、コントローラ23の前端部23bが指し示す位置のことを単に「コントローラ23の指示位置」と記載する。
コントローラ23から制御部13に対しては、一定周期ごと(例えば1/60秒ごと)にコントローラ23の状態を表す操作信号がコントローラインタフェース20を介して供給される。この操作信号には、例えば、コントローラ23を識別する識別情報と、撮影画像解析部25の解析結果を示す情報と、方向ボタン27及びボタン28a,28b,28cの押下状態を示す情報と、が含まれる。制御部13は、コントローラ23から供給される操作信号に基づいて、コントローラ23の方向ボタン27及びボタン28a,28b,28cの押下状態やコントローラ23の指示位置を判断する。
ゲーム装置10では、例えば、ユーザによって操作されるユーザキャラクタグループと、ユーザキャラクタグループと対立する敵キャラクタグループと、の間で移動物体を用いて行われる競技のゲームが実行される。以下では、サッカーゲームが実行される場合について説明する。このサッカーゲームでは、ユーザによって操作されるチーム(以下「ユーザチーム」と記載する。)と、対戦相手(コンピュータ又は他のユーザ)によって操作されるチーム(以下「敵チーム」と記載する。)と、の間のサッカーの試合が行われる。また、このサッカーゲームは、光ディスク32から読み出されたプログラムが実行されることによって実現される。
サッカーゲームのゲーム画面を表示するためにゲーム空間が主記憶14に構築される。図4はゲーム空間の一例を示す図である。図4に示すゲーム空間40は、3つの座標軸(Xw,Yw,Zw)が設定された仮想3次元空間である。図4に示すように、サッカーのフィールドを表すオブジェクトであるフィールド41がゲーム空間40に配置される。フィールド41には例えばゴールライン42やタッチライン43が表される。サッカーの試合は、二本のゴールライン42と二本のタッチライン43とによって囲まれた領域であるピッチ44内で行われる。
フィールド41上には、ゴールを表すオブジェクトであるゴール45と、サッカー選手を表すオブジェクトである選手キャラクタ46と、サッカーボールを表すオブジェクトであるボール47と、が配置される。実際には、ユーザチームに所属する11名の選手キャラクタ46と、敵チームに所属する11名の選手キャラクタ46と、がフィールド41上に配置されるが、図4では省略されている。
一方のゴール45はユーザチームに関連づけられ、他方のゴール45は敵チームに関連づけられる。一方のチームに関連づけられたゴール45内にボール47が移動すると、他方のチームの得点イベントが発生する。
選手キャラクタ46とボール47とが近づくと、所定条件の下、その選手キャラクタ46とボール47とが関連づけられる。この場合、選手キャラクタ46の移動動作はドリブル動作になる。以下では、選手キャラクタ46にボール47が関連づけられた状態のことを「選手キャラクタ46がボール47を保持している」というように記載する。
ゲーム空間40には仮想カメラ48(視点)が設定される。この仮想カメラ48から見たゲーム空間40を表すゲーム画面が表示部30に表示される。例えば、ボール47が常にゲーム画面に表示されるように、仮想カメラ48はボール47の移動に基づいてゲーム空間40内を移動する。
図5はゲーム画面50の一例を示す。図5に示すように、ゲーム画面50には、仮想カメラ48から見たゲーム空間40を表す画像が表示される。図5において、選手キャラクタ46a,46b,46c,46dはユーザチームに所属する選手キャラクタ46であり、選手キャラクタ46e,46fは敵チームに所属する選手キャラクタ46である。
ゲーム画面50には経過時間51や得点52も表示される。さらに、ゲーム画面50には、ユーザが指し示す位置(すなわち、コントローラ23の指示位置)を示すカーソル53も表示される。カーソル53の中心点53aが、ユーザが指し示す位置と一致するようにしてカーソル53は表示される。図5ではカーソル53の形状が円形状になっているが、円形以外の形状であってもよい。
ユーザチーム又は敵チームに所属する選手キャラクタ46は、原則として、AI(人工知能)に従って行動する。ただし、ユーザは、ユーザチームに所属する選手キャラクタ46に対して指示を与えることができる。
例えば、ユーザチームに所属する選手キャラクタ46に対して移動方向を指示する場合、ユーザは指示を与えたい選手キャラクタ46を選択する。具体的には、ユーザは指示を与えたい選手キャラクタ46をコントローラ23の前端部23bで指し示す。この場合、ユーザは、カーソル53を該選手キャラクタ46が表示されている位置まで移動する。そして、カーソル53内に選手キャラクタ46の少なくとも一部が含まれた状態で、ユーザが選択ボタン(例えばボタン28b)を押下すると、該選手キャラクタ46が指示対象として選択される。
指示対象として選択された選手キャラクタはカーソル53の位置(カーソル53の表示位置に対応するゲーム空間40内の位置)に向かって移動する。このため、ユーザは、指示対象として選択された選手キャラクタ46の移動方向をコントローラ23の前端部23bで指し示すことによって指示できる。
また、ユーザチームに所属する選手キャラクタ46がボール47を保持している場合、ユーザは、その選手キャラクタ46に他の選手キャラクタ46へのパスを指示することができる。この場合、ユーザは、ボール47を保持している選手キャラクタ46を指示対象として選択する。この手順は、ユーザチームに所属する選手キャラクタ46に移動方向を指示する場合と同様である。
ボール47を保持している選手キャラクタ46を指示対象として選択した後、ユーザはパス相手に設定したい選手キャラクタ46を選択する。すなわち、ユーザはパス相手に設定したい選手キャラクタ46をコントローラ23の前端部23bで指し示し、パスボタン(例えばボタン28a)を押下する。この場合、コントローラ23の前端部23bによって指し示されている選手キャラクタ46がパス相手として選択される。そして、パス相手として選択された選手キャラクタ46へのパスが実行される。
また、ユーザチームに所属する選手キャラクタ46に対して守備動作を指示する場合、ユーザは例えば敵チームに所属する選手キャラクタ46をマーク対象として選択する。すなわち、ユーザはマーク対象として設定したい敵チームに所属する選手キャラクタ46をコントローラ23の前端部23bで指し示し、選択ボタン(例えばボタン28b)を押下する。この場合、コントローラ23の前端部23bで指し示された選手キャラクタ46がマーク対象として選択される。さらに、ユーザチームに所属する選手キャラクタ46のうちで、マーク対象として選択された選手キャラクタ46に最も近い選手キャラクタ46がマーカーとして選択される。マーク対象として選択された選手キャラクタ46とマーカーとして選択された選手キャラクタ46とは関連づけられる。マーカーとして選択された選手キャラクタ46は、マーク対象として選択された選手キャラクタ46に対する守備を開始する。
上記のサッカーゲームでは、ユーザが指示対象やマーク対象の選択操作を円滑に行えない場合がある。例えば、熟練度の低いユーザは所望の選手キャラクタ46をコントローラ23の前端部23bで正確に指し示すことが困難である場合がある。また例えば、複数の選手キャラクタ46が密集している場合、ユーザが所望の選手キャラクタ46以外の選手キャラクタ46を誤って選択してしまう場合がある。
この点、ゲーム装置10は、指示対象又はマーク対象の選手キャラクタ46の選択操作を補助するための機能を備えている。具体的には、ユーザが指示した位置(コントローラ23の指示位置)の履歴やゲーム状況(試合状況)を考慮して、指示対象又はマーク対象の選手キャラクタ46の選択操作が補助されるようになっている。以下、この機能を実現するための構成について詳細に説明する。
図6は、ゲーム装置10で実現される機能を示す機能ブロック図である。図6に示すように、ゲーム装置10は、記憶部60、指示位置取得部61、選択候補取得部62、第1選択部63、第2選択部64、ゲーム処理実行部65、及び表示制御部66を含む。記憶部60は、例えば主記憶14、光ディスク32、及びメモリカード33によって実現され、その他の機能ブロックは制御部13が光ディスク32に記憶されたプログラムを実行することによって実現される。
表示制御部66は、複数の選択候補が表示されたゲーム画面を表示部30に表示させる。本実施形態の場合、表示制御部66は、後述の記憶部60の記憶内容に基づいて、例えば図5に示したようなゲーム画面50を表示部30に表示させる。本実施形態の場合、ゲーム画面50に表示される複数の選手キャラクタ46が「複数の選択候補」に含まれる。例えば、図5に示すゲーム画面50の場合、選手キャラクタ46a〜46fが「複数の選択候補」に含まれる。
記憶部60はゲームを実行するために必要なデータを記憶する。例えば、記憶部60(位置情報記憶手段)は、複数の選択候補の位置に関する位置情報を記憶する。また例えば、記憶部60(ゲーム状況情報記憶手段)は、ゲームの状況に関するゲーム状況情報を記憶する。
例えば、記憶部60は下記に示すような情報を記憶する。
(1)各選手キャラクタ46の状態を示す情報(位置、姿勢、移動方向及び移動速度等)
(2)ボール47の状態を示す情報(位置、移動方向及び移動速度等)
(3)ボール47を保持している選手キャラクタ46を示す情報
(4)仮想カメラ48の状態を示す情報(位置、視線方向及び画角等)
(5)カーソル53の位置を示す情報
(6)経過時間を示す情報
(7)両チームの得点を示す情報
なお、選手キャラクタ46の状態を示す情報には、選手キャラクタ46がユーザの指示対象に設定されているか否かを示す情報や、選手キャラクタ46がマーク対象又はマーカーとして設定されているか否かを示す情報が含まれる。
また、記憶部60(数値情報記憶手段)は各選手キャラクタ46の能力に関する能力パラメータを記憶する。能力パラメータは選手キャラクタ46の能力の高さを示す数値情報である。例えば、能力パラメータは0〜100の数値をとり、能力パラメータの値が高いほど、能力が高いことを示す。
記憶部60には攻撃能力に関するパラメータと守備能力に関するパラメータとが記憶される。攻撃能力に関するパラメータは、例えば、ドリブル能力に関するドリブルパラメータ、パス能力に関するパスパラメータや、シュート能力に関するシュートパラメータ等である。一方、守備能力に関するパラメータは、例えば、マーク能力に関するマークパラメータや、タックル能力に関するタックルパラメータ等である。
さらに、記憶部60(ゲーム状況情報記憶手段)は各選手キャラクタ46の疲労度に関する疲労度パラメータを記憶する。疲労度パラメータは選手キャラクタ46の疲労の程度を示す数値情報である。例えば、疲労度パラメータは0〜100の数値をとり、疲労度パラメータの値が高い程、選手キャラクタ46の疲労度が高いことを示す。
例えば、疲労度パラメータの初期値は0に設定される。選手キャラクタ46の疲労度パラメータの値は、時間経過と選手キャラクタ46が行った動作との少なくとも一方に基づいて更新される。例えば、選手キャラクタ46が動作(例えば、走行、ドリブル、パス、又はシュート等)を行うごとに、その選手キャラクタ46の疲労度パラメータの値が増加される。また例えば、所定時間(例えば1/60秒)ごとに、選手キャラクタ46の疲労度パラメータの値が増加される。そして、この疲労度パラメータの値がある程度の値に達すると、選手キャラクタ46の能力に関する能力パラメータの値が低下する。
指示位置取得部61はユーザの指示位置を取得する。本実施形態の場合、コントローラ23の指示位置が「ユーザの指示位置」に相当する。
選択候補取得部62は、ユーザの現在及び過去における指示位置と、複数の選択候補の現在又は/及び過去における位置と、に基づいて、複数の選択候補のうちの一又は複数を取得する。上述したように、本実施形態の場合、選手キャラクタ46が「選択候補」に相当する。
本実施形態の場合、選択候補取得部62は、ユーザの過去における指示位置に基づいて設定される対象領域内に選手キャラクタ46の過去における位置が含まれるか否かの判定結果と、ユーザの現在における指示位置に基づいて設定される対象領域内に選手キャラクタ46の現在における位置が含まれるか否かの判定結果と、に基づいて、複数の選択候補である複数の選手キャラクタ46のうちの一又は複数の選手キャラクタ46を取得する。以下、詳細について説明する。
例えば、選択候補取得部62は、現在の時点と現在から所定時間(本実施形態の場合、1/2秒とする。)前の時点との間の対象期間内の各時点に関する「その時点におけるユーザの指示位置に基づいて設定される対象領域内にその時点における選手キャラクタ46の位置が含まれていたか否かの判定結果」に基づいて、複数の選択候補である複数の選手キャラクタ46のうちの一又は複数の選手キャラクタ46を取得する。原則として、選択候補取得部62は、上記対象期間内の各時点において、その時点におけるユーザの指示位置に基づいて設定される対象領域内に含まれていた選手キャラクタ46を取得する。
本実施形態の場合、選択候補取得部62は判断部67を含む。判断部67は、ユーザの指示位置(コントローラ23の指示位置)を所定時間(本実施形態の場合、1/60秒とする。)ごとに取得する。そして、ユーザの指示位置を取得するごとに(すなわち、所定時間ごとに)、判断部67は、その指示位置に基づいて設定される対象領域内に含まれる選手キャラクタ46を判断する。図7は対象領域の一例について示す図である。図7に示すように、例えば、対象領域71は、ユーザの指示位置70からの距離が基準距離(r)以下であるような領域である。判断部67は、複数の選手キャラクタ46の各々について、その選手キャラクタ46が対象領域71内に含まれるか否かを判定することによって、対象領域71内に含まれる選手キャラクタ46を判断する。
記憶部60には、判断部67の判断結果の履歴に関する情報が記憶される。図8は、記憶部60に記憶される履歴テーブルの一例を示す図である。図8に示す履歴テーブルは、現在の時点と現在から所定時間(1/2秒)前の時点との間の対象期間におけるユーザの指示位置及び判断部67の判断結果の履歴を示す情報である。
上述したように、ユーザの指示位置の取得と判断部67による判断は所定時間(1/60秒)ごとに実行される。このため、図8に示す履歴テーブルには、上記対象期間において所定時間(1/60秒)ごとに取得されたユーザの指示位置と、上記対象期間において所定時間(1/60秒)ごとに行われた判断部67の判断結果と、が記録される。
図8に示す履歴テーブルの各レコードは「時点」、「ユーザの指示位置」、及び「判断結果」フィールドを含む。「時点」フィールドは、ユーザの指示位置及び判断部67の判断結果が取得された時点を示す。この時点は、例えば試合が開始されてからの経過時間によって表される。「時点」フィールドには、例えば、試合が開始されてからの経過時間を1/60秒単位で表す数値が記憶される。なお、図8に示される各時点を古いものから順番に並べると、t1,t2,t3,・・・,t10,・・・,t20,t26,t27,t28,t29,t30になる。時点t30は現時点である。
また、「ユーザの指示位置」フィールドはユーザの指示位置を示す。「判断結果」フィールドは、対象領域71内に含まれると判断された選手キャラクタ46を示す。なお、図8において、「判断結果」フィールドに記録されている「U09」、「U10」、「U11」、「E03」、及び「E05」は選手キャラクタ46を識別するID(識別情報)である。例えば、先頭のアルファベット文字が「U」であるIDは、ユーザチームに所属する選手キャラクタ46のIDであり、先頭のアルファベット文字が「E」であるIDは、敵チームに所属する選手キャラクタ46のIDである。例えば、「判断結果」フィールドの内容が「U09,U10,E03」である場合、IDが「U09」、「U10」、及び「E03」である選手キャラクタ46が対象領域71内に含まれていたと判断されたことを示す。
本実施形態の場合、選択候補取得部62は、履歴テーブルの各レコードの「判断結果」フィールドにIDが記録されている選手キャラクタ46を取得する。図8に示す例の場合であれば、選択候補取得部62は、IDが「U09」、「U10」、「U11」、「E03」、又は「E05」である5名の選手キャラクタ46を取得することになる。
なお、履歴テーブルには、ユーザの指示位置及び判断部67の判断結果を新しさ(古さ)を特定できるようにしてユーザの指示位置及び判断部67の判断結果が記憶されるようにすればよい。例えば、ユーザの指示位置及び判断部67の判断結果を、例えば新しいもの順に(又は古いものから順に)並べるようにして履歴テーブルに記憶させる場合には、「時点」フィールドを省略するようにしてもよい。
また、履歴テーブルには、試合が開始されてからの現在までの各時点におけるユーザの指示位置及び判断部67の判断結果が記憶されるようにしてもよい。この場合、選択候補取得部62は、履歴テーブルに記憶されるユーザの指示位置及び判断部67の判断結果のうちの、上記対象期間内におけるユーザの指示位置及び判断部67の判断結果のみに注目するようにすればよい。
上述のように、選択候補取得部62は、原則として、上記対象期間内の各時点に関する判断部67の判断結果を用いて、複数の選択候補である複数の選手キャラクタ46のうちの一又は複数の選手キャラクタ46を取得する。ただし、選択候補取得部62は、下記に説明するような場合に関する判断部67の判断結果を用いないようにしてもよい。
例えば、選択候補取得部62(距離判定手段)は、ある時点におけるユーザの指示位置(第1の指示位置)と、第1の指示位置が指示された時点よりも前の時点におけるユーザの指示位置(第2の指示位置)との間の距離が基準距離よりも長いか否かを判定する。そして、該距離が基準距離よりも長い場合、選択候補取得部62は、複数の選択候補である複数の選手キャラクタ46のうちの一又は複数の選手キャラクタ46を取得する際に、第2の指示位置が指示された時点に関する判断部67の判断結果と、第2の指示位置が指示された時点よりも前の時点に関する判断部67の判断結果とを用いない。
図9は、ユーザの指示位置の変化の一例を示す図である。図9において、符号70a,70b,70c,70d,70eはユーザの指示位置を示している。また、点線の矢印は、ユーザの指示位置の変化を示している。すなわち、ユーザの指示位置70a,70b,70c,70d,70eはこの順番で取得されたものである。
図9では、最新の指示位置70eと指示位置70bとの間の距離も基準距離(d)よりも長くなっている。このような場合、選択候補取得部62は、複数の選択候補である複数の選手キャラクタ46のうちの一又は複数の選手キャラクタ46を取得する際に、指示位置70bが指示された時点に関する判断部67の判断結果と、指示位置70bが指示された時点よりも前の時点に関する判断部67の判断結果とを用いない。
ここで、ユーザの指示位置70c,70d,70eが、それぞれ、図8に示す時点t28,t29,t30における指示位置であり、ユーザの指示位置70a,70bが、それぞれ、図8に示す時点t26,t27における指示位置であると仮定する。
この場合、選択候補取得部62は、複数の選択候補である複数の選手キャラクタ46のうちの一又は複数の選手キャラクタ46を取得する際に、時点t1〜t27における判断結果を用いない。すなわち、この場合、選択候補取得部62は、時点t28〜t30に対応づけられた「判断結果」フィールドにIDが記録されている選手キャラクタ46を取得する。つまり、選択候補取得部62は、IDが「U11」又は「E05」である選手キャラクタ46を取得する。
なお、この場合、選択候補取得部62は、時点t1〜t27に対応するレコードを履歴テーブルから削除するようにするとよい。
第1選択部63は、選択候補取得部62によって複数の選択候補のうちの一つの選択候補が取得された場合、該一つの選択候補を選択する。上述したように、本実施形態の場合、選手キャラクタ46が「選択候補」に相当する。
第2選択部64は、選択候補取得部62によって複数の選択候補のうちの複数の選択候補が取得された場合、選択候補取得部62によって取得された複数の選択候補のうちのいずれかをゲーム状況情報に基づいて選択する。上述したように、本実施形態の場合、選手キャラクタ46が「選択候補」に相当する。
例えば、第2選択部64(所属判定手段)は、記憶部60に記憶される情報に基づいて、ボール47を保持している選手キャラクタ46がユーザチーム又は敵チームのいずれに所属するかを判定する。そして、第2選択部64は、その判定結果に基づいて、選択候補取得部62によって取得された複数の選手キャラクタ46のうちのいずれかを指示対象又はマーク対象として選択する。
例えば、ボール47を保持している選手キャラクタ46がユーザチームに所属する場合、第2選択部64は、原則として、選択候補取得部62によって取得された複数の選手キャラクタ46のうちの、ユーザチームに所属する選手キャラクタ46のいずれかを指示対象として選択する。詳細については後述する(図11のステップS113参照)。
一方、例えば、ボール47を保持している選手キャラクタ46が敵チームに所属する場合、第2選択部64は、原則として、選択候補取得部62によって取得された複数の選手キャラクタ46のうちの、敵チームに所属する選手キャラクタ46のいずれかをマーク対象として選択する。詳細については後述する(図12のステップS117参照)。
ゲーム処理実行部65は、第1選択部63又は第2選択部64によって選択された選択候補に基づいてゲーム処理を実行する。上述したように、本実施形態の場合、選手キャラクタ46が「選択候補」に相当する。
例えば、ゲーム処理実行部65は、記憶部60に記憶される情報を、第1選択部63又は第2選択部64によって選択された選手キャラクタ46に基づいて更新する。具体的には、第1選択部63又は第2選択部64によって選択された選手キャラクタ46がユーザチームに所属する場合、その選手キャラクタ46をユーザの指示対象に設定する。そして、ゲーム処理実行部65は、ユーザの指示対象に設定された選手キャラクタ46をコントローラ23の指示位置に基づいて移動させる。
また、ゲーム処理実行部65は、第1選択部63又は第2選択部64によって選択された選手キャラクタ46が敵チームに所属する場合、その選手キャラクタ46をマーク対象に設定する。そして、ゲーム処理実行部65は、マーク対象として設定された選手キャラクタ46への守備をユーザチームに所属する選手キャラクタ46に行わせる。
次に、ゲーム装置10が実行する処理について説明する。図10、図11、及び図12はゲーム装置10が所定時間(例えば1/60秒)ごとに実行する処理を示すフロー図である。制御部13は光ディスク32に記憶されるプログラムに従って、図10〜図12に示す処理を実行する。制御部13が図10〜図12に示す処理を実行することによって、指示位置取得部61、選択候補取得部62、第1選択部63、第2選択部64、ゲーム処理実行部65、及び表示制御部66が実現される。
図10に示すように、制御部13(指示位置取得部61)は、コントローラ23から供給される操作信号に基づいて、コントローラ23の指示位置を取得する(S101)。そして、制御部13(判断部67)は、ステップS101で取得されたコントローラ23の指示位置に基づいて設定される対象領域71内に含まれている選手キャラクタ46を判断する(S102)。
このステップS102では、例えば図7に示すように、コントローラ23の指示位置70からの距離が基準距離(r)以下であるような領域が対象領域71として設定される。そして、制御部13は、各選手キャラクタ46の位置に基づいて、各選手キャラクタ46が対象領域71に含まれるか否かを判定する。なお、選手キャラクタ46の全体が対象領域71内に含まれる場合に限って、選手キャラクタ46が対象領域71に含まれると判定するようにしてもよいし、選手キャラクタ46の一部分が対象領域71内に含まれる場合に、選手キャラクタ46が対象領域71に含まれると判定するようにしてもよい。
対象領域71内に含まれている選手キャラクタ46を判断した後、制御部13は履歴テーブルを更新する(S103)。このステップS103では、履歴テーブルに新たなレコードが追加される。この新たに追加されるレコードの「時点」フィールドには、試合が開始されてから現時点までの経過時間を1/60秒単位で示す数値が記録される。「ユーザの指示位置」フィールドには、ステップS101において取得されたコントローラ23の指示位置が記録される。「判断結果」フィールドには、ステップS102における判断結果が記録される。
なお、ステップS103において、制御部13は、現在から所定時間(例えば1/2秒)前の時点よりもさらに前の時点に関するレコードを履歴テーブルから削除する。また、ステップS103において、制御部13は、「ユーザの指示位置」フィールドが示す位置が、ステップS101で取得されたコントローラ23の指示位置から基準距離(d)以上離れている場合に、そのレコードを履歴テーブルから削除する。
その後、制御部13は、コントローラ23から供給される操作信号に基づいて、選択ボタン(例えばボタン28b)が押下されたか否かを判定する(S104)。選択ボタンが押下されていないと判定された場合、制御部13は後述のステップS108の処理を実行する。
一方、選択ボタンが押下されたと判定された場合、制御部13は、履歴テーブルに記録されている選手キャラクタ46の数が零であるか否かを判定する(S105)。「履歴テーブルに記録されている選手キャラクタ46の数」とは、履歴テーブルの「判断結果」フィールドにIDが記録されている選手キャラクタ46の数である。なお、以下では、履歴テーブルの「判断結果」フィールドにIDが記録されている選手キャラクタ46のことを「履歴テーブルに記録されている選手キャラクタ46」というように記載する。
履歴テーブルに記録されている選手キャラクタ46の数が零である場合、制御部13は後述のステップS108の処理を実行する。一方、履歴テーブルに記録されている選手キャラクタ46の数が零でない場合、制御部13は、履歴テーブルに記録されている選手キャラクタ46の数が単数であるか否かを判定する(S106)。履歴テーブルに記録されている選手キャラクタ46の数が単数である場合、制御部13(第1選択部63)は、履歴テーブルに記録されている選手キャラクタ46を選択する(S107)。
一方、履歴テーブルに記録されている選手キャラクタ46の数が単数でない場合、すなわち、履歴テーブルに記録されている選手キャラクタ46の数が複数である場合、図11に示すように、制御部13は、いずれかの選手キャラクタ46がボール47を保持しているか否かを判定する(S110)。
いずれかの選手キャラクタ46がボール47を保持している場合、制御部13(第2選択部64)は、ボール47を保持している選手キャラクタ46がユーザチームに所属するか否かを判定する(S111)。ボール47を保持している選手キャラクタ46がユーザチームに所属する場合、制御部13は、ユーザチームに所属する選手キャラクタ46が履歴テーブルに記録されているか否かを判定する(S112)。ユーザチームに所属する選手キャラクタ46が履歴テーブルに記録されている場合、制御部13(第2選択部64)は、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のいずれかを指示対象として選択する(S113)。
ボール47を保持している選手キャラクタ46がユーザチームに所属する場合、敵チームに所属する選手キャラクタ46への守備をユーザが指示する可能性は低く、ユーザがユーザチームに所属する選手キャラクタ46に指示を与えたいと意図している可能性が高い。このため、ゲーム装置10では、ボール47を保持している選手キャラクタ46がユーザチームに所属する場合(ステップS111:Y)、履歴テーブルに記録されている選手キャラクタ46のうちの、ユーザチームに所属する選手キャラクタ46のいずれかが指示対象として選択されるようになっている(ステップS113)。すなわち、ユーザが指示を与えたいと意図している選手キャラクタ46の選択が行われるように図られている。
ステップS113では下記に説明するようにして選手キャラクタ46が選択される。例えば、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46が単数である場合、制御部13はその選手キャラクタ46を指示対象として選択する。
一方、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46が複数である場合、制御部13は、それらの選手キャラクタ46のうちに、ボール47を保持している選手キャラクタ46が存在しているか否かを判定する。そして、ボール47を保持している選手キャラクタ46が存在している場合、制御部13は、ボール47を保持している選手キャラクタ46を指示対象として選択する。
履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46がボール47を保持している場合、ユーザはその選手キャラクタ46に指示を与えたいと意図している可能性が高い。この点、ゲーム装置10では、このような場合に、ボール47を保持している選手キャラクタ46が指示対象として選択されるようになっている。すなわち、ユーザが指示を与えたいと意図している選手キャラクタ46が指示対象として選択されるようになっている。
一方、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちに、ボール47を保持している選手キャラクタ46が存在していない場合、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する各選手キャラクタ46の攻撃能力に関するパラメータ(第1数値情報)に基づいて、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちのいずれかを指示対象として選択する。例えば、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちで、最も攻撃能力が高い選手キャラクタ46が指示対象として選択される。
より具体的には、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46の各々について、攻撃能力の評価値を取得する。例えば、制御部13は、攻撃能力に関する一のパラメータ(例えばドリブルパラメータ)の値を上記評価値として取得する。または、制御部13は、攻撃能力に関する複数のパラメータ(例えば、ドリブルパラメータ、パスパラメータ及びシュートパラメータ)の値の統計値(例えば平均値)を上記評価値として取得する。そして、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちで、上記評価値が最も高い選手キャラクタ46を指示対象として選択する。
履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちに、ボール47を保持している選手キャラクタ46が存在していない場合、ユーザは、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちで、攻撃能力が最も高い選手キャラクタ46に指示を与えたいと考える可能性が高い。この点、ゲーム装置10では、このような場合に、攻撃能力が最も高い選手キャラクタ46が指示対象として選択されるようになっている。すなわち、ユーザが指示を与えたいと意図している選手キャラクタ46が指示対象として選択されるようになっている。
なお、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する各選手キャラクタ46の疲労度パラメータ(数値情報)に基づいて、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちのいずれかを指示対象として選択するようにしてもよい。例えば、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちで、疲労度パラメータの値が最も低い選手キャラクタ46を指示対象として選択するようにしてもよい。すなわち、制御部13は最も疲労度が低い選手キャラクタ46を指示対象として選択するようにしてもよい。
履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちに、ボール47を保持している選手キャラクタ46が存在していない場合、ユーザは、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちで、疲労度が最も低い選手キャラクタ46に指示を与えたいと考える可能性がある。この点、ゲーム装置10では、このような場合に、疲労度が最も低い選手キャラクタ46が指示対象として選択されるようにしてもよい。こうしても、ユーザが指示を与えたいと意図している選手キャラクタ46が指示対象として選択されるようになる。
ステップS112においてユーザチームに所属する選手キャラクタ46が履歴テーブルに記録されていないと判定される場合とは、敵チームに所属する選手キャラクタ46のみが履歴テーブルに記録されている場合である。この場合、制御部13は、履歴テーブルに記録され、かつ、敵チームに所属する選手キャラクタ46のうちのいずれかをマーク対象として選択する(S114)。
ステップS114では、例えば、履歴テーブルに記録され、かつ、敵チームに所属する選手キャラクタ46が単数である場合、制御部13はその選手キャラクタ46をマーク対象として選択する。一方、履歴テーブルに記録され、かつ、敵チームに所属する選手キャラクタ46が複数である場合、制御部13は、それらの選手キャラクタ46のうちで、ステップS101で取得されたコントローラ23の指示位置に最も近い選手キャラクタ46をマーク対象として選択する。
ステップS111においてボール47を保持している選手キャラクタ46がユーザチームに所属しないと判定された場合、すなわち、ボール47を保持している選手キャラクタ46が敵チームに所属する場合、図12に示すように、制御部13は、敵チームに所属する選手キャラクタ46が履歴テーブルに記録されているか否かを判定する(S116)。
敵チームに所属する選手キャラクタ46が履歴テーブルに記録されている場合、制御部13は、履歴テーブルに記録され、かつ、敵チームに所属する選手キャラクタ46のうちのいずれかをマーク対象として選択する(S117)。
ボール47を保持している選手キャラクタ46が敵チームに所属する場合、敵チームに所属する選手キャラクタ46への守備をユーザが指示したいと意図している可能性が高い。この点、ゲーム装置10では、ボール47を保持している選手キャラクタ46が敵チームに所属する場合(ステップS111:N)、履歴テーブルに記録されている選手キャラクタ46のうちの、敵チームに所属する選手キャラクタ46のいずれかがマーク対象として選択されるようになっている(ステップS117)。
ステップS117では、ステップS113と同様にして選手キャラクタ46が選択される。すなわち、ステップS113において、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちのいずれかを指示対象として選択するのと同様にして、履歴テーブルに記録され、かつ、敵チームに所属する選手キャラクタ46のうちのいずれかがマーク対象として選択される。
ステップS116において敵チームに所属する選手キャラクタ46が履歴テーブルに記録されていないと判定された場合とは、ユーザチームに所属する選手キャラクタ46のみが履歴テーブルに記録されている場合である。この場合、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のいずれかを指示対象として選択する(S118)。
ステップS118では、例えば、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46が単数である場合、制御部13はその選手キャラクタ46を指示対象として選択する。
一方、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46が複数である場合、制御部13は、それらの各選手キャラクタ46の守備能力に関するパラメータ(第2数値情報)に基づいて、それらの選手キャラクタ46のうちのいずれかを指示対象として選択する。例えば、制御部13は最も守備能力が高い選手キャラクタ46を指示対象として選択する。
より具体的には、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46の各々について、守備能力の評価値を取得する。例えば、制御部13は、守備能力に関する一のパラメータ(例えばマークパラメータ)の値を上記評価値として取得する。または、制御部13は、守備能力に関する複数のパラメータ(例えば、マークパラメータ及びタックルパラメータ)の値の統計値(例えば平均値)を上記評価値として取得する。そして、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちで、上記評価値が最も高い選手キャラクタ46を指示対象として選択する。
敵チームに所属する選手キャラクタ46がボール47を保持している場合であって、かつ、敵チームに所属する選手キャラクタ46が履歴テーブルに記録されていない場合、ユーザは、ユーザチームに所属する選手キャラクタ46のうちのいずれかに指示を与えることを意図していることになる。また、このような場合、ユーザは、守備能力が高い選手キャラクタ46に指示を与えたいと考えている可能性が高い。この点、上記のようにすれば、ユーザが指示を与えたいと意図している選手キャラクタ46が指示対象として選択されるようになる。
なお、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する各選手キャラクタ46の疲労度パラメータ(数値情報)に基づいて、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちのいずれかを指示対象として選択するようにしてもよい。例えば、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちで、疲労度パラメータの値が最も低い選手キャラクタ46を指示対象として選択するようにしてもよい。すなわち、制御部13は最も疲労度が低い選手キャラクタ46を指示対象として選択するようにしてもよい。
敵チームに所属する選手キャラクタ46がボール47を保持している場合であって、かつ、敵チームに所属する選手キャラクタ46が履歴テーブルに記録されていない場合、ユーザは、ユーザチームに所属する選手キャラクタ46のうちのいずれかに指示を与えることを意図していることになる。また、このような場合、ユーザは、疲労度が低い選手キャラクタ46に指示を与えたいと意図している可能性がある。このため、このような場合、疲労度が最も低い選手キャラクタ46が指示対象として選択されるようにしてもよい。このようにしても、ユーザが指示を与えたいと意図している選手キャラクタ46が指示対象として選択されるようになる。
なお、図11に示すように、ステップS110において、いずれの選手キャラクタ46もボール47を保持していないと判定された場合、制御部13は、履歴テーブルに記録されている選手キャラクタ46のいずれかを選択する(S115)。例えば、ユーザチームに所属する選手キャラクタ46が履歴テーブルに記録されている場合、制御部13は、履歴テーブルに記録され、かつ、ユーザチームに所属する選手キャラクタ46のうちで、コントローラ23の現在の指示位置に最も近い選手キャラクタ46を指示対象として選択する。一方、ユーザチームに所属する選手キャラクタ46が履歴テーブルに記録されていない場合、制御部13は、履歴テーブルに記録され、かつ、敵チームに所属する選手キャラクタ46のうちで、コントローラ23の現在の指示位置に最も近い選手キャラクタ46をマーク対象として選択する。
ステップS107,S113,S114,S115,S117,又はS118の処理が実行された後、図10に示すように、制御部13(ゲーム処理実行部65)は、記憶部60に記憶される情報を更新する(S108)。なお、ステップS104において選択ボタンが押下されていないと判定された場合や、ステップS105において、履歴テーブルに記録されている選手キャラクタ46の数が零であると判定された場合にも、ステップS108の処理は実行される。
ステップS108では、例えば、ユーザの指示対象として選択された選手キャラクタ46の位置、姿勢や移動方向等が、ステップS101で取得されたコントローラ23の指示位置に基づいて更新される。
また例えば、敵チームに所属する選手キャラクタ46がマーク対象として選択された場合、ユーザチームに所属する選手キャラクタ46のうちで、マーク対象として選択された選手キャラクタ46に最も近い選手キャラクタ46がマーカーとして設定される。そして、マーカーとして設定された選手キャラクタ46の位置等が、マーク対象の選手キャラクタ46に対する守備を行うように更新される。例えば、マーカーとして設定された選手キャラクタ46がマーク対象の選手キャラクタ46に近づくように、マーカーとして設定された選手キャラクタ46の位置等が、マーク対象の選手キャラクタ46の位置に基づいて更新される。
記憶部60に記憶される情報が更新された後、制御部13(表示制御部66)は、記憶部60に記憶される情報に基づいて、ゲーム画面50を更新する(S109)。例えば、制御部13は、記憶部60に記憶される情報に基づいて、仮想カメラ48から見たゲーム空間40を表す画像をVRAM上に生成する。また、制御部13は、VRAM上に生成された画像上に、経過時間51、得点52、及びカーソル53を描画する。このようにしてVRAM上に生成された画像がゲーム画面50として表示部30に表示される。
以上説明したゲーム装置10では、操作対象又はマーク対象の選手キャラクタ46を選択する場合、ユーザの現在の指示位置及び選手キャラクタ46の現在の位置だけでなく、ユーザの過去の指示位置及び選手キャラクタ46の過去の位置も考慮される。すなわち、現時点におけるユーザの指示位置に基づいて設定される対象領域71内に現時点において含まれている選手キャラクタ46だけでなく、過去の時点におけるユーザの指示位置に基づいて設定される対象領域71内に該過去の時点において含まれていた選手キャラクタ46も、操作対象又はマーク対象として選択され得るようになっている。
現時点におけるユーザの指示位置に基づいて設定される対象領域71内に現時点において含まれている選手キャラクタ46だけが操作対象又はマーク対象として選択され得るような場合、現時点において、所望の選手キャラクタ46が対象領域71内に含まれるような位置をコントローラ23の前端部23bで指し示していなければ、所望の選手キャラクタ46は操作対象又はマーク対象として選択されない。この点、ゲーム装置10では、過去の時点において、所望の選手キャラクタ46が対象領域71内に含まれるような位置をコントローラ23の前端部23bで指し示していたのであれば、所望の選手キャラクタ46が操作対象又はマーク対象として選択され得るようになる。ゲーム装置10によれば、ユーザが操作対象又はマーク対象として所望の選手キャラクタ46を選択し易くなるように補助することが可能になる。
また、ゲーム装置10では、現在の時点と現在から所定時間(例えば1/2秒)前の時点との間の対象期間におけるユーザの指示位置及び選手キャラクタ46の位置が、操作対象又はマーク対象の選択の際に考慮されるようになっている。すなわち、上記対象期間よりも前の時点におけるユーザの指示位置及び選手キャラクタ46の位置は、操作対象又はマーク対象の選択の際に考慮されないようになっている。上記対象期間よりも前の時点におけるユーザの指示位置及び選手キャラクタ46の位置を操作対象又はマーク対象の選択の際に考慮してしまうと、ユーザが意図してしない選手キャラクタ46が指示対象又はマーク対象として選択されてしまう場合がある。この点、ゲーム装置10によれば、ユーザが意図してしない選手キャラクタ46が操作対象又はマーク対象として選択され難くなるように図ることが可能になる。
また、ゲーム装置10では、ユーザの過去の指示位置のうちの、ユーザの現在の指示位置との間の距離が比較的長い指示位置が、操作対象又はマーク対象の選択の際に考慮されないようになっている。上記のような指示位置を操作対象又はマーク対象の選択の際に考慮してしまうと、ユーザが意図してしない選手キャラクタ46が指示対象又はマーク対象として選択されてしまう場合がある。この点、ゲーム装置10によれば、ユーザが意図してしない選手キャラクタ46が操作対象又はマーク対象として選択され難くなるように図ることが可能になる。
さらに、ゲーム装置10では、現時点におけるユーザの指示位置に基づいて設定される対象領域71内に現時点において含まれている選手キャラクタ46と、過去の時点におけるユーザの指示位置に基づいて設定される対象領域71内に該過去の時点において含まれていた選手キャラクタ46とが複数存在する場合、ユーザが指示対象又はマーク対象として選択したいと意図している選手キャラクタ46がゲーム状況に基づいて推測され、その選手キャラクタ46が指示対象又はマーク対象として選択されるようになっている(特に、図11のステップS113及びステップS117、図12のステップS118参照)。すなわち、ゲーム装置10によれば、ユーザが意図している選手キャラクタ46が操作対象又はマーク対象として選択されるように図ることが可能になる。
なお、本発明は以上に説明した実施の形態に限定されるものではない。
[1]例えば、選択候補取得部62(角度判定手段)は、ある時点におけるユーザの指示位置(第3の指示位置)から、第3の指示位置が指示された時点よりも後の時点におけるユーザの指示位置(第4の指示位置)への方向と、第4の指示位置から、第4の指示位置が指示された時点よりも後の時点におけるユーザの指示位置(第5の指示位置)への方向と、の間の角度が基準角度よりも大きいか否かを判定するようにしてもよい。そして、該角度が基準角度よりも大きい場合、選択候補取得部62は、複数の選択候補である複数の選手キャラクタ46のうちの一又は複数の選手キャラクタ46を取得する際に、第4の指示位置が指示された時点よりも前の時点に関する判断部67の判断結果を用いないようにしてもよい。例えば、選択候補取得部62は、第4の指示位置が指示された時点よりも前の時点に関するレコードを履歴テーブルから削除するようにしてもよい。
図13は、ユーザの指示位置の変化の一例を示す図である。図9では、指示位置70bから指示位置70cへの方向73と、指示位置70cから指示位置70dへの方向74と、の間の角度θが比較的大きくなっている。すなわち、角度(θ)が基準角度よりも大きくなっている。このような場合、選択候補取得部62は、複数の選択候補である複数の選手キャラクタ46のうちの一又は複数の選手キャラクタ46を取得する際に、指示位置70cが指示された時点よりも前の時点に関する判断部67の判断結果を用いないようにしてもよい。
例えば、ユーザの指示位置70c,70d,70eが、それぞれ、図8に示す時点t28,t29,t30における指示位置であり、ユーザの指示位置70a,70bが、それぞれ、図8に示す時点t26,t27における指示位置であると仮定する。この場合、選択候補取得部62は、時点t1〜t27に関する判断部67の判断結果を用いないようにして、複数の選択候補である複数の選手キャラクタ46のうちの一又は複数の選手キャラクタ46を取得する。
すなわち、この場合、選択候補取得部62は、時点t28,t29,t30に対応づけられた「判断結果」フィールドにIDが記録されている選手キャラクタ46を取得する。つまり、選択候補取得部62は、IDが「U11」又は「E05」である選手キャラクタ46を取得する。なお、この場合、選択候補取得部62は、時点t1〜t27に関するレコードを履歴テーブルから削除するようにすると、データ量の軽減の点から好ましい。
上記のようにすれば、ユーザが意図してしない選手キャラクタ46が操作対象又はマーク対象として選択され難くなるように図ることが可能になる。図13に示す例の場合、指示位置70bから指示位置70cへの方向73と、指示位置70cから指示位置70dへの方向74とが大きく異なっており、指示位置70cが指示された前後でユーザの意図が変わったと考えられる。この点、上記のようにすれば、指示位置70cが指示された時点よりも前に指示された指示位置70a,70bが、操作対象又はマーク対象として選択する際に考慮されないようになる。その結果、ユーザが意図してしない選手キャラクタ46が操作対象又はマーク対象として選択され難くなるように図ることが可能になる。
[2]また例えば、図8に示す履歴テーブルに代えて、ユーザの指示位置と全選手キャラクタ46の位置との履歴を示す履歴テーブルが記憶されるようにしてもよい。
図14は、この場合の履歴テーブルを示す。図14に示す履歴テーブルは、現在の時点と現在から所定時間(例えば1/2秒)前の時点との間の対象期間におけるユーザの指示位置及び全選手キャラクタ46の位置の履歴を示す情報である。図14に示す履歴テーブルには、上記対象期間における所定時間(例えば1/60秒)ごとのユーザの指示位置と、上記対象期間における所定時間(例えば1/60秒)ごとの全選手キャラクタ46の位置と、が記録される。
図14に示すような履歴テーブルが記憶される場合、図10のステップS102において、制御部13は、現時点におけるユーザの指示位置に基づいて設定される対象領域71内に現時点において含まれている選手キャラクタ46を判断するだけでなく、下記に説明するような処理も実行する。すなわち、制御部13は、上記対象期間における各々の時点に関し、その時点におけるコントローラ23の指示位置に基づいて設定される対象領域71内にその時点において含まれていた選手キャラクタ46を判断する。この処理は履歴テーブルに基づいて行われる。
この場合、図8に示す履歴テーブルの「判断結果」フィールドに記憶される内容と同内容の判断結果がステップS102において得られることになる。このため、この場合、図10のステップS103の処理は省略され、図10〜図12のステップS105〜S107,S112〜S117では、ステップS102において得られた判断結果が用いられることになる。
ところで、上述したように、変形例[2]では、図10のステップS102において、上記対象期間における各々の時点に関し、その時点におけるコントローラ23の指示位置に基づいて設定される対象領域71内にその時点において含まれていた選手キャラクタ46が判断される。ステップS102では、上記対象期間における各々の時点における対象領域71の大きさを変えるようにしてもよい。例えば、上記対象期間における各々の時点における対象領域71を、第1の時点における対象領域71の大きさが、第1の時点よりも後の第2の時点における対象領域71の大きさよりも小さくなるようにして設定するようにしてもよい。
図15は、上記対象期間内の複数の代表時点における対象領域71の一例を示す。なお、図15においてT軸は時間軸であり、時点t1,t10,t20,t30は、図14における時点t1,t10,t20,t30である。すなわち、これらの時点を古いものから順番に並べると、t1,t10,t20,t30になる。また、図15において、対象領域71の半径r1,r2,r3,r4を大きいものから順番に並べると、半径r4,r3,r2,r1になる。図15に示す例では、現時点との時間差が大きくなるにつれて、対象領域71の半径(r)が小さくなっている。このようにしても、ユーザが意図してしない選手キャラクタ46が操作対象又はマーク対象として選択され難くなるように図ることが可能になる。
なお、上記のような構成を実現する場合、現時点との時間差に関する情報と、対象領域71の大きさに関する情報(例えば半径(r))と、を対応づけてなる情報を記憶部60に記憶しておくようにすればよい。そして、この情報に基づいて、対象領域71の大きさを制御するようにすればよい。
[3]また例えば、選択候補取得部62は、ユーザの現在及び過去における指示位置に基づいて設定される対象領域内に複数の選択候補の現在における位置が含まれるか否かの判定結果に基づいて、複数の選択候補のうちの一又は複数の選択候補を取得するようにしてもよい。以下、詳細について説明する。
変形例[3]では、ユーザの指示位置の履歴に関する履歴情報が記憶部60(履歴情報記憶手段)に記憶される。例えば、図16に示すような履歴テーブルが図8に示す履歴テーブルの代わりに記憶される。図16に示す履歴テーブルには、現在の時点と現在から所定時間(1/2秒)前の時点との間の対象期間内において所定時間(1/60秒)ごとに取得されたユーザの指示位置(コントローラ23の指示位置)が記憶されている。
選択候補取得部62(対象領域設定手段)は、履歴テーブルに記憶されるユーザの指示位置に基づいて対象領域71を設定する。図17はこの場合の対象領域71の一例を示す図である。なお、ここでは、履歴テーブルにユーザの指示位置が5つだけ記録されていると仮定して説明する。図17において、符号70a,70b,70c,70d,70eは、履歴テーブルに記録されている5つのユーザの指示位置を示している。
例えば、図17に示す対象領域71は複数の領域部分80a,80b,80c,80d,80eを含む領域である。領域部分80a,80b,80c,80d,80eは、履歴テーブルに記録されているユーザの指示位置70a,70b,70c,70d,70eの各々に対応する領域である。例えば、領域部分80aは指示位置70aに対応する領域部分であり、指示位置70aからの距離が基準距離(r)以下である領域部分である。領域部分80b,80c,80d,80eについても同様である。
この場合、選択候補取得部62は、各選手キャラクタ46に関し、対象領域81にその選手キャラクタ46の現在の位置が含まれるか否かを判定する。そして、選択候補取得部62は、対象領域81内に含まれる選手キャラクタ46を取得する。
変形例[3]では、ユーザの指示位置の履歴に基づいて対象領域71が設定される(図17参照)。その結果、ユーザの現在の指示位置のみに基づいて対象領域71が設定される場合(図7参照)に比べて、所望の選手キャラクタ46が対象領域71内に含まれ易くなる。変形例[3]によっても、ユーザが操作対象又はマーク対象として所望の選手キャラクタ46を選択し易くなるように補助することが可能になる。
[3−1]なお、変形例[3]においても、選択候補取得部62(距離判定手段)は、ある時点におけるユーザの指示位置(第1の指示位置)と、第1の指示位置が指示された時点よりも前の時点におけるユーザの指示位置(第2の指示位置)との間の距離が基準距離よりも長いか否かを判定するようにしてもよい。そして、該距離が基準距離よりも長い場合、選択候補取得部62は、第2の指示位置と、第2の指示位置が指示された時点よりも前の時点において指示された指示位置とを、対象領域71(図17参照)を設定する際に用いないようにしてもよい。この場合、選択候補取得部62は、第2の指示位置と、第2の指示位置が指示された時点よりも前の時点において指示された指示位置とを履歴テーブルから削除するようにするとよい。
例えば、ユーザの指示位置70a〜70eが図9に示すような位置関係を有する場合、すなわち、指示位置70eと指示位置70bとの間の距離が基準距離(d)よりも長くなっている場合、対象領域71(図17参照)に、指示位置70bに対応する領域部分80bと、指示位置70bが指示された時点よりも前の時点において指示された指示位置70aに対応する領域部分80aとが含まれないようにすればよい。
[3−2]また、上述の変形例[1]の構成を変形例[3]に組み合わせるようにしてもよい。すなわち、選択候補取得部62(角度判定手段)は、ある時点におけるユーザの指示位置(第3の指示位置)から、第3の指示位置が指示された時点よりも後の時点におけるユーザの指示位置(第4の指示位置)への方向と、第4の指示位置から、第4の指示位置が指示された時点よりも後の時点におけるユーザの指示位置(第5の指示位置)への方向と、の間の角度が基準角度よりも大きいか否かを判定するようにしてもよい。そして、該角度が基準角度よりも大きい場合、選択候補取得部62は、第4の指示位置が指示された時点よりも前の時点に指示された指示位置を、対象領域71を設定する際に用いないようにしてもよい。この場合、選択候補取得部62は、第4の指示位置が指示された時点よりも前の時点において指示された指示位置を履歴テーブルから削除するようにするとよい。
例えば、ユーザの指示位置70a〜70eが図13に示すような位置関係を有する場合、すなわち、指示位置70bから指示位置70cへの方向73と、指示位置70cから指示位置70dへの方向74との間の角度(θ)が基準角度よりも大きい場合、対象領域71(図17参照)に、指示位置70cが指示された時点よりも前の時点に指示された指示位置70a,70bに対応する領域部分80a,80bが含まれないようにすればよい。
[3−3]また、変形例[3]における対象領域71(図17参照)は、第1の時点におけるユーザの指示位置に対応する領域部分の大きさが、第1の時点よりも後の第2の時点におけるユーザの指示位置に対応する領域部分の大きさよりも小さくなるようにして設定されるようにしてもよい。
図18は、この場合の対象領域71の一例を示す。図18に示す例では、領域部分80a,80b,80c,80d,80eの半径ra,rb,rc,rd,reを小さいものから順番に並べると、半径ra,rb,rc,rd,reになり、領域部分80a,80b,80c,80d,80eを大きいが小さいものから順番に並べると、領域部分80a,80b,80c,80d,80eになる。すなわち、現在の時点と、ユーザの指示位置(コントローラ23の指示位置)が取得された時点と、の時間差が大きいほど、ユーザの指示位置に対応する領域部分の大きさが小さくなっている。このようにしても、ユーザが意図してしない選手キャラクタ46が操作対象又はマーク対象として選択され難くなるように図ることが可能になる。
[4]また例えば、履歴テーブル(図8,14,16参照)に記録されているユーザの指示位置の履歴に基づいて、ユーザの最新の指示位置(コントローラ23の最新の指示位置)を補正するようにしてもよい。図19はユーザの指示位置の補正方法の一例について説明するための図である。なお、ここでも、履歴テーブルにユーザの指示位置が5つだけ記録されていると仮定して説明する。図17と同様、符号70a,70b,70c,70d,70eは、履歴テーブルに記録されている5つのユーザの指示位置を示している。
この場合、ある時点におけるユーザの指示位置からその次の時点におけるユーザの指示位置への移動方向ベクトルの平均が取得される。図19に示す例の場合、指示位置70aから指示位置70bへの移動方向ベクトル90aと、指示位置70bから指示位置70cへの移動方向ベクトル90bと、指示位置70cから指示位置70dへの移動方向ベクトル90cと、指示位置70dから指示位置70eへの移動方向ベクトル90dと、の平均である平均移動方向ベクトル91が取得される。また、履歴テーブル(図8,14,16参照)に記録されている指示位置70a〜70eのうちで最も古い指示位置70aと、最新の指示位置70eと、の間の距離(l)が取得される。そして、最も古い指示位置70aから平均移動方向ベクトル91が示す方向に距離(l)移動してなる位置92が取得される。ユーザの最新の指示位置はこの取得された位置92に補正される。
なお、この場合、例えば、補正されたユーザの指示位置(位置82)からの距離が基準距離(r)以下である領域が対象領域71(図7参照)として用いられるようになる。
[5]また例えば、時間経過と選手キャラクタ46の動作との少なくとも一方に基づいて増加する疲労度パラメータの代わりに、時間経過と選手キャラクタ46の動作量との少なくとも一方に基づいて減少するパラメータ(例えばスタミナパラメータ)が記憶されるようにしてもよい。
例えば、スタミナパラメータは0〜100の数値をとり、スタミナパラメータの初期値は100に設定される。例えば、選手キャラクタ46のスタミナパラメータの値は選手キャラクタ46が動作を行うごとに減少される。また例えば、選手キャラクタ46のスタミナパラメータの値は所定時間(例えば1/60秒)ごとに減少される。なお、スタミナパラメータが比較的高い場合とは疲労度パラメータが比較的低い場合に相当する。
[6]また例えば、発光部22及びコントローラ23の代わりに、他のポインティングデバイス(例えばマウス)が用いられるようにしてもよい。また例えば、ゲーム画面50に表示されるカーソル53は方向ボタン27(又は操作スティック、操作レバー)の操作状態に基づいて移動するようにしてもよい。この場合、カーソル53の位置がユーザの指示位置に相当することになる。
[7]また例えば、ゲーム空間40は2つの座標軸が設定される2次元ゲーム空間であってもよい。
[8]また例えば、本発明は、サッカーゲーム以外のスポーツゲームにも適用することができる。例えば、ボール(移動物体)を用いて行われるバスケットボール、アメリカンフットボール等のゲームにも適用することも可能であるし、パック(移動物体)を用いて行われるアイスホッケーのゲームにも適用することが可能である。また、本発明はスポーツゲーム以外のゲームにも適用することが可能である。