以下、本発明を実施するための形態について図面を参照して説明する。なお、各図において、各部の寸法及び縮尺は、実際のものと適宜に異ならせてある。また、以下に述べる実施の形態は、本発明の好適な具体例であるから、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明において特に本発明を限定する旨の記載がない限り、これらの形態に限られるものではない。
[A.実施形態]
[1.ゲームシステムのハードウェア構成]
図1は、本発明の一実施形態であるゲームシステム1のハードウェア構成を示すブロック図である。このゲームシステム1は、クラウドサーバ10と、このクラウドサーバ10にインターネット等のネットワークNWを介して接続される複数の端末30-1~30-M(Mは2以上の整数)とを含む。クラウドサーバ10は、端末30-1~30-Mを操作するユーザに対してゲームを提供するサーバである。端末30-1~30-Mは、ゲームを進行させるユーザが操作する端末である。なお、以下において、端末30-1~30-Mを区別する必要がない場合は、端末30と総称する。
図2はクラウドサーバ10の構成例を示すブロック図である。図2において、制御部11と、記憶部12と、通信部13は、クラウドサーバ10が提供する仮想的なコンピュータリソースである。制御部11は、演算処理を行う手段であり、CPU(Central Processing Unit)に相当する。記憶部12は、RAM(Random Access Memory)等の揮発性メモリと、ハードディスク等の不揮発性メモリとを含む。揮発性メモリは、制御部11の作業領域として機能する。不揮発性メモリには、ユーザにゲームを提供するアプリケーションプログラムであるサーバプログラムPGs等の各種の情報が記憶される。
図3は端末30の構成例を示すブロック図である。この例において、端末30は、パーソナルコンピュータであり、端末30の各部を制御する制御部31と、各種情報を記憶する記憶部32と、端末30の外部に存在する外部装置との通信を行うための通信部33と、端末30のユーザの操作を受け付けるための操作部34と、各種画像を表示する表示部35とを備える。なお、端末30は、スマートフォン、タブレット等の携帯電子機器であってもよい。また、端末30は、店舗据置き型業務用機であってもよい。記憶部12は、揮発性メモリと、不揮発性メモリとを含む。揮発性メモリは、制御部31の作業領域として機能する。不揮発性メモリには、ゲームの状況を示す画像を表示部35に表示し、ゲームを進行させる操作情報をユーザから受け取るアプリケーションプログラムである端末プログラムPGt等の各種の情報が記憶される。
[2.ゲームの概要]
本実施形態においてクラウドサーバ10は、複数の端末30を操作する複数のユーザに対し、複数のキャラクタが対戦する対戦ゲームを提供する。この対戦ゲームにおいて、爆弾などのトラップによって倒されたキャラクタは退場となり、最後まで生き残ったキャラクタが勝利となる。本実施形態では、例えば100体等、多数のキャラクタが同時に対戦可能なゲームを提供する。
本実施形態では、100体のキャラクタに対応するような大きな1つの領域を設けずに、複数の小領域を対戦の場として提供する。以下、この小領域をフィールドという。このフィールド内で限られた数のキャラクタによる対戦を行わせることで、キャラクタの過密や過疎を防ぐ。さらに各フィールドは周期的に互いに往来可能とすることで、1つの大きな領域の一部においてプレイする感覚をユーザに与えつつ大人数で行うプレイ感覚をもユーザに与える。
図4は本実施形態において提供されるフィールドの一例であるフィールドFDを示す図である。図4に示すフィールドFD内には4つのキャラクタCが所在している。これらのキャラクタCは、キャラクタCごとに別々のユーザの端末30から取得される操作情報により制御される。フィールドFDの状況は各キャラクタCに対する操作情報の送信元である端末30の画面に表示される。ユーザは、端末30の画面に表示されたフィールドFDの状況を把握しつつキャラクタCに対する操作情報を送信し、キャラクタCをフィールドFD内の他のキャラクタCと対戦させる。
フィールドFDには、キャラクタCが移動不可能な場所であるブロックがある。このブロックには、ソフトブロックSBとハードブロックHBがある。ソフトブロックSBは、爆弾等のアイテムにより破壊し消滅させると移動可能になる。これに対し、ハードブロックHBは消滅させることができない。すなわち、ハードブロックHBは、どのようにしてもキャラクタCを移動させることができない部分となる。フィールドFDでは、ハードブロックHBがその外周を覆うように配置され、フィールドFDの外部との境界を構成している。基本的にはそのフィールドFDの外へキャラクタCを移動させることができないようになっている。そのため、ユーザはこのフィールドFD内でキャラクタCを他のキャラクタCと対戦させざるを得ない。
図4に示す例では、1人のユーザから見ると、最初は対戦相手は3人しか見えないことになるが、実際にはこのようなフィールドFDが複数同時に生成され、別のフィールドFDには別のユーザのキャラクタCが配置されることになり、合計100体のキャラクタCは同時に対戦を行っている。1つのフィールドに4つキャラクタが配置されるとするならば、このようなフィールドFDが25フィールド(=100/4)同時に存在することになる。
本実施形態では、対戦開始の際に、複数のフィールドに均等な数のキャラクタを配置することで、キャラクタの過密、過疎状態を回避する。
しかし、このような態様だけでは単に小さな対戦が複数あるだけであり、100人のユーザ間の対戦にはならない。100人のユーザ間の対戦を行うためには、各ユーザのキャラクタをフィールドの枠を超えて対戦させる仕組みが必要になる。本実施形態では、ゲートの開閉制御とフィールドの連結制御により、この仕組みを実現する。
まず、ゲートの開閉制御について説明する。図4において、フィールドFDの境界をなす各辺には、キャラクタの移動可否を制御するゲートGが設けられている。図4に示すように、ゲートGが閉じた状態では、ゲートGのある部分は移動不可である。この場合、キャラクタCはゲートGの先へも移動することができない。それとは逆に、図5では、ゲートGが開いた状態となっている。この状態において、キャラクタCはゲートGを介して隣のフィールドFDへ移動可能となる。本実施形態では、定期的にゲートGの開閉を繰り返す。例えばゲートGが閉じた状態を30秒間継続し、次にゲートが開いた状態を5秒間継続し、再びゲートが閉じた状態を30秒間継続する、という具合にゲートの開閉を定期的に繰り返す。
次にフィールドの連結制御について説明する。図6には、3つのフィールドFD1~FD3が示されている。実際にはもっと数多くのフィールドが存在することになるが、説明の簡略化のため、ここではフィールドを3つとして説明する。
図6ではフィールドFD1~FD3は連結されていない。本実施形態では、各ゲートGが閉状態となっている期間内に、1のフィールドと他のフィールドとを連結する。この例では、フィールドFD1の境界の一部である右辺およびこの右辺にあるゲートGと、フィールドFD2の境界の一部である左辺およびこの左辺にあるゲートGとを共有させることによりフィールドFD1およびFD2を連結する。また、この例では、フィールドFD1の境界の一部である下辺およびこの下辺にあるゲートGと、フィールドFD3の境界の一部である上辺およびこの上辺にあるゲートGとを共有させることによりフィールドFD1およびFD3を連結する。そして、ゲートを開くタイミングになると、フィールド間の連結部にあるゲートGを開状態にする。
図7はフィールド間の連結が行われ、連結部のゲートGが開状態とされた後のフィールドFD1~FD3を示す図である。図7の状態では、フィールドFD1およびFD2間と、フィールドFD1およびFD3間のキャラクタCの往来が可能である。このようにキャラクタCを往来可能とすることで、1つのフィールド内で敵キャラクタを倒しきったキャラクタCなどは別のフィールドへ移動し、新たなキャラクタCと対戦を行うことが可能となる。本実施形態では、ゲートGの開閉切り換えのタイミングはすべてのフィールドFDで同じであるため、キャラクタCはゲートGが開いたタイミングでフィールドFDを往来可能となる。
フィールドFD内のハードブロックHB、ソフトブロックSBの配置は、複数のフィールド間で異なっている。フィールドFDのサイズは、同じであってもよく、フィールド間で異なってもよい。本実施形態では、説明を簡単にするため、各フィールドFDのサイズは同じであるものとする。
キャラクタCを操作するユーザの端末30には、キャラクタCが所在する1つのフィールドFDが画面いっぱいに表示されるため、画面に他のフィールドFDは表示されない。このため、ユーザは、キャラクタCの移動先のフィールドFDの状況をキャラクタCが移動して初めて知ることになる。
対戦ゲームが進行すると、キャラクタ数が減ってゆき、キャラクタCが所在するフィールドFDも減って行く。そこで、本実施形態では、キャラクタ数が所定数以下になった場合、あるいはキャラクタCが所在するフィールド数が所定数以下になった場合に、残存しているキャラクタCを1つのフィールドFDに集め、最終決戦を行わせる。
以上が本実施形態により提供されるゲームの概要である。
[3.クラウドサーバの機能構成]
図8は制御部11がサーバプログラムPGsを実行することにより実現される諸機能を示すブロック図である。なお、図8では、制御部11の諸機能の理解を容易にするため、記憶部12と記憶部12に記憶される各種の情報が制御部11とともに示されている。本実施形態において、サーバプログラムPGsは、制御部11をユーザ情報管理部1100、マッチング部1200、ゲーム進行処理部1300、フィールド管理部1400およびAV処理部1500として機能させる。
ユーザ情報管理部1100は、対戦ゲームに参加するユーザのユーザ情報を管理する手段である。ユーザ情報管理部1100は、対戦ゲームの参加者を募集し、参加者のユーザ情報を記憶部12内のユーザ情報テーブル2100に登録する。このユーザ情報テーブル2100の内容はゲームの進行に応じて更新される。
図9はユーザ情報テーブル2100を例示する図である。ユーザ情報テーブル2100は、対戦ゲームに参加する各ユーザのユーザ情報によって構成されている。図9に示すように、1人のユーザのユーザ情報は、当該ユーザのユーザIDと、当該ユーザが操作する端末30の端末IDと、当該端末30からの操作情報により制御されるキャラクタに関するキャラクタ情報と、当該キャラクタのフィールド移動履歴の各情報を含む。
ここで、キャラクタ情報は、当該キャラクタのキャラクタIDと、当該ユーザのスキルレベルと、当該キャラクタの所持する爆弾数および銃弾数と、当該キャラクタが対戦ゲームにおいて獲得したポイントと、当該キャラクタのフィールド内位置と、当該キャラクタの生死の各情報を含む。フィールド内位置は、当該キャラクタが所在するフィールドにおける当該キャラクタの所在位置のX座標値およびY座標値により表現される。
このX座標値およびY座標値は、図4においてフィールドFDとともに示されたX軸方向およびY軸方向の各座標値である。ここで、X軸は、端末30の画面にフィールドFDが表示された状態においてフィールドFDの水平方向を示す軸であり、Y軸はフィールドFDの垂直方向を示す軸である。
フィールド移動履歴は、当該キャラクタCが現在所在するフィールドFDを示す現フィールドIDと、そのフィールドFDに所在する前に所在したフィールドFDを示す前フィールドIDとを含む。
図8において、マッチング部1200は、ゲームに参加する複数のユーザを所定数のグループに分けるマッチングを行う手段である。マッチング部1200は、グループ間で所属するキャラクタ数が均等になるようにマッチングを行う。各グループに帰属させるキャラクタはランダムに選択される。
ゲーム進行処理部1300は、複数のフィールド(本発明における「領域」の一例)に所在する各キャラクタを当該キャラクタに対応した端末30から取得される操作情報に基づいて制御する第1制御部に相当するものである。さらに詳述すると、ゲーム進行処理部1300は、マッチング部1200がマッチングを実行することにより得られたゲーム参加者の各グループについてフィールドFDを各々生成する。そして、ゲーム進行処理部1300は、各グループに対応したフィールドFDに対し、各グループの参加者に対応したキャラクタCを配置し、各フィールドFDの状態を示すフィールド情報テーブル2200を記憶部12内に生成する。
図10はフィールド情報テーブル2200の一例を示す図である。フィールドIDは、フィールド情報テーブル2200が示すフィールドFDを特定するIDである。
ハードブロック情報は、フィールドFD内に配置されたハードブロックHBを示す情報である。図4に例示するようにフィールドFD内に複数のハードブロックHBが配置されている場合、フィールド情報テーブル2200には、それらのハードブロックHBに対応した複数のハードブロック情報が含まれる。各ハードブロック情報は、フィールドFD内におけるハードブロックHBの代表位置(例えば中心位置)を示す位置情報を含む。
ソフトブロック情報は、フィールドFD内に配置されたソフトブロックSBを示す情報である。図4に例示するようにフィールドFD内に複数のソフトブロックSBが配置されている場合、フィールド情報テーブル2200には、それらのソフトブロックSBに対応した複数のソフトブロック情報が含まれる。各ソフトブロック情報は、ハードブロック情報と同様な位置情報の他、有無情報を含む。この有無情報は、ソフトブロック情報が示すソフトブロックSBがフィールドFD内に存在しているか否かを示す情報である。この有無情報を設けたのは、ソフトブロックSBは、ハードブロックHBと異なり、爆弾等による攻撃により消失することがあるからである。
ゲート情報は、フィールドFDに設けられたゲートGの状態を示す情報である。このゲート情報は、フィールドFD内における当該ゲートGの代表位置(例えば中心位置)を示す位置情報と、当該ゲートGが開いているか閉まっているかを示す開閉情報とを含む。
また、ゲート情報は、キャラクタ入場数と、キャラクタ退場数とを含む。キャラクタ入場数は、当該ゲートGが開状態となった後、他のフィールドFDから当該ゲートGを介して当該フィールドFDに入場したキャラクタCの数である。また、キャラクタ退場数は、当該ゲートGが開状態となった後、当該フィールドFDから当該ゲートGを介して他のフィールドFDに退場したキャラクタCの数である。
また、ゲート情報は、オプションとして、制限情報を含む場合がある。この制限情報は、当該ゲートGが開状態であっても当該ゲートGを介した特定の態様のキャラクタCの移動を制限することを指示するものであり、必要に応じてフィールド管理部1400により設定される。
キャラクタ情報は、フィールドFD内に所在するキャラクタCを示す情報であり、当該キャラクタCを特定するキャラクタIDと、当該キャラクタCのフィールドFD内での代表位置(例えば中心位置)を示す位置情報を含む。フィールドFD内に複数のキャラクタCが所在する場合、フィールド情報テーブル2200にはそれらのキャラクタCに対応した複数のキャラクタ情報が含まれる。
フィールド内キャラクタ数は、当該フィールドFD内に所在するキャラクタCの総数である。このフィールド内キャラクタ数は、フィールド情報テーブル2200内にあるキャラクタ情報の数と一致する。
爆発情報は、キャラクタCによってフィールドFD内に爆弾が仕掛けられた場合に設定される情報である。この爆発情報は、フィールドFD内において爆弾が仕掛けられた位置を示す位置情報と、仕掛けられた爆弾の爆発予定時刻と、攻撃者IDとを含む。攻撃者IDは、爆弾を仕掛けたキャラクタCのキャラクタIDである。
発砲情報は、キャラクタCが銃を発砲した場合に設定される情報である。この発砲情報は、発砲が行われたフィールドFD内の位置を示す位置情報と、発砲方向と、攻撃者IDとを含む。攻撃者IDは、発砲を行ったキャラクタCのキャラクタIDである。
音声指示情報は、爆弾の爆発音、銃の発砲音等の各種の音声の発生を指示する情報である。この音声指示情報は、発生する音声の種類を示す音声IDと、音声の継続時間を示す情報を含む。例えば爆弾が爆発した場合に、爆発音を示す音声IDと、爆発音の継続時間を示す情報を含む音声指示情報がフィールド情報テーブル2200に書き込まれる。後述するAV処理部1500内のAV生成部1510は、フィールド情報テーブル2200を読み込み、このフィールド情報テーブル2200内の音声指示情報に従って爆発音等の音声信号を発生する。この音声信号の発生が行われることにより、フィールド情報テーブル2200内の音声指示情報は削除される。
プレッシャフラグは、キャラクタをフィールドから追い出すためにプレッシャブロックの駆動を開始する際にONとされるフラグである。タイマは、プレッシャブロックの駆動開始から所定時間が経過したときにタイムアウトとなる計時手段である。プレッシャブロック情報は、フィールドからキャラクタを追い出すために駆動されるプレッシャブロックに関する情報である。本実施形態において、キャラクタCはプレッシャブロックと衝突することにより消滅し、対戦から離脱する。プレッシャブロック情報はフィールド内におけるプレッシャブロックの位置を示す位置情報を含む。
なお、爆発情報、発砲情報、音声指示情報およびプレッシャブロック情報は、ゲームが開始された後に発生する情報であり、初期状態においてはフィールド情報テーブル2200に含まれていない。
以上がフィールド情報テーブル2200の内容である。
図8において、ゲーム進行処理部1300は、このようなフィールド情報テーブル2200を各フィールドについて生成すると、各フィールドに各々対応した複数のフィールド内処理部1310を起動し、さらに振り分け部1320を起動する。
振り分け部1320は、ある端末IDを有する端末30から操作情報が取得された場合に、ユーザ情報テーブル2100を参照することにより、その端末IDに対応付けられたキャラクタIDと、現フィールドIDとを求める。そして、振り分け部1320は、現フィールドIDが示すフィールドに対応したフィールド内処理部1310に対し、その操作情報とキャラクタIDを振り分ける。
フィールド内処理部1310は、振り分け部1320から与えられる操作情報およびキャラクタIDに基づいて、操作情報の発生元である端末30に対応付けられたキャラクタCを制御する。このキャラクタCの制御によりフィールドFDの状態またはキャラクタCの状態が変化した場合、フィールド内処理部1310は、この状態の変化をフィールド情報テーブル2200およびユーザ情報テーブル2100に反映させる。なお、フィールド内処理部1310が行う処理の詳細については、説明の重複を避けるため、ゲームシステム1の動作説明において詳細を明らかにする。
フィールド管理部1400は、複数のフィールドFD(本発明における「領域」の一例)におけるキャラクタCの状況に基づいて、複数のフィールドFDにおける1のフィールドFDと他のフィールドFDとを連結する第2制御部の一例である。フィールド管理部1400は、複数のフィールドFD間のキャラクタの移動可否を制御する手段である。フィールド管理部1400は、連結制御部1410と、移動制御部1420とを含む。
連結制御部1410は、各フィールドFDの境界の一部を共有させることにより1のフィールドFDと他のフィールドFDとを連結する。本実施形態において、複数のフィールドFDの境界にはキャラクタCを移動させるためのゲートGが設けられている。連結される2つのフィールドFDは、各々の境界の一部と、その一部に設けられたゲートGを共有する。
本実施形態において、連結制御部1410は、複数のフィールドFDの各々におけるキャラクタCの数、具体的には複数のフィールド情報テーブル2200に各々含まれるフィールド内キャラクタ数に基づいて、互いに連結するフィールドを決定する。
図6に示す例では、フィールドFD1内のキャラクタ数が2、フィールドFD2内のキャラクタ数が6、フィールドFD3内のキャラクタ数が7となっている。この場合、キャラクタ数がもっとも少ないのはフィールドFD1である。このフィールドFD1の連結先をできるだけキャラクタ数の多いフィールドとすれば、連結先からのキャラクタの流入により、各フィールドのキャラクタの過密、過疎が緩和される可能性が高くなる。この例ではフィールドFD3が最も多いため、フィールドFD1をフィールドFD3と連結させればキャラクタCの過密、過疎が緩和される可能性が高くなることになる。
また、そのような連結先の数を多くすることで、過密、過疎がさらに緩和される可能性が高くなる。例えば、フィールドFD2もフィールドFD1よりキャラクタ数が多い。そのため、フィールドFD3に加えてフィールドFD2もフィールドFD1と連結させれば、さらにキャラクタCの過密、過疎が緩和される可能性が高くなる。
そこで、フィールドFD1~FD3が図7に示すように連結されることとなる。この例では、キャラクタ数が少ないフィールドを基準にキャラクタ数の多いフィールドを連結させることを考えたが、逆でも良い。すなわち、キャラクタ数の多いフィールドを基準にキャラクタ数の少ないフィールドを連結させるようにしてもよい。
本実施形態において、連結制御部1410は、以上のような連結制御を実行するために、連結テーブル2300を生成し、その管理を行う。図11は、図7に示すようにフィールドFD1、FD2およびFD3を連結した直後における連結テーブル2300を例示する図である。
図11において、0001、0002および0003は、図7におけるフィールドFD1、FD2およびFD3のフィールドIDである。図7では、フィールドFD1、FD2およびFD3内におけるキャラクタ数は2、6および7であるため、連結テーブル2300においてフィールドIDである0001、0002および0003に対応付けられたキャラクタ数は、2、6および7となっている。
また、連結テーブル2300では、フィールドID=0001のフィールドFD1が、連結部である右辺において、フィールドID=0002のフィールドFD2と連結され、連結部である下辺において、フィールドID=0003のフィールドFD3と連結されていることが示されている。また、連結テーブル2300では、フィールドID=0002のフィールドFD2が、連結部である左辺において、フィールドID=0001のフィールドFD1と連結されていることが示されている。また、連結テーブル2300では、フィールドID=0003のフィールドFD3が、連結部である上辺において、フィールドID=0001のフィールドFD1と連結されていることが示されている。
本実施形態では、連結テーブル2300の各フィールドに対応したキャラクタ数に各フィールド情報テーブル2200のフィールド内キャラクタ数が反映されるようになっている。連結制御部1410は、連結制御のタイミングにおいて、連結テーブル2300に示された各フィールドのキャラクタ数に基づいて、連結するフィールドの組を決定する。
連結制御部1410は、以上のようなフィールドの連結制御の他、キャラクタの移動促進制御を行う。さらに詳述すると、連結制御部1410は、キャラクタCが所在するフィールドFDのフィールド情報テーブル2200を常時監視する。そして、フィールド内キャラクタ数が所定数以下の状態が所定時間以上継続したフィールドFDを発見すると、連結制御部1410は、当該フィールドFDに対応したフィールド内処理部1310に対し、不利益付与指令を送る。この不利益付与指令は、フィールドFD内に所在するキャラクタCに対して、プレッシャブロックによる攻撃という不利益を与えて、フィールドFDから追い出す旨の指令である。
移動制御部1420は、移動制御タイミングにおいて、各ゲートを介したキャラクタの移動の可否の制御を行う手段である。移動制御タイミングには、連結される2つのフィールド間の境界にあるゲートの開閉制御を行う開閉制御タイミングと、フィールド間の特定の態様の移動を制限する制限情報の設定を行う制限情報設定タイミングが含まれる。
図12は移動制御部1420および連結制御部1410の制御の態様を示すタイムチャートである。図12に示すように、移動制御部1420は、開閉制御タイミングにおいてゲートの開閉を切り換え、ゲートGを開き、ゲートGを介したキャラクタCの移動を可とする第1期間と、ゲートGを閉じ、ゲートGを介したキャラクタCの移動を不可とする第2期間を交互に繰り返す。そして、移動制御部1420は、第1期間において、各フィールドFDの連結部となっている辺のゲートGを開く。連結制御部1410は、第2期間内における第1期間の少し前のタイミングにおいて上述した連結の制御を行う。
また、移動制御部1420は、制限情報設定タイミングにおいて、ゲートGを介してキャラクタCが特定の態様で移動することを制限する制限情報を必要に応じて生成し、各フィールド情報テーブル2200内のゲート情報に対して設定する。この移動制限の対象には例えば次のようなものがある。
制限対象1:1のフィールドから他のフィールドへ移動したキャラクタCが再び1のフィールドに戻る。
この制限対象1は、キャラクタCが強敵との対戦を回避するために同じ2つのフィールド間を往復する移動態様を想定している。移動制御部1420は、例えばゲームが白熱する中盤の制限情報設定タイミングにおいて、制限対象の種別として制限対象1を指定する制限情報を全てのフィールド情報テーブル2200の全てのゲート情報に設定する。
制限対象2:スキルレベルが所定値以上であるユーザのキャラクタCがゲートGを通過する。
スキルレベルが所定値以上であるユーザのキャラクタCは、他のキャラクタCを倒してフィールド内キャラクタ数を減らすのに貢献する。そこで、移動制御部1420は、例えばゲームが白熱する中盤の制限情報設定タイミングにおいて、制限対象の種別として制限対象2を指定する制限情報を全てのフィールド情報テーブル2200の全てのゲート情報に設定する。
制限対象3:1つのフィールドFDに設けられた全てのゲートGから退場したキャラクタ数(すなわち、キャラクタ退場数の総和)が所定数以上となった後のゲート通過。
この制限対象3の移動を許すと、キャラクタが過疎なフィールドが発生する。そこで、移動制御部1420は、例えば定期的な制限情報設定タイミングにおいて、制限対象の種別として制限対象3を指定する制限情報を全てのフィールド情報テーブル2200の全てのゲート情報に設定する。
制限対象4:連結されたフィールド間の特定方向の移動(すなわち、一方通行)。
キャラクタCが過密になる可能性のあるフィールドがある場合、そのようなフィールドからキャラクタCが退場することは好ましいが、そのようなフィールドにキャラクタCが入場することは好ましくない。そこで、キャラクタCが過密になる可能性のあるフィールドのキャラクタ数を減らすために、この制限対象4に対応した制限情報が設定される。
この場合の制限情報の設定制御には、2つの態様が考えられる。第1の態様において、移動制御部1420は、フィールド内キャラクタ数が所定数以上であるフィールドへのキャラクタCの移動を制限する制限情報を設定する。すなわち、移動制御部1420は、例えば定期的な制限情報設定タイミングにおいて、次のように制限情報の設定を行う。まず、移動制御部1420は、全てのフィールド情報テーブル2200を参照することにより、フィールド内キャラクタ数が所定数以上であるフィールドIDを求める。次に移動制御部1420は、連結テーブル2300を参照することにより、このフィールドIDに対応付けられた連結部と連結先フィールドIDを求める。そして、移動制御部1420は、連結先フィールドIDに対応したフィールド情報テーブル2200において連結部に対応したゲートのゲート情報に対し、当該ゲートを介した退場を禁止する制限情報を設定する。
第2の態様において、移動制御部1420は、1つのフィールドFDに設けられた全てのゲートGから入場したキャラクタ数(すなわち、キャラクタ入場数の総和)が所定数以上となった後のゲート通過を制限する制限情報を設定する。
この第2の態様において、移動制御部1420は、例えば定期的な制限情報設定タイミングにおいて、次のように制限情報の設定を行う。まず、移動制御部1420は、全てのフィールド情報テーブル2200を参照することにより、キャラクタ入場数の総和が所定数以上であるフィールドIDを求める。これ以降の処理は、第1の態様の制限情報の設定処理と同様である。この第1の態様による制限情報の設定処理と、第2の態様による制限情報の設定処理は、いずれか一方のみを実施してもよく、両者を実施してもよい。両者を実施する場合、両者の制限情報設定タイミングをずらしてもよい。
制限対象4の具体例として、フィールド内キャラクタ数が著しく少ないフィールドへのキャラクタの移動がある。フィールド内キャラクタ数が著しく少ないフィールドは、残存するキャラクタCが退場すれば、フィールド内キャラクタ数が0となり、消滅する可能性がある。そのようなフィールドに他のフィールドからキャラクタが入場するのは好ましくない。そこで、移動制御部1420は、例えば定期的な制限情報設定タイミングにおいて、全てのフィールド情報テーブル2200を参照することにより、フィールド内キャラクタ数が所定数以下であるフィールドIDを求める。これ以降の処理は、キャラクタCが過密になる可能性のあるフィールドのキャラクタ数を減らすための制限情報の設定処理と同様である。
また、制限対象4の具体例として、1のフィールドのフィールド内キャラクタ数Naよりも連結先フィールドのフィールド内キャラクタ数Nbの方が多く、両フィールド内キャラクタ数の隔たりの程度、例えばNb-NaまたはNb/Naが所定の閾値を越えている場合の連結先フィールドへの移動がある。このような移動を認めると、両フィールド間のフィールド内キャラクタ数の隔たりが益々広がるからである。
この移動制限を行うため、移動制御部1420は、例えば定期的な制限情報設定タイミングにおいて、連結テーブル2300を参照し、フィールドIDに対応付けられたフィールド情報テーブル2200内のフィールド内キャラクタ数と連結先フィールドIDに対応付けられたフィールド情報テーブル2200内のフィールド内キャラクタ数とを比較する。そして、移動制御部1420は、フィールドIDに対応付けられたフィールド情報テーブル2200内のフィールド内キャラクタ数Naよりも連結先フィールドIDに対応付けられたフィールド情報テーブル2200内のフィールド内キャラクタ数Nbの方が多く、かつ、両フィールド内キャラクタ数の隔たりの程度が閾値よりも大きいか否かを判断する。この判断結果が「YES」である場合、移動制御部1420は、フィールドIDに対応したフィールド情報テーブル2200において、上記判断結果が「YES」となった連結先IDに対応したゲートのゲート情報に対し、当該ゲートを介した退場を禁止する制限情報を設定する。
AV処理部1500は、ゲームの進行状況を示す画像および音声を生成してゲームの参加者の端末30に提供する手段である。このAV処理部1500は、ゲームの参加者の端末30に対応付けられた複数のAV生成部1510を含む。各AV生成部1510は、各々に対応した端末30に対応したキャラクタの所在するフィールドのフィールド情報テーブル2200を記憶部12から読み出し、当該フィールドの状況を示す画像を生成して当該端末30に送信する。また、フィールド情報テーブル2200内に音声指示情報が含まれる場合、AV生成部1510は、その音声指示情報の音声IDに対応した音声を音声指示情報が指示する継続時間だけ発生して端末30に送信する。音声の発生を行うと、AV生成部1510は、フィールド情報テーブル2200内の当該音声指示情報を削除する。
以上がクラウドサーバ10の機能構成である。
[4.ゲームシステムの動作]
図13は本実施形態におけるサーバプログラムPGsのメインフローを示すフローチャートである。制御部11がサーバプログラムPGsの実行を開始すると、まず、ユーザ情報管理部1100が対戦ゲームの参加者を募集する(ステップS100)。
具体的には、ユーザ情報管理部1100は、クラウドサーバ10が提供するサイトにアクセスしている端末30に対し、対戦ゲームへの参加を促す案内画像を送信し、端末30の表示部35に表示させる。対戦ゲームへの参加を希望するユーザは、端末30の操作部34を操作することにより参加申込を行う。この参加申込が行われると、端末30の制御部31は、端末30を識別する端末IDとともに参加申込情報を通信部33によりクラウドサーバ10に送信する。
クラウドサーバ10は、対戦ゲームへの参加資格のあるユーザのユーザIDと、当該ユーザが操作する端末の端末IDと、当該ユーザのスキルレベル等の各関連情報とを対応付けたデータベースを保有している。クラウドサーバ10の通信部13が参加申込情報を端末IDとともに受信すると、ユーザ情報管理部1100は、データベースを参照することにより、端末IDに対応付けられたユーザIDを特定し、端末ID、ユーザIDおよび他の関連情報をユーザ情報としてユーザ情報テーブル2100に登録する。
次にユーザ情報管理部1100は、ゲームの開始が可能になったか否かを判断する(ステップS102)。ゲームの参加申込者が定員に到達せず、かつ、募集開始からの経過時間が所定の募集時間に満たない場合、ステップS102の判断結果は「NO」となり、ユーザ情報管理部1100は、処理をステップS100に戻す。この間、参加申し込みをした端末30の表示部35には図14に示す案内画像が表示される。
ゲームの参加申込者が定員(この例では100人)に到達し、あるいは募集開始からの経過時間が所定の募集時間に到達すると、ステップS102の判断結果が「YES」となり、処理はステップS104に進む。
次にステップS104に進むと、マッチング部1200は、マッチングを実行する。具体的には、マッチング部1200は、ゲームの参加申込者を所定数のグループに分ける。1つのグループの各参加者は、各々のキャラクタを同じフィールド内において動作させる。マッチング部1200は、このグループ分けにおいて、各グループのゲームの参加者数が均等になるように、ゲームの参加者を各グループにランダムに割り当てる。例えば100名の参加者を募集し、25グループに分ける場合、各グループの参加者人数は4人となる。ここで、募集開始からの経過時間が所定の募集時間に到達することにより、ステップS102の判断結果が「YES」となった場合には、参加者人数が4人に満たないグループが生じる。この場合、当該グループには欠員が生じることになるが、ゲームではこの欠員に対応したNPC(Non Playable Character)を使用することで、グループ間の公平性を担保する。
マッチング(ステップS104)が終了すると、ゲーム進行処理部1300は初期設定を行う(ステップS106)。この初期設定において、ゲーム進行処理部1300は、マッチング(ステップS104)により得られたゲーム参加者の各グループについてフィールドを各々生成し、各グループに対応したフィールドに対し、各グループの参加者に対応したキャラクタを配置し、各フィールドの状態を示すフィールド情報テーブル2200を記憶部12内に生成する。
ここで、あるフィールドに対応したフィールド情報テーブル2200は、当該フィールドのフィールドIDと、当該フィールド内に所在するキャラクタCのキャラクタIDと位置情報を含む(図10参照)。ゲーム進行処理部1300は、このフィールド情報テーブル2200内のキャラクタCの位置情報をユーザ情報テーブル2100内の当該キャラクタCのキャラクタIDに対応付けられたフィールド内位置に反映させ、当該フィールドのフィールドID(すなわち、フィールド情報テーブル2200内のフィールドID)を当該キャラクタCのキャラクタIDに対応付けられた現フィールドIDに反映させる。
そして、ゲーム進行処理部1300は、現在時刻を0に初期化し、生成した各フィールドに対応した複数のフィールド内処理部1310と、振り分け部1320を起動する。以後、クラウドサーバ10では、1単位時間を要してステップS110~S170を実行する処理が繰り返される。
ステップS110では、ゲーム進行処理部1300が現在時刻を1単位時間だけ進める。この現在時刻は、対戦ゲームの開始時刻(具体的にはステップS106の完了時刻)を基準とした相対時刻である。本実施形態では、ステップS160において各フィールドの状況を示す画像を生成して端末30に送信する。従って、1単位時間は、端末30の画面に表示されるフィールドの画像がちらついて見辛くならないように十分に短い時間にすることが好ましい。
次にステップS112に進むと、通信部13により端末30から取得された操作情報を振り分け部1320が取り込み、操作情報の振り分けを行う。具体的には、振り分け部1320は、ユーザ情報テーブル2100を参照することにより、操作情報の送信元である端末30の端末IDに対応付けられたキャラクタIDと現フィールドIDを求める。そして、振り分け部1320は、現フィールドIDが示すフィールドに対応したフィールド内処理部1310に対し、取得した操作情報とキャラクタIDとを振り分ける。振り分け部1320は、この処理を、取得した全ての操作情報について実行する。
次にステップS114に進むと、ゲーム進行処理部1300では、全てのフィールドに対応した複数のフィールド内処理部1310がフィールド内処理を実行する。クラウドサーバ10が提供する複数のCPUを制御部11が含む場合、それらのCPUの分散処理により複数のフィールド内処理の並列実行を実現してもよい。
図15は1つのフィールド内処理の処理内容を示すフローチャートである。まず、フィールド内処理部1310は振り分け部1320から振り分けられた操作情報がキャラクタCの移動を指示するものであるか否かを判断する(ステップS200)。ここで、操作情報が例えば左右上下の各方向の矢印キーの操作情報である場合、ステップS200の判断結果は「YES」となり、そうでない場合には、判断結果が「NO」となる。
ステップS200の判断結果が「YES」である場合、処理はステップS202に進み、「NO」である場合には、処理はステップS230に進む。
次にステップS202に進むと、フィールド内処理部1310は、操作情報がゲートの通過を指示するものであるか否かを判断する。具体的には、フィールド内処理部1310は、当該フィールド内処理部1310に対応したフィールド情報テーブル2200を参照することにより、操作情報とともに振り分けられたキャラクタIDに対応付けられた位置情報を求める。そして、フィールド内処理部1310は、この位置情報が示す位置から操作情報が示す方向にキャラクタCを移動させた場合に、キャラクタCがフィールド情報テーブル2200内のいずれかのゲート情報の位置情報が示す位置にあるゲートGを通過するか否かを判断する。この判断結果が「YES」であれば、ステップS202の判断結果は「YES」となり、「NO」であれば、ステップS202の判断結果は「NO」となる。
ステップS202の判断結果が「YES」である場合、処理はステップS220に進む。一方、ステップS202の判断結果が「NO」である場合、すなわち、操作情報がフィールド内のキャラクタCの移動を指示している場合、処理はステップS210に進む。
次にステップS210に進むと、フィールド内処理部1310は、操作情報により指示されたキャラクタCの移動が可能か否かを判断する。具体的にはフィールド内処理部1310は、フィールド情報テーブル2200内のキャラクタ情報、ハードブロック情報およびソフトブロック情報を参照する。そして、フィールド内処理部1310は、操作情報とともに振り分けられたキャラクタIDに対応付けられたキャラクタ情報の位置情報が示す位置から操作情報に従ってキャラクタCを移動させた場合に、キャラクタCがハードブロックHBまたはソフトブロックSBに衝突しないかどうかを判断する。衝突が発生しない場合、ステップS210の判断結果が「YES」となってステップS212に進み、衝突が発生する場合、ステップS210の判断結果が「NO」となってステップS214に進む。
次にステップS212に進むと、フィールド内処理部1310は、キャラクタCを操作情報に従って移動させる。具体的には、フィールド内処理部1310は、操作情報とともに振り分けられたキャラクタIDに対応付けられたキャラクタ情報の位置情報を操作情報に従って変化させる。また、フィールド内処理部1310は、ユーザ情報テーブル2100において、当該キャラクタIDに対応付けられたフィールド内位置に、操作情報に基づいて変更した後の位置情報を反映させる。そして、処理はステップS230に進む。
ステップS210からステップS214に進んだ場合、フィールド内処理部1310は、キャラクタCの移動を拒否する。すなわち、すなわち、キャラクタCを移動させる操作情報に対して反応しない。そして、処理はステップS230に進む。
上述したステップS202の判断結果が「YES」となる場合、すなわち、操作情報がゲートの通過を指示するものである場合の動作は次のようになる。まず、フィールド内処理部1310は、フィールド情報テーブル2200内の通過対象であるゲートのゲート情報における開閉情報が開状態を示しているか否かを判断する(ステップS220)。この判断結果が「NO」である場合、フィールド内処理部1310は、キャラクタCの移動を拒否し(ステップS228)、処理をステップS230に進める。
ステップS220の判断結果が「YES」である場合、フィールド内処理部1310は、通過対象のゲートのゲート情報が制限情報を含むか否かを判断する(ステップS222)。この判断結果が「NO」である場合、フィールド内処理部1310は、キャラクタ移動を実行し(ステップS226)、処理をステップS230に進める。
ステップS222の判断結果が「YES」である場合、フィールド内処理部1310は、操作情報が示すキャラクタCの移動がゲート情報に含まれる制限情報が示す制限対象に当たるか否かを判断する(ステップS224)。ここで、ゲート情報に複数の制限情報が含まれている場合、フィールド内処理部1310は、キャラクタCの移動がそれらのうちのいずれかの制限情報が示す制限対象に当たるか否かを判断する。この判断結果が「YES」である場合、フィールド内処理部1310は、キャラクタCの移動を拒否し(ステップS228)、処理をステップS230に進める。一方、ステップS224の判断結果が「NO」である場合、フィールド内処理部1310は、キャラクタ移動を実行し(ステップS226)、処理をステップS230に進める。
ここで、ステップS224の判断について、具体例を挙げて説明する。通過対象であるゲートのゲート情報が制限対象1を示す制限情報を含む場合、フィールド内処理部1310は、ユーザ情報テーブル2100において、当該ゲートを通過しようとするキャラクタCのキャラクタIDに対応付けられた前フィールドIDを参照する。そして、フィールド内処理部1310は、連結テーブル2300を参照し、キャラクタCが現在所在するフィールドの通過対象のゲートの連結先フィールドIDを求める。そして、フィールド内処理部1310は、この連結先フィールドIDがユーザ情報テーブル2100における当該キャラクタCの前フィールドIDと一致するか否かにより、操作情報の指示する移動が制限対象1に該当するか否かを判断する。
また、通過対象であるゲートのゲート情報が制限対象2を示す制限情報を含む場合、フィールド内処理部1310は、ユーザ情報テーブル2100を参照し、当該ゲートを通過しようとするキャラクタCのキャラクタIDに対応付けられたスキルレベルが所定値以上か否かを判断する。フィールド内処理部1310は、この判断結果が「YES」か否かにより、操作情報の示す移動が制限対象2に該当するか否かを判断する。
通過対象であるゲートのゲート情報が制限対象3を示す制限情報を含む場合、フィールド内処理部1310は、フィールド情報テーブル2200内の全てのゲート情報のキャラクタ退場数の総和を求め、この総和が所定数以上か否かにより、操作情報の示す移動が制限対象3に該当するか否かを判断する。
制限対象4を制限する各制限情報は、特定のゲートを介した退場を禁止する情報を含む。通過対象であるゲートのゲート情報がこのような制限情報を含む場合、操作情報が示す移動は禁止される。
次にステップS226のキャラクタ移動の詳細について説明する。ステップS226において、フィールド内処理部1310は、操作情報に従って、キャラクタIDが示すキャラクタCを現在のフィールドFDからゲートGを介して他のフィールドFDに移動させる。
具体的には、フィールド内処理部1310は、連結テーブル2300において、通過対象であるゲートGを連結部とし、この連結部に対応した連結先フィールドIDを求める。そして、フィールド内処理部1310は、この連結先フィールドIDに対応したフィールド内処理部1310に対して、当該ゲートGを通過するキャラクタのキャラクタIDを含む移動通知を送信する。
例えば図11において、操作情報およびキャラクタIDが振り分けられたフィールド内処理部1310が、フィールドID=0001のフィールドに対応しているものとする。ここで、操作情報が当該フィールドの右辺に設けられたゲートの通過を指示している場合、連結先フィールドIDは0002となる。そこで、フィールド内処理部1310は、フィールドID=0002に対応したフィールド内処理部1310にキャラクタIDを含む移動通知を送る。なお、この移動通知を受信したフィールド内処理部1310の動作については後述する。
また、フィールド内処理部1310は、ゲートGを通過したキャラクタCに対応したキャラクタ情報を当該フィールド内処理部1310に対応したフィールド情報テーブル2200から抹消する。また、フィールド内処理部1310は、フィールド情報テーブル2200において、キャラクタCが通過したゲートのゲート情報におけるキャラクタ退場数を1だけ増加させ、フィールド内キャラクタ数を1だけ減少させる。
次にステップS230に進むと、フィールド内処理部1310は、操作情報が攻撃操作を指示しているか否かを判断する。攻撃操作とは、例えばキャラクタCに爆弾を仕掛けさせる操作、キャラクタCに銃を発砲させる操作等である。ステップS230の判断結果が「YES」である場合、処理はステップS232に進み、「NO」である場合、処理はステップS240に進む。
次にステップS232に進むと、フィールド内処理部1310は、スケジュール設定を実行する。例えば、あるキャラクタCが爆弾を仕掛けることを操作情報が指示している場合、フィールド内処理部1310は、位置情報と、爆発予定時刻と、攻撃者IDとを含む爆発情報をフィールド情報テーブル2200内に生成する。ここで、攻撃者IDは、爆弾を仕掛けるキャラクタCのキャラクタID、すなわち、操作情報とともに当該フィールド内処理部1310に振り分けられたキャラクタIDである。また、位置情報はフィールド情報テーブル2200内において当該キャラクタIDを含むキャラクタ情報内の位置情報である。爆発予定時刻は現在時刻に対して所定の遅延時間を加えた時刻である。なお、この遅延時間を操作情報により指定するようにしてもよい。
また、例えば、あるキャラクタCによる銃の発砲およびその発砲方向を操作情報が指示している場合、フィールド内処理部1310は、位置情報と、発砲方向と、発砲予定時刻と、攻撃者IDとを含む発砲情報をフィールド情報テーブル2200内に生成する。攻撃者IDは、発砲するキャラクタCのキャラクタID、すなわち、操作情報とともに当該フィールド内処理部1310に振り分けられたキャラクタIDである。また、位置情報は、発砲位置を示す情報であり、フィールド情報テーブル2200内において当該キャラクタIDを含むキャラクタ情報内の位置情報が用いられる。発砲方向は、操作情報により指示される情報であり、上下左右のいずれかの方向を示す。発砲予定時刻は、現在時刻に対して、ある遅延時間を加えた時刻である。好ましい態様では、この遅延時間は、ユーザ情報テーブル2100において、攻撃者ID(キャラクタID)に対応付けられたスキルレベルに依存し、スキルレベルが高くなる程、短時間となる。
次にステップS240に進むと、フィールド内処理部1310は、振り分け部1320から振り分けられた操作情報の中に未処理の操作情報が残っているか否かを判断する。この判断結果が「YES」である場合、フィールド内処理部1310は、未処理の操作情報について、上述したステップS200以降の処理を実行する。
振り分け部1320から振り分けられた全ての操作情報についてステップS200~S240の処理が実行され、ステップS240の判断結果が「NO」になると、処理はステップS250に進む。このステップS250において、フィールド内処理部1310は、他のフィールド内処理部1310がステップS226において送信した移動通知を受け取ったか否かを判断する。この判断結果が「YES」である場合、処理はステップS252に進み、「NO」である場合、処理はステップS260に進む。
次にステップS252に進むと、フィールド内処理部1310は、他のフィールド内処理部1310から受信した移動通知に基づいて、キャラクタ移動を実行する。具体的には、フィールド内処理部1310は、連結テーブル2300内の当該フィールド内処理部1310に対応したフィールドIDに関連する情報を参照することにより、移動通知の送信元に対応したフィールドIDが連結先フィールドIDとなっている連結部を求め、この連結部に相当するゲートをキャラクタCの入場口とする。そして、当該フィールド内処理部1310は、移動通知に含まれるキャラクタIDに対応したキャラクタCをこの入場口から入場させ、この入場したキャラクタCのキャラクタ情報を当該フィールド内処理部1310に対応したフィールド情報テーブル2200内に生成する。
例えば図11において、移動通知を受け取ったフィールド内処理部1310がフィールドID=0002に対応し、移動通知の送信元であるフィールド内処理部1310がフィールドID=0001に対応していたとする。
この場合、連結テーブル2300によると、フィールドID=0002のフィールドでは、左辺である連結部(ゲート)に連結先フィールドID=0001のフィールドが連結されている。従って、移動通知を受け取ったフィールド内処理部1310は、フィールドの左辺にあるゲートGをキャラクタCの入場口とする。そして、フィールド内処理部1310は、フィールド情報テーブル2200において、入場口であるゲートGのゲート情報に含まれる位置情報が示す位置から所定距離だけフィールド内に進入した位置の位置情報を求め、キャラクタCのキャラクタIDとこの位置情報を含むキャラクタ情報をフィールド情報テーブル2200内に生成する。
また、移動通知を受け取ったフィールド内処理部1310は、フィールド情報テーブル2200において、キャラクタCが入場したゲートのゲート情報に含まれるキャラクタ入場数を1だけ増加させ、フィールド内キャラクタ数を1だけ増加させる。さらに、フィールド内処理部1310は、あるキャラクタIDに対応したキャラクタ情報をフィールド情報テーブル2200内に生成した場合に、ユーザ情報テーブル2100内の当該キャラクタIDに対応したフィールド内位置に当該キャラクタ情報の位置情報を反映させる。また、フィールド内処理部1310は、あるキャラクタIDを含む移動通知の受信した場合に、ユーザ情報テーブル2100において、当該キャラクタIDに対応した現フィールドIDに当該フィールド内処理部1310に対応したフィールドIDを反映させ、前フィールドIDに移動通知の送信元に対応したフィールドIDを反映させる。
次にステップS260に進むと、フィールド内処理部1310は、スケジュールがあるか否か、すなわち、フィールド情報テーブル2200内に、現在時刻を爆発予定時刻あるいは発砲予定時刻とする爆発情報あるいは発砲情報があるか否かを判断する。この判断結果が「NO」である場合、処理はステップS270に進み、「YES」である場合、処理はステップS262に進む。
次にステップS262に進むと、フィールド内処理部1310は、スケジュールを実行する。例えば爆発予定時刻が現在時刻である爆発情報がある場合、フィールド内処理部1310は、その爆発情報に含まれる位置情報が示す位置から上下左右の各方向に爆風を発生させる。また、フィールド内処理部1310は、爆発音の発生を指示する音声指示情報をフィールド情報テーブル2200内に書き込む。
フィールド情報テーブル2200内のいずれかのソフトブロック情報の位置情報が爆風の進路上にあり、ソフトブロックSBが爆風を受けた場合、フィールド内処理部1310は、そのソフトブロック情報における有無情報を無に対応した情報にする。
フィールド情報テーブル2200内のいずれかのキャラクタ情報の位置情報が爆風の進路上にあり、キャラクタCが爆風を受けた場合、フィールド内処理部1310は、そのキャラクタCを対戦から離脱させる。具体的には、フィールド内処理部1310は、爆風を受けたキャラクタCのキャラクタ情報をフィールド情報テーブル2200から抹消し、フィールド情報テーブル2200内のフィールド内キャラクタ数を1だけ減らす。また、フィールド内処理部1310は、ユーザ情報テーブル2100において、爆風を受けたキャラクタCに対応した生死情報を死に対応した情報にする。また、フィールド内処理部1310は、ある攻撃者IDを含む爆発情報に従って爆発を行わせ、その爆風によりキャラクタCを対戦から離脱させた場合、フィールド内処理部1310は、ユーザ情報テーブル2100において、その攻撃者ID(キャラクタID)に対応付けられたポイントを所定量増加させる。
また、例えば発砲予定時刻が現在時刻である発砲情報がある場合、フィールド内処理部1310は、その発砲情報に含まれる位置情報が示す位置から操作情報により指定された発砲方向に銃弾を飛ばす。また、フィールド内処理部1310は、発砲音の発生を指示する音声指示情報をフィールド情報テーブル2200内に書き込む。
フィールド情報テーブル2200内のいずれかのキャラクタ情報の位置情報が銃弾の進路上にあり、キャラクタCが被弾した場合、フィールド内処理部1310は、そのキャラクタCを対戦から離脱させる。この場合のフィールド内処理部1310の処理は、キャラクタCが爆風を受けた場合の処理と同様である。フィールド内処理部1310は、爆弾情報に基づく爆発、あるいは発砲情報に基づく発砲を実行した場合、当該爆発情報あるいは当該発砲情報をフィールド情報テーブル2200から抹消する。
次にステップS270に進むと、フィールド内処理部1310は、フィールド消滅制御を実行する。このフィールド消滅制御が終了すると、フィールド内処理は終了し、処理は図13のステップS120に進む。
図16は図15のステップS270において実行されるフィールド消滅制御の処理内容を示すフローチャートである。まず、フィールド内処理部1310は、フィールド情報テーブル2200内のフィールド内キャラクタ数が0か否かを判断する(ステップS300)。この判断結果が「YES」である場合、処理はステップS316に進み、「NO」である場合、処理はステップS302に進む。
次にステップS302に進むと、フィールド内処理部1310は、不利益付与指令を受け取ったか否かを判断する。この判断結果が「YES」である場合、処理はステップS304に進み、「NO」である場合、処理はステップS306に進む。
次にステップS304に進むと、フィールド内処理部1310は、フィールド情報テーブル2200内のプレッシャフラグをONとし、タイマによる計時を開始する。そして、処理はステップS306に進む。
次にステップS306に進むと、フィールド内処理部1310は、プレッシャフラグがONであるか否かを判断する。この判断結果が「YES」である場合、処理はステップS308に進み、「NO」である場合、フィールド消滅制御は終了する。
次にステップS308に進むと、フィールド内処理部1310は、プレッシャブロックの駆動および残り時間の表示の処理を行う。図17はこのステップS306の処理および後述するAV処理(図13のステップS160)によりユーザに提供されるフィールドの画像を示すものである。
ステップS308では、プレッシャブロックPBを所定距離ずつ所定方向に移動させる駆動制御が行われる。具体的には、フィールド情報テーブル2200内のプレッシャブロック情報における位置情報を所定量ずつ変化させる。プレッシャブロックPBがキャラクタCに衝突すると、キャラクタCは消滅し、対戦から離脱される。従って、キャラクタCは、消滅から逃れるために、プレッシャブロックPBを避けつつ、他のフィールドFDに移動する必要がある。
また、ステップS308では、フィールド情報テーブル2200内のタイマのタイマ値に基づき、図17に例示するように、残り時間の表示が行われる。この残り時間は、フィールドFDが消滅するまでの残り時間である。キャラクタCは、消滅から逃れるために、この残り時間内に現在のフィールドFDを脱出する必要がある。
次にステップS310に進むと、フィールド内処理部1310は、フィールド情報テーブル2200内のプレッシャブロック情報の位置情報とキャラクタ情報の位置情報に基づき、いずれかのプレッシャブロックPBがいずれかのキャラクタCと衝突したか否かを判断する。この判断結果が「YES」である場合、処理はステップS312に進み、「NO」である場合、処理はステップS314に進む。
次にステップS312に進むと、フィールド内処理部1310は、プレッシャブロックPBと衝突したキャラクタCを抹消する。具体的には、フィールド情報テーブル2200内において、プレッシャブロックPBと衝突したキャラクタCのキャラクタ情報を抹消し、フィールド内キャラクタ数を1だけ少なくし、ユーザ情報テーブル2100における当該キャラクタに対応した生死情報を死に対応した情報にする。
次にステップS314に進むと、フィールド内処理部1310は、フィールド情報テーブル2200内のタイマがタイムアウトしたか否かを判断する。この判断結果が「YES」である場合、処理はステップS316に進み、「NO」の場合、フィールド消滅制御は終了となる。
フィールド内キャラクタ数が0となり、あるいはタイマのタイムアウトにより処理がステップS316に進むと、フィールド内処理部1310は、フィールドを消滅させる。具体的には、フィールド内処理部1310は、消滅するフィールドのフィールドIDをフィールド管理部1400に送り、当該フィールドに対応したフィールド情報テーブルを抹消する。そして、フィールド消滅制御は終了する。フィールド消滅制御が終了すると、処理は図15のフィールド内処理を介して図13のメインフローに戻る。
図13において、ステップS120に進むと、フィールド管理部1400は、現在時刻が図12に例示された連結制御のタイミングであるか否かを判断する。この判断結果が「YES」である場合、処理はステップS122に進み、「NO」である場合、処理はステップS130に進む。
ステップS122に進むと、連結制御部1410が連結制御を実行する。さらに詳述すると、連結制御部1410は、キャラクタCが所在する全てのフィールドのフィールド情報テーブル2200内のフィールド内キャラクタ数に基づいて、互いに連結するフィールドを決定し、図11に例示する連結テーブル2300を生成する。具体的には、連結制御部1410は、互いに連結されたフィールド間のフィールド内キャラクタ数の差分が所定数以上となるように、連結するフィールドの組を決定する。連結制御(ステップS122)が終了すると、処理はステップS130に進む。
次にステップS130に進むと、フィールド管理部1400は、現在時刻が移動制御タイミングか否かを判断する。上述した通り、移動制御タイミングは、ゲートの開閉制御を行う開閉制御タイミングと、制限情報の設定を行う制限情報設定タイミングを含む。ステップS130の判断結果が「YES」である場合、処理はステップS132に進み、「NO」である場合、処理はステップS140に進む。
次にステップS132に進むと、移動制御部1420は、移動制御を実行する。この移動制御において、移動制御部1420は、現在時刻の前の期間が第1期間であった場合、第1期間から第2期間への切り換えを実行し、現在時刻の前の期間が第2期間であった場合、第2期間から第1期間への切り換えを実行する。ゲートの通過を可とする第1期間を開始する場合、移動制御部1420は、キャラクタCが所在する全てのフィールドのフィールド情報テーブル2200に含まれるゲート情報のうち連結テーブル2300において連結部とされているゲートのゲート情報における開閉情報を開に対応した情報にする。また、ゲートの通過を不可とする第2期間を開始する場合、移動制御部1420は、キャラクタCが所在する全てのフィールドのフィールド情報テーブル2200に含まれるゲート情報の開閉情報を閉に対応した情報にする。
また、移動制御部1420は、制限情報設定タイミングにおいて、必要に応じて、上述した制限対象1~4に対応した制限情報の設定を行う。このようにすることで、以後、制限対象1~4に該当するフィールド間のキャラクタの移動が拒否される。
次にステップS140に進むと、連結制御部1410は、キャラクタの移動促進制御を行う。さらに詳述すると、連結制御部1410は、キャラクタCが所在するフィールドのフィールド情報テーブル2200のフィールド内キャラクタ数を参照する。そして、フィールド内キャラクタ数が所定数以下の状態が所定時間以上継続したフィールドがある場合に、当該フィールドに対応したフィールド内処理部1310に不利益付与指令を送る。この不利益付与指令を受け取ったフィールド内処理部1310の動作は上述した通りである。
次にステップS150に進むと、フィールド管理部1400は、消滅対応制御を実行する。さらに詳述すると、フィールド管理部1400は、消滅したフィールドのフィールドIDをフィールド内処理部1310から受け取った場合に、そのフィールドIDを連結制御部1410および移動制御部1420に送る。
連結制御部1410は、このフィールドIDを次回の連結制御(ステップS122)のタイミングまで保持し、次回の連結制御ではこのフィールドIDに対応したフィールドを連結の対象から外す。
また、移動制御部1420は、連結テーブル2300において、消滅したフィールドのフィールドIDを連結先フィールドIDとするフィールドID、すなわち、消滅したフィールドに連結されたフィールドのフィールドIDを求める。そして、移動制御部1420は、このフィールドIDに対応したフィールド情報テーブル2200において、当該連結先フィールドIDに対応した連結部(すなわち、消滅したフィールドに連結された連結部)に該当するゲートのゲート情報における開閉情報を閉状態に対応した情報にする。これにより消滅したフィールドへのキャラクタCの移動を回避することができる。
次にステップS160に進むと、AV処理部1500では、ゲームの参加者の端末30に対応付けられた複数のAV生成部1510が画像および音声の生成を実行する。具体的には、各AV生成部1510は、ユーザ情報テーブル2100を参照することにより、各々に対応した端末30の端末IDに対応付けられたキャラクタIDと現フィールドIDとを求め、現フィールドIDに対応するフィールド情報テーブル2200を記憶部12から読み出す。そして、AV生成部1510は、読み出したフィールド情報テーブル2200に基づいて、フィールド内のハードブロックHB、ソフトブロックSB、キャラクタC、爆弾、銃弾、プレッシャブロック、残り時間等の状況を示す画像を生成し、当該AV生成部1510に対応した端末30に送信する。AV生成部1510は、読み出したフィールド情報テーブル2200が音声指示情報を含む場合、音声指示情報に従って音声を生成し、当該AV生成部1510に対応した端末30に送信する。
次にステップS170に進むと、ゲーム進行処理部1300は、例えばゲームにおいて残存している総キャラクタ数に基づいて、最終局面への移行をすべきか否かを判断する。ここで、総キャラクタ数は、例えばキャラクタが所在する全てのフィールドのフィールド情報テーブル2200におけるフィールド内キャラクタ数の総和として求めることが可能である。なお、ステップS150の判断では、このような総キャラクタ数の代わりに、キャラクタが所在するフィールド数を用いてもよい。
ステップS170の判断結果が「NO」である場合、ゲーム進行処理部1300は、処理をステップS110に戻し、時刻を1単位時間だけ進めて、ステップS112~S160の各処理を実行させる。
ステップS170の判断結果が「YES」になると、ゲーム進行処理部1300は、処理をステップS172に進め、最終局面処理を実行する。すなわち、ゲーム進行処理部1300は、残存している全てのキャラクタCを1つのフィールドに集め、対戦を行わせる。対戦において、1つのキャラクタCのみが生き残ると、対戦ゲームは終了となる。
[5.実施形態の効果]
以上説明したように、本実施形態によれば、複数のキャラクタCにより進行するゲームを提供するクラウドサーバ10において、複数のフィールドFDのいずれかのフィールドFDにおいて、ゲームに係るキャラクタCを当該キャラクタCに対応付けられた端末30から取得される操作情報に基づいて制御するゲーム進行処理部1300と、複数のフィールドにおけるキャラクタCの状況に基づいて、複数のフィールドにおける1の領域と他の領域とを連結するフィールド管理部1400とを設けたので、多数のキャラクタCによる対戦ゲーム等を実現し、かつ、キャラクタCの過疎・過密の発生を防止することができる。また、ユーザには、広い領域の中の一部の領域において、他のキャラクタとの対戦等を行っている感覚を与えることができる。
また、連結制御部1410は、複数のフィールドの各々におけるキャラクタの数に基づいて、互いに連結する領域を決定するので、キャラクタの過疎・過密を効果的に解消することができる。
また、連結制御部1410は、1のフィールドに所在するキャラクタの数が所定数以下である場合に、当該キャラクタに対して不利益を与えるので、当該キャラクタに他のフィールドへの移動を促し、少ない数のキャラクタが同じフィールド内に止まるのを防止することができる。
また、移動制御部1420は、連結されたフィールド間のキャラクタの移動を可とする第1期間とフィールド間のキャラクタの移動を不可とする第2期間を交互に発生するので、第1期間においてフィールド間のキャラクタの移動を行わせ、第2期間において同一フィールド内で各キャラクタを対戦させることができる。
また、連結制御部1410は、第1期間と時間的関連性を有するタイミングにおいて、互いに連結する領域を切り換える処理を繰り返すので、第2期間内のゲームの進行により変化した各フィールドのキャラクタ数に応じて、互いに連結するフィールドを適切に決定することができる。
また、移動制御部1420は、1のフィールドのフィールド内キャラクタ数が所定数以上である場合あるいはキャラクタ入場数の総和が所定数以上である場合に、他のフィールドから当該1のフィールドへのキャラクタの移動を制限するので、1のフィールドにおける過密なキャラクタがさらに過密になるのを防止することができる。
また、移動制御部1420は、互いに連結された2つのフィールドの一方から他方へのキャラクタの通過を許可し、他方から一方へのキャラクタの通過を禁止することが可能であるので、必要に応じて、2つのフィールド間の一方通行化を行うことができる。
また、移動制御部1420は、互いに連結された2つのフィールドの一方から他方へ通過したキャラクタが他方から一方へ戻るのを禁止することができるので、キャラクタが強敵を回避して同じ2つのフィールド間の往復移動を行うのを防止することができる。
[B.変形例]
以上の形態は多様に変形され得る。具体的な変形の態様を以下に例示する。以下の例示から任意に選択された2以上の態様は、相互に矛盾しない範囲内で適宜に併合され得る。なお、以下に例示する変形例において作用や機能が実施形態と同等である要素については、以上の説明で参照した符号を流用して各々の詳細な説明を適宜に省略する。
[変形例1]
図18は上記実施形態の一変形例であるゲームシステム1aの構成を示すブロック図である。このゲームシステム1aは、モバイルゲームを中心に最も普及しているゲームシステムである。端末30a-1~30a-Mは、スマートフォン等のモバイル端末である。このゲームシステム1aでは、ゲームサーバ10aがユーザ情報管理部1100、マッチング部1200、ゲーム進行処理部1300a、フィールド管理部1400の各処理を実行する。端末30aは、ゲーム進行処理部1300bと、AV処理部1500と、ユーザに対する画像および音声の出力と操作情報の受付を行う入出力部1600の各処理を実行する。
ゲーム進行処理部1300bが行う処理は、上記実施形態のゲーム進行処理部1300が行う処理の一部の処理である。一部の処理とは、上記実施形態のフィールド内処理部1310により行われたキャラクタCの移動、爆弾の爆発までの時間の計測等である。ゲーム進行処理部1300aは、上記実施形態のゲーム進行処理部1300が行った処理からゲーム進行処理部1300bの処理を除いた処理を実行する。例えばゲーム進行処理部1300aは、端末30aのゲーム進行処理部1300bからキャラクタCの移動等に関する通知を受け、この通知に基づいてフィールド情報テーブル2200を更新する。
端末30aのAV処理部1500は、ゲームサーバ10aが管理するフィールド情報テーブル2200を参照することにより、当該端末30aに対応付けられたキャラクタCが所在するフィールドFDの画像を生成してユーザに提供する。
ゲームサーバ10aのフィールド管理部1400は、上記実施形態と同様、フィールド間の連結制御、ゲートを介したフィールド間のキャラクタの移動制御を行う。
この態様によれば、画像処理を端末30a側で行うので、ゲームサーバ10aは上記実施形態のクラウドサーバ10のような強力なAV処理部を必要としない。このため、上記実施形態と比べて、サーバが安価になる。
[変形例2]
図19は上記実施形態の他の変形例であるゲームシステム1bの構成を示すブロック図である。このゲームシステム1bは、MMO(Massively Multiplayer Online)ゲーム等のゲームシステムと同様な形態のシステムであり、ゲームの進行が端末主導で行われる。
図19において、マッチングサーバ10bは、上記実施形態のマッチング部1200の処理のみを実行する。端末30b-1~30b-Mは、いずれか1台がホスト端末として機能し、他はスレーブ端末として機能する。ホスト端末は、上記実施形態のユーザ情報管理部1100、ゲーム進行処理部1300、フィールド管理部1400およびAV処理部1500としての処理と、画像および音声の出力を行うとともにユーザから操作情報を受け取る入出力部1600としての処理を実行する。スレーブ端末は、AV処理部1500および入出力部1600としての処理を実行する。スレーブ端末は、ホスト端末に対して操作情報を送信し、スレーブ端末に対応付けられたキャラクタの所在するフィールドのフィールド情報テーブル2200をホスト端末から受け取る。スレーブ端末のAV処理部1500は、このフィールド情報テーブル2200に基づいて、ユーザに提供する画像および音声を生成する。
この態様によれば、マッチングサーバの行う処理が格段と少なくなるので、サーバのコストが著しく低減される。
[変形例3]
連結制御部1410は、連結制御部1410により連結された各フィールドについて、当該フィールドの連結先のフィールドの状況を示す情報を生成してもよい。この態様において、連結制御部1410は、連結テーブル2300に含まれる各フィールドIDについて、次の処理を実行する。
連結制御部1410は、連結テーブル2300において、フィールドIDに対応した連結先フィールドIDと連結部を求める。そして、連結制御部1410は、連結先フィールドIDに対応したフィールド情報テーブル2200を参照することにより、連結部に連結されたフィールド内に所在するキャラクタとその数を求める。そして、連結制御部1410は、連結部に連結されたフィールド内に所在するキャラクタとその数を連結部の位置に表示することを指示する表示指令をフィールド情報テーブル2200に書き込むのである。
図20はこのような連結制御部1410の処理が行われることにより端末30に表示されるフィールドの画像を例示するものである。この例では、フィールドFDの下辺の連結部に当該フィールドの下側のフィールドにキャラクタが2体所在することと、それらのキャラクタの画像が表示されている。また、この例では、フィールドFDの右辺の連結部に当該フィールドFDの右側のフィールドにキャラクタが3体所在することと、それらのキャラクタの画像が表示されている。
フィールドFD内のキャラクタを操作するユーザは、この表示を確認することにより、現在のフィールドFDの下側のフィールドまたは右側のフィールドにキャラクタを移動させるべきか否かを判断することができる。
なお、キャラクタとその数を表示するだけでなく、連結されたフィールドに所在するキャラクタが所持する爆弾、銃弾等のアイテムに関する情報、キャラクタを操作するユーザのスキルレベル、キャラクタが取得したポイント等を併せて表示するようにしてもよい。
[変形例4]
変形例3において、連結制御部1410は、連結されるフィールドに所在するキャラクタに関する情報をユーザに提供した。しかし、変形例4において、連結制御部1410は、キャラクタが所在するフィールドに連結されるフィールドの一部の画像、具体的には連結部よりの一部の画像をユーザに提供する。
具体的には、連結制御部1410は、連結テーブル2300に含まれる各フィールドIDについて、次の処理を実行する。まず、連結制御部1410は、連結テーブル2300において、フィールドIDに対応した連結先フィールドIDと連結部を求める。そして、連結制御部1410は、連結先フィールドIDに対応したフィールド情報テーブル2200において連結部から所定距離内の位置情報を含む各情報(例えばハードブロック情報、ソフトブロック情報、キャラクタ情報等)を抽出し、この抽出情報を上記フィールドIDに対応したフィールド情報テーブル2200に付加する。AV生成部1510は、フィールド情報テーブル2200とこれに付加された抽出情報とに基づいて、ユーザに提供するフィールドの画像を生成するのである。
図21はこの変形例4において端末30に表示されるフィールドの画像を例示するものである。この例では、フィールドFDの下側のフィールドの連結部寄りの領域の画像と、右側のフィールドの連結部寄りの領域の画像が表示されている。この態様においても、ユーザは、この表示を確認することにより、現在のフィールドFDの下側のフィールドまたは右側のフィールドのいずれのフィールドにキャラクタを移動させるべきかを判断することができる。
[変形例5]
ユーザがゲームに参加するために操作する装置として、ゲーム機とこのゲーム機に接続された複数のコントローラを用いてもよい。この場合、コントローラが操作情報の発生元となるので、コントローラが上記実施形態における端末30となる。AV処理部1500は、1つのゲーム機に接続された各コントローラ(端末)に対応付けられた各キャラクタが所在する各フィールドの画像を生成し、これらの画像を合成してゲーム機に供給する。各コントローラを操作する各ユーザは、各コントローラが接続されたゲーム機の表示部を共用してコントローラを操作し、ゲームを進行させる。
[変形例6]
連結制御において参照するフィールド内キャラクタ数には、NPCの数を含めてもよく、含めなくてもよい。また、NPCについては、最初の連結制御が行われるまでの間に、他のフィールドに移動すると見せかけて消滅させてもよい。
[変形例7]
連結制御部1410が行う「連結」は、グループ内の全てのフィールドが同グループ内のいずれかのフィールドに連結された1つのグループを生じさせてもよい。しかし、「連結」は、1つのグループ内の全てのフィールドが同グループ内のいずれかのフィールドに連結されているが、他のグループ内のフィールドには連結されていない複数のフィールドを生じさせてもよい。
[変形例8]
連結制御部1410が行う「連結」には各種の態様が考えられる。例えば全フィールドをフィールド内キャラクタ数が閾値以上であるAグループと閾値未満であるBグループに分け、AグループのフィールドとBグループのフィールドが隣り合い、かつ、隣り合うフィールド間のフィールド内キャラクタ数の差分が極力大きくなるように各フィールドを配列して各フィールドを連結する、といった方法が考えられる。
また、キャラクタで混んでいるフィールドには必ず空いている領域が連結され、空いているフィールドには必ず混んでいるフィールドが連結される、ということが約束されていると、ユーザによってはゲームの興趣性に欠けると感じる可能性がある。そこで、ある確率で、混んでいるフィールドに混んでいるフィールドを連結し、空いているフィールドに空いているフィールドを連結する、という方法も考えられる。
[変形例9]
上記実施形態では、フィールドFDの1つのゲートと、他の1つのフィールドFDの1つのゲートとを共有させることにより、1つのフィールドの一辺に1つのフィールドを連結した。しかし、連結の態様はこれに限定されるものではない。図22に例示するように、フィールドFDa、FDbおよびFDcに各々の一辺に設けられた各ゲートを共有させることにより、フィールドFDaの一辺に2つのフィールドFDbおよびFDcを連結してもよい。この場合のキャラクタの移動に関して例えば次のような態様が考えられる。フィールドFDbおよびFDcからフィールドFDaとの連結部のゲートGを介して退場するキャラクタは全てフィールドFDaに入場する。フィールドFDaからフィールドFDbおよびFDcとの連結部のゲートGを介して退場するキャラクタはフィールドFDbまたはFDcのいずれかがランダムに入場先として選択される。
[変形例10]
上記実施形態では、ゲートが開状態となる第1期間に合わせて連結制御を行ったが、この第1期間とは関係なく定期的に行っても良い。また、上記実施形態では、フィールドの境界に設けられた開状態のゲートを介してのみフィールド間のキャラクタの移動が可能であったが、フィールドの境界は常に移動可能とし、連結制御により1のフィールドから移動可能な他のフィールドを切り換えるようにしてもよい。
[変形例11]
上記実施形態において、連結制御部1410は、1のフィールドに所在するキャラクタの数が所定数以下である場合に、当該キャラクタに不利益を与えることにより当該キャラクタに他のフィールドへの移動を促した。しかし、そのようにする代わりに、連結制御部1410は、1のフィールドに所在するキャラクタの数が所定数以下である場合に、当該キャラクタを強制的に他のフィールドに移動させてもよい。この場合の「移動」は、1のフィールドに連結されたフィールド以外の他のフィールドへの移動であってもよい。この態様においても、少ない数のキャラクタが同じフィールド内に止まるのを防止することができる。
[変形例12]
互いに連結するフィールドを決定する際に参照するキャラクタ数として、フィールド内のライフ情報の総和を用いてもよい。対戦ゲームによっては、1回の敗北ではキャラクタが対戦から離脱せず、所定の複数回数の敗北によりキャラクタが対戦から離脱する場合がある。そこで、フィールド内に所在する各キャラクタについて、対戦から離脱するまでの残り敗北回数を示すライフ情報を求め、このライフ情報の総和をフィールドの連結制御に用いる。この態様においても、上記実施形態と同様な効果が得られる。
[変形例13]
上記実施形態では、制限情報設定タイミングごとに設定する制限情報の種別を固定したが、各フィールドのフィールド内キャラクタ数の変化に応じて、設定する制限情報の種別を決定するようにしてもよい。例えば制限対象4に対応した制限を行っている場合において、制限対象4に該当する移動先である連結先フィールドのフィールドキャラクタ数が変化し、連結先フィールドへの移動を禁止する必要がなくなったとき、制限対象4に対応した制限情報を解除してもよい。あるいは、制限情報の設定を各フィールドのフィールド内キャラクタ数の変化に基づいて動的に変化させてもよい。例えば連結されたフィールドの全域におけるフィールド内キャラクタ数の分布に基づいて、フィールド内キャラクタ数が全域において均一となるようなキャラクタCの流れを作る制限情報を設定してもよい。
[変形例14]
上記実施形態では、キャラクタCのゲートの通過が制限対象に該当する場合に、単にゲートの通過を拒否するのみであったが、例えば端末30に表示される画面内において、開いているゲートを閉じる等、ゲートの通過が制限されていることを視覚的に理解できるようにしてもよい。あるいは移動制御部1420が定期的に連結テーブル2300および全てのフィールド情報テーブル2200を参照することにより、制限対象3または4に該当する移動が行われる可能性のあるゲートを求め、端末30に表示される画面内において、該当するゲートを閉じる制御を行ってもよい。
[C.付記]
以上の記載から、本発明は例えば以下のように把握される。なお、各態様の理解を容易にするために、以下では、図面の参照符号を便宜的に括弧書きで付記するが、本発明を図示の態様に限定する趣旨ではない。
[付記1]
この発明の一態様であるプログラムは、複数のキャラクタ(C)により進行するゲームにおいて、コンピュータ(11)を、複数の領域(FD)のいずれかの領域において、前記ゲームに係るキャラクタ(C)を当該キャラクタに対応付けられた端末(30)から取得される操作情報に基づいて制御する第1制御部(1300)と、前記複数の領域における前記キャラクタの状況 に基づいて、前記複数の領域における1の領域と他の領域とを連結する第2制御部(1400)として機能させる。
この態様によれば、多数のキャラクタ(C)によるゲームを実現し、かつ、キャラクタ(C)の過疎・過密の発生を防止することができる。また、ユーザには、広い領域の中の一部の領域において、他のキャラクタとゲームを行っている感覚を与えることができる。
「キャラクタの状況」とは、キャラクタに関連する情報であり、例えば、キャラクタの数であっても良い。また、例えば、キャラクタに関連付けられたパラメータの情報であっても良い。また、「連結」とは、1の領域と他の領域との間のキャラクタの移動を可能にする処理であり、例えば複数の領域の中から1の領域と他の領域とを選択し、選択した両領域を連続させる処理である。
[付記2]
付記1において、前記第2制御部(1400)は、前記1の領域(FD)の境界の一部と前記他の領域(FD)の境界の一部とを互いに共有させることにより前記1の領域と前記他の領域とを連結する。
この態様によれば、境界の一部を互いに供給することで、フィールド同士の接続を不自然なものとすることを防ぐことができる。
[付記3]
付記1または2において、前記ゲームは、複数のキャラクタ間の対戦ゲームである。
[付記4]
付記3において、前記第1制御部(1300)は、前記対戦ゲームにおいて他のキャラクタに敗北したキャラクタを前記対戦ゲームから離脱させる。
「対戦ゲームから離脱させる」とは、その対戦ゲームでの勝利の可能性を失わせることであり、その一例として、その対戦ゲームの進行に影響を与える権利を失わせることや、キャラクタの操作を不能にすることが挙げられる。
[付記5]
付記1~4において、前記第2制御部(1400)は、前記複数の領域の各々におけるキャラクタの数に基づいて、互いに連結する領域を決定する。
この態様によれば、複数の領域の各々におけるキャラクタの数に基づいて、互いに連結する領域を決定するので、キャラクタの過疎・過密が解消されるように、適切に領域の連結を行うことができる。
「キャラクタの数」は、キャラクタの過疎・過密の程度を示す情報であり、複数の領域の広さが同じである場合は、各領域に所在するキャラクタの数、各領域の広さが異なる場合には、各領域の単位面積当たりのキャラクタ数である。「キャラクタの数」には、各領域に所在するキャラクタのライフ情報を反映させてもよい。
[付記6]
付記1~5において、前記第2制御部(1400)は、1の領域に所在するキャラクタの数が所定数以下である場合に、当該キャラクタを他の領域に移動させる。
この態様によれば、所在するキャラクタ数の少ない領域からキャラクタを退場させ、当該領域を消滅させることが可能になる。
「他の領域」は、「1の領域」に連結された領域であってもよく、それ以外の領域であってもよい。
[付記7]
付記1~5において、前記第2制御部(1400)は、1の領域に所在するキャラクタの数が所定数以下である場合に、当該キャラクタに対して不利益を与える。
この態様によれば、所在するキャラクタ数の少ない領域において、キャラクタに不利益を与えることによりキャラクタを退場させ、当該領域を消滅させることが可能になる。
「キャラクタに対して不利益を与える」とは、1の領域に連結された領域に比して、1の領域においてゲームを有利に進める妨げを増やすことである。例えば「キャラクタに不利益を与える」ことは、ゲームを有利に進める要素を減少させること、具体的には、キャラクタの所持アイテムを減らす等であってもよい。また、ゲームが対戦ゲームである場合、「キャラクタに不利益を与える」ことは、連結された領域に比して、対戦ゲームからの離脱の可能性を高くすることであってもよい。あるいは「キャラクタに不利益を与える」ことは、連結された領域にはない離脱要因を1の領域において発生することであってもよい。
[付記8]
付記1~7において、前記第2制御部(1400)は、1の領域に所在するキャラクタの数が所定数以上である場合、他の領域から当該1の領域へのキャラクタの移動を制限する。
この態様によれば、キャラクタが過密な領域が発生するのを防止することができる。
[付記9]
付記1~8において、前記第2制御部(1400)は、連結された領域間のキャラクタの移動を可とする第1期間と前記領域間のキャラクタの移動を不可とする第2期間を交互に発生する。
この態様によれば、第1期間において領域間のキャラクタの移動を行わせ、第2期間において同一領域内で各キャラクタにゲームを進行させることができる。
[付記10]
付記9において、前記第2制御部(1400)は、前記第1期間と時間的関連性を有するタイミングにおいて、互いに連結する領域を切り換える処理を繰り返す。
この態様によれば、第2期間内のゲームの進行により変化した各領域のキャラクタの状況に応じて、互いに連結する領域を適切に決定することができる。
[付記11]
付記1~8において、前記第2制御部(1400)は、時間間隔を空けて、互いに連結する領域を切り換える処理を繰り返す。
この態様によれば、互いに連結する領域を切り換える処理が繰り返されるので、各領域におけるキャラクタの状況の変化に適切に対応することができる。
[付記12]
付記1~11において、前記第2制御部(1400)は、前記第2制御部により連結された各領域について、当該領域の連結先の領域の状況を示す情報を生成する。
この態様によれば、ユーザは、連結先の領域の状況を示す情報を確認することにより連結先の領域にキャラクタを移動させるべきか否かを判断することができる。
「連結先の領域の状況」とは、例えば、連結先の領域に所在するキャラクタに関する情報であり、「キャラクタに関する情報」とは、例えば、キャラクタの数であっても良いし、また例えば、キャラクタに関連付けられたパラメータに基づく情報であっても良い。また例えば、キャラクタの種類を識別可能な情報であっても良い。また、「連結先の領域の状況」とは、例えば、連結先の領域に所在するアイテムの情報であっても良い。「アイテムの情報」とは、例えば、アイテムの数に関する情報であっても良いし、また例えば、アイテムの種類を識別可能な情報であっても良い。ここで、「アイテム」とは、ユーザやキャラクタが利用可能なオブジェクトであり、利用することでゲームの進行に影響を与えるものであり、例えば、敵キャラクタを攻撃するための武器などである。
[付記13]
付記1~12において、前記第2制御部(1400)は、互いに連結された2つの領域の一方から他方へのキャラクタの通過を許可し、他方から一方へのキャラクタの通過を禁止する。
この態様によれば、各領域のキャラクタの状況が好ましい状況になるように、領域間のキャラクタの移動を制限することができる。
[付記14]
付記1~12において、前記第2制御部(1400)は、互いに連結された2つの領域の一方から他方へ通過したキャラクタが他方から一方へ戻るのを禁止する。
この態様によれば、例えば強敵との対戦を避けて、同じ2つの領域間を往復する等、ゲームの公正を損なうキャラクタの移動を禁止することができる。
[付記15]
本発明の一態様によるゲーム装置(10)は、複数のキャラクタ(C)によりゲームを進行させるゲーム装置において、複数の領域(FD)のいずれかの領域において、前記ゲームに係るキャラクタ(C)を当該キャラクタに対応付けられた端末(30)から取得される操作情報に基づいて制御する第1制御部(1300)と、前記複数の領域における前記キャラクタの状況に基づいて、前記複数の領域における1の領域と他の領域とを連結する第2制御部(1400)とを有する。
この態様においても付記1と同様な効果が得られる。
[付記16]
本発明の一態様によるゲームシステム(1)は、複数のキャラクタ(C)によりゲームを進行させるゲームシステムにおいて、複数のユーザにより操作される複数の端末(30)と、前記複数のユーザによる前記複数の端末に対する操作情報を受信するサーバ(10)とを有し、前記サーバが、複数の領域(FD)のいずれかの領域において、前記ゲームに係るキャラクタ(C)を当該キャラクタに対応付けられた端末(30)から取得される操作情報に基づいて制御する第1制御部(1300)と、前記複数の領域における前記キャラクタの状況に基づいて、前記複数の領域における1の領域と他の領域とを連結する第2制御部(1400)とを有する。
この態様においても付記1と同様な効果が得られる。
[付記17]
本発明の一態様によるゲーム制御方法は、複数のキャラクタ(C)によりゲームを進行させる方法において、コンピュータ(11)が、複数の領域(FD)のいずれかの領域において、前記ゲームに係るキャラクタ(C)を当該キャラクタに対応付けられた端末(30)から取得される操作情報に基づいて制御する第1制御(1300)と、前記複数の領域における前記キャラクタの状況に基づいて、前記複数の領域における1の領域と他の領域とを連結する第2制御(1400)とを実行する。
この態様においても付記1と同様な効果が得られる。