以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<実施の形態1>
本実施形態において、ユーザは、例えばスマートフォンなどの、タッチスクリーンを搭載した情報処理装置を操作して、ゲームサーバと、スマートフォンとの間でゲームに関するデータを送受信しながらゲームを進行させる。ゲームは、ユーザが一人でプレイするシングルプレイと、ユーザが他のユーザとともにプレイするマルチプレイとに対応する。
図1は、実施の形態のゲーム配信システム1の構成を示す図である。図1に示すように、ゲーム配信システム1は、ユーザが使用する情報処理装置と、サーバ20とを含み、これらの装置がネットワーク80によって互いに通信可能に接続されている。
図1の例では、ユーザが使用する情報処理装置として、携帯端末10A、携帯端末10Bおよび携帯端末10C(以下、携帯端末10A、10B、10Cなどの携帯端末を総称して「携帯端末10」と記載することもある)など複数の携帯端末を示している。携帯端末10Aと携帯端末10Bとは、無線基地局81と通信することにより、ネットワーク80と接続する。携帯端末10Cは、家屋などの施設に設置される無線ルータ82と通信することにより、ネットワーク80と接続する。携帯端末10は、タッチスクリーンを備える端末であり、例えば、スマートフォン、ファブレット、タブレットなどである。
携帯端末10は、ゲームプログラムを実行することにより、ゲームプログラムに応じたゲームをプレイする環境をユーザに対して提供する。携帯端末10は、例えば、アプリ等を配信するプラットフォームを介してゲームプログラムをインストールする。携帯端末10は、携帯端末10にインストールされたゲームプログラム、または、予めプリインストールされているゲームプログラムを実行することで、ユーザによるゲームのプレイを可能とする。携帯端末10は、ゲームプログラムを読み込んで実行することにより、携帯端末10と、サーバ20とを通信接続して、ゲームの進行に応じてゲームに関連するデータを携帯端末10とサーバ20との間で送受信する。
サーバ20は、ゲームのプレイに必要なデータを、適宜、携帯端末10へ送信することで、携帯端末10でのゲームのプレイを進行させる。サーバ20は、ゲームをプレイする各ユーザの、ゲームに関連する各種データを管理する。サーバ20は、携帯端末10と通信し、各ユーザのゲームの進行に応じて、画像、音声、テキストデータその他のデータを携帯端末10へ送信する。
例えば、サーバ20は、各ユーザがゲームのストーリーを進行させた進行状況、ゲーム内に登場するゲームキャラクタのうち各ユーザが使用可能なゲームキャラクタの情報、ゲームキャラクタの能力を示すパラメータ、ゲームキャラクタが使用する道具の性能を示すパラメータその他の各種データを管理する。また、サーバ20は、ゲームの運営者がユーザに対してキャンペーン、ゲームの進行における不具合の発生、不具合の解消その他のゲームの運営に関連する情報等をユーザに通知する処理を行う。
ゲームプログラムは、ユーザがゲームをプレイするモードとして、一人のユーザがプレイする場合(シングルプレイ)と、複数人のユーザが協同してプレイする場合(マルチプレイ)とに対応している。例えば、ゲーム配信システム1において、サーバ20が、マルチプレイに参加するユーザを特定して各ユーザの各携帯端末10と通信すること等により、マルチプレイでゲームをプレイする環境を各ユーザに提供する。
ゲーム配信システム1は、マルチプレイに対応することにより、例えば、テニスゲームであれば、各ユーザでチームを結成してダブルスの試合を行うことを可能とする。また、ゲーム配信システム1は、サッカーゲームであれば、各ユーザが同一のサッカーチームのメンバーとなって試合を行うことを可能とする。また、ゲーム配信システム1は、アクションゲームであれば、各ユーザでチームを結成して、クエストモードなど比較的強力なキャラクタと対戦するゲームモードを複数のユーザがプレイすることを可能とする。また、ゲーム配信システム1は、マルチプレイに対応することにより、ユーザ同士が対戦することを可能とする。
<構成>
サーバ20のハードウェアの構成を説明する。サーバ20は、通信IF(Interface)22と、入出力IF23と、メモリ25と、ストレージ26と、プロセッサ29とを備え、これらが通信バスを介して互いに接続する。
通信IF22は、例えばLAN(Local Area Network)規格など各種の通信規格に対応しており、携帯端末10など外部の通信機器との間でデータを送受信するためのインタフェースとして機能する。
入出力IF23は、サーバ20への情報の入力を受け付けるとともに、サーバ20の外部へ情報を出力するためのインタフェースとして機能する。入出力IF23は、マウス、キーボード等の情報入力機器の接続を受け付ける入力受付部と、画像等を表示するためのディスプレイ等の情報出力機器の接続を受け付ける出力部とを含む。
メモリ25は、処理に使用されるデータ等を記憶するための記憶装置である。メモリ25は、例えば、プロセッサ29が処理を行う際に一時的に使用するための作業領域をプロセッサ29に提供する。メモリ25は、ROM(Read Only Memory)、RAM(Random Access Memory)等の記憶装置を含んで構成されている。
ストレージ26は、プロセッサ29が読み込んで実行するための各種プログラム及びデータを記憶するための記憶装置である。ストレージ26が記憶する情報は、ゲームプログラム、ゲームプログラムに関連する情報、ゲームプログラムをプレイするユーザの情報その他の情報を含む。ストレージ26は、HDD(Hard Disk Drive)、フラッシュメモリ等の記憶装置を含んで構成されている。
プロセッサ29は、ストレージ26に記憶されるプログラム等を読み込んで実行することにより、サーバ20の動作を制御する。プロセッサ29は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等を含んで構成される。
図2は、携帯端末10の構成を示すブロック図である。図2を参照して、携帯端末10は、アンテナ110と、無線通信IF120と、タッチスクリーン130と、入出力IF140と、記憶部150と、音声処理部160と、マイク170と、スピーカ180と、制御部190とを含む。
アンテナ110は、携帯端末10が発する信号を電波として空間へ放射する。また、アンテナ110は、空間から電波を受信して受信信号を無線通信IF120へ与える。
無線通信IF120は、携帯端末10が他の通信機器と通信するため、アンテナ110等を介して信号を送受信するための変復調処理などを行う。無線通信IF120は、チューナー、高周波回路などを含む無線通信用の通信モジュールであり、携帯端末10が送受信する無線信号の変復調や周波数変換を行い、受信信号を制御部190へ与える。
タッチスクリーン130は、ユーザからの入力を受け付けて、ユーザに対し情報をディスプレイ132に出力する。タッチスクリーン130は、ユーザの入力操作を受け付けるための部材(タッチパネル131)を含む。また、タッチスクリーン130は、メニュー画面や、ゲームの進行を画面に表示するための部材(ディスプレイ132)を含む。タッチパネル131は、例えば静電容量方式のものを用いることによって、ユーザの指などが接近したことを検出する。ディスプレイ132は、例えばLCD(Liquid Crystal Display)、有機EL(electroluminescence)その他の表示装置によって実現される。
入出力IF140は、携帯端末10への情報の入力を受け付けるとともに、携帯端末10の外部へ情報を出力するためのインタフェースとして機能する。
記憶部150は、フラッシュメモリ、RAM(Random Access Memory)等により構成され、携帯端末10が使用するプログラム、および、携帯端末10がサーバ20から受信する各種データ等を記憶する。
音声処理部160は、音声信号の変復調を行う。音声処理部160は、マイク170から与えられる信号を変調して、変調後の信号を制御部190へ与える。また、音声処理部160は、音声信号をスピーカ180へ与える。音声処理部160は、例えば、音声処理用のプロセッサによって実現される。マイク170は、音声信号の入力を受け付けて制御部190へ出力するための音声入力部として機能する。スピーカ180は、音声信号を、携帯端末10の外部へ出力するための音声出力部として機能する。
制御部190は、記憶部150に記憶されるプログラムを読み込んで実行することにより、携帯端末10の動作を制御する。制御部190は、例えば、アプリケーションプロセッサによって実現される。
携帯端末10がゲームプログラム151を実行する処理について、より詳細に説明する。ある局面において、記憶部150は、ゲームプログラム151と、ゲーム情報152と、ユーザ情報153とを記憶する。携帯端末10は、例えば、サーバ20からゲームプログラムをダウンロードして記憶部150に記憶させる。また、携帯端末10は、ゲームの進行に伴いサーバ20と通信することで、ゲーム情報152およびユーザ情報153等の各種のデータをサーバ20と送受信する。
ゲームプログラム151は、携帯端末10においてゲームを進行させるためのプログラムである。ゲーム情報152は、ゲームプログラム151が参照する各種のデータを含む。ゲーム情報152は、例えば、ゲームにおいて仮想空間に配置するオブジェクトの情報、オブジェクトに対応付けられた効果の情報(ゲームキャラクタに設定されるスキルの情報などを含む)などを含む。ユーザ情報153は、ゲームをプレイするユーザについての情報を含む。ユーザ情報153は、例えば、ゲームをプレイする携帯端末10のユーザを識別する情報、マルチプレイ時に協同してゲームをプレイする他のユーザを識別する情報その他の情報を含む。
制御部190は、ゲームプログラム151を読み込んで実行することにより、入力操作受付部191と、ゲーム進行処理部192と、移動操作検出部193と、カメラ配置制御部194と、オブジェクト制御部195と、表示制御部196と、の各機能を発揮する。
入力操作受付部191は、タッチスクリーン130の出力に基づいて、ユーザの入力操作を受け付ける。具体的には、入力操作受付部191は、ユーザの指などがタッチパネル131に接近したことを、タッチスクリーン130を構成する面の横軸および縦軸からなる座標系の座標として検出する。
入力操作受付部191は、タッチスクリーン130に対するユーザの操作を判別する。入力操作受付部191は、例えば、(1)「接近操作」、(2)「リリース操作」、(3)「タップ操作」、(4)「ダブルタップ操作」、(5)「長押し操作(ロングタッチ操作)」、(6)「ドラッグ操作(スワイプ操作)」、(7)「ムーブ操作」、(8)「フリック操作」、その他のユーザの操作を判別する。入力操作受付部191が判別するユーザの操作は、上記に限られない。例えば、タッチパネル131が、ユーザがタッチパネル131に対して押下する圧力の大きさを検出可能な機構を有する場合、入力操作受付部191は、ユーザが押下した圧力の大きさを判別する。また、制御部190は、タッチスクリーン130へのユーザの指などの接近を検出している状態を、「タッチオン状態」と判別する。制御部190は、タッチスクリーン130へのユーザの指などの接近を検出しない状態を、「タッチオフ状態」と判別する。制御部190は、タッチスクリーン130が逐次出力するユーザの指などの接近位置を示す座標を、「タッチナウ」の座標として受け付ける。
ここで、(1)「接近操作」とは、ユーザが指などをタッチスクリーン130に接近させる操作である。タッチスクリーン130は、ユーザの指などが接近したこと(ユーザの指などがタッチスクリーン130に接触したことを含む)をタッチパネル131により検出し、検出したタッチスクリーン130の座標に応じた信号を制御部190へ出力する。制御部190は、タッチスクリーン130へのユーザの指などの接近を検出しない状態から、接近を検出したときに、状態が「タッチオン状態」になったと判別する。
(2)「リリース操作」とは、ユーザがタッチスクリーン130に指などを接近させることで操作する状態を止める操作である。入力操作受付部191は、例えば、ユーザが指などをタッチスクリーン130に接触させている状態から、指を離す操作をしたときに、ユーザの操作を「リリース操作」と判別する。制御部190は、タッチスクリーン130へのユーザの指などの接近を検出している状態から、接近を検出しない状態になったときに、状態が「タッチオン状態」から「タッチオフ状態」になったと判別する。
(3)「タップ操作」とは、ユーザがタッチスクリーン130に対して指などを接近させる接近操作をした後に、接近操作をした位置でリリース操作を行うことである。入力操作受付部191は、接近操作が検出されない状態(ユーザの指などがタッチパネル131から離れており、タッチパネル131がユーザの指などの接近を検出していない状態)から、タッチスクリーン130の出力に基づいて、ユーザの指などが接近したことを検出した場合に、その検出した座標を「初期タッチ位置」として保持する。入力操作受付部191は、初期タッチ位置の座標と、リリース操作をする直前に(タッチオフ状態が検出される直前に)タッチスクリーン130により検出されている座標とがほぼ同一である場合(接近操作が検出された座標から一定範囲内の座標においてリリース操作にかかる座標が検出された場合)に、ユーザの操作を「タップ操作」と判別する。
(4)「ダブルタップ操作」とは、ユーザがタップ操作を一定時間内に2回行う操作である。入力操作受付部191は、例えば、ユーザの操作をタップ操作と判別してから一定時間内に、タップ操作にかかる座標で再びタップ操作を判別した場合に、ユーザの操作を「ダブルタップ操作」と判別する。
(5)「長押し操作」とは、ユーザがタッチスクリーン130を押し続ける操作である。タッチスクリーン130は、ユーザの操作を検出して接近操作を判別してから、接近操作が検出された座標において接近操作が継続している時間が一定時間を超えた場合に、ユーザの操作を「長押し操作」(「長押し操作」を、「ロングタッチ操作」と称することもある)と判別する。
(6)「ドラッグ操作」とは、ユーザがタッチスクリーン130に指などを接近させた接近状態を維持したまま、指をスライドさせる操作である。
(7)「ムーブ操作」とは、ユーザがタッチスクリーン130において、接近操作を維持しつつ、タッチスクリーン130に指などを接近させている位置を移動させてリリース操作を行う一連の操作をいう。
(8)「フリック操作」は、ユーザがムーブ操作を予め定められた時間よりも短い時間で行う操作をいう。フリック操作は、ユーザがタッチスクリーン130で指を弾くような操作である。制御部190は、例えば、ユーザがムーブ操作を行う時間と比較するための複数の閾値を保持し、ユーザがタッチスクリーン130において指などを接近させている位置を一定距離移動させるまでの時間が第1の閾値よりも短い場合(比較的素早く指を弾く場合)は、フリック操作が「強フリック」であると判定し、第1の閾値よりも大きく第2の閾値(第2の閾値を、第1の閾値よりも大きく設定する)よりも小さい場合に、フリック操作が「弱フリック」であると判定することとしてもよい。
ゲーム進行処理部192は、ユーザの操作に応じて、各種のプログラムを呼び出す等によりゲームを進行させる処理を行う。例えば、ゲーム進行処理部192は、サーバ20と通信し、ゲームの進行に応じてサーバ20へデータを送信する処理、サーバ20からゲームに関連するデータを受信する処理、ゲームの進行に応じてユーザに報酬を付与する処理、時間の経過を計測する処理その他の処理を行う。
移動操作検出部193は、タッチスクリーン130に対するユーザの入力操作に基づいて、ゲームに登場するキャラクタ(以下、「ゲームキャラクタ」と称することもある)を移動させる入力操作の操作内容を検出する。例えば、ゲームプログラム151がスポーツゲームである場合、移動操作検出部193は、ユーザの入力操作に基づいて、ゲームキャラクタを移動させる方向を検出する。このように、移動操作検出部193は、ユーザがゲームキャラクタの移動方向を指定する入力操作を受け付ける。
具体的には、移動操作検出部193は、タッチスクリーン130からユーザの指が離れた状態から、ユーザが指をタッチスクリーン130に接近させて、入力操作受付部191がタッチパネル131にユーザの指が接近したことを検出した座標を初期タッチ位置として、ユーザがドラッグ操作を行った場合に、初期タッチ位置の座標とタッチスクリーン130の検出結果とに基づいて、ゲームキャラクタの移動方向を検出する。移動操作検出部193の詳細な処理は、後述する。
カメラ配置制御部194は、仮想空間に配置される各オブジェクトを、どのようにユーザに見せるかを決定する。具体的には、カメラ配置制御部194は、制御部190がゲームプログラム151を読み込んで実行することで生成される仮想空間において、仮想カメラの配置(カメラワーク)を制御する。制御部190は、仮想空間における仮想カメラの撮影画像をディスプレイ132に表示することで、ユーザに対しゲームのプレイ環境を提供する。
オブジェクト制御部195は、携帯端末10がゲームプログラム151を実行することにより進行されるゲームに登場する各種オブジェクト、および、入力操作受付部191が受け付けたユーザの操作内容に基づいて生成される各種オブジェクト(例えば、GUI(Graphical User Interface)画面など)の生成、変形、移動などの処理を制御する。オブジェクト制御部195は、例えば、ユーザがゲームキャラクタを移動させるためのタッチスクリーン130に対する入力操作に基づいて、ゲームキャラクタの移動方向を示すオブジェクトを生成し、生成したオブジェクトを変形する。
表示制御部196は、仮想カメラのカメラワークに従った画像をディスプレイ132に出力する。表示制御部196は、仮想空間内における仮想カメラの配置に応じて、ディスプレイ132の表示内容を決定し、決定した表示内容に従う画像、テキスト等の各種の情報をディスプレイ132に出力する。
図3は、サーバ20の機能的な構成を示すブロック図である。図3を参照して、サーバ20の詳細な構成を説明する。サーバ20は、プログラムに従って動作することにより、通信部220と、記憶部250と、制御部290としての機能を発揮する。
通信部220は、サーバ20が携帯端末10などの外部の通信機器と通信するためのインタフェースとして機能する。
記憶部250は、携帯端末10においてユーザがゲームを進行させるための各種プログラムおよびデータを記憶する。ある局面において、記憶部250は、ゲームプログラム251と、ゲーム情報252と、ユーザ情報253とを記憶する。
ゲームプログラム251は、サーバ20が携帯端末10と通信して、携帯端末10においてゲームを進行させるためのプログラムである。ゲームプログラム251は、ゲームを進行させるための各種データであるゲーム情報252およびユーザ情報253等を参照して、ユーザの入力操作に応じてゲームを進行させる。ゲームプログラム251は、制御部290に実行されることにより、携帯端末10とデータを送受信する処理、携帯端末10のユーザが行った操作内容に応じてゲームを進行させる処理、ゲームをプレイするユーザの情報を更新する処理その他の処理をサーバ20に行わせる。
ゲーム情報252は、ゲームプログラム251が参照する各種のデータを含む。ゲーム情報252は、オブジェクト管理テーブル252Aと、パッシブスキル管理テーブル252Bと、アクティブスキル管理テーブル252Cとを含む。
オブジェクト管理テーブル252Aは、ゲームの仮想空間内に配置されるオブジェクトの設定を示す。携帯端末10は、ゲームプログラム151を実行することにより、仮想空間内に配置されるオブジェクトを、仮想空間内に配置される仮想カメラによって撮影した画像をディスプレイ132に表示することでゲームを進行させる。
ここで、オブジェクトとしては、例えば、ユーザが操作するゲームキャラクタを示すオブジェクト、ゲームキャラクタが装着する装着対象物を示すオブジェクトなど様々なものがある。制御部190は、ユーザがタッチスクリーン130に対して予め定められた入力操作を行うこと、ゲームの進行に伴い一定の条件を満たすこと、その他の様々な事象の発生を契機として、オブジェクトに対応付けられた処理を行う。
例えば、あるオブジェクトに対してユーザがタッチスクリーン130に対して接近操作を行うことで、制御部190は、オブジェクトを、ユーザによって選択された状態とする。また、例えば、制御部190は、ユーザによるドラッグ操作を受け付けることで、ユーザが移動対象とするオブジェクトを、ユーザの入力操作に応じて移動させる等の処理を行う。また、例えば、制御部190は、ユーザがオブジェクトに対して行うタッチ操作を受け付けることで、ユーザに対し、ゲームを有利に進めるための報酬を付与する等の処理を行う。
パッシブスキル管理テーブル252Bは、オブジェクトを識別する情報と、オブジェクトに対応付けられたパッシブスキルの情報とが対応付けられている。ここで、パッシブスキルとは、例えば、ゲームにおいて予め定められた条件が満たされたときに発動され、ユーザがゲームを有利に進行させることができるものである。例えば、パッシブスキルが発動した場合に、ゲームキャラクタの移動速度が向上する等の、ゲームを有利に進行させられる効果を発揮させる。
アクティブスキル管理テーブル252Cは、オブジェクトを識別する情報と、オブジェクトに対応付けられたアクティブスキルの情報とが対応付けられている。ここで、アクティブスキルとは、例えば、ゲームにおいて予め定められた条件が満たされたときに発動可能な状態となり、ユーザから、スキルを発動させるための入力操作を受け付けることにより、ユーザがゲームを有利に進行させることができるものである。
ユーザ情報253は、ゲームをプレイするユーザについての情報である。ユーザ情報253は、ユーザ管理テーブル253Aを含む。ユーザ管理テーブル253Aは、各ユーザを識別する情報と、ユーザがゲームを進行させた度合いを示す情報と、ユーザがゲーム内で保有するアイテム、ゲームキャラクタ、ゲームキャラクタが使用する装着物等の情報その他の情報を含む。
制御部290は、記憶部250に記憶されるゲームプログラム251を実行することにより、送受信部291、サーバ処理部292、データ管理部293、マッチング部294、計測部295としての機能を発揮する。
送受信部291は、ゲームプログラム151を実行する携帯端末10から、各種情報を受信し、携帯端末10に対し、各種情報を送信する。携帯端末10とサーバ20とは、ユーザに関連付けられるオブジェクトを仮想空間に配置する要求、オブジェクトを削除する要求、オブジェクトを移動させる要求、ユーザが獲得する報酬に応じて各種パラメータを更新する要求、ゲームを進行させるための画像、音声その他のデータ、サーバ20から携帯端末10へ送信される通知などの情報を送受信する。
サーバ処理部292は、サーバ20全体の動作を制御し、各種のプログラムを呼び出す等によりゲームの進行に必要な処理を行う。サーバ処理部292は、例えば、携帯端末10から受信した情報に基づいて、ゲーム情報252、ユーザ情報253などのデータを更新し、携帯端末10に各種データを送信することでゲームを進行させる。
データ管理部293は、サーバ処理部292の処理結果に従って、記憶部250に記憶される各種データを更新する処理、データベースにレコードを追加/更新/削除する処理などを行う。
マッチング部294は、複数のユーザを関連付けるための一連の処理を行う。マッチング部294は、例えば、ユーザがマルチプレイを行うための入力操作を行った場合に、ゲームを協同してプレイさせるユーザ同士を関連付ける処理などを行う。
計測部295は、時間を計測する処理を行う。計測部295は、例えば、仮想空間に配置される各オブジェクトについて時間の経過を計測する。また、計測部295は、ゲームが進行している時間を計測する。サーバ20は、携帯端末10から、携帯端末10においてゲームプログラム151を実行して計測される各種の計測結果の情報を受信し、受信した情報と、計測部295の計測結果とを照合することで、携帯端末10とサーバ20とで、各種の時間に関する情報を同期させる。
<実施の形態1の構成のまとめ>
以上のように、実施の形態のゲーム配信システム1の構成を説明してきた。本実施形態において、ゲームプログラム151は、例えばスポーツゲームであり、仮想空間内の仮想カメラの配置に応じた画面をタッチスクリーン130に表示させることでゲームを進行させる。
例えば、ゲームプログラム151がスポーツゲームである場合、ゲーム進行処理部192は、ユーザの操作に応じてストーリーを進行させ、画像、テキストなどディスプレイ132に表示するデータを決定する処理、スポーツの対戦相手の選択をユーザから受け付ける処理、ユーザの操作に応じてスポーツの試合を進める処理などの基本的な処理を行う。
例えば、ゲームプログラム151がスポーツゲームである場合、カメラ配置制御部194は、スポーツの試合を行うための仮想空間における仮想カメラの配置個所および撮影軸の方向を、スポーツの試合の進展に応じて、逐次、決定する。カメラ配置制御部194は、仮想カメラのカメラワークを制御する。カメラ配置制御部194の詳細な処理は、後述する。
<動作>
図面を参照して、実施の形態のゲーム配信システム1を構成する各装置の動作を説明する。
図4は、移動操作検出部193が、ユーザの入力操作に応じてゲームキャラクタを移動させる方向を検出する処理を示す図である。移動操作検出部193は、ユーザがタッチスクリーン130を押していない状態から、指などをタッチパネル131に接近させてタッチスクリーン130を押した位置(初期タッチ位置)を起点と設定する。入力操作受付部191は、ユーザの操作をドラッグ操作と判別している場合に、起点となる座標と、タッチスクリーン130がユーザの指などの接近を検出している座標とに基づいて、ゲームキャラクタを移動させる方向を検出する。
図4の状態(A)は、タッチスクリーン130からユーザの指が離れた状態から、ユーザが指をタッチスクリーン130に接近させた状態を示す。入力操作受付部191は、ユーザの指がタッチパネル131に接近したことを検出し、検出した座標を初期タッチ位置としてメモリに保持する。
図4の例では、メモリが保持する初期タッチ位置の座標を、初期タッチ位置座標155として示す。入力操作受付部191は、タッチスクリーン130の検出結果(ユーザの指がタッチスクリーン130に接近している座標、および、ユーザの指がタッチスクリーン130に接近していることを検出していないこと(検出結果「null」)、タッチオフ状態)を、一定フレーム分、バッファメモリ153に格納する。バッファメモリ153は、タッチスクリーン130における検出結果を、各フレームについて一定フレーム分(図3の例では、メモリ領域Fp〔0〕~メモリ領域Fp〔10〕までの11フレーム分)、格納することができる。バッファメモリ153は、例えばリングバッファとして実現することができるが、これに限られない。
状態(A)の例では、ユーザがタッチスクリーン130を押した位置(タッチオン座標)を、押下位置30A(タッチスクリーン130の座標(x0,y0))として示す。
図4の状態(B)は、ユーザがタッチスクリーン130に対してドラッグ操作を行って、タッチスクリーン130に対する押下位置を、押下位置30Aから押下位置30B(タッチスクリーン130の座標(x9,y9))まで10フレーム(メモリ領域Fp〔0〕~メモリ領域Fp〔9〕までの10フレーム分)で移動させたことを示す。入力操作受付部191は、タッチスクリーン130の検出結果をバッファメモリ153に格納し、バッファメモリ153に保持される値を参照して、タッチスクリーン130に対するユーザの操作をドラッグ操作と判別する。
図4の状態(C)は、ユーザがタッチスクリーン130を押している位置を、押下位置30Bから押下位置30C(タッチスクリーン130の座標(x14,y14))まで、5フレーム(メモリ領域Fp〔10〕、Fp〔0〕、Fp〔1〕、Fp〔2〕、Fp〔3〕の5フレーム分)で移動させたことを示す。
図4の状態(D)は、移動操作検出部193が、状態(B)および状態(C)のそれぞれにおいて、ユーザがゲームキャラクタを移動させる方向を指定する入力操作の検出結果を示す。移動操作検出部193は、バッファメモリ153において、タッチスクリーン130が検出する押下位置の座標を書き込む対象となるメモリ領域がいずれであるかを示す情報(バッファメモリ153の書き込み位置)を管理している。
状態(B)において、タッチナウの座標を、座標(x9、y9)とする。移動操作検出部193は、入力操作受付部191の判別結果に基づいて、ユーザがドラッグ操作を行ったことを検出する。移動操作検出部193は、初期タッチ位置の座標31A(タッチオンの座標)を起点として、座標31A(タッチオンの座標)と座標31B(タッチナウの座標)とによって規定されるベクトル32B((y9-y0)/(x9-x0))を、ゲームキャラクタを移動させる方向として検出する。
状態(C)において、タッチナウの座標を、座標(x14、y14)とする。移動操作検出部193は、入力操作受付部191の判別結果に基づいて、ユーザがドラッグ操作を行ったことを検出する。移動操作検出部193は、初期タッチ位置の座標31A(タッチオンの座標)を起点として、座標31A(タッチオンの座標)と座標31C(タッチナウの座標)とによって規定されるベクトル31C((y14-y0)/(x14-x0))を、ゲームキャラクタを移動させる方向として検出する。
<ゲームキャラクタを移動させるための画面表示例>
図5から図8を参照して、オブジェクト制御部195が、移動操作検出部193の検出結果に基づいて、オブジェクトとしてのゲームキャラクタを移動させる画面例を詳しく説明する。
例えば、ゲームプログラム151は、仮想空間内において、ゲームキャラクタが、対象物を交互に打ち返すスポーツゲームにかかるものであり、具体的にはテニスゲームである。ゲームプログラム151は、入力操作を受け付けることにより、ゲームのプレイヤであるユーザが操作するゲームキャラクタと、ゲームキャラクタと対戦する相手側キャラクタとの間で、テニスボールを交互に打ち返す動作を行わせてゲームを進行させる。例えば、タッチスクリーンで入力操作を受け付ける場合、ゲームキャラクタを移動させる操作と、ゲームキャラクタにボールを打球させる操作とを、ともにタッチスクリーンで受け付ける。例えば、ユーザは、タッチスクリーンに対し、ドラッグ操作を行うことで、ドラッグ操作におけるタッチ開始位置とタッチ操作が継続している位置との位置関係により定まる方向へゲームキャラクタを移動させる。ゲームキャラクタにスイング動作を行わせるため、ユーザは、ドラッグ操作においてタッチスクリーンへの接触を継続している指をいったんタッチスクリーンから離して、タップ操作またはフリック操作を行う。現実のテニスにおいても、テニスボールに対して打球する位置へ移動したうえで、スイングのタイミングを図って打球することがよく行われている。
カメラ配置制御部194は、ユーザが操作するゲームキャラクタを、例えば画面の中央付近に位置するように、ユーザの入力操作によるゲームキャラクタの移動にあわせて仮想カメラを移動させる。また、シングルスとは異なり、ダブルスのように、2人が一組のチームとなって、チーム同士が対戦する場合、複数のゲームキャラクタがそれぞれ対象物をラケットで対戦相手のチームに打ち返すことなどによりゲームを進行させるので、各ゲームキャラクタをユーザが容易に視認できるように、試合に参加する全てのゲームキャラクタがディスプレイ132に表示されるよう仮想カメラを配置することとしている。
図5は、仮想空間内に配置されるフィールド面Fを示す図である。図5に示すように、ゲームプログラム151を実行する制御部190は、仮想空間内に、ゲームキャラクタ(ユーザが操作する対象のゲームキャラクタ134及び対戦相手となるゲームキャラクタ136)および対象物138を少なくとも配置する処理を行う。
図5の例では、仮想空間内のxyz座標軸において、xy平面に平行にフィールド面Fを配置する。フィールド面Fは、テニスコートを模した面である。制御部190は、移動操作検出部193によって検出されるゲームキャラクタの移動方向に従って、ゲームキャラクタ134を、仮想空間内に配置されるフィールド面Fにおいて移動させる。また、制御部190は、ゲームの進行に応じて、ゲームキャラクタ136をフィールド面Fにおいて移動させる。仮想空間内のz軸は、フィールド面Fに対する高さ方向を示す。制御部190は、各ゲームキャラクタが体操物138を打球するスイング動作を行うことで、オブジェクトとしての対象物138を、例えば物理演算の結果に基づいてフィールド面Fを地面としてz軸方向に重力が働いているものとして移動させる。
ここで、z軸方向において、フィールド面Fからの高さに関する閾値181Hがゲームプログラム151において設定されている。例えば、ゲームキャラクタのそれぞれに、閾値181Hが設定されていることとしてもよい。この閾値181Hは、ゲームキャラクタが対象物を打球できる高さの上限値を示す。例えば、制御部190は、対象物138の位置が、xy平面上の座標としてはゲームキャラクタ134の周囲にあるとしても、閾値181Hを超えて高い位置にある場合は、ゲームキャラクタ134にスイング動作を行わせたとしても、対象物138の位置が高すぎるとして当該対象物138の打球に空振りするようにゲームを進行させる。一方、制御部190は、対象物138の位置が、平面上の座標としては、ゲームキャラクタ134の周囲に設定されるスイング領域の範囲内であり、閾値181Hよりも低い位置にある場合は、ゲームキャラクタ134にスイング動作を行わせた場合に、ゲームキャラクタ134が対象物138を打球可能であるようにゲームを進行させる。
このように構成されることで、ゲームプログラム151は、ユーザに対し、より対戦相手となるゲームキャラクタ136から打たれる対象物138の弾道を見極めて、対象物138の落下点がフィールド面Fのいずれであるかをもユーザに意識させつつゲームを進行させることができ、対象物138に対するゲームキャラクタ134の位置取りと打球のタイミングによってゲームにおける有利不利が定まることを示唆することができる。そのためゲームの興趣性がいっそう向上する。
図6は、ゲームキャラクタの周囲に設定される、対象物138を打球可能な範囲を示す図である。
図6の状態(A)は、スイング領域と、ディスプレイ135に表示される打球範囲画像147とを示す図である。状態(B)は、仮想カメラの配置に従ってタッチスクリーン130に表示されるゲームキャラクタ134および打球範囲画像147を示す図である。状態(C)は、ユーザが対象物138を打球するための入力操作を行った場合に、ゲームキャラクタ134に関連付けられる(ゲームキャラクタ134が利き手の設定に応じて保持する)ラケットが移動する軌跡を示す。
状態(A)の例では、図面の上側を、ゲームキャラクタ134と対戦するゲームキャラクタ136が配置されるものとしてスイング領域(第1のスイング領域149Aおよび第2のスイング領域149B)を示している。スイング領域は、ゲームキャラクタ134が対象物138を打球することができる領域である。制御部190は、ユーザがタッチスクリーン130に対するタップ操作またはフリック操作の少なくともいずれかの入力操作を受け付けた場合に、ゲームキャラクタ134に、ゲームキャラクタ136から打たれる対象物138を打球するためのスイング動作を行わせる。制御部190は、スイング動作を行わせるための入力操作(タップ操作またはフリック操作の少なくともいずれか)を受け付けた場合に、対象物138が、ゲームキャラクタ134の周囲に設定されるスイング領域に含まれるときは、対象物138をスイング動作によりゲームキャラクタ136に向けて打ち返すよう対象物138をゲームキャラクタ136が配置されるコートに向けて飛翔させるように移動させる。制御部190は、スイング動作を行わせるための入力操作を受け付けた場合に、対象物138がスイング領域の範囲外にあるときは、ゲームキャラクタ134が対象物138の打ち返しに空振りするよう動作させ、対象物138を移動させる。
状態(A)に示すように、ゲームキャラクタ134の周囲に、第1のスイング領域149Aと、第2のスイング領域149Bとが設定されている。本実施形態のテニスゲームにおいては、打球範囲画像147の外側でゲームキャラクタ134が対象物138を打球する場合よりも、打球範囲画像147の内側で対象物138を打球するほうが、よりよい打球を対戦相手(ゲームキャラクタ136)に打ち返せるものとしている。
状態(A)の例では、ゲームキャラクタ134の位置を中心とした矩形の領域を、スイング領域(第1のスイング領域および第2のスイング領域)として設定しているが、スイング領域の形状は矩形に限らず円形、楕円形その他の形状であってもよく、また、ゲームキャラクタ134の位置を中心とすることに限られない。制御部190は、ゲームキャラクタ134の周囲に、ユーザに対し、スイング領域の大きさを視認させるための打球範囲画像147をディスプレイ132に表示させる。このように、ゲームキャラクタ134の位置を中心とした場合に、第1のスイング領域149Aは、第2のスイング領域149Bよりも内側に設定されている。このように、第2のスイング領域149Bは、第1のスイング領域149Aよりも広い領域が設定されている。
また、ゲームキャラクタ134の前方に、スイングキャンセル可能領域161が設定されている。状態(A)の例では、スイングキャンセル可能領域161は、縦方向(対戦相手のゲームキャラクタ136が配置される方向)の長さを、横方向の長さよりも大きく設定し、横方向の長さを、打球範囲画像147の横幅とほぼ一致させた長さと設定しているが、これに限られない。
スイングキャンセル可能領域161は、スイング領域の範囲外の領域(ゲームキャラクタ134が対象物138を打球できない領域)を含む。制御部190は、スイング動作を行わせるための入力操作を受け付けた場合に、対象物138が、スイングキャンセル可能領域161にあるときは、ゲームキャラクタ134に通常のスイング動作を行わせ、ゲームキャラクタ134が当該スイング動作を行っている過程においてゲームキャラクタ134を移動させるためのドラッグ操作またはゲームキャラクタ134にスイング動作をさせるためのタップ操作またはフリック操作を受け付けた場合に、スイング動作を完了させることなくこれら入力操作に対応した動作をゲームキャラクタ134に行わせる。ユーザは、このように入力操作を行うことで、例えば、ゲームキャラクタ134に、スイング動作の途中で、スイング動作の残りをキャンセルさせつつ移動させること、スイング動作の残りをキャンセルさせつつ再度スイング動作を行わせることができる。
制御部190は、スイング動作を行わせるための入力操作を受け付けた場合に、対象物138が、スイングキャンセル可能領域161の範囲外にある場合は、ゲームキャラクタ134に、ゲームキャラクタ134がよろめきつつ空振りするスイング動作を行わせる。このスイング動作が完了するまで、制御部190は、ゲームキャラクタ134を移動させるためのドラッグ操作、ゲームキャラクタ134にスイング動作をさせるためのタップ操作またはフリック操作を受け付けていたとしても、この「よろめきつつ空振りするスイング動作」を終えるまで、ゲームキャラクタ134を移動させる動作またはゲームキャラクタ134のスイング動作を待機させる。
このように、対象物138がスイングキャンセル可能領域161の範囲内にある場合と範囲外にある場合とを比較すると、範囲外にある場合にスイング動作を行うことで、ユーザがゲームキャラクタ134に対し、移動またはスイング動作をさせるための入力操作ができない時間が増加する(よろめきつつ空振りするスイング動作をゲームキャラクタ134が終えるまで、ゲームキャラクタ134を移動等させることができない)。そのため、対象物138に対するゲームキャラクタ134の位置取りを、ゲームキャラクタ134の正面付近に対象物138を位置づけることがユーザにとって有利なことをユーザに示唆することができ、ゲームの興趣性が向上する。
状態(C)において、ゲームキャラクタ134の利き手は右手と設定されており、フォアによるスイング動作を行っているものとする。状態(C)に示すように、スイング動作をすることで、ラケットの位置が、ラケット148A~ラケット148Eの位置までゲームキャラクタ134の位置を中心に移動する。なお、ゲームキャラクタ134が、バックハンドによるスイング動作を行うことができるように構成されている。制御部190は、例えば、オブジェクトとしてのラケットを、ラケット148A~148Eのように、ユーザの入力操作に応じて移動させ、当該オブジェクトとしてのラケットと、オブジェクトとしての対象物138とが衝突したときに、衝突したタイミングに応じて、対象物138において予め定められていた動作(相手側となるゲームキャラクタ136のコートへと対象物138を移動させる動作)を行わせることとしてもよい。
このように、ゲームキャラクタ134の位置に基づいて、オブジェクトとしてのラケットを、打球範囲画像147の範囲内で移動させることで、ユーザに対し、打球範囲画像147の範囲内に対象物138を収めるようドラッグ操作による移動操作を入力させつつ、タップ操作またはフリック操作によってスイング動作を行わせるよう促すことができる。このように、ユーザに対し、相手側のゲームキャラクタ136から打たれる対象物138の軌跡を視認させつつ、対象物138の移動の軌跡を推測させて、ゲームキャラクタ134を移動させる操作およびタイミングに応じてスイング動作をさせるための入力操作をするよう促すことができ、ゲームの興趣性をいっそう高めることができる。
図7は、ユーザの入力操作に応じて、ゲームキャラクタ134の移動およびスイング動作を行う場合の画面の表示例を示す図である。
図7の状態(A)は、ユーザがタッチスクリーン130に対してドラッグ操作を行うための起点となる位置(初期タッチ位置)に対して指を接近させた状態(押下位置30E)を示す。状態(A)に示すように、タッチスクリーン130を縦長にした状態で入力操作を受け付けるよう、仮想空間内の仮想カメラにより撮影される画面をタッチスクリーン130に表示する。このように、制御部190は、ユーザが入力操作を行って動作させるゲームキャラクタ134がタッチスクリーン130の手前側に配置され、対戦相手となるゲームキャラクタ136がタッチスクリーン130の奥側に配置されるように、仮想カメラの撮影画像をディスプレイ132に表示する。状態(A)に示すように、制御部190は、タッチスクリーン130の手前側の辺からの一定領域139を空けて、ゲームキャラクタ134を表示する。こうすることで、タッチスクリーン130の手前側の辺からの一定領域139において、ユーザがゲームキャラクタ134を操作するために入力操作を行う領域が確保されるため、入力操作がいっそう容易となる。
状態(B)は、状態(A)に示す状態から、ユーザがタッチスクリーン130においてドラッグ操作を行うことで、ドラッグ操作の起点となった位置(押下位置30E)と、ドラッグ操作が継続している位置(押下位置30F)との位置関係に基づく方向にゲームキャラクタ134を移動させた状態を示す。制御部190は、ゲームキャラクタ134が移動する方向を示すUI画像187を、タッチスクリーン130に表示する。状態(B)の例では、制御部190は、UI画像187として、ドラッグ操作の起点となった位置から、ドラッグ操作が継続している位置へと向かうように、円形状のオブジェクトを変形させた画像をタッチスクリーン130に表示する。こうすることで、ユーザに対し、ドラッグ操作の起点と、ドラッグ操作が継続している位置との位置関係に応じて定まるゲームキャラクタ134の移動方向を提示することができ、ユーザは、ドラッグ操作の起点を視認しつつ、ゲームキャラクタ134の移動方向を、ドラッグ操作が継続している位置を移動させることで入力することができる。このように、ゲームキャラクタ134を移動させる方向を示す入力操作をドラッグ操作で受け付けているため、ユーザがゲームキャラクタ134を移動させたい位置が仮想空間のいずれであっても、ユーザは、ゲームキャラクタ134を容易に移動させることができ、ゲームの興趣性がいっそう向上する。
状態(C)は、相手側のゲームキャラクタ136から打たれる対象物138が第1のスイング領域149Aにあるときに、ユーザがフリック操作(指をタッチスクリーン130に接触させてから押下位置30Gまで移動させて、タッチスクリーン130から指を離す)を行ってゲームキャラクタ136にスイング動作を行わせて、対象物138を相手側のゲームキャラクタ136のコートへとゲームキャラクタ134が打ち返している状態を示す。このように、ゲームキャラクタ134の周囲の打球範囲画像147の範囲内において対象物138をユーザが打ち返したときは、ゲームキャラクタ134が姿勢を崩さずスイング動作をしたようにユーザに提示する。
状態(D)は、相手側のゲームキャラクタ136から打たれる対象物138が第1のスイング領域149Aの範囲外であって第2のスイング領域149Bにあるときに、ユーザがフリック操作(指をタッチスクリーン130に接触させてから押下位置30Hまで移動させて、タッチスクリーン130から指を離す)を行ってゲームキャラクタ136にスイング動作を行わせて、対象物138を相手側のゲームキャラクタ136のコートへとゲームキャラクタ134が打ち返している状態を示す。このように、ゲームキャラクタ134の周囲の打球範囲画像147の範囲外において対象物138をユーザが打ち返したときは、ゲームキャラクタ134が姿勢を崩しつつスイング動作をしたようにユーザに提示する。
状態(C)と状態(D)とを比較すると、いずれも、対象物138をゲームキャラクタ134が相手側のゲームキャラクタ136のコートへと打ち返している。しかし、状態(D)の例では、ゲームキャラクタ134が姿勢を崩しつつ打ち返している。そのため、打球範囲画像147の外周の境界付近に対象物138が位置している場合にユーザがスイング動作を行うことが、打球範囲画像147の内側に対象物138が位置している場合にスイング動作を行うことよりも不利であることをユーザに示唆することができる。こうすることで、相手側ゲームキャラクタ136から打たれる対象物138を、よりより位置でタイミングを計って打球するようユーザの入力操作を促すことができ、ゲームの興趣性をいっそう向上させることができる。
図8は、ユーザの入力操作に応じて、ゲームキャラクタ134がスイング動作を行う場合およびスイング動作をキャンセルしてさらに動作を行う場合の画面の表示例を示す図である。
状態(A)は、相手側のゲームキャラクタ136から打たれる対象物138が第2のスイング領域149Bの範囲外で、スイングキャンセル可能領域161の範囲外でもある場合に、ユーザからフリック操作(ユーザが指をタッチスクリーン130に接触させてから押下位置30Lまで移動させて指をタッチスクリーン130から離す)の入力を受け付けてゲームキャラクタ134にスイング動作を行わせた状態を示す。この状態では、スイング動作が行わせているときに対象物138が第2のスイング領域149Bの範囲外であるために、ゲームキャラクタ134が対象物138の打ち返しに空振りし、対象物138がユーザ側のコートに打ち込まれている。制御部190は、このときにゲームキャラクタ134が大きく姿勢を崩してスイング動作を行うようタッチスクリーン130に表示する。
こうすることで、図7の状態(C)および状態(D)の例と比較して、ゲームキャラクタ134がいっそう不利な状態であることをユーザに示唆している。これにより、相手側ゲームキャラクタ136から打たれる対象物138を、よりより位置でタイミングを計って打球するようユーザの入力操作を促すことができ、ゲームの興趣性をいっそう向上させることができる。
状態(B)は、相手側のゲームキャラクタ136から打たれる対象物138がスイングキャンセル可能領域161に含まれる場合に、制御部190がユーザからスイング動作を行うための入力操作(ユーザが指をタッチスクリーン130に接触させてから押下位置30Mまで移動させて指をタッチスクリーン130から離す)を受け付けた状態を示す。このとき、対象物138は、第2のスイング領域149Bの範囲外に位置している。そのため、ゲームキャラクタ134は、スイング動作を行うが対象物138の打ち返しに空振りする。状態(B)の例は、ゲームキャラクタ134がスイング動作を完了させるまでの過程の状態(スイング中)を示す。
状態(C)は、状態(B)において、制御部190が、ユーザから、新たにスイング動作を行うためのフリック操作(ユーザが指をタッチスクリーン130に接触させてから押下位置30Nまで移動させて指をタッチスクリーン130から離す)を受け付けた状態を示す。状態(C)において、制御部190は、状態(B)でスイング動作の過程の状態にあるゲームキャラクタ134のスイング動作を、途中でキャンセルして新たにフリック操作に基づくスイング動作を行わせる。
状態(D)は、状態(B)において、制御部190が、ユーザから、新たにゲームキャラクタ134を移動させるためのドラッグ操作を受け付けた状態(ドラッグ操作を開始した位置と、ドラッグ操作を継続している押下位置30Pとの位置関係に基づく方向へゲームキャラクタ134を移動させている状態)を示す。
こうすることで、ゲームキャラクタ134にスイング動作を行わせた位置が、対象物138を打ち返すのに適していない位置であったとしても、対象物138がスイングキャンセル可能領域161に含まれている場合は、ゲームキャラクタ134がスイング動作をしている過程であっても、ユーザに対し、直ちにゲームキャラクタ134にスイング動作または移動をさせる入力操作を受付可能な環境を提供することができ、ユーザの操作性が向上する。特に、ユーザ同士がマルチプレイにより対戦する場合は、ゲームキャラクタ134がスイング動作を行ったことを、対戦相手のユーザに視認させることで、対象物138の打球のタイミングを対戦相手に把握させにくくすることができ、打球のタイミングに応じた駆け引きをより豊かにすることができるため、ゲームの興趣性をいっそう向上させることができる。
また、スイングキャンセル可能領域161を、ゲームキャラクタ134の周囲の打球範囲画像147の横幅にあわせて縦長方向に長く設定することで、ユーザに対し、対象物138をゲームキャラクタ134の正面側に位置付けるようゲームキャラクタ134を移動させることを促すことができる。これにより、相手側のゲームキャラクタ136から打たれる対象物138の軌道をいち早く見極めてゲームキャラクタ134の移動を早く開始することで有利になることをユーザに示唆することができる。特に、対戦プレイにおけるユーザの力量を早期に向上させるようユーザに促すことができ、ゲームの興趣性をいっそう向上させることができる。
<処理の流れ>
図9は、制御部190が、対象物138を打ち返すためのタップ操作またはフリック操作を受け付けた場合に、ゲームキャラクタ134にスイング動作を行わせて対象物138の移動を制御する処理を示すフローチャートである。制御部190は、スイング動作のための入力操作(タップ操作またはフリック操作)を受け付けると、図9に示す処理を行って、対象物138の移動を制御する。
ステップS901において、制御部190は、スイング動作のための入力操作を受け付けたときの、フィールド面Fにおける対象物138のxy平面における位置およびz軸方向の高さの情報を取得する。
ステップS903において、制御部190は、ゲームキャラクタ134の位置と、ゲームキャラクタ134に設定されるスイング領域(第1のスイング領域149Aおよび第2のスイング領域149B)と、対象物138の位置の情報(フィールド面Fにおける対象物138のxy平面の座標)とに基づいて、対象物138(テニスボール)が、スイング領域に含まれるか否かを判断する。制御部190は、対象物138がスイング領域に含まれる場合は(ステップS903においてYES)、ステップS905の処理を行い、そうでない場合は(ステップS903においてNO)、ステップS915の処理を行う。
ステップS905において、制御部190は、対象物138の高さと、閾値とを比較することにより、対象物138の高さが、フィールド面から一定距離以内の高さであるか否か(ゲームキャラクタ134が打球可能な高さであるか)を判断する。対象物138の高さがフィールド面から一定虚位以内の高さである場合(ステップS905においてYES)、制御部190は、ステップS907の処理を行い、そうでない場合(ステップS905においてNO)、ステップS915の処理を行う。
ステップS907において、制御部190は、スイング領域の内側(第1のスイング領域149Aの範囲内)に対象物138があるか否かを判断し、第1のスイング領域149Aの内側に対象物138がある場合(ステップS907においてYES)、ステップS909の処理を行い、そうでない場合(ステップS907においてNO)、ステップS911の処理を行う。
ステップ909において、制御部190は、ゲームキャラクタ134に通常のスイング動作(図7の状態(C))を行わせて、対象物138の着弾点を演算し、演算結果に応じて対象物138を相手側のゲームキャラクタ136へ向けて打ち返すよう対象物138を移動させる。
ステップS911において、制御部190は、ゲームキャラクタ134に、ゲームキャラクタ134がよろめきつつ(姿勢を崩しつつ)打球するスイング動作(図7の状態(D))を行わせて、対象物138の着弾点を演算子、演算結果に応じて対象物138を相手側のゲームキャラクタ136へ向けて打ち返すよう対象物138を移動させる。
ステップS913において、制御部190は、対象物138が一定以上の高さにあるためにゲームキャラクタ134が打球に空振りするようスイング動作を行わせて対象物138を移動させる。
ステップS915において、制御部190は、対象物138が、ゲームキャラクタ134の前方に設定されるスイングキャンセル領域161に位置しているか否かを判断し、対象物138がスイングキャンセル領域161に位置している場合に(ステップS915においてYES)、ステップS917の処理を行い、そうでない場合(ステップS915においてNO)、ステップS919の処理を行う。
ステップS917において、制御部190は、ゲームキャラクタ134に通常のスイング動作を行わせ(図8の状態(B))、スイング動作中において、ゲームキャラクタ134を移動させるためのドラッグ操作またはゲームキャラクタ134に対象物138を打球させるためのタップ操作またはフリック操作の入力を受け付ける。
ステップS919において、制御部190は、ゲームキャラクタ134がよろめきつつ(姿勢を崩しつつ)打球に空振りするスイング動作を行わせ(図8の状態(A))て、対象物138を移動させる。
<実施の形態2>
次に、別の実施の形態のゲーム配信システム1について説明する。
実施の形態2では、ゲームキャラクタ134が対象物138を打球する場合に、打球範囲画像147の中心部に近い位置での打球がユーザにとって、有利に働かないことをユーザに示唆する。
図10は、実施の形態2におけるスイング領域を示す図である。
図10の状態(A)は、第1のスイング領域149Aの範囲内に含まれる、近距離エリア149Cと、好打球エリア149Rと、好打球エリア149Lとを示す図である。
状態(B)は、ゲームキャラクタ134の正面に、相手側のゲームキャラクタ136から打たれる対象物138が接近している状態を示す。
状態(C)は、ゲームキャラクタ134の正面において対象物138を打球する入力操作をユーザが行った場合に、対象物138に対する打球位置がゲームキャラクタ134に近すぎることをユーザに通知するためのタッチスクリーン130の表示例を示す。
制御部190は、スイング動作をゲームキャラクタ134に行わせるための入力操作があった場合に、ゲームキャラクタ134の正面の一領域に設定される近距離エリア149Cに対象物138が位置するときは、ユーザにとって不利な位置取りであることを示す通知をタッチスクリーン130に表示する。例えば、状態(C)に示すように、制御部190は、ゲームキャラクタ134の周囲に、ゲームキャラクタ134が対象物138を打球するための位置取りを示唆する情報185をタッチスクリーン130に表示する。このとき、制御部190は、対象物138を、相手側のゲームキャラクタ136にとってスマッシュを打球するための好機を示すよう移動させることとしてもよい。
また、制御部190は、スイング動作をゲームキャラクタ134に行わせるための入力操作があった場合に、ゲームキャラクタ134の第1のスイング領域149Aの範囲内であって、好打球エリア149Rまたは好打球エリア149Lに対象物138が位置する場合に、ゲームキャラクタ134のスイング動作が良好であることをタッチスクリーン130に表示し、相手側のゲームキャラクタ136が位置するコートに向けて、対象物138を、より高速で移動させることとしてもよい。好打球エリア149Rおよび好打球エリア149Lは、例えば、現実にラケットでテニスボールを打球するときに、打球されたテニスボールの弾速が高速となるような打球位置を模して、第1のスイング領域149Aの範囲内に設定してもよい。
このように構成することで、ユーザに対し、対象物138を打ち返すために、打球範囲画像147の範囲内に対象物138を収めようとゲームキャラクタ134を移動させるよう促しつつ、単に打球範囲画像147の中心付近で対象物138を打球するだけではゲームの進行が有利にならないと示唆することで、より対象物138に対するゲームキャラクタ134の良好な位置取りに変化を持たせることができ、ゲームの興趣性をいっそう向上させることができる。
また、図10の状態(A)に示すように、(相手側のゲームキャラクタ136が配置される方向を縦方向とした場合に)ゲームキャラクタ134の縦方向(前後方向)において近距離エリア149C、好打球エリア149Rおよび好打球エリア149Lの位置を近くすることで、対象物138を打球するタイミングとしては良好であっても、対象物138を打球する位置取りがゲームキャラクタ134の正面になるほど打球がユーザにとって不利になるようにすることで、打球のタイミングのみならず打球のための良好な位置取りをもユーザに示唆することができる。
<実施の形態3>
上記実施例の他に、以下のように構成することとしてもよい。
(1)ゲームプログラム151は、仮想空間内にゲームキャラクタ134、相手側のゲームキャラクタ136、および、対象物138を少なくとも配置し、ゲームキャラクタ134および相手側のゲームキャラクタ136を、仮想空間内に配置されるフィールド面Fにおいて移動させることで、対象物138を交互に打ち返すものである。
制御部190は、相手側のゲームキャラクタ136が打ち返す対象物138のフィールド面Fへの落下点(着弾点)が、テニスゲームにおけるフィールド面Fの対象物138が着弾可能な有効領域の領域外である場合(アウトである場合)に、当該領域外に着弾した対象物138がスイング領域の範囲内にあるか否かにかかわらず、スイング動作を行わせるための入力操作を受け付けたときにゲームキャラクタ134が対象物138の打ち返しに空振りするよう対象物138を移動させる。
このように、相手側のゲームキャラクタ136が打ち返した打球が、フィールド面Fにおいて、テニスゲーム上はアウトである領域に着弾した場合は、制御部190は、ゲームキャラクタ134にスイング動作を行わせていたとしても、当該スイング動作によっては対象物138を打ち返さないようにタッチスクリーン130に表示する。こうすることで、ユーザに対し、対象物138を打球範囲画像147の範囲内に収めるようゲームキャラクタ134を移動させることに入力操作を注力させつつ、アウトになった対象物138については打球しないことで、テニスゲームにおけるラリーが決着したことをユーザに示唆することができる。
(2)制御部190は、テニスゲームとしての試合の開始が、相手側のゲームキャラクタ136による対象物138への打撃(サーブ動作)によりなされる場合に、相手側のゲームキャラクタ136が対象物138への打撃(サーブ動作)を行うまで、タップ操作またはフリック操作を受け付けたとしてもゲームキャラクタ134にスイング動作を行わせず、相手側のゲームキャラクタ136が対象物138への打撃(サーブ動作)を行うことでプレイ開始となると、タップ操作またはフリック操作によるスイング動作を行わせることとしてもよい。
<変形例>
上記の実施形態において、打球範囲画像147は、ゲームキャラクタ134のパラメータに応じて広さが設定されていることとしてもよい。
上記の実施形態において、打球範囲画像147は、ゲームキャラクタ134がよろめきつつスイング動作をする場合のように、ユーザにとって不利なスイング動作をしているときに、タッチスクリーン130における表示方法を、打球範囲画像147の透過度合いを高める、または打球範囲画像147の表示をオフにする等の制御をすることとしてもよい。こうすることで、ユーザにとって不利な状態にあることを、打球範囲画像147の表示方法を変更することでユーザに示唆することができ、ゲームの興趣性をいっそう向上させることができる。
相手側のゲームキャラクタ136がサーブ動作を行うまでは、ゲームキャラクタ134にスイング動作を行わせることは試合の決着には影響を及ぼさないため、このように構成することで、相手側のゲームキャラクタ136のサーブ動作による試合の開始をユーザにいっそう意識させることができ、ゲームの興趣性をいっそう向上させることができる。
以上のように各実施形態のゲーム配信システムを構成する携帯端末10およびサーバ20の動作について説明してきたが、携帯端末10で行われる各処理をサーバ20で行うこととしてもよいし、サーバ20で行われる処理を携帯端末10で行うこととしてもよい。
例えば、携帯端末10は、タッチスクリーン130に対するユーザの入力操作を受け付けて、受け付けた操作内容をサーバ20へ送信する。サーバ20は、ユーザの入力操作を携帯端末10から受け付けて、ゲームを進行させるための各処理を行い、仮想カメラの配置に基づいて携帯端末10に表示させるための表示画面を生成し、生成した表示画面を、逐次、携帯端末10に表示する。このように、ゲームを進行させるための処理の大部分をサーバ20が担うこととしてもよい。また、ゲームを進行させるための処理の大部分を携帯端末10が担うこととしてもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。