本発明の実施形態に係るゲームを実行する方法、および、プログラムの具体例を、以下に図面を参照しつつ説明する。本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が本発明に含まれることが意図される。以下の説明では、図面の説明において同一の要素には同一の符号を付し、重複する説明を繰り返さない。
<ユーザ端末とゲーム端末との関係及び構成>
まず、図1を用いて、ゲームシステム1で用いられるユーザ端末100とゲームサーバ200との関係及びそれぞれの構成について説明する。ゲームシステム1は、複数のユーザ端末100と、ゲームサーバ200と、を含む。各ユーザ端末100とゲームサーバ200とは、ネットワーク2を介して接続されている。ネットワーク2は、インターネット、図示しない無線基地局によって構築される各種移動通信システム(例えば、所謂3G、4G移動通信システム、LTE(Long Term Evolution))、または、所定のアクセスポイントによってインターネットに接続可能な無線ネットワーク(例えば、WiFi(登録商標))を含み得る。
ユーザ端末100は、スマートフォン、フィーチャーフォン、PDA(Personal Digital Assistant)、または、タブレット型コンピュータ等の携帯端末であることがより好ましい。ユーザ端末100は、通信バスによって互いに電気的に接続されたプロセッサ10と、メモリ11と、ストレージ12と、通信インターフェース(IF)13と、入出力IF14と、タッチスクリーン15とを備える。
入出力IF14は、USB(Universal Serial Bus)等を介した各種データ入出力機能および音声入出力機能を備える。
タッチスクリーン15は、入力部151と表示部152とを組み合わせた電子部品である。入力部151は、タッチセンシティブなデバイスであり、例えば、タッチパッド等によって構成される。表示部152は、例えば、液晶ディスプレイ、有機EL(electro-luminescence)ディスプレイ等によって構成される。入力部151は、タッチスクリーン15に対するユーザの指やスタイラスといった物体の接触または近接を検知し、操作入力として受け付ける。入力部151は、当該操作入力に含まれるユーザの作用(主に、タッチ操作、スライド操作、フリック操作、及びタップ操作等の物理的接触操作)が入力された画面位置の情報を検知して、該情報を外部へ情報信号として出力する機能を備える。タッチスクリーン15はタッチセンシティブであればよく、タッチセンシティブなデバイスは、静電容量方式、抵抗膜方式等のどのような方式のデバイスを含んで構成したものであってもよい。
ゲームサーバ200は、ゲームに関する各種サービスを各ユーザ端末100に提供する。ゲームサーバ200は、ワークステーション、パーソナルコンピュータ等の汎用コンピュータであることがより好ましい。ゲームサーバ200は、通信バスにより互いに電気的に接続されたプロセッサ20と、メモリ21と、ストレージ22と、通信インターフェース(IF)23と、入出力IF24とを備える。
プロセッサ10、20は、CPU(Central Processing Unit)やMPU(Micro processing unit)、GPU(Graphics Processing Unit)等を含んで構成される。プロセッサ10は、ユーザ端末100全体の動作を制御する。プロセッサ20は、ゲームサーバ200全体の動作を制御する。メモリ11、21は、ROM(Read Only Memory)およびRAM(Random Access Memory)等の揮発性記憶装置で構成され得る主記憶装置を含んで構成される。ストレージ12、22は、フラッシュメモリまたはHDD(Hard Disk Drive)などの不揮発性記憶装置によって構成され得る補助記憶装置を含んで構成される。メモリ11には、プロセッサ10がストレージ12からロードした各種プログラム及びデータが一時的に記憶される。メモリ21には、プロセッサ20がストレージ22からロードした各種プログラム及びデータが一時的に記憶される。これによりメモリ11はプロセッサ10に対して作業領域を提供する。メモリ11は、プロセッサ20に対して作業領域を提供する。
ゲームサーバ200のストレージ22にはゲームプログラム等のゲームデータが格納される。ユーザ端末100のストレージ12には、ゲームサーバ200からダウンロードされたゲームプログラム等のゲームデータが格納される。当該ゲームプログラムは、メモリ11、21に展開される。プロセッサ10は、メモリ11に展開されるゲームプログラムを実行する。プロセッサ20は、メモリ21に展開されるゲームプログラムを実行する。メモリ11には、プロセッサ10が当該ゲームプログラムに従って動作している間に生成した各種ゲームデータも一時的に格納される。メモリ21には、プロセッサ20が当該ゲームプログラムに従って動作している間に生成した各種ゲームデータも一時的に格納される。本実施形態では、前記各種データは所定のゲームプログラム、ユーザ情報およびゲーム情報等のゲームデータ、それらをユーザ端末100とゲームサーバ200との間に送受信させる指示、ゲームを進行させるための指示を含む。
通信IF13、23は、ユーザ端末100とゲームサーバ200との間で各種データを送受信するための通信制御機能を備える。通信制御機能には、例えば、無線LAN(Local Area Network)接続機能、有線LAN、無線LANおよび携帯電話回線網を介したインターネット接続機能ならびに近距離無線通信機能等が含まれる。
ゲームサーバ200の入出力IF24は、マウス、キーボード等の情報入力機器である入力部、および、液晶ディスプレイ等の出力部を備えており、コンピュータの情報をモニタリングするために用いられる。
次に図2を用いてユーザ端末100の機能的構成について説明する。ユーザ端末100は、プロセッサ10、メモリ11、ストレージ12、通信IF13、入出力IF14等の協働により、制御部110及び記憶部120として機能し得る。記憶部120に格納されたゲームプログラムは主記憶上に展開され、制御部110において実行される。制御部110は、当該ゲームプログラムによって、操作受付部111、オブジェクト位置判定部112、カーソル位置特定部115、モーション画像生成部113、オブジェクト制御部114、および、表示制御部116として機能し得る。なお、主記憶上には、制御部110が当該プログラムに従って動作している間に生成した各種ゲームデータや制御部110によって利用される各種ゲームデータも一時的に格納される。記憶部120には、制御部110が前記各部として機能するために必要なデータが記憶されている。当該データとしては、例えば、ゲームプログラム、ゲーム情報、ユーザ情報が含まれる。ゲーム情報としては、各種ゲームオブジェクトを管理するオブジェクト管理テーブル、ゲームキャラクタの各種スキルを管理するスキル管理テーブル、各ゲームキャラクタのモーションを定義するためのモーションデータ等が挙げられる。ユーザ情報としてはユーザ管理テーブル等が挙げられる。
制御部110は、ユーザ端末100全体の動作を制御し、各要素間におけるデータの送受信、ゲームの実行に必要な演算処理およびその他の処理を行う。制御部110は、例えば、操作受付部111で検知されたタッチスクリーン15に対する操作入力に基づいてゲームプログラムに従ったゲームを展開させ、その結果を示すゲーム画像を描画する。制御部110は、ゲームサーバ200から受信したユーザ情報、ゲームプログラムによる演算結果、ユーザの入力部151に対する作用に基づいて、表示部152に表示されるゲーム空間及びオブジェクト等の画像を生成する。また、制御部110は、タッチスクリーン15に対する操作入力に基づいてゲーム空間内におけるゲームオブジェクトを操作する。また、制御部110は、タッチスクリーン15に対する操作入力及び演算処理の結果等に基づいて、記憶部120に記憶されている各種データの更新等の処理を行う。なお、制御部110は、ゲームの進行状態に応じて、ゲーム空間の視野を指定するための仮想カメラの位置を制御する処理を行ってもよい。また、制御部110は、記憶部120に記憶された各種ユーザ情報及びゲーム情報を参照し、ゲーム進行に必要な各種判定を実行する。また、制御部110は、前記演算処理およびその他の処理を実行することにより生成したゲーム画面を表示部152に出力する。
操作受付部111は、タッチスクリーン15の入力部151に対するユーザの操作を検知する。操作受付部111は、入力部151及びその他の入出力IF14を介したコンソールによる操作指示等から、いかなる入力がなされたかを判別し、その結果をオブジェクト位置判定部112、モーション画像生成部113等の必要な要素に出力する。操作受付部111は、入力部151に対する作用入力がなされた場合には、入力位置の座標情報、作用の種類(タッチ操作、スライド操作)を検知する。操作受付部111は、連続して検知されていた入力が途切れることを検知することで、タッチスクリーン15から接触入力が解除されたことを検知する。
操作受付部111は、タッチスクリーン15に対するユーザの操作を判別することができる。例えば、タッチオン操作、タッチオフ操作、スワイプ操作、スライド操作、フリック操作、およびその他の操作を判別する。
タッチオン操作は、タッチスクリーン15に対する物体の接触または近接による操作入力を開始させる操作である。タッチオフ操作は、タッチスクリーン15に対する物体の接触または近接を解除することによって、タッチスクリーン15への操作入力を解除する操作である。スワイプ操作は、タッチオン操作に引き続いて入力され、タッチスクリーン15に対する物体の接触または近接を維持した状態で、当該物体をタッチスクリーン15上で移動させる操作である。スライド操作は、ユーザがスワイプ操作を予め定められた時間よりも短い時間で行う操作である。フリック操作は、ユーザがスライド操作後にタッチオフ操作を行う操作であり、例えば、ユーザがタッチスクリーン15で指を弾くような操作である。
オブジェクト制御部114は、ユーザによる操作入力、および/または、ゲームプログラムに基づいて、打者601(キャラクタ)、バット602(用具)、投手603(キャラクタ)、ボール604(移動体)、ミートカーソル606(非作用領域)、縮小ミートカーソル606s(作用領域)等のオブジェクト(図4参照)を制御する。
オブジェクト位置判定部112は、ボール604、ミートカーソル606等のオブジェクトのゲーム空間内における位置を判定する。例えば、オブジェクト位置判定部112は、ボール604がストライクゾーン605又はボールゾーン608内のいずれの位置に到達するかを判定する。また、オブジェクト位置判定部112は、到達したボール604とミートカーソル606との位置関係を特定する。
カーソル位置特定部115は、ボール604とミートカーソル606との位置関係に基づいて、交差面において縮小ミートカーソル606sを設定する位置を特定する。
モーション画像生成部113は、オブジェクト制御部114による、ボール604、ミートカーソル606、および、縮小ミートカーソル606s等の各オブジェクトの制御態様に基づいて、各オブジェクトのモーションを示す画像を生成する。モーション画像生成部113は、縮小ミートカーソル606sの制御態様に基づいて、打者601が振るバット602、または、打者601のモーションに対応するアニメーションを生成してもよい。
表示制御部116は、タッチスクリーン15の表示部152に対して、上述の各要素によって実行された処理結果が反映されたゲーム画面を出力する。該ゲーム画面には、モーション画像生成部113によって生成された、ミートカーソル606、バット602、ボール604などのアニメーションが含まれてもよい。
<ゲームシステムの処理の態様例>
本開示の一実施形態に係るゲームシステムにおいて実行される処理を、図3、図4に示す野球ゲームを例示して説明する。図3は、本ゲームシステムの動作を示すフローチャートである。図4は、本実施形態における処理によって生成される、野球ゲームのゲーム画面の一例である。図4において、ゲーム空間としての球場における一場面が示されている。本場面は打撃画面600を示しており、投手603が立っている位置(第1位置)からキャッチャー(図示せず)のいる位置(第2位置)まで投手603がボール604を投球して、打者601がボール604を打撃する場面が示されている。本実施形態において、「投球する」ことは、投手603がボール604を移動させることを意味する。「打撃する」ことは、打者601がボール604に作用を与えることを意味する。
球場における第1位置と第2位置との間に、ホームベース607が配置されている。制御部110は、ホームベース607上に第1位置から第2位置に向かう方向に交差する方向に延在する交差面を設定する。制御部110は、交差面に基づいて、打者601がボール604を打撃したか否かを判定する。図4の例では、交差面は、ストライクゾーン605と、ストライクゾーン605の外側に配置されるボールゾーン608とを含む。操作受付部111が、投手603が投球したボール604が交差面に到達したタイミングで、ユーザからの打撃操作を受け付けると、打者601は、バット602をスイングすることによって、ボール604を打ち返す作用をボール604に与えることができる。ボール604aおよびボール604bは、投手603が投球したボール604が交差面に到達する際の到達予定位置、または、実際の到達位置を示す。ボール604aは、ボール604がボールゾーン608と交差する際の位置の一例を示している。ボール604bは、ボール604がストライクゾーン605と交差する際の位置の一例を示している。
オブジェクト制御部114は、交差面にミートカーソル606を設定する。ミートカーソル606は、ボール604に打撃を与えるための衝突判定が行われないが、打撃を与えることができる領域であるようにユーザに提示される領域である。オブジェクト制御部114は、ミートカーソル606内に縮小ミートカーソル606sを予め設定していても良いし、設定していなくてもよい。縮小ミートカーソル606sは、ミートカーソル606とは異なる形状を有し、ボール604に打撃を与える衝突判定が行われる領域である。表示制御部116は、ミートカーソル606内に含まれる基準位置にバット602の芯が一致するように、打者601によってスイングされたバット602を演出のために表示してもよい。基準位置は、例えば、交差面においてオブジェクトが配置される基準となる位置であり、好ましくは、オブジェクトの中心である。ミートカーソル606内に含まれる基準位置は、図4の+印609において示されるように、好ましくはミートカーソル606の中心である。
図3に示すとおり、ステップS101において、メインメニュー画面(不図示)においてユーザが野球ゲームの実行を指示すると、制御部110は野球ゲームを開始する。制御部110は、各種オブジェクトのゲームデータを記憶部120に記憶させる。必要なゲームデータが記憶部120に記憶されていない場合には、制御部110はゲームサーバ200からダウンロードする。各種オブジェクトのゲームデータは、例えば打者601、バット602、投手603、ミートカーソル606、ホームベース607、縮小ミートカーソル606s等の各種オブジェクトに関するデータが含まれる。次に、ステップS102において、制御部110は、記憶部120から各種オブジェクトのゲームデータをロードし、図4に示されるような打者601、バット602、投手603、ミートカーソル606、ホームベース607等を含む打撃画面600を表示部152に表示させる。なお、制御部110は、ストライクゾーン605、および、ボールゾーン608を表示部152に表示させなくてもよい。
ステップS103において、制御部110は表示部152の打撃画面600中に投手603による投球動作を表示させる。制御部110は、投手603による投球動作が開始された後所定のタイミングで、ストライクゾーン605またはボールゾーン608内にボール604の到達予定位置を示す表示(ボール604a、604b)を描画する。投手603が投球動作を開始するタイミングは、例えば、ユーザ端末100を操作するユーザがインターネットを介して別のユーザと対戦する場合には、当該別のユーザが操作するユーザ端末100から送信される投球開始指示に基づけばよい。また、コンピュータ制御による仮想の相手とユーザが対戦する場合には、ゲームプログラムによって適宜設定されたタイミングであればよい。制御部110はボール604の到達予定位置を表示部152に表示させた後、ミートカーソル606を半透明に表示させて、ボール604の到達予定位置の表示を遮ることがないようにする。
ステップS104において、操作受付部111が、ユーザによる入力部151に対する移動操作(第1操作)を受け付ける。移動操作とは、ミートカーソル606を移動させるための操作である。本実施形態では、移動操作はスワイプ操作である。制御部110は、移動操作に基づいて、ミートカーソル606を移動させる。縮小ミートカーソル606sが予め設定されている場合、制御部110は、移動操作に基づいて、ミートカーソル606と一緒に縮小ミートカーソル606sを移動させてもよい。操作受付部111は、タッチスクリーン15の任意の位置における移動操作を受け付けることができる。具体的には、操作受付部111は、タッチスクリーン15に対するユーザの最初の接触位置(初期タッチ座標)と、移動操作後の接触位置(タッチナウ座標)とを比較し、初期タッチ座標に対するタッチナウ座標の変化方向、および、変化量に基づいて、ミートカーソル606の位置の変化方向、および、変化量をそれぞれ決定する。これにより、オブジェクト制御部114は、ホームベース607上の交差面と異なる領域における移動操作に対しても、それに連動して、ミートカーソル606を間接的に移動させることができる。このようにすれば、ユーザの指によってミートカーソル606の視認が妨げられることを回避できる。
本実施形態では、ミートカーソル606は、その一部がストライクゾーン605に含まれる範囲で移動可能である。従って、ミートカーソル606の一部はボールゾーン608に含まれ得る。しかし、ボールゾーン608のボールを打撃することは不可能なように設定されていてもよい。
ステップS105において、オブジェクト位置判定部112が、投手603により投球されたボール604が交差面から所定の範囲内に入ったか否かを判定する。所定の範囲は、上述の第1位置と第2位置との間において、交差面から第1位置に向けて延びる所定距離に含まれる範囲である。ボール604が所定の範囲内に入っていると判定された場合、オブジェクト制御部114はミートカーソル606の移動の少なくとも一部を制限する。移動が制限されたことを示すとおり、オブジェクト制御部114はミートカーソル606の色や模様といった表示態様を変化させてもよい。ミートカーソル606は、後述する打撃操作の態様に基づいて、移動が制限されることが好ましい。例えば、打撃操作が、第1方向(典型的に上方向:0°〜180°方向)へのスライド操作である態様では、当該第1方向へのミートカーソル606の移動が制限されることが好ましい。これにより、例えば打撃操作が入力された場合に、誤ってミートカーソル606の移動操作と判定されてしまうことが確実に防止される。なお、第1方向のみならず、第1方向と異なる第2方向(典型的には下方向:180°〜360°方向)への移動(すなわち、全方向への移動)も制限されていてもよい。
一方、ミートカーソル606の移動が制限されている場合にも、第2方向への移動は許容されてもよい。例えば、変化球は下方向(180°〜360°方向の範囲内)において変化することが想定されるため、第2方向への移動が許容されることにより、ユーザはボール604が交差面に到達するぎりぎりまでミートカーソル606を移動させることができる。このように、ミートカーソル606を移動させるための操作入力と、打者601に打撃を行わせるための操作入力との競合を回避することが可能になる。また、図4に示すとおりボール604を飛ばす方向(例えばスタンド、外野方向)は、画面上、打撃位置より上方に描画されるため、ユーザが直感的に上方向へのスライド操作を打撃操作と理解することができる。
ステップS106において、操作受付部111は、ユーザによる打撃操作(第2操作)を受け付ける。打撃操作とは、打者601にボール604を打撃させるための操作のことである。打撃操作は、例えば、タッチスクリーン15に対するスライド操作である。操作受付部111は、タッチスクリーン15上のいかなる位置に対して行なわれたスライド操作も、打撃操作として受け付ける。したがってユーザは、タッチスクリーン15上の任意の位置に、打撃操作を行うことができる。
ステップS107において、操作受付部111は、入力されたタッチ位置の履歴を解析して、打撃操作の方向、スピード、および、タイミングを取得する。具体的には、操作受付部111は、フレーム毎にユーザ(ユーザにより操作される指またはスタイラスといった指示体)による接触が入力された入力部151における座標を取得する。これにより、制御部110は、タッチ位置の移動前後における座標を比較することにより、打撃操作の方向を判定する。また、制御部は、フレーム間におけるタッチ位置の座標変動量を求めることにより、打撃操作のスピードを判定する。また、フレーム間におけるタッチ位置の座標変動量が所定の閾値を越えた場合に打撃操作と判定されるように設定されていることに基づいて、制御部110は、当該閾値を超えるスピードで初めてタッチ位置の座標が変動したフレームを、打撃操作が入力されたタイミングとして特定することができる。操作受付部111は、移動操作から連続して打撃操作が入力された場合にも打撃操作を好適に判定することができる。したがってユーザ端末100は、ミートカーソル606の移動から打撃までをシームレスに行うことが可能な操作性をユーザに提供できる。
ステップS108において、カーソル位置特定部115は、ボール604とミートカーソル606との位置関係に基づいて、交差面において縮小ミートカーソル606sを設定する位置を特定する。ステップS109において、オブジェクト制御部114は、特定された位置に、縮小ミートカーソル606sを設定する。
打撃操作が受け付けられた場合、ステップS110において、オブジェクト制御部114は、交差面におけるボール604と縮小ミートカーソル606sとの位置関係に少なくとも基づいて、打者601がボール604に打撃を与えたか否かを判定する。
ステップS110においてYESの場合、オブジェクト制御部114は、上述の位置関係に基づいて、ボール604に作用を与える。ステップS111において、オブジェクト制御部114は、打撃が与えられたボール604がゲーム空間において移動する際の移動経路を算出する。これにより、モーション画像生成部113は、算出された移動経路を飛んでいくボール604のアニメーションを生成することができる。ステップS111においてNOの場合、オブジェクト制御部114がボール604の移動経路を算出することなく、モーション画像生成部113は、打者601がボール604を空振りするアニメーションを生成してもよい。
<縮小ミートカーソルの設定方法>
(概要)
制御部110は、後述する図5の各ステップに基づいて、交差面において縮小ミートカーソル606sを設定する位置を特定する。特定された位置は、縮小ミートカーソル606sとボール604の衝突判定を行うための判定位置として機能する。制御部110は、縮小ミートカーソル606sを判定位置に設定する。制御部110は、ミートカーソル606内に予め設定された縮小ミートカーソル606sを、交差面における判定位置まで移動させてもよい。制御部110は、交差面における判定位置に縮小ミートカーソル606sを生成してもよい。カーソル位置特定部115は、ミートカーソル606とのボール604との位置関係が、縮小ミートカーソル606sとボール604との位置関係においても反映されるように、縮小ミートカーソル606sを設定する位置を特定する。
(設定方法の一例−詳細)
設定方法の一例を図5〜図7に基づいて説明する。図5は、縮小ミートカーソル606sの設定方法の処理の流れを示すフローチャートである。図6は、交差面におけるミートカーソル606sとボール604との位置関係の一例を示す図である。図7は、縮小ミートカーソル606sの設定方法の一例を説明する図である。以下では、基準位置がオブジェクトの中心である例について説明する。
オブジェクト位置判定部112は、交差面におけるミートカーソル606の位置、および、ボール604の位置を判定する。ボール604は中心C1および半径rに基づいて外縁が定義されている。オブジェクト位置判定部112が判定するボール604の位置は、実際の到達位置でも到達予定位置でもよい。ミートカーソル606は、中心M1、短辺方向の軸である短軸J1、および長辺方向の軸である長軸J2に基づいて外縁が定義されている。ミートカーソル606の中心M1は、短軸J1と長軸J2との交点に一致する。
長軸J2は、バット602の傾きの基準となる軸である。モーション画像生成部113は、打撃が行われる前にスイングされたバット602を演出するとき、バット602の軸が、交差面において長軸J2に沿うように、バット602のアニメーションを生成することができる。
ステップS201において、カーソル位置特定部115は、仮想ボール604f(第1仮想移動体)と仮想ボール604g(第2仮想移動体)とを定義する。仮想ボール604fは中心C2および半径rに基づいて外縁が定義される。仮想ボール604fの中心C2は、ボール604の中心C1とミートカーソル606の中心M1とを通る直線L上において、仮想ボール604fの外縁がミートカーソル606に外接するように定義される。仮想ボール604gは中心C3および半径rに基づいて外縁が定義される。仮想ボール604gの中心C3は、直線L上において、仮想ボール604gの外縁が縮小ミートカーソル606sに外接するように定義される。
ステップS202において、カーソル位置特定部115は、第1比率と第2比率とに基づいて、縮小ミートカーソル606sを設定する位置を特定する。第1比率は、ミートカーソル606の中心M1からボール604の中心C1までの距離Aと、中心M1から仮想ボール604fの中心C2までの距離A+Bとによって定義される。距離Bは、中心C1から中心C2までの距離である。第1比率は、例えば、距離Aと距離Bとの比率A:Bである。第2比率は、縮小ミートカーソル606sの中心M2からボール604の中心C1までの距離aと、中心M2から仮想ボール604gの中心C3までの距離a+bとによって定義される。距離bは、中心C1から中心C3までの距離である。第2比率は、例えば、距離aと距離bとの比率a:bである。
カーソル位置特定部115は、例えば、第1比率A:Bと第2比率a:bとが一致するように、縮小ミートカーソル606sを設定する位置を特定する。カーソル位置特定部115は、例えば、次の式(1)に基づいて距離aを算出する。
a=A(n+r)/(A+B)・・・式(1)
式(1)において、nは、縮小ミートカーソル606sの中心M2から、直線Lと縮小ミートカーソル606sとの交点Pまでの距離nである。図7に示すように、a+bはn+rに近似しているので、a+b=n+rであるとみなせる。式(1)は、a+b=n+rであることとa:b=A:Bであることとに基づいて得られる。
したがって、縮小ミートカーソル606sの位置が、第1比率A:Bと第2比率a:bとに基づいて設定され得る。カーソル位置特定部115は、例えば、直線L上を中心M1からミートカーソル606の方に距離A−距離aだけ移動した場合に到達する位置を、縮小ミートカーソル606sを設定する位置として特定する。
ステップS203において、カーソル位置特定部115は、特定した位置に中心M2が一致するように、縮小ミートカーソル606sを設定する。
オブジェクト制御部114は、設定された縮小ミートカーソル606sとボール604との位置関係に基づいて、ボール604に対する打撃判定およびボール604の移動経路の計算を実行する。
オブジェクト制御部114は、縮小ミートカーソル606sの位置が、ボール604への打撃に適合した位置の範囲にあれば、ボール604が打撃されたと判定する。交差面においてボール604が縮小ミートカーソル606sと少なくとも部分的に重畳している場合には、打者がボール604を打撃したと判定する。交差面において、ボール604が縮小ミートカーソル606sの外部に配置されている場合には、打者がボール604を打撃しなかったと判定する。
オブジェクト制御部114は、操作受付部111が特定した打撃操作のタイミングに基づいて、打撃判定を実行してもよい。例えば、交差面におけるボール604および縮小ミートカーソル606sが打撃に適合した位置関係にある場合であっても、打撃操作のタイミングがボール604への打撃に適合したタイミングに対して、早過ぎたり遅すぎたりする場合には、オブジェクト制御部114は、打者601がボール604を打撃しなかったと判定する。
オブジェクト制御部114は、縮小ミートカーソル606sとボール604との位置関係に基づいてボール604の移動経路を算出する。具体的には、オブジェクト制御部114は、上述の位置関係に基づいて、バット602とボール604との衝突を力学的にモデル化する。この場合、バット602に衝突した直後のボール604の速度ベクトル、回転軸、回転量等を、ボール604を移動させるための初期条件として取得すればよい。例えば、ボール604の下部を縮小ミートカーソル606sの上部で打撃した場合には、打球の角度が上がりフライとなる。また、ボール604の上部を縮小ミートカーソル606sの下部で打撃した場合には、打球の角度が下がりゴロとなる。また、例えば、オブジェクト制御部114は、縮小ミートカーソル606sの中央の位置でボール604の中央を打撃する等の所謂ジャストミートの場合には、ライナーでボール604が飛ぶような移動経路を算出する。一方、ジャストミート以外の場合には凡打と判定して、凡打に対応する移動経路を算出してもよい。
オブジェクト制御部114は、打撃操作のタイミングに基づいて、速度ベクトルの向きを特定してもよい。オブジェクト制御部114は、その後、ゲーム空間内に設定された各種物理パラメータ、および、物理法則を規定する方程式に基づいて、ボール604の移動経路を算出すればよい。これにより表示制御部116は、定性的には現実の野球と同様の打球の移動結果を、表示部152に表示させることができる。例えば、オブジェクト制御部114は、打撃操作のタイミングが早い場合には、引っ張り打ちの方向にボール604を移動させ、打撃操作のタイミングが遅い場合には、流し打ちの方向にボール604を移動させる。
図8は、縮小ミートカーソル606sに基づいて表示されるバット602を説明する図である。モーション画像生成部113は、縮小ミートカーソル606s内に含まれる基準位置(例えば、縮小ミートカーソル606sの中心を示す、図8の+印609)にスイングされたバット602の芯610がくるように、バット602をスイングさせるアニメーションを生成する。モーション画像生成部113は、打者601が、バット602を縮小ミートカーソル606sに向けてスイングするモーションに対応するアニメーションを生成してもよい。本実施形態では、打撃操作のスピードによりスイングのスピードを決定してもよい。スイングのスピードを打者601の能力にも依存させるようにしてもよい。モーション画像生成部113は、オブジェクト制御部114によって計算された軌道に基づいて、打たれたボール604が飛んでいくアニメーションを生成してもよい。
表示制御部116は、モーション画像生成部113によって生成されたアニメーションを表示部152に表示させる。表示制御部116は、縮小ミートカーソル606sが設定される位置に、ボール604に打撃を与えるために打者601によって用いられるバット602を配置するように表示させる。
縮小ミートカーソル606sの大きさは、ミートカーソル606の大きさよりも小さいことが好ましい。縮小ミートカーソル606sの形状は、ミートカーソル606を縮小した相似形状であることが好ましい。ミートカーソル606の幅は、バット602の幅よりも大きく、縮小ミートカーソル606sの幅は、バット602の幅以下であることが好ましい。これにより、ユーザは、ボール604を当てることができる範囲が、表示されているバット602の幅よりも広いことを視認するので、バット602にボール604を当てやすくなることを認識できる。本実施形態によれば、操作に不慣れなユーザであっても容易に楽しむことができるゲームが提供される。
上述の方法によれば、ミートカーソル606とは別に、縮小ミートカーソル606sを設定することにより、打撃に関する演出の自由度が向上し、ゲームの趣向性をいっそう向上させ得る。
(変形例−傾きを考慮した設定方法)
オブジェクト制御部114は、交差面における縮小ミートカーソル606sの位置に基づいて、縮小ミートカーソル606sを傾けて設定してもよい。オブジェクト制御部114は、例えば、記憶部120に格納される傾きデータ121を参照することによって、縮小ミートカーソル606sの傾きを特定する。傾きデータ121は、交差面における縮小ミートカーソル606sの位置と傾きとの対応関係を定義している。オブジェクト制御部114は、縮小ミートカーソル606sを設定する位置に対応する傾きの値を、傾きデータ121から取得する。オブジェクト制御部114は、縮小ミートカーソル606sを、取得した傾きの値に基づいて傾けて設定する。オブジェクト制御部114は、打者601の属性(左打ち、右打ち等)に基づいて、縮小ミートカーソル606sの傾きを異ならせても良い。
オブジェクト制御部114は、傾けて設定された縮小ミートカーソル606sとボール604との位置関係に基づいて、ボール604への打撃の有無を判定する。打撃があったと判定した場合は、傾けて設定された縮小ミートカーソル606sとボール604との位置関係に基づいて、ボール604の軌道を計算する。
図9は、傾けて設定された縮小ミートカーソル606sに基づいて表示されるバット602を説明する図である。モーション画像生成部113は、傾けて設定された縮小ミートカーソル606sの長軸が、バット602の軸に沿うように、バット602のアニメーションを生成する。
上述の方法によれば、縮小ミートカーソル606sの傾きに合せて、傾いたバット602が打撃画面に表示される。これにより、打者601がバット602をスイングする際のアニメーションを、自然に表現し得る。
(設定方法の他の例−詳細)
図10は、縮小ミートカーソル606sの設定方法の他の例を説明する図である。本方法では、オブジェクト制御部114は、ミートカーソル606の軸(長軸J2)と直線Lとの間の角度θに基づいて、縮小ミートカーソル606sを傾けて設定する。カーソル位置特定部115は、縮小ミートカーソル606sの長軸とミートカーソル606の長軸J2との成す角度が角度θに一致するように、縮小ミートカーソル606sの傾きを決定してもよい。縮小ミートカーソル606sを設定するため一連の処理の手順は、図5に示すものと基本的に共通する。
角度θに基づいて縮小ミートカーソル606sを傾けた場合、縮小ミートカーソル606sの短軸が直線Lに重なるので、距離nは、縮小ミートカーソル606sの短軸の半径mに等しい。カーソル位置特定部115は、上述した式(1)においてnをmに置き換えた式を用いることによって、距離aを算出し、距離aに基づいて、中心M2の位置を特定する。オブジェクト制御部114は、特定された位置に縮小ミートカーソル606sの中心が一致するように、縮小ミートカーソル606sを傾けて設定する。
上述の方法によれば、縮小ミートカーソル606sと仮想ボール604gとが、直線Lの軸上で常に外接するという位置関係が維持される。そのため、縮小ミートカーソル606sを設定する位置を特定するための演算処理を簡素化することができる。
〔ソフトウェアによる実現例〕
制御部110の制御ブロックは、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、制御部110は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、前記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、前記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が前記プログラムを前記記録媒体から読み取って実行することにより、本発明の目的が達成される。前記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、前記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して前記コンピュータに供給されてもよい。なお、本発明は、前記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は前述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
〔付記事項〕
本発明の一側面に係る内容を列記すると以下の通りである。
(項目1)ゲームの実行方法であって、前記方法は、プロセッサおよびメモリを備えるコンピュータにより実行され、前記ゲームは、第1位置から第2位置に向けて移動する移動体に対してキャラクタが作用を与えることによって進行され、前記プロセッサの制御により、前記移動体に前記作用を与えたか否かを判定するための交差面を、前記第1位置と前記第2位置との間に設定するステップと、前記作用を与えない非作用領域を前記交差面に設定するステップと、前記非作用領域を移動させる第1操作を受け付けるステップと、前記第1操作に基づいて、前記非作用領域を移動させるステップと、前記作用を与えさせるための第2操作を受け付けるステップと、前記第2操作が受け付けられた場合、前記非作用領域とは形状の異なる、前記移動体に作用を与えるための作用領域を設定する位置を、前記交差面における前記非作用領域と前記移動体との位置関係に基づいて特定するステップと、前記位置に、前記作用領域を設定するステップと、前記作用領域と前記移動体との位置関係に基づいて、前記移動体に前記作用を与えるステップとを含む、方法。これにより、ゲームの趣向性をいっそう向上させ得る。
(項目2)前記作用領域の大きさは、前記非作用領域の大きさよりも小さい、項目1の方法。
(項目3)前記コンピュータは、画像を表示させる表示部をさらに備え、前記方法は、前記作用を与えるために前記キャラクタによって用いられる用具を前記表示部に表示させるステップをさらに含み、前記非作用領域の幅は、前記用具の幅よりも大きく、前記作用領域の幅は、前記用具の幅以下である、項目2の方法。
(項目4)前記方法は、第1仮想移動体と、第2仮想移動体とを定義するステップをさらに含み、前記第1仮想移動体の基準位置は、前記移動体の基準位置と、前記非作用領域の基準位置とを通る直線上において、前記第1仮想移動体の外縁が前記非作用領域に外接するように定義され、前記第2仮想移動体の基準位置は、前記直線上において、前記第2仮想移動体の外縁が前記作用領域に外接するように定義され、前記方法は、前記非作用領域の基準位置から前記移動体の基準位置までの距離と前記非作用領域の基準位置から前記第1仮想移動体の基準位置までの距離とによって定義される第1比率と、前記作用領域の基準位置から前記移動体の基準位置までの距離と前記作用領域の基準位置から前記第2仮想移動体の基準位置までの距離とによって定義される第2比率と、に基づいて前記位置を特定するステップをさらに含む、項目1〜3のいずれか1つの方法。
(項目5)前記第1比率と前記第2比率とが一致するように前記位置を特定する、項目4の方法。
(項目6)特定された前記位置に基づいて、前記作用領域を傾けて設定する、項目4または5の方法。
(項目7)前記非作用領域の軸と前記直線と間の角度に基づいて、前記作用領域を傾けて設定する、項目4または5の方法。
(項目8)項目1〜7のいずれか1つのゲームの実行方法の各ステップを、コンピュータに実行させるプログラム。
(項目9)項目8のプログラムを記録したコンピュータ読み取り可能な記録媒体。