以下、添付図面を参照して、本発明の実施の形態について説明する。
図1は、この実施の形態にかかるネットワークゲームが行われるネットワークシステムの構成を示すブロック図である。図示するように、この実施の形態にかかるネットワークゲームシステムは、インターネット等のネットワーク(物理的な接続のみで論理的な接続がされてないものは図示せず)に接続される複数のビデオゲーム装置100(141〜143、151〜153、…)と、サーバ装置200とから構成される。複数のビデオゲーム装置100のうちの任意の2以上のビデオゲーム装置100同士で、ビデオゲーム装置群140、150、…が形成される。
サーバ装置200は、この実施の形態にかかるネットワークゲームの全体の進行を管理するものであり、各ビデオゲーム装置100の接続状況と各ビデオゲーム装置100にて行われているゲームの状況を管理している。ビデオゲーム装置100は、いずれもネットワークを介してサーバ装置200に接続することが可能である。もっとも、同一のビデオゲーム装置群140、150、…に属するビデオゲーム装置100同士では、サーバ装置200を介さずに、ネットワークを介してピアツーピアで互いに接続することが可能である。
ビデオゲーム装置群140、150、…のそれぞれに属する2以上のビデオゲーム装置100のうちで何れか1つのビデオゲーム装置141、151、…が、サーバ装置200からの指定によってフロントエンドサーバとなる(もっとも、サーバ装置200との関係ではクライアント)。フロントエンドサーバとなるビデオゲーム装置141、151、…は、サーバ装置200からの指定によって所定期間毎に変更される。ビデオゲーム装置141、151、…がフロントエンドサーバとなるのに対して、サーバ装置200は、バックエンドサーバとなる。また、他のビデオゲーム装置142、152、…は、フロントエンドサーバとなるビデオゲーム装置141、151、…に対するクライアントとなる。
この実施の形態にかかるネットワークゲームは、ビデオゲーム装置100の各プレイヤがAチームとBチームとに別れ、チームで対戦するゲームである。ゲームのマップ上には、複数の戦闘区が設定されており、ビデオゲーム装置100の各プレイヤは、自らのプレイヤキャラクタを所属させるチームと戦闘区とを決め、ゲームに参加する。ビデオゲーム装置群140、150、…は、この戦闘群毎に設けられるものである。同一のビデオゲーム装置群140、150、…に属するビデオゲーム装置100は、互いにサーバ装置200を介さずにネットワークを介してピアツーピアで情報を交換しながら、当該戦闘区におけるゲームを進めるものとなる。
もっとも、フロントエンドサーバとなるビデオゲーム装置141、151、…だけは、ネットワークを介してサーバ装置200と接続し、戦闘の進行状況に関する情報を随時サーバ装置200に送信するものとしている。また、フロントエンドサーバとなるビデオゲーム装置141、151、…だけは、サーバ装置200がゲームの進行を制御するために必要な情報があれば、これをサーバ装置200から受信するものとしている。
ビデオゲーム装置100の各プレイヤは、選択した戦闘区におけるマップ上でプレイヤキャラクタの位置を順次指定していき、指定した位置にプレイヤキャラクタが達するまでに敵チームのキャラクタに遭遇すると自動的に戦闘を開始する。各々のプレイヤキャラクタの遭遇した敵チームのキャラクタに対する戦闘行動を決めるためのAIルーチンは、ビデオゲーム装置100のそれぞれで実行されるゲームプログラムに含まれているが、これは、当該プレイヤキャラクタに対応するプレイヤのビデオゲーム装置100において実行される。
また、この実施の形態にかかるネットワークゲームでは、ビデオゲーム装置群140、150、…毎に、各プレイヤの操作に従って動作するプレイヤキャラクタ以外にノンプレイヤキャラクタが登場する。ノンプレイヤキャラクタは、AIルーチンの実行によりプレイヤの操作によらずに自動的に動作するものである。ビデオゲーム装置100のそれぞれで実行されるゲームプログラムが、このAIルーチンを含んでいる。もっとも、ノンプレイヤキャラクタを動作させるためのAIルーチンを実行するビデオゲーム装置100は、フロントエンドサーバとなっているビデオゲーム装置141、151、…だけである。
また、フロントエンドサーバとなるビデオゲーム装置141、151、…は、同一のビデオゲーム装置群140、150、…に属する他のビデオゲーム装置142、152、…からプレイヤキャラクタの位置や戦闘行動などの情報を収集し、ノンプレイヤキャラクタの動作も含めて、各プレイヤキャラクタのパラメータの変化値を計算する。各プレイヤのパラメータの変化値や、ノンプレイヤキャラクタの動作に関する情報も、同一のビデオゲーム装置群140、150、…に属するビデオゲーム装置100同士がサーバ装置200を介さずにピアツーピアで交換し合うものである。
さらに、この実施の形態にかかるネットワークゲームでは、ゲームそのものには参加せずに他人の行っているゲームを戦闘区毎に閲覧することができる。他人の行っているゲームを閲覧するだけのビデオゲーム装置143、153、…は、閲覧したい戦闘区に対応したビデオゲーム装置群140、150、…に含まれる任意のビデオゲーム装置141、142、151、152、…とサーバ装置200を介さずにピアツーピアで接続され、そこからゲームの進行状況に関する情報が送られてくるものとなる。
もっとも、図1のネットワークゲームシステムにおいてビデオゲーム装置100同士をピアツーピアで接続するための制御は、サーバ装置200が行うものとなっている。つまり、各ビデオゲーム装置100からゲームに参加する、またはゲームを閲覧するためには、最初にサーバ装置200に接続して、他のビデオゲーム装置100とピアツーピアで情報を交換するために必要な情報を得なければならない。また、新たなビデオゲーム装置100がゲームに参加する、またはゲームを閲覧する場合には、これと情報交換される既にゲームに参加しているビデオゲーム装置100に必要な情報が通知されるものとなっている。
次に、ビデオゲーム装置100及びサーバ装置200の構成について説明する。図2は、図1のビデオゲーム装置100の構成を示すブロック図である。図示するように、ビデオゲーム装置100は、装置本体101を中心として構築される。この装置本体101は、その内部バス119に接続された制御部103、RAM(Random Access Memory)105、ハードディスク・ドライブ(HDD)107、サウンド処理部109、グラフィック処理部111、DVD/CD−ROMドライブ113、通信インターフェイス115、及びインターフェイス部117を含む。
この装置本体101のサウンド処理部109は、スピーカーであるサウンド出力装置125に、グラフィック処理部111は、表示画面122を有する表示装置121に接続されている。DVD/CD−ROMドライブ113には、記録媒体(本実施の形態では、DVD−ROMまたはCD−ROM)131を装着し得る。通信インターフェイス115は、ネットワークに接続される。インターフェイス部117には、入力部(コントローラ)161とメモリーカード162とが接続されている。
制御部103は、CPU(Central Processing Unit)やROM(Read Only Memory)などを含み、HDD107や記録媒体131上に格納されたプログラムを実行し、装置本体101の制御を行う。制御部103は、内部タイマを備えている。RAM105は、制御部103のワークエリアである。HDD107は、プログラムやデータを保存するための記憶領域である。サウンド処理部109は、制御部103により実行されているプログラムがサウンド出力を行うよう指示している場合に、その指示を解釈して、サウンド出力装置125にサウンド信号を出力する。
グラフィック処理部111は、制御部103から出力される描画命令に従って、フレームバッファ(フレームメモリ)112(図では、グラフィック処理部111の外側に描かれているが、グラフィック処理部111を構成するチップに含まれるRAM内に設けられる)に画像データを展開し、表示装置121の表示画面122上に画像を表示するビデオ信号を出力する。グラフィック処理部111から出力されるビデオ信号に含まれる画像の1フレーム時間は、例えば60分の1秒である。
DVD/CD−ROMドライブ113は、記録媒体131に対しプログラム及びデータの読み出しを行う。通信インターフェイス115は、ネットワークに接続され、他のコンピュータとの通信を行う。入力部161は、方向キー及び複数の操作ボタンを備える。方向キーは、入力の選択肢(上記した戦闘区など)から所望の選択肢を選んだり、プレイヤキャラクタの移動位置を選ぶために用いられる。操作ボタンは、方向キーによる選択を確定させるためのボタンを含む。
インターフェイス部117は、入力部161からの入力データをRAM105に出力し、制御部103がそれを解釈して演算処理を実施する。インターフェイス部117は、また、制御部103からの指示に基づいて、RAM105に記憶されているゲームの進行状況を示すデータをメモリーカード162に保存させ、メモリーカード162に保存されている中断時のゲームのデータを読み出して、RAM105に転送する。
ビデオゲーム装置100でゲームを行うためのプログラム及びデータは、最初例えば記録媒体131に記憶されている。記録媒体131に記憶されているデータとしては、ゲーム空間(仮想3次元空間)に存在するオブジェクトを構成するためのグラフィックデータを含んでいる。記録媒体131に記憶されたプログラム及びデータは、実行時にDVD/CD−ROMドライブ113により読み出されて、RAM105にロードされる。制御部103は、RAM105にロードされたプログラム及びデータを処理し、描画命令をグラフィック処理部111に出力し、サウンド出力の指示をサウンド処理部109に出力する。制御部103が処理を行っている間の中間的なデータは、RAM105に記憶される。
図3は、図1のサーバ装置200の構成を示すブロック図である。図示するように、サーバ装置200は、サーバ本体201を中心として構築される。サーバ本体201は、その内部バス219に接続された制御部203、RAM205、ハード・ディスク・ドライブ(HDD)207、DVD/CD−ROMドライブ213、通信インターフェイス215を含む。DVD/CD−ROMドライブ213には、記録媒体(DVD−ROMまたはCD−ROM)231を装着し得る。
制御部203は、CPU(Central Processing Unit)やROM(Read Only Memory)などを含み、HDD207や記録媒体231上に格納されたプログラムを実行し、サーバ装置200の制御を行う。制御部203は、現在時刻を計時する内部タイマを備えている。RAM205は、制御部203のワークエリアである。HDD207は、プログラムやデータを保存するための記憶領域である。通信インターフェイス215は、ネットワーク3に接続され、ビデオゲーム装置100のそれぞれとの通信を行う。
サーバ装置200でネットワークゲームを行うためのプログラム及びデータは、最初例えば記録媒体231に記憶され、ここからHDD207にインストールされる。そして、このプログラム及びデータは実行時にHDD207から読み出されて、RAM205にロードされる。制御部203は、RAM205にロードされたプログラム及びデータを処理し、ビデオゲーム装置100のそれぞれから送られてくるメッセージなどを元にネットワークゲームを進行させる。制御部203が処理を行っている間の中間的なデータは、RAM205に記憶される。
次に、この実施の形態にかかるネットワークゲームを進行させるため、サーバ装置200において管理されるデータについて説明する。図4は、この実施の形態にかかるネットワークゲームを実行させるためにサーバ装置200において管理されるテーブル群を示す図である。このテーブル群のうちで、図4(a)は、このネットワークゲームのサービスを利用可能なビデオゲーム装置100の接続情報を管理するための接続状況テーブルであり、図4(b)は、ネットワークゲームの進行を管理するためのゲーム進行テーブルである。
図4(a)に示す接続状況テーブル310には、このネットワークゲームのサービスを現時点で利用しているかどうかに関わらず、利用することが可能なビデオゲーム装置100毎に、ID311と、パスワード312と、ログイン日時313と、ログアウト日時314と、IPアドレス315と、戦闘区区分316と、参加フラグ317と、閲覧先情報318とが登録される。
ID311は、ビデオゲーム装置100(のプレイヤ)を一意に識別するための識別情報である。パスワード312は、このネットワークゲームのサービスを利用するための認証に用いられる。ログイン日時313は、当該ビデオゲーム装置100(のプレイヤ)が、このネットワークゲームサービスを利用するためにサーバ装置200にログインした日時を示す。各ビデオゲーム装置100のプレイヤは、ログインの際に、ゲームの参加/閲覧の別と、参加/閲覧したい戦闘区を指定するものとなる。ゲームに参加する場合は、所属するチームも指定するものとなる。
ログアウト日時314は、当該ビデオゲーム装置100(のプレイヤ)がログアウトした日時を示す。当該ビデオゲーム装置100がフロントエンドサーバとなるビデオゲーム装置141、151、…として指定されていて一定の期間を越えて情報が受信されなければ、当該ビデオゲーム装置100のサーバ装置200とのデータリンクが設定不能であるものとして、強制的にログアウト処理が行われる。当該ビデオゲーム装置100が他人の行っているゲームを閲覧するだけのビデオゲーム装置143、153、…であった場合、正式にログアウトすることなく閲覧を止めてしまうこともあり得、この場合にログイン日時313のみが登録され、ログアウト日時314が登録されないものとなるが、実用上の問題が生じることはない。
IPアドレス315は、当該ビデオゲーム装置100のネットワーク上におけるIPアドレスであり、サーバ装置200とビデオゲーム装置100との間、異なるビデオゲーム装置100の間で情報を送受信するためのアドレスとして必要になるものである。戦闘区区分316は、当該ビデオゲーム装置100がゲームに参加またはゲームを閲覧している戦闘区の区分を示すものである。当該ビデオゲーム装置100がゲームに参加しているものである場合には、戦闘区区分316は、ビデオゲーム装置群140、150、…に対応したものとなる。
参加フラグ317は、当該ビデオゲーム装置100(のプレイヤ)が他人のゲームを閲覧するだけのビデオゲーム装置143、153、…ではなく、ゲームに参加していてビデオゲーム装置群140、150、…を形成するビデオゲーム装置141、142、151、152、…である場合にセットされるフラグである。閲覧先情報318は、他人のゲームを閲覧するだけのビデオゲーム装置143、153、…である場合に、他人の行っているゲームを閲覧するためにビデオゲーム装置141、142、151、152、…のうちの何れに接続されているのかを示す情報である。
図4(b)に示すゲーム進行テーブル320は、ビデオゲーム装置群140、150、…毎(戦闘区毎)のテーブル320A、320B、…、320Xから構成されている。これらのテーブル320A、320B、…、320Xに後述する情報が登録されるビデオゲーム装置100は、ゲームに参加しているビデオゲーム装置141、142、151、152、…のみで、他人のゲームを閲覧しているだけのビデオゲーム装置143、153は含まれない。
各ビデオゲーム装置群140、150、…のゲーム進行テーブル320には、対応するビデオゲーム装置群140、150、…においてビデオゲーム装置141、151、…をフロントエンドサーバとして指定した日時、或いは指定した後にこれらから最後に情報を受信した日時321が登録される。また、各ビデオゲーム装置群140、150、…のゲーム進行テーブル320には、対応する戦闘区でのゲームに参加するビデオゲーム装置100毎に、ID322と、フロントエンドフラグ323と、フロントエンドの指定日時324と、所属チーム325と、ゲームステータス326とが登録される。
ID322は、ビデオゲーム装置100(のプレイヤ)を一意に識別するための識別情報である。フロントエンドフラグ323は、当該ビデオゲーム装置100が現時点でフロントエンドサーバとなるビデオゲーム装置141、151、…として指定されている場合にセットされるフラグである。フロントエンドの指定日時324は、当該ビデオゲーム装置100をフロントエンドとなるビデオゲーム装置141、151、…として指定したときの日時を示す。
所属チーム325は、当該ビデオゲーム装置100(のプレイヤ)がゲームにおいて所属しているチームを示す。ゲームステータス326は、当該ビデオゲーム装置100(のプレイヤ)によるゲームの進行状況に関する情報を示すもので、プレイヤキャラクタのマップ上における位置や各種パラメータの値などの情報を含む。
なお、ID322と所属チーム325は、当該ビデオゲーム装置100のログインからログアウトまで同じ情報が登録されるが、フロントエンドフラグ323と指定日時324とは、サーバ装置200の処理によって随時更新されるものとなっている。ゲームステータス326は、フロントエンドサーバとなるビデオゲーム装置141、151、…から送られてくるゲームの進行状況に関する情報に従って随時更新されるものとなっている。
次に、この実施の形態にかかるネットワークゲームの進行を概略的に説明する。図5、図6は、この実施の形態にかかるネットワークゲームの進行を模式的に示す図である。なお、ここで登場するビデオゲーム装置100は、全てビデオゲーム装置群140に属する、またはビデオゲーム装置群140における他人のゲームを閲覧するものであるとして説明するものとする。
図5(a)に示すように、ゲームに参加していなかったビデオゲーム装置100(A)が新たにゲームに参加しようとする場合、プレイヤが参加/閲覧の別として参加を指定し、さらにゲームに参加する戦闘区と所属チームとを指定し、ID及びパスワードを入力して、ビデオゲーム装置100(A)からサーバ装置200にログインを要求する。サーバ装置200は、ログイン要求の際に送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して、認証を行う。
認証の結果によりログインが受け付けられると、サーバ装置200は、ビデオゲーム装置100(A)について接続状況テーブル310に登録されている参加フラグ317をセットし、また、指定された戦闘区のゲーム進行テーブル320に新たなレコードを作成し、当該ビデオゲーム装置100(A)のID322、所属チーム325、ゲームステータス326を登録する。
また、当該戦闘区のゲーム進行テーブル320においてフロントエンドフラグ323のセットされているビデオゲーム装置141(B)に、当該ビデオゲーム装置100(A)のID311及びIPアドレス315を通知するとともに、フロントエンドフラグ323のセットされているビデオゲーム装置141(B)のID311及びIPアドレス315を、当該ビデオゲーム装置100(A)に通知する。これにより、ビデオゲーム装置100(A)は、指定した戦闘区でゲームに参加できるビデオゲーム装置群140に属するビデオゲーム装置142(A)となり、サーバ装置200を介さずにビデオゲーム装置141(B)とビデオゲーム装置142(A)との間で情報を送受信することができる。
その後、図5(b)に示すように、ビデオゲーム装置群140に属するビデオゲーム装置141(B)とビデオゲーム装置142(A)とは、サーバ装置200を介することなくネットワークを介してピアツーピアでゲームに関する情報を送受信しながら、ゲームを進めるものとなる。より詳細に説明すると、ビデオゲーム装置142(A)においてプレイヤが入力部161から入力した位置に基づくプレイヤキャラクタの移動位置に関する情報、AIルーチンの実行に基づくプレイヤキャラクタの戦闘行動に関する情報が、フロントエンドサーバとなるビデオゲーム装置141(B)に集められる。
フロントエンドサーバとなるビデオゲーム装置141(B)は、さらにAIルーチンの実行によりノンプレイヤキャラクタの動作も決定し、プレイヤキャラクタ及びノンプレイヤキャラクタの動作に基づく各プレイヤキャラクタのパラメータの変化値を算出する。そして、ビデオゲーム装置142(A)に対して、対応する戦闘区での各プレイヤキャラクタの動作(位置及び戦闘行動)に関する情報や、パラメータの変化値などの情報を送信する。
ビデオゲーム装置142(A)は、フロントエンドサーバとなるビデオゲーム装置141(B)から送られてきた情報に従ってゲームの画像を生成し、表示画面122として表示させる。一方、フロントエンドサーバとなるビデオゲーム装置141(B)は、同じビデオゲーム装置群140に属するビデオゲーム装置142から送られてきた情報や自ら算出した情報に従ってゲームの画像を生成し、表示画面122として表示させる。
また、ビデオゲーム装置群140のうちでフロントエンドサーバとなるビデオゲーム装置141(B)だけは、ゲームの進行に必要な情報をネットワークを介して送受信するものとなる。より詳細に説明すると、フロントエンドサーバとなるビデオゲーム装置141(B)は、対応する戦闘区での各プレイヤキャラクタの位置やパラメータの変化値などを含むゲームステータスに関する情報をサーバ装置200に送信する。サーバ装置200は、フロントエンドサーバとなるビデオゲーム装置141(B)から受信したゲームステータスに関する情報に基づいて、ゲーム進行テーブル320に登録されているゲームステータス326を更新する。
サーバ装置200は、また、他のビデオゲーム装置群150、…のゲームの進行状況がビデオゲーム装置群140でのゲームの進行に影響を及ぼすことがある場合など、そのゲームの進行を制御するために必要な情報をフロントエンドサーバとなるビデオゲーム装置141(B)に送信する。ビデオゲーム装置141(B)は、この情報が送られてきた場合には、これもビデオゲーム装置142(A)に送信したり、この情報にも基づいてノンプレイヤキャラクタの動作や各プレイヤキャラクタのパラメータの変化値を算出したりするものとなる。
また、図5(c)に示すように、サーバ装置200は、現時点でフロントエンドサーバとなっているビデオゲーム装置141(B)についてゲーム進行テーブル320の指定日時324から所定時間を経過したかどうかを監視しており、所定時間を経過したものと判断すると、同じビデオゲーム装置群140に属する他のビデオゲーム装置142を新たにフロントエンドサーバとして指定するものとなる。
より詳細に説明すると、サーバ装置200は、ゲーム進行テーブル320に登録されているがフロントエンドフラグ323のセットされていないビデオゲーム装置142のうちから何れかを所定の手法に従って選択する(ここでは、ビデオゲーム装置142(A)が選択されたものとする)。
サーバ装置200は、これまでフロントエンドサーバとして指定されていたビデオゲーム装置141(B)についてゲーム進行テーブル320に登録されているフロントエンドフラグ323をリセットするとともに、指定日時324を消去する。また、フロントエンドサーバの指定を解除するための指示をネットワークを介してビデオゲーム装置141(B)に送信する。フロントエンドサーバであったビデオゲーム装置141(B)は、この指示を受信すると、フロントエンドサーバではなくなり、ビデオゲーム装置群140においてフロントエンドサーバではないビデオゲーム装置142(B)となる。
サーバ装置200は、また、新たに選択したビデオゲーム装置142(A)についてゲーム進行テーブル320に登録されているフロントエンドフラグ323をセットするとともに、制御部203の内部タイマで計測されている現在日時を指定日時324として登録する。また、接続状況テーブル310に登録されているIPアドレス315を参照して、フロントエンドサーバに指定するための指示をビデオゲーム装置142(A)に送信する。この指示には、ビデオゲーム装置群140に含まれる他の全てのビデオゲーム装置のID311及びIPアドレス315が含まれる。ビデオゲーム装置142(A)は、この指示を受信すると、新たにフロントエンドサーバとなるビデオゲーム装置141(A)となる。
その後、図5(d)に示すように、ビデオゲーム装置群140に属するビデオゲーム装置141(A)とビデオゲーム装置142(B)とは、サーバ装置200を介することなくネットワークを介してピアツーピアでゲームに関する情報を送受信しながら、ゲームを進めるものとなる。また、ビデオゲーム装置群140のうちでフロントエンドサーバとなるビデオゲーム装置141(A)だけは、ゲームの進行に必要な情報をネットワークを介して送受信するものとなる。ここでの処理は、フロントエンドサーバが入れ替わっている以外は、図5(b)において説明したものと同じである。
図6(a)に示すように、ゲームを閲覧していなかったビデオゲーム装置100が新たにゲームを閲覧しようとする場合、プレイヤが参加/閲覧の別として閲覧を指定し、さらにゲームを閲覧する戦闘区を指定し、ID及びパスワードを入力して、ビデオゲーム装置100からサーバ装置200にログインを要求する。サーバ装置200は、ログイン要求の際に送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して、認証を行う。
認証の結果によりログインが受け付けられると、サーバ装置200は、戦闘区のゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置141、142を特定可能な情報(IDなど)を登録する。
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置100のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ビデオゲーム装置100は、指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となり、サーバ装置200を介さずに選択されたビデオゲーム装置141、142から当該戦闘区でのゲームの進行状況に関する情報を受信することができるものとなる。ビデオゲーム装置143は、ビデオゲーム装置141、142から送られてきた情報に従ってゲームの画像を生成し、表示画面122として表示させる。
図6(b)に示すように、フロントエンドサーバではないがゲームに参加しているビデオゲーム装置142からログアウト要求が受信されると、サーバ装置200は、所定のログアウト処理を行うとともに、ログアウトが要求されたビデオゲーム装置142に関するレコードをゲーム進行テーブル320から削除するとともに、当該ビデオゲーム装置142のID311を、フロントエンドサーバとなっているビデオゲーム装置141に通知する。フロントエンドサーバとなるビデオゲーム装置141は、この通知がされたビデオゲーム装置142との情報交換を停止する。
また、ログアウトが要求されたビデオゲーム装置142を閲覧先情報318に設定しているビデオゲーム装置143がある場合には、サーバ装置200は、同じビデオゲーム装置群140についてのゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置141、142を特定可能な情報(IDなど)を登録する。
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置143のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ログアウトしたビデオゲーム装置142に接続してゲームを閲覧していたビデオゲーム装置143は、新たに選択されたビデオゲーム装置141、142に接続して指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となる。
図6(c)に示すように、現時点でフロントエンドサーバとして指定されているビデオゲーム装置141からログアウト要求が受信されると、サーバ装置200は、所定のログアウト処理を行うとともに、ログアウトが要求されたビデオゲーム装置141に関するレコードをゲーム進行テーブル320から削除する。また、同じビデオゲーム装置群140に属する他のビデオゲーム装置142の中から何れかを新たなフロントエンドサーバとして選択する。
サーバ装置200は、選択したビデオゲーム装置142について接続状況テーブル310に登録されているIPアドレス315を参照して、フロントエンドサーバに指定するための指示をビデオゲーム装置142に送信する。この指示には、ビデオゲーム装置群140に含まれる他の全てのビデオゲーム装置(ログアウト要求したものを除く)のID311及びIPアドレス315が含まれる。この指示を受信したビデオゲーム装置142は、新たにフロントエンドサーバとなるビデオゲーム装置141となる。
また、ログアウトが要求されたビデオゲーム装置141を閲覧先情報318に設定しているビデオゲーム装置143がある場合には、サーバ装置200は、同じビデオゲーム装置群140についてのゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置142を特定可能な情報(IDなど)を登録する。
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置143のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ログアウトしたビデオゲーム装置142に接続してゲームを閲覧していたビデオゲーム装置143は、新たに選択されたビデオゲーム装置141、142に接続して指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となる。
図6(d)に示すように、サーバ装置200は、現時点でフロントエンドサーバとして指定されているビデオゲーム装置141から情報を受信する度に当該ビデオゲーム装置群140のゲーム進行テーブル310に登録されている最後に情報を受信した日時321を更新するとともに、登録されている日時321から所定時間を経過しても新たな情報が受信されていないかどうかを監視している。
サーバ装置200は、登録されている日時321から所定時間を経過しても新たな情報が受信されていないときには、ビデオゲーム装置141との接続が切断されたものとして、ビデオゲーム装置141を強制的にログアウトさせる処理を行うとともに、当該ビデオゲーム装置141に関するレコードをゲーム進行テーブル320から削除する。また、同じビデオゲーム装置群140に属する他のビデオゲーム装置142の中から何れかを新たなフロントエンドサーバとして選択する。
サーバ装置200は、選択したビデオゲーム装置142について接続状況テーブル310に登録されているIPアドレス315を参照して、フロントエンドサーバに指定するための指示をビデオゲーム装置142に送信する。この指示には、ビデオゲーム装置群140に含まれる他の全てのビデオゲーム装置のID311及びIPアドレス315が含まれる。この指示を受信したビデオゲーム装置142は、新たにフロントエンドサーバとなるビデオゲーム装置141となる。
また、ログアウトが要求されたビデオゲーム装置141を閲覧先情報318に設定しているビデオゲーム装置143がある場合には、サーバ装置200は、同じビデオゲーム装置群140についてのゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置142を特定可能な情報(IDなど)を登録する。
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置143のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ログアウトしたビデオゲーム装置142に接続してゲームを閲覧していたビデオゲーム装置143は、新たに選択されたビデオゲーム装置141、142に接続して指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となる。
以下、この実施の形態にかかるネットワークシステムを構成するサーバ装置200及びビデオゲーム装置100において、それぞれ実行される処理について説明する。ビデオゲーム装置100における処理は、ゲームに参加するビデオゲーム装置141、142、151、152、…である場合と、ゲームを閲覧するだけのビデオゲーム装置143、153、…である場合と異なるので、それぞれ別個に説明するものとする。
図7、図8は、サーバ装置200において実行される処理を示すフローチャートである。サーバ装置200の制御部203は、ネットワーク上の何れかのビデオゲーム装置100から何らかの情報を受信したかどうかを判定している(ステップS101)。何れかのビデオゲーム装置100から何らかの情報を受信していれば、制御部203は、受信した情報が何であるかを判定する(ステップS102)。
受信した情報が参加/閲覧の別として参加を指定したログイン要求であった場合には、制御部203は、ログイン要求とともに送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して当該ビデオゲーム装置100の認証を行う。認証が得られると、制御部203は、ログイン要求とともに送られてきたIDが示すビデオゲーム装置100について、接続状況テーブル310のログイン日時313に現在日時を登録し、前回のログアウト時に登録されていたログアウト日時314を削除する。また、ログイン要求をしてきたビデオゲーム装置100のIPアドレス315、戦闘区区分316を登録し、参加フラグ317をセットする。
さらに、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に当該ビデオゲーム装置100のレコードを作成し、ログイン要求とともにIDをID322として登録し、また、ログイン要求において指定されたチームを所属チーム325としてを登録する(ステップS103)。
次に、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に、当該戦闘区でのゲームに参加している他のビデオゲーム装置100に関する情報が登録されているかどうかを判定する(ステップS104)。当該戦闘区でのゲームに参加している他のビデオゲーム装置100が未だ1つも登録されていなければ、制御部203は、ゲーム進行テーブル320においてログイン要求をしてきたビデオゲーム装置100のフロントエンドフラグ323をセットし、指定日時324に現在日時を登録する(ステップS105)。制御部203は、さらに、当該ビデオゲーム装置100に対してフロントエンドサーバに指定する旨を示す指示を送信する(ステップS106)。そして、ステップS101の処理に戻る。
当該戦闘区でのゲームに参加している他のビデオゲーム装置100が登録されていれば、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に登録されているビデオゲーム装置100のうちで、フロントエンドフラグ323のセットされているビデオゲーム装置100、すなわち現時点で当該戦闘区のビデオゲーム装置群においてフロントエンドサーバとして指定されているビデオゲーム装置100を検索する(ステップS107)。
制御部203は、フロントエンドサーバとして指定されているビデオゲーム装置100に、新たに当該戦闘区でのゲームに参加するビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS108)、新たに当該戦闘区でのゲームに参加するビデオゲーム装置100に、フロントエンドサーバとして指定されているビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS109)。そして、ステップS101の処理に戻る。
受信した情報が参加/閲覧の別として閲覧を指定したログイン要求であった場合には、制御部203は、ログイン要求とともに送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して当該ビデオゲーム装置100の認証を行う。認証が得られると、制御部203は、ログイン要求とともに送られてきたIDが示すビデオゲーム装置100について、接続状況テーブル310のログイン日時313に現在日時を登録し、前回のログアウト時に登録されていたログアウト日時314を削除する。また、ログイン要求をしてきたビデオゲーム装置100のIPアドレス315を登録する(ステップS110)。
次に、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に、当該戦闘区でのゲームに参加しているビデオゲーム装置100に関する情報が登録されているかどうかを判定する(ステップS111)。当該戦闘区でのゲームに参加している他のビデオゲーム装置100が未だ1つも登録されていなければ、そのままステップS101の処理に戻る。
当該戦闘区でのゲームに参加している他のビデオゲーム装置100が登録されていれば、制御部203は、当該戦闘区に対応したゲーム進行テーブル320に登録されているビデオゲーム装置100から何れかを閲覧先として選択し、選択したビデオゲーム100を示す情報を、ログイン要求をしたビデオゲーム装置100、すなわち新たにゲームを閲覧しようとするビデオゲーム装置100の閲覧先情報318に登録する(ステップS112)。
制御部203は、閲覧先として選択されたビデオゲーム装置100に、新たに当該戦闘区でのゲームを閲覧するビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS113)、新たに当該戦闘区でのゲームを閲覧するビデオゲーム装置100に、閲覧先として選択されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS114)。そして、ステップS101の処理に戻る。
受信した要求がログアウト要求であった場合には、制御部203は、ログアウトを要求したビデオゲーム装置100が現時点でフロントエンドサーバとして指定されている(すなわち、フロントエンドフラグ323がセットされている)かどうかを判定する(ステップS115)。
フロントエンドサーバ115として指定されていれば、制御部203は、ログアウト要求をしたビデオゲーム装置100と同じ戦闘区のゲーム進行テーブル320に登録されている他のビデオゲーム装置100のうちから、何れかのビデオゲーム装置100を新たにフロントエンドサーバとして選択し、選択したビデオゲーム装置100についてゲーム進行テーブル320のフロントエンドフラグ323をセットするとともに、指定日時324に現在日時を登録する(ステップS116)。
次に、制御部203は、新たにフロントエンドサーバとして指定されたビデオゲーム装置100に対して、フロントエンドサーバに指定する旨を示す指示を送信するとともに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS117)。また、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100に、新たにフロントエンドサーバとして指定されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS118)。そして、ステップS121の処理に進む。
ログアウトを要求したビデオゲーム装置100が現時点でフロントエンドサーバとして指定されていない場合には、制御部203は、ログアウト要求をしたビデオゲーム装置100がフロントエンドサーバとして指定されていないゲームに参加するビデオゲーム装置100であるかどうかを判定する(ステップS119)。ゲームに参加するビデオゲーム装置100であった場合には、制御部203は、フロントエンドサーバとして指定されているビデオゲーム装置100に、ログアウト要求をしたビデオゲーム装置100を特定可能な情報を送信する(ステップS120)。そして、ステップS121の処理に進む。
ステップS121では、制御部203は、ログアウト要求をしたビデオゲーム装置100について接続状況テーブル310のログアウト日時314として現在日時を登録して、当該ビデオゲーム装置100をログアウトさせる処理を行う。また、制御部203は、当該ログアウト要求をしたビデオゲーム装置100のレコードを、ゲーム進行テーブル320から削除する。
その後、制御部203は、ここでログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100があるかどうかを判定する(ステップS122)。ログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
ログアウトされたビデオゲーム装置100を閲覧先情報318として登録している他のビデオゲーム装置100があれば、制御部203は、ログアウトされたビデオゲーム100が登録されていたのと同じゲーム進行テーブル320に他のビデオゲーム装置100が登録されているか、すなわち該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあるかどうかを判定する(ステップS123)。該当する戦闘区でのゲームに参加しているビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあれば、制御部203は、ログアウトされたビデオゲーム装置100が登録されていたのと同じゲーム進行テーブル320に登録されているビデオゲーム装置100から何れかを閲覧先として選択し、選択したビデオゲーム100を示す情報を、ログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100の閲覧先情報318に新たに登録する(ステップS124)。
制御部203は、閲覧先として選択されたビデオゲーム装置100に、ログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS125)、ログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100に、閲覧先として選択されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS126)。そして、ステップS101の処理に戻る。
ログアウト要求をしたビデオゲーム装置100が、ゲームを閲覧するだけのビデオゲーム装置100であった場合には、制御部203は、当該ログアウト要求をしたビデオゲーム装置100の閲覧先情報318に登録されているビデオゲーム装置100に、ログアウト要求をした、すなわちゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を送信する(ステップS127)。さらに、制御部203は、ログアウト要求をしたビデオゲーム装置100について接続状況テーブル310のログアウト日時314として現在日時を登録して、当該ビデオゲーム装置100をログアウトさせる処理を行う(ステップS128)。
受信した情報がフロントエンドサーバとして指定されたビデオゲーム装置100から送られてきたゲーム情報であった場合には、制御部203は、当該ゲーム情報を送信したビデオゲーム装置100が属するビデオゲーム装置群に対応したゲーム進行テーブル320の最終受信日時321を現在日時に更新する(ステップS129)。制御部203は、さらに受信したゲーム情報に従って、当該ゲーム情報を送信したビデオゲーム装置100が属するビデオゲーム装置群に対応したゲーム進行テーブル320に登録されている各ビデオゲーム装置100のゲームステータス326を更新する(ステップS130)。そして、ステップS101の処理に戻る。
受信した情報がその他の情報であった場合には、制御部203は、受信した情報に応じてそれぞれ所定の処理を行う(ステップS131)。この処理は、本発明に直接的な関わりがあるものでもないため、詳細な説明を省略する。
ステップS101において何れのビデオゲーム装置100からも情報を受信していないと判定された場合には、制御部203は、戦闘区毎のゲーム進行テーブル320にフロントエンドフラグ323の設定されているビデオゲーム装置100について登録されている各指定日時324から現在までの経過時間が所定時間となったものがあるかどうか、すなわちフロントエンドサーバに指定されてから所定時間の経過したビデオゲーム装置100があるかどうかを判定する(ステップS132)。
フロントエンドサーバに指定されてから所定時間の経過したビデオゲーム装置100があれば、制御部203は、これと同じ戦闘区のゲーム進行テーブル320に登録されている他のビデオゲーム装置100のうちから、何れかのビデオゲーム装置100を新たにフロントエンドサーバとして選択し、選択したビデオゲーム装置100についてゲーム進行テーブル320のフロントエンドフラグ323をセットするとともに、指定日時324に現在日時を登録する(ステップS133)。
次に、制御部203は、新たにフロントエンドサーバとして指定されたビデオゲーム装置100に対して、フロントエンドサーバに指定する旨を示す指示を送信するとともに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS134)。また、制御部203は、これまでフロントエンドサーバとして指定されていたビデオゲーム装置100に、フロントエンドサーバの指定を解除する旨の指示を送信する(ステップS135)。
さらに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100に、新たにフロントエンドサーバとして指定されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS136)。そして、ステップS101の処理に戻る。
フロントエンドサーバに指定されてから所定時間の経過したビデオゲーム装置100がなければ、制御部203は、戦闘区毎のゲーム進行テーブル320に登録されている最終受信日時321から現在までの経過時間が所定時間となったものがあるかどうか、すなわちフロントエンドサーバに指定しているビデオゲーム装置100から最後に情報を受信してから所定時間を経過したかどうかを判定する(ステップS137)。
フロントエンドサーバに指定しているビデオゲーム装置100から最後に情報を受信してから所定時間を経過していれば、制御部203は、当該戦闘区において現時点までフロントエンドサーバとして指定されていたビデオゲーム装置100を強制的にログアウトさせる処理を行う。具体的には、接続状況テーブル310における当該ビデオゲーム装置100のログアウト日時314に現在日時を登録する(ステップS138)。
次に、制御部203は、当該戦闘区のゲーム進行テーブル320に登録されている他のビデオゲーム装置100のうちから、何れかのビデオゲーム装置100を新たにフロントエンドサーバとして選択し、選択したビデオゲーム装置100についてゲーム進行テーブル320のフロントエンドフラグ323をセットするとともに、指定日時324に現在日時を登録する(ステップS139)。
次に、制御部203は、新たにフロントエンドサーバとして指定されたビデオゲーム装置100に対して、フロントエンドサーバに指定する旨を示す指示を送信するとともに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS140)。また、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100に、新たにフロントエンドサーバとして指定されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS141)。
次に、制御部203は、ここで強制的にログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100があるかどうかを判定する(ステップS142)。強制的にログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
強制的にログアウトされたビデオゲーム装置100を閲覧先情報318として登録している他のビデオゲーム装置100があれば、制御部203は、ログアウトされたビデオゲーム100が登録されていたのと同じゲーム進行テーブル320に他のビデオゲーム装置100が登録されているか、すなわち該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあるかどうかを判定する(ステップS143)。該当する戦闘区でのゲームに参加しているビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあれば、制御部203は、強制的にログアウトされたビデオゲーム装置100が登録されていたのと同じゲーム進行テーブル320に登録されているビデオゲーム装置100から何れかを閲覧先として選択し、選択したビデオゲーム100を示す情報を、強制的にログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100の閲覧先情報318に新たに登録する(ステップS144)。
制御部203は、閲覧先として選択されたビデオゲーム装置100に、強制的にログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS145)、強制的にログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100に、閲覧先として選択されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS146)。そして、ステップS101の処理に戻る。
フロントエンドサーバに指定しているビデオゲーム装置100から最後に情報を受信してから所定時間を経過していなければ、制御部203は、各戦闘区におけるゲームの進行に影響を及ぼす何らかの事象が発生したかどうかを判定する(ステップS147)。この各戦闘区におけるゲームの進行に影響を及ぼす事象は、例えば、内部タイマによって計時している現在日時が所定の日時となったり、ステップS130で更新したゲームステータス326が所定の状態となること等により発生し得る。
何れかの戦闘区におけるゲームの進行に影響を及ぼす何らかの事象が発生していれば、制御部203は、そのような事象の発生した戦闘区についてフロントエンドサーバとして指定されたビデオゲーム装置100に、その影響に応じたゲーム制御情報を送信する(ステップS148)。そして、ステップS101の処理に戻る。何れの戦闘区においてもゲームの進行に影響を及ぼす事象が発生していなければ、そのままステップS101の処理に戻る。
図9、図10は、ゲームに参加するビデオゲーム装置100(141、142、151、152、…)において実行される処理を示すフローチャートである。ビデオゲーム装置100は、ゲームに参加するには参加/閲覧の別として参加を指定し、さらにゲームに参加する戦闘区と所属チームとを指定してサーバ装置200にログインし、また、ゲームへの参加を停止するにはサーバ装置200からログアウトする(強制的にログアウトされる場合を含む)必要があるが、ここでは、ログインの後、ログアウトする前までにおいて行われる処理について説明する。
ゲームに参加するビデオゲーム装置100の制御部103は、ステップS106、S117、S134またはS140でサーバ装置200から送信されたフロントエンドサーバに指定する旨の指示を受信したかどうかを判定する(ステップS201)。
フロントエンドサーバに指定する旨の指示を受信していなければ、制御部103は、ステップS109、S118、S136またはS141でサーバ装置200から送信されたフロントエンドサーバとして指定されている他のビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS202)。フロントエンドサーバとして指定されている他のビデオゲーム装置100を特定可能な情報を受信した場合には、制御部103は、当該フロントエンドサーバに関する情報をRAM105に保存する(ステップS203)。そして、ステップS201の処理に戻る。
フロントエンドサーバとして指定されている他のビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS113、S125またはS145でサーバ装置200から送信されたゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS204)。ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信した場合には、制御部103は、当該ゲームを閲覧するビデオゲーム装置100に関する情報をRAM105に保存する(ステップS205)。そして、ステップS201の処理に戻る。
ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS127でサーバ装置200から送信されたゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS206)。ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していた場合には、制御部103は、ゲームを閲覧するものしてRAM105に保存されている当該ビデオゲーム装置100に関する情報を消去する(ステップS207)。そして、ステップS201の処理に戻る。
ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、後述するステップS235においてフロントエンドサーバとして指定されている他のビデオゲーム装置100から送信されたゲーム情報を受信したかどうかを判定する(ステップS208)。ゲーム情報を受信していれば、制御部103は、受信したゲーム情報に従って各プレイヤキャラクタ及びノンプレイヤキャラクタを動作させ、表示画面122に表示させる(ステップS209)。
次に、制御部103は、ゲームを閲覧するだけのビデオゲーム装置100に関する情報がRAM105に保存されているかどうかを判定する(ステップS210)。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていれば、制御部103は、当該情報が示す他のビデオゲーム装置100にゲーム情報を送信する(ステップS211)。そして、ステップS201の処理に戻る。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていなければ、そのままステップS201の処理に戻る。
フロントエンドサーバとして指定されているビデオゲーム装置100からゲーム情報を受信していなければ、制御部103は、入力部161からプレイヤキャラクタの移動位置を指定する入力がされたかどうかを判定する(ステップS212)。プレイヤキャラクタの移動位置を指定する入力がされていれば、制御部103は、該入力された位置をRAM105に保存する(ステップS213)。そして、ステップS214の処理に進む。プレイヤキャラクタの移動位置を指定する入力がされていなければ、そのままステップS214の処理に進む。
ステップS214では、制御部103は、プレイヤキャラクタの移動位置としてRAM105に保存されている位置とプレイヤキャラクタの現在のマップ上の位置とが同じであるかどうかを判定する。保存されている位置と現在の位置が異なれば、制御部103は、保存されている位置に向けて、プレイヤキャラクタを所定量だけ移動させる(ステップS215)。そして、ステップS216の処理に進む。保存されている位置と現在の位置が同じであるか、プレイヤキャラクタの移動位置そのものが保存されていなければ、そのままステップS216の処理に進む。
ステップS216では、制御部103は、自分のプレイヤキャラクタの現在の位置、フロントエンドサーバとして指定されてる他のビデオゲーム装置100から受信したゲーム情報により示される他のキャラクタ(他のプレイヤのプレイヤキャラクタ及びノンプレイヤキャラクタ)の位置に基づいて、プレイヤキャラクタがとるべき戦闘行動(何もしない場合もあり)を決定する。制御部103は、プレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を、フロントエンドサーバとして指定されている他のビデオゲーム装置100に送信する(ステップS217)。そして、ステップS201の処理に戻る。
ステップS201でフロントエンドサーバに指定する旨の指示を受信していれば、制御部103は、当該指示とともにサーバ装置200から送られてきた当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報をRAM105に保存する(ステップS218)。次に、制御部103は、ステップS135でサーバ装置200から送信されたフロントエンドサーバの指定を解除する旨の指示を受信したかどうかを判定する(ステップS219)。
フロントエンドサーバの指定を解除する旨の指示を受信していなければ、制御部103は、ステップS120で同じビデオゲーム装置群に属する他のビデオゲーム装置100から送信されたログアウト要求した(すなわち、ゲームの参加の停止を要求した)ビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップ220)。ゲームの参加の停止を要求したビデオゲーム装置100を特定可能な情報を受信していれば、制御部103は、当該参加の停止を要求したビデオゲーム装置100に関する情報をRAM105から消去する(ステップS221)。そして、ステップS219の処理に戻る。
参加の停止を要求したビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS113、S125またはS145でサーバ装置200から送信されたゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS222)。ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信した場合には、制御部103は、当該ゲームを閲覧するビデオゲーム装置100に関する情報をRAM105に保存する(ステップS223)。そして、ステップS219の処理に戻る。
ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS127でサーバ装置200から送信されたゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS224)。ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していた場合には、制御部103は、ゲームを閲覧するものしてRAM105に保存されている当該ビデオゲーム装置100に関する情報を消去する(ステップS225)。そして、ステップS219の処理に戻る。
ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS148でサーバ装置200から送信されたゲーム制御情報を受信したかどうかを判定する(ステップS226)。ゲーム制御情報を受信していれば、ステップS233の処理に進む。
ゲーム制御情報を受信していなければ、制御部103は、ステップS217で同じビデオゲーム装置群に属する他のビデオゲーム装置100から送信された当該プレイヤのプレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を受信したかどうかを判定する(ステップS227)。当該プレイヤのプレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を受信していれば、ステップS233の処理に進む。
当該プレイヤのプレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を受信していなければ、制御部103は、入力部161からプレイヤキャラクタの移動位置を指定する入力がされたかどうかを判定する(ステップS228)。プレイヤキャラクタの移動位置を指定する入力がされていれば、制御部103は、該入力された位置をRAM105に保存する(ステップS229)。そして、ステップS230の処理に進む。プレイヤキャラクタの移動位置を指定する入力がされていなければ、そのままステップS230の処理に進む。
ステップS230では、制御部103は、プレイヤキャラクタの移動位置としてRAM105に保存されている位置とプレイヤキャラクタの現在のマップ上の位置とが同じであるかどうかを判定する。保存されている位置と現在の位置が異なれば、制御部103は、保存されている位置に向けて、プレイヤキャラクタを所定量だけ移動させる(ステップS231)。そして、ステップS232の処理に進む。保存されている位置と現在の位置が同じであるか、プレイヤキャラクタの移動位置そのものが保存されていなければ、そのままステップS232の処理に進む。
ステップS232では、制御部103は、自分のプレイヤキャラクタの現在の位置、フロントエンドサーバとして指定されている他のビデオゲーム装置100から受信したゲーム情報により示される他のキャラクタ(他のプレイヤのプレイヤキャラクタ及びノンプレイヤキャラクタ)の位置に基づいて、プレイヤキャラクタがとるべき戦闘行動(何もしない場合もあり)を決定する。そして、ステップS233の処理に進む。
ステップS233では、制御部103は、入力部161からの入力に基づいて決定された自己のプレイヤキャラクタの位置と戦闘行動、他の各プレイヤのビデオゲーム装置100から受信した情報が示すプレイヤキャラクタの位置と戦闘行動、及びサーバ装置200から受信したゲーム制御情報に従って、ノンプレイヤキャラクタの動作を決定する。
次に、制御部103は、入力部161からの入力に基づいて決定された自己のプレイヤキャラクタの位置と戦闘行動、他の各プレイヤのビデオゲーム装置100から受信した情報が示すプレイヤキャラクタの位置と戦闘行動、並びにノンプレイヤキャラクタについて決定した動作を示すゲーム情報を、サーバ装置200に送信する(ステップS234)。制御部103は、また、このゲーム情報を、同じビデオゲーム装置群に属する他のビデオゲーム装置100にも送信する(ステップS235)。
さらに、制御部103は、入力部161からの入力に基づいて決定された自己のプレイヤキャラクタの位置と戦闘行動、他の各プレイヤのビデオゲーム装置100から受信した情報が示すプレイヤキャラクタの位置と戦闘行動、並びにノンプレイヤキャラクタについて決定した動作に従って各プレイヤキャラクタ及びノンプレイヤキャラクタを動作させ、表示画面122に表示させる(ステップS236)。
その後、制御部103は、ゲームを閲覧するだけのビデオゲーム装置100に関する情報がRAM105に保存されているかどうかを判定する(ステップS237)。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていれば、制御部103は、当該情報が示す他のビデオゲーム装置100にゲーム情報を送信する(ステップS238)。そして、ステップS219の処理に戻る。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていなければ、そのままステップS219の処理に戻る。
ステップS219でフロントエンドサーバの指定を解除する旨の指示を受信していれば、制御部103は、ステップS218でRAM105に保存した当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報を消去する(ステップS239)。そして、ステップS202の処理に進むものとなる。
一方、ゲームを閲覧するだけのビデオゲーム装置100(143、153、…)では、参加/閲覧の別として閲覧を指定し、さらにゲームを閲覧する戦闘区を指定してサーバ装置200にログインする。ゲームを閲覧するだけのビデオゲーム装置100は、サーバ装置200にログインすると、ステップS126で送信されたゲームを閲覧するために接続されるビデオゲーム装置100(141、142、151、152、…)を特定可能な情報がサーバ装置200から送られてくるので、これをRAM205などに登録しておく。
ゲームを閲覧するだけのビデオゲーム装置100は、ステップS210でゲームを閲覧するために接続されるビデオゲーム装置100から送信されたゲーム情報を受信すると、受信したゲーム情報に従って各プレイヤキャラクタ及びノンプレイヤキャラクタを動作させ、表示画面122に表示させる。また、ゲームの閲覧を停止するときには、サーバ装置200に対してログアウトを要求することができる。
以上説明したように、この実施の形態にかかるネットワークゲームでは、複数のプレイヤが自己のビデオゲーム装置100の入力部161を操作してゲームに参加し、サーバ装置200においてゲームの全体の進行が管理されるものとなっている。より具体的には、サーバ装置200は、ネットワークゲームのサービスを利用可能な各ビデオゲーム装置100の接続状況を管理するための接続情報テーブル310と、現時点でゲームに参加している各ビデオゲーム装置100におけるゲームの進行状況を管理するためのゲーム進行テーブル320を有していて、複数のプレイヤの参加によって進行するゲームの全体を一元的に管理するものとなっている。
もっとも、サーバ装置200は、ゲームに参加している各ビデオゲーム装置100と直接的に情報を交換したり、ノンプレイヤキャラクタの動作を決定したりすることはない。ゲームは、戦闘区毎に進行されるものとなっているが、サーバ装置200は、戦闘区毎に(ビデオゲーム装置群140、150、…毎に)、何れか1つのビデオゲーム装置をフロントエンドサーバとなるビデオゲーム装置141として指定するものとしている。
各戦闘区におけるゲームを進行するための処理のうちでノンプレイヤキャラクタの動作の決定や、各プレイヤキャラクタのパラメータの変化値の算出は、戦闘区毎に設定されたビデオゲーム装置群140、150、…のうちでフロントエンドサーバとして指定されたビデオゲーム装置141、151、…が行うものとしている。また、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信も、フロントエンドサーバとして指定されたビデオゲーム装置141が制御するものとしている。サーバ装置200は、これらの処理を行う必要が全くない。このため、サーバ装置200に多大な処理負荷をかけることなく、複数のプレイヤが各自のビデオゲーム装置100から参加するネットワークゲームを実現することができるものとなる。
また、サーバ装置200は、各プレイヤによるゲームの進行状況を管理するためには、各々のビデオゲーム装置100で行われているゲームの進行状況に関する情報を収集する必要があるが、このような情報をサーバ装置200に送信するのも、ビデオゲーム装置群140、150、…のうちでフロントエンドサーバとして指定されたビデオゲーム装置141、151、…だけである。このため、ゲームの進行状況に関する情報を各ビデオゲーム装置100から個別にサーバ装置200に送信するよりも、通信トラフィックを軽減することができ、また、ネットワークやサーバ装置200にかかる処理負荷を軽減することができる。
また、フロントエンドサーバとして指定されたビデオゲーム装置141、151、…は、ノンプレイヤキャラクタの動作の決定や各プレイヤキャラクタのパラメータの変化値の算出、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信の制御、サーバ装置200へのゲームの進行状況に関する情報の送信の何れも行うものとしている。このため、サーバ装置200は、ビデオゲーム装置群140、150、…に属するビデオゲーム装置140のうちから何れかを容易に指定することができる。
さらに、ビデオゲーム装置群140、150、…に属する複数のビデオゲーム装置のうちでフロントエンドサーバとして指定されるビデオゲーム装置141は、所定時間毎に変更されるものとなっている。このため、ある時点でフロントエンドサーバとして指定されているビデオゲーム装置141に不正アクセスし、ゲームにおける不正行為を行った者がいたとしても、それとは別のビデオゲーム装置が新たにフロントエンドサーバとして指定されれば、そのような不正行為が無駄なものとなってしまう。このため、ゲームにおける不正行為がされるのを防止することができる。
また、フロントエンドサーバとして指定されていたビデオゲーム装置141のプレイヤがゲームから離脱してしまい、フロントエンドサーバとして必要な処理が実行されなくなったことがあったとしても、それとは別のビデオゲーム装置が新たにフロントエンドサーバとして指定されれば、当該新たにフロントエンドサーバとして指定されたビデオゲーム装置141によってフロントエンドサーバとして指定されたビデオゲーム装置141、151、…は、ノンプレイヤキャラクタの動作の決定や各プレイヤキャラクタのパラメータの変化値の算出、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信の制御、サーバ装置200へのゲームの進行状況に関する情報の送信が行われるものとなる。
このため、フロントエンドサーバとして指定されていたビデオゲーム装置141のプレイヤがゲームから離脱してしまっても、長期間に亘ってゲームの進行に障害が生じることはない。また、自己のビデオゲーム装置100がフロントエンドサーバとして指定されてしまったことで、プレイヤがゲームに参加し続けることを事実上強いられてしまうということも起こらないので、各ビデオゲーム装置100のプレイヤは、任意にゲームに参加/離脱することができるものとなる。
また、サーバ装置200は、ビデオゲーム装置群140、150、…毎に、フロントエンドサーバとなるビデオゲーム装置141、151、…から最後に情報を受信した(或いは、フロントエンドサーバとして指定した)日時321を管理しており、この日時321から一定期間を経過しても新たな情報を受信していなければ、現時点でフロントエンドサーバとして指定しているビデオゲーム装置141、151、…との接続が切断されたものと判断している。
このような場合においてサーバ装置200は、当該ビデオゲーム装置群140、150、…に属する他のビデオゲーム装置142、152、…のうちから任意のビデオゲーム装置を選択して新たなフロントエンドサーバとして指定するものとしている。そして、新たなフロントエンドサーバが指定されると、当該フロントエンドサーバに指定されたビデオゲーム装置141、151、…が直ちにゲームを進行させるために必要な処理を行うため、ゲームを進行させるための処理が行われない空白期間をさらに小さくすることができ、長期間に亘ってゲームの進行に障害が生じることを防ぐことができる。
さらに、この実施の形態にかかるネットワークゲームでは、戦闘区毎に行われているゲームに積極的に参加したい訳ではないが、他のプレイヤが行っているゲームを閲覧したいという者がいる場合には、その者のビデオゲーム装置143、153、…をビデオゲーム装置群140、150、…に属する任意のビデオゲーム装置に141、142、151、152、…に接続させ、そこからゲームの進行情報に関する情報が送られてくるものとしている。
このように他のプレイヤが行っているゲームを閲覧したい者がいる場合に、サーバ装置200は、その者のビデオゲーム装置143、153、…にゲームの進行状況に関する情報を送信する処理からも解放されることとなるので、さらにサーバ装置200の処理負荷を軽減することができる。特定の戦闘区においてゲームを閲覧したい者が多数いる場合であっても、それらの者のビデオゲーム装置143、153、…が接続されるビデオゲーム装置141、142、151、152、…を分散させることができるので、ゲームを閲覧だけさせるためにビデオゲーム装置群140、150、…に属する各ビデオゲーム装置141、142、151、152、…にかかる処理が大きくなりすぎてしまうことはない。
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
上記の実施の形態では、サーバ装置200は、ビデオゲーム装置群140、150、…毎にフロントエンドサーバとして指定するビデオゲーム装置141、151、…を所定時間毎に変更するものとしていた。もっとも、フロントエンドサーバの指定を変える時間間隔は、固定のものとするのではなく、個々のビデオゲーム装置100にかかる処理負荷を考慮して変更するものとしてもよい。例えば、ビデオゲーム装置群140、150、…に属するビデオゲーム装置141、142、151、152、…の数に応じて、フロントエンドサーバとして指定するビデオゲーム装置141、151、…を変更するものとしてもよい。
また、サーバ装置200がビデオゲーム装置群140、150、…毎のフロントエンドサーバの指定を変える契機は、このような所定時間の到来というものに限るものではなく、例えば、当該戦闘区でのゲームにおいて所定のイベント(但し、上記の所定時間と同等の時間間隔で発生することが期待されるもの)が生じたこととしてもよい。また、新たなフロントエンドサーバの選択は、ゲーム進行テーブル320に登録された順番で行うものとしても、ランダムに決めるものとしてもよい。ビデオゲーム装置100毎に処理能力に差があり、サーバ装置200がその差を認識できるのであれば、その処理能力の違いに応じて重み付けをして決定するものとしてもよい。
上記の実施の形態では、各プレイヤキャラクタは、対応するビデオゲーム装置100の入力部161からの入力に従って移動し、対応するビデオゲーム装置100で実行されるAIルーチンで戦闘行動が決められるものとなっていたが、戦闘区内のプレイヤキャラクタの動作の決定も、フロントエンドサーバに指定されたビデオゲーム装置141、151、…で集中して行うものとしてもよい。この場合、フロントエンドサーバ以外のビデオゲーム装置142、152、…は、プレイヤによって入力部161からどのような入力がされたかを示す情報をフロントエンドサーバとなるビデオゲーム装置141、151、…に送り、そこで決定された動作を示す情報を受け取るものとしてもよい。
上記の実施の形態では、フロントエンドサーバに指定されたビデオゲーム装置141、151、…は、ノンプレイヤキャラクタの動作の決定、各プレイヤキャラクタのパラメータの変化値の算出、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信、各々のビデオゲーム装置100で行われているゲームの進行状況に関する情報のサーバ装置200への送信の全てを、1台で制御するものとしていた。
しかしながら、これらの複数種類の処理を、ビデオゲーム装置群140、150、…に属するビデオゲーム装置141、142、151、152、…のうちの2以上のビデオゲーム装置で分散して行うものとしてもよい。例えば、ノンプレイヤキャラクタの動作の決定、各プレイヤキャラクタのパラメータの変化値の算出は、第1のビデオゲーム装置が行うが、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信や、各々のビデオゲーム装置100で行われているゲームの進行状況に関する情報のサーバ装置200への送信は、第2のビデオゲーム装置で行うものとしてもよい。サーバ装置200は、これらの処理のうちでどの処理をどのビデオゲーム装置に行わせるかを、個別に指定するものとしてもよい。
上記の実施の形態では、戦闘区毎のノンプレイヤキャラクタの動作の決定は、ビデオゲーム装置群140、150、…においてフロントエンドサーバとして指定されたビデオゲーム装置141、151、…が1台で行うものとしていた。これに対して、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100のうちの2台以上で分散して、ノンプレイヤキャラクタの動作を決定するものとしてもよい。2台以上に分散して行うものとする場合、サーバ装置200は、どのノンプレイヤキャラクタの動作を決定させるかまでを決定するものとすることができる。
この場合、戦闘区において登場するノンプレイヤキャラクタの数が非常に多く、ノンプレイヤキャラクタの動作の決定のための処理負荷が比較的大きなものであっても、2以上のビデオゲーム装置100で分散して行えばよいので、1台のビデオゲーム装置100にかかる処理負荷が過大にならないで済むようになる。
上記の実施の形態では、他のプレイヤが行っているゲームを閲覧したい者のビデオゲーム装置143、153、…は、フロントエンドサーバに指定されているかどうかに関わらずに指定した戦闘区のビデオゲーム装置群140、150、…に属するビデオゲーム装置141、142、151、152、…に接続されるものとしていた。もっとも、フロントエンドサーバとして指定されたビデオゲーム装置141、151、…は、それ以外のビデオゲーム装置142、152、…よりも処理負荷が大きいので、ここにゲームを閲覧したい者のビデオゲーム装置143、153、…が接続されるとさらに処理負荷が大きくなってしまう。
そこで、他のプレイヤが行っているゲームを閲覧したい者のビデオゲーム装置143、153、…は、フロントエンドサーバとして指定されていないビデオゲーム装置142、153、…だけに接続されるものとしてもよい。新たにフロントエンドサーバとなるビデオゲーム装置141、151、…を指定した場合には、サーバ装置200は、これに接続されていたゲームを閲覧したい者のビデオゲーム装置143、153、…に対して、別のビデオゲーム装置142、152、…を指定して接続させるものとしてもよい。
このようにビデオゲーム装置群140、150、…に属するビデオゲーム装置のうちでフロントエンドサーバとして指定されていないビデオゲーム装置142、152、…は、フロントエンドサーバとして指定されているビデオゲーム装置141、151、…に比べて処理負荷が軽いので、このようなビデオゲーム装置142、152、…にビデオゲーム装置143、153、…を接続させることによって、非常に多くの者に対してゲームを閲覧させることができるようになる。
上記の実施の形態では、サーバ装置200は、フロントエンドサーバとして指定したビデオゲーム装置100からの情報の受信を監視しており、所定期間何らの情報も受信されていなければ、これを強制的にログアウトさせるものとしていた。しかし、フロントエンドサーバとして指定されていないものについては、このようなことが行われないので、ゲームへの参加や閲覧を止めていても、強制的にログアウトされることはなかった。
そこで、フロントエンドサーバとして指定されているビデオゲーム装置100以外にゲームに参加するビデオゲーム装置100については、フロントエンドサーバとして指定されたビデオゲーム装置100において情報の受信を監視するものとしてもよい。フロントエンドサーバとして指定されたビデオゲーム装置100が一定期間以上、プレイヤキャラクタの位置と戦闘行動を示す情報を受信していないビデオゲーム装置100があったならば、その旨をフロントエンドサーバとなるビデオゲーム装置100からサーバ装置200に通知し、強制的にログアウトさせるものとしてもよい。
また、ゲームを閲覧するだけのビデオゲーム装置100については、閲覧先とされているビデオゲーム装置100が定期的に情報の送信を要求し、所定回数を超えて応答のなかったビデオゲーム装置100をフロントエンドサーバを介してサーバ装置200に通知するものとしてもよい。サーバ装置200は、その通知に基づいて、ゲームを閲覧するだけのビデオゲーム装置100も強制的にログアウトさせるものとすることができる。
上記の実施の形態では、ゲームに参加するプレイヤがログイン時に戦闘区を決めると、以下、当該プレイヤのプレイヤキャラクタは、ログアウトするまで同じ戦闘区でゲームを行うことを前提として説明していた。もっとも、プレイヤキャラクタは、ゲーム中に戦闘区を移動できるものとしてもよい。例えば、各戦闘区のマップの周囲に、他の戦闘区のマップの一部を周辺領域として付加しておく。プレイヤがプレイヤキャラクタの移動位置として周辺領域を指定した場合には、当該プレイヤのビデオゲーム装置100を指定した周辺領域内の位置が本来属する戦闘区におけるビデオゲーム装置群に移行させるものとしてもよい。
具体的に説明すると、戦闘区Aのマップ上に戦闘区Bのマップの一部が周辺領域として付加され、戦闘区Bのマップに戦闘区Aのマップの一部が周辺領域として付加されているものとする。戦闘区Aでのゲームに参加するプレイヤは、戦闘区Bのマップに周辺領域となっている範囲に自己のプレイヤキャラクタが存在するときに、戦闘区Bの範囲内の位置(戦闘区Aのマップに周辺領域として付加されている領域)もプレイヤキャラクタの移動位置として指定することができるものとする。
そのビデオゲーム装置100がフロントエンドサーバとして指定されているものであれば、戦闘区Bの範囲内の位置がプレイヤキャラクタの移動位置として指定されたことを直接サーバ装置200に通知し、フロントエンドサーバとして指定されているものでなければ、戦闘区Bの範囲内の位置がプレイヤキャラクタの移動位置として指定されたビデオゲーム装置100に関する情報をサーバ装置200に通知するものとすればよい。
サーバ装置200は、これらの通知がされると、対応するビデオゲーム装置100について接続状況テーブル310に登録されている戦闘区区分316を書き換えるとともに、新たな戦闘区においてフロントエンドサーバとして指定されているビデオゲーム装置100に、新たな戦闘区に移動してゲームに参加するビデオゲーム装置100に関する情報を送信するものとすればよい。また、新たな戦闘区に移動してゲームに参加するビデオゲーム装置100に対して、当該戦闘区において現時点で指定されているビデオゲーム装置100に関する情報を送信するものとすればよい。
さらに、新たな戦闘区に移動してゲームに参加しようとするビデオゲーム装置100が、これまでの戦闘区でのゲームにおいてフロントエンドサーバとして指定されていたのであれば、これまでの戦闘区でゲームを行っている他のビデオゲーム装置100を当該戦闘区における新たなフロントエンドサーバとして選択するものとすればよい。また、新たな戦闘区に移動してゲームに参加しようとするビデオゲーム装置100を閲覧先としてゲームを閲覧していたビデオゲーム装置100には、当該戦闘区のゲームに参加している他のビデオゲーム装置100を新たな閲覧先として通知するものとすればよい。
このような処理により、各ビデオゲーム装置100のプレイヤは、戦闘区という区分を意識することなく、広いゲーム空間内で自由に自己のプレイヤキャラクタを移動させて、ゲームを行えるようになる。
上記の実施の形態では、サーバ装置200は、1台でネットワークゲームのサービスを利用可能な全てのビデオゲーム装置100の接続状況を管理し、戦闘区毎(ビデオゲーム装置群140、150、…毎)のゲームの進行を管理するものとしていたが、複数のサーバ装置によってサーバ装置群を形成し、これらの処理を別個のサーバ装置に分散して行うものとしてもよい。ゲームの進行は、戦闘区毎に(ビデオゲーム装置群140、150、…毎に)別のサーバ装置を用いて制御するものとしてもよい。
上記の実施の形態では、ゲームに参加するプレイヤは、戦闘区と所属チームとを指定し、後はプレイヤキャラクタの移動位置を自動的に指定していくだけでゲームが進行していくシミュレーションゲームを例として説明した。もっとも、本発明は、ロールプレイングゲーム等の他のジャンルのゲームに対しても適用することができる。また、プレイヤキャラクタのチーム同士で対戦するのではなく、プレイヤキャラクタ対ノンプレイヤキャラクタという形で対戦を行うゲームにも、本発明を適用することができる。
上記の実施の形態では、ビデオゲームを実行するプラットフォームとなる装置としてゲーム専用機であるビデオゲーム装置100を適用していた。これに対して、本発明は、ビデオゲーム装置100と同様の構成要素を備え、ネットワーク接続機能を有するものであれば、汎用のパーソナルコンピュータなどをプラットフォームとして実現されるものとしてもよい。表示装置121及びサウンド出力装置125を装置本体101と同一の筐体内に納めた構成を有する携帯ゲーム機(アプリケーションの実行機能を有する携帯電話機を含む)を適用するものとしてもよい。
記録媒体131としては、DVD−ROMやCD−ROMの代わりに半導体メモリーカードを適用することができる。このメモリーカードを挿入するためのカードスロットをDVD/CD−ROMドライブ113の代わりに設けることができる。汎用のパーソナルコンピュータの場合には、本発明に係るプログラム及びデータを記録媒体131に格納して提供するのではなく、HDD107に予め格納して提供してもよい。本発明にかかるプログラム及びデータを格納して提供するための記録媒体は、ハードウェアの物理的形態及び流通形態に応じて任意のものを適用することができる。
上記の実施の形態では、ビデオゲーム装置100のプログラム及びデータは、記録媒体131に格納されて配布されるものとしていた。これに対して、これらのプログラム及びデータをネットワーク上に存在するサーバ装置が有する固定ディスク装置に格納しておき、装置本体101にネットワークを介して配信するものとしてもよい。ビデオゲーム装置100において、通信インターフェイス115がサーバ装置から受信したプログラム及びデータは、HDD107に保存し、実行時にRAM105にロードすることができる。サーバ装置200のプログラム及びデータについても同様である。