以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
<技術思想>
実施の形態で説明する技術思想の概要を説明する。スマートフォンなどのタッチスクリーンを備える情報処理装置でゲームプログラムを実行する場合、タッチスクリーンには、ゲームの画面が表示され、その画面上で、ユーザによる入力操作を受け付ける。このように、ユーザがタッチスクリーンを押下する操作、タッチスクリーン上で指をドラッグさせる操作等で、ゲームに登場するキャラクタを操作するゲームにおいては、ユーザがゲームを進行させるにあたり、ユーザの指によってタッチスクリーンの表示内容が覆われることがある。実施の形態では、ゲームの進行に応じて、タッチスクリーンに対してユーザが行う入力操作がいっそう容易になるよう、仮想空間内に配置される仮想カメラのカメラワークを制御する技術を説明する。
<実施の形態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は、アクションゲームであれば、各ユーザでチームを結成して、クエストモードなど比較的強力なキャラクタと対戦するゲームモードを複数のユーザがプレイすることを可能とする。
<構成>
サーバ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は、ユーザが押下した圧力の大きさを判別する。
ここで、(1)「接近操作」とは、ユーザが指などをタッチスクリーン130に接近させる操作である。タッチスクリーン130は、ユーザの指などが接近したこと(ユーザの指などがタッチスクリーン130に接触したことを含む)をタッチパネル131により検出し、検出したタッチスクリーン130の座標に応じた信号を制御部190へ出力する。制御部190は、タッチスクリーン130へのユーザの指などの接近を検出しない状態から、接近を検出したときに、状態が「タッチオン状態」になったと判別する。
(2)「リリース操作」とは、ユーザがタッチスクリーン130を接近操作している状態を止める操作である。入力操作受付部191は、例えば、ユーザが指などをタッチスクリーン130に接触させている状態から、指を離す操作をしたときに、ユーザの操作を「リリース操作」と判別する。制御部190は、タッチスクリーン130へのユーザの指などの接近を検出している状態から、接近を検出しない状態になったときに、状態が「タッチオン状態」から「タッチオフ状態」になったと判別する。
(3)「タップ操作」とは、ユーザがタッチスクリーン130に対して指などを接近させる接近操作をした後に、接近操作をした位置でリリース操作を行うことである。入力操作受付部191は、接近操作が検出されない状態(ユーザの指などがタッチパネル131から離れており、タッチパネル131がユーザの指などの接近を検出していない状態)から、タッチスクリーン130の出力に基づいて、ユーザの指などが接近したことを検出した場合に、その検出した座標を「初期タッチ位置」として保持する。入力操作受付部191は、初期タッチ位置の座標と、リリース操作をした座標とがほぼ同一である場合(接近操作が検出された座標から一定範囲内の座標においてリリース操作の座標が検出された場合)に、ユーザの操作を「タップ操作」と判別する。
(4)「ダブルタップ操作」とは、ユーザがタップ操作を一定時間内に2回行う操作である。入力操作受付部191は、例えば、ユーザの操作をタップ操作と判別してから一定時間内に、タップ操作にかかる座標で再びタップ操作を判別した場合に、ユーザの操作を「ダブルタップ操作」と判別する。
(5)「長押し操作」とは、ユーザがタッチスクリーン130を押し続ける操作である。タッチスクリーン130は、ユーザの操作を検出して接近操作を判別してから、接近操作が検出された座標において接近操作が継続している時間が一定時間を超えた場合に、ユーザの操作を「長押し操作」(「長押し操作」を、「ロングタッチ操作」と称することもある)と判別する。
(6)「ドラッグ操作」とは、ユーザがタッチスクリーン130に指などを接近させた接近状態を維持したまま、指をスライドさせる操作である。
(7)「ムーブ操作」とは、ユーザがタッチスクリーン130において、接近操作を維持しつつ、タッチスクリーン130に指などを接近させている位置を移動させてリリース操作を行う一連の操作をいう。
(8)「フリック操作」は、ユーザがムーブ操作を予め定められた時間よりも短い時間で行う操作をいう。フリック操作は、ユーザがタッチスクリーン130で指を弾くような操作である。
ゲーム進行処理部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に表示することでゲームを進行させる。
ここで、オブジェクトとしては、例えば、ユーザが操作するゲームキャラクタを示すオブジェクト、ゲームキャラクタが装着する対象物を示すオブジェクトなど様々なものがある。これらオブジェクトは、ユーザがタッチスクリーン130に対して予め定められた入力操作を行うこと、ゲームの進行に伴い一定の条件を満たすこと、その他の様々な事象の発生を契機として、オブジェクトに対応付けられた処理が行われる。
例えば、あるオブジェクトに対してユーザがタッチスクリーン130に対して接近操作を行うことで、オブジェクトがユーザに選択された状態となる。また、例えば、ユーザがドラッグ操作を行うことで、ユーザに選択されているオブジェクトがユーザの入力操作に応じて移動する等の処理が行われる。また、例えば、ユーザがオブジェクトに対してタッチ操作をすることで、ユーザに対し、ゲームを有利に進めるための報酬が付与される等の処理が行われる。
パッシブスキル管理テーブル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の詳細な処理は、後述する。
例えば、表示制御部196は、ゲームキャラクタを一定領域に表示させるよう仮想カメラを配置した状態で、ゲームキャラクタに第1の動作(例えば、サーブ動作)を行わせるための入力操作を受け付けて、受け付けた入力操作に応じてゲームキャラクタに第1の動作を行わせる画面表示をする。
<動作>
図面を参照して、実施の形態のゲーム配信システム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)において、移動操作検出部193は、入力操作受付部191の判別結果に基づいて、初期タッチ位置を示す座標31A(座標(x0,y0))から座標31B(座標(x9,y9))までユーザがドラッグ操作を行ったことを検出する。移動操作検出部193は、初期タッチ位置の座標31Aを起点として、座標31Aと座標31Bとによって規定されるベクトル32B((y9−y0)/(x9−x0))を、ゲームキャラクタを移動させる方向として検出する。
状態(C)において、移動操作検出部193は、入力操作受付部191の判別結果に基づいて、座標31B(座標(x9,y9))から座標31C(座標(x14,y14))までユーザがドラッグ操作を行ったことを検出する。移動操作検出部193は、初期タッチ位置の座標31Aを起点として、座標31Aと座標31Cとによって規定されるベクトル31C((y14−y0)/(x14−x0))を、ゲームキャラクタを移動させる方向として検出する。
図5および図6を参照して、カメラ配置制御部194が仮想空間における仮想カメラのカメラワークを決定する処理について詳しく説明する。
カメラ配置制御部194は、ゲームキャラクタに、ゲームを進行させるための所定の動作(第1の動作)を行わせる場合に、ゲームキャラクタを、タッチスクリーン130に表示させるよう仮想カメラを配置する。例えば、ゲームプログラム151は、入力操作を受け付けることにより、ゲームのプレイヤであるユーザが操作するゲームキャラクタと、ゲームキャラクタと対戦する相手側キャラクタとの間で、ボールなどの対象物を交互に打ち返すスポーツゲームにかかるものである。ゲームキャラクタに行わせる第1の動作には、スポーツゲームにおけるサーブ動作が含まれる。ゲームキャラクタに行わせる第2の動作には、サーブ動作後に相手側キャラクタと対象物(ボール)を交互に打ち返すためにゲームキャラクタを移動させる動作が少なくとも含まれる。
例えば、ゲームプログラム151がスポーツゲームであるとする。ゲームを進行させるための所定の動作として、テニスゲームであればゲームキャラクタにサーブの動作を行わせる場合に、仮想空間において予め定められた範囲に仮想カメラを配置する。ユーザがゲームキャラクタにサーブ動作を行わせるための入力操作を容易としつつ、迫力ある画面をユーザに提供できる位置に仮想カメラを配置することが好ましい。そのため、カメラ配置制御部194は、例えば、サーブ動作を行うゲームキャラクタを、タッチスクリーン130の手前側に大きく表示しつつ対戦相手のゲームキャラクタをも画面に収まるよう仮想カメラの配置個所および仮想カメラが撮影をする方向を決定する。
本実施形態では、ゲームプログラムとして、テニスゲームの場合を具体的に説明する。
図5は、ゲームキャラクタに、第1の動作としてサーブ動作を行わせた後、第2の動作として、相手側キャラクタとの間でボールを交互に打ち返すためにゲームキャラクタを移動させるための入力操作を受け付けるゲーム画面の遷移を示す図である。図5の例では、自キャラクタ134の位置に対し、ネットを挟んで画面の奥方向(縦方向)に相手側キャラクタ136を配置している。
図5の画面例(A)、画面例(B)および画面例(C)は、ユーザが操作する自キャラクタ134に、第1の動作としてサーブ動作を行わせるための入力操作を受け付ける画面である。画面例(A)に示すように、ゲーム進行処理部192は、タッチスクリーン130に、ユーザが操作するゲームキャラクタである自キャラクタ134と、テニスゲームの対戦相手となるゲームキャラクタである相手側キャラクタ136とを表示させて、ユーザに対し、自キャラクタ134にサーブ動作を行わせるための入力操作を受け付ける。
画面例(A)に示す状態において、ゲーム進行処理部192は、ユーザが自キャラクタ134にサーブ動作を行わせるため、自キャラクタ134がサーブ動作を開始する位置を指定する入力操作を受け付ける。ここで、サーブ動作を開始する位置は、コートの辺に沿った方向(画面では左右方向)に規定されるため、ユーザは、自キャラクタ134を左右方向に移動させる入力操作を行って、サーブ動作を開始する位置を決定する。
画面例(B)に示すように、ゲーム進行処理部192は、自キャラクタ134にサーブ動作を行わせるための入力操作をユーザから受け付ける。ゲーム進行処理部192は、ユーザがタップ操作を行ったことを入力操作受付部191が検出した場合に、自キャラクタ134に、ボールをトスアップさせる動作を行わせる。ゲーム進行処理部192は、打球対象オブジェクト138を、自キャラクタ134がテニスボールをトスアップしたように移動させる。すなわち、ゲーム進行処理部192は、自キャラクタ134がテニスボールを投げることで、テニスボールが上昇及び下降するように打球対象オブジェクト138を移動させる。
画面例(C)に示すように、ゲーム進行処理部192は、自キャラクタ134に、トスアップしたテニスボールを打球させるための入力操作をユーザから受け付ける。ユーザは、トスアップされた打球対象オブジェクト138が上昇したのちに下降するよう移動していくのを視認して、タイミングをはかってタッチスクリーン130にタップ操作を行うことで、打球対象オブジェクト138を打球するよう自キャラクタ134を操作する。
ゲーム進行処理部192は、例えば、打球対象オブジェクト138を上昇及び下降していくよう表示する総フレーム数のうち、予め規定された一定のフレーム数においてユーザからのタップ操作を受け付ける。ゲーム進行処理部192は、この一定のフレーム数においてタップ操作を検出した場合に、自キャラクタ134に、打球対象オブジェクト138を打球させる動作を行わせて打球対象オブジェクト138を相手側キャラクタに向けて飛翔させるよう移動させる。
画面例(A)〜画面例(C)で説明したように、ユーザは、トスアップされた打球対象オブジェクト138を視認して、タイミングを見計らってタップ操作を行うことで、自キャラクタ134にサーブ動作を行わせる。そのため、ユーザにとっては、自キャラクタ134および打球対象オブジェクト138が比較的小さく表示されている場合よりも、自キャラクタ134および打球対象オブジェクト138がタッチスクリーン130の手前側に配置されて比較的大きく表示されている方が、サーブ動作を入力することが容易となる。
画面例(C)に示すように、自キャラクタ134にサーブ動作を行わせて打球対象オブジェクト138を相手側キャラクタ136に向けて飛翔させた後は、ユーザは、自キャラクタ134を移動させつつ、自キャラクタ134と相手側キャラクタ136との間で、打球対象オブジェクト138を交互に打ち返す入力操作を行うことでゲームを進行させることとなる。
ここで、ゲーム進行処理部192は、例えば図4に示すように、ユーザからドラッグ操作を受け付けることで自キャラクタ134を移動させる方向を指定する入力操作を受け付ける。ユーザは、主に、タッチスクリーン130の手前側の領域を用いて、自キャラクタ134を移動させる入力操作を行うこととなる。そのため、ユーザの指と自キャラクタ134とがなるべく重ならないよう、自キャラクタ134をユーザが視認しやすくすることで、ゲームの操作性を向上させることができる。
そこで、カメラ配置制御部194は、ゲームキャラクタに、第1の動作を行わせる画面表示をし、タッチスクリーン130の少なくとも1つの辺から中央部に向かう一定領域を空けてゲームキャラクタを表示させるよう仮想カメラを移動させる。例えば、カメラ配置制御部194は、タッチスクリーン130の1つの辺から中央部に向かう略4分の1から略3分の1の一定領域を空けてゲームキャラクタを表示させる。
図5の画面例(D)に示すように、テニスゲームであれば、カメラ配置制御部194は、ゲームキャラクタに、第1の動作としてサーブ動作を行わせる画面表示をした後(画面例(A)〜画面例(C))、タッチスクリーン130の、ユーザから見て手前側となる辺から画面の中央部へ向かう一定領域139を空けてゲームキャラクタ(自キャラクタ134)を表示させるよう、第1の動作(サーブ動作)後に仮想カメラの撮影方向を維持したまま仮想カメラの配置個所を平行に移動させる。
図6は、実施の形態1の制御部190がゲームプログラム151を実行することにより、カメラ配置制御部194により決定されるカメラワークに従って、スポーツゲームの試合を進行させる処理を示すフローチャートである。
ステップS601において、制御部190は、ユーザが操作する自キャラクタ134を、タッチスクリーン130の手前側の辺に沿って表示させるよう、仮想カメラの撮影位置および撮影軸の初期設定に従って、仮想カメラの撮影画像をタッチスクリーン130に表示させる(図4の画面例(A)に対応する)。
ステップS603において、制御部190は、ユーザから、自キャラクタ134にサーブ動作を行わせるための入力操作(タップ操作)があるまで、自キャラクタ134を移動可能な範囲で、自キャラクタ134の位置を移動させる入力操作を受け付ける。制御部190は、例えば、ドラッグ操作により、自キャラクタ134の位置を移動させる入力操作を受け付ける。
例えば、制御部190は、図4の画面例(A)に示すように、自キャラクタ134がサーブ動作を行う位置を決定するため、左右方向に自キャラクタ134を移動させる入力操作をユーザから受け付ける。制御部190は、サーブ動作を行う位置を決定するために自キャラクタ134を移動させる入力操作に従って仮想カメラを平行に移動させ、仮想カメラの撮影画像をタッチスクリーン130に表示させる。
ステップS605において、制御部190は、自キャラクタ134にサーブ動作を行わせるための入力操作(タップ操作)を検出し、入力操作に応じて、自キャラクタ314にサーブ動作を行わせる画面表示をタッチスクリーン130に行う(図4の画面例(B)および画面例(C)に対応する)。制御部190は、自キャラクタ134にサーブ動作を行わせると、タッチスクリーン130の手前側の辺から中央部に向かう3分の1程度の一定領域139を空けて自キャラクタ134をタッチスクリーン130に表示させるよう仮想カメラを、撮影軸の方向に平行に移動させ、仮想カメラの撮影画像をタッチスクリーン130に表示させる(図4の画面例(D)に対応する)。
ステップS607において、制御部190は、ゲームの進行に応じて、自キャラクタ134と、相手側キャラクタ136と、自キャラクタ134と相手側キャラクタ136との間でラリーの対象となる打球対象オブジェクト138とを一画面に収めるよう、仮想カメラを、撮影軸の方向に平行に移動させ、仮想カメラの撮影画像をタッチスクリーン130に表示させる。
制御部190は、例えば、テニスゲームの試合を進行させて、自キャラクタ134にサーブ動作を行わせる都度、図6に示す処理を行う。また、制御部190は、相手側キャラクタ136がサーブ動作を行う場合は、図5の画面例(D)に示す状態で、自キャラクタ134をタッチスクリーン130に表示する。
図7は、カメラ配置制御部194がゲームの進行に応じて仮想カメラを平行に移動させる処理を示す図である。図7の例において、仮想空間は、3次元(xyz軸)で構成されている。オブジェクト制御部195は、仮想空間において、テニスコートを示すオブジェクトを、xy平面に沿って配置する。オブジェクト制御部195は、ユーザの入力操作に応じて、自キャラクタ134および相手側キャラクタ136を、x軸およびy軸に平行に移動させる。
図7の状態(A)は、仮想空間内において、テニスコートが配置される平面に対して垂直な面(yz平面)における仮想カメラの移動を示す図である。ユーザがタップ操作によって自キャラクタ134にサーブ動作を行わせるまで(図5の状態(C))、カメラ配置制御部194は、位置143に仮想カメラを配置する。
図7の状態(B)は、仮想空間内において、テニスコートが配置される平面に対して平行な面(xy平面)における仮想カメラの移動を示す図である。ユーザがタップ操作によって自キャラクタ134にサーブ動作を行わせると、ゲーム進行処理部192は、自キャラクタ134と相手側キャラクタ136との間でラリーを行うため、自キャラクタ134の移動方向を指定する入力操作をユーザから受け付ける。このとき、タッチスクリーン130の一定領域139を空けて自キャラクタ134をタッチスクリーン130に表示させるよう、カメラ配置制御部194は、位置143から位置145まで仮想カメラを平行に移動させる(図5の状態(D))。
<実施の形態1のカメラワークのまとめ>
カメラ配置制御部194は、ゲームキャラクタに第1の動作を行わせる場合に、ゲームキャラクタを、タッチスクリーン130の少なくとも1つの辺から中央部に向かう一定領域(図5の画面例(D)に示す一定領域139)に表示させるよう仮想カメラを配置することとしてもよい。
図5の例で説明するように、テニスゲームであれば、カメラ配置制御部194は、ゲームキャラクタに、第1の動作としてサーブ動作を行わせる場合に、タッチスクリーン130の、ユーザから見て手前側となる辺から画面の中央部へ向かう一定領域にゲームキャラクタを表示させて、サーブ動作をゲームキャラクタに行わせるための入力操作をユーザから受け付ける。これにより、サーブ動作をするための入力操作時には、ゲームキャラクタがタッチスクリーン130の手前側の辺に沿って比較的大きく表示されるため、ユーザに対し、サーブ動作を容易に行わせることができる。また、ユーザが操作する対象のゲームキャラクタが、タッチスクリーン130の手前側に比較的大きく表示されることで、迫力ある画面をユーザに提供することができる。
カメラ配置制御部194は、第1の動作に後続する第2の動作をゲームキャラクタに行わせるための入力操作をタッチスクリーン130により受け付けて、受け付けた入力操作に応じて、ゲームキャラクタをタッチスクリーン130に表示させるよう仮想カメラを移動させる。
図5の画面例(D)に示すように、テニスゲームであれば、サーブ動作(第1の動作)に後続する第2の動作をゲームキャラクタに行わせるための入力操作として、ゲームキャラクタを移動させる操作、ボールに対してゲームキャラクタに打球させる操作その他の入力操作がある。このとき、制御部190は、タッチスクリーン130の手前側の辺から中央部へ向かう一定領域139を空けて自キャラクタ134をディスプレイ132に表示させるため、ユーザは、タッチスクリーン130に対する入力操作を行うための領域が一定領域139に確保された状態で、自キャラクタ134を視認しながら容易にタッチスクリーン130への入力操作を行うことができる。
<実施の形態1の変形例>
実施の形態1では、ゲームプログラムがスポーツゲームである場合として、特に、テニスゲームの例について説明したが、ゲームのジャンルはテニスゲームに限られない。カメラ配置制御部194は、ゲームプログラム151がサッカーゲームであれば、第1の動作として、ゲームキャラクタにキックオフやスローインなど、試合の開始または再開の契機となる動作を行わせる場合に、予め定められた範囲に仮想カメラを配置する。
そして、ゲームキャラクタが、試合の開始または再開の契機となる動作を行うと、ゲームキャラクタが移動しつつ、対戦しているチーム間でサッカーボールを獲り合う展開となる。カメラ配置制御部194は、第2の動作として、ゲームキャラクタを移動させる入力操作を受け付ける場合に、一定領域139を空けて自キャラクタ134をタッチスクリーン130に表示することとしてもよい。
また、図5の例において、ゲームキャラクタに第1の動作および第2の動作を行わせる一連の処理において、カメラ配置制御部194は、仮想カメラを、テニスコートが配置される平面(ゲームキャラクタが移動可能な平面)に対する仮想カメラの撮影軸が一定の角度をなすよう、撮影軸を平行にして移動させる。こうすることで、ゲームキャラクタを表示するためのカメラアングルが一定程度に維持されるため、ゲームキャラクタを移動させるためのドラッグ操作により示す移動方向と、仮想カメラから見た仮想空間においてゲームキャラクタが移動する方向とを一致させることができ、ユーザの操作性をいっそう容易にすることができる。
<実施の形態2>
図8および図9を参照して、実施の形態2のカメラ配置制御部194の処理を説明する。
図8は、実施の形態2のカメラ配置制御部194が、ゲームキャラクタの位置に応じてカメラワークを決定する処理を示す図である。
図8の状態(A)は、カメラ配置制御部194が、タッチスクリーン130の手前側の一定領域139を空けて自キャラクタ134を表示するよう仮想カメラを配置している状態を示す。
図8の状態(B)は、カメラ配置制御部194が、ユーザから自キャラクタ134をコート内に前進させる入力操作を受け付けて、一定領域139を空けて自キャラクタ134を表示することを維持したまま、仮想カメラを移動させている状態を示す。カメラ配置制御部194は、状態(A)から状態(B)まで、仮想カメラの撮影軸を平行に移動させることとする。
図8の状態(C)は、カメラ配置制御部194が、ユーザから、自キャラクタ134を、コートから大きく外れて後退させる入力操作を受け付けて、一定領域139に自キャラクタ134を表示するよう仮想カメラを移動させている状態を示す。
このように、一定領域139に自キャラクタ134が移動してくると、タッチスクリーン130においてユーザが入力操作を行いやすい領域に自キャラクタ134が移動してくることとなる。そのため、ユーザは、自キャラクタ134を視認することが、状態(A)と比較して困難になる。自キャラクタ134がコートから大きく外れて移動する場合、相手側キャラクタ136が打ち返す打球対象オブジェクト138を、自キャラクタ134がさらに打ち返すことが困難になると想定される。すなわち、コートから大きく外れて自キャラクタ134が位置していると、自キャラクタ134が打球対象オブジェクト138を打ち返すことができる可能性が低くなり、ユーザにとって不利な状態となる。
そこで、状態(C)に示すように、カメラ配置制御部194が、一定領域139に自キャラクタ134を表示するよう仮想カメラを配置することで、ユーザに対し、自キャラクタ134の移動方向がユーザにとって不利な状態になることをユーザに示唆する。
図8の状態(D)は、カメラ配置制御部194が、自キャラクタ134の移動に沿って、一定領域139を空けて自キャラクタ134をタッチスクリーン130に表示させるよう仮想カメラを平行に移動させるか、一定領域139にかかわらず自キャラクタ134を移動させるかを判定するための、移動範囲141を示す図である。
このように、自キャラクタ134が、移動範囲141に示される範囲内を移動する場合、カメラ配置制御部194は、図8の状態(B)に示すように一定領域139を空けて自キャラクタ134をタッチスクリーン130に表示させるよう仮想カメラの配置を決定する。また、自キャラクタ134が、移動範囲141の外部に示される範囲を移動する場合、カメラ配置制御部194は、一定領域139に自キャラクタ134を侵入させるよう仮想カメラの配置を決定する。
図9は、実施の形態2の制御部190がゲームプログラム151を実行することにより、カメラ配置制御部194により決定されるカメラワークに従って、スポーツゲームの試合を進行させる処理を示すフローチャートである。
ステップS901において、制御部190は、ユーザが操作する自キャラクタ134が、仮想空間のどの座標に位置しているかの座標を取得する。仮想空間(xyz軸)において、テニスコートをxy平面に沿って配置する場合、制御部190は、自キャラクタ134のxy平面における座標を取得する。
ステップS903において、制御部190は、ステップS901で取得した自キャラクタ134の座標と、予め定められた移動範囲141とを比較して、自キャラクタ134の位置が、移動範囲141の範囲内にあるか否かを判定する。自キャラクタ134の位置が、移動範囲141の範囲内にある場合(ステップS903においてYES)、制御部190は、ステップS905の処理を行い、そうでない場合(ステップS903においてNO)、ステップS907の処理を行う。
ステップS905において、制御部190は、ゲームの進行に応じて、自キャラクタ134と、相手側キャラクタ136と、自キャラクタ134と相手側キャラクタ136との間でラリーの対象となる打球対象オブジェクト138とを一画面に収めるよう、仮想カメラを、撮影軸の方向に平行に移動させるよう仮想カメラの位置を決定する。
ステップS907において、制御部190は、ゲームの進行に応じて、自キャラクタ134と、相手側キャラクタ136と、打球対象オブジェクト138とを一画面に収め、タッチスクリーン130の一定領域139においても自キャラクタ134を表示させるよう仮想カメラの位置を決定する。例えば、自キャラクタ134の位置が、移動範囲141の範囲外に位置した場合に、仮想カメラの位置を、自キャラクタ134と相手側キャラクタ136との間で打球をラリーさせる方向(図8のタッチスクリーン130の上下方向)については移動させないこととしてもよい。
ステップS909において、制御部190は、決定された仮想カメラの位置に従って、仮想カメラの撮影画像をタッチスクリーン130に表示させる。
制御部190は、例えば、自キャラクタ134がサーブ動作を行った後に、図9に示す処理を、一定フレームごと(例えば、毎フレーム)に行う。また、相手側キャラクタ136がサーブ動作を行う場合、制御部190は、図9に示す処理を一定フレームごとに行う。
<実施の形態2のまとめ>
カメラ配置制御部194は、制御部190がゲームプログラム151を実行することで生成される仮想空間においてゲームキャラクタが移動可能な範囲のうち、予め定められた一定範囲内で移動する場合はタッチスクリーン130の少なくとも1つの辺から中央部に向かう一定領域を空けてゲームキャラクタを表示させるよう仮想カメラを移動させ、ゲームキャラクタが一定範囲外を移動する場合は、タッチスクリーン130の少なくとも1つの辺から中央部に向かう一定領域においてもゲームキャラクタをタッチスクリーン130に表示させるよう仮想カメラの移動を制御する。
テニスゲームを例にすると、カメラ配置制御部194は、ゲームキャラクタが、コート内およびコート周辺の一定範囲を移動する場合は、タッチスクリーン130の手前側の辺から中央部に向かう一定領域を空けてゲームキャラクタを表示させるよう仮想カメラを移動させる。
また、カメラ配置制御部194は、ゲームキャラクタが、コートを大きく外れて移動する場合は(例えば、コートから大きく外れた位置にゲームキャラクタがいる場合、対戦相手から打ち返される打球を対戦相手に対して再び打球するには不向きな位置にゲームキャラクタがいると考えられる)、手前側の辺から中央部へ向かう一定領域を空けず、一定領域においてもゲームキャラクタを移動させるよう仮想カメラを移動させる。
こうすることで、ゲームキャラクタが、対戦相手とラリーをするのに適した位置にいる場合は、タッチスクリーン130の手前側の辺から中央部へ向かう一定領域を空けることで、ユーザに対し、タッチスクリーン130への入力操作を行うための領域がタッチスクリーン130の手前側に確保されることとなり、ゲームキャラクタを操作することを容易にすることができる。
また、ゲームキャラクタが、対戦相手とラリーをするのに適していない位置にいる場合(コートから大きく外れて移動している場合)は、タッチスクリーン130の手前側の辺から中央部へ向かう一定領域であっても、ゲームキャラクタを、この一定領域に進ませるように移動させるよう仮想カメラの位置を決定する。
これにより、例えば、コートを大きく外れてゲームキャラクタを移動させた場合に、タッチスクリーン130の手前側の領域にゲームキャラクタが移動してくることとなり、ユーザに対し、ゲームキャラクタの移動方向が、試合を進めるうえで適していないことを示唆することができ、ゲームの操作性を向上させることができる。
<実施の形態3>
図10及び図11を参照して、実施の形態3のカメラ配置制御部194の動作を説明する。
図10は、実施の形態3のカメラ配置制御部194が、自キャラクタ134を移動させる方向および自キャラクタ134の打球動作に従って、仮想カメラを配置している処理を示す図である。
図10の状態(A)に示すように、カメラ配置制御部194は、タッチスクリーン130において、打球対象オブジェクト138をラリーさせる方向(タッチスクリーン130の上下方向)とは異なる方向(タッチスクリーン130の左右方向)において、自キャラクタ134を表示することが可能な表示領域137を設定している。カメラ配置制御部194は、表示領域137内において、ユーザが自キャラクタ134を左右方向に移動させている場合は、左右方向についてのカメラワークが固定されるよう、仮想カメラの配置を制御する。
図10の状態(B)に示すように、カメラ配置制御部194は、表示領域137を超えて、ユーザが自キャラクタ134を左右方向に移動させようとすると、自キャラクタ134の左右方向の移動に伴って、仮想カメラを平行に移動させる。
テニスゲームの場合、自キャラクタ134と相手側キャラクタ136との間でラリーを継続するため、ユーザは、自キャラクタ134を、タッチスクリーン130の上下方向(縦方向)のみならず左右方向(横方向)にも移動させて、打球対象オブジェクト138を打球させる動作を自キャラクタに行わせることとなる。そのため、自キャラクタ134の移動に伴って仮想カメラを平行に移動させる際、自キャラクタ134の左右方向の移動に連動して仮想カメラを平行に移動させればさせるほど、自キャラクタ134が左右方向への移動の切り返しを行うたびに、仮想カメラの撮影画像が左右に揺れやすくなることとなる。
そこで、状態(A)および状態(B)に示すように、自キャラクタ134を表示することが可能な表示領域137を、自キャラクタ134よりも大きく設定する。これにより、自キャラクタ134が頻繁に移動方向を切り替えて移動したとしても、自キャラクタ134の移動に比べて仮想カメラの移動の頻度を抑えることができ、仮想カメラの撮影画像の揺れをいっそう低減することができる。これにより、ユーザに対し、ゲームの操作性をいっそう向上させることができる。
ここで、自キャラクタ134が打球対象オブジェクト138を打球することができる範囲が、自キャラクタ134の周囲に予め設定されていることとする。図10の状態(C)に示すように、相手側キャラクタ136が打球対象オブジェクト138を打ち返し、自キャラクタ134が打球対象オブジェクト138を再度打ち返すことができるか否かの境界付近に打球対象オブジェクト138が位置しているとする。この状態で自キャラクタ134が打球対象オブジェクト138を打ち返すための入力操作をユーザから受け付けると、自キャラクタ134が、ユーザにとって不利な状態で打球対象オブジェクト138を打ち返すとする(例えば、自キャラクタ134が、右または左方向に姿勢を崩して打球する動作を行い、この間、ユーザが自キャラクタ134を移動させることができない状態とする。このように自キャラクタ134が姿勢を崩して打球する場合に、自キャラクタ134に設定されている体力値などのパラメータを、比較的大きく減少させることとしてもよい)。
状態(D)に示すように、カメラ配置制御部194は、自キャラクタ134が姿勢を崩して打球をする動作を行わせつつ、自キャラクタ134の動作にあわせて仮想カメラを移動させる。このように、カメラ配置制御部194は、ユーザから打球対象オブジェクト138を打ち返すための入力操作を受け付けた後において、自キャラクタ134が打球対象オブジェクト138を打ち返すことが可能な範囲に打球対象オブジェクト138があるか否かを判定する。
カメラ配置制御部194は、当該範囲内で打球対象オブジェクト138を打ち返す場合は、自キャラクタ134に、仮想カメラを移動させず打球動作を行わせ、当該範囲の境界付近で打球対象オブジェクト138を打ち返す場合に、自キャラクタ134が姿勢を崩して移動させつつ打球動作を行わせ、自キャラクタ134の移動にあわせて仮想カメラを平行に移動させる。こうすることで、自キャラクタ134が打球対象オブジェクト138を打ち返すための自キャラクタ134と打球対象オブジェクト138との位置関係がユーザにとって有利か否かをユーザに示唆することができ、ゲームの操作性をいっそう向上させることができる。
図11は、自キャラクタ134が打球対象オブジェクト138を打球することが可能な範囲の設定を示す図である。
図11の状態(A)は、制御部190が、自キャラクタ134が打球対象オブジェクト138を打球可能な範囲の目安をユーザに視認させるための範囲画像147をタッチスクリーン130に表示させた例である。
図11の状態(B)は、自キャラクタ134が打球対象オブジェクト138を打球することが可能な範囲を示す打球可能範囲149を示す図である。状態(B)に示すように、自キャラクタ134の周囲に描画される範囲画像147の範囲内において、打球対象オブジェクト138を打球するのに好適な打球範囲148Rおよび打球範囲148Lが設定されている。
制御部190は、ユーザが打球対象オブジェクト138を打球するための入力操作を行った際に、打球対象オブジェクト138が打球可能範囲149の範囲内にあるか否かを判定する。打球対象オブジェクト138が打球可能範囲149の範囲内にあり、範囲画像147の範囲外にある場合は、自キャラクタ134に姿勢を崩して移動させつつ打球動作を行わせる(図10の状態(D))。制御部190は、打球対象オブジェクトが、打球範囲148Rまたは打球範囲148Lにあると判定した場合は、通常の打球よりも強力な打球を打ち返すようタッチスクリーン130に打球対象オブジェクト138を表示する。
<実施の形態3のまとめ>
カメラ配置制御部194は、ゲームキャラクタの移動方向を指定する入力操作を受け付けて、入力操作を受け付けたゲームキャラクタの移動方向に従って仮想カメラを移動させ、タッチスクリーン130においてゲームキャラクタを表示可能な領域にゲームキャラクタを表示させる。
ここで、ゲームキャラクタを移動可能な方向のうち、タッチスクリーン130の少なくとも1つの辺から中央部へ向かう一定領域への移動方向とは異なる方向については、この一定領域への移動方向と比較して、タッチスクリーン130においてゲームキャラクタを表示可能な領域が広く設定されている。
カメラ配置制御部194は、このゲームキャラクタを表示可能な領域を超える方向にゲームキャラクタを移動させる場合に、ゲームキャラクタの移動方向に従って仮想カメラを移動させる。テニスゲームの例では、タッチスクリーン130の手前側の辺から中央部へ向かう一定領域を空けてゲームキャラクタを表示するときに、一定領域への移動方向(タッチスクリーン130の手前側の辺への移動)と比較して、一定領域への移動方向とは異なる方向(左右方向への移動)については、タッチスクリーン130においてゲームキャラクタを表示可能な領域が広く設定されている。
すなわち、ゲームキャラクタを縦方向に移動させる場合には、仮想カメラがゲームキャラクタの移動に追随してタッチスクリーン130の縦方向に移動しうるのに対し、ゲームキャラクタを左右方向に移動させる場合は、縦方向への仮想カメラの移動と比べてマージンを設け、ゲームキャラクタが右への移動から左への移動へと切り返しを行ったとしても、直ちに仮想カメラを追随させないようにすることができる。こうすることで、試合中の画面が、ゲームキャラクタの移動にあわせて左右方向に揺れる頻度を減少させることができ、ゲームのプレイをいっそう快適にすることができる。
カメラ配置制御部194は、ゲームキャラクタを、ゲームキャラクタに対する入力操作に応じて移動させる第1の状態から、ゲームキャラクタの移動を伴う予め定められた動作をゲームキャラクタに行わせる第2の状態に推移した場合に、タッチスクリーン130においてゲームキャラクタを表示可能な領域にかかわらず第2の状態に対応したゲームキャラクタの動作に従って仮想カメラを移動させる。
例えば、テニスゲームの場合に、ゲームキャラクタが、対戦相手の打球を打ち返すことが可能な範囲が設定されている場合に、打球を打ち返せるか否かの境界付近で打ち返したときにゲームキャラクタの姿勢を崩すような演出(第2の状態)をするものとする。
この場合は、カメラ配置制御部194は、ゲームキャラクタをタッチスクリーン130において表示可能な領域であるか否かにかかわらず、ゲームキャラクタの姿勢を崩す演出にあわせて仮想カメラを移動させる。
これにより、ユーザに対し、ゲームキャラクタが、姿勢を崩して不利な状態であることを示唆することができ、ゲームを有利に進めるための操作(対戦相手からの打球を打ち返すのに好ましい位置へとゲームキャラクタを移動させる操作)を示唆してゲームの興趣性をいっそう向上させることができる。
<実施の形態4>
図12を参照して、実施の形態4の携帯端末10がゲームプログラム151を実行する処理を説明する。
図12は、実施の形態4の制御部190が、移動操作検出部193の検出結果に基づき、ゲームキャラクタを移動させる方向に応じたオブジェクトをディスプレイ132に表示させる処理を示す図である。
図12の状態(A)は、カメラ配置制御部194が、ユーザから自キャラクタ134を移動させるための入力操作を受け付ける局面を示す。状態(A)に示すユーザの指の押下位置30Eから、点線で示す方向へユーザがドラッグ操作を行うものとする。
図12の状態(B)は、ユーザがドラッグ操作を行って、自キャラクタ134を移動させる方向を入力している局面を示す。状態(B)に示すように、ユーザの指が、押下位置30Eから押下位置30Fまで移動している。これにより、移動操作検出部193は、タッチスクリーン130の押下位置30Fの座標と、押下位置30Eの座標とに基づいて、ユーザがゲームキャラクタを移動させる方向を指定する入力操作を検出する。
制御部190は、移動操作検出部193の検出結果に基づき、押下位置30Eの座標を起点として、押下位置30Eから押下位置30Fへの線分上の任意の点を終点として、自キャラクタ134の移動方向を示す矢印状のオブジェクトである矢印オブジェクト186をタッチスクリーン130に表示させる。制御部190は、ドラッグ操作が行われている間、自キャラクタ134を移動させる方向を指定する入力操作を検出して、移動させる方向に応じたオブジェクトをタッチスクリーン130に表示させる。
図12の状態(C)は、ユーザがゲームキャラクタを移動させる方向を示すオブジェクトが、弾性状のオブジェクトである弾性オブジェクト187をタッチスクリーン130に表示させる局面を示す。弾性オブジェクト187は、押下位置30Eの座標を起点として、押下位置30Eから押下位置30Fへの線分上の任意の点を終点とするオブジェクトである。
このように、制御部190は、タッチスクリーン130に対するユーザの入力操作を受け付けつつ、矢印オブジェクト186をユーザに視認させるようタッチスクリーン130の表示内容を制御する。こうすることで、制御部190は、自キャラクタ134を移動させる方向をユーザに認識させつつ、ユーザが自キャラクタ134を移動させるための入力操作を受け付けることができる。
<実施の形態5>
図5に示すように、上記の各実施形態の説明では、ゲームプログラム151は、ゲームキャラクタ(自キャラクタ134)に第1の動作を行わせる画面表示をして、一定領域139を空けてゲームキャラクタをタッチスクリーン130に表示させるよう、カメラ配置制御部194によりカメラワークを制御する。
これに対し、実施の形態5のゲームプログラム151は、ゲームキャラクタを操作するために受け付ける入力操作の種類に応じて、カメラ配置制御部194がカメラワークを制御する。
図5の画面例(B)および図5の画面例(C)に示すように、ゲームプログラム151は、タップ操作により自キャラクタ134にサーブ動作を行わせる。制御部190は、自キャラクタ134にサーブ動作を行わせる場合、タッチスクリーン130の縦方向への自キャラクタ134の移動を規制し、タップ操作を受け付ける。図5の画面例(D)に示すように、ゲームプログラム151は、自キャラクタ134がサーブ動作を行った後、自キャラクタ134の移動方向の入力を、ドラッグ操作によってユーザから受け付ける。
このように、実施の形態5のゲームプログラム151は、自キャラクタ134の移動方向の入力を、上下左右について規制なくユーザからドラッグ操作により受け付ける場合は、一定領域139を空けて自キャラクタ134を配置するよう仮想カメラのカメラワークを制御する。
ユーザが上下左右の方向に規制なくドラッグ操作を行うことが必要である場合(ゲームプログラム151が上下左右の方向に規制なくドラッグ操作によってゲームキャラクタの移動方向の入力を受け付ける場合)、ユーザは、タッチスクリーン130の手前側の領域を空けて自キャラクタ134が表示されている方が、そうでない場合と比較して、タッチスクリーン130に対する入力操作を容易に行うことができる。これにより、ゲームの操作性をいっそう向上させることができる。
<変形例>
以上のように各実施形態のゲーム配信システムを構成する携帯端末10およびサーバ20の動作について説明してきたが、携帯端末10で行われる各処理をサーバ20で行うこととしてもよいし、サーバ20で行われる処理を携帯端末10で行うこととしてもよい。
例えば、携帯端末10は、タッチスクリーン130に対するユーザの入力操作を受け付けて、受け付けた操作内容をサーバ20へ送信する。サーバ20は、ユーザの入力操作を携帯端末10から受け付けて、ゲームを進行させるための各処理を行い、仮想カメラの配置に基づいて携帯端末10に表示させるための表示画面を生成し、生成した表示画面を、逐次、携帯端末10に表示する。このように、ゲームを進行させるための処理の大部分をサーバ20が担うこととしてもよい。また、ゲームを進行させるための処理の大部分を携帯端末10が担うこととしてもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。