以下、図面を参照しつつ、本開示の一実施形態について説明する。以下の説明では、同一の部品又は構成要素には同一の符号が付される。それらの名称及び機能は同一である。したがって、それらについての詳細な説明は繰り返さない。
[技術思想]
ゲームの一例として、ユーザによる入力操作に応じて、キャラクタがゲームの仮想空間を移動したり、ゲームの仮想空間に配置された敵キャラクタと交戦したりするゲームがある。ユーザは、キャラクタを直接的に動かす(操作する)ことができる。このため、ユーザの思うままにキャラクタを動作させることにより、ユーザは、キャラクタとの一体感を感じることができる。また、ユーザは、ユーザ自身では到底できない動きをキャラクタにさせることにより、爽快感を得ることもできる。このため、キャラクタを直接的に動かすゲームにおいては、キャラクタの操作性が重要になる。
さらに、スマートフォンなどのタッチスクリーンを備える情報処理装置がゲームプログラムを実行する場合、タッチスクリーンにはゲームの画面が表示される。情報処理装置は、ゲームの画面上でユーザによる入力操作を受け付ける。ユーザによる入力操作には、タッチスクリーン上で指をドラッグさせる操作などが含まれる。ところで、タッチスクリーンは、操作ボタンなどを備えた一般的なコントローラと比べると入力操作のバリエーションが少ない。このため、キャラクタの操作(動き)に幅を出すことが難しく、上述した一体感や爽快感を得にくいという問題がある。本実施形態は、ユーザによる入力操作に応じてゲームのキャラクタを動作させるためにコンピュータによって実行される情報処理方法、情報処理装置、及び、情報処理プログラムに関連し、上述した課題の少なくとも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は、ゲームプログラムを読み込んで実行することにより、サーバ20と通信接続し、ゲームの進行に応じてゲームに関連するデータをサーバ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のユーザを識別する情報、マルチプレイ時に協働してゲームをプレイする他のユーザを識別する情報、その他の情報を含む。その他の情報は、例えば、タッチパネル131の履歴データなどを含む。履歴データは、タッチパネル131の操作履歴である。
制御部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で指を弾くような操作である。
入力操作受付部191は、所定期間のユーザの入力操作の判別結果を記憶部150に操作履歴として記憶する。入力操作受付部191により行われる入力操作の種類を検知する詳細な処理は、後述する。
ゲーム進行処理部192は、ユーザの操作に応じて、各種のプログラムを呼び出すなどによりゲームを進行させる処理を行う。例えば、ゲーム進行処理部192は、サーバ20と通信し、ゲームの進行に応じてサーバ20へデータを送信する処理、サーバ20からゲームに関連するデータを受信する処理、ゲームの進行に応じてユーザに報酬を付与する処理、時間の経過を計測する処理、その他の処理を行う。
移動方向検出部193は、タッチスクリーン130に対するユーザの入力操作が移動操作である場合、ゲームに登場するキャラクタであるゲームキャラクタを移動させる入力操作の操作内容を検出する。移動操作とは、ゲームキャラクタの移動方向を指示する入力操作であり、方向性のある操作である。移動操作の一例としては、所定条件下のドラッグ操作又はフリック操作である。例えばゲームプログラム151がアクションゲームである場合、移動方向検出部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に出力する。表示制御部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の構成を説明してきた。本実施形態において、ゲームプログラム151は、例えばアクションゲームであり、仮想空間内の仮想カメラの配置及び撮影方向に応じた画像をタッチスクリーン130に表示させることでゲームを進行させる。
例えば、ゲームプログラム151がアクションゲームである場合、ゲーム進行処理部192は、ユーザの操作に応じてストーリーを進行させ、画像、テキストなどディスプレイ132に表示するデータを決定する処理、交戦相手又は仲間の選択をユーザから受け付ける処理、ユーザの操作に応じてアクションゲームを進める処理などの基本的な処理を行う。
例えば、ゲームプログラム151がアクションゲームである場合、カメラ配置制御部194は、アクションゲームを行うための仮想空間における仮想カメラの配置位置及び撮影方向を、アクションゲームの進展に応じて、逐次、決定する。カメラ配置制御部194は、仮想カメラのカメラワークを制御する。カメラ配置制御部194の詳細な処理は、後述する。
例えば、表示制御部196は、ゲームキャラクタを一定領域に表示させるよう仮想カメラを配置した状態で、ゲームキャラクタに第1の動作(例えば、移動動作)を行わせるための入力操作を受け付けて、受け付けた入力操作に応じてゲームキャラクタに第1の動作を行わせる画面表示をする。
[動作]
図面を参照して、実施形態のゲーム提供システム1を構成する各装置の動作を説明する。
(入力操作の検知)
図4は、入力操作受付部191が入力操作の種類を検知する処理を説明する図である。図4の例では、ユーザ情報153を記憶する記憶部150の配列fp[0]〜配列fp[10]までの11個の配列のそれぞれに、タッチパネル131により検知されたタッチスクリーン130上の位置を示す履歴情報が格納されている。履歴情報は、所定の期間毎(例えば、フレームレート毎)に履歴情報テーブルに格納される。履歴情報が格納される配列の個数は限定されず、任意の個数であってよい。また、履歴情報テーブルでは、タッチオフからタッチオンになった場合に検知された履歴情報を、初期位置座標として記憶部150に記憶してもよい。
図4に示されるように、例えば、配列fp[0]〜配列fp[9]に、履歴情報(x0、y0)が格納されており、配列fp[10]にnull値が格納された場合、入力操作受付部191は、入力操作はタップ操作であると判別する。また、例えば、タッチナウ状態において履歴情報が変化した後に、null値が格納された場合、入力操作受付部191はnull値が格納された配列fp[5]の直前の配列fp[3]および配列fp[4]に格納されている履歴情報を参照する。そして、入力操作受付部191は、配列fp[3]および配列fp[4]の履歴情報がそれぞれ示す位置の間の距離が予め設定された閾値以上である場合、入力操作はフリック操作であると判別する。また、入力操作受付部191は、タッチナウ状態において履歴情報が変化した後に、例えば配列fp[4]〜fp[10]に履歴情報(x15、y15)が格納された場合、入力操作はドラッグ操作であると判別する。
(移動方向の検知)
図5は、移動方向検出部193がユーザの入力操作に応じてゲームキャラクタを移動させる方向を検出する処理を説明する図である。移動方向検出部193は、ユーザがタッチスクリーン130を押していない状態から、指などをタッチパネル131に接近させてタッチスクリーン130を押した位置(初期タッチ位置)を起点と設定する。入力操作受付部191は、ユーザの操作をドラッグ操作と判別している場合に、起点となる座標と、タッチスクリーン130がユーザの指などの接近を検出している座標とに基づいて、ゲームキャラクタを移動させる方向を検出する。
図5の状態(A)は、タッチスクリーン130からユーザの指が離れた状態から、ユーザが指をタッチスクリーン130に接近させた状態を示す。入力操作受付部191は、ユーザの指がタッチパネル131に接近したことを検出し、検出した座標を初期タッチ位置として記憶部150にユーザ情報153として保持する。
図5の例では、記憶部150が保持する初期タッチ位置の座標を、初期タッチ位置座標155として示す。入力操作受付部191は、タッチスクリーン130の検出結果(ユーザの指がタッチスクリーン130に接近している座標、及び、ユーザの指がタッチスクリーン130に接近していることを検出していないこと(検出結果「null」))を、一定フレーム分、ユーザ情報153としてバッファメモリに格納する。バッファメモリは、タッチスクリーン130における検出結果を、各フレームについて一定フレーム分(図5の例では、配列fp〔0〕〜配列fp〔10〕までの11フレーム分)、格納することができる。バッファメモリは、例えばリングバッファとして実現することができる。
図5の状態(A)の例では、ユーザがタッチスクリーン130を押した位置を、押下位置30A(タッチスクリーン130の座標(x0,y0))として示す。
図5の状態(B)は、ユーザがタッチスクリーン130に対してドラッグ操作を行って、タッチスクリーン130に対する押下位置を、押下位置30Aから押下位置30B(タッチスクリーン130の座標(x9,y9))まで10フレーム(配列fp〔0〕〜配列fp〔9〕までの10フレーム分)で移動させたことを示す。入力操作受付部191は、タッチスクリーン130の検出結果をユーザ情報153としてバッファメモリに格納し、バッファメモリに保持される値を参照して、タッチスクリーン130に対するユーザの操作をドラッグ操作と判別する。
図5の状態(C)は、ユーザがタッチスクリーン130を押している位置を、押下位置30Bから押下位置30C(タッチスクリーン130の座標(x14,y14))まで、5フレーム(配列fp〔10〕、fp〔0〕、fp〔1〕、fp〔2〕、fp〔3〕の5フレーム分)で移動させたことを示す。
図5の状態(D)は、移動方向検出部193が、状態(B)及び状態(C)のそれぞれにおいて、ユーザがゲームキャラクタを移動させる方向を指定する入力操作の検出結果を示す。移動方向検出部193は、バッファメモリにおいて、タッチスクリーン130が検出する押下位置の座標を書き込む対象となるメモリ領域がいずれであるかを示す情報(バッファメモリの書き込み位置)を管理している。
図5の状態(B)において、移動方向検出部193は、入力操作受付部191の判別結果に基づいて、初期タッチ位置を示す座標31A(座標(x0,y0))から座標31B(座標(x9,y9))までユーザがドラッグ操作を行ったことを検出する。移動方向検出部193は、初期タッチ位置の座標31Aを起点として、座標31Aと座標31Bとによって規定されるベクトル32B((y9−y0)/(x9−x0))を、ゲームキャラクタを移動させる方向として検出する。
図5の状態(C)において、移動方向検出部193は、入力操作受付部191の判別結果に基づいて、座標31B(座標(x9,y9))から座標31C(座標(x14,y14))までユーザがドラッグ操作を行ったことを検出する。移動方向検出部193は、初期タッチ位置の座標31Aを起点として、座標31Aと座標31Cとによって規定されるベクトル32C((y14−y0)/(x14−x0))を、ゲームキャラクタを移動させる方向として検出する。
このように、移動方向検出部193は、ユーザの指が接近していない状態からタッチスクリーン130に接近したことを検出した第1のタッチ位置から、接近していることを検出したまま第2のタッチ位置へ検出位置が移動した場合に、接近していることを検出している間、第1のタッチ位置を起点とし第2のタッチ位置へ向かう方向である操作方向を、ゲームキャラクタCA1の仮想空間における移動方向として決定する。
(仮想カメラの制御)
図6は、カメラ配置制御部194が仮想カメラVCを制御する処理を説明する図である。図6では、仮想カメラVCがゲームキャラクタCA1を背後から追尾するカメラワークを説明する。図6の状態(A)では、ゲームキャラクタCA1が方向D1(移動方向)に向かって移動する様子が示されている。例えば、入力操作受付部191がユーザによる入力操作をドラッグ操作と判定し、移動方向検出部193がゲームキャラクタCA1の移動方向を方向D1と検出したとき、オブジェクト制御部195は、ゲームキャラクタCA1の正面を方向D1に向け、ゲームキャラクタCA1を方向D1へ移動させる。カメラ配置制御部194は、ゲームキャラクタCA1の背後から追尾するように、仮想カメラVCの配置位置及び撮影方向を制御する。ゲームキャラクタCA1の背後から追尾する場合、カメラ配置制御部194は、撮影方向DVとゲームキャラクタCA1の向き(方向D1)とがなす角度θ1(対応関係)は0°となる。カメラ配置制御部194は、カメラ視界の中央付近にゲームキャラクタCA1が表示されるように、仮想カメラVCを配置する。
図6の状態(B)では、ユーザによるドラッグ操作により移動方向が方向D1から方向D2へ変更された様子を示す。この場合、オブジェクト制御部195は、ゲームキャラクタCA1の正面を方向D2に向け、ゲームキャラクタCA1を方向D2へ移動させる。このとき、カメラ配置制御部194は、撮影方向DVとゲームキャラクタCA1の向き(方向D1)とがなす角度θ1(対応関係)が0°となるように、仮想カメラVCの配置位置及び撮影方向DVを変更する。なお、カメラ配置制御部194は、変化前後の移動方向の変化角度θ2を検出し、検出された変化角度θ2を仮想カメラVCの変化角度θ3としてもよい。
このように、カメラ配置制御部194は、ユーザによる入力操作に応じて移動方向が変化するゲームキャラクタCA1を背後から追尾するようなカメラワークを提供する。
(移動操作時の画面例)
図7は、ユーザによる入力操作に応じて変化するカメラワーク及び操作オブジェクトを説明する図である。画面例(A)〜画面例(C)は、タッチスクリーン130に表示された画像である。画面例(A)〜画面例(C)では、表示制御部196が、カメラ配置制御部194によりゲームキャラクタCA1の背後から撮影された画像を、タッチスクリーン130に表示させている。入力操作受付部191によりユーザによる入力操作が受け付けられたとき、オブジェクト制御部195は、ユーザの入力操作に応じて操作オブジェクトを生成する。表示制御部196は、仮想カメラVCにより撮影された画像上に操作オブジェクトを重畳させて、タッチスクリーン130に表示させる。
図7の画面例(A)は、ユーザがタッチスクリーン130に指などを接近させた操作をしたときの画面の一例である。入力操作受付部191によりユーザがタッチスクリーン130の第1位置300Aに指などを接近させた操作をしたと判定されたとき、オブジェクト制御部195は、入力操作に応答して円形の操作オブジェクト300を生成する。表示制御部196は、生成された円形の操作オブジェクト300をタッチ位置である第1位置300Aに表示させる。図7の画面例(A)では、撮影方向を方向VD1、ゲームキャラクタCA1の向きを方向CD1で示している。撮影方向である方向VD1とゲームキャラクタCA1の向きである方向CD1の対応関係(なす角度)は0°である。
図7の画面例(B)は、図7の画面例(A)の第1位置300Aを起点としてユーザがドラッグ操作をしたときの画面の一例である。入力操作受付部191は、起点である第1位置300Aから終点である第2位置300Bまでのドラッグ操作を受け付ける。入力操作受付部191によりドラッグ操作が受け付けられた場合、オブジェクト制御部195は、ドラッグ操作の操作結果を示す操作オブジェクト300を生成する。ドラッグ操作の操作結果を示す操作オブジェクト300は、ドラッグ操作の起点となる位置と終点となる位置とを関連付けることで、操作結果(例えば操作方向)を表現する。図7の画面例(B)の例では、オブジェクト制御部195は、起点及び終点に対応する位置に操作オブジェクト300の端部がそれぞれ位置するように、第1位置300Aから第2位置300Bに至るまで引き延ばされた操作オブジェクト300を生成している。表示制御部196は、引き延ばされた操作オブジェクト300をタッチスクリーン130に表示させる。この状態における操作方向及び撮影方向が図示されている。操作方向は方向SD1(図中右上方向)であり、撮影方向は方向VD1(図中上方向)である。方向SD1と方向VD1とのなす角はθ4である。
さらに、移動方向検出部193は、ドラッグ操作が受け付けられた場合、ゲームキャラクタCA1の移動方向を、操作方向である方向SD1と同一の方向に決定する。オブジェクト制御部195は、ゲームキャラクタCA1を移動方向に向け、移動を開始させる。
図7の画面例(B)においてゲームキャラクタCA1の向きが変更されると、カメラ配置制御部194は、ゲームキャラクタCA1の背後を追尾するように仮想カメラVCの配置位置及び撮影方向を制御する。具体的には、方向SD1と方向VD1とのなす角であるθ4分だけ、撮影方向が注視点(ゲームキャラクタCA1)を中心として右回転する。さらに、仮想カメラVCの配置位置は、ゲームキャラクタCA1又は移動目的地が画面の中央にくるように制御される。これにより、タッチスクリーン130に表示される画像は、画面例(B)から画面例(C)へ遷移する。
このように、ユーザによる入力操作に応じてゲームキャラクタを背後から追尾するカメラワークが実行されるため、臨場感のあるゲームが提供される。また、操作方向が画面上に示されることにより、ユーザにとって理解し易いゲームが提供される。
(キャラクタユニットの構成時の画面例)
本実施形態に係るゲームにおいては、複数のゲームキャラクタが関連付けられたキャラクタユニットを操作することができる。例えば、携帯端末10のゲーム情報152又はサーバ20のゲーム情報252は、ゲームキャラクタと、当該ゲームキャラクタとユニット化が可能な1又は複数の他のゲームキャラクタとが関連付けられたユニットテーブルを含む。オブジェクト制御部195は、入力操作受付部191によりユーザがキャラクタユニットを構成することを指示したときに、ユニットテーブルを参照してキャラクタユニットを構成する。
図8は、キャラクタユニットの構成の一例を説明する図である。画面例(A)及び画面例(B)は、タッチスクリーン130に表示された画像である。図8の画面例(A)は、ゲームキャラクタCA1(第一キャラクタの一例)がゲーム空間内のフィールド上に起立している状態の画面である。タッチスクリーン130の右下には、3つの操作アイコンIC1〜IC3が表示されている。第一操作アイコンIC1及び第二操作アイコンIC2は、キャラクタユニットの構成を指示する入力操作を受け付けるためのアイコンである。第一操作アイコンIC1は、他のゲームキャラクタであるドラゴンとユニットを組むためのアイコンである。第二操作アイコンIC2は、他のゲームキャラクタであるゴーレムとユニットを組むためのアイコンである。第三操作アイコンIC3は、キャラクタユニットを解除するためのアイコンである。操作アイコンIC1及び操作アイコンIC2は、上述したユニットテーブルに基づいて表示される。
図8の画面例(A)の状態で、ユーザがタップ操作により第一操作アイコンIC1を選択すると、画面例(A)から画面例(B)に画面が遷移する。図8の画面例(B)は、ゲームキャラクタCA1がゲームキャラクタCA2(第二キャラクタの一例)に乗った状態の画面である。図示されるように、ゲームキャラクタCA1とゲームキャラクタCA2とによってキャラクタユニットCU1が構成される。なお、図8の画面例(B)はキャラクタユニットの一例であり、これに限定されない。ユニット化するキャラクタユニットは、一体的に移動可能なものであればよく、他のモンスター、人物、動物、車両や飛行機などの乗り物と構成してもよい。2つの人型のゲームキャラクタの例では、隊列を組んだり、手を繋いだりすることにより、キャラクタユニットを構成することができる。人型のゲームキャラクタと乗り物のゲームキャラクタとの例では、人型のゲームキャラクタが乗り物に乗り込むことにより、キャラクタユニットを構成することができる。
図8の画面例(B)の状態で、ユーザがタップ操作により第三操作アイコンIC3を選択すると、キャラクタユニットCU1が解除され、画面例(B)から画面例(A)に画面が遷移する。
(キャラクタユニット構成のフローチャート)
図9は、キャラクタユニットの構成処理を説明するフローチャートである。図9のフローチャートは、制御部190がゲームプログラム151を実行することによりアクションゲームを進行させる処理を示すフローチャートである。以下では、ゲームキャラクタCA1とドラゴンのゲームキャラクタCA2とがキャラクタユニットを構成する一例を説明する。
ステップS10において、制御部190は、入力操作が受け付けられたか否かを判定する。
入力操作が受け付けられたと判定されると(ステップS10:YES)、ステップS12において、制御部190は、キャラクタユニットを構成中であるか否かを判定する。制御部190は、例えば、ゲームキャラクタCA1が図8の画面例(A)に対応する状態の場合には「0」、ゲームキャラクタCA1が図8の画面例(B)に対応する状態の場合には「1」となるユニットフラグを参照して、キャラクタユニットを構成中であるか否かを判定する。制御部190は、キャラクタユニットの構成時又は解除時にユニットフラグを更新する。
キャラクタユニットを構成中でないと判定されると(ステップS12:NO)、ステップS14において、制御部190は、入力操作がドラゴンに乗る操作であるか否かを判定する。制御部190は、一例として、入力操作が、図8の画面例(A)において表示された操作アイコンIC1を選択するタップ操作であるか否かを判定する。
入力操作がドラゴンに乗る操作であると判定されると(ステップS14:YES)、ステップS16(構成ステップの一例)において、制御部190のオブジェクト制御部195は、ゲームキャラクタCA1とドラゴンのゲームキャラクタCA2とでキャラクタユニットCU1を構成する。オブジェクト制御部195は、ユニットテーブルを参照して、ゲームキャラクタCA1とドラゴンのゲームキャラクタCA2とが関連付けられたキャラクタユニットを構成する。制御部190の表示制御部196は、構成されたキャラクタユニットCU1をタッチスクリーン130に表示させる(図8の画面例(B)に対応する)。
入力操作がドラゴンに乗る操作でないと判定されると(ステップS14:NO)、ステップS18において、制御部190は、入力操作に応じた動作をゲームキャラクタCA1に実行させる。例えば、タップ操作であれば、攻撃対象を決定し、ゲームキャラクタCA1に攻撃動作を実行させる。
一方、キャラクタユニットを構成中であると判定されると(ステップS12:YES)、ステップS20において、制御部190は、入力操作がドラゴンから降りる操作であるか否かを判定する。制御部190は、一例として、入力操作が、図8の画面例(A)において表示された操作アイコンIC3を選択するタップ操作であるか否かを判定する。
入力操作がドラゴンから降りる操作であると判定されると(ステップS20:YES)、ステップS22において、制御部190のオブジェクト制御部195は、ゲームキャラクタCA1とドラゴンのゲームキャラクタCA2とのキャラクタユニットCU1を解除する。制御部190の表示制御部196は、キャラクタユニットCU1の表示を終了し、ゲームキャラクタCA1をタッチスクリーン130に表示させる(図8の画面例(A)に対応する)。
入力操作がドラゴンから降りる操作でないと判定されると(ステップS20:NO)、ステップS24において、制御部190は、入力操作に応じた動作をキャラクタユニットCU1に実行させる。例えば、タップ操作であれば、攻撃対象を決定し、キャラクタユニットCU1に攻撃動作を実行させる。
入力操作が受け付けられていないと判定された場合(ステップS10:NO)、ステップS16、ステップS18、又は、ステップS24が終了した場合には、図9に示されるフローチャートは終了する。そして、制御部190は、所定の条件が満たされるまで図9に示されるフローチャートを最初から実行する。以上で、キャラクタユニットの一連の構成処理が終了する。
(キャラクタユニットの操作)
キャラクタユニットは、所定条件(操作条件)が満たされた場合を除き、図7に示されるような単体のゲームキャラクタと同一の手法で操作することができる。
図10は、キャラクタユニットの動作の第一態様及び第二態様の一例を説明する図である。画面例(A)及び画面例(B)は、タッチスクリーン130に表示された画像である。図10の画面例(A)は、ユーザがタッチスクリーン130に対してドラッグ操作を行ったときの画面の一例である。オブジェクト制御部195は、起点及び終点に対応する位置に操作オブジェクト300の端部がそれぞれ位置するように、第1位置300Aから第2位置300Bに至るまで引き延ばされた操作オブジェクト300を生成する。ユーザによる移動操作に応じて、キャラクタユニットCU1は、操作方向SD2に向けてフィールド上を走行するように移動する。以下では、走行する移動態様を第一態様ともいう。キャラクタユニットCU1をフィールド上で走行させるこのような移動操作は、単一のキャラクタを操作する場合と同一の操作となる。
キャラクタユニットCU1は、所定条件(操作条件)が満たされた場合には、第一態様とは異なる態様で移動する。所定条件は、入力操作に関連して予め定められた条件である。所定条件は、一例として、キャラクタユニットCU1がフィールド上を非戦闘状態で所定時間継続して走行した場合に満たされる。図10の画面例(B)は、図10の画面例(A)の走行状態が所定時間継続したときの画面の一例である。図10の画面例(B)に示されるように、フィールド上を走行していたキャラクタユニットCU1は、走行しながら翼を羽ばたかせ、空中を飛行する。以下では飛行する移動態様を第二態様ともいう。飛行状態となったキャラクタユニットCU1は、フィールド上を走行する場合と比べて移動速度が速くなる。このような操作態様の遷移は、ユーザによる移動操作であるドラッグ操作が継続した状態で発生する。つまり、ユーザが同一の移動操作をし続けるだけで、キャラクタ移動の操作が変更される。このように、操作方法を変更することなくキャラクタの動作が変更されるため、ユーザは複雑な操作方法を理解する必要がない。このため、ユーザは操作そのものに集中する必要もなくなることからキャラクタとの一体感を得やすい。
図11は、キャラクタユニットの動作の第二態様の一例を説明する図である。画面例(A)及び画面例(B)は、タッチスクリーン130に表示された画像である。図11の画面例(A)は、キャラクタユニットCU1が飛行状態(図10の画面例(B))のときに、ユーザがタッチスクリーン130に対してドラッグ操作の終端位置を変更したときの画面の一例である。図11の画面例(A)に示されるように、オブジェクト制御部195は、起点及び終点に対応する位置に操作オブジェクト300の端部がそれぞれ位置するように、第1位置300Aから第2位置300Bに至るまで引き延ばされた操作オブジェクト300を生成する。ユーザによる移動操作に応じて、キャラクタユニットCU1は、操作方向SD3に向けて飛行する。このとき、キャラクタユニットCU1がユーザによる移動操作に応じて傾く。例えば、キャラクタユニットCU1は、その正面方向を回転軸として回転する。図中では回転方向SD4に傾いている。回転方向は、ユーザによる入力操作による操作方向によって決定される。例えば、右方向への移動操作である場合には右回転となり、左方向への移動操作である場合には左回転となる。また、回転量は、ユーザによる入力操作による操作量によって決定される。例えば、ユーザによる入力操作による操作方向の角度変化量が大きいほど回転量が大きくなる。したがって、ユーザが素早く操作方向を変更した場合には、キャラクタユニットCU1が大きく傾くことになる。キャラクタユニットCU1が大きく傾いた場合、ドラゴンの翼がフィールドに接触し、飛行状態が解除される。つまり、所定角度以上の変化が伴う方向転換をした場合、飛行状態が解除される。この場合、図10の画面例(A)に遷移する。ユーザは、所定角度以上の変化が伴う方向転換が飛行状態では禁止されていることをドラゴンの翼の接触で知ることができる。したがって、ユーザは飛行状態で許容される操作範囲を学習することができる。
図11の画面例(B)は、キャラクタユニットCU1が飛行状態のときに敵キャラクタと接触したときの画面の一例である。図11の画面例(B)に示されるように、オブジェクト制御部195は、起点及び終点に対応する位置に操作オブジェクト300の端部がそれぞれ位置するように、第1位置300Aから第2位置300Bに至るまで引き延ばされた操作オブジェクト300を生成する。ユーザによる移動操作に応じて、キャラクタユニットCU1は、操作方向に向けて飛行する。キャラクタユニットCU1の進行方向には、敵キャラクタCA3が多数存在する。敵キャラクタCA3には、体力値である「HP」がそれぞれ割り当てられており、対応するゲージで表示されている。飛行中のキャラクタユニットCU1が敵キャラクタと接触した場合、キャラクタユニットCU1よりも能力の劣る敵キャラクタCA3(いわゆる「雑魚キャラ」)であれば、蹴散らすことができる。具体的な一例として、キャラクタユニットCU1は、敵キャラクタCA3と接触した場合には、接触した敵キャラクタCA3を蹴散らすとともに、当該敵キャラクタCA3の体力値である「HP」を減少させる。図中では、蹴散らされた敵キャラクタCA3の「HP」ゲージが0(ここでは空白)になっている。このように、ユーザは、フィールド走行時と比べて速い移動速度で操作対象を移動させながら、移動操作だけで敵キャラクタを一掃することができるため、十分な爽快感を得ることができる。
図12は、キャラクタユニットの動作の第二態様の一例を説明する図である。画面例(A)及び画面例(B)は、タッチスクリーン130に表示された画像である。図12の画面例(A)に示されるように、オブジェクト制御部195は、起点及び終点に対応する位置に操作オブジェクト300の端部がそれぞれ位置するように、第1位置300Aから第2位置300Bに至るまで引き延ばされた操作オブジェクト300を生成する。ユーザによる移動操作に応じて、キャラクタユニットCU1は、操作方向に向けて飛行する。キャラクタユニットCU1の進行方向には、大型の敵キャラクタCA4が存在する。敵キャラクタCA4には、体力値である「HP」が割り当てられており、対応するゲージで表示されている。飛行中のキャラクタユニットCU1は、接触した相手がキャラクタユニットCU1よりも能力の高い敵キャラクタCA4(いわゆる「ボスキャラ」)の場合には、接触後に後退し(ノックバック)、飛行状態が解除される(図12の画面例(B))。このように、飛行状態が無敵状態ではないことにより、ユーザは飛行時において接触すべき敵キャラクタの選択に迫られるため、ゲーム性が向上する。
(移動操作時のフローチャート)
図13は、移動操作時の処理を説明するフローチャートである。図13のフローチャートは、制御部190がゲームプログラム151を実行することによりアクションゲームを進行させる処理を示すフローチャートである。なお、フィールド上を走行により移動する処理は、ゲームキャラクタCA1及びキャラクタユニットCU1それぞれ同一の処理となる。このため、走行により移動する処理については、ゲームキャラクタCA1を例にして説明する。
ステップS30において、制御部190は、入力操作が受け付けられたか否かを判定する。
入力操作が受け付けられたと判定されると(ステップS30:YES)、ステップS32において、制御部190は、初期タッチ位置に操作オブジェクトを表示させる(図7の画面例(A)に対応する)。オブジェクト制御部195は、入力操作に応答して円形の操作オブジェクト300を生成する。表示制御部196は、生成された円形の操作オブジェクト300をタッチ位置である第1位置300Aに表示させる。初期タッチ位置は、操作方向を決定する起点(操作オブジェクトの端部位置)の初期値となる。
ステップS34において、制御部190は、入力操作がドラッグ操作であるか否かを判定する。制御部190は、タッチスクリーン130の履歴情報を用いて、ドラッグ操作であるか否かを判定する(図4参照)。
入力操作がドラッグ操作であると判定されると(ステップS34:YES)、ステップS36において、制御部190は、起点(第1位置300A)からドラッグ方向(方向SD1)へ伸びる操作オブジェクト300を表示させる(図7の画面例(B)に対応する)。制御部190は、タッチスクリーン130の履歴情報を用いて、操作オブジェクト300を生成して、タッチスクリーン130に表示させる。
ステップS38において、制御部190は、ゲームキャラクタCA1又はキャラクタユニットCU1を移動させる処理を行う。この処理については後述する。
ステップS40において、制御部190は、ドラッグ操作が完了したか否かを判定する。ドラッグ操作が完了していないと判定されると(ステップS40:NO)、制御部190は、上述したステップS36及びステップS38を再実行する。これにより、ユーザの指が接近していることをタッチスクリーン130が検出している間、つまり、ドラグ操作が継続されている間、操作オブジェクトが表示され、ゲームキャラクタCA1又はキャラクタユニットCU1が移動することになる。
ドラッグ操作が完了したと判定されると(ステップS40:YES)、ステップS42として、制御部190は、ゲームキャラクタCA1又はキャラクタユニットCU1の移動を終了する。そして、ステップS44として、制御部190は、操作オブジェクト300の表示を終了する。
一方、入力操作がドラッグ操作でないと判定されると(ステップS34:NO)、ステップS46において、制御部190は、入力操作に応じた動作をゲームキャラクタCA1に実行させる。例えば、タップ操作であれば、攻撃対象を決定し、ゲームキャラクタCA1又はキャラクタユニットCU1に攻撃動作を実行させる。そして、ステップS44として、制御部190は、操作オブジェクト300の表示を終了する。
入力操作が受け付けられていないと判定された場合(ステップS30:NO)、又は、操作オブジェクト300の表示を終了した場合には、図13に示されるフローチャートは終了する。そして、制御部190は、所定の条件が満たされるまで図13に示されるフローチャートを最初から実行する。
(移動処理の詳細:移動態様の切り替え処理)
続いて、ステップS38の移動処理について、図14〜図16に示されるフローチャートを用いて説明する。最初に、移動態様を変化させる処理について説明する。図14は、移動操作時の処理を説明するフローチャートである。図14のフローチャートは、図13のステップS38の移動処理の一部であり、ドラッグ操作が継続されている状態における制御部190による処理を示すフローチャートである。
ステップS50(操作判定ステップの一例)において、制御部190は、飛行フラグが「1」であるか否かを判定する。飛行フラグは、キャラクタユニットCU1を飛行させる条件が満たされたときに「1」、キャラクタユニットCU1を飛行させる条件が満たされていないときに「0」となるフラグである。飛行フラグの更新については後述する。
飛行フラグが「1」であると判定されると(ステップS50:YES)、ステップS52(第二進行ステップの一例)において、制御部190は、キャラクタユニットCU1を飛行させる。制御部190は、タッチスクリーン130の履歴情報を用いて、ドラッグ操作のドラッグ方向(操作方向SD2)及び操作角度変化量を検出する(図10参照)。そして、制御部190は、ドラッグ操作の操作方向及び操作角度変化量に基づいて、キャラクタユニットCU1の移動方向及び傾きを決定する。そして、制御部190は、キャラクタユニットCU1をドラッグ方向へ飛行させながら移動させる(図10の画面例(B)及び図11の画面例(A)に対応する)。飛行による移動態様を第二態様ともいう。
ステップS54において、制御部190は、仮想カメラVCの撮影方向をキャラクタユニットCU1の向きと一致させる。
一方、飛行フラグが「1」でないと判定されると(ステップS50:NO)、ステップS56(動作ステップ又は第一進行ステップの一例)において、制御部190は、ユーザによるドラッグ操作に応じてゲームキャラクタCA1又はキャラクタユニットCU1を走行させる。制御部190は、タッチスクリーン130の履歴情報を用いて、ドラッグ操作のドラッグ方向を検出する(図7又は図10の画面例(A)参照)。そして、制御部190は、ドラッグ操作の操作方向に基づいて、ゲームキャラクタCA1又はキャラクタユニットCU1の移動方向及び傾きを決定する。そして、制御部190は、ゲームキャラクタCA1又はキャラクタユニットCU1をドラッグ方向へ走行させながら移動させる(図7又は図10の画面例(A)に対応する)。走行による移動態様を第一態様ともいう。
ステップS58において、制御部190は、仮想カメラVCの撮影方向をゲームキャラクタCA1又はキャラクタユニットCU1の向きと一致させる。
ステップS54又はステップS58が終了した場合には、図14に示されるフローチャートは終了する。そして、制御部190は、図13に示されるステップS38の移動処理が実行されるたびに、つまり、ドラッグ操作が継続されている間は、図14に示されるフローチャートを最初から実行する。
(移動処理の詳細:飛行中の接触処理)
続いて、キャラクタユニットCU1が飛行して移動する場合における、敵キャラクタとの接触処理について説明する。図15は、第二態様で動作するキャラクタユニットの接触処理を説明するフローチャートである。図15のフローチャートは、図13のステップS38の移動処理の一部であり、ドラッグ操作が継続されている状態における制御部190による処理を示すフローチャートである。
ステップS60において、制御部190は、飛行フラグが「1」であるか否かを判定する。飛行フラグの更新については後述する。
飛行フラグが「1」であると判定されると(ステップS60:YES)、ステップS62(衝突判定ステップの一例)において、制御部190は、飛行中のキャラクタユニットCU1が敵キャラクタと接触したか否かを判定する。制御部190は、キャラクタユニットCU1と敵キャラクタとのゲーム空間上の相対位置に基づいて、接触判定を行う。
飛行中のキャラクタユニットCU1が敵キャラクタと接触したと判定されると(ステップS62:YES)、ステップS64において、制御部190は、接触した敵キャラクタが雑魚キャラであるか否かを判定する。制御部190は、一例として、キャラクタユニットCU1のゲームパラメータと、接触した敵キャラクタとのゲームパラメータとを比較して雑魚キャラであるか否かを判定する。ゲームパラメータは、攻撃力、防御力、レベル、属性値、HPなどが採用される。比較対象は同種のゲームパラメータである必要はない。例えば、制御部190は、キャラクタユニットCU1の攻撃力と敵キャラクタの防御力との差分を算出し、閾値を用いて雑魚キャラであるか否かを判定してもよい。このような比較ルール(比較対象及び閾値)は、予め設定され、携帯端末10のゲーム情報152又はサーバ20のゲーム情報252に含まれている。あるいは、敵キャラクタに雑魚キャラの属性が予め設定されていてもよい。この場合、制御部190は、敵キャラクタの属性を判定することにより、接触した敵キャラクタが雑魚キャラであるか否かを判定する。
接触した敵キャラクタが雑魚キャラであると判定されると(ステップS64:YES)、ステップS66(減少ステップの一例)において、制御部190は、接触した敵キャラクタのゲームパラメータを減少させる。減少対象のゲームパラメータの一例はHPである(図11の画面例(B)に対応する)。なお、減少対象のゲームパラメータは、攻撃力、防御力、レベル、属性値などであってもよい。制御部190は、キャラクタユニットCU1のゲームパラメータと、接触した敵キャラクタとのゲームパラメータとを比較して、ゲームパラメータの減少量を決定する。比較対象は同種のゲームパラメータである必要はない。例えば、制御部190は、キャラクタユニットCU1の攻撃力と敵キャラクタの防御力との差分を算出し、差分に応じた減少量を決定してもよい。このような比較ルール(比較対象及び差分に対する比例係数)は、予め設定され、携帯端末10のゲーム情報152又はサーバ20のゲーム情報252に含まれている。そして、制御部190は、接触した敵キャラクタCA3を吹き飛ばす演出を行う(図11の画面例(B)に対応する)。
一方、接触した敵キャラクタが雑魚キャラでないと判定されると(ステップS64:NO)、ステップS68において、制御部190は、キャラクタユニットCU1が接触後に後退する動作(ノックバックモーション)をするように制御する(図12の画面例(B)に対応する)。ステップS69において、制御部190は、ボスに接触したことを示すボス判定フラグを「1」に設定する。
飛行フラグが「1」でないと判定された場合(ステップS60:NO)、飛行中のキャラクタユニットCU1が敵キャラクタと接触していないと判定された場合(ステップS62:NO)、又は、ステップS66もしくはステップS69が終了した場合には、図15に示されるフローチャートは終了する。そして、制御部190は、図13に示されるステップS38の移動処理が実行されるたびに、つまり、ドラッグ操作が継続されている間は、図15に示されるフローチャートを最初から実行する。
(移動処理の詳細:飛行フラグの更新処理)
続いて、飛行フラグの更新処理について説明する。飛行フラグは、上述のとおり、飛行条件を満たしているか否かを示すフラグである。図16は、第一態様と第二態様とを切り替えるためのフラグ更新処理を説明するフローチャートである。図16のフローチャートは、図13のステップS38の移動処理の一部であり、ドラッグ操作が継続されている状態における制御部190による処理を示すフローチャートである。
ステップS70において、制御部190は、飛行フラグが「1」であるか否かを判定する。飛行フラグの更新は、本フローチャートにて実行される。
飛行フラグが「1」であると判定されると(ステップS70:YES)、ステップS72(終了判定ステップの一例)において、制御部190は、キャラクタユニットCU1が所定角度以上の方向転換をする入力操作が受け付けられたか否かを判定する(第一終了条件)。制御部190は、タッチスクリーン130の履歴情報を用いて、ドラッグ操作の角度変化量を検出する。そして、制御部190は、角度変化量と予め定められた閾値とを比較することにより、キャラクタユニットCU1が所定角度以上の方向転換をする入力操作が受け付けられたか否かを判定する。制御部190は、ドラッグ操作の所定時間内における操作方向の角度変化量が閾値以上の場合に、キャラクタユニットCU1が所定角度以上の方向転換をする入力操作が受け付けられたと判定する。
キャラクタユニットCU1が所定角度以上の方向転換をする入力操作が受け付けられていないと判定されると(ステップS72:NO)、ステップS74(終了判定ステップの一例)として、制御部190は、キャラクタユニットCU1が進行不可オブジェクトに所定角度以上の入射角度で衝突した状況であるか否かを判定する(第二終了条件)。制御部190は、キャラクタユニットCU1と進行不可オブジェクトとのゲーム空間上の相対位置に基づいて上記判定を行う。
キャラクタユニットCU1が進行不可オブジェクトに所定角度以上の入射角度で衝突した状況でないと判定されると(ステップS74:NO)、ステップS76(終了判定ステップの一例)として、制御部190は、ボス判定フラグが「1」であるか否かを判定する(第三終了条件)。
ボス判定フラグが「1」でないと判定された場合(ステップS76:NO)には、図16のフローチャートを終了する。つまり、第一終了条件、第二終了条件及び第三終了条件の何れも満たされていない場合には、飛行フラグは「1」のままである。このため、キャラクタユニットCU1は飛行による移動を継続する(図14参照)。
一方、キャラクタユニットCU1が所定角度以上の方向転換をする入力操作が受け付けられたと判定され場合(ステップS72:YES)、キャラクタユニットCU1が進行不可オブジェクトに所定角度以上の入射角度で衝突した状況であると判定された場合(S74:YES)、又は、ボス判定フラグが「1」であると判定された場合(ステップS76:YES)には、ステップS78として、制御部190は、飛行フラグを「1」から「0」、ボス判定フラグを「1」から「0」に更新し、図16のフローチャートを終了する。つまり、第一終了条件、第二終了条件及び第三終了条件の何れか1つの終了条件が満たされた場合には、飛行フラグは「1」から「0」に更新される。このため、キャラクタユニットCU1は飛行による移動を中断する(図14参照)。
飛行フラグが「1」でないと判定されると(ステップS70:NO)、ステップS80において、制御部190は、キャラクタユニットを構成中であるか否かを判定する。制御部190は、例えば、ゲームキャラクタCA1が図8の画面例(A)に対応する状態の場合には「0」、ゲームキャラクタCA1が図8の画面例(B)に対応する状態の場合には「1」となるユニットフラグを参照して、キャラクタユニットを構成中であるか否かを判定する(第一条件)。制御部190は、キャラクタユニットの構成時又は解除時にユニットフラグを更新する。
キャラクタユニットを構成中であると判定されると(ステップS80:YES)、ステップS82(操作判定ステップの一例)において、制御部190は、入力操作に攻撃操作が含まれているか否かを判定する(第一操作条件)。制御部190は、タッチスクリーン130の履歴情報を用いて、ゲームキャラクタCA1、ゲームキャラクタCA2又はキャラクタユニットCU1に攻撃させる攻撃操作が入力されたか否かを判定する。
入力操作に攻撃操作が含まれていないと判定されると(ステップS82:NO)、ステップS84(操作判定ステップの一例)において、制御部190は、キャラクタユニットCU1が所定角度以上の方向転換をする入力操作が受け付けられたか否かを判定する(第二操作条件)。この判定は、ステップS72の第一終了条件の判定と同一である。
キャラクタユニットCU1が所定角度以上の方向転換をする入力操作が受け付けられていないと判定されると(ステップS84:NO)、ステップS86として、制御部190は、走行時間をカウントアップする。
続いて、ステップS88(操作判定ステップの一例)において、制御部190は、カウント中の走行時間が閾値以上であるか否かを判定する(第三操作条件)。閾値は、予め定められた時間閾値であり、飛行前に必要な助走時間である。
カウント中の走行時間が閾値以上であると判定されると(ステップS88:YES)、ステップS90として、制御部190は、飛行フラグを「0」から「1」に設定し、図16のフローチャートを終了する。つまり、第一条件、第一操作条件、第二操作条件及び第三操作条件の全てが満たされた場合には、飛行フラグが「0」から「1」に更新される。このため、キャラクタユニットCU1は走行状態(第一態様の一例)から飛行状態(第二態様の一例)へと遷移する(図14参照)。
一方、キャラクタユニットを構成中でないと判定された場合(ステップS80:NO)、入力操作に攻撃操作が含まれていると判定された場合(ステップS82:YES)、キャラクタユニットCU1が所定角度以上の方向転換をする入力操作が受け付けられたと判定された場合(ステップS84:YES)には、ステップS92として、制御部190は、走行時間をリセットする。
カウント中の走行時間が閾値以上でないと判定された場合(ステップS88:NO)、又は、ステップS92が終了した場合には、図16のフローチャートを終了する。つまり、飛行フラグは「0」のままである。このため、キャラクタユニットCU1は走行による移動を継続する(図14参照)。
(移動処理のまとめ)
制御部190は、キャラクタユニットCU1が所定時間走行した場合、飛行させた状態で移動させる。つまり、制御部190は、ユーザがドラッグ操作をし続けるだけで、キャラクタ移動の操作が変更されるゲームを提供することができる。
(変形例1)
第一態様の動作及び第二態様の動作は、移動動作に限定されるものではなく、例えば、攻撃操作であってもよい。
(変形例2)
飛行中のキャラクタユニットCU1の動作として、翼を羽ばたかせる動作をランダムで追加してもよい。
(変形例3)
操作オブジェクト300は表示されなくてもよい。操作オブジェクト300の端部は変更されず、操作方向の起点だけ変更される場合であってもよい。
(変形例4)
上述したゲーム処理の全てを携帯端末10又はサーバ20が単体で実行してもよい。
以上、本開示の実施形態について説明したが、本開示の技術的範囲は、本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲の記載事項に基づいて、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本開示の技術的範囲は、特許請求の範囲の記載事項及びその均等の範囲に基づいて定められるべきである。
本開示の主題は、例えば以下のような項目として示される。
(項目1)
ユーザによる入力操作(一例として移動操作)に応じてゲームのキャラクタ(一例としてキャラクタユニットCU1)を動作(一例として移動)させるためにコンピュータによって実行される情報処理方法であって、
第一キャラクタ(一例としてゲームキャラクタCA1)と第二キャラクタ(一例としてゲームキャラクタCA2)とが関連付けられたキャラクタユニット(一例としてキャラクタユニットCU1)を構成する構成ステップ(一例としてステップS16)と、
前記ユーザによる入力操作に応じて前記キャラクタユニットを第一態様(一例として走行状態)で動作させる第一進行ステップ(一例としてステップS56)と、
前記キャラクタユニットを前記第一態様で動作させる前記ユーザによる入力操作が所定の操作条件(一例として第一操作条件、第二操作条件、又は、第三操作条件)を満たすか否かを判定する操作判定ステップ(一例としてステップS50,S82,S84,S86)と、
前記操作判定ステップにおいて前記ユーザによる入力操作が前記操作条件を満たすと判定された場合には、前記ユーザによる入力操作に応じて前記キャラクタユニットを第二態様で動作させる第二進行ステップ(一例としてステップS52)と、
を備える、情報処理方法。
この情報処理方法によれば、キャラクタユニットを第一態様で動作させるユーザによる入力操作が所定の操作条件を満たしたときに、入力操作に応じて第一態様で動作するキャラクタユニットを第二態様で動作させることができる。このように、操作のバリエーションが増加するため、ゲーム性を向上させることができる。
(項目2)
前記操作判定ステップでは、前記第一キャラクタ、前記第二キャラクタ又は前記キャラクタユニットに攻撃させる攻撃操作が入力されず、かつ、前記キャラクタユニットを前記第一態様で移動させる移動操作が所定時間以上継続して入力された場合に、前記ユーザによる入力操作が前記操作条件を満たすと判定する、項目1に記載の情報処理方法。
この情報処理方法によれば、非戦闘状態で所定時間の間、第一態様でキャラクタユニットが移動した場合に、第二態様で動作する操作に切り替えることができる。このため、ユーザは簡単に操作モードを切り替えることができる。
(項目3)
前記キャラクタユニットを前記第二態様で動作させる前記ユーザによる入力操作は、前記キャラクタユニットを前記第二態様で移動させる移動操作である、項目1又は2に記載の情報処理方法。
この情報処理方法によれば、操作モードを切り替えた後も移動操作を継続することができる。
(項目4)
前記キャラクタユニットの前記第二態様での移動中においては、操作方向に応じた角度で前記キャラクタユニットを傾斜させて表示させる、項目3に記載の情報処理方法。
この情報処理方法によれば、ユーザは、キャラクタとの一体感を感じることができる。
(項目5)
前記第二態様で動作する前記キャラクタユニットと敵キャラクタとの衝突を判定する衝突判定ステップと、
前記衝突判定ステップにおいて前記衝突が判定された場合には前記敵キャラクタの第一パラメータを減少させる減少ステップと、
を備える、項目1〜4の何れか一項に記載の情報処理方法。
この情報処理方法によれば、キャラクタユニットを第二態様で動作させながら、敵キャラクタに対して攻撃や弱体化を行うことができる。
(項目6)
前記減少ステップでは、前記第一キャラクタ及び前記第二キャラクタの少なくとも一方のパラメータと、前記敵キャラクタのパラメータとの比較結果に基づいて、前記第一パラメータの減少量を決定する、項目5に記載の情報処理方法。
この情報処理方法によれば、ゲームキャラクタ及び敵キャラクタのパラメータに応じて、敵キャラクタに対する攻撃や弱体化の程度を変化させることができる。
(項目7)
前記第二進行ステップの実行中において、前記第二進行ステップの終了条件を満たすか否かを判定する終了判定ステップを備え、
前記第二進行ステップは、前記終了判定ステップにおいて前記第二進行ステップの前記終了条件が満たされたと判定された場合に終了する、項目3〜6の何れか一項に記載の情報処理方法。
この情報処理方法によれば、キャラクタユニットが第二態様で動作する場面を制限することができる。
(項目8)
前記終了判定ステップでは、前記第一キャラクタ及び前記第二キャラクタの少なくとも一方のパラメータと、前記敵キャラクタのパラメータとの比較結果に基づいて、前記第二進行ステップの前記終了条件が満たされたか否かを判定する、項目7に記載の情報処理方法。
この情報処理方法によれば、キャラクタユニットが第二態様で動作する場面をゲームパラメータに関連付けて制限することができる。
(項目9)
前記終了判定ステップでは、前記キャラクタユニットを前記第二態様で動作させる前記ユーザによる入力操作がドラッグ操作であり、かつ、前記ドラッグ操作の所定時間内における操作方向の角度変化量が閾値以上の場合には、前記第二進行ステップの前記終了条件が満たされたと判定する、項目7に記載の情報処理方法。
この情報処理方法によれば、キャラクタユニットが第二態様で動作する場面をドラッグ操作に関連付けて制限することができる。
(項目10)
前記構成ステップの実行前において、前記ユーザによる入力操作に応じて前記第一キャラクタを動作させる動作ステップを備える、項目1〜9の何れか一項に記載の情報処理方法。
この情報処理方法によれば、キャラクタユニットを構成する前のゲームキャラクタを動作させることができる。
(項目11)
項目1〜10の何れか一項に記載の方法をコンピュータに実行させる、プログラム。
(項目12)
メモリと、
前記メモリに結合されたプロセッサとを備え、
前記プロセッサの制御により請求項1〜10の何れか一項に記載の方法を実行する、装置。