以下、本発明の実施形態について図面を参照して説明する。
(ゲームシステムの概要)
図1を参照して、一実施形態に係るゲームシステム1の概要について説明する。図1は、本実施形態に係るゲームシステム1のブロック図である。図2は、フィールド画像の説明図である。ゲームシステム1は、サーバ装置10と、1つ以上の端末装置20と、を備える。図1では簡便のため、3つの端末装置20を図示しているが、端末装置20の数は2つ以上であればよい。
サーバ装置10は、例えばゲーム運営者が管理するサーバ等の情報処理装置である。端末装置20は、例えば携帯電話、スマートフォン、タブレット端末、PC(Personal Computer)、又はゲーム装置等の、ユーザによって使用される情報処理装置である。端末装置20は、本実施形態に係るゲームのアプリケーションを実行可能である。ゲームのアプリケーションは、ネットワーク30を介してサーバ装置10や所定のアプリケーション配信サーバから端末装置20に受信されてもよく、あるいは端末装置20に備えられた記憶装置又は端末装置20が読取可能なメモリカード等の記憶媒体に予め記憶されていてもよい。サーバ装置10及び端末装置20は、ネットワーク30を介して通信可能に接続される。例えば、サーバ装置10及び端末装置20が協動して、ゲームに関する多様な処理を実行する。
なお、ネットワーク30は、無線通信網や、インターネット、VPN(Virtual Private Network)、WAN(Wide Area Network)、有線ネットワーク、又はこれらの任意の組み合わせ等を含んでよい。
ここで、本実施形態に係るゲームの概要について説明する。本実施形態に係るゲームは、例えばロールプレイングゲーム又はシミュレーションゲーム等であって、ゲームの実行に伴い、ゲーム媒体が用いられる。例えば、本実施形態に係るゲームは、3次元の仮想空間内のフィールド上でゲーム媒体を移動させるゲームである。
ゲーム媒体は、ゲームに使用される電子データであり、例えば、カード、アイテム、ポイント、サービス内通貨(又はゲーム内通貨)、チケット、キャラクタ、アバタ、パラメータ等、任意の媒体を含む。また、ゲーム媒体は、ステータス情報、ゲームパラメータ情報(体力値及び攻撃力等)又は能力情報(スキル、アビリティ、呪文、ジョブ等)のような、ゲーム関連情報であってもよい。また、ゲーム媒体は、ユーザによってゲーム内で取得、所有、使用、管理、交換、合成、強化、売却、廃棄、又は贈与等され得る電子データであるが、ゲーム媒体の利用態様は本明細書で明示されるものに限られない。
以下、特に明示した場合を除き、「ユーザが所有するゲーム媒体」とは、ユーザのユーザIDに対応付けられたゲーム媒体を示す。また、「ゲーム媒体をユーザに付与する」とは、ゲーム媒体をユーザIDに対応付けることを示す。また、「ユーザが所有するゲーム媒体を破棄する」とは、ユーザIDとゲーム媒体との対応付けを解消することを示す。また、「ユーザが所有するゲーム媒体を消費する」とは、ユーザIDとゲーム媒体との対応付けの解消に応じて、何らかの効果又は影響をゲーム内で発生させ得ることを示す。また、「ユーザが所有するゲーム媒体を売却する」とは、ユーザIDと当該ゲーム媒体との対応付けを解消し、かつ、ユーザIDに他のゲーム媒体(例えば、仮想通貨又はアイテム等)を対応付けることを示す。また、「あるユーザが所有するゲーム媒体を他のユーザに譲渡する」とは、あるユーザのユーザIDとゲーム媒体との対応付けを解消し、かつ、他のユーザのユーザIDに当該ゲーム媒体を対応付けることを示す。
本実施形態に係るゲームは、概略として、第1ゲームパートと、第2ゲームパートと、第3ゲームパートと、を含む。
第1ゲームパートにおいて、ユーザは、ユーザキャラクタを操作して、仮想空間内のフィールドを探索しながら、ゲームを進行させる。具体的には、ユーザ操作に応じてユーザキャラクタがフィールド上を移動する。フィールドには、例えば町及びダンジョン等の多様なエリアが設けられており、例えば町の住人キャラクタとの会話、及びダンジョン内で遭遇する敵キャラクタとの対戦等、エリアに応じた多様なイベントが発生する。イベントが実行されることによって、ゲームのメインストーリーが進行する。また第1ゲームパートにおいて、例えば敵キャラクタとの対戦に勝利すると、例えばアイテム、仮想通貨、又はキャラクタ等のゲーム媒体がユーザに付与され得る。付与されたゲーム媒体は、例えば後述する第3ゲームパートにおいて使用可能である。
第2ゲームパートにおいて、ユーザは、ゲーム媒体の保有状況を変更する。ユーザは、例えばアイテム、仮想通貨、及びキャラクタ等の多様なゲーム媒体を収集する。具体的には、フィールド上に設けられた採掘場及び釣り堀等の特定のエリアにユーザキャラクタを移動させ、又は特定のキャラクタ等のゲーム媒体を選択(例えば、画面に対するタッチ操作)すると、ゲーム媒体が取得可能なサブイベントが発生する。サブイベントは、例えばサブストーリーの進行、及びミニゲームの実行等を含むが、サブイベントの内容はこれらに限られない。サブイベントの実行結果に応じて、多様なゲーム媒体がユーザに付与され得る。付与されたゲーム媒体は、例えば後述する第3ゲームパートにおいて使用可能である。
第3ゲームパートにおいて、ユーザは、ゲーム媒体に関するパラメータを変更する。ユーザは、例えばユーザキャラクタの強化を行う。具体的には、上述したように第1ゲームパート及び第2ゲームパートにおいてユーザに付与されたゲーム媒体が消費されることによって、ユーザキャラクタの多様なゲームパラメータが変化する。ゲームパラメータは、例えばユーザキャラクタのレベル、HP、攻撃力、防御力、属性、及びスキル等を含むが、これらに限られない。ユーザキャラクタのゲームパラメータの変化に応じて、ユーザキャラクタが強化される。ユーザキャラクタの強化によって、第1ゲームパートにおける敵キャラクタとの対戦でユーザキャラクタが勝利できる蓋然性が高まる。
このように、本実施形態に係るゲームにおいて、ユーザは第1ゲームパート、第2ゲームパート、及び第3ゲームパートを繰り返し行う。なお、変形例では、第1ゲームパート、第2ゲームパート、及び第3ゲームパートのいずれか1つ又は2つが省略されてもよいし、他のゲームパートが追加されてもよい。
(サーバ装置の構成)
サーバ装置10の構成について具体的に説明する。サーバ装置10は、サーバコンピュータにより構成される。サーバ装置10は、複数台のサーバコンピュータにより協動して実現されてもよい。
サーバ装置10は、サーバ通信部11と、サーバ記憶部12と、サーバ制御部13と、を備える。
サーバ通信部11は、外部装置と無線又は有線によって通信し、情報の送受信を行うインタフェースを含む。サーバ通信部11は、例えば無線LAN(Local Area Network)通信モジュール又は有線LAN通信モジュール等を含んでもよい。サーバ通信部11は、ネットワーク30を介して、端末装置20との間で情報を送受信可能である。
サーバ記憶部12は、例えば記憶装置であって、ゲームの処理に必要な種々の情報及びプログラムを記憶する。例えばサーバ記憶部12は、ゲームのアプリケーションを記憶する。
また、サーバ記憶部12は、3次元の仮想空間内に配置された種々のオブジェクトに投影(テクスチャマッピング)するための種々の画像(テクスチャ画像)を記憶する。
例えば、サーバ記憶部12は、ユーザキャラクタの画像を記憶する。以下、ユーザキャラクタを第1ゲーム媒体と称し、第1ゲーム媒体の画像に基づきフィールドオブジェクト(後述)上に描画(配置)されるオブジェクトを第1オブジェクトとも称する。なお、本実施形態では、仮想空間内では、第1オブジェクトは1つだけ表現されるが、2つ以上の第1オブジェクトが表現されてもよい。なお、第1オブジェクトは、複数の第1ゲーム媒体のグループであってもよい。また、仮想空間内で利用される第1ゲーム媒体(及びそれに基づく第1オブジェクト)は、ユーザにより適宜交換可能とされてもよい。
また、サーバ記憶部12は、例えば建物、壁、樹木、又はNPC(Non Player Character)等のような、ゲーム媒体に係る画像を記憶する。以下、第1ゲーム媒体とは異なる任意のゲーム媒体(例えば建物、壁、樹木、又はNPC等)であって、後述するフィールドオブジェクトに配置されうるゲーム媒体を第2ゲーム媒体と称し、第2ゲーム媒体が投影されたオブジェクトを第2オブジェクトとも称する。なお、本実施形態では、第2オブジェクトは、後述するフィールドオブジェクトに対して固定されたオブジェクトや、後述するフィールドオブジェクトに対して移動可能なオブジェクト等を含んでもよい。また、第2オブジェクトは、後述するフィールドオブジェクトに常に配置されるオブジェクトや、所定の条件が満たされた場合にだけ配置されるオブジェクト等を含んでもよい。
また、サーバ記憶部12は、例えば空又は遠景等の背景の画像(背景画像)を記憶する。以下、背景画像が投影されたオブジェクトを背景オブジェクトともいう。なお、背景画像は複数種類用意され、使い分けられてもよい。また、背景の一部を形成するパーツ(例えば、雪や葉のような動きのある物体に係るパーツ)が複数種類用意され、パーツが動的に描画されてもよい。
また、サーバ記憶部12は、仮想空間におけるフィールド(例えば、地面)の画像(フィールド画像)を記憶する。フィールド画像は、後述するフィールド面に投影される。以下、フィールド画像がフィールド面に投影されたオブジェクトを、フィールドオブジェクトとも称する。なお、フィールドオブジェクトは、仮想空間内における仮想のフィールド(地面)として用いられる。
本実施形態では、一例として、ユーザは、フィールドオブジェクト上の領域(後述するサブ領域R1)に所望の態様で特定の第2オブジェクト(後述するインフラ系オブジェクト)を配置することで、フィールドオブジェクト上で所望の街を生成できるものとする。例えば、ユーザは、フィールドオブジェクトを自身の街と捉えて、自身の街を所望の態様で発展等させることができる。
ここで、フィールド画像には、例えば図2に示すように、互いに直交するu軸及びv軸を有するテクスチャ座標系が設定されている。本実施形態において、フィールド画像には、横通路14と、縦通路15と、カーブ路17とが定められている。横通路14、縦通路15、及びカーブ路17は、フィールドオブジェクトにおける第1オブジェクト等が移動可能な通路を形成する。なお、図2では、特定の通路構成が示されるが、通路構成は任意である。また、通路は、ユーザにより生成や削除等が可能とされてもよい。また、図2では、フィールド画像は、矩形であるが、他の形態であってもよい。また、フィールド画像は複数種類用意され、使い分けられてもよい。
また、サーバ記憶部12は、第2オブジェクトと、フィールド画像のテクスチャ座標と、を対応付けた対応情報を記憶する。対応情報は、第2オブジェクトをフィールドオブジェクト上に配置する処理を実行するサーバ制御部13によって用いられる。
サーバ制御部13は、専用のマイクロプロセッサ又は特定のプログラムを読み込むことにより特定の機能を実現するCPUである。例えばサーバ制御部13は、表示部23に対するユーザ操作に応じてゲームのアプリケーションを実行する。また、サーバ制御部13は、ゲームに関する多様な処理を実行する。
例えば、サーバ制御部13は、フィールドオブジェクト及び第1オブジェクト等が表示されるフィールド画像を表示部23に表示させる。また、サーバ制御部13は、所定のユーザ操作に応じて、仮想空間内において第1オブジェクトを、フィールドオブジェクトに対して相対的に、フィールドオブジェクト上で移動させる。サーバ制御部13の具体的な処理の詳細は後述する。
(端末装置の構成)
端末装置20の構成について具体的に説明する。図1に示すように、端末装置20は、端末通信部21と、端末記憶部22と、表示部23と、入力部24と、端末制御部25とを備える。
端末通信部21は、外部装置と無線又は有線によって通信し、情報の送受信を行うインタフェースを含む。端末通信部21は、例えばLTE(Long Term Evolution)(登録商標)等のモバイル通信規格に対応する無線通信モジュール、無線LAN通信モジュール、又は有線LAN通信モジュール等を含んでもよい。端末通信部21は、ネットワーク30を介して、サーバ装置10との間で情報を送受信可能である。
端末記憶部22は、例えば一次記憶装置及び二次記憶装置を含む。例えば端末記憶部22は、半導体メモリ、磁気メモリ、又は光メモリ等を含んでもよい。端末記憶部22は、サーバ装置10から受信する、ゲームの処理に用いられる種々の情報及びプログラムを記憶する。ゲームの処理に用いられる情報及びプログラムは、端末通信部21を介して外部装置から取得されてもよい。例えば、ゲームのアプリケーションプログラムが、所定のアプリケーション配信サーバから取得されてもよい。以下、アプリケーションプログラムを、単にアプリケーションともいう。また例えば、上述したユーザに関する情報及び対戦相手であるゲーム媒体に関する情報等の一部又は全部が、サーバ装置10から取得されてもよい。
表示部23は、例えば液晶ディスプレイ又は有機EL(Electro-Luminescence)ディスプレイ等の表示デバイスを含む。表示部23は、多様な画像を表示可能である。表示部23は、例えばタッチパネルで構成され、多様なユーザ操作を検出するインタフェースとして機能する。
入力部24は、例えば表示部23と一体的に設けられたタッチパネルを含む入力インタフェースを含む。入力部24は、端末装置20に対するユーザ入力を受付可能である。また、入力部24は、物理キーを含んでもよいし、マウス等のようなポインティングデバイスをはじめとする任意の入力インタフェースを更に含んでもよい。
端末制御部25は、1つ以上のプロセッサを含む。端末制御部25は、端末装置20全体の動作を制御する。
端末制御部25は、端末通信部21を介して情報の送受信を行う。例えば、端末制御部25は、ゲームの処理に用いられる種々の情報及びプログラムを、サーバ装置10及び他の外部サーバの少なくとも一方から受信する。端末制御部25は、受信された情報及びプログラムを、端末記憶部22に記憶する。
端末制御部25は、ユーザの操作に応じてゲームのアプリケーションを起動する。端末制御部25は、サーバ装置10と協動して、ゲームを実行する。例えば、端末制御部25は、ゲームに用いられる種々の画像(例えば後述する各種のフィールド画像)を表示部23に表示させる。画面上には、例えばユーザ操作を検出するGUI(Graphic User Interface)が表示されてもよい。端末制御部25は、入力部24を介して、画面に対するユーザ操作を検出可能である。例えば端末制御部25は、ユーザのタップ操作、ロングタップ操作、フリック操作、及びスワイプ操作等を検出可能である。タップ操作は、ユーザが指で表示部23に触れ、その後に指を離す操作である。端末制御部25は、操作情報をサーバ装置10に送信する。
(ゲームにおける描画機能)
サーバ制御部13は、端末装置20と協動して、表示部23上にフィールド画像を表示し、ゲームの進行に応じてフィールド画像を更新していく。本実施形態では、サーバ制御部13は、端末装置20と協動して、3次元の仮想空間に配置されるオブジェクトを、仮想空間に配置された仮想カメラ60(図5参照)から視た表現で描画する。
図3は、フィールドオブジェクトの一例を説明する平面図であり、図2のQ1部の拡大図である。図4は、図3のフィールドオブジェクト上における各種オブジェクト(第1オブジェクトや第2オブジェクト)の配置例を示す平面図である。
フィールドオブジェクトは、属性の異なる複数の領域を有する。フィールドオブジェクトは、本実施形態では、属性の異なる複数の領域は、一例として、特定の第2オブジェクト(以下、「モブキャラオブジェクト」とも称する)が配置可能な第1領域属性の領域(以下、「サブ領域R1」とも称する)と、第1オブジェクト以外のキャラクタ系の第2オブジェクト(以下、「メインキャラオブジェクト」とも称する)が配置可能な第2領域属性の領域(以下、「メイン領域R2」とも称する)とを含む。
モブキャラオブジェクトは、“賑わし”ないし“モブ”キャラクタとして機能できるオブジェクトである。モブキャラオブジェクトは、典型的には、同時に2つ以上が出現可能なオブジェクトである。モブキャラオブジェクトは、種類ごとにオブジェクトIDが付与される。1種類のモブキャラオブジェクトだけが設定される場合、当該モブキャラオブジェクトに対応付けられるオブジェクトIDは1つだけであってよい。なお、一のフィールドオブジェクトに同時に配置可能なモブキャラオブジェクトは、1種類だけであってもよいし、2種類以上であってよい。
メインキャラオブジェクトは、複数種類設定される。メインキャラオブジェクトは、種類ごとにオブジェクトIDが付与される。メインキャラオブジェクトは、典型的には、同時に同一種類の2つ以上が出現不能なオブジェクトである。換言すると、メインキャラオブジェクトは、固有の容姿を有するキャラクタに対応するオブジェクトである。
サブ領域R1は、他の属性の領域(例えばメイン領域R2)を介して分離する態様で、複数設定されてもよい。例えば、図3に示す例では、メイン領域R2は、横通路14や縦通路15の通路領域に対応し、サブ領域R1は、これらの通路領域に仕切られる態様で、4つ設定されている。
サブ領域R1には、モブキャラオブジェクト以外の第2オブジェクトとして、インフラ系オブジェクトが配置可能であってよい。インフラ系オブジェクトは、基本的に、移動性が低い物体に関し、例えば、建物や自然物等であってよい。
なお、サブ領域R1やメイン領域R2のような各種領域の形状やサイズは、任意であり、適宜、設定されてよいし、ゲームの進行に応じて変更されてもよい。
図4には、図3のフィールドオブジェクト上に配置されている第1オブジェクトや第2オブジェクトの位置が、○や四角等のマークで模式的に示されている。この場合、横通路14や縦通路15のような通路には、第1オブジェクトに対応するオブジェクト400とともに、特定のメインキャラオブジェクトに対応するオブジェクト401が配置されている。また、4つのサブ領域R1のそれぞれには、街路樹の第2オブジェクトに対応するオブジェクト402が配置されるとともに、モブキャラオブジェクトに対応するオブジェクト403が配置されている。
図5は、仮想カメラ60のカメラパラメータの説明図である。図5には、グローバル座標系に位置付けられたフィールド面70(正規の状態)が示されている。なお、フィールド面70とは、特に言及しない限り、フィールド画像が投影された状態のフィールド面70(フィールドオブジェクトのフィールド面70)を表す。フィールド面70は、曲げ変形が可能であってもよい。また、フィールド面70は、グローバル座標系におけるフィールド面70全体の並進や回転が不能であってよい。従って、フィールド座標系でのフィールド面70の各位置の座標は、所定の変換式で、グローバル座標系の各座標に変換可能であり、また、逆の変換も可能である。なお、以下では、説明上、フィールド座標系の原点は、グローバル座標系の原点と同じであり、フィールド座標系のu軸(=テクスチャ座標系のu軸)は、グローバル座標系のx軸に一致し、フィールド座標系のv軸(=テクスチャ座標系のv軸)は、グローバル座標系のy軸に一致するものとする。
本実施形態では、カメラパラメータは、2つの位置パラメータ(X、Y)と、距離パラメータA2と、向きパラメータθと、迎角パラメータψとを含む。これらのすべてのパラメータの値が決まると、グローバル座標系に対して、仮想カメラ60を一意に位置付けることができる。なお、迎角パラメータψが約90度となると、鳥瞰表示が可能となる。
位置パラメータXは、視線方向Vのxy平面上の交点のx座標であり、位置パラメータYは、視線方向Vのxy平面上の交点のy座標であり、距離パラメータA2は、視線方向Vのxy平面上の交点から仮想カメラ60までの距離(視線方向Vに沿った距離)である。向きパラメータθは、視線方向Vのxy平面上の投影ベクトルV’と、x軸とのなす角度である。迎角パラメータψは、視線方向Vとxy平面とのなす角度である。なお、本実施形態では、迎角パラメータψが利用されるが、迎角パラメータψは省略されてもよい。すなわち、迎角パラメータψは、値が一定値(固定値)であってもよい。
このような各種カメラパラメータのうちの一部又は全部の各値は、第1オブジェクト及び/又は特定の第2オブジェクトに係るパラメータの値に連動して変化されてもよいし、及び/又は、ユーザからの入力に応じて変化されてもよい。なお、このようなカメラパラメータは、以下の説明用であり、実際の処理では、異なるパラメータが等価的に使用されてもよい。また、カメラパラメータは、焦点距離等のような他のパラメータを含んでもよい。
図6は、仮想カメラ60から視たときの仮想空間画像G24の一例を示す図である。図6に示す例は、例えば第1オブジェクトが図4に示すような位置(図4のオブジェクト400参照)にいるときに、第1オブジェクトを映す仮想カメラ60から視た仮想空間画像G24の一例が示される。このような仮想空間画像G24は、仮想カメラ60に係るカメラパラメータに基づいて生成されてもよい。
図6に示す例では、縦通路15の左側には、インフラ系オブジェクトである複数の街路樹オブジェクト16が配置されている。複数の街路樹オブジェクト16は、フィールドオブジェクト77のうちの、サブ領域R1に立設されている。同様に、モブキャラオブジェクトであるオブジェクト18が、サブ領域R1に配置されている。また、縦通路15には、メインキャラオブジェクトであるオブジェクト19が配置されている。なお、地平線のラインは、例えばユーザの操作により変更可能な各種カメラパラメータの値に応じて描画されてもよい。例えば、図6において、符号HLは、地平線のラインを表す。地平線のラインは、図5に示したフィールド面70を曲げ変形させることで生成されてもよい。地平線のラインの位置(図6の寸法H1参照)は、適宜調整されてもよい。
図7は、フィールドオブジェクトにおける各種オブジェクトの配置可能な区分の説明図である。
フィールドオブジェクトは、各種オブジェクトの配置可能な複数の区分を有する。複数の区分のそれぞれは、上述したサブ領域R1やメイン領域R2といった領域よりも有意に小さい。複数の区分のそれぞれは、例えば一のオブジェクトが配置できる最小単位の領域であってよい。
図7には、一のサブ領域R1を構成する複数の区分700が示されている。複数の区分700は、図7に模式的に示すように、互いに直交するu軸及びv軸のそれぞれに沿って、一定のピッチで設定されてもよい。
なお、図7では、サブ領域R1に対して設定される複数の区分700が示されているが、他の属性の領域(例えばメイン領域R2)に対しても同様の複数の区分が設定されてよい。なお、区分のサイズは、属性が異なる場合は異なってもよいし、属性が異なる場合に同一であってもよい。
本実施形態では、一例として、サブ領域R1に対して設定される複数の区分を、「サブ領域区分」と称し、メイン領域R2に対して設定される複数の区分を、「メイン領域区分」と称する。
本実施形態では、モブキャラオブジェクトは、複数のサブ領域区分のうちの、インフラ系オブジェクトが配置されていないサブ領域区分(以下、「空きサブ領域区分」とも称する)(第1区分の一例)に配置可能とされる。
一の空きサブ領域区分に対してモブキャラオブジェクトを配置するか否かは、当該一の空きサブ領域区分に対して割り当てられた配置確率に基づいて判定される。配置確率は、空きサブ領域区分ごとに割り当てられ、一定値であってもよいし、可変値であってもよい。一の空きサブ領域区分に対して割り当てられた配置確率が高いほど、当該一の空きサブ領域区分にモブキャラオブジェクトが配置される可能性が高くなる。
ところで、サブ領域R1には、例えばユーザからの指示に応じてインフラ系オブジェクトが配置されるが、仮想カメラ60に映る範囲にインフラ系オブジェクトがあまり多く配置されていないと、そのときの仮想空間画像G24におけるオブジェクト数が少なく、物足りなさが生じるおそれがある。
これに対して、仮想カメラ60に映る範囲のうちの、サブ領域R1におけるインフラ系オブジェクトの配置数や密度などが比較的小さい場合に、モブキャラオブジェクトを、“賑わし”ないし“モブ”キャラクタとして配置することは、上述したような物足りなさを低減できる点で有用である。
しかしながら、モブキャラオブジェクトの配置をカメラパラメータの値の変化に応じて変更すると、処理負荷の増加が問題となりうる。具体的には、カメラパラメータの値が比較的頻繁に変化すると、それに伴い仮想カメラ60に映る範囲も比較的頻繁に変化することになる。このため、例えば、カメラパラメータの値が変化するごとに、仮想カメラ60に映る範囲内におけるインフラ系オブジェクトの配置数や密度に基づいて、当該範囲内にモブキャラオブジェクトを配置するかどうかを判定する処理を行う場合、処理負荷の増加が問題となりうる。
そこで、本実施形態では、空きサブ領域区分の一部に対してモブキャラオブジェクトを固定的に配置しておくことで、カメラパラメータの値が比較的頻繁に変化しても、その都度、モブキャラオブジェクトを配置し直すことを要せずに、処理負荷を低減できる。また、この場合、空きサブ領域区分に対して適切な数のモブキャラクタを配置しておくことで、上述したような物足りなさを低減できる。
本実施形態において、空きサブ領域区分の一部に対してモブキャラオブジェクトを配置しておくタイミングは、任意であるが、カメラパラメータの値が変化する頻度よりも有意に低い頻度で訪れるタイミングである。例えば、空きサブ領域区分の一部に対してモブキャラオブジェクトを配置しておくタイミングは、一定時間ごとに到来してもよいし、ゲームの進行に応じて不定期的に到来してもよい。
また、本実施形態では、一の空きサブ領域区分にモブキャラオブジェクトを配置するか否かを、当該一の空きサブ領域区分に割り当てられた配置確率に基づいて判定する。従って、本実施形態によれば、ある一の空きサブ領域区分には、常にモブキャラオブジェクトが配置されているといったような、単調性を排除できる。すなわち、ランダム性による配置バリエーションを効率的に増やすことができる。
このようにして、本実施形態によれば、仮想空間内における各種オブジェクト(例えば各種第2オブジェクト)の配置態様の多様化を、低減された処理負荷で図ることが可能となる。
以下では、上述したようなゲームシステム1における更なる詳細を説明していく。
(ゲームシステムにおける更なる詳細)
サーバ制御部13は、端末装置20と協動して、表示部23上にフィールド画像を表示し、ゲームの進行に応じてフィールド画像を更新していく。本実施形態では、サーバ制御部13は、端末装置20と協動して、3次元の仮想空間に配置されるオブジェクトを、仮想空間に配置された仮想カメラ60から視た表現で描画する。
なお、以下で説明する描画処理は、サーバ制御部13により実現されるが、他の実施形態では、以下で説明する描画処理の一部又は全部がサーバ制御部13により実現されてもよい。例えば、以下の説明において、端末装置20に表示されるフィールド画像の少なくとも一部を、サーバ装置10が生成したデータに基づいて端末装置20に表示させるウェブ表示とし、画面の少なくとも一部を、端末装置20にインストールされているネイティブアプリケーションによって表示させるネイティブ表示としてもよい。
図8は、サーバ装置10の描画機能に関する機能ブロック図の一例である。以下では、特定の一のフィールドオブジェクトに関する描画について説明するが、複数種類のフィールドオブジェクトが設定されてもよい。また、以下では、特に言及しない限り、代表して任意の一のユーザに係る描画について説明する。
サーバ装置10は、基本情報記憶部150と、配置状態記憶部152と、パターン記憶部154と、カメラパラメータ記憶部156とを含む。各記憶部150から156は、例えば、サーバ記憶部12により実現できる。
基本情報記憶部150には、フィールド情報や、ユーザ情報、オブジェクト情報、区分情報等が記憶される。図9は、フィールド情報901、ユーザ情報902、オブジェクト情報903、及び区分情報904の一例を示す説明図である。図9において、「***」は、なんらかの情報が格納されている状態を示し、「・・・」は、同様の情報の格納の繰り返しを示す。
フィールド情報は、フィールドオブジェクトに関する情報である。フィールドオブジェクトが複数種類設定される場合、フィールドオブジェクトの種類ごとにフィールドIDが付与されてよい。図9に示す例では、フィールド情報901は、フィールドIDごとに、レベルに応じた構成領域情報を含む。レベルは、任意の段階のレベルであってよく、図9では、一例として3段階のレベルlv1~lv3とされる。構成領域情報は、フィールドオブジェクトの領域構成を表す情報である。本実施形態では、フィールドオブジェクトは、上述したように、属性の異なる複数の領域(例えば、サブ領域R1やメイン領域R2)を有し、構成領域情報は、フィールドオブジェクトのどの範囲が利用可能であり、そのうちの、どの位置に、どのような属性が配置されているかを表す情報であってよい。
本実施形態では、構成領域情報は、レベルが増加するにつれて、利用可能な範囲(以下、「利用範囲」とも称する)が広くなるように適合される。例えばレベルlv1には、フィールドオブジェクト全体のうちのQ1部(図2参照)が利用範囲と対応付けられ、レベルlv2には、フィールドオブジェクト全体のうちのQ2部(図2参照)が利用範囲と対応付けられ、レベルlv3には、フィールドオブジェクト全体であるQ3部(図2参照)が利用範囲と対応付けられてよい。なお、変形例では、構成領域情報は省略され、フィールドオブジェクトのうちの、レベルlv1~lv3のそれぞれに対応した利用範囲を新たなフィールドオブジェクトとして、それぞれフィールドIDが付与されてもよい。
ユーザ情報は、ゲームシステム1に登録される各ユーザに関する情報を含む。図9に示す例では、ユーザ情報902は、ユーザIDとともに、ユーザIDごとに、ステータス情報や所有ゲーム媒体情報、記念日情報等を含む。ステータス情報は、ゲームにおける各種ステータスパラメータの値に関する情報を含んでよい。各種ステータスパラメータは、例えばユーザのレベルや経験値等を含んでよい。所有ゲーム媒体情報は、ユーザに対応付けられているゲーム媒体(すなわちユーザが所有するゲーム媒体)に関する情報を含んでよい。所有ゲーム媒体情報は、所有ゲーム媒体のレベル、HP、レアリティ等を含んでよい。各種ゲーム媒体は、ゲーム媒体ID等で管理されてよい。記念日情報は、ユーザに対応付けられる特別な日(例えば記念日)を表す情報であってよい。
オブジェクト情報は、フィールドオブジェクト上に配置可能な各種第2オブジェクトに関する情報を含む。図9に示す例では、オブジェクト情報903は、オブジェクトIDとともに、オブジェクトIDごとに、描画情報やオブジェクト属性情報等を含む。描画情報は、対応する第2オブジェクトを描画するために必要な情報であり、形状や色等の情報を含んでよい。オブジェクト属性情報は、対応する第2オブジェクトの属性を表す情報である。本実施形態では、第2オブジェクトの属性は、モブキャラオブジェクトに対応する第1属性と、インフラ系オブジェクトに対応する第2属性と、メインキャラオブジェクトに対応する第3属性とを含む。また、インフラ系オブジェクトに対応する第2属性及び/又はメインキャラオブジェクトに対応する第3属性は、更に細分化した属性を有してもよい。例えば、メインキャラオブジェクトに対応する第3属性は、出現しやすさに応じた細分化した属性(以下、「サブ属性」とも称する)を有してもよい。
本実施形態では、一例として、第3属性に係るサブ属性は、通常的に出現するメインキャラオブジェクトに対応する通常属性と、稀に出現するメインキャラオブジェクトに対応する稀属性と、強制出現フラグ(後述)がオンであるときだけ出現可能となるメインキャラオブジェクトに対応する出現不可属性とを含む。
通常属性を有するメインキャラオブジェクト(以下、「通常キャラオブジェクト」とも称する)は、ユーザが所持している第2オブジェクトを含んでよい。この場合、通常キャラオブジェクトは、ユーザごとに異なりうる。
通常キャラオブジェクトのそれぞれには、配置優先度が設定されてもよい。この場合、配置優先度が高いほど出現されやすい(配置されやすい)態様で、通常キャラオブジェクト間で、相対的な配置優先度が設定されてもよい。配置優先度は、例えば、記念日報酬として未受取のメインキャラオブジェクトが最も高く、ついで、特定のイベントで得られたメインキャラオブジェクトが次に高く、ついで、特定のミッションをクリアして得られたメインキャラオブジェクトが次に高いといった具合に、適宜設定されてよい。また、通常キャラオブジェクトのそれぞれには、未開放であるか否かの情報が対応付けられてもよい。未開放であるメインキャラオブジェクトは、開放されるまで、フィールドオブジェクト77に配置されることがない。この場合、運営側は、例えば、適宜、通常キャラオブジェクトの開放状態を調整できる。
稀属性を有するメインキャラオブジェクト(以下、「稀キャラオブジェクト」とも称する)は、通常キャラオブジェクトと同様にユーザごとに異なってもよいし、あるいは、通常キャラオブジェクトとは異なり、各ユーザ間で同じであってもよい。同様に、稀キャラオブジェクトのそれぞれには、配置優先度が設定されてもよい。この場合、配置優先度が高いほど出現されやすい(配置されやすい)態様で、稀キャラオブジェクト間で、相対的な配置優先度が設定されてもよい。また、稀キャラオブジェクトのそれぞれには、未開放であるか否かの情報が対応付けられてもよい。この場合、運営側は、例えば、適宜、稀キャラオブジェクトの開放状態を調整できる。
出現不可属性を有するメインキャラオブジェクト(以下、「強制出現キャラオブジェクト」とも称する)は、通常キャラオブジェクトと同様にユーザごとに異なってもよいし、あるいは、通常キャラオブジェクトとは異なり、各ユーザ間で同じであってもよい。同様に、強制出現キャラオブジェクトのそれぞれには、配置優先度が設定されてもよい。この場合、配置優先度が高いほど出現されやすい(配置されやすい)態様で、強制出現キャラオブジェクト間で、相対的な配置優先度が設定されてもよい。また、強制出現キャラオブジェクトのそれぞれには、出現が可能な特別な期間(出現期間)を表す情報が対応付けられてもよい。
区分情報は、フィールドオブジェクトに対応付けられて設定される。フィールドオブジェクトが複数用意される場合、区分情報は、フィールドオブジェクトごと(すなわちフィールドIDごと)に設定されてよい。図9に示す例では、一のフィールドオブジェクトに関する区分情報904が示されている。区分情報904は、一のフィールドオブジェクトを構成するすべての区分のそれぞれを表す区分IDとともに、区分IDごとに、座標値や、区分属性情報、領域情報、配置確率情報等を含む。座標値は、区分の中心位置の座標値(例えば、フィールド座標系のでの座標値)であってよい。区分属性情報は、区分の属性を表し、区分の属性は、サブ領域区分に対応する属性や、メイン領域区分に対応する属性等を含んでよい。領域情報は、フィールドオブジェクトの複数の領域(サブ領域R1やメイン領域R2)のどの領域に属しているかを表す情報である。なお、例えば図3等に示したように、分離した複数のサブ領域R1が設定される場合、領域情報は、対応する区分が、複数のサブ領域R1のうちの、どのサブ領域R1に属しているかを表す情報であってよい。配置確率情報は、サブ領域区分に対応する属性の区分に対して割り当てられる配置確率を表す。なお、配置確率情報は、配置確率が可変値である場合、可変の情報であってよい。
配置状態記憶部152には、フィールドオブジェクトにおける各区分に係る第2オブジェクトの配置状態(最新の配置状態)を表す情報(以下、「配置状態情報」とも称する)が記憶される。図10は、配置状態情報910の一例の説明図である。図10に示す例では、配置状態情報910は、区分IDごとに、オブジェクト配置状態を表す情報を含む。配置状態情報910は、当該区分に第2オブジェクトが配置されている場合は、当該第2オブジェクトのオブジェクトIDであってよい。また、オブジェクト配置状態を表す情報は、当該区分に第2オブジェクトが配置されていない場合は、空の情報(「null」と表記)であってよい。
パターン記憶部154には、メイン領域区分におけるメインキャラオブジェクトに係る配置パターン(配置フォーマット)を表すパターン情報が記憶される。すなわち、複数のメイン領域区分のうちの一部には、メインキャラオブジェクトが配置される。配置パターンは、複数のメイン領域区分のうちの、どのメイン領域区分にメインキャラオブジェクトが配置されるかを規定する情報となる。以下では、複数のメイン領域区分のうちの、メインキャラオブジェクトが配置されることが配置パターンによって規定されている区分を、「キャラクタ配置区分」とも称する。
配置パターンは、好ましくは、一のフィールドオブジェクトに対して複数設定される。これにより、配置パターンの多様化により、メイン領域区分におけるメインキャラオブジェクトの多様化を効率的に図ることができる。
また、配置パターンは、好ましくは、一のフィールドオブジェクトにおけるユーザごとに異なりうる利用範囲ごと(すなわち、上述したレベルlv1~lv3のそれぞれごと)に、複数設定されてもよい。例えば、図2に示したフィールドオブジェクトにおけるQ1部~Q3部のそれぞれに対して、配置パターンが別個独立に複数設定されてもよい。この場合、例えば、Q2部は、Q1部を含むものの、Q2部に対して設定された配置パターンのうちの、Q1部の範囲内の配置パターンは、Q1部に対して設定された配置パターンとは異なってよい。これにより、フィールドオブジェクトにおけるQ1部~Q3部のそれぞれに対して、それぞれの広さや、メイン領域R2自体の広さ、レイアウト等を考慮して、バランスの良い配置パターンを設定できる。
図11から図13は、パターン情報の説明図である。図11には、パターン情報の説明用に、メイン領域R2を構成する複数のメイン領域区分が模式的に示され、図12には、パターン情報の説明用に、配置パターンの一例が示されている。また、図13には、パターン情報の説明用に、パターン情報の一例が示されている。
図11に示す例では、メイン領域R2は、十字状の形態であり、図7を参照して上述したサブ領域R1と同様、複数のメイン領域区分により構成されている。図12には、各種のサブ属性のメインキャラオブジェクトの配置パターンの一例が示されている。なお、図12では、サブ属性ごとに、異なるハッチング態様で、キャラクタ配置区分がハッチングされて示されている。図12において、キャラクタ配置区分に付与された数値は、後述する優先度に対応する。また、図12において、符号1201が付されたメイン領域区分は、特別な第2オブジェクトの初期出現位置であってよく、符号1202が付されたメイン領域区分は、特定の役割(例えばアイテム等のゲーム媒体の販売や交換等を行う役割)を有する第2オブジェクトの配置位置に対応してよい。
このような図12に示すような配置パターンが複数種類設定される場合、配置パターンごとに、キャラクタ配置区分の合計数、各キャラクタ配置区分の位置、サブ属性ごとのキャラクタ配置区分の数及びその位置、及び/又は、キャラクタ配置区分に配置されるサブ属性を多様に変化させることができるので、メイン領域区分におけるメインキャラオブジェクトの多様化を効率的に図ることができる。
図13に示す例では、パターン情報920は、配置パターンの種類を表すパターンIDとともに、パターンIDごとに、メイン領域区分の区分IDごとの各種情報を含む。すなわち、パターン情報920は、メイン領域区分の区分IDごとの各種情報として、第2オブジェクトの配置要否を表す配置要否情報と、配置する第2オブジェクトのサブ属性を表すサブ属性情報と、優先度を表す優先度情報とを含む。なお、配置要否情報が“要”となるメイン領域区分は、キャラクタ配置区分に対応する。サブ属性情報は、配置要否情報が“要”となるメイン領域区分の区分IDに対して設定され、上述したサブ属性のうちの、どのサブ属性の第2オブジェクトが配置されるかを表す。優先度情報は、第2オブジェクトが割り当てられる優先度を表し、例えば低い値ほど高い優先度を表してよい。優先度情報は、サブ属性ごとに設定されてよい。
カメラパラメータ記憶部156には、仮想カメラ60の各種カメラパラメータの各値(現在値)が記憶される。カメラパラメータは、図5を参照して上述したとおりである。
サーバ装置10は、更に、図8に示すように、ユーザ入力取得部160を含む。ユーザ入力取得部160は、例えば図1に示したサーバ通信部11により実現できる。ユーザ入力取得部160やカメラ処理部162等は、例えば図1に示したサーバ制御部13が、サーバ記憶部12に記憶された1つ以上のプログラムを実行することで実現できる。
ユーザ入力取得部160は、ユーザからの各種入力を取得する。ユーザからの各種入力は、インフラ系オブジェクトを配置する操作に基づく各種入力(第1入力の一例)や、カメラパラメータの値を変更する操作に基づく各種入力、第1オブジェクトを移動等させる操作に基づく各種入力(第2入力の一例)等を含んでよい。なお、ユーザからの各種入力は、端末装置20の入力部24を介して得られる各種入力に対応し、端末装置20の端末通信部21によりサーバ装置10に送信される。
サーバ装置10は、更に、図8に示すように、カメラ処理部162、描画処理部164、及び制限処理部166を含む。カメラ処理部162等は、例えば図1に示したサーバ制御部13が、サーバ記憶部12に記憶された1つ以上のプログラムを実行することで実現できる。
カメラ処理部162は、仮想空間に配置された仮想カメラ60の各種カメラパラメータの各値を制御する。具体的には、カメラ処理部162は、ユーザ入力取得部160により取得されたユーザからの入力に基づいて、仮想カメラ60の各種カメラパラメータの各値を変化させる。なお、カメラ処理部162は、仮想カメラ60の各種カメラパラメータのうちの一部又はすべての値を、第1オブジェクトの位置に連動して変化させてもよいし、及び/又は、第2オブジェクトの位置に連動して変化させてもよい。
描画処理部164は、仮想カメラ60の各種カメラパラメータの各値に基づいて、仮想空間の画像(例えば、図6に示した仮想空間画像G24参照)を描画する。
制限処理部166は、仮想カメラ60の各種カメラパラメータの各値と、配置状態記憶部152に記憶される配置状態情報とに基づいて、描画処理部164による描画対象の第2オブジェクトを決定する。具体的には、制限処理部166は、仮想カメラ60の各種カメラパラメータの各値と、配置状態記憶部152に記憶される配置状態情報とに基づいて、仮想カメラ60の視野内に位置する第2オブジェクトを特定するとともに、その数を算出する。そして、仮想カメラ60の視野内に位置する第2オブジェクトの数が、所定の上限値(所定数)を超える場合、描画処理部164による描画対象の第2オブジェクトの数を制限する。
ところで、仮想カメラ60の各種カメラパラメータの各値が多様に変化可能である場合、仮想カメラ60の各種カメラパラメータの各値の変化に応じて、仮想カメラ60の視野内の風景(仮想空間内の風景)が多様に変化する。特に本実施形態では、多様な第2オブジェクトがサブ領域R1やメイン領域R2に配置されるので、仮想カメラ60の視野内に位置する第2オブジェクトの数が比較的多くなりやすい傾向となる。仮想カメラ60の視野内に位置する第2オブジェクトの数が比較的多くなると、仮想空間画像G24の多様化を図ることができる反面、第2オブジェクトを描画する際の描画処理部164の処理負荷が大きくなりうる。具体的には、仮想カメラ60の視野内に位置する第2オブジェクトの数が多いほど、これらの第2オブジェクトを描画する際の描画処理部164の処理負荷(以下、単に「描画負荷」とも称する)が大きくなる。
制限処理部166は、このような描画処理部164の処理負荷が過大とならないように、描画処理部164による描画対象の第2オブジェクトの数を制限する。描画処理部164による描画対象の第2オブジェクトとは、完全な形で描画される第2オブジェクトを表す。完全な形で描画される第2オブジェクトは、専ら処理負荷低減のためだけに行われるような処理(例えば分解能の低減処理)を受けずに描画される。換言すると、描画処理部164による描画対象の第2オブジェクトとは、制限処理部166が機能しない場合の描画態様で描画される第2オブジェクトを表す。
例えば、制限処理部166は、仮想カメラ60の視野内に位置する第2オブジェクトの数が所定の上限値(所定数)を超える場合、当該所定の上限値に、描画処理部164による描画対象の第2オブジェクトの数を制限する。これにより、仮想カメラ60の視野の変化等に起因して描画対象の第2オブジェクトの数が所定の上限値を超えてしまう(それに伴い描画処理部164の処理負荷が過大になる)可能性を、適切に低減できる。
なお、本実施形態において、制限処理部166により採用される所定の上限値は、固定値であってもよいし、可変値であってもよい。また、所定の上限値は、第2オブジェクトの属性ごとに設定されてもよい。例えば、一のモブキャラオブジェクトを描画するための処理負荷が、一のメインキャラオブジェクトを描画するための処理負荷よりも有意に小さい場合、モブキャラオブジェクトに対する所定の上限値は、メインキャラオブジェクトに対する所定の上限値よりも大きく設定されてもよい。
仮想カメラ60の視野内に位置する第2オブジェクトの数が所定の上限値(所定数)を超えない場合、制限処理部166は機能しない。この場合、描画処理部164は、通常の描画態様で、仮想カメラ60の視野内に位置するすべての第2オブジェクトを描画する。他方、仮想カメラ60の視野内に位置する第2オブジェクトの数が所定の上限値(所定数)を超えた場合、制限処理部166が機能し、描画処理部164は、仮想カメラ60の視野内に位置するすべての第2オブジェクトのうちの、所定の上限値の数の第2オブジェクトのみを描画する。
このようにして本実施形態によれば、描画処理部164の処理負荷が過大とならないように一定の制限を課しつつ、各種カメラパラメータの各値の変化に応じて、多様な態様で第2オブジェクトを描画できる。
制限処理部166は、仮想カメラ60の視野内に位置するすべての第2オブジェクトのうちから、描画処理部164による描画対象の第2オブジェクトを、所定ルールに基づいて決定してもよい。例えば、制限処理部166は、仮想カメラ60の視野内に位置するすべての第2オブジェクトのうちから、ランダムに、所定の上限値(所定数)の第2オブジェクトを、描画対象として決定してもよい。あるいは、好ましくは、制限処理部166は、仮想カメラ60の視野内に位置するすべての第2オブジェクトのうちから、仮想カメラ60からの距離が近い順に、所定の上限値(所定数)の第2オブジェクトを、描画対象として決定してもよい。また、制限処理部166は、仮想カメラ60の視野内に位置するすべての第2オブジェクトのうちから、メインキャラオブジェクトを、優先的に描画対象として決定してもよい。これは、メインキャラオブジェクトの方が、モブキャラオブジェクトよりもユーザの関心が高い傾向があるためである。あるいは、逆に、モブキャラオブジェクトやインフラ系オブジェクトに係る描画負荷が比較的小さくなりやすいことを考慮して、制限処理部166は、仮想カメラ60の視野内に位置するすべての第2オブジェクトのうちから、モブキャラオブジェクトやインフラ系オブジェクトを、メインキャラオブジェクトよりも優先的に描画対象として決定してもよい。この場合、モブキャラオブジェクトやインフラ系オブジェクトの数は考慮せずに、制限処理部166は、仮想カメラ60の視野内に位置するすべてのメインキャラオブジェクトのうちから、仮想カメラ60からの距離が近い順に、所定の上限値(所定数)のメインキャラオブジェクトを、描画対象として決定してもよい。
サーバ装置10は、更に、図8に示すように、フィールド設定部168、抽出部170、配置数決定部172、割当部174、第1判定部176、及び第1配置処理部178を含む。フィールド設定部168等は、例えば図1に示したサーバ制御部13が、サーバ記憶部12に記憶された1つ以上のプログラムを実行することで実現できる。
フィールド設定部168は、ユーザが第1オブジェクトを介してプレイ可能なフィールドに係るフィールドオブジェクトを設定する。フィールド設定部168は、ユーザからの要求に応じたフィールドIDに係るフィールドオブジェクトを設定してもよい。また、一のフィールドIDに、レベルに応じた構成領域情報(図9)が設定されている場合、フィールド設定部168は、ユーザのステータスパラメータの値に基づいて、対応するレベルのフィールドオブジェクトを設定してもよい。例えば、ユーザのステータスパラメータがゲームレベルであり、当該ゲームレベルの値が比較的大きい場合、フィールド設定部168は、レベルlv1~lv3のうちの、比較的高いレベル(例えばレベルlv3)に係るフィールドオブジェクトを設定してもよい。この場合、ユーザは、ゲームレベルが高くなるほど、広いフィールドオブジェクトを利用可能(すなわちプレイ可能)となるので、ユーザにゲームレベルを高める動機付けを与えることができる。
抽出部170は、フィールド設定部168により設定されたフィールドオブジェクトを構成するすべてのサブ領域区分のうちから、モブキャラオブジェクトを配置可能な1つ以上の空きサブ領域区分(第1区分の一例)を抽出する。すなわち、抽出部170は、フィールド設定部168により設定されたフィールドオブジェクトを構成するすべてのサブ領域区分のうちから、インフラ系オブジェクトが配置されているサブ領域区分を除くサブ領域区分を、空きサブ領域区分として抽出する。本実施形態では、抽出部170は、上述した配置状態情報910(図10参照)に基づいて、1つ以上の空きサブ領域区分を容易に抽出できる。
なお、図3等に示したように一のフィールドオブジェクトが、分離された複数のサブ領域R1を有する場合、抽出部170は、複数のサブ領域R1のそれぞれごとに、空きサブ領域区分を抽出してもよい。
配置数決定部172は、モブキャラオブジェクトの配置数の目標数を決定する。配置数の目標数は、一定値であってもよいが、好ましくは、可変値である。可変値の場合、配置数決定部172は、所定の変化条件が成立した場合に、目標数を変化させてよい。所定の変化条件は、任意であり、例えば定期的に満たされる条件であってもよいし、不定期的に満たされる条件であってもよい。本実施形態では、所定の変化条件は、後述するモブキャラオブジェクトに係る変更条件が成立するごとに、成立する。
また、配置数決定部172は、抽出部170により抽出された空きサブ領域区分の数に応じて、配置数の目標数を決定してもよい。この場合、配置数の目標数は、空きサブ領域区分の数よりも小さく、空きサブ領域区分の数に対して所定の関係(例えば一定の割合の数)を有してもよい。
また、図3等に示したように一のフィールドオブジェクトが、分離された複数のサブ領域R1を有する場合、配置数決定部172は、複数のサブ領域R1のそれぞれごとに、配置数の目標数を決定してもよい。これにより、複数のサブ領域R1のそれぞれごとに、配置数の目標数を偏りなく決定することが可能となり、モブキャラオブジェクトをバランス良く配置することが可能となる。
割当部174は、抽出部170により抽出された1つ以上の空きサブ領域区分に対して配置確率を割り当てる。配置確率は、上述したように、一定値であってもよいし、可変値であってもよい。本実施形態では、一例として、割当部174は、抽出部170により抽出された1つ以上の空きサブ領域区分のそれぞれに対して同じ配置確率を割り当てる。また、図3等に示したように一のフィールドオブジェクトが、分離された複数のサブ領域R1を有する場合、割当部174は、複数のサブ領域R1のそれぞれごとに、抽出部170により抽出された1つ以上の空きサブ領域区分のそれぞれに対して同じ配置確率を割り当てる。ただし、変形例では、ある条件を満たす空きサブ領域区分に対して他よりも高い配置確率が割り当てられるといった具体に、偏りが積極的に設定されてもよい。また、割当部174は、複数のサブ領域R1のそれぞれごとに、異なる配置確率を割り当ててもよい。
割当部174は、抽出部170により抽出された1つ以上の空きサブ領域区分の数に基づいて、配置確率を算出してもよい。この場合、空きサブ領域区分の数が多いほど、配置確率を小さくしてもよい。これにより、後述する第1判定部176による判定順の早い空きサブ領域区分に偏ってモブキャラオブジェクトが配置されやすくなる傾向を低減できる。
また、割当部174は、好ましくは、抽出部170により抽出された1つ以上の空きサブ領域区分の数と、配置数決定部172により決定された配置数の目標数とに基づいて、配置確率を算出してもよい。
ここで、抽出部170により抽出された1つ以上の空きサブ領域区分の数が、配置数決定部172により決定された配置数の目標数に近い場合、抽出部170により抽出された1つ以上の空きサブ領域区分の大部分には、モブキャラオブジェクトが配置されることになる。このような場合に、空きサブ領域区分に割り当てられる配置確率が有意に小さい場合、配置確率による当選が発生し難く、配置数の目標数のモブキャラオブジェクトを配置するまでの第1判定部176による判定回数が無用に多くなりうる。
他方、抽出部170により抽出された1つ以上の空きサブ領域区分の数が、配置数決定部172により決定された配置数の目標数によりも有意に多い場合、抽出部170により抽出された1つ以上の空きサブ領域区分の大部分には、モブキャラオブジェクトが配置されないことになる。このような場合に、空きサブ領域区分に割り当てられる配置確率が有意に大きい場合、配置確率による当選が発生しやすくなり、後述する第1判定部176による判定順の早い空きサブ領域区分に偏ってモブキャラオブジェクトが配置される傾向が強くなる。
これに対して、割当部174が、抽出部170により抽出された1つ以上の空きサブ領域区分の数と、配置数決定部172により決定された配置数の目標数とに基づいて、配置確率を算出する場合、かかる不都合を適切に防止できる。具体的には、割当部174は、抽出部170により抽出された1つ以上の空きサブ領域区分の数に、配置数決定部172により決定された配置数の目標数が近いほど高くなる態様で、配置確率を算出する。この場合、空きサブ領域区分の数と配置数の目標数との関係に応じた適切な配置確率を設定することが可能となる。すなわち、モブキャラオブジェクトを、偏りの低減された分布で、かつ、計算負荷が低減される効率的な処理態様で配置することを可能とする、適切な配置確率を設定できる。
例えば、割当部174は、空きサブ領域区分の数をN1とし、配置数の目標数をN2としたとき、これらの差N1-N2や、比N2/N1等に基づいて、配置確率を設定してもよい。具体的には、割当部174は、差N1-N2が大きいほど配置確率が低くなる態様で、配置確率を設定してもよいし、比N2/N1が小さいほど配置確率が低くなる態様で、配置確率を設定してもよい。この場合、配置確率は、2段階以上で変化されてもよいし、2段階で変化されてもよい。後者の場合、例えば、比N2/N1が所定閾値を下回った場合に、配置確率が、通常値から、低減された値に変化されてもよい。
なお、本実施形態では、一例として、空きサブ領域区分に配置可能なモブキャラオブジェクトは、1種類だけであるとする。ただし、変形例では、空きサブ領域区分に配置可能なモブキャラオブジェクトは、2種類以上であってもよい。この場合、配置確率は、モブキャラオブジェクトの種類ごとに異なってもよいし、共通であってもよい。
第1判定部176は、割当部174により割り当てられた配置確率に基づいて、空きサブ領域区分ごとに、空きサブ領域区分にモブキャラオブジェクトを配置するか否かを判定する。例えば、第1判定部176は、空きサブ領域区分ごとに、配置確率による抽選を行い、抽選結果を出力する。
第1判定部176は、抽出部170により抽出された1つ以上の空きサブ領域区分に対して、1つずつ、所定の判定順で、配置確率による抽選を行う。そして、第1判定部176は、当選数が配置数の目標数に達するまで、所定の判定順で繰り返し判定を行う。
例えば、図7に示したサブ領域R1における100個のサブ領域区分がすべて空きサブ領域区分である場合、第1判定部176は、空きサブ領域区分のそれぞれに対して、1つずつ、所定の判定順で、配置確率による抽選を行う。そして、100個のサブ領域区分のすべてに対して抽選が終了しても依然として、当選した空きサブ領域区分の数が配置数の目標数に満たない場合は、再度、第1判定部176は、非当選の空きサブ領域区分のそれぞれに対して、1つずつ、所定の判定順で、配置確率による抽選を行う。例えば、配置数の目標数が20であり、100個の空きサブ領域区分のうちの、10個が1周目の判定で当選した場合、残りの90個に対して、2周目の判定が実行される。この場合、ある一の空きサブ領域区分は、2回以上、判定されることになる。このようにして、第1判定部176は、当選する空きサブ領域区分の数が配置数の目標数に達するまで、複数回、各空きサブ領域区分に対する判定を周回(巡回)させる。
ここで、第1判定部176による判定の周回数が高い頻度で1回である場合は、所定の判定順で早い順番の空きサブ領域区分に偏ってモブキャラオブジェクトが配置される傾向が強くなる。従って、本実施形態では、かかる傾向が弱まるように、上述したように、空きサブ領域区分の数と配置数の目標数との関係に応じて配置確率が適合されてよい。これにより、空きサブ領域区分のそれぞれに対して少なくとも1回は第1判定部176による判定が実行される可能性が高くなるので、ランダム性を確保しつつ、偏りの生じがたいモブキャラオブジェクトの配置を実現できる。
第1配置処理部178は、第1判定部176による判定結果に基づいて、モブキャラオブジェクトを空きサブ領域区分に配置する。具体的には、第1配置処理部178は、第1判定部176による判定結果(抽選結果)が当選である空きサブ領域区分に対して、モブキャラオブジェクトを配置する設定を行う。例えば、第1配置処理部178は、図10に示した配置状態情報910を書き換える。具体的には、第1判定部176による判定結果(抽選結果)が当選である区分IDに対応するオブジェクト配置状態に、配置するモブキャラオブジェクトに対応するオブジェクトIDを書き込む。
このように本実施形態では、第1配置処理部178によりモブキャラオブジェクトが配置される区分は、サブ領域R1のサブ領域区分だけであるので、メイン領域R2にモブキャラオブジェクトが配置されることを防止できる。ただし、変形例では、所定の特別な場合に、メイン領域R2にモブキャラオブジェクトを配置することで、通常と異なる新鮮さをユーザに与えることが可能であってもよい。
本実施形態では、抽出部170、配置数決定部172、割当部174、第1判定部176、及び第1配置処理部178は、モブキャラオブジェクトに係る変更条件が成立するごとに、機能してよい。従って、第1配置処理部178は、モブキャラオブジェクトに係る変更条件が成立するごとに、抽出部170により抽出された空きサブ領域区分のうちの、割当部174により割り当てられた配置確率に基づく第1判定部176による抽選で当選した空きサブ領域区分であって、配置数決定部172により決定された目標数の空きサブ領域区分に、モブキャラオブジェクトを配置し直してよい。ただし、変形例では、上述したように配置確率及び/又は目標数は一定であってもよく、この場合、配置数決定部172及び/又は割当部174は、モブキャラオブジェクトに係る変更条件が成立するごとに機能する必要はない。
モブキャラオブジェクトに係る変更条件は、任意であるが、一定時間の経過等により満たされてよい。また、モブキャラオブジェクトに係る変更条件は、後述する配置パターンが変化した場合にも満たされてよい。
サーバ装置10は、更に、図8に示すように、第2配置処理部180、第3配置処理部182、オブジェクト設定部184、パターン設定部186、及び空間変更処理部188を含む。第2配置処理部180等は、図1に示したサーバ制御部13が、サーバ記憶部12に記憶された1つ以上のプログラムを実行することで実現できる。
第2配置処理部180は、サブ領域R1に属する複数の区分であるサブ領域区分のうちから、ユーザからの所定入力(第1入力の一例)に基づき定まるサブ領域区分(第2区分の一例)に、インフラ系オブジェクトを配置する。所定入力は、ユーザがインフラ系オブジェクトを配置することを望むサブ領域区分を指定する情報や、配置するインフラ系オブジェクトの種類を指定する情報等を含んでよい。なお、インフラ系オブジェクトは、モブキャラオブジェクトとは異なり、複数種類設定されてもよい。このようにして、ユーザは、インフラ系オブジェクトを所望の態様で配置させて、自身の街づくりを楽しむことができる。
例えば、第2配置処理部180は、図10に示した配置状態情報910を書き換えることで、インフラ系オブジェクトの配置を実現してよい。具体的には、第2配置処理部180は、ユーザにより指定されたサブ領域区分の区分IDに対応するオブジェクト配置状態に、ユーザにより指定されたインフラ系オブジェクトの種類に対応するオブジェクトIDを書き込む。なお、第2配置処理部180は、上述の第1配置処理部178や後述の第3配置処理部182とは異なり、ユーザからの所定入力をトリガとして動作する。
第3配置処理部182は、メイン領域区分のうちの複数のキャラクタ配置区分のそれぞれに配置するメインキャラオブジェクトの種類(オブジェクトID)を決定する。例えば、第3配置処理部182は、図10に示した配置状態情報910を書き換えることで、メインキャラオブジェクトの配置を実現してよい。具体的には、第3配置処理部182は、キャラクタ配置区分のそれぞれの区分IDに対応するオブジェクト配置状態に、配置すると決定したメインキャラオブジェクトの種類に対応するオブジェクトIDを書き込む。なお、メイン領域R2のうちの複数のキャラクタ配置区分は、上述したように配置パターンに応じて決まる。
一のキャラクタ配置区分に配置するメインキャラオブジェクトの種類の決定方法は、任意であるが、ランダムに決定されてもよいし、所定ルールに基づいて決定されてもよい。例えば、第3配置処理部182は、オブジェクト設定部184により設定された複数種類のメインキャラオブジェクトのうちから、抽選により各キャラクタ配置区分に配置するメインキャラオブジェクトを決定する。
第3配置処理部182は、メインキャラオブジェクトに係る配置変更条件が成立するごとに、メイン領域R2のうちの複数のキャラクタ配置区分のそれぞれに配置するメインキャラオブジェクトの種類(オブジェクトID)を決定してよい。これにより、メインキャラオブジェクトに係る配置変更条件を適切に設定することで、メイン領域R2におけるメインキャラオブジェクトの配置を適切なタイミングで変化させつつ、処理負荷の低減を図ることができる。なお、第3配置処理部182による処理のさらなる詳細は、図18を参照して後述する。
メインキャラオブジェクトに係る配置変更条件は、任意であるが、一定時間の経過等により満たされてよい。また、モブキャラオブジェクトに係る変更条件は、後述する配置パターンが変化した場合にも満たされてよい。
メインキャラオブジェクトに係る配置変更条件は、好ましくは、モブキャラオブジェクトに係る変更条件により高い頻度で満たされるように設定される。これにより、ユーザの関心が高いメインキャラオブジェクトに係る配置を比較的高い頻度で行いつつ、モブキャラオブジェクトに係る変更頻度を低くして処理負荷の効率的な低減を図ることができる。本実施形態では、一例として、メインキャラオブジェクトに係る配置変更条件は、所定時間ΔT1ごとに満たされるのに対して、モブキャラオブジェクトに係る変更条件は、所定時間ΔT1よりも有意に長い所定時間ΔT2ごとに満たされる。なお、この場合でも、メインキャラオブジェクトに係る配置変更条件、及び、モブキャラオブジェクトに係る変更条件は、ともに、後述する配置パターンが変化した場合にも満たされてよい。
オブジェクト設定部184は、第3配置処理部182により配置される候補となる複数種類のメインキャラオブジェクト(以下、「配置候補の複数種類のメインキャラオブジェクト」とも称する)を設定する。例えば、オブジェクト設定部184は、多数の種類のメインキャラオブジェクトのうちから、ランダムに、配置候補の複数種類のメインキャラオブジェクトを選択してもよい。あるいは、オブジェクト設定部184は、所定の場合に、運営から指定された特定の種類のメインキャラオブジェクトが必ず含まれるように、配置候補の複数種類のメインキャラオブジェクトを設定してもよい。
オブジェクト設定部184は、ゲームの進行に応じて、例えば、ユーザに対して交流関係がある他のユーザに係るメインキャラオブジェクトや、第1オブジェクトに係るキャラクタと仲間関係であるキャラクタに係るメインキャラオブジェクトが含まれるように、配置候補の複数種類のメインキャラオブジェクトを設定してもよい。これにより、ユーザは、仲間の出現によって街の発展感を得ることができる。
パターン設定部186は、配置パターンの設定条件(変更条件)が満たされた場合、複数種類の配置パターンのうちから、一種類の配置パターンを設定する。本実施形態では、パターン設定部186は、配置パターンの設定条件(変更条件)が満たされた場合、上述したパターン設定部186に記憶された各種の配置パターンのうちから選択した一種類の配置パターンを設定する。この場合、パターン設定部186は、抽選により選択した一種類の配置パターンを設定してもよい。
配置パターンの設定条件は、任意であるが、一定時間の経過等により満たされてよい。本実施形態では、一例として、配置パターンの設定条件は、所定時間ΔT3ごとに満たされる。この所定時間ΔT3は、上述した所定時間ΔT1及び所定時間ΔT2よりも有意に長くてもよい。例えば、所定時間ΔT3=k1×ΔT2、ΔT2=k2×ΔT1であってよい。この場合、k1、k2は、1より大きい実数である。
空間変更処理部188は、ユーザに係るステータスパラメータ(ユーザパラメータの一例)の値に基づいて、ユーザに対応付けられたフィールドオブジェクトの利用範囲を拡張する。具体的には、空間変更処理部188は、ユーザに係るステータスパラメータの値に基づいてレベルlv1~lv3のうちの、いずれか1つのレベルを決定し、当該レベルに応じた構成領域情報(図9参照)を、当該ユーザに対して設定する。この場合、ステータスパラメータの値が高いほど、レベルlv1~lv3のうちの、高いレベル(すなわちより広い利用範囲)が決定されてよい。これにより、ユーザは、ステータスパラメータの値の増加に伴い、フィールドオブジェクトの利用範囲が拡張するので、ゲームの進行に応じて自身の街(フィールドオブジェクト)の発展等を楽しむことができる。
サーバ装置10は、更に、図8に示すように、ゲーム媒体処理部190を備える。ゲーム媒体処理部190は、図1に示したサーバ制御部13が、サーバ記憶部12に記憶された1つ以上のプログラムを実行することで実現できる。
ゲーム媒体処理部190は、ユーザによる各種入力(第2入力の一例)に基づいて、同ユーザに対応付けられた第1オブジェクトの位置を変化させたり、第1オブジェクトの向きを変化させたり等の動きを実現する。例えば、ゲーム媒体処理部190は、第1オブジェクトを移動等させる操作に基づく各種入力を受けると、各種入力に応じた動き情報(例えば位置情報や向き情報等)を生成する。この場合、描画処理部164は、動き情報に基づいて、当該動き情報を反映した第1オブジェクトを描画することで、仮想空間の画像(例えば図6の仮想空間画像G24参照)を生成する。
なお、上述したように、図8に示したサーバ装置10の各機能の一部又は全部は、端末装置20により実現されてもよい。例えば、カメラ処理部162や描画処理部164の機能は、端末装置20により実現されてもよい。この場合、端末装置20の端末記憶部22には、第1オブジェクトや各種第2オブジェクトを描画するための描画情報が記憶されてよく、端末制御部25は、入力部24を介して得られる各種入力に基づいて、カメラ処理部162や描画処理部164の機能を実現できる。この場合、モブキャラオブジェクトの種別(及びそれに伴いモブキャラオブジェクトに係る描画情報)は、ローディングごとに切り替わってもよい。これにより、モブキャラオブジェクトの種別の多様化を図りつつ、モブキャラオブジェクトの描画負荷を効率的に低減できる。
より具体的には、例えば図8Aに示すような端末装置20が実現されてもよい。図8Aは、変形例による端末装置の描画機能に関する機能ブロック図の一例である。図8Aに示す例では、端末装置20Aは、基本情報記憶部250と、配置状態記憶部252と、パターン記憶部254と、カメラパラメータ記憶部256と、ユーザ入力取得部260と、カメラ処理部262と、描画処理部264と、制限処理部266と、フィールド設定部268と、抽出部270と、配置決定部272と、割当部274と、第1判定部276と、第1配置処理部278と、第2配置処理部280と、第3配置処理部282と、オブジェクト設定部284と、パターン設定部286と、空間変更処理部288と、ゲーム媒体処理部290と、を含む。
基本情報記憶部250には、サーバ装置10の基本情報記憶部150に記憶されている各種情報の一部と同様の情報が記憶されてよい。例えば、基本情報記憶部250には、サーバ装置10と端末装置20Aとの間での通信(ダウンロード)を介して、フィールド情報や、端末装置20Aに対応するユーザのみに係るユーザ情報、オブジェクト情報、区分情報等が記憶されてよい。オブジェクト情報等は、サーバ装置10の基本情報記憶部150に記憶されているオブジェクト情報等の更新時に、当該更新に対応して適宜更新されてよい。
配置状態記憶部252には、サーバ装置10の配置状態記憶部152に記憶されている配置状態情報(配置状態情報910(図10参照))の一部又は全部と同様の情報が記憶されてよい。なお、配置状態記憶部252に記憶される配置状態情報は、端末装置20Aに対応するユーザのみに係る配置状態情報であり、ユーザ入力取得部260により取得されるユーザからの各種入力に基づいて生成されてよい。なお、このような変形例では、サーバ装置10のユーザ入力取得部160の一部又は全部が省略されてもよい。
パターン記憶部254には、サーバ装置10と端末装置20Aとの間での通信(ダウンロード)を介して、サーバ装置10のパターン記憶部154に記憶されている各種情報の一部又は全部と同様の情報が記憶されてよい。パターン記憶部254に記憶される各種情報は、サーバ装置10のパターン記憶部154に記憶されている各種情報の更新時に、当該更新に対応して適宜更新されてよい。
カメラパラメータ記憶部256には、サーバ装置10のカメラパラメータ記憶部156に記憶されている各種情報の一部と同様の情報が記憶されてよい。例えば、カメラパラメータ記憶部256には、端末装置20Aでの描画用の仮想カメラ60に関する同様の各種カメラパラメータの各値(現在値)が記憶されてよい。なお、各種カメラパラメータの各値(現在値)は、ユーザ入力取得部260により取得されるユーザからの各種入力に基づいて生成されてよい。なお、このような変形例では、サーバ装置10のカメラパラメータ記憶部156の一部又は全部が省略されてもよい。
ユーザ入力取得部260からゲーム媒体処理部290までの各部の各機能は、実質的に、それぞれ、サーバ装置10のユーザ入力取得部160からゲーム媒体処理部190までの各部の各機能と同じであってよい。この場合、ユーザ入力取得部260は、端末装置20Aの入力部24(図1参照)を介して各種入力を直接的に(すなわちサーバ装置10を介することなく)取得できる。このように、ユーザ入力取得部260からゲーム媒体処理部290までの各部の各機能は、基本情報記憶部250からカメラパラメータ記憶部256までのそれぞれに記憶されている各種情報に基づいて、サーバ装置10と端末装置20Aとの間で各種情報のやり取りをなくしつつ又は最小限にとどめつつ、実現されてもよい。従って、このような変形例では、サーバ装置10のユーザ入力取得部160からゲーム媒体処理部190までの各部の一部又は全部が省略されてもよい。
次に、図14以降を参照して、ゲームシステム1の動作例について説明する。
図14は、ゲームシステム1の各種動作のうちの、第2オブジェクトの配置に関連した処理の一例を示すフローチャートである。以下では、特に言及しない限り、代表として、ある一のユーザに関する処理について説明する。
図14は、サーバ装置10により実行される描画処理の一例を示す概略フローチャートである。
ステップS1400では、サーバ装置10は、描画処理に必要な各種情報を取得する。各種情報は、ユーザからの各種入力や、最新の配置状態情報910(図10参照)等を含んでよい。
ステップS1401では、サーバ装置10は、仮想空間画像を描画する処理を実行する。仮想空間画像を描画する処理の具体例は、図15を参照して後述する。
ステップS1402では、サーバ装置10は、インフラ系オブジェクトを配置するステップS1400において取得された入力が、インフラ系オブジェクトを配置する操作に基づく所定入力であるか否かを判定する。判定結果が“YES”の場合、ステップS1403に進み、それ以外の場合は、ステップS1404に進む。
ステップS1403では、サーバ装置10は、ステップS1400で得た所定入力に基づいて、サブ領域R1におけるサブ領域区分にインフラ系オブジェクトを配置する。
ステップS1404では、サーバ装置10は、モブキャラオブジェクトに係る変更条件が成立したか否かを判定する。モブキャラオブジェクトに係る変更条件は、上述した通りであってよい。判定結果が“YES”の場合、ステップS1406に進み、それ以外の場合は、ステップS1408に進む。
ステップS1406では、サーバ装置10は、モブキャラオブジェクトに係る抽選処理を実行する。モブキャラオブジェクトに係る抽選処理の具体例は、図16及び図17を参照して後述する。
ステップS1408では、サーバ装置10は、メインキャラオブジェクトに係る抽選処理を実行する。メインキャラオブジェクトに係る抽選処理の具体例は、図18を参照して後述する。
図15は、図14のステップS1401の処理、すなわち仮想空間画像を描画する処理の具体例を示す概略フローチャートである。
ステップS1502では、サーバ装置10は、ステップS1400で得た各種情報に基づいて、カメラパラメータの各値を更新する。
ステップS1504では、サーバ装置10は、ステップS1502で更新したカメラパラメータの各値(図5参照)に基づいて、仮想空間における仮想カメラ60の視野を算出する。
ステップS1506では、サーバ装置10は、配置状態情報910(図10参照)に基づいて、ステップS1504で算出した仮想カメラ60内の視野内に位置する第2オブジェクトの数を算出する。
ステップS1508では、サーバ装置10は、ステップS1506で算出した第2オブジェクトの数が、所定の上限値(所定数)を超えるか否かを判定する。判定結果が“YES”の場合、ステップS1510に進み、それ以外の場合は、ステップS1516に進む。
ステップS1510では、サーバ装置10は、仮想カメラ60内の視野内に位置する第2オブジェクトのそれぞれに対して、第2オブジェクトまでの仮想カメラ60からの距離を算出する。
ステップS1512では、サーバ装置10は、ステップS1510で算出した各距離に基づいて、距離の小さい順に、所定の上限値に対応する数の第2オブジェクトを描画対象として選択する。
ステップS1514では、サーバ装置10は、仮想カメラ60内の視野内に位置する第2オブジェクトのうちの、ステップS1512で選択した描画対象だけを描画する態様で、仮想空間画像を描画する。
ステップS1516では、サーバ装置10は、仮想カメラ60内の視野内に位置する第2オブジェクトのすべてを描画する態様で、仮想空間画像を描画する。
このようにして図15に示す処理によれば、上述したように、第2オブジェクトを比較的多く配置した場合でも、描画対象の第2オブジェクトを限定することで、処理負荷を低減できる。
図16は、図14のステップS1406の処理、すなわちモブキャラオブジェクトに係る抽選処理の具体例を示す概略フローチャートである。
ステップS1602では、サーバ装置10は、変数Nt0の値を、フィールドオブジェクト77に含まれるサブ領域R1の数にセットする。例えば、図3に示したようなフィールドオブジェクト77の場合、サブ領域R1は4つあるので、サーバ装置10は、Nt0=4にセットする。
ステップS1604では、サーバ装置10は、サブ領域R1を処理順にソートする。なお、ソート方法は任意である。なお、サブ領域R1が1つだけである場合は、ステップS1604は省略されてよい。
ステップS1606では、サーバ装置10は、変数m1を初期値1にセットする。変数m1は、何番目に選択されたサブ領域R1であるかを表す変数である。
ステップS1606では、サーバ装置10は、m1番目のサブ領域R1を処理対象として選択する。
ステップS1608では、サーバ装置10は、ステップS1606で選択した処理対象のサブ領域R1に対して、モブキャラオブジェクトを配置するための抽選処理を実行する。モブキャラオブジェクトを配置するための抽選処理の具体例は、図17を参照して後述する。
ステップS1610では、サーバ装置10は、m1=Nt0であるか否かを判定する。すなわち、サーバ装置10は、すべてのサブ領域R1に対して、モブキャラオブジェクトを配置するための抽選処理を実行済みであるか否かを判定する。判定結果が“YES”の場合、図16の処理を終了し、それ以外の場合は、ステップS1612を介して、ステップS1606からの処理を繰り返す。
ステップS1612では、サーバ装置10は、次のサブ領域R1を処理対象とするために、変数m1の値を1だけインクリメントする。
図17は、図16のステップS1608の処理の具体例を示す概略フローチャートである。
ステップS1702では、サーバ装置10は、今回の処理対象のサブ領域R1に対して、空きサブ領域区分を抽出する。具体的には、サーバ装置10は、区分情報904(図9参照)に基づいて特定できる今回の処理対象のサブ領域R1内のサブ領域区分のうちから、配置状態情報910(図10参照)に基づいて特定できる空きサブ領域区分を抽出する。
ステップS1704では、サーバ装置10は、今回の処理対象のサブ領域R1に対して、モブキャラオブジェクトの配置数の目標数を決定する。モブキャラオブジェクトの配置数の目標数の決定方法は、任意であり、上述した通りであってよい。例えば、サーバ装置10は、ステップS1702で抽出された空きサブ領域区分の数に基づいて、当該空きサブ領域区分の数を超えない範囲で、配置数の目標数を決定してよい。
ステップS1706では、サーバ装置10は、ステップS1702で抽出された空きサブ領域区分を所定の判定順にソートする。例えば、サーバ装置10は、空きサブ領域区分を区分IDに基づいてソートしてもよい。
ステップS1708では、サーバ装置10は、ステップS1702で抽出された空きサブ領域区分の数をN1とし、配置数決定部172により決定された配置数の目標数をN2としたとき、変数Nt1=N1、変数Nt2=N2にセットする。
ステップS1710では、サーバ装置10は、変数jの値を初期値0にセットする。変数jは、当選数を表す変数である。
ステップS1712では、サーバ装置10は、変数m2の値を初期値1にセットする。変数m2は、何番目に選択された空きサブ領域区分であるかを表す変数である。
ステップS1714では、サーバ装置10は、m2番目の空きサブ領域区分に対して配置確率を割り当てる。配置確率の決定方法は、任意であり、上述した通りであってよい。例えば、サーバ装置10は、ステップS1702で抽出された空きサブ領域区分の数と、ステップS1704で決定した配置数の目標数とに基づいて、配置確率を決定してもよい。なお、配置確率が、任意の空きサブ領域区分に対して常に一定である場合は、ステップS1714は、省略されてもよい。また、配置確率がサブ領域R1ごとに一定である場合は、m2=2以降の周期では、1番目の空きサブ領域区分に対して割り当てた配置確率が、m2番目の空きサブ領域区分に対してそのまま割り当てられてよい。
ステップS1716では、サーバ装置10は、配置確率に対応する確率の抽選を行い、当選したか否かを判定する。なお、抽選処理は、乱数を用いて実現されてよい。判定結果が“YES”の場合、ステップS1718に進み、それ以外の場合は、ステップS1724に進む。
ステップS1718では、サーバ装置10は、m2番目の空きサブ領域区分に、モブキャラオブジェクトを配置することを決定する。この場合、サーバ装置10は、配置状態情報910において、m2番目の空きサブ領域区分に対応する区分IDに対応付けられるオブジェクト配置状態を“null”から、モブキャラオブジェクトに対応したオブジェクトIDに変更する。
ステップS1720では、サーバ装置10は、変数jの値を1だけインクリメントする。
ステップS1722では、サーバ装置10は、変数j=変数Nt2であるか否かを判定する。すなわち、当選数が配置数の目標数に到達したか否かを判定する。判定結果が“YES”の場合、図17の処理を終了し、それ以外の場合は、ステップS1724に進む。
ステップS1724では、サーバ装置10は、変数m2の値を1だけインクリメントする。
ステップS1726では、サーバ装置10は、変数m2の値=変数Nt1の値であるか否かを判定する。すなわち、判定対象のすべての空きサブ領域区分に対して配置確率による抽選を行ったか否かを判定する。判定結果が“YES”の場合、ステップS1728に進み、それ以外の場合は、ステップS1714に戻り、ステップS1714からの処理を繰り返す。
ステップS1728では、サーバ装置10は、当選した空きサブ領域区分を除く非当選の空きサブ領域区分を所定の判定順にソートする。例えば、サーバ装置10は、ステップS1706と同様、空きサブ領域区分を区分IDに基づいてソートしてもよい。
ステップS1730では、サーバ装置10は、当選した空きサブ領域区分を除く非当選の空きサブ領域区分の数(=N1-j)に基づいて、変数Nt1を、変数Nt1=N1-jと更新し、ステップS1712からの処理を繰り返す。
このようにして図16及び図17に示す処理によれば、今回の処理対象のサブ領域R1における空きサブ領域区分のうちの、配置確率で当選した空きサブ領域区分に対して、モブキャラオブジェクトを配置数の目標数に達するまで配置できる。これにより、低減された処理負荷により、フィールドオブジェクト77のサブ領域区分に多様な配置パターンでモブキャラオブジェクトを配置できる。
なお、図16及び図17に示す処理においては、ステップS1730を経由してステップS1712からの処理を繰り返す回数が多いほど、ランダム性が高くなる。従って、配置確率は、ステップS1730を経由してステップS1712からの処理を繰り返す回数が少なくとも1回生じるように(すなわち上述した周回数が2回以上となるように)適合されてよい。
図18は、図14のステップS1408の処理、すなわちメインキャラオブジェクトに係る抽選処理の具体例を示す概略フローチャートである。以下では、一例として、配置パターンは、複数種類用意され、通常時用の複数種類と、特殊イベント期間用の複数種類が用意されているものとする。
ステップS1800では、サーバ装置10は、運営側が設定した特殊イベント期間であるか否かを判定する。特殊イベント期間は、ユーザごとに異なってもよいし、共通であってもよい。例えば、特殊イベント期間は、ユーザに対応付けられる記念日を含む期間であってもよい。判定結果が“YES”の場合、ステップS1806に進み、それ以外の場合は、ステップS1802に進む。
ステップS1802では、サーバ装置10は、配置パターンの設定条件が成立したか否かを判定する。ここでは、例えば、配置パターンの設定条件は、複数の特定時刻(以下、「パターン抽選時刻」とも称する)に満たされる。この場合、サーバ装置10は、現時刻がパターン抽選時刻を跨いだか否かを判定する。判定結果が“YES”の場合、ステップS1804に進み、それ以外の場合は、ステップS1810に進む。
ステップS1804では、サーバ装置10は、通常時用の複数種類の配置パターンのうちから、1つの配置パターンを抽選より選択する。
ステップS1806では、サーバ装置10は、配置パターンの設定条件が成立したか否かを判定する。ここでは、例えば、配置パターンの設定条件は、ステップS1802と同様、複数の特定時刻に満たされる。ただし、変形例では、ステップS1806での配置パターンの設定条件は、ステップS1802での配置パターンの設定条件とは異なってもよい。
ステップS1808では、サーバ装置10は、特殊イベント期間用の複数種類のうちから、1つの配置パターンを抽選より選択する。
ステップS1810では、サーバ装置10は、メインキャラオブジェクトに係る配置変更条件が成立したか否かを判定する。ここでは、例えば、メインキャラオブジェクトに係る配置変更条件は、複数の特定時刻(以下、「キャラクタ抽選時刻」とも称する)に満たされる。この場合、サーバ装置10は、現時刻がキャラクタ抽選時刻を跨いだか否かを判定する。判定結果が“YES”の場合、ステップS1812に進み、それ以外の場合は、図18の処理を終了する。なお、キャラクタ抽選時刻は、上述したパターン抽選時刻よりも多く設定されてもよい。すなわち、メインキャラオブジェクトに係る配置変更条件は、配置パターンの設定条件よりも高い頻度で成立してもよい。また、メインキャラオブジェクトに係る配置変更条件は、配置パターンの設定条件が成立した場合は満たされる。
ステップS1812では、サーバ装置10は、強制出現フラグがオン状態であり、かつ、強制出現キャラオブジェクト用の残枠(図18では、「強制出現キャラ用残枠」とも称する)があるか否かを判定する。強制出現フラグは、例えば運営側からの入力に応じてオン/オフが切り替え可能であってよい。あるいは、強制出現フラグは、特殊イベント期間のような特定の期間だけオンされてもよい。
強制出現キャラ用残枠は、キャラクタ配置区分のうちの、強制出現キャラオブジェクトが配置可能なキャラクタ配置区分の残りに対応する。強制出現キャラ用残枠の有無は、例えば、以下のようにして判定されてもよい。まず、今回選択した配置パターンに係るパターン情報920(図13参照)に基づいて、メイン領域区分のうちの、配置要否情報が“○”でありかつサブ属性情報が“出現不可属性”であるメイン領域区分(以下、「強制出現キャラ用のキャラクタ配置区分」と称する)として抽出する。ついで、このようにして抽出された強制出現キャラ用のキャラクタ配置区分のうち、すでに、強制出現キャラオブジェクトが配置されているキャラクタ配置区分を除くと、強制出現キャラ用残枠が得られる。
ステップS1812において、判定結果が“YES”の場合、強制出現キャラ用残枠の1つ(例えば、優先度情報の優先度が高い順から1つ)を消費すべくステップS1814に進み、それ以外の場合は、ステップS1822に進む。なお、変形例では、強制出現フラグを利用せずに、強制出現キャラ用残枠を強制的に0にすることで、強制出現フラグのオフ状態を実現してもよい。
ステップS1814では、サーバ装置10は、メインキャラオブジェクトのうちの、強制出現キャラオブジェクト(図18では、「強制出現キャラ」と表記)を抽出する。
ステップS1816では、サーバ装置10は、ステップS1814で抽出したメインキャラオブジェクトのうちの、出現期間外のメインキャラオブジェクト(図18では、「出現期間外の強制出現キャラ」と表記)を除外する。強制出現キャラオブジェクトが出現期間外であるか否かは、上述したオブジェクト情報903(図9参照)に基づいて判定されてもよい。
ステップS1818では、サーバ装置10は、ステップS1814で抽出したメインキャラオブジェクトのうちの、出現期間外のメインキャラオブジェクトを除外した後の、メインキャラオブジェクト(以下、「強制出現残キャラ」と称する)が、1つ以上存在するか否かを判定する。判定結果が“YES”の場合、ステップS1820に進み、それ以外の場合は、ステップS1822に進む。
ステップS1820では、サーバ装置10は、強制出現キャラ用のキャラクタ配置区分に対して、強制出現残キャラを配置する。なお、強制出現残キャラには、優先度が付与されてもよい。この場合、強制出現残キャラは、優先度が高い順に、強制出現キャラ用のキャラクタ配置区分に配置されてもよい。ステップS1820が終了すると、ステップS1812からの処理を繰り返す。このようにして、強制出現キャラ用残枠が無くなるか、又は、強制出現残キャラが無くなるまで、ステップS1814からの処理が繰り返される。
ステップS1822では、サーバ装置10は、稀キャラオブジェクト用の残枠(以下、「稀キャラ用残枠」とも称する)があるか否かを判定する。稀キャラ用残枠は、キャラクタ配置区分のうちの、稀キャラオブジェクトが配置可能なキャラクタ配置区分の残りに対応する。稀キャラ用残枠の有無は、例えば、以下のようにして判定されてもよい。まず、今回選択した配置パターンに係るパターン情報920(図13参照)に基づいて、メイン領域区分のうちの、配置要否情報が“○”でありかつサブ属性情報が“稀属性”であるメイン領域区分(以下、「稀出現キャラ用のキャラクタ配置区分」と称する)として抽出する。ついで、このようにして抽出された稀出現キャラ用のキャラクタ配置区分から、すでに、稀キャラオブジェクトが配置されているキャラクタ配置区分(及び後述する消費した枠に係るキャラクタ配置区分)を除くと、稀キャラ用残枠が得られる。
ステップS1822において、判定結果が“YES”の場合、稀キャラ用残枠の1つ(例えば、優先度情報の優先度が高い順から1つ)を消費すべくステップS1824に進み、それ以外の場合は、ステップS1834に進む。なお、消費された稀キャラ用残枠の1つは、“残枠”から除外され、次のステップS1824で当選しなかった場合において実行されるステップS1822の処理において稀キャラ用残枠として扱われない。
ステップS1824では、サーバ装置10は、今回消費する稀キャラ用残枠の1つに対して、稀キャラオブジェクトを配置するか否かの抽選を実行する。なお、この抽選に係る当選確率は、任意であり、固定値又は可変値であってよい。また、当選確率は、配置確率と同様、キャラクタ配置区分ごとに設定されてもよい。抽選に当選した場合、ステップS1826に進み、それ以外の場合は、ステップS1822に戻り、ステップS1822からの処理を繰り返す。
ステップS1826では、サーバ装置10は、稀キャラオブジェクトのうちの、未開放のメインキャラオブジェクトを、配置候補から除外する。稀キャラオブジェクトが未開放であるか否かは、上述したオブジェクト情報903(図9参照)に基づいて判定されてもよい。
ステップS1828では、サーバ装置10は、後述するステップS1832で配置済のメインキャラオブジェクト(すなわち、すでに配置された稀キャラオブジェクト)を、配置候補から除外する。
ステップS1830では、サーバ装置10は、ステップS1826及びステップS1828で除外した後の、メインキャラオブジェクト(以下、「稀出現残キャラ」と称する)が、1つ以上存在するか否かを判定する。判定結果が“YES”の場合、ステップS1832に進み、それ以外の場合は、ステップS1834に進む。
ステップS1832では、サーバ装置10は、稀出現キャラ用のキャラクタ配置区分に対して、稀出現残キャラを配置する。なお、稀出現残キャラには、優先度が付与されてもよい。この場合、稀出現残キャラは、優先度が高い順に、稀出現キャラ用のキャラクタ配置区分に配置されてもよい。ステップS1832が終了すると、ステップS1822からの処理を繰り返す。このようにして、稀キャラ用残枠が無くなるか、又は、稀出現残キャラが無くなるまで、ステップS1824からの処理が繰り返される。
ステップS1834では、サーバ装置10は、通常キャラオブジェクト用の残枠(以下、「通常キャラ用残枠」とも称する)があるか否かを判定する。通常キャラ用残枠は、キャラクタ配置区分のうちの、通常キャラオブジェクトが配置可能なキャラクタ配置区分の残りに対応する。通常キャラ用残枠の有無は、例えば、以下のようにして判定されてもよい。まず、今回選択した配置パターンに係るパターン情報920(図13参照)に基づいて、メイン領域区分のうちの、配置要否情報が“○”でありかつサブ属性情報が“通常属性”であるメイン領域区分(以下、「通常キャラ用のキャラクタ配置区分」と称する)として抽出する。ついで、このようにして抽出された通常キャラ用のキャラクタ配置区分から、すでに、通常キャラオブジェクトが配置されているキャラクタ配置区分(及び後述する消費した枠に係るキャラクタ配置区分)を除くと、通常キャラ用残枠が得られる。
ステップS1836では、サーバ装置10は、通常キャラオブジェクトのうちの、未開放のメインキャラオブジェクトを、配置候補から除外する。通常キャラオブジェクトが未開放であるか否かは、上述したオブジェクト情報903(図9参照)に基づいて判定されてもよい。
ステップS1838では、サーバ装置10は、後述するステップS1840で配置済のメインキャラオブジェクト(すなわち、すでに配置された通常キャラオブジェクト)を、配置候補から除外する。
ステップS1840では、サーバ装置10は、通常キャラ用残枠のうちから、優先度情報の優先度が高い順から1つの通常キャラ用残枠に、通常キャラオブジェクトを配置する。この場合、サーバ装置10は、配置優先度が高い順に、通常キャラオブジェクトを選択(抽選)して配置してよい。このようにして、サーバ装置10は、通常キャラオブジェクトを配置優先度が高い順に、優先度情報の優先度が高い通常キャラ用のキャラクタ配置区分に配置してもよい。ステップS1840が終了すると、ステップS1822からの処理を繰り返す。このようにして、通常キャラ用残枠が無くなるまで、ステップS1836からの処理が繰り返される。
このようにして、図18に示す処理によれば、多様な属性のメインキャラオブジェクトを効率的に多様な配置パターンでフィールドオブジェクト77のメイン領域区分に配置できる。また、特殊イベント期間用の配置パターンを設定することで、特別感のある配置パターンを実現する等、第2オブジェクトの配置の更なる多様化を図ることができる。
なお、上述では、ゲームシステム1が、情報処理システムの一例を実現するが、特定の一の端末装置20の各要素(図1の端末通信部21~端末制御部25参照)が、情報処理システムの一例を実現してもよいし、複数の端末装置20が、協動して情報処理システムの一例を実現してもよい。また、サーバ装置10が単独で、情報処理システムの一例を実現してもよいし、サーバ装置10と1つ以上の端末装置20が、協動して情報処理システムの一例を実現してもよい。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
例えば、上述した実施形態では、フィールドオブジェクトを所定領域として第1オブジェクトや各種の第2オブジェクトが配置されているが、第1オブジェクトや各種の第2オブジェクトが配置される対象は、“フィールド”の形態である必要はない。例えば、重力のない仮想空間(例えば宇宙空間を模した仮想空間)においては、空間中に所定領域が設定されてもよい。