以下、この発明の実施形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
(ゲーム配信システム1の構成)
図1は、ある実施形態に従うゲーム配信システム1の構成例を示す図である。図1に示すように、ゲーム配信システム1は、ユーザが使用する情報処理装置と、サーバ20とを含む。情報処理装置とサーバ20とは、ネットワーク80によって互いに通信可能に接続されている。
図1の例では、ユーザが使用する情報処理装置として、携帯端末10A、携帯端末10Bおよび携帯端末10C(以下、携帯端末10A、10B、10Cなどの携帯端末を総称して「携帯端末10」と表すこともある)など複数の携帯端末が示されている。携帯端末10Aと携帯端末10Bとは、無線基地局81と通信することにより、ネットワーク80と接続する。携帯端末10Cは、家屋などの施設に設置される無線ルータ82と通信することにより、ネットワーク80と接続する。携帯端末10は、タッチスクリーンを備える端末であり、例えば、スマートフォン、ファブレット、タブレットなどである。
携帯端末10は、ゲームプログラムを実行することにより、ゲームプログラムに応じたゲームをプレイする環境をユーザに対して提供する。携帯端末10には、例えば、アプリ等を配信するプラットフォームを介してダウンロードされたゲームプログラムがインストールされる。携帯端末10は、ダウンロードされたゲームプログラム、または、予めプリインストールされているゲームプログラムを実行することで、ユーザによるゲームのプレイを可能とする。携帯端末10が、ゲームプログラムを実行すると、携帯端末10と、サーバ20とが、通信して、ゲームの進行に応じてゲームに関連するデータが、携帯端末10とサーバ20との間で送受信される。
サーバ20は、ゲームのプレイに必要なデータを、適宜、携帯端末10へ送信することで、携帯端末10でのゲームのプレイを進行させる。サーバ20は、ゲームをプレイする各ユーザの、ゲームに関連する各種データを管理する。サーバ20は、携帯端末10と通信し、各ユーザのゲームの進行に応じて、画像、音声、テキストデータその他のデータを携帯端末10へ送信する。
例えば、サーバ20は、ユーザがゲームのストーリーを進行させた進行状況、ユーザが使用可能なキャラクタの情報(例えば、キャラクタの能力を示すパラメータ)、当該キャラクタが使用する道具の性能を示すパラメータその他の各種データを管理する。また、サーバ20は、ゲームの運営者がユーザに対して行なうキャンペーン、ゲームにおける不具合の発生、不具合の解消その他のゲームの運営に関連する情報等をユーザに通知する処理を行なう。
ゲームプログラムは、ユーザがゲームをプレイするモードとして、一人のユーザがプレイする場合(シングルプレイ)と、複数人のユーザが協力してプレイする場合(マルチプレイ)とに対応している。例えば、ゲーム配信システム1のサーバ20が、マルチプレイに参加するユーザを特定して各ユーザの各携帯端末10と通信すること等により、マルチプレイでゲームをプレイする環境を各ユーザに提供する。
ゲーム配信システム1は、マルチプレイに対応することにより、例えば、アクションゲームであれば、ユーザ同士が協力してゲームを進行させること、または、ユーザどうしでの対戦を可能とする。
<構成>
サーバ20のハードウェアの構成を説明する。サーバ20は、主たる構成要素として、通信IF(Interface)22と、入出力IF23と、メモリ25と、ストレージ26と、プロセッサ29とを備える。各構成要素は、通信バスを介して互いに接続されている。
通信IF22は、例えばLAN(Local Area Network)規格など各種の通信規格に対応しており、携帯端末10など外部の通信機器との間でデータを送受信するためのインタフェースとして機能する。
入出力IF23は、サーバ20への情報の入力を受け付けるとともに、サーバ20の外部へ情報を出力するためのインタフェースとして機能する。入出力IF23は、マウス、キーボード等の情報入力機器の接続を受け付ける入力受付部と、ディスプレイ等の情報出力機器の接続を受け付ける出力部とを含む。入力受付部は、一例として、PS/2コネクタ、USB(Universal Serial Bus)コネクタ等により実現される。出力部は、一例として、VGA(Video Graphics Array)コネクタ、DVI(Digital Visual Interface)コネクタ、HDMI(High Definition Multimedia Interface)(登録商標)コネクタ、Displayportコネクタ等により実現される。
メモリ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)等を含む。
(携帯端末10の構成)
図2は、ある実施形態に従う携帯端末10の構成を示すブロック図である。図2を参照して、携帯端末10は、アンテナ110と、無線通信IF120と、タッチスクリーン130と、入出力IF140と、記憶部150と、音声処理回路160と、マイク170と、スピーカ180と、加速度センサ185と、プロセッサ190とを備える。
アンテナ110は、携帯端末10が発する信号を電波として空間へ放射する。また、アンテナ110は、空間から電波を受信して受信信号を無線通信IF120へ送出する。
無線通信IF120は、アンテナ110等を介して他の通信機器と信号を送受信するための変復調処理などを行なう無線通信用の通信モジュールとして機能する。無線通信IF120は、チューナー、高周波回路等により実現される。無線通信IF120は、携帯端末10が送受信する無線信号の変復調や周波数変換を行い、受信信号をプロセッサ190へ出力する。
タッチスクリーン130は、ユーザからの入力を受け付ける。プロセッサ190は、当該入力に応じた情報をディスプレイ132に出力する。タッチスクリーン130は、ユーザの入力操作を受け付けるための部材(タッチパネル131)を含む。また、タッチスクリーン130は、メニュー画面や、ゲームの進行を画面に表示するための部材(ディスプレイ132)を含む。一例として、タッチパネル131およびディスプレイ132は、縦の長さと横の長さとが異なる矩形である。タッチパネル131は、例えば静電容量方式に従い、ユーザの指などが接近したことを検出する。ディスプレイ132は、例えばLCD(Liquid Crystal Display)、有機EL(ElectroLuminescence)ディスプレイその他の表示装置によって実現される。
入出力IF140は、携帯端末10への情報の入力を受け付けるとともに、携帯端末10の外部へ情報を出力するためのインタフェースとして機能する。入出力IF140は、一例として、USB(Universal Serial Bus)コネクタ等により実現される。
記憶部150は、フラッシュメモリ、RAM(Random Access Memory)等により構成され、携帯端末10が使用するプログラム、および、携帯端末10がサーバ20から受信する各種データ等を記憶する。
音声処理回路160は、音声信号の変復調を行なう。音声処理回路160は、マイク170から入力される信号を変調して、変調後の信号をプロセッサ190に出力する。また、音声処理回路160は、音声信号をスピーカ180に出力する。音声処理回路160は、例えば、音声処理用のプロセッサによって実現される。マイク170は、周囲の音声を音声信号に変換してプロセッサ190へ出力するための音声入力部として機能する。スピーカ180は、音声信号を音声に変換して、携帯端末10の外部へ出力するための音声出力部として機能する。
加速度センサ185は、携帯端末10の傾きを検知する。加速度センサ185は、重力加速度の計測が可能で、携帯端末10の姿勢、より具体的には、重力方向に対するディスプレイ132の傾きを検出し得る。傾きを検出するためのセンサとしては、加速度センサ185の他にも、例えばジャイロセンサ、傾斜センサなどを用いてもよい。
プロセッサ190は、記憶部150に記憶されるプログラムを読み込んで実行することにより、携帯端末10の動作を制御する。
携帯端末10がゲームプログラム151を実行する処理について、より詳細に説明する。ある局面において、記憶部150は、ゲームプログラム151と、ゲーム情報152と、ユーザ情報153とを記憶する。携帯端末10は、例えば、サーバ20からゲームプログラムをダウンロードして記憶部150に記憶させる。また、携帯端末10は、ゲームの進行に伴いサーバ20と通信することで、ゲーム情報152およびユーザ情報153等の各種のデータをサーバ20と送受信する。
ゲームプログラム151は、携帯端末10においてゲームを進行させるためのプログラムである。ゲーム情報152は、ゲームプログラム151が参照する各種のデータを含む。ゲーム情報152は、例えば、ゲームにおいて仮想空間に配置するオブジェクトの情報、オブジェクトに対応付けられた効果の情報(例えば、キャラクタに設定されるスキルの情報)などを含む。ユーザ情報153は、ゲームをプレイするユーザについての情報を含む。ユーザ情報153は、例えば、ゲームをプレイするユーザを識別する情報、マルチプレイ時に協力してゲームをプレイする他のユーザを識別する情報その他の情報を含む。
プロセッサ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がユーザの指などの接近を検出していない状態)から、接近操作を検出した場合に、その検出した座標を「タッチ開始位置」として保持する。入力操作受付部191は、タッチ開始位置の座標と、リリース操作をする直前に(タッチオフ状態が検出される直前に)タッチパネル131により検出されている座標とがほぼ同一である場合(接近操作が検出された座標から一定範囲内の座標においてリリース操作にかかる座標が検出された場合)に、ユーザの操作を「タップ操作」と判別する。
(4)「ダブルタップ操作」とは、ユーザがタップ操作を一定時間内に2回行なう操作である。入力操作受付部191は、例えば、ユーザの操作をタップ操作と判別してから一定時間内に、タップ操作にかかる座標で再びタップ操作を判別した場合に、「ダブルタップ操作」が入力されたと判別する。
(5)「長押し操作」とは、ユーザがタッチスクリーン130を押し続ける操作である。タッチスクリーン130は、ユーザの操作を検出して接近操作を判別してから、接近操作が検出された座標において接近操作が継続している時間が一定時間を超えた場合に、「長押し操作」(「長押し操作」を、「ロングタッチ操作」と称することもある)が入力されたと判別する。
(6)「ドラッグ操作」とは、ユーザがタッチスクリーン130に指などを接近させた接近状態を維持したまま、指をスライドさせる操作である。
(7)「ムーブ操作」とは、ユーザがタッチスクリーン130において、接近操作を維持しつつ、タッチスクリーン130に指などを接近させている位置を移動させてリリース操作を行なう一連の操作をいう。
(8)「フリック操作」は、ユーザがムーブ操作を予め定められた時間よりも短い時間で行なう操作をいう。フリック操作は、ユーザがタッチスクリーン130で指を弾くような操作である。記憶部150は、例えば、ユーザがムーブ操作を行なう時間と比較するための閾値を保持する。プロセッサ190は、ユーザがタッチスクリーン130において指などを接近させている位置を一定距離移動させるまでの時間が、当該閾値未満の場合にフリック操作が入力されたと判断する。また、プロセッサ190は、上記時間を複数の閾値と比較し得る。プロセッサ190は、上記時間が第1の閾値よりも短い場合(比較的素早く指を弾く場合)は、フリック操作が「強フリック」であると判断し、第1の閾値よりも大きく第2の閾値(第2の閾値を、第1の閾値よりも大きく設定する)よりも小さい場合に、フリック操作が「弱フリック」であると判断し得る。
ゲーム進行処理部192は、ユーザの操作に応じて、各種のプログラムを呼び出す等によりゲームを進行させる処理を行なう。例えば、ゲーム進行処理部192は、サーバ20と通信し、ゲームの進行に応じてサーバ20へデータを送信する処理、サーバ20からゲームに関連するデータを受信する処理、ゲームの進行に応じてユーザに報酬を付与する処理、時間の経過を計測する処理その他の処理を行なう。
移動操作検出部193は、タッチスクリーン130に対するユーザの入力操作に基づいて、ゲームに登場するキャラクタを移動させる入力操作を検出する。例えば、ゲームプログラム151がアクションゲーム、ロールプレイングゲーム、アクションロールプレイングゲームである場合、移動操作検出部193は、ユーザの入力操作に基づいて、ユーザの操作するキャラクタを移動させる方向を検出する。このように、移動操作検出部193は、ユーザがキャラクタの移動方向を指定する入力操作を受け付ける。
具体的には、移動操作検出部193は、ユーザがドラッグ操作を行った場合に、タッチ開始位置の座標とタッチスクリーン130の検出結果とに基づいて、キャラクタの移動方向を検出する。移動操作検出部193の詳細な処理は、後述する。
仮想カメラ制御部194は、仮想空間に配置される各オブジェクトを、どのようにユーザに見せるかを決定する。具体的には、仮想カメラ制御部194は、プロセッサ190がゲームプログラム151を読み込んで実行することで生成される仮想空間において、仮想カメラの配置(カメラワーク)を制御する。プロセッサ190は、仮想空間における仮想カメラの撮影画像をディスプレイ132に表示することで、ユーザに対しゲームのプレイ環境を提供する。
また、仮想カメラ制御部194は、加速度センサ185が検出する重力方向に対するディスプレイ132の傾きに応じて、仮想カメラの視界のアスペクト比を変更する。当該制御については後述する。
オブジェクト制御部195は、入力操作受付部191が受け付けたユーザの操作内容に基づいてゲームに登場する各種オブジェクト(例えば、GUI(Graphical User Interface)画面など)の生成、変形、移動などの処理を制御する。オブジェクト制御部195は、例えば、ユーザがキャラクタを移動させるためのタッチスクリーン130に対する入力操作に基づいて、キャラクタの移動方向を示すオブジェクトを生成する。
表示制御部196は、仮想カメラのカメラワークに従った画像をディスプレイ132に出力する。表示制御部196は、仮想空間内における仮想カメラの配置に応じて、ディスプレイ132の表示内容を決定し、決定した表示内容に従う画像、テキスト等の各種の情報をディスプレイ132に出力する。
また、表示制御部196は、加速度センサ185が検出する重力方向に対するディスプレイ132の傾きに応じて、ディスプレイ132の表示画面を回転させ、縦長画面と横長画面とを切り替える。一例として、加速度センサ185は、重力方向に対するディスプレイ132の長手方向の角度(0〜180度)を検出する。表示制御部196は、加速度センサ185が検出する角度が45度以下、または135度よりも大きい場合、ディスプレイ132に縦長画面を表示する。一方、表示制御部196は、加速度センサ185が検出する角度が45度よりも大きく135度以下である場合、ディスプレイ132に横長画面を表示する。
(サーバ20の構成)
図3は、ある実施形態に従うサーバ20の機能的な構成を示すブロック図である。図3を参照して、サーバ20の詳細な構成を説明する。サーバ20は、プログラムに従って動作することにより、記憶部250と、制御部290として機能する。
記憶部250は、携帯端末10においてユーザがゲームを進行させるための各種プログラムおよびデータを記憶する。ある局面において、記憶部250は、ゲームプログラム251と、ゲーム情報252と、ユーザ情報253とを記憶する。記憶部250は、メモリ25およびストレージ26によって構成される。
ゲームプログラム251は、サーバ20が携帯端末10と通信して、携帯端末10においてゲームを進行させるためのプログラムである。ゲームプログラム251は、ゲームを進行させるための各種データであるゲーム情報252およびユーザ情報253等を参照して、ユーザの入力操作に応じてゲームを進行させる。プロセッサ29は、ゲームプログラム251を実行することにより、携帯端末10とデータを送受信する処理、携帯端末10のユーザが行った操作内容に応じてゲームを進行させる処理、ゲームをプレイするユーザの情報を更新する処理その他の処理を行なう。
ゲーム情報252は、ゲームプログラム251が参照する各種のデータを含む。ゲーム情報252は、オブジェクト管理テーブル252Aと、パッシブスキル管理テーブル252Bと、アクティブスキル管理テーブル252Cとを含む。
オブジェクト管理テーブル252Aは、ゲームの仮想空間内に配置されるオブジェクト、および当該オブジェクトに設定される情報を含む。携帯端末10は、仮想空間内に配置されるオブジェクトを、仮想空間内に配置される仮想カメラによって撮影した画像をディスプレイ132に表示することでゲームを進行させる。
ここで、オブジェクトとしては、例えば、携帯端末10のユーザが操作するキャラクタ(以下、「自キャラクタ」とも称する)を示すオブジェクト、自キャラクタが装着する装着対象物を示すオブジェクト、仮想空間におけるフィールドを形成する木や岩などを示すオブジェクトなど様々なものがある。プロセッサ190は、ユーザがタッチスクリーン130に対して予め定められた入力操作を行なうこと、ゲームの進行に伴い一定の条件を満たすこと、その他の様々な事象の発生を契機として、オブジェクトに対応付けられた処理を行なう。
例えば、あるオブジェクトに対してユーザがタッチスクリーン130に対して接近操作を行なうことで、プロセッサ190は、オブジェクトを、ユーザによって選択された状態とする。また、例えば、プロセッサ190は、ユーザによるドラッグ操作を受け付けることで、ユーザが移動対象とするオブジェクト(例えば、自キャラクタ)を、ドラッグ操作に応じて移動させる等の処理を行なう。また、例えば、プロセッサ190は、ユーザがオブジェクトに対して行なうタッチ操作を受け付けることで、ユーザに対し、ゲームを有利に進めるための報酬を付与する等の処理を行なう。
パッシブスキル管理テーブル252Bは、オブジェクトを識別する情報と、オブジェクトに対応付けられたパッシブスキルの情報とが対応付けられている。ここで、パッシブスキルとは、例えば、ゲームにおいて予め定められた条件が満たされたときに発動され、ユーザがゲームを有利に進行させることができるものである。例えば、パッシブスキルが発動した場合に、キャラクタの移動速度が向上する等の、ゲームを有利に進行させられる効果を発揮させる。
アクティブスキル管理テーブル252Cは、オブジェクトを識別する情報と、オブジェクトに対応付けられたアクティブスキルの情報とが対応付けられている。ここで、アクティブスキルとは、例えば、ゲームにおいて予め定められた条件が満たされたときに発動可能な状態となる。アクティブスキルが発動すると、ユーザは、ゲームを有利に進行させることができる。
ユーザ情報253は、ゲームをプレイするユーザについての情報である。ユーザ情報253は、ユーザ管理テーブル253Aを含む。ユーザ管理テーブル253Aは、各ユーザを識別する情報と、ユーザがゲームを進行させた度合いを示す情報と、ユーザがゲーム内で保有するアイテム、キャラクタ、キャラクタが使用する装着物等の情報その他の情報を含む。
制御部290は、送受信部291、サーバ処理部292、データ管理部293、マッチング部294、計測部295としての機能を含む。これらの機能は、サーバ20のプロセッサ29が、記憶部250に記憶されるゲームプログラム251を実行することにより、実現される。
送受信部291は、ゲームプログラム151を実行する携帯端末10と各種情報を送受信する。携帯端末10とサーバ20とは、オブジェクトを仮想空間に配置する要求、オブジェクトを削除する要求、オブジェクトを移動させる要求、ユーザが獲得する報酬に応じて各種パラメータを更新する要求、何らかの条件を満たした旨の通知、ゲームを進行させるための画像、音声その他のデータを送受信する。
サーバ処理部292は、サーバ20によりゲームの進行に必要な処理を行なう。サーバ処理部292は、例えば、携帯端末10から受信した情報に基づいて、ゲーム情報252、ユーザ情報253などのデータを更新する。サーバ処理部292は、更新したデータを携帯端末10に送信することでゲームを進行させる。
データ管理部293は、サーバ処理部292の処理結果に従って、記憶部250に記憶される各種データを更新する処理、データベースにレコードを追加/更新/削除する処理などを行なう。
マッチング部294は、複数のユーザを関連付けるための一連の処理を行なう。マッチング部294は、例えば、ユーザがマルチプレイを行なうための入力操作を行った場合に、ゲームを協力してプレイさせるユーザ同士を関連付ける処理などを行なう。
計測部295は、時間を計測する処理を行なう。計測部295は、例えば、仮想空間に配置される各オブジェクトについて時間の経過を計測する。また、計測部295は、携帯端末10がゲームプログラム151を実行している累計時間を計測する。サーバ20は、携帯端末10から各種の計測結果を受信する。この計測結果は、携帯端末10がゲームプログラム151を実行することにより計測される。サーバ20は、受信した各種の計測結果と、計測部295の計測結果とを照合することで、携帯端末10とサーバ20との間の、各種の時間に関する情報を同期させる。
<構成のまとめ>
以上のように、ある実施形態のゲーム配信システム1の構成を説明してきた。当該実施形態において、ゲームプログラム151は、例えばアクションロールプレイングゲームであり、仮想空間内の仮想カメラの配置に応じた画面をタッチスクリーン130に表示させることでゲームを進行させる。
例えば、ゲームプログラム151がアクションロールプレイングゲームである場合、ゲーム進行処理部192は、画像やテキストなどディスプレイ132に表示するデータを決定する処理、プレイ対象とする1以上のイベント(クエスト)をディスプレイ132に表示してイベントの選択をユーザから受け付ける処理、ユーザの操作に応じてイベントを進める処理などの基本的な処理を行なう。
(仮想カメラの視界)
図4は、ある実施形態に従う仮想空間および仮想カメラについて説明する図である。ある局面において、携帯端末10のプロセッサ190は、ゲーム進行処理部192として、仮想空間410を規定する。続いて、プロセッサ190は、オブジェクト制御部195として、ゲームプログラム151を実行することにより、仮想空間410に建物、木、岩、などのオブジェクトを含むフィールド(マップ)を形成する。オブジェクト制御部195は、仮想空間に形成されるフィールドに、携帯端末10のユーザが操作する自キャラクタ、自キャラクタを攻撃する敵キャラクタ、仮想カメラ420などのオブジェクトを配置する。プロセッサ190は、表示制御部196として、仮想カメラ420が撮影する画像430をディスプレイ132に表示する。
図5および図6を参照して、仮想カメラの視界(視野角)について説明する。図5は、仮想カメラ420の視界領域をX方向から見たYZ断面を表す図である。図6は、仮想カメラ420の視界領域をY方向から見たXZ断面を表す図である。
一例として、仮想カメラ420の視界(視野角)は、タッチスクリーン130(ディスプレイ132)の縦の画素数および横の画素数に応じて定められる。図5および図6を参照して、YZ断面における仮想カメラ420の視野角αおよび、XZ断面における仮想カメラ420の視野角βは、一例として、ディスプレイ132の縦(長辺)の画素数(長さ)と、横(短辺)の画素数に基づいて設定される。
表示制御部196がディスプレイ132に縦長画面を表示する場合、仮想カメラ制御部194は、仮想カメラ420の視野角αをディスプレイ132の縦の画素数に応じて設定し、視野角βを横の画素数に応じて設定する。一方、表示制御部196がディスプレイ132に横長画面を表示する場合、仮想カメラ制御部194は、仮想カメラ420の視野角αをディスプレイ132の横の画素数に応じて設定し、視野角βを縦の画素数に応じて設定する。すなわち、仮想カメラ制御部194は、加速度センサ185の検出する携帯端末10の傾きに応じて、仮想カメラ420の視界のアスペクト比を、縦長のアスペクト比と横長のアスペクト比との間で切り替える。
(縦画面と横画面との切り替え)
図7は、ある実施形態に従う縦画面表示と横画面表示との切り替えについて説明する図である。状態(A)において、加速度センサ185は、タッチスクリーン130の長辺方向が重力方向に対して0度傾いている状態を示す。表示制御部196は、加速度センサ185の検出結果に応じて、タッチスクリーン130に縦長画面を表示する。
状態(A)において、タッチスクリーン130には、ユーザが操作する自キャラクタ710と、敵キャラクタ720と、木730とが表示されている。さらに、タッチスクリーン130には、GUI等の常時表示部品740,750,760,770と、メッセージ等の一時表示部品780とが表示されている。以下、常時表示部品と一時表示部品とを総称して独立部品とも称する。
ある局面において、常時表示部品740および750はそれぞれ、異なるアクティブスキルを発動させるためのボタンであり得る。ユーザがタッチスクリーン130上に表示される常時表示部品740または750を押下すると、プロセッサ190はゲーム進行処理部192として、ゲーム情報152を参照して、常時表示部品740または750に対応するアクティブスキルを発動させる。
ある局面において、常時表示部品760は、メニューボタンであり得る。ユーザがタッチスクリーン130上に表示される常時表示部品760を押下すると、プロセッサ190は、ゲームを行なう環境(例えば、タッチパネル131の入力感度)を変更するための設定画面を表示する。ある局面において、常時表示部品770は、自キャラクタ710の体力(ヒットポイント)を表示する体力ゲージであり得る。
ある局面において、一時表示部品780は、ゲームの進行に応じて生じた事象を表示するためのメッセージであり得る。
ある局面において、携帯端末10のユーザは、携帯端末10を縦長の状態(A)から携帯端末10を傾けて、横長の状態(B)へと遷移させる。これにより、加速度センサ185は、タッチスクリーン130の長辺方向が重力方向に対して略90度傾いている旨を検出する。
プロセッサ190は、表示制御部196として、この加速度センサ185の検出結果に応じて、タッチスクリーン130に表示される画面を90度回転させ、縦長画面から横長画面に切り替える。またプロセッサ190は、仮想カメラ制御部194として、タッチスクリーン130の画面表示が横画面表示に切り替わるとともに、仮想カメラ420の視界(視野角)を縦長のアスペクト比から横長のアスペクト比に切り替える。
またプロセッサ190は、オブジェクト制御部195として、タッチスクリーン130の画面表示が横画面表示に切り替わるとともに、独立部品の表示位置を変更する。この制御の詳細は、後述する。
(タッチスクリーンに表示される画像の生成方法)
図8は、ある実施形態に従うタッチスクリーン130に表示される画像の生成方法の一例について説明する図である。一例として、図7の状態(A)に表示される画像の生成方法について説明する。
分図(A)を参照して、プロセッサ190は、オブジェクト制御部195として、仮想空間410に仮想カメラ420と、自キャラクタ710と、敵キャラクタ720と、木730とを配置する。一例として、オブジェクト制御部195は、仮想カメラ420の視界の略中央部に自キャラクタ710を配置する。プロセッサ190は、ユーザのタッチスクリーン130に対するドラッグ操作に応じて、自キャラクタ710および仮想カメラ420を移動する。これにより、分図(B)に示される仮想カメラ420の撮影する画像810は、ドラッグ操作に応じて変化する。
分図(C)を参照して、プロセッサ190は、オブジェクト制御部195として、仮想空間410とは異なる仮想空間830に、仮想カメラ840と、常時表示部品740,750,760,770、および一時表示部品780とを配置する。より具体的には、オブジェクト制御部195は、仮想カメラ840の視界内に収まるように独立部品を配置する。仮想カメラ840は、独立部品を撮影することにより、部品画像を得る。
プロセッサ190は、仮想カメラ制御部194として、仮想カメラ840の配置位置を固定する。すなわち、仮想カメラ制御部194は、移動操作検出部193がユーザのタッチスクリーン130に対するドラッグ操作を検出したとしても、当該ドラッグ操作に応じて仮想カメラ840を移動させない。これにより、分図(D)に示される仮想カメラ840の撮影する画像820は、ドラッグ操作に応じて変化しない。
プロセッサ190は、表示制御部196として、仮想カメラ420が撮影する画像に、仮想カメラ840が撮影する画像(部品画像)を重ね合わせて、図7の状態(A)に示される画像を生成する。表示制御部196は、生成した画像をディスプレイ132に表示する。当該構成によれば、オブジェクト制御部195は、ドラッグ操作に応じて、仮想カメラ420と自キャラクタ710とともに、独立部品を動かさなくてもよい。そのため、プロセッサ190の処理速度を向上し得る。
上記説明したように、仮想カメラ制御部194は、タッチスクリーン130に表示される画面が縦長画面から横長画面に切り替わるとともに、仮想カメラ420の視界(視野角)を縦長のアスペクト比から横長のアスペクト比に切り替える。このとき、自キャラクタ710は、アスペクト比が変更された後の仮想カメラ420の視界の略中央に位置する。
また、仮想カメラ制御部194は、タッチスクリーン130に表示される画面が縦長画面から横長画面に切り替わるとともに、仮想カメラ840の視界も上記縦長のアスペクト比から上記横長のアスペクト比に切り替える。
当該アスペクト比の切り替えに応じて、オブジェクト制御部195は、独立部品の配置位置をアスペクト比を変更後の仮想カメラ840の視界に収まるように配置する。
(常時表示部品と一時表示部品)
図9は、ある実施形態に従う常時表示部品と一時表示部品とについて説明する図である。なお、図9において図7と同一符号を付している部分については同じであるため、その説明は繰り返さない。
状態(A)において、ユーザは、タッチスクリーン130上で指を左から右にスライドするドラッグ操作910を行なう。プロセッサ190は、移動操作検出部193としてユーザのドラッグ操作が示す方向を検出する。一例として、移動操作検出部193は、ユーザの操作をドラッグ操作と判別している場合に、ドラッグ操作の起点となるタッチ開始位置を起点とし、タッチスクリーン130がユーザの指などの接近を検出している位置(タッチ継続位置)を終点とするベクトル方向を検出する。プロセッサ190は、仮想カメラ制御部194およびオブジェクト制御部195として、移動操作検出部193が検出するベクトル方向、すなわち右方向に自キャラクタ710および仮想カメラ420を移動させる。一方、仮想カメラ制御部194は、独立部品を撮影する仮想カメラ840を移動操作検出部193が検出するベクトル方向に移動させない。これによりタッチスクリーン130に表示される画像は、状態(A)から状態(B)に遷移する。
状態(B)を参照して、自キャラクタ710が敵キャラクタ720および木730に対して右方向に移動しているのに対して、独立部品は移動していない。
次に状態(B)および(C)を参照して、常時表示部品740〜770と一時表示部品780とについて説明する。常時表示部品740〜770は、仮想カメラ420が撮影する画像の少なくとも一部がディスプレイ132に表示されている状態において、定常的にディスプレイ132に表示される。一方、一時表示部品780は、仮想カメラ420が撮影する画像の少なくとも一部がディスプレイ132に表示されている状態において、一時的にディスプレイ132に表示される。
状態(B)の状態から一定時間が経過すると、オブジェクト制御部195が、仮想空間830から一時表示部品780を消去する。そのため、状態(B)の状態から一定時間が経過した状態(C)において、一時表示部品780はタッチスクリーン130から消えている。
(縦長画面および横長画面における一時表示部品の表示位置)
次に、図10〜14を用いて、ディスプレイ132が縦長画面を表示しているときの一時表示部品の位置と、横長画面を表示しているときの一時表示部品の位置との相関関係について説明する。縦長画像は、仮想カメラ420と840とが縦長のアスペクト比で撮影する画像を重ね合わせた画像である。横長画像は、仮想カメラ420と840とが横長のアスペクト比で撮影する画像を重ね合わせた画像である。
図10は、ある実施形態に従う縦長画面および横長画面における一時表示部品780の位置関係について説明する図である。なお、図10において図7と同一符号を付している部分については同じであるため、その説明は繰り返さない。
状態(A)を参照して、タッチスクリーン130に縦長画面が表示されている状態において、オブジェクト制御部195は、自キャラクタ710の位置を基準に、一時表示部品780の配置位置を決定する。状態(A)に示される例において、オブジェクト制御部195は、一時表示部品780が自キャラクタ710から予め定められた方位γに予め定められた距離1010だけ離れた位置に表示されるように、仮想空間830に一時表示部品780を配置する。
状態(B)を参照して、タッチスクリーン130に横長画面が表示されている状態において、オブジェクト制御部195は、縦長画面表示時における一時表示部品780の配置条件と同じ条件で、仮想空間830に一時表示部品780を配置する。すなわち、オブジェクト制御部195は、一時表示部品780が自キャラクタ710から予め定められた方位γに予め定められた距離1010だけ離れた位置に表示されるように、仮想空間830に一時表示部品780を配置する。
上記によれば、ユーザが携帯端末10を傾けてタッチスクリーン130に表示される画面が縦長画面と横長画面との間で切り替わったとしても、縦長画面および横長画面における一時表示部品780と自キャラクタ710との位置関係が維持される。また、ユーザは、縦長画面および横長画面において、主にユーザの操作対象である自キャラクタ710付近を注目する。そのため、縦長画面と横長画面とが切り替わった場合であっても、ユーザの視界における自キャラクタ710と一時表示部品780との位置関係が維持される。これにより、ユーザは、携帯端末10を傾けて縦長画面と横長画面とを切り替えたときに、シームレスに一時表示部品780を認識できる。
図11は、他の実施形態に従う縦長画面および横長画面における一時表示部品780の位置関係について説明する図である。なお、図11において図7と同一符号を付している部分については同じであるため、その説明は繰り返さない。
状態(A)を参照して、タッチスクリーン130に縦長画面が表示されている状態において、オブジェクト制御部195は、タッチスクリーン130の長辺の長さを予め定められた割合で内分する位置に一時表示部品780が表示されるように制御する。状態(A)に示される例において、オブジェクト制御部195は、一時表示部品780がタッチスクリーン130の長辺方向に対して表示される位置1110によって内分される距離1120と距離1130との割合が予め定められた割合になるように、仮想空間830に一時表示部品780を配置する。
状態(B)を参照して、タッチスクリーン130に横長画面が表示されている状態においても、オブジェクト制御部195は、タッチスクリーン130の短辺の長さを上記予め定められた割合で内分する位置に一時表示部品780が表示されるように制御する。すなわち、オブジェクト制御部195は、一時表示部品780がタッチスクリーン130の短辺方向に対して表示される位置1150によって内分される距離1160と距離1170との割合が、距離1120と距離1130との割合と等しくなるように、仮想空間830に一時表示部品780を配置する。
上記によれば、タッチスクリーン130に表示される画面が縦長画面と横長画面との間で切り替わった場合でも、表示画面に対する一時表示部品780の相対的な位置があまり変わらない。そのため、ユーザは、携帯端末10を傾けて縦長画面と横長画面とを切り替えたときに、違和感なくシームレスに一時表示部品780を認識できる。
なお、上記の例では、オブジェクト制御部195は、縦長画面における一時表示部品780によって内分される上下の割合と横長画面における一時表示部品780によって内分される上下の割合が等しくなるように、一時表示部品780を配置する。他の局面において、オブジェクト制御部195は、縦長画面における一時表示部品780によって内分される左右の割合と横長画面における一時表示部品780によって内分される左右の割合が等しくなるように、一時表示部品780を配置してもよい。
図12は、さらに他の実施形態に従う縦長画面および横長画面における一時表示部品780の位置関係について説明する図である。なお、図12において図7と同一符号を付している部分については同じであるため、その説明は繰り返さない。
状態(A)を参照して、タッチスクリーン130に縦長画面が表示されている状態において、オブジェクト制御部195は、一時表示部品780が縦長画面の横方向における中央線1210から予め定められた距離1220の位置に表示されるように、仮想空間830に一時表示部品780を配置する。
状態(B)を参照して、タッチスクリーン130に横長画面が表示されている状態において、オブジェクト制御部195は、一時表示部品780が横長画面の横方向における中央線1230から予め定められた距離1220の位置に表示されるように、仮想空間830に一時表示部品780を配置する。
すなわち、オブジェクト制御部195は、縦長画面および横長画面において、横方向における中央線から等しい距離に一時表示部品780を配置する。
上記によれば、一時表示部品780は、横長画面において、縦長画面時の横幅を基準とした位置に配置される。そのため、ユーザは、携帯端末10を傾けて縦長画面と横長画面とを切り替えたときに、違和感なくシームレスに一時表示部品780を認識できる。
なお、上記の例では、一時表示部品780が、縦長画面時の横幅(短辺の長さ)を基準とした位置に一時表示部品780を配置する構成としたが、他の局面において、横長画面時の縦幅(短辺の長さ)を基準として一時表示部品780を配置する構成であってもよい。そこで、図13を用いて具体的に当該構成について説明する。
図13は、さらに他の実施形態に従う縦長画面および横長画面における一時表示部品780の位置関係について説明する図である。状態(A)および(B)を参照して、オブジェクト制御部195は、横長画面および縦長画面において、縦方向における中央線1310および1330それぞれから等しい距離1320に、一時表示部品780を配置する。
上記によれば、一時表示部品780は、縦長画面において、横長画面時の縦幅を基準とした位置に配置される。そのため、ユーザは、携帯端末10を傾けて縦長画面と横長画面とを切り替えたときに、違和感なくシームレスに一時表示部品780を認識できる。
図14は、さらに他の実施形態に従う縦長画面および横長画面における一時表示部品1420の位置関係について説明する図である。なお、図14において図7と同一符号を付している部分については同じであるため、その説明は繰り返さない。
状態(A)を参照して、タッチスクリーン130には、敵キャラクタのうち比較的強力なボスキャラクタ1410と、一時表示部品1420とが表示されている。一時表示部品1420は、例えば、ユーザにとってボスキャラクタ1410との戦いを有利に進めるためのメッセージである。
ある局面において、オブジェクト制御部195は、自キャラクタ710および仮想カメラ420を、ボスキャラクタ1410を中心に移動させる。より具体的には、移動操作検出部193が検出する右ベクトル方向1430に対して、オブジェクト制御部195は、自キャラクタ710および仮想カメラ420をボスキャラクタ1410を中心に反時計回りに移動させる。これにより、タッチスクリーン130には、常に自キャラクタ710およびボスキャラクタ1410が表示される。
ユーザは、ボスキャラクタ1410の動作に応じて、自キャラクタ710を操作する。このような状況において、独立部品がボスキャラクタ1410上に覆いかぶさって表示されることは好ましくない。そのため、一時表示部品1420は、タッチスクリーン130の端部に表示される。
状態(A)および(B)に示されるように、一時表示部品1420が縦長画面および横長画面における左右の端部に配置される場合、オブジェクト制御部195は、これら画面の上下方向における一時表示部品1420の配置位置が予め定められた条件を満たすように制御する。
図14の例において、オブジェクト制御部195は、縦長画面および横長画面において一時表示部品1420が配置される上下方向の位置1450および1470それぞれによって内分される上下の割合、すなわち、距離1460と距離1465との割合と、距離1480と距離1485との割合とが等しくなるように、一時表示部品1420を配置する。
上記によれば、オブジェクト制御部195は、縦長画面および横長画面において、一時表示部品1420とボスキャラクタ1410とが重なる部分を最小限に抑えつつ、一時表示部品1420の表示位置の一貫性を担保できる。そのため、ユーザは、携帯端末10を傾けて縦長画面と横長画面とを切り替えたときに、一時表示部品1420によってボスキャラクタ1410の動作確認を邪魔されることなく、かつ、違和感なくシームレスに一時表示部品1420を認識できる。
なお、他の局面において、オブジェクト制御部195は、縦長画面および横長画面において、画面の上下方向における中央線から等しい距離に一時表示部品1420を配置する構成であってもよい。
図10〜14では縦長画面および横長画面における一時表示部品の配置位置について説明したが、常時表示部品についても同様に配置し得る。これにより、ユーザは、携帯端末10を傾けて縦長画面と横長画面とを切り替えたときに、シームレスに常時表示部品を認識できる。
図15は、上記一連の縦長画面および横長画面を切り替えるとき制御について説明するフローチャートである。図15に示される処理は、プロセッサ190が記憶部150に格納されるゲームプログラム151を実行することにより実現される。また、図15に示される処理は、仮想カメラ420および830の撮影する画像がタッチスクリーン130に表示されているときに実行される。
ステップS1510において、プロセッサ190は、加速度センサ185の検出する傾きが属する範囲が切り替わった否かを判断する。一例として、加速度センサ185は、重力方向に対するタッチスクリーン130の長手方向の角度(0〜180度)を検出する。プロセッサ190は、当該角度が45度以下、および135度よりも大きい範囲と、45度よりも大きく135度以下の範囲との間で切り替わったか否かを判断する。
プロセッサ190は、加速度センサ185の検出する傾きが属する範囲が切り替わったと判断した場合(ステップS1510においてYES)、処理をステップS1520に進める。そうでない場合(ステップS1510においてNO)、プロセッサ190は処理をステップS1510に戻す。
ステップS1520において、プロセッサ190は、仮想カメラ制御部194として、仮想カメラ420および840の視界のアスペクト比を変更する。一例として、ステップS1510で加速度センサ185が検出する傾きが属する範囲が、45度よりも大きく135度以下の範囲に切り替わった場合、仮想カメラ制御部194は、仮想カメラ420および840の視界のアスペクト比を縦長のアスペクト比から横長のアスペクト比に変更する。
ステップS1530において、プロセッサ190は、オブジェクト制御部195として、仮想空間830に配置される独立部品の配置位置を変更する。このとき、オブジェクト制御部195は、ある独立部品について、仮想カメラ420が縦長のアスペクト比で撮影する画像に対して重ね合わせられる位置および、横長のアスペクト比で撮影する画像に対して重ね合わせられる位置がそれぞれ、上記説明した共通する予め定められた条件を満たすように、配置位置を変更する。
ステップS1540において、プロセッサ190は、表示制御部196として、タッチスクリーン130に表示される画面を回転させる。これにより、タッチスクリーン130に表示される画面が縦長画面と横長画面との間で切り替わる。その後、プロセッサ190は、処理をステップS1510に戻す。
なお、他の局面において、ステップS1520と、ステップS1530と、ステップS1540とは、任意の順番に入れ替えられてもよい。
上記によれば、タッチスクリーン130に表示される画面が縦長画面と横長画面との間で切り替わったとしても、独立部品は、縦長画面および横長画面において、共通する予め定められた条件に従って配置される。そのため、独立部品は、縦長画面および横長画面において、似たような位置に配置される。その結果、ユーザは、ユーザは、携帯端末10を傾けて縦長画面と横長画面とを切り替えたときに、シームレスに独立部品を認識できる。換言すれば、ゲームプログラム151は、縦長画面と横長画面との切り替え時にユーザに違和感を抱かせないことにより、ユーザのゲームへの没入感をより向上し得る。
今回開示された実施形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。