[本開示が示す実施形態の説明]
本開示が示す実施形態の概要を説明する。
(1)本開示の一実施形態に係るゲーム方法は、タッチスクリーンを含む端末機器で実行されるゲーム方法であって、
当該ゲーム方法は、
(a)仮想カメラと、第一のフィールドと、前記第一のフィールドからユーザが操作するプレイヤオブジェクトがシームレスに移動可能な第二のフィールドと、前記第二のフィールドから前記プレイヤオブジェクトがシームレスに移動可能な第三のフィールドとを含む仮想空間を規定するステップと、
(b)これらのフィールドの各画像データを所定のタイミングでダウンロードするとともに読み込むことにより、読み込んだ前記各画像データを前記タッチスクリーンに表示させるステップと、を含み、
前記ステップ(b)は、
(b−1)前記プレイヤオブジェクトが前記第一のフィールドに配置されている状態において所定の第一条件を満たした場合に、前記第三のフィールドのデータの読み込みを開始するステップと、
(b−2)前記第三のフィールドのデータが所定の第二条件を満たした場合に、前記第二のフィールドに、前記プレイヤオブジェクトが所定の作用を及ぼすことが可能な対象オブジェクトを配置するステップと、
(b−3)前記第三のフィールドのデータの読み込みが完了するまで、前記対象オブジェクトによって前記プレイヤオブジェクトの前記第三のフィールドへの移動を阻止するステップと、
を含む。
上記方法によれば、シームレスフィールドを採用したゲームにおいて、ゲーム性を維持しつつ、次のフィールドのデータの読み込み完了までの時間を確保することができる。
(2)前記所定の第二条件は、前記第三のフィールドのデータ量が所定の閾値以上であることを含んでも良い。
上記方法によれば、第三のフィールドのデータの読み込みに時間がかかると判断された場合に、第三のフィールドのデータ読込完了までの時間を適切に稼ぐことができる。
(3)前記ステップ(b)は、
(b−4)前記第三のフィールドのデータの読み込みが完了したときに、前記対象オブジェクトの表示態様を変化させるステップをさらに含んでも良い。
上記方法によれば、次のフィールドのデータの読み込み完了後に、例えば、対象オブジェクトを非表示としたり対象オブジェクトが倒れるような状態にしたりすることで、プレイヤオブジェクトが第三のフィールドへ移動することが可能となる。
(4)前記対象オブジェクトは、前記プレイヤオブジェクトから及ぼされる前記所定の作用に対応する所定のパラメータを有し、
前記所定のパラメータの値が、前記第三のフィールドのデータの読み込み完了率に対応しても良い。
上記方法によれば、例えば、対象オブジェクトへ与えられるダメージ量を、データの読み込み完了率と対応させることで、第三のフィールドのデータ読込完了までの時間を適切に稼ぐことができる。
(5)前記ステップ(b)は、
(b−5)前記第三のフィールドに対応する仮データを前記タッチスクリーンに表示させるステップをさらに含んでも良い。
上記方法によれば、第三のフィールドの代替として仮データを描画しておくことでデータ読込完了までの時間を稼ぐことができる。
(6)前記仮データは、前記第一から前記第三のフィールドのデータとは異なる用途に用いられる画像データから切り出して生成されても良い。
上記方法によれば、簡便な処理で、仮データを生成することができる。
(7)前記ステップ(b−2)において、前記端末機器のデータ処理能力に応じて前記対象オブジェクトの出現可否が変更可能であっても良い。
上記方法によれば、データ処理能力の高い、すなわち、データ読み込みが完了するまでの時間稼ぎが必要のない端末機器の場合には、対象オブジェクトを出現させることなくシームレスフィールドの描画処理を行うことが可能である。
(8)前記所定の第一条件は、前記第一のフィールドの所定位置に配置された検知オブジェクトが前記タッチスクリーンに含まれていること、または、前記検知オブジェクトと前記仮想カメラあるいは前記プレイヤオブジェクトとの位置関係が所定条件を満たしていることを含んでも良い。
上記方法によれば、適切なタイミングで第三のフィールドの読み込みを開始することができる。
(9)本開示の一実施形態に係るプログラムは、上記(1)から(8)のいずれかに記載のゲーム方法をコンピュータに実行させるためのゲームプログラムである。
この構成によれば、シームレスフィールドを採用したゲームにおいて、ゲーム性を維持しつつ、次のフィールドのデータの読み込み完了までの時間を確保可能なゲームプログラムを提供することができる。
[本開示が示す実施形態の詳細]
以下、本開示が示す実施形態について図面を参照しながら説明する。なお、本実施形態の説明において既に説明された部材と同一の参照番号を有する部材については、説明の便宜上、その説明は繰り返さない。
本実施形態において、ユーザは、例えばスマートフォンなどの、タッチスクリーンを搭載した情報処理装置を操作して、ゲームサーバと、スマートフォンとの間でゲームに関するデータを送受信しながらゲームを進行させる。ゲームは、ユーザが一人でプレイするシングルプレイと、ユーザが他のユーザとともにプレイするマルチプレイとに対応する。
図1は、実施の形態のゲーム配信システム1の構成を示す図である。図1に示すように、ゲーム配信システム1は、ユーザが使用する情報処理装置(端末機器の一例)と、サーバ20とを含み、これらの装置がネットワーク30によって互いに通信可能に接続されている。
図1の例では、ユーザが使用する情報処理装置として、ユーザ端末10A、ユーザ端末10Bおよびユーザ端末10C(以下、ユーザ端末10A、10B、10Cなどのユーザ端末を総称して「ユーザ端末10」と記載することもある)など複数の携帯端末を示している。ユーザ端末10Aとユーザ端末10Bとは、無線基地局31と通信することにより、ネットワーク30と接続する。ユーザ端末10Cは、家屋などの施設に設置される無線ルータ32と通信することにより、ネットワーク30と接続する。ユーザ端末10は、タッチスクリーンを備える携帯端末であり、例えば、スマートフォン、ファブレット、タブレットなどである。
ユーザ端末10は、ゲームプログラムを実行することにより、ゲームプログラムに応じたゲームをプレイする環境をユーザに対して提供する。ユーザ端末10は、例えば、アプリ等を配信するプラットフォームを介してゲームプログラムをインストールする。ユーザ端末10は、ユーザ端末10にインストールされたゲームプログラム、または、予めプリインストールされているゲームプログラムを実行することで、ユーザによるゲームのプレイを可能とする。ユーザ端末10は、ゲームプログラムを読み込んで実行することにより、サーバ20と通信し、ゲームの進行に応じてゲームに関連するデータをユーザ端末10とサーバ20との間で送受信する。
サーバ20は、ゲームのプレイに必要なデータを、適宜、ユーザ端末10へ送信することで、ユーザ端末10でのゲームのプレイを進行させる。サーバ20は、ゲームをプレイする各ユーザの、ゲームに関連する各種データを管理する。サーバ20は、ユーザ端末10と通信し、各ユーザのゲームの進行に応じて、画像、音声、テキストデータその他のデータをユーザ端末10へ送信する。
ゲームプログラムは、ユーザがゲームをプレイするモードとして、一人のユーザがプレイする場合(シングルプレイ)と、複数人のユーザが協同してプレイする場合(マルチプレイ)とに対応している。例えば、ゲーム配信システム1において、サーバ20が、マルチプレイに参加するユーザを特定して各ユーザの各ユーザ端末10と通信すること等により、マルチプレイでゲームをプレイする環境を各ユーザに提供する。
ゲーム配信システム1は、マルチプレイに対応することにより、例えば、アクションゲームであれば、ユーザ同士が協力してゲームを進行させること、または、ユーザ同士で対戦することなどを可能とする。
図1に示すようにサーバ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と、メニュー画面やゲームの進行を画面に表示するためのディスプレイ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と、キャラクタ操作検出部193と、オブジェクト制御部195と、表示制御部197と、の各機能を発揮する。
入力操作受付部191は、タッチスクリーン130の出力に基づいて、ユーザの入力操作を受け付ける。具体的には、入力操作受付部191は、ユーザの指などがタッチパネル131に接近したことを、タッチスクリーン130を構成する面の横軸および縦軸からなる座標系の座標として検出する。
入力操作受付部191は、タッチスクリーン130に対するユーザの操作を判別する。入力操作受付部191は、例えば、(1)「接近操作」、(2)「リリース操作」、(3)「タップ操作」、(4)「長押し操作(ロングタッチ操作)」、(5)「ドラッグ操作(スワイプ操作)」などのユーザの操作を判別する。入力操作受付部191が判別するユーザの操作は、上記に限られない。例えば、タッチパネル131が、ユーザがタッチパネル131に対して押下する圧力の大きさを検出可能な機構を有する場合、入力操作受付部191は、ユーザが押下した圧力の大きさを判別する。
(1)「接近操作」とは、ユーザが指などをタッチスクリーン130に接近させる操作である。タッチスクリーン130は、ユーザの指などが接近したこと(ユーザの指などがタッチスクリーン130に接触したことを含む)をタッチパネル131により検出し、検出したタッチスクリーン130の座標に応じた信号を入力操作受付部191へ出力する。制御部190は、タッチスクリーン130へのユーザの指などの接近を検出しない状態から、接近を検出したときに、状態が「タッチオン状態」になったと判別する。
(2)「リリース操作」とは、ユーザがタッチスクリーン130を接近操作している状態を止める操作である。制御部190は、例えば、ユーザが指をタッチスクリーン130に接触させている状態から、指を離す操作をしたときに、ユーザの操作を「リリース操作」と判別する。制御部190は、タッチスクリーン130へのユーザの指などの接近を検出している状態から、接近を検出しない状態になったときに、状態が「タッチオン状態」から「タッチオフ状態」になったと判別する。
(3)「タップ操作」とは、ユーザがタッチスクリーン130に対して指などを接近させる接近操作をした後に、接近操作をした位置でリリース操作を行うことである。入力操作受付部191は、接近操作が検出されない状態(ユーザの指などがタッチスクリーン130から離れており、タッチパネル131がユーザの指などの接近を検出していない状態)から、タッチスクリーン130の出力に基づいて、ユーザの指などが接近したことを検出した場合に、その検出した座標を「初期タッチ位置」として保持する。制御部190は、初期タッチ位置の座標と、リリース操作をした座標とがほぼ同一である場合(接近操作が検出された座標から一定範囲内の座標においてリリース操作の座標が検出された場合)に、ユーザの操作を「タップ操作」と判別する。
(4)「長押し操作」とは、ユーザがタッチスクリーン130を押し続ける操作である。制御部190は、ユーザの操作を検出して接近操作を判別してから、接近操作が検出された座標(あるいは当該座標を含む一定領域内)において接近操作が継続している時間が一定時間を超えた場合に、ユーザの操作を「長押し操作」(「長押し操作」を、「ロングタッチ操作」と称することもある)と判別する。
(5)「ドラッグ操作」とは、ユーザがタッチスクリーン130に指などを接近させた接近状態を維持したまま、指をスライドさせる操作である。
キャラクタ操作検出部193は、タッチスクリーン130に対するユーザの入力操作に基づいて、ゲームに登場するプレイヤキャラクタ(以下、「自キャラクタ」と称することもある)に所定の動作を実行させる入力操作の操作内容を検出する。キャラクタ操作検出部193は、ユーザの入力操作に基づいて、例えば、プレイヤキャラクタを移動させる方向を検出する。すなわち、キャラクタ操作検出部193は、ユーザがプレイヤキャラクタの移動方向を指定する入力操作を受け付ける。
具体的には、キャラクタ操作検出部193は、タッチスクリーン130からユーザの指が離れた状態から、ユーザが指をタッチスクリーン130に接近させて、入力操作受付部191がタッチパネル131にユーザの指が接近したことを検出した座標を初期タッチ位置として、ユーザがドラッグ操作を行った場合に、初期タッチ位置の座標とタッチスクリーン130の検出結果とに基づいて、プレイヤキャラクタの移動方向を検出する。キャラクタ操作検出部193での具体的な処理については、後述する。
オブジェクト制御部195は、ユーザ端末10がゲームプログラムを実行することにより進行されるゲームに登場する各種オブジェクト、および、入力操作受付部191が受け付けたユーザの操作内容に基づいて生成される各種オブジェクト(例えば、GUI(Graphical User Interface)画面)の生成、変形、移動などの処理を制御する。オブジェクト制御部195は、例えば、ユーザがプレイヤキャラクタを移動させるためのタッチスクリーン130に対する入力操作に基づいて、プレイヤキャラクタの移動方向を示す操作オブジェクト40を生成する。操作オブジェクト40の詳細については、後述する。
表示制御部197は、キャラクタ操作検出部193およびオブジェクト制御部195での制御に応じて、ディスプレイ132の表示内容を決定し、決定した表示内容に従った画像、テキスト等の各種の情報をディスプレイ132に出力する。例えば、表示制御部197は、プレイヤキャラクタをディスプレイ132の一定領域に表示させた状態で、入力操作受付部191によって受け付けた入力操作に応じて操作オブジェクト40を表示させつつプレイヤキャラクタに所定の動作(例えば、移動やジャンプ動作)を行わせる画面表示を行う。
図3は、サーバ20の機能的な構成を示すブロック図である。図3を参照して、サーバ20の詳細な構成を説明する。サーバ20は、プログラムに従って動作することにより、通信部220と、記憶部250と、制御部290としての機能を発揮する。
通信部220は、サーバ20がユーザ端末10などの外部の通信機器とネットワーク30を介して通信するためのインタフェースとして機能する。
記憶部250は、ユーザ端末10においてユーザがゲームを進行させるための各種プログラムおよびデータを記憶する。ある局面において、記憶部250は、ゲームプログラム251と、ゲーム情報252と、ユーザ情報253とを記憶する。
ゲームプログラム251は、サーバ20がユーザ端末10と通信して、ユーザ端末10においてゲームを進行させるためのプログラムである。ゲームプログラム251は、ゲームを進行させるための各種データであるゲーム情報252およびユーザ情報253等を参照して、ユーザの入力操作に応じてゲームを進行させる。ゲームプログラム251は、制御部290に実行されることにより、ユーザ端末10とデータを送受信する処理、ユーザ端末10のユーザが行った操作内容に応じてゲームを進行させる処理、ゲームをプレイするユーザの情報を更新する処理などをサーバ20に行わせる。
ゲーム情報252は、ゲームプログラム251が参照する各種のデータを含む。ゲーム情報252は、例えば、オブジェクト管理テーブル252Aと、ミッション管理テーブル252Bとを含む。
オブジェクト管理テーブル252Aは、ゲームの仮想空間内に配置されるオブジェクトの設定を示す。ユーザ端末10は、ゲームプログラム151を実行することにより、仮想空間内に配置されるオブジェクトを、仮想空間内に配置される仮想カメラによって撮影した画像をディスプレイ132に表示することでゲームを進行させる。
ここで、オブジェクトとしては、例えば、ユーザが操作するゲームキャラクタを示すオブジェクト、ゲームキャラクタが装着する対象物を示すオブジェクトなど様々なものがある。これらオブジェクトは、ユーザがタッチスクリーン130に対して予め定められた入力操作を行うこと、ゲームの進行に伴い一定の条件を満たすこと、その他の様々な事象の発生を契機として、オブジェクトに対応付けられた処理が行われる。
例えば、あるオブジェクトに対してユーザがタッチスクリーン130に対して接近操作を行うことで、オブジェクトがユーザに選択された状態となる。また、例えば、ユーザがドラッグ操作を行うことで、ユーザに選択されているオブジェクトがユーザの入力操作に応じて移動する等の処理が行われる。また、例えば、ユーザがオブジェクトに対してタッチ操作をすることで、ユーザに対し、ゲームを有利に進めるための報酬が付与される等の処理が行われる。
ミッション管理テーブル252Bは、オブジェクトを識別する情報と、オブジェクトに対応付けられたミッションの情報とが対応付けられている。ここで、ミッションとは、クエストとも呼ばれ、例えば、敵キャラクタを倒したり、所定のキャラクタを救出したりすることで、ユーザがゲームを進行させることができるものである。例えば、ミッションをクリアした場合には、所定の報酬(例えばコイン)をユーザが得る等の、ゲームを有利に進行させられる効果が生じる。ミッション管理テーブル252Bには、各ミッションが、後述の複数のミッション発注所のそれぞれと関連付けられて記憶されている。また、各ミッションの情報には、当該ミッションに関連付けられたミッション対象キャラクタの出現場所、難易度、報酬などの情報が含まれている。
ユーザ情報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とで、各種の時間に関する情報を同期させる。
図4は、本実施形態に係るユーザ端末10のタッチスクリーン130に表示されるゲーム画面の一例を示す。
図4の画面例は、ユーザが操作する自キャラクタ100(プレイヤオブジェクトの一例)に、所定の動作を行わせるための入力操作を受け付ける画面である。制御部190は、タッチスクリーン130に、ユーザが操作するオブジェクトである自キャラクタ100と、対戦相手(敵)となるオブジェクトである相手キャラクタ200(以下、ミッション対象キャラクタと称する場合もある)とを表示させて、ユーザに対し、自キャラクタ100に所定の動作を行わせるための入力操作を受け付ける。自キャラクタ100および相手キャラクタ200は、ユーザ端末10を縦型となるように置いたときに、その上下方向においてタッチスクリーン130の中央付近(例えば、タッチスクリーン130をその上下方向に三分割したときの中央の領域内)に、例えば、左右方向において進行方向に視野がやや広くなるように表示される。タッチスクリーン130の下方には、例えば地面の断面(図4のドット模様の部分)が表示されている。タッチスクリーン130の下半部、すなわち地面の断面が表示された部分は、後述の操作オブジェクト40を操作するためのスペースとして利用可能である。ユーザは、タッチスクリーン130の任意位置への操作によって、自キャラクタ100を操作することができる。ユーザが、例えば、タッチスクリーン130の左右方向に沿った方向(図4の矢印Aの方向)のドラッグ操作を入力した場合、制御部190は、そのドラッグ操作を受け付けて、自キャラクタ100をドラッグ操作の方向に対応する方向(例えば、矢印Bの方向)に移動させるよう制御する。なお、本例では、制御部190は、ドラッグ操作の方向に基づいて、仮想空間内に規定された二次元フィールドにおいて、自キャラクタ100を上下方向および水平方向に移動させることができる。
タッチスクリーン130の左右方向の端部(図4では左端)には、各種のユーザインターフェース画像300(以下、UI画像と称する)が表示されていても良い。UI画像300には、例えば、マップを表示するためのUI画像300A、キャラクタを変更するためのUI画像300B、スキル(ゲーム内で自キャラクタ100により行われる攻撃アクションの一つ)を発動させるためのUI画像300Cが含まれ得る。
<1.自キャラクタの動作制御>
図5は、キャラクタ操作検出部193が、ユーザの入力操作に応じて自キャラクタ100を移動させる方向を検出する処理を示す図である。キャラクタ操作検出部193は、ユーザがタッチスクリーン130を押していない状態から、指などをタッチパネル131に接近させてタッチスクリーン130を押した位置(初期タッチ位置)を起点と設定する。入力操作受付部191は、ユーザの操作をドラッグ操作と判別している場合に、起点となる座標と、タッチスクリーン130がユーザの指などの接近を検出している座標とに基づいて、自キャラクタ100を移動させる方向を検出する。
図5の状態(A)は、タッチスクリーン130からユーザの指が離れた状態から、ユーザが指をタッチスクリーン130に接近させた状態を示す。入力操作受付部191は、ユーザの指がタッチスクリーン130に接近したことを検出し、検出した座標を初期タッチ位置としてメモリ(例えば、主記憶4または補助記憶5)に保持する。
図5の例では、メモリが保持する初期タッチ位置の座標を、初期タッチ位置座標55として示す。入力操作受付部191は、タッチスクリーン130の検出結果(ユーザの指がタッチスクリーン130に接近している座標、および、ユーザの指がタッチスクリーン130に接近していることを検出していないこと(検出結果「null」))を、一定フレーム分、バッファメモリ53に格納する。バッファメモリ53は、タッチスクリーン130における検出結果を、各フレームについて一定フレーム分(図5の例では、メモリ領域fp〔0〕〜メモリ領域fp〔10〕までの11フレーム分)、格納することができる。バッファメモリ53は、例えばリングバッファとして実現することができる。
状態(A)の例では、ユーザがタッチスクリーン130を押した位置を、押下位置50A(タッチスクリーン130の座標(x0,y0))として示す。
図5の状態(B)は、ユーザがタッチスクリーン130に対してドラッグ操作を行って、タッチスクリーン130に対する押下位置を、押下位置50Aから押下位置50B(タッチスクリーン130の座標(x9,y9))まで10フレーム(メモリ領域fp〔0〕〜メモリ領域fp〔9〕までの10フレーム分)で移動させたことを示す。入力操作受付部191は、タッチスクリーン130の検出結果をバッファメモリ53に格納し、バッファメモリ53に保持される値を参照して、タッチスクリーン130に対するユーザの操作をドラッグ操作と判別する。
図5の状態(C)は、ユーザがタッチスクリーン130を押している位置を、押下位置50Bから押下位置50C(タッチスクリーン130の座標(x14,y14))まで、5フレーム(メモリ領域fp〔10〕、fp〔0〕、fp〔1〕、fp〔2〕、fp〔3〕の5フレーム分)で移動させたことを示す。
図5の状態(D)は、キャラクタ操作検出部193が、状態(B)および状態(C)のそれぞれにおいて、ユーザが自キャラクタ100を移動させる方向を指定する入力操作の検出結果を示す。キャラクタ操作検出部193は、バッファメモリ53において、タッチスクリーン130が検出する押下位置の座標を書き込む対象となるメモリ領域がいずれであるかを示す情報(バッファメモリ53の書き込み位置)を管理している。
状態(B)において、キャラクタ操作検出部193は、入力操作受付部191の判別結果に基づいて、初期タッチ位置を示す座標51A(座標(x0,y0))から座標51B(座標(x9,y9))までユーザがドラッグ操作を行ったことを検出する。キャラクタ操作検出部193は、初期タッチ位置の座標51Aを起点として、座標51Aと座標51Bとによって規定されるベクトル52Bを、自キャラクタ100を移動させる方向として検出する。
状態(C)において、キャラクタ操作検出部193は、入力操作受付部191の判別結果に基づいて、座標51B(座標(x9,y9))から座標51C(座標(x14,y14))までユーザがドラッグ操作を行ったことを検出する。キャラクタ操作検出部193は、初期タッチ位置の座標51Aを起点として、座標51Aと座標51Cとによって規定されるベクトル52Cを、自キャラクタ100を移動させる方向として検出する。
<2.操作オブジェクトの基本構成>
本実施形態に係る操作オブジェクト40(図4参照)は、ユーザのタッチスクリーン130に対する接近操作が検知されるとタッチスクリーン130に表示される。操作オブジェクト40は、ユーザが自キャラクタ100を移動させる方向を示す弾性状のオブジェクトである。操作オブジェクト40は、図6の状態(A)に示すように、指接触時の初期形状として、タッチスクリーン130に接触した位置(例えば、図5の初期タッチ位置座標51A)である接触開始点に関連付けられた基準位置の周囲に、円形状の基部42を有するように形成される。なお、基準位置は、最初に指がタッチスクリーン130に触れた座標でなくても良く、例えば、最初に指が触れたフレームの数フレーム後のフレームにおいて指が触れていた座標であっても良い。
ユーザがタッチスクリーン130上で接触開始点から接触終了点(ここで、接触終了点とは、ユーザの指などがタッチスクリーン130に接触した状態での最終地点を意味する)までドラッグ操作を行うと、図6の状態(B)に示すように操作オブジェクト40は、ユーザの指に引っ張られるような弾性変形を伴う。このとき、操作オブジェクト40は、ドラッグ操作の接触開始点に対応して表示される基部(拡大部)42に加えて、ドラッグ操作の接触終了点(注:指はタッチスクリーン130に接触したままの状態である。)付近に位置する先端部44と、基部42と先端部44との間を接続する接続部46とを含むように構成される。このように操作オブジェクト40は、接触開始点から接触終了点に向けて入力されたドラッグ操作の方向に弾性的に延ばされるように形成される。また、ユーザが接触終了点を接触状態に維持しつつタッチスクリーン130上において更に指などを移動させた場合、先端部44もそれに追従して更に移動し操作オブジェクト40の延びる向きも変化する。ユーザによるドラッグ操作が終了した際に(すなわち、タッチスクリーン130上において接触終了点からユーザの指が離れた際に)、弾性変形した操作オブジェクト40が、その復元力に従って、接触開始点に向けて段階的に萎縮して、図6の状態(A)に示した初期形状に復元するように表示され、一定時間経過後に非表示となる。
なお、図6の状態(A)では、接触開始点を中心に円形状の基部42を形成しているが、必ずしもこれに限定されない。例えば、基部42を接触開始点から一定距離だけ上部または下部にずらして形成しても良い。すなわち、操作オブジェクト40の基部42は、接触開始点に関連付けられた所定の位置(基準位置)に対応して表示されていても良い。また、接触開始点に形成した操作オブジェクト40(基部42)をドラッグ操作に応じて変形させずに、接触開始点から接触終了点に向けて、操作オブジェクトの一部を構成する別のオブジェクトを表示させるようにしても良い。
<3.本ゲームプログラムの動作例の説明>
図7から図11を参照して、本ゲームプログラムにおける動作例について説明する。
本実施形態に係るゲームプログラムは、ユーザの操作によって活動する自キャラクタ100が、複数のミッション(ゲームステージ)を順次クリアしてゆき、全てのミッションをクリアしたときにゲームクリア(エンディング)となるゲームであり、各ゲームステージやゲームステージを選択するためのステージが途切れなく(すなわち、シームレスに)連続している所謂「シームレスフィールド」を採用している。
図7は、本ゲームプログラムにおけるマルチプレイを実現するためのユーザ端末10およびサーバ20の動作例について説明するフローチャートである。図7に示される処理は、制御部190がゲームプログラム151を、制御部290がゲームプログラム251をそれぞれ実行することにより実現される。
ステップS1000において、ユーザ端末10の制御部190は、サーバ20に対してマルチプレイに参加するための参加リクエストを送信する。ステップS1002において、サーバ20の制御部290は、ユーザが操作するユーザ端末10からの参加リクエストを受け付ける。
ステップS1004において、サーバ20の制御部290は、サーバ処理部292として、マルチプレイに参加するユーザが規定人数に達したと判断したことに応じて、サーバ20側の仮想空間を規定して、当該仮想空間に所定のフィールド(本プログラムでは、シームレスフィールド)を形成するためのオブジェクトを配置する。さらに、制御部290は、送受信部291として、フィールドを形成するためのオブジェクトの情報をユーザ端末10に送信する。
ステップS1006において、ユーザ端末10の制御部190は、オブジェクト制御部195として、サーバ20から受信した情報に基づいてゲーム情報152に格納されるオブジェクトをユーザ端末10側の仮想空間に配置する。これにより、制御部190は、仮想空間にフィールドを形成する。
ステップS1008において、ユーザ端末10の制御部190は、オブジェクト制御部195として、ゲーム情報152に格納される自キャラクタ100の情報に従い、自キャラクタ100をフィールドに配置(生成)する。さらに、制御部190は、自キャラクタ100の情報をサーバ20に送信する。
ステップS1010において、サーバ20の制御部290は、データ管理部293として、ユーザ端末10から受信したキャラクタ情報に基づいてユーザ管理テーブル253Aに格納される自キャラクタ100の情報を保存する。なお、同ステップにおいて、制御部290は、マルチプレイに参加する他のユーザ端末10から、当該他のユーザ端末10のユーザが操作するキャラクタ(以下、「他キャラクタ」とも称する)の情報を受信して、ユーザ管理テーブル253Aの情報を保存する。
ステップS1012において、サーバ20の制御部290は、サーバ処理部292として、ユーザ管理テーブル253Aに格納される他キャラクタの情報に基づいて、他キャラクタを生成してフィールドに配置する。さらに、制御部290は、送受信部291として、他キャラクタの情報をユーザ端末10に送信する。
ステップS1014において、ユーザ端末10の制御部190は、オブジェクト制御部195として、サーバ20から受信した他キャラクタの情報に基づいて他キャラクタを生成してフィールドに配置する。
ステップS1016において、サーバ20の制御部290は、サーバ処理部292として、オブジェクト管理テーブル252Aを参照して、ミッション攻略のための対象であるミッション対象キャラクタを生成してフィールドに配置する。また、制御部290は、ミッション対象キャラクタおよびミッション対象キャラクタと関連付けられたミッションの情報をマルチプレイに参加する各ユーザ端末10に送信する。
ステップS1018において、ユーザ端末10の制御部190は、オブジェクト制御部195として、サーバ20から受信したミッション対象キャラクタの情報に基づいて、ミッション対象キャラクタを生成してフィールドに配置する。
ステップS1020において、ユーザ端末10の制御部190は、キャラクタ操作検出部193として、タッチスクリーン130に対するドラッグ操作を検出し、当該ドラッグ操作のタッチ開始位置およびタッチ継続位置により定まる方向を検出する。制御部190は、キャラクタ操作検出部193が検出した方向に、仮想カメラおよび自キャラクタ100を移動させる。さらに、制御部190は、移動後の自キャラクタ100の仮想空間における位置座標をサーバ20に送信する。なお、他の局面において、制御部190は、仮想空間における自キャラクタ100が向いている方向、自キャラクタ100の移動速度などを併せてサーバ20に送信し得る。
ステップS1022において、サーバ20の制御部290は、サーバ処理部292として、ユーザ端末10から受信した自キャラクタ100の位置座標に基づいて、サーバ20側の仮想空間の自キャラクタ100の位置を更新する。なお、同ステップにおいて、制御部290は、サーバ20側の仮想空間における他キャラクタの位置も更新する。制御部290は、更新した他キャラクタの位置情報をユーザ端末10に送信する。
ステップS1024において、ユーザ端末10の制御部190は、オブジェクト制御部195として、サーバ20から受信した他キャラクタの位置情報に基づいて、仮想空間(フィールド)内において他キャラクタを移動する。
ステップS1026において、サーバ20の制御部290は、サーバ処理部292として、ミッション対象キャラクタを移動する。また、制御部290は、送受信部291として機能し、移動後のミッション対象キャラクタの位置情報をユーザ端末10に送信する。
ステップS1028において、ユーザ端末10の制御部190は、オブジェクト制御部195として、サーバ20から受信したミッション対象キャラクタの位置情報に基づいて、仮想空間内においてミッション対象キャラクタを移動する。
また、ユーザ端末10およびサーバ20はそれぞれ、その他ゲームを進行するために必要な処理を実行する。ゲームを進行するために必要な処理は、一例として、自キャラクタおよび対象キャラタの攻撃処理、これら攻撃のヒット判定処理、ダメージ処理、ドロップアイテム処理、経験値処理、アイテム取得処理、などが挙げられる。
図8は、ミッション対象キャラクタの発生位置に関する画像の表示処理について説明するフローチャートである。
図8のステップS1100において、ユーザ端末10の制御部190は、ユーザの移動操作により、自キャラクタ100が図9に示すミッション発注所60(ミッション選択領域の一例)内に移動したか否かを判断する。ミッション発注所60は、フィールドMF内の所定の位置に一つ以上配置されている。上述の通り、各ミッション発注所60には、異なる(あるいは少なくとも一部が重複していても良い)ミッションが関連付けられている。
自キャラクタ100がミッション発注所60内に移動したと判定された場合には(ステップS1100のYes)、ステップS1102において、制御部190は、ミッション発注所60が選択されたと判定し、選択されたミッション発注所60に関する情報を生成し、当該情報をサーバ20へ送信する。
ステップS1104において、サーバ20の制御部290は、記憶部250に記憶されているミッション管理テーブル252Bを読み出す。そして、ステップS1106において、制御部290は、ミッション管理テーブル252Bからミッション発注所60に関連付けられた情報(以下、ミッション発注所情報と称する)を取得し、このミッション発注所情報をユーザ端末10へ送信する。なお、上述の通り、ミッション管理テーブル252Bに保存されているミッション発注所情報には、当該ミッション発注所60で選択可能なミッションの内容が含まれている。
ステップS1108において、ユーザ端末10の制御部190は、サーバ20から受信したミッション発注所情報に基づいて、タッチスクリーン130上に、選択されたミッション発注所60に関連付けられた少なくとも一つ(ここでは、2つ)のミッションのメニュー画面65を表示する(図10参照)。メニュー画面65には、例えば、ミッション1として「キャラクタ200を5匹倒せ!」というミッションとともに、ミッション対象キャラクタ200の出現場所、ミッションクリアの難易度、ミッションクリア時の報酬が表示される。また、ミッション2として、「キャラクタ400を救出せよ!」というミッションとともに、ミッション対象キャラクタ400の出現場所、ミッションクリアの難易度、ミッションクリア時の報酬が表示される。なお、メニュー画面65の表示は、自キャラクタ100がミッション発注所60内に移動した場合に限られない。例えば、制御部190は、ユーザによりミッション発注所60がタップされた場合などにメニュー画面65を表示しても良い。
続いて、ステップS1110において、制御部190は、ユーザの操作により、表示されたミッション1および2のうちいずれか一つが選択されたか否かを判定する。なお、ユーザは、一度に複数のミッションを選択することもできる。
いずれかのミッションが選択されたと判定された場合には(ステップS1110のYes)、ステップS1112において、制御部190は、選択されたミッションに関する情報(以下、ミッション選択情報と称する)を生成し、サーバ20へ送信する。例えば、ユーザがミッション1を選択した場合には、制御部190は、ミッション1が選択されたことを、サーバ20へ送信する。
ステップS1114において、サーバ20の制御部290は、ユーザ端末10から受信したミッション選択情報を、記憶部250のミッション管理テーブル252Bに保存する(ミッション管理テーブル252Bを更新する)。続いて、ステップS1116において、制御部290は、更新されたミッション管理テーブル252Bの情報(以下、ミッション更新情報と称する)を取得し、各ユーザ端末10へ送信する。ミッション更新情報は、特に、ミッション発注所60においてユーザにより選択されたミッションと、選択されたミッションに関連付けられたミッション対象キャラクタ(例えば、キャラクタ200やキャラクタ400)を含む。これにより、ユーザ端末10がミッション1を選択したことに関する情報が、サーバ20を介して、他のユーザ端末へも送信される。
ステップS1118において、ユーザ端末10の制御部190は、サーバ20から受信したミッション更新情報を記憶部150に保存する。すなわち、制御部190は、ミッション発注所60においてユーザにより選択されたミッションと、選択されたミッションに関連付けられたミッション対象キャラクタとに関する情報を、記憶部150に記憶する。
ステップS1120において、制御部190は、メニュー画面65を非表示とするとともに、自キャラクタ100をミッション発注所60の外側へ移動させる。具体的には、制御部190は、図11に示すように、自キャラクタ100を、ミッション発注所60に対して自キャラクタ100の進行方向側である右側へ移動させる。
ステップS1122において、制御部190は、タッチスクリーン130内の所定位置に、ミッション対象キャラクタの発生位置に関する情報を示す位置関連画像500A,500B(これらをまとめて位置関連画像500と称する場合もある)を表示する。図11に示すように、これらの位置関連画像500A,500Bは、ゲームの進行上で邪魔になりにくい位置、例えば、水平方向におけるタッチスクリーン130の端部(例えば、タッチスクリーン130の右端側)に表示される。位置関連画像500Aは、ミッション1に関連付けられたミッション対象キャラクタ200の発生位置に関する情報を示す画像であって、例えば、キャラクタ200の顔が表示されている。位置関連画像500Aの下側には、自キャラクタ100の現在位置からキャラクタ200の発生位置までの距離(ここでは、例えば2km)が表示されている。また、位置関連画像500Bは、ミッション2に関連付けられたミッション対象キャラクタ400の発生位置に関する情報を示す画像であって、例えば、ミッション対象キャラクタ400の顔が表示されている。位置関連画像500Bの下側には、自キャラクタ100の現在位置からキャラクタ400の発生位置までの距離(ここでは、例えば5km)が表示されている。このように、自キャラクタ100がフィールドの所定領域に配置されたときに、制御部190は、ミッション関連情報に基づいて、位置関連画像500A,500Bをタッチスクリーン130上の所定位置に表示させる。
ステップS1124において、ユーザ端末10の制御部190は、ユーザのドラッグ操作の入力を受けたか否かを判定する。ドラッグ操作の入力を受けたと判定された場合には(ステップS1124のYes)、ステップS1126において、制御部190は、ドラッグ操作に基づいて、自キャラクタ100を移動させる。
ステップS1128において、サーバ20の制御部290は、ユーザ端末10から受信した自キャラクタ100の位置座標に基づいて、サーバ20側の仮想空間の自キャラクタ100の位置を更新する。そして、制御部290は、更新された自キャラクタ100の位置情報を、ユーザ端末10以外の他のユーザ端末へ送信する。
<4.検知オブジェクトが検知された場合の次々フィールド読み込み処理の説明>
続いて、図9および図11とともに、図12および図13を参照して、検知オブジェクトが検知された場合の次々フィールド読み込み処理について説明する。図12は、検知オブジェクトが検知された場合の次々フィールドの読み込み処理について説明するフローチャートである。図13の状態(a)〜(c)は、本実施形態に係るゲーム画面の一例を示す図である。なお、図12のフローチャートでは、特に、ユーザ端末10の制御部190での処理について説明する。
ステップS1200において、ユーザ端末10の制御部190は、自キャラクタ100の現在位置座標に対応付けられた現フィールド(例えば、図9等に示すミッション選択用のフィールドMF)のデータ、および、現フィールドMFと連続して配置される(シームレスに繋がる)次フィールド(以下、次フィールドBF1と称する)のデータをサーバ20からダウンロードし、記憶部150に格納する。そして、制御部190は、現フィールドMFのデータおよび次フィールドBF1のデータを記憶部150から読み込んで、これらのデータに基づいてゲーム情報152に格納されるオブジェクトをユーザ端末10側の仮想空間に配置して現フィールドMFおよび次フィールドBF1を生成する。そして、ステップS1202において、制御部190は、仮想空間に生成した現フィールドMFをタッチスクリーン130に表示する。
ステップS1204において、制御部190は、自キャラクタ100の移動に伴い、図9等に示す検知オブジェクト80がタッチスクリーン130内に含まれるようになったか否かを判定する。検知オブジェクト80は、ゲーム情報152に格納されるオブジェクトの一例であって、サーバ20から受信した情報に基づいてユーザ端末10側の仮想空間の所定の位置に配置されている。例えば、検知オブジェクト80は、各フィールドの境界領域から一定距離だけ内側の位置に配置され得る。なお、図9から図11において破線で図示しているように、検知オブジェクト80は、タッチスクリーン130上では非表示とされている(視認不可能な状態で配置されている)ことが好ましい。
自キャラクタ100の移動に伴って検知オブジェクト80がタッチスクリーン130内に含まれるようになったと判定された場合には(ステップS1204のYes)、ステップS1206において、制御部190は、検知オブジェクト80に対応するフィールド(本例では、現フィールドMFと反対側において次フィールドBF1とシームレスに繋がるフィールド(以下、次々フィールドBF2と称する))に関する情報を、サーバ20へ送信する。
ステップS1208において、サーバ20の制御部290は、ユーザ端末10から受信した次々フィールドBF2に関する情報に基づいて、次々フィールドBF2を形成するためのデータをユーザ端末10に送信する。そして、ユーザ端末10の制御部190は、サーバ20から送信される次々フィールドBF2のデータのダウンロードおよび読み込みを開始する。
なお、制御部190は、検知オブジェクト80に対応するフィールド(例えば次々フィールドBF2)のデータをサーバ20からダウンロードして読み込んでいる間にも、ユーザの操作に基づいて自キャラクタ100を移動制御することができる。例えば、制御部190は、次々フィールドBF2のデータの読み込み中に、自キャラクタ100を現フィールドMFあるいは次フィールドBF1内で移動させることができる。そして、次々フィールドBF2のデータの読み込みが完了すると、読み込みが完了した次々フィールドBF2への自キャラクタ100の移動が可能となる。このようにして、制御部190は、位置関連画像500A,500Bおよびこれらに付随して表示された情報に基づいてなされたユーザのドラッグ操作の入力を受け付けることで、自キャラクタ100をシームレスに繋がった複数のフィールド間で連続的に移動させることができる。
ところで、次々フィールドBF2のデータ量が大きい場合には、次々フィールドBF2のデータをサーバ20からダウンロードするとともに読み込んで、ユーザ端末10側で次々フィールドBF2を生成するまでに時間がかかってしまう。そのため、次々フィールドBF2の生成が完了してタッチスクリーン130に次々フィールドBF2が描画可能な状態となるまで、自キャラクタ100が次々フィールドBF2へ移動することができないように何らかの時間稼ぎを行う必要がある。
そこで、本実施形態においては、次々フィールドBF2が描画可能となるまでの時間を確保すべく、以下のステップS1210以降の処理を行う。
ステップS1210において、サーバ20の制御部290は、次々フィールドBF2のデータ量が所定の閾値以上であるか否かを判定し、その判定結果をユーザ端末10へ送信する。
次々フィールドBF2のデータ量が所定の閾値よりも少ないと判定された場合には(ステップS1210のNo)、ステップS1212において、ユーザ端末10の制御部190は、ドラッグ操作による自キャラクタ100の移動に基づいて、現フィールドMFに連続して次フィールドBF1をタッチスクリーン130に表示させる。
そして、ステップS1214において、制御部190は、次々フィールドBF2のデータの読み込みが完了したか否か、すなわち次々フィールドBF2がタッチスクリーン130に描画可能な状態となったか否かを判定する。次々フィールドBF2のデータの読み込みが完了したと判定された場合には(ステップS1214のYes)、ステップS1216において、制御部190は、ドラッグ操作による自キャラクタ100の移動に基づいて、次フィールドBF1に連続して次々フィールドBF2をタッチスクリーン130に表示させる。
一方、次々フィールドBF2のデータ量が所定の閾値以上であると判定された場合には(ステップS1210のYes)、ユーザ端末10の制御部190は、その判定情報をサーバ20に送信する。そして、サーバ20の制御部290は、所定のキャラクタオブジェクト(例えば、相手キャラクタ200)の情報をユーザ端末10に送信し、ステップS1218において、ユーザ端末10の制御部190は、サーバ20から受信した相手キャラクタ200に関する情報に基づいて、ゲーム情報152に格納される相手キャラクタ200をユーザ端末10側の次フィールドBF1の所定位置に配置する。
ステップS1220において、制御部190は、ドラッグ操作による自キャラクタ100の移動に基づいて、現フィールドMFに連続して次フィールドBF1をタッチスクリーン130に表示させる。図13の状態(a)に示すように、次フィールドBF1の所定位置には、相手キャラクタ200が表示されている。自キャラクタ100は、相手キャラク200と対戦して相手キャラクタ200を倒す(例えば、自キャラクタ100から受ける作用に対応する所定のパラメータ(ヒットポイントHP等)をゼロにする)まで、相手キャラクタ200よりも先へ進むことができない。このように、次フィールドBF1に表示される相手キャラクタ200によって、自キャラクタ100の次々フィールドBF2への移動が阻止されている。
次フィールドBF1に相手キャラクタ200が表示されている間に、ステップS1222において、制御部190は、次々フィールドBF2のデータの読み込みが完了したか否かを判定する。次々フィールドBF2のデータの読み込みが完了したと判定された場合には(ステップS1222のYes)、ステップS1224において、制御部190は、相手キャラクタ200の表示態様を変更する。例えば、図13の状態(b)に示すように、制御部190は、タッチスクリーン130において、相手キャラクタ200のヒットポイントHPをゼロにしたうえで、相手キャラクタ200が倒れる勝利演出を表示させることができる。なお、勝利演出の後に、相手キャラクタ200を非表示とすることが好ましい。
相手キャラクタ200は、例えば、自キャラクタ100から受ける作用に対応する所定のパラメータの値(例えば、自キャラクタ100からの攻撃に基づいて徐々に減少していくヒットポイントHP)が、次々フィールドBF2のデータの読み込み完了率に対応しても良い。例えば、相手キャラクタ200のヒットポイントHPの減少率、すなわち自キャラクタ100の攻撃に基づくダメージ量が、次々フィールドBF2のデータ読込の完了率と対応していても良い。具体的には、制御部190は、次々フィールドBF2のデータの読み込み処理が進むにつれて、すなわち、データ読込完了率が高くなるにつれて、自キャラクタ100から相手キャラクタ200へ与えられる1回のダメージ量の上限値が大きくなるようにダメージ量を制御することが好ましい。これにより、自キャラクタ100の攻撃力が小さければ通常の攻撃力に対応するダメージ量が相手キャラクタ200に与えられ、攻撃力が大きくても相手キャラクタ200に与えられるダメージ量の上限値が完了率によって制限され得る。通常は自キャラクタ100の攻撃力の大小によって相手キャラクタ200に与えられるダメージ量が変動するが、本例においては、ダメージ量の上限値をデータ読込完了率に対応させることによって、相手キャラクタ200に与えられるダメージ量の上限値を適切に制限し、次々フィールドBF2のデータ読み込みの完了よりも早い段階で相手キャラクタ200が倒されてしまうことを防ぐことができる。
なお、相手キャラクタ200に与えられるダメージ量の上限値がデータ読込完了率と対応する代わりに、相手キャラクタ200のヒットポイントHPの上限値が次々フィールドBF2のデータ読込の完了率と対応していても良い。例えば、次々フィールドBF2のデータ読み込みの完了率が高くなるにつれて相手キャラクタ200のヒットポイントHPの上限値を低くする構成としても良い。この方法によっても、次々フィールドBF2のデータ読み込みの完了よりも早い段階で相手キャラクタ200が倒されてしまうことを防ぐことができる。
次々フィールドBF2のデータ読み込みが完了して相手キャラクタ200が倒されると、タッチスクリーン130に描画可能となった次々フィールドBF2へ自キャラクタ100が移動することができる。すなわち、ステップS1224で相手キャラクタ200の表示態様が変更されると、ステップS1216において、制御部190は、図13の状態(c)に示すように、ドラッグ操作による自キャラクタ100の移動に基づいて、次フィールドBF1とシームレスに繋がる次々フィールドBF2をタッチスクリーン130に表示させる。これにより、制御部190は、自キャラクタ100を次フィールドBF1から次々フィールドBF2へと連続的に移動させることができる。
以上説明したように、本実施形態によれば、制御部190は、現フィールドMFと、現フィールドMFから自キャラクタ100がシームレスに移動可能な次フィールドBF1と、次フィールドBF1から自キャラクタ100がシームレスに移動可能な次々フィールドBF2とを含む仮想空間を規定し、これらのフィールドMF,BF1,BF2の各画像データを所定のタイミングでダウンロードするとともに読み込むことにより、読み込んだ各画像データをタッチスクリーン130に表示させる。各画像データの表示の際に、制御部190は、自キャラクタ100が現フィールドMFに配置されている状態において検知オブジェクト80がタッチスクリーン130内に含まれるようになった場合に、次々フィールドBF2のデータの読み込みを開始し、次々フィールドBF2のデータ量が所定の閾値以上である場合に、次フィールドBF1に、自キャラクタ100が所定の作用を及ぼすことが可能な相手キャラクタ200を配置し、次々フィールドBF2のデータの読み込みが完了するまで、相手キャラクタ200によって自キャラクタ100の次々フィールドBF2への移動を阻止する。これにより、シームレスフィールドを採用したゲームにおいて、ゲーム性を維持しつつ、次々フィールドBF2のデータの読み込み完了までの時間を確保することができる。
<変形例>
図14および図15は、本実施形態の変形例に係るゲーム画面の一例を示す図である。
図14に示す変形例では、ユーザ端末10の制御部190は、ステップS1220において次フィールドBF2および次フィールドBF2に配置される相手キャラクタ200をタッチスクリーン130に表示する際に、サーバ20からデータを読み込み中である次々フィールドBF2に対応する仮データADを次フィールドBF1に隣接するようにタッチスクリーン130に表示させることができる。次々フィールドBF2の代替として仮データADをタッチスクリーン130に描画しておくことで次々フィールドBF2のデータ読込完了までの時間を稼ぐことができる。
仮データADは、現フィールドMF,次フィールドBF2および次々フィールドBF2のデータとは異なる用途に用いられる低データ量の画像データから切り出すことが好ましい。例えば、仮データADは、図15に示すマップ画像70から切り出すことができる。このマップ画像70は、いわゆるミニマップと呼ばれるものであり、本ゲームプログラムにおけるシームレスフィールドの縮小三次元マップが表示されている。
マップ画像70は、例えば、図4に示すUI画像300Aがユーザに選択された場合にタッチスクリーン130に表示され得る。マップ画像70は、例えば、現フィールドMF、次フィールドBF1、および次々フィールドBF2を含むシームレスフィールドの縮小三次元マップとして構成されている。そして、この三次元マップ上において、自キャラクタ100の現在位置には自キャラクタ100が表示されるとともに、相手キャラクタ200,400の発生位置には、各キャラクタ200,400の画像が表示されている。これにより、ユーザは、自キャラクタ100の現在位置と相手キャラクタ200,400の発生位置とから、自キャラクタ100が移動すべき方向を把握することができる。
このマップ画像70のうち次々フィールドBF2に相当する部分を切り出すことで、簡便に仮データADを生成することができる。なお、仮データADとしては、マップ画像70の一部を切り出した画像をそのまま使用しても良く、マップ画像70の切り出し部分にぼかし等の所定の画像処理を施したものを使用しても良い。
なお、上記の実施形態においては、次々フィールドBF2のデータ量が所定の閾値以上である場合に次フィールドBF1に相手キャラクタ200を配置しているが、ユーザ端末10のデータ処理能力に応じて次フィールドBF1への相手キャラクタ200の出現可否が変更可能であっても良い。データ処理能力が高いユーザ端末10の場合は、次々フィールドBF2のデータ読み込みが完了するまでの時間確保が必要とされない場合もある。そのため、制御部190は、次々フィールドBF2のデータ量と自ユーザ端末10のデータ処理能力とを比較して、次々フィールドBF2のデータ読み込みが所定時間内に完了可能であると判定した場合には、相手キャラクタ200を出現させることなくシームレスフィールド(次フィールドBF1から次々フィールドBF2へ)の描画処理を行うことが可能である。
また、上記の実施形態においては、制御部190は、検知オブジェクト80がタッチスクリーン130に含まれている状態となった場合に、次々フィールドBF2のダウンロードを開始しているが、この例に限られない。制御部190は、検知オブジェクト80と自キャラクタ100との位置関係が所定条件を満たしている、例えば、自キャラクタ100が検知オブジェクト80に対して一定距離内に近づいた場合に、次々フィールドBF2のダウンロードを開始しても良い。なお、制御部190は、仮想空間内に配置される仮想カメラと検知オブジェクト80との位置関係により、次々フィールドBF2のダウンロードを開始しても良い。
上記の実施形態は、本発明の理解を容易にするための例示に過ぎず、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更、改良することができると共に、本発明にはその均等物が含まれることは言うまでもない。