本発明の実施形態に係るゲームを実行する方法、および、プログラムの具体例を、以下に図面を参照しつつ説明する。本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が本発明に含まれることが意図される。以下の説明では、図面の説明において同一の要素には同一の符号を付し、重複する説明を繰り返さない。
<ユーザ端末とゲーム端末との関係及び構成>
まず、図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に対するユーザの指やスタイラスといった物体の接触または近接を検知し、操作入力として受け付ける。そして、当該操作入力に含まれるユーザの作用(主に、タッチ操作、スライド操作、スワイプ操作、及びタップ操作等の物理的接触操作)が入力された画面位置の情報を検知して外部へ情報信号として出力する機能を備える。タッチスクリーン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、モーション画像生成部113、オブジェクト制御部114として機能し得る。なお、主記憶上には、制御部110が当該プログラムに従って動作している間に生成した各種ゲームデータや制御部110によって利用される各種ゲームデータも一時的に格納される。記憶部120には、制御部110が前記各部として機能するために必要なデータが記憶されている。当該データとしては、例えば、ゲームプログラム、ゲーム情報、ユーザ情報が含まれる。ゲーム情報としては、各種ゲームオブジェクトを管理するオブジェクト管理テーブル、ゲームキャラクタの各種スキルを管理するスキル管理テーブル、各ゲームキャラクタのモーションを定義するための基準モーションデータ121(後述)等が挙げられる。ユーザ情報としてはユーザ管理テーブル等が挙げられる。
制御部110は、ユーザ端末100全体の動作を制御し、各要素間におけるデータの送受信、ゲームの実行に必要な演算処理その他の処理を行う。制御部110は、例えば、操作受付部111で検知されたタッチスクリーン15に対する操作入力に基づいてゲームプログラムに従ったゲームを展開させ、その結果を示すゲーム画像を描画する。制御部110は、ゲームサーバ200から受信したユーザ情報、ゲームプログラムによる演算結果、ユーザの入力部151に対する作用に基づいて、表示部152に表示されるゲーム空間及びオブジェクト等の画像を生成する。また、制御部110は、タッチスクリーン15に対する操作入力に基づいて仮想空間内におけるゲームオブジェクトを操作する。また、制御部110は、タッチスクリーン15に対する操作入力及び演算処理の結果等に基づいて、記憶部120に記憶されている各種データの更新等の処理を行なう。なお、制御部110は、ゲームの進行状態に応じて、ゲーム空間の視野を指定するための仮想カメラの位置を制御する処理を行ってもよい。また、制御部110は、記憶部120に記憶された各種ユーザ情報及びゲーム情報を参照し、ゲーム進行に必要な各種判定を実行する。
操作受付部111は、タッチスクリーン15の入力部151に対するユーザの操作を検知する。操作受付部111は、入力部151及びその他の入出力IF14を介したコンソールによる操作指示等から、いかなる入力がなされたかを判別し、その結果をオブジェクト位置判定部112、モーション画像生成部113等の必要な要素に出力する。操作受付部111は、入力部151に対する作用入力がなされた場合には、入力位置の座標情報、作用の種類(タッチ操作、スライド動作等)を検知する。操作受付部111は、連続して検知されていた入力が途切れることを検知することで、タッチスクリーン15から接触入力が解除されたことを検知する。
オブジェクト制御部114は、ユーザによる操作入力、および/または、ゲームプログラムに基づいて、打者601(キャラクタ)、バット602(作用体)、投手603(キャラクタ)、ボール604(移動体)、ミートカーソル606(作用領域)等のオブジェクト(図4参照)を制御する。
オブジェクト位置判定部112は、後述するバット602、ボール604、ミートカーソル606等のオブジェクトのゲーム空間内における位置を判定する。例えば、オブジェクト位置判定部112は、ボール604がストライクゾーン605(第1領域)又はボールゾーン608(第2領域)内のいずれの位置に到達するかを判定する。
モーション画像生成部113は、オブジェクト制御部114によるキャラクタの制御態様に基づいて、キャラクタのモーションを示す画像を生成する。本実施形態においては、打者601のモーションに対応するアニメーション生成する処理について後述する。
<ゲームシステムの処理の態様例>
本開示の一実施形態に係るゲームシステムにおいて実行される処理を、図3、図4に示す野球ゲームを例示して説明する。図3は、本ゲームシステムの動作を示すフローチャートである。図4は、本実施形態における処理によって生成される、野球ゲームのゲーム画面の一例である。図4において、ゲーム空間としての球場における一場面が示されている。本場面は打撃画面を示しており、投手603が立っている位置(第1位置)からキャッチャー(図示せず)のいる位置(第2位置)まで投手603がボール604を投球して(移動体を移動させ)、打者601がボール604に対する打撃を行う(移動体に対して作用を与える)場面が示されている。また、制御部110は、交差面を第1位置と第2位置の間におけるホームベース607上に設定する。交差面はストライクゾーン605およびボールゾーン608を含む。投手603が投球したボールが交差面に到達したタイミングでユーザからの所定の操作入力を受け付けると、打者601はバット602をスイングし、ボール604を打ち返す作用を与える。ボール604a、ボール604bは、投手603が投球したボールが交差面に到達する際の到達予定位置、または、実際の到達位置を示す。ボール604aは、ボール604がストライクゾーン605と交差する際の位置の一例を示している。ボール604bは、ボール604がボールゾーン608と交差する際の位置の一例を示している。また、制御部110は、縁領域605a〜605dを、ストライクゾーン605内における各辺から内側に伸びる矩形の領域として設定する。
交差面には、仮想バット602’およびミートカーソル606が表示される。仮想バット602’およびミートカーソル606は、バット602がスイングされた際に、交差面においてボール604に作用を与え得る領域を示す標識である。仮想バット602’はバット602がスイングされたときの到達予定位置を示す。ミートカーソル606は、仮想バット602’内に設定される領域であり、特に良好な打撃力によってボール604に作用を与えることができる領域である。なお、仮想バット602’を表示せず、ミートカーソル606のみを表示してもよい。
図3に示すように、ステップS101において、メインメニュー画面(不図示)においてユーザが野球ゲームの実行を指示すると、制御部110は野球ゲームを開始する。制御部110は、各種オブジェクトのゲームデータを記憶部120に記憶させる。必要なゲームデータが記憶部120に記憶されていない場合には、制御部110はゲームサーバ200からダウンロードする。各種オブジェクトのゲームデータは、例えば打者601、バット602、投手603、ミートカーソル606、ホームベース607等であり、後述する打者601に適用される基準モーションデータを含む。次に、ステップS102において、制御部110は、記憶部120から各種オブジェクトのゲームデータをロードし、図4に示されるような打者601、バット602、投手603、ミートカーソル606、ホームベース607等を含む打撃画面600を表示する。なお、制御部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操作)を受け付けると、制御部110は仮想バット602’およびミートカーソル606を移動させる。操作受付部111は、タッチスクリーン15の任意の位置におけるスワイプ操作を受け付けて、ミートカーソル606の位置を移動させることができる。具体的には、操作受付部111は、タッチスクリーン15に対するユーザの最初の接触位置(初期タッチ座標)と、スワイプ操作後の接触位置(タッチナウ座標)とを比較し、初期タッチ座標に対するタッチナウ座標の変化方向、および、変化量に基づいて、ミートカーソル606の位置の変化方向、および、変化量をそれぞれ決定する。これにより、オブジェクト制御部114は、ホームベース607上の交差面と異なる領域におけるスワイプ操作に対しても、それに連動して、ミートカーソル606を間接的に移動させることができる。このようにすれば、ユーザの指によってミートカーソル606の視認が妨げられることを回避できる。
本実施形態では、ミートカーソル606は、その一部がストライクゾーン605に含まれる範囲で移動可能である。従って、ミートカーソル606の一部はボールゾーン608に含まれ得る。しかし、ボールゾーン608のボールを打撃することは不可能なように設定されていてもよい。
ステップS105において、オブジェクト位置判定部112が、投手603により投球されたボール604が交差面から所定の範囲内に入ったか否かを判定する。所定の範囲は、第1位置(投手603の位置)と第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を移動させるための操作入力と、打撃を行うための操作入力との競合を回避することが可能になる。また、図4に示すようにボール604を飛ばす方向(例えばスタンド、外野方向)は、画面上、打撃位置より上方に描画されるため、ユーザが直感的に上方向へのフリック操作を打撃操作と理解することができる。
ステップS106において、操作受付部111はユーザからのボール604に対する打撃操作(第2操作)を開始するためのフリック操作を受け付ける。操作受付部111はタッチスクリーン15上のいかなる位置に対して行なわれたフリック操作も打撃操作を開始するための操作として受け付ける。つまり、ユーザはタッチスクリーン15上の任意の位置で打撃操作のためのフリック操作をすることができる。ステップS107において、操作受付部111は、入力されたタッチ位置の履歴を解析して、フリック操作の方向、スピード、および、タイミングを取得する。具体的には、操作受付部111は、フレーム毎にユーザ(ユーザにより操作される指またはスタイラスといった指示体)による接触が入力された入力部151における座標を取得する。これにより、タッチ位置の移動前後における座標を比較することによりフリック操作の方向が判定される。また、フレーム間におけるタッチ位置の座標変動量を求めることにより、フリック操作のスピードが判定される。また、フレーム間におけるタッチ位置の座標変動量が所定の閾値を越えた場合にフリック操作と判定されるように設定されていることにより、当該閾値を超えるスピードで初めてタッチ位置の座標が変動したフレームを、フリック操作が入力されたタイミングとして特定することができる。なお、フリック操作と判定されなかった場合には、打撃操作が入力されなかったものと判定できる。なお、フリック操作は、タッチスクリーン15における任意の位置で検知することができる。ミートカーソル606を移動させるためのスワイプ操作から連続してフリック操作が入力された場合にもフリック操作を好適に判定することができ、ミートカーソル606の移動から打撃までをシームレスに行うことが可能な操作性をユーザに提供できる。
また、モーション画像生成部113は、操作受付部111によるフリック操作の解析結果、ボール604の位置、ミートカーソル606の位置等に基づいて、打者601がバット602を仮想バット602’に向けてスイングするモーションに対応するアニメーションの画像を生成する。本実施形態では、フリック操作のスピードによりスイングのスピードを決定してもよい。また、スイングのスピードを打者601の能力にも依存させるようにしてもよい。モーション画像の生成については後で詳述する。
ステップS108において、オブジェクト制御部114は、バット602によって作用を与えられたボール604をゲーム空間内において移動させるための条件を取得し、移動経路を算出する。例えば、バット602とボール604との衝突を力学的にモデル化し、衝突直後のボール604の速度ベクトル、回転軸、回転量等を移動の初期条件として取得すればよい。このとき、フリック操作の方向、タイミングに基づいて速度ベクトルの向きが特定され、フリック操作のスピードに基づいて速度ベクトルの大きさが特定されてもよい。その後、ゲーム空間内に設定された各種物理パラメータ、および、物理法則を規定する方程式に基づいて、移動経路を算出すればよい。これにより、定性的には現実の野球と同様の打球の移動結果が表示部152に表示できる。例えば、スイングのタイミングが早い場合には引っ張る方向へ打球が移動し、遅い場合には流し打ちの方向へ打球が移動する。また、ボール604への打撃に適合したタイミングから外れて、早過ぎたり遅すぎたりすると空振りとなる。また、スイングのタイミングが適合していても、スイングの軌跡が、ボールへの打撃に適合した位置範囲から外れていれば空振りとなる。
オブジェクト制御部114は、バット602とボール604との衝突の態様に応じてボール604の移動経路を算出する。例えば、ボール604の下部をバット602の上部で打撃した場合には、打球の角度が上がりフライとなる。また、ボール604の上部をバット602の下部で打撃した場合には、打球の角度が下がりゴロとなる。また、例えば、オブジェクト制御部114は、ミートカーソル606の中央の位置でボール604の中央を打撃する等の所謂ジャストミートの場合にはヒットまたはホームランと判定し、ジャストミート以外の場合には凡打と判定して、ホームランまたは凡打に対応する移動経路を算出してもよい。
バット602とボール604の衝突判定、および、打球の軌道の計算は、ミートカーソル606とボール604の位置関係、および、フリック操作の解析結果に基づいて行えばよい。即ち、バット602のスイングは演出のためのアニメーション表示であり、ミートカーソル606とボール604の位置関係、および、フリック操作の解析結果に基づいて打撃の結果(打球の軌道、または、空振り等)を計算するとともに、ミートカーソル606および仮想バット602’の位置に向けて、フリック操作が入力されたタイミングに、バット602がスイングしている様子を示すアニメーションを生成すれば、違和感の無い画面を表示することができる。
<モーション画像の生成>
図4〜図6を用いて打者601がバット602をスイングするとき、打者601を構成するオブジェクトが制御される態様(以下、モーション画像と称する)を制御する処理について説明する。図5は、モーション画像を生成する処理を示すフローチャートである。
ステップS301において、モーション画像生成部113は、記憶部120に記憶された打者601に対応するモーションデータをロードする。モーションデータは、後述する複数の基準モーションに相当するデータ、および、ボールを見送るモーションに相当するデータを含む。ステップS302において操作受付部111は打撃操作を受け付ける。打撃操作は、前述のステップS107のフリック操作である。なお、打撃操作が受け付けられなかった場合には、モーション画像生成部113はボールを見送るモーションに相当するデータに基づいて、ボール604を見送るモーション画像を生成する。
ステップS303において、オブジェクト位置判定部112は、ボール604がストライクゾーン605内を通過するか否かを判定する。例えば、オブジェクト位置判定部112は、ボール604が交差面のうちストライクゾーン605と交差したか否かを判定してもよい。また、オブジェクト位置判定部112は、ボール604の到達予定位置が交差面のうちストライクゾーン605内に位置しているかを判定してもよい。
ステップS303においてYESであった場合、ステップS306に進み、モーション画像生成部113がモーション画像を生成する。モーション画像は、打者601がバット602をスイングする前に構えている様子を示す構え画像、スイングしている様子を示すスイング画像、および、スイングした後の様子を示すフォロースルー画像を、この順で連続させた動画像となる。構え画像はキャラクタ毎に定まっており、ボール604およびミートカーソル606の位置の影響を受けない。ただし、構え画像は、ミートカーソル606の位置に応じて変化してもよい。例えば、ミートカーソル606が高い位置にあるときには、高い位置を振ろうとする構えの画像としてもよい。
図4に示すように、本実施形態では、ストライクゾーン605およびボールゾーン608内に、基準点A〜I、縁領域605a〜605dが設定される。ストライクゾーン605、ボールゾーン608、基準点A〜I、縁領域605a〜605dは、実際の打撃画面600には表示されなくてもよい。
モーション画像生成部113は、基準モーションA’〜I’を合成してスイング画像を生成する。基準モーションA’〜I’は、それぞれ、基準点A〜Iに関連付けられている。制御部110は、基準点A〜Iをボールゾーン608およびストライクゾーン605に設定する。
基準点A〜Hは、ボールゾーン608内であって、ストライクゾーン605を囲むように離散的に設定され、基準点Iはストライクゾーン605内に設定されている。そして、図6の(b)に示すように、基準点A〜Iには、基準モーションA’〜I’がそれぞれ関連付けられている。
操作受付部111は、ボール604を打撃するために図4で示す位置にミートカーソル606を移動させる操作(例えば、スワイプ操作)を受け付ける。モーション画像生成部113は、操作受付部111から供給されたミートカーソル606の位置情報を用いて、ミートカーソル606と全ての基準点A〜Iとの位置関係を特定する。具体的には、モーション画像生成部113は、全ての基準点A〜Iとミートカーソル606との距離を算出する。
次に、モーション画像生成部113は、基準点A〜Iとミートカーソル606との距離の比に応じて、基準モーションA’〜I’を用いてスイング画像を生成する。例えば、モーション画像生成部113は、打者601の体の内の点(例えば関節等)、および、バット602中の点等のモーション画像の合成に用いる点に対応する基準モーションの各点の座標に対して、基準A〜Iとミートカーソル606との距離に応じた重みづけ係数を算出する。次に、モーション画像生成部113は、算出した重みづけ係数を用いて、各座標の重みづけ平均を算出する。モーション画像生成部113は、各座標の重みづけ平均に対応する座標に前記各点が位置するように打者601およびバット602の打撃画像を生成する。
オブジェクト位置判定部112は、ミートカーソル606が、ストライクゾーン605内の内角、外角、中央のいずれの位置にあるかを判定して、判定結果をモーション画像生成部113に供給する。モーション画像生成部113は、判定結果に基づいて内角、外角、中央のいずれかのフォロースルー画像を選択して、スイング画像の後に表示されるようにモーション画像を生成する。以上の処理により、モーション画像生成部113は、打者601がバット602をスイングする一連のモーション画像を生成して、画像処理部14は表示部152に当該モーション画像を表示させる。
ステップS303においてNOであった場合、つまりボールゾーン608に投球されたボール604aを打撃する場合には、ステップS304において、オブジェクト位置判定部112はミートカーソル606がボール604aに最も近い縁領域内にあるか否かを判定する。まず、オブジェクト位置判定部112はボール604aに最も近い縁領域を特定する。例えば、オブジェクト位置判定部112は、縁領域の長辺の内、ストライクゾーン605の外周の辺となっている辺が、ボール604aに最も近いものを、ボール604aに最も近い縁領域であると特定する。本実施形態ではオブジェクト位置判定部112は縁領域605aがボール604aに最も近い縁領域であると特定する。次に、オブジェクト位置判定部112は、縁領域605a内に、ミートカーソル606の一部が位置しているか否かを判定する。本実施形態ではステップS304においてYESであるのでステップS305に進む。なお、ステップS304においてNOである場合、ステップS306に進む。この場合、ステップS303においてYESであるときに行うステップS306と同様の処理を行なうことによってモーション画像生成部113はモーション画像を生成する。
ステップS305において、オブジェクト位置判定部112は仮想ミートカーソル606’の位置を算出する。モーション画像生成部113は、ミートカーソル606の移動操作の入力が開始されてから打撃操作が入力されるまでにタッチスクリーン15がタッチされた座標の履歴情報を取得する。履歴情報は、操作受付部111がフレーム毎に検知したタッチ位置座標の履歴として記憶部120によって一時的に記憶される。なお、履歴情報は移動の軌跡および速度を示す情報を含む。次に、モーション画像生成部113は、現在のミートカーソル606の位置と、履歴情報とから、ミートカーソル606が仮想的にボールゾーン608に移動したとしたときの位置に、仮想ミートカーソル606’を設定する。例えば、操作受付部111がミートカーソル606を下から上へ移動させる操作を受け付け、当該操作に基づいてオブジェクト制御部114が算出するミートカーソル606の位置がボールゾーン608内の位置になるとき、オブジェクト制御部114はストライクゾーン605内の最も上にミートカーソル606を配置し、前記ボールゾーン608内の位置に仮想ミートカーソル606’を設定する。制御部110は仮想ミートカーソル606’を打撃画面600に表示しなくてもよい。
ステップS306において、モーション画像生成部113はモーション画像を生成する。このとき、ミートカーソル606の代わりにステップS305で算出した位置の仮想ミートカーソル606’を用いる以外は、前述のステップS303においてYESであった場合のステップS306と同様の処理が行われる。
本実施形態では、ボール604aはボール604bより高い位置に投球されている。従って、打者601がボール604aを打撃しようとするモーションは、ボール604bを打撃しようとするモーションに比べてアッパースイングとなる。このように、ボールゾーン608にある基準点A〜Hに関連付けられた基準モーションA’〜H’を用いることで、ユーザは視覚的にボールゾーン608に投球されたボールに手を出してしまったことを知らせることができる。ボールゾーン608内の基準点A〜Hに関連付けられる基準モーションA’〜H’を、ボールゾーン608に投球されたボールに手を出したときのモーションとしておくことができ、このような基準モーションの画像を用いてモーション画像を生成できるからである。また、前述の通り、ストライクゾーン605は打撃画面600に表示されないが、ユーザはボールゾーン608のボール604aに手を出してしまったことを、モーション画像から判断することができる。よって、ゲームの趣向性が高まる。
また、オブジェクト制御部114が仮想ミートカーソル606’を設定することで、ユーザが打撃しようと意図した位置でバット602を振る動作として、モーション画像生成部113は、よりリアリティの高いモーションを生成することができる。また、ユーザがボールゾーン608のボール604aを打撃しようとせずに、あえて空振りをしたときに、モーション画像生成部113は、ボール604aを打撃しようしたかのように挙動するモーション画像を生成しない。
なお、従来技術ではボールゾーン608に投球されたボール704に手を出したときのモーションを生成できない理由を、図7を用いて説明する。図7ではストライクゾーン内に基準点x、yが配置されている。例えば、図7では、ボールゾーン608内のボール704aも、ストライクゾーン605内のボール704bも、それぞれ、基準点xとの距離および基準点yとの距離が等しい。このように従来技術では、ストライクゾーン内のボールと基準点との位置関係と同じ位置関係となるボールゾーン内のボールが存在する。このような場合、生成されるモーション画像は同じになる。従って、ストライクゾーン内のボールを打撃するときと、ボールゾーン内のボールを打撃するときとで同じモーション画像が生成される。通常、ゲームシステムを提供する者は、ストライクゾーン内の基準点にボールゾーン内のボールに手を出したときの基準モーションを関連付けることはしないので、従来技術ではボールゾーン内のボールに手を出してしまったときのモーションを生成することはできない。
〔ソフトウェアによる実現例〕
制御部110の制御ブロックは、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
後者の場合、制御部110は、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、前記プログラムおよび各種データがコンピュータ(またはCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、前記プログラムを展開するRAM(Random Access Memory)などを備えている。そして、コンピュータ(またはCPU)が前記プログラムを前記記録媒体から読み取って実行することにより、本発明の目的が達成される。前記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、前記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して前記コンピュータに供給されてもよい。なお、本発明は、前記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は前述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
〔付記事項〕
本発明の一側面に係る内容を列記すると以下の通りである。
(項目1)第1位置から第2位置に向けて移動する移動体に対してキャラクタに作用を与えさせるゲームの実行方法であって、前記方法は、プロセッサおよびメモリを備えるコンピュータにより実行され、前記プロセッサの制御により、第1領域と当該第1領域の外側の第2領域とを含み、前記作用を前記移動体に与えたか否かを判定するための交差面を、前記第1位置と前記第2位置との間に設定するステップと、前記作用を与えるための作用領域を前記交差面に設定するステップと、前記作用領域を移動させる第1操作を受け付けるステップと、前記第1操作に基づいて、前記作用領域の少なくとも一部が前記第1領域内に含まれるように前記作用領域を移動させるステップと、基準モーションが関連付けられた複数の基準点の各々を、前記第1領域および前記第2領域のうち少なくとも一方に設定し、且つ、複数の前記基準点のうちの少なくとも一つを前記第2領域に設定するステップと、前記第1操作による移動後の前記作用領域の位置、および、前記第2領域に設定されている前記基準点に関連付けられている前記基準モーションに基づいて、前記キャラクタのモーション画像を生成するステップと、を含む、方法。打撃できない位置に投球されたボールに手を出してしまったときのモーションを生成することができる。ユーザはモーションにより当該ボールに手を出したことを認識できる。よって、ゲームの趣向性が高まる。
(項目2)前記コンピュータは、物体の接触または近接を検知できる入力部と、画像を表示させる表示部と、を含むタッチスクリーンを備え、前記移動体が前記第2領域を通過するか否かを判定するステップと、前記作用を与えさせるための第2操作を受け付けるステップと、を含み、前記第1操作を受け付けるステップおよび前記第2操作を受け付けるステップでは、前記タッチスクリーンに対する物体の接触または近接に基づいて前記第1操作および前記第2操作を受け付け、前記タッチスクリーンに対して、前記第1操作の受付の開始から前記第2操作を受け付けるまでにタッチされた位置の履歴情報を取得するステップ、を含み、前記移動体が前記第2領域を通過すると判定した場合には、前記履歴情報と前記作用領域の位置とから、前記作用領域が仮想的に前記第2領域内に移動した場合の位置を算出するステップと、をさらに含み、前記生成するステップでは、前記算出するステップで算出した位置、および、前記第2領域に設定されている前記基準点に関連付けられている基準モーションに基づいて、前記モーション画像を生成する、項目1の方法。仮想作用領域を設定することで、ユーザが打撃しようと意図した位置でバットを振る動作として、よりリアリティの高いモーションを生成することができる。
(項目3)前記コンピュータは、物体の接触または近接を検知できる入力部と、画像を表示させる表示部と、を含むタッチスクリーンを備え、前記第1領域の内側方向に縁領域を設定するステップと、前記作用領域の少なくとも一部が前記縁領域内にあるか否かを判定するステップと、前記移動体が前記第2領域を通過するか否かを判定するステップと、前記作用を与えさせるための第2操作を受け付けるステップと、を含み、前記第1操作を受け付けるステップおよび前記第2操作を受け付けるステップでは、前記タッチスクリーンに対する物体の接触または近接に基づいて前記第1操作および前記第2操作を受け付け、前記タッチスクリーンに対して、前記第1操作の受付の開始から前記第2操作を受け付けるまでにタッチされた位置の履歴情報を取得するステップと、前記作用領域の少なくとも一部が前記縁領域内にあると判定して、かつ、前記移動体が前記第2領域を通過すると判定した場合には、前記履歴情報と前記作用領域の位置とから、前記作用領域が仮想的に前記第2領域内に移動した場合の位置を算出するステップと、をさらに含み、前記生成するステップでは、前記算出するステップで算出した位置、および、前記第2領域に設定されている前記基準点に関連付けられている前記基準モーションから前記モーション画像を生成する、項目1の方法。縁領域に作用領域があるときに仮想作用領域を設定することにより、ユーザが打撃しようとせずにあえて空振りをしたときに、ボールを打撃しようしたかのように挙動するモーション画像を生成させないようにすることができる。
(項目4)前記基準点は、前記第1領域に少なくとも一つ設定されており、前記生成するステップでは、前記第1領域に設定されている前記基準点に関連付けられている基準モーション、および、前記第2領域に設定されている前記基準点に関連付けられている基準モーションを、前記作用領域の位置とそれぞれの前記基準点の位置関係とから特定される合成比率に基づいて合成し、前記キャラクタのモーション画像を生成する、項目1から3の方法。ユーザが打撃しようとする位置でバットを振る動作として、よりリアリティの高いモーションを生成することができる。
(項目5)前記基準点を設定するステップでは、前記第1領域に前記基準点を一つ設定する、項目1から4の方法。モーション画像を生成するための基準モーションのうち、第2領域の基準点の基準モーションの占める割合をより多くすることで、打撃できない位置に投球されたボールに手を出してしまったときのモーション画像としてよりリアリティの高い画像を生成することができる。
(項目6)前記生成するステップでは、全ての前記基準モーションに基づいて、前記キャラクタのモーション画像を生成する、項目1から5の方法。打撃をするときのモーション画像としてよりリアリティの高い画像を生成することができる。
(項目7)項目1から6の方法の各ステップをコンピュータに実行させるプログラム。
(項目8)項目7に記載のプログラムを記録したコンピュータ読取可能な記録媒体。