ネットワークゲームシステム、及びプログラム
【課題】ネットワークゲーム全体の進行を管理するサーバ装置に多大な負荷をかけることなく、複数のプレイヤがネットワークゲームに参加できる。
【解決手段】戦闘区毎に区切られてゲームが行われるが、同じ戦闘区でゲームを行うビデオゲーム装置でビデオゲーム装置群140、150、…を形成する。サーバ装置200は、ビデオゲーム装置群140、150、…に属するビデオゲーム装置のうちから何れかをフロントエンドサーバに指定する。フロントエンドサーバに指定されたビデオゲーム装置が、ノンプレイヤキャラクタの動作の決定や各プレイヤキャラクタのパラメータの変化値の算出、同じビデオゲーム装置群140、150、…に属するビデオゲーム装置間でのゲームの進行に関する情報の送受信を一元的に制御する。戦闘区毎のゲームの進行状況に関する情報のサーバ装置200への送信も、一元的に行う。フロントエンドサーバの指定は、所定時間毎に変更される。
【解決手段】戦闘区毎に区切られてゲームが行われるが、同じ戦闘区でゲームを行うビデオゲーム装置でビデオゲーム装置群140、150、…を形成する。サーバ装置200は、ビデオゲーム装置群140、150、…に属するビデオゲーム装置のうちから何れかをフロントエンドサーバに指定する。フロントエンドサーバに指定されたビデオゲーム装置が、ノンプレイヤキャラクタの動作の決定や各プレイヤキャラクタのパラメータの変化値の算出、同じビデオゲーム装置群140、150、…に属するビデオゲーム装置間でのゲームの進行に関する情報の送受信を一元的に制御する。戦闘区毎のゲームの進行状況に関する情報のサーバ装置200への送信も、一元的に行う。フロントエンドサーバの指定は、所定時間毎に変更される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のプレイヤが参加してゲームが進行するネットワークゲームに関するものである。
【背景技術】
【0002】
近年のネットワーク技術の進歩に伴い、複数のプレイヤが参加してゲームが進行するネットワークゲーム(オンラインゲーム)が盛んに行われるようになってきている。ネットワークゲームを行うためのシステムは、ネットワークゲームを運営する者が管理するサーバ装置と、このサーバ装置にインターネットなどのネットワークを介して接続可能な各プレイヤのクライアント装置とから構成されるものとなっている。
【0003】
ネットワークゲームでも、プレイヤは、プレイヤキャラクタに対する指示をビデオゲーム装置等のクライアント装置において入力装置から入力し、これに従ってゲームを進行するものとなっている。もっとも、ネットワークゲームは、一人のプレイヤだけでゲームを進行させるものではなく、他のプレイヤのプレイヤキャラクタも登場してゲームを進行させるものとなっている。さらに、何れのプレイヤのプレイヤキャラクタでもないノンプレイヤキャラクタがゲームの進行において登場するネットワークゲームもある。これらは、何れのプレイヤのクライアント装置においても同様に動作するものでなければならない。
【0004】
つまり、多数のプレイヤのプレイヤキャラクタの動作やノンプレイヤキャラクタの動作が、矛盾しないように各プレイヤのクライアント装置に通知される必要があるため、従来のネットワークゲームでは、プレイヤキャラクタの動作に関する指示が全てのクライアント装置からサーバ装置に集められ、ノンプレイヤキャラクタの動作の決定などのゲームの進行のために必要な処理をサーバ装置がまとめて行い、その処理結果に応じた情報を各クライアント装置に配信するものとしていた(例えば、特許文献1参照)。
【0005】
【特許文献1】特開2003−325984号公報(段落0059、0060等)
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1のように、ゲームを進行するための処理をサーバ装置が全て行わなければならないものとすると、サーバ装置にかかる処理負荷が大きくなってしまうという問題があった。特に、複数のプレイヤキャラクタの動作がゲームの進行に相互に影響し合うようなゲームであると、プレイヤの増加に対して、サーバ装置の処理の計算量が2乗以上のオーダーで増加してしまうこともあった。
【0007】
さらに、各プレイヤキャラクタの動作がノンプレイヤキャラクタの動作に影響を与えたり、各ノンプレイヤキャラクタの動作が各プレイヤキャラクタや他のノンプレイヤキャラクタの動作に影響を与えたりするものであると、全体としてのキャラクタの数に対する計算量の増加が顕著になってしまうという問題があった。この問題を解決するには、サーバ装置の処理能力を高めるか、プレイヤキャラクタやノンプレイヤキャラクタの数を制限するということが考えられるが、前者の場合にはコストがかかり、後者の場合にはネットワークゲームとしての面白味を半減させてしまうという問題があった。
【0008】
また、ネットワークゲームは、一般に、不特定多数の者が参加するものであるため、ネットワークゲームをプレイするプレイヤの中には、例えば、サーバ装置に不正アクセスするなどしてゲームにおける不正行為をするものが存在する場合もある。このような者の存在は、他の多くのプレイヤに迷惑をかけてしまうこととなるので、多くの人にゲームを楽しんで貰おうとするならば、不正を行う者を早急に排除する必要がある。ネットワークゲームの運営者にとっては、そのための管理コストも馬鹿にならないという問題があった。
【0009】
本発明は、ネットワークゲーム全体の進行を管理するサーバ装置に多大な負荷をかけることなく、複数のプレイヤがネットワークゲームに参加することのできるネットワークゲームシステム等を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明の第1の観点にかかるネットワークゲームシステムは、サーバ装置と、各々が所定のネットワークを介して該サーバ装置に接続可能であると共に、前記サーバ装置を介することなく前記所定のネットワークを介して互いに接続可能な複数のクライアント装置から構成されるクライアント群とを備えるネットワークゲームシステムであって、前記サーバ装置は、前記複数のクライアント装置の各々の接続状況を管理する接続状況管理手段と、前記複数のクライアント装置の各々におけるゲームの進行状況を管理するゲーム進行状況管理手段と、前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、ゲームを進行するための処理のうちの所定の処理を実行するための実行クライアントとして指定し、該実行クライアントの指定に関する情報を、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する実行クライアント指定手段と、前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、該クライアント群におけるゲームの進行に関する情報をやりとりするための管理クライアントとして指定し、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する管理クライアント指定手段と、前記管理クライアント指定手段により指定した前記管理クライアントから前記クライアント群におけるゲーム進行情報を受信する対クライアント群受信手段と、前記対クライアント群受信手段により受信されたゲーム進行情報に基づいて、前記ゲーム進行状況管理手段により管理されている前記複数のクライアント装置の各々におけるゲームの進行状況を更新するゲーム進行状況更新手段とを備え、前記複数のクライアント装置は、それぞれ、プレイヤの操作により、ゲームを進行するための所定の入力を行う入力手段と、前記実行クライアント指定手段により前記実行クライアントとして指定されたときに、前記所定の処理を実行する所定処理実行手段と、前記クライアント群に属する各クライアント装置についての前記入力手段からの入力に応じたゲーム入力情報と、前記所定処理実行手段による前記所定の処理の実行に応じたゲーム実行情報とに応じたクライアント群内ゲーム情報を、前記クライアント群に属する他のクライアント装置との間で前記所定のネットワークを介して互いに送受信するクライアント群内送受信手段と、前記管理クライアント指定手段により前記管理クライアントとして指定されたときに、前記クライアント群に属する各クライアント装置についての前記ゲーム入力情報と前記ゲーム実行情報とに応じた前記ゲーム進行情報を前記所定のネットワークを介して前記サーバ装置に送信するクライアント群外送信手段とを備え、前記実行クライアント指定手段は、所定の契機毎に、前記クライアント群に属する複数のクライアント装置のうちで前記実行クライアントとして指定するクライアント装置を変更することを特徴とする。
【0011】
上記ネットワークゲームシステムは、複数のクライアント装置を含んでおり、各クライアント装置のプレイヤは、その操作により入力手段から所定の入力を行うことによってゲームを進行することができる。また、上記ネットワークゲームシステムは、サーバ装置を含んでおり、各クライアント装置の各々の接続状況とゲームの進行状況がサーバ装置において管理されているので、複数のプレイヤの参加によって進行するゲームの全体がサーバ装置において一元的に管理されるものとなっている。
【0012】
もっとも、ゲームを実際に進行する際には、複数のクライアント装置により構成されるクライアント群の中から任意のクライアント装置が実行クライアントとしてサーバ装置によって指定される。ゲームを進行するための処理のうちの所定の処理は、実行クライアントとして指定されたクライアント装置において行われる。また、ゲーム入力情報、ゲーム実行情報などのクライアント群内ゲーム情報は、クライアント群に属するクライアント装置同士で送受信される。このため、サーバ装置に多大な処理負荷をかけることなく、複数のプレイヤが各自のクライアント装置から参加するゲームを実現することができるものとなる。
【0013】
また、ゲームを実際に進行する際には、複数のクライアント装置により構成されるクライアント群の中から任意のクライアント装置が管理クライアントとしてサーバ装置によって指定される。ゲームの進行状況をサーバ装置において一元管理するためには、ゲーム進行情報をサーバ装置に送る必要があるが、これは、管理クライアントからまとめてサーバ装置に送られるため、このような情報を複数のクライアント装置の各々から送信する場合よりも通信トラフィックを軽減することができ、また、サーバ装置の処理負荷も軽減することができる。
【0014】
さらに、クライアント群に属する複数のクライアント装置のうちで実行クライアントとして指定されるクライアント装置は、所定の期間毎に変更されるものとなっている。このため、ある時点の実行クライアントに不正アクセスしてゲームにおける不正行為が行われることがあったとしても、新たに所定の期間が到来して別のクライアント装置が実行クライアントとして指定されてしまえば、不正行為を働いたことが無駄になってしまう。このため、ゲームにおける不正行為がされるのを防止することができる。
【0015】
さらに、実行クライアントとして指定されていたクライアント装置がゲームから離脱して所定の処理が実行されなくなってしまっても、新たに所定の期間が到来して別のクライアント装置が実行クライアントとして指定されれば、当該新たに実行クライアントとして指定されたクライアント装置によって所定の処理を実行して、ゲームを進行させることができるものとなる。このため、実行クライアントとして指定されたクライアント装置がゲームから離脱してしまっても、長期間に亘ってゲームの進行に障害が生じることはない。また、実行クライアントとして指定されたクライアント装置のプレイヤがゲームに参加し続けることを強いられることがなく、各クライアント装置のプレイヤは、任意にゲームに参加/離脱することができるものとなる。
【0016】
なお、前記サーバ装置は、単体のコンピュータ装置により構成されるものだけではなく、複数のコンピュータ装置からなるコンピュータ装置群によって構成されるものであってもよい。また、前記実行クライアント指定手段が実行クライアントの指定を変更する所定の契機は、所定の期間が到来することとしてもよい。この所定の期間は、固定の期間であってもよいし、可変の期間であってもよい。
【0017】
上記ネットワークゲームシステムにおいて、前記実行クライアント指定手段が前記実行クライアントとして指定するクライアント装置と、前記管理クライアント指定手段が前記管理クライアントとして指定するクライアント装置は、同一のクライアント装置であってもよい。
【0018】
この場合、サーバ装置は、クライアント群に属する複数のクライアント装置のうちから実行クライアントと管理クライアントとを別々に指定しなくてもよいので、クライアント装置の指定の処理が容易になる。
【0019】
上記ネットワークゲームシステムにおいて、前記実行クライアント指定手段は、前記クライアント群に属する複数のクライアント装置のうちの2以上のクライアント装置を前記実行クライアントとして指定する複数指定手段を含むものとすることができる。
【0020】
この場合、ゲームを進行させるための所定の処理の処理負荷が比較的大きなものであっても、その所定の処理を実行クライアントとして指定された2以上のクライアント装置で分散して行えばよいので、1台のクライアント装置にかかる処理負荷だけが大きくなり過ぎずに済むものとなる。
【0021】
上記ネットワークゲームシステムにおいて、前記サーバ装置は、前記クライアント群に属する複数のクライアント装置のうちで少なくとも前記実行クライアントとして指定しているクライアント装置との通信が切断されたかどうかを判定する切断判定手段をさらに備えていてもよい。この場合において、前記実行クライアント指定手段は、前記実行クライアントとして指定しているクライアント装置との通信が切断されたと前記切断判定手段により判定されたときに、前記クライアント群に属する他のクライアント装置を前記指定クライアントとして指定するものとすることができる。
【0022】
この場合は、実行クライアントとして指定しているクライアント装置との通信が切断されたと判定されると、直ちに新たなクライアント装置が実行クライアントとして指定されるので、ゲームを進行させるための所定の処理が行われない空白期間をさらに小さくすることができ、長期間に亘ってゲームの進行に障害が生じることはない。
【0023】
上記ネットワークゲームシステムは、前記サーバ装置を介することなく前記所定のネットワークを介して前記クライアント群に属する任意のクライアント装置に接続可能な群外クライアント装置をさらに含んでいてもよい。この場合において、前記複数のクライアント装置は、それぞれ、前記クライアント群に属さない他のクライアント装置に前記クライアント群内ゲーム情報を送信するクライアント群外送信手段をさらに備えるものとすることができ、前記群外クライアント装置は、前記クライアント群外送信手段から送信されたクライアント群内ゲーム情報を受信するクライアント群内ゲーム情報受信手段と、前記クライアント群内ゲーム情報受信手段の受信したクライアント群内ゲーム情報に基づいて、前記クライアント群におけるゲームの進行状況を示す情報を出力するゲーム進行状況出力手段とを備えるものとすることができる。
【0024】
この場合、クライアント群に属するクライアント装置のプレイヤ同士で行われているゲームに積極的に参加したい訳ではないが、他のプレイヤの行っているゲームを閲覧したい者がいる場合は、その者の群外クライアント装置は、クライアント群に属する任意のクライアント装置に接続させるものとすればよい。クライアント群に属する複数のクライアント装置のうちで実行クライアントとしても管理クライアントとしても指定されていないクライアント装置は、比較的処理負荷が軽いので、このようなクライアント装置に群外クライアント装置を接続させることによって、非常に多くの者に対してゲームを閲覧させることができるようになる。
【0025】
上記目的を達成するため、本発明の第2の観点にかかるプログラムは、他のコンピュータ装置を介することなく所定のネットワークを介して互いに接続可能な複数のクライアント装置から構成されるクライアント群に属する各クライアント装置と前記所定のネットワークを介して接続可能なコンピュータ装置を、前記複数のクライアント装置の各々の接続状況を管理する接続状況管理手段、前記複数のクライアント装置の各々におけるゲームの進行状況を管理するゲーム進行状況管理手段、前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、ゲームを進行するための処理のうちの所定の処理を実行するための実行クライアントとして指定し、該実行クライアントの指定に関する情報を、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する実行クライアント指定手段、前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、該クライアント群におけるゲームの進行に関する情報をやりとりするための管理クライアントとして指定し、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する管理クライアント指定手段、前記管理クライアント指定手段により指定した前記管理クライアントから前記クライアント群におけるゲーム進行情報を受信するゲーム進行情報受信手段、及び、前記ゲーム進行情報受信手段により受信されたゲーム進行情報に基づいて、前記ゲーム進行状況管理手段により管理されている前記複数のクライアント装置の各々におけるゲームの進行状況を更新するゲーム進行状況更新手段として機能させ、前記実行クライアント指定手段は、所定の期間毎に、前記クライアント群に属する複数のクライアント装置のうちで前記実行クライアントとして指定するクライアント装置を変更することを特徴とする。
【0026】
上記目的を達成するため、本発明の第3の観点にかかるプログラムは、所定のネットワークを介してサーバ装置に接続可能であると共に、前記サーバ装置を介することなく前記所定のネットワークを介して同一のコンピュータ装置群に属する他のコンピュータ装置に接続可能なコンピュータ装置を、プレイヤの操作により入力手段から入力されたゲームを進行するための所定の入力を受け付ける入力受付手段、前記サーバ装置からの通知に基づいて、前記コンピュータ装置群に属するコンピュータ装置の中でゲームを進行するための処理のうちの所定の処理を実行するための実行コンピュータ装置として指定されたときに、該所定の処理を実行する所定処理実行手段、前記入力受付手段が受け付けた入力に応じたゲーム入力情報と、前記所定処理実行手段による前記所定の処理の実行に応じたゲーム実行情報とに応じた群内ゲーム情報を、前記コンピュータ群に属する他のコンピュータ装置との間で前記所定のネットワークを介して互いに送受信する群内送受信手段、及び、前記サーバ装置からの通知に基づいて、前記コンピュータ装置群におけるゲームの進行に関する情報を該サーバ装置とやりとりするための管理コンピュータ装置として指定されたときに、当該コンピュータ群に属する各コンピュータ装置についての前記ゲーム入力情報と前記ゲーム実行情報とに応じた前記ゲーム進行情報を前記所定のネットワークを介して前記サーバ装置に送信する群外送信手段として機能させることを特徴とする。
【0027】
上記第2、第3の観点にかかるプログラムは、コンピュータ読み取り可能な記録媒体に記録して提供することができる。このコンピュータ読み取り可能な記録媒体は、上記コンピュータ装置に着脱可能に構成され、上記コンピュータ装置とは別個に提供される記録媒体としてもよい。このコンピュータ読み取り可能な記録媒体は、上記コンピュータ装置内に設けられ、上記コンピュータ装置と共に提供される固定ディスク装置などの記録媒体としてもよい。上記第2、第3の観点にかかるプログラムは、ネットワーク上に存在するサーバ装置から、そのデータ信号を搬送波に重畳して、ネットワークを通じて上記コンピュータ装置に配信することもできる。
【0028】
また、上記第1の観点にかかるネットワークゲームシステムを構成するサーバ装置及びクライアント装置は、それぞれ単体でも本発明の範囲に含まれるものである。また、上記第2、第3の観点にかかるプログラムにより実現される各手段を備えるコンピュータ装置も、本発明の範囲に含まれるものである。また、上記第1の観点にかかるネットワークシステムに含まれる各手段の実行する処理を各ステップの処理として実行する方法、並びに上記第2、第3の観点にかかるプログラムに含まれる各手段の実行する処理を各ステップの処理として実行する方法も、本発明の範囲に含まれる。
【発明を実施するための最良の形態】
【0029】
以下、添付図面を参照して、本発明の実施の形態について説明する。
【0030】
図1は、この実施の形態にかかるネットワークゲームが行われるネットワークシステムの構成を示すブロック図である。図示するように、この実施の形態にかかるネットワークゲームシステムは、インターネット等のネットワーク(物理的な接続のみで論理的な接続がされてないものは図示せず)に接続される複数のビデオゲーム装置100(141〜143、151〜153、…)と、サーバ装置200とから構成される。複数のビデオゲーム装置100のうちの任意の2以上のビデオゲーム装置100同士で、ビデオゲーム装置群140、150、…が形成される。
【0031】
サーバ装置200は、この実施の形態にかかるネットワークゲームの全体の進行を管理するものであり、各ビデオゲーム装置100の接続状況と各ビデオゲーム装置100にて行われているゲームの状況を管理している。ビデオゲーム装置100は、いずれもネットワークを介してサーバ装置200に接続することが可能である。もっとも、同一のビデオゲーム装置群140、150、…に属するビデオゲーム装置100同士では、サーバ装置200を介さずに、ネットワークを介してピアツーピアで互いに接続することが可能である。
【0032】
ビデオゲーム装置群140、150、…のそれぞれに属する2以上のビデオゲーム装置100のうちで何れか1つのビデオゲーム装置141、151、…が、サーバ装置200からの指定によってフロントエンドサーバとなる(もっとも、サーバ装置200との関係ではクライアント)。フロントエンドサーバとなるビデオゲーム装置141、151、…は、サーバ装置200からの指定によって所定期間毎に変更される。ビデオゲーム装置141、151、…がフロントエンドサーバとなるのに対して、サーバ装置200は、バックエンドサーバとなる。また、他のビデオゲーム装置142、152、…は、フロントエンドサーバとなるビデオゲーム装置141、151、…に対するクライアントとなる。
【0033】
この実施の形態にかかるネットワークゲームは、ビデオゲーム装置100の各プレイヤがAチームとBチームとに別れ、チームで対戦するゲームである。ゲームのマップ上には、複数の戦闘区が設定されており、ビデオゲーム装置100の各プレイヤは、自らのプレイヤキャラクタを所属させるチームと戦闘区とを決め、ゲームに参加する。ビデオゲーム装置群140、150、…は、この戦闘群毎に設けられるものである。同一のビデオゲーム装置群140、150、…に属するビデオゲーム装置100は、互いにサーバ装置200を介さずにネットワークを介してピアツーピアで情報を交換しながら、当該戦闘区におけるゲームを進めるものとなる。
【0034】
もっとも、フロントエンドサーバとなるビデオゲーム装置141、151、…だけは、ネットワークを介してサーバ装置200と接続し、戦闘の進行状況に関する情報を随時サーバ装置200に送信するものとしている。また、フロントエンドサーバとなるビデオゲーム装置141、151、…だけは、サーバ装置200がゲームの進行を制御するために必要な情報があれば、これをサーバ装置200から受信するものとしている。
【0035】
ビデオゲーム装置100の各プレイヤは、選択した戦闘区におけるマップ上でプレイヤキャラクタの位置を順次指定していき、指定した位置にプレイヤキャラクタが達するまでに敵チームのキャラクタに遭遇すると自動的に戦闘を開始する。各々のプレイヤキャラクタの遭遇した敵チームのキャラクタに対する戦闘行動を決めるためのAIルーチンは、ビデオゲーム装置100のそれぞれで実行されるゲームプログラムに含まれているが、これは、当該プレイヤキャラクタに対応するプレイヤのビデオゲーム装置100において実行される。
【0036】
また、この実施の形態にかかるネットワークゲームでは、ビデオゲーム装置群140、150、…毎に、各プレイヤの操作に従って動作するプレイヤキャラクタ以外にノンプレイヤキャラクタが登場する。ノンプレイヤキャラクタは、AIルーチンの実行によりプレイヤの操作によらずに自動的に動作するものである。ビデオゲーム装置100のそれぞれで実行されるゲームプログラムが、このAIルーチンを含んでいる。もっとも、ノンプレイヤキャラクタを動作させるためのAIルーチンを実行するビデオゲーム装置100は、フロントエンドサーバとなっているビデオゲーム装置141、151、…だけである。
【0037】
また、フロントエンドサーバとなるビデオゲーム装置141、151、…は、同一のビデオゲーム装置群140、150、…に属する他のビデオゲーム装置142、152、…からプレイヤキャラクタの位置や戦闘行動などの情報を収集し、ノンプレイヤキャラクタの動作も含めて、各プレイヤキャラクタのパラメータの変化値を計算する。各プレイヤのパラメータの変化値や、ノンプレイヤキャラクタの動作に関する情報も、同一のビデオゲーム装置群140、150、…に属するビデオゲーム装置100同士がサーバ装置200を介さずにピアツーピアで交換し合うものである。
【0038】
さらに、この実施の形態にかかるネットワークゲームでは、ゲームそのものには参加せずに他人の行っているゲームを戦闘区毎に閲覧することができる。他人の行っているゲームを閲覧するだけのビデオゲーム装置143、153、…は、閲覧したい戦闘区に対応したビデオゲーム装置群140、150、…に含まれる任意のビデオゲーム装置141、142、151、152、…とサーバ装置200を介さずにピアツーピアで接続され、そこからゲームの進行状況に関する情報が送られてくるものとなる。
【0039】
もっとも、図1のネットワークゲームシステムにおいてビデオゲーム装置100同士をピアツーピアで接続するための制御は、サーバ装置200が行うものとなっている。つまり、各ビデオゲーム装置100からゲームに参加する、またはゲームを閲覧するためには、最初にサーバ装置200に接続して、他のビデオゲーム装置100とピアツーピアで情報を交換するために必要な情報を得なければならない。また、新たなビデオゲーム装置100がゲームに参加する、またはゲームを閲覧する場合には、これと情報交換される既にゲームに参加しているビデオゲーム装置100に必要な情報が通知されるものとなっている。
【0040】
次に、ビデオゲーム装置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を含む。
【0041】
この装置本体101のサウンド処理部109は、スピーカーであるサウンド出力装置125に、グラフィック処理部111は、表示画面122を有する表示装置121に接続されている。DVD/CD−ROMドライブ113には、記録媒体(本実施の形態では、DVD−ROMまたはCD−ROM)131を装着し得る。通信インターフェイス115は、ネットワークに接続される。インターフェイス部117には、入力部(コントローラ)161とメモリーカード162とが接続されている。
【0042】
制御部103は、CPU(Central Processing Unit)やROM(Read Only Memory)などを含み、HDD107や記録媒体131上に格納されたプログラムを実行し、装置本体101の制御を行う。制御部103は、内部タイマを備えている。RAM105は、制御部103のワークエリアである。HDD107は、プログラムやデータを保存するための記憶領域である。サウンド処理部109は、制御部103により実行されているプログラムがサウンド出力を行うよう指示している場合に、その指示を解釈して、サウンド出力装置125にサウンド信号を出力する。
【0043】
グラフィック処理部111は、制御部103から出力される描画命令に従って、フレームバッファ(フレームメモリ)112(図では、グラフィック処理部111の外側に描かれているが、グラフィック処理部111を構成するチップに含まれるRAM内に設けられる)に画像データを展開し、表示装置121の表示画面122上に画像を表示するビデオ信号を出力する。グラフィック処理部111から出力されるビデオ信号に含まれる画像の1フレーム時間は、例えば60分の1秒である。
【0044】
DVD/CD−ROMドライブ113は、記録媒体131に対しプログラム及びデータの読み出しを行う。通信インターフェイス115は、ネットワークに接続され、他のコンピュータとの通信を行う。入力部161は、方向キー及び複数の操作ボタンを備える。方向キーは、入力の選択肢(上記した戦闘区など)から所望の選択肢を選んだり、プレイヤキャラクタの移動位置を選ぶために用いられる。操作ボタンは、方向キーによる選択を確定させるためのボタンを含む。
【0045】
インターフェイス部117は、入力部161からの入力データをRAM105に出力し、制御部103がそれを解釈して演算処理を実施する。インターフェイス部117は、また、制御部103からの指示に基づいて、RAM105に記憶されているゲームの進行状況を示すデータをメモリーカード162に保存させ、メモリーカード162に保存されている中断時のゲームのデータを読み出して、RAM105に転送する。
【0046】
ビデオゲーム装置100でゲームを行うためのプログラム及びデータは、最初例えば記録媒体131に記憶されている。記録媒体131に記憶されているデータとしては、ゲーム空間(仮想3次元空間)に存在するオブジェクトを構成するためのグラフィックデータを含んでいる。記録媒体131に記憶されたプログラム及びデータは、実行時にDVD/CD−ROMドライブ113により読み出されて、RAM105にロードされる。制御部103は、RAM105にロードされたプログラム及びデータを処理し、描画命令をグラフィック処理部111に出力し、サウンド出力の指示をサウンド処理部109に出力する。制御部103が処理を行っている間の中間的なデータは、RAM105に記憶される。
【0047】
図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を装着し得る。
【0048】
制御部203は、CPU(Central Processing Unit)やROM(Read Only Memory)などを含み、HDD207や記録媒体231上に格納されたプログラムを実行し、サーバ装置200の制御を行う。制御部203は、現在時刻を計時する内部タイマを備えている。RAM205は、制御部203のワークエリアである。HDD207は、プログラムやデータを保存するための記憶領域である。通信インターフェイス215は、ネットワーク3に接続され、ビデオゲーム装置100のそれぞれとの通信を行う。
【0049】
サーバ装置200でネットワークゲームを行うためのプログラム及びデータは、最初例えば記録媒体231に記憶され、ここからHDD207にインストールされる。そして、このプログラム及びデータは実行時にHDD207から読み出されて、RAM205にロードされる。制御部203は、RAM205にロードされたプログラム及びデータを処理し、ビデオゲーム装置100のそれぞれから送られてくるメッセージなどを元にネットワークゲームを進行させる。制御部203が処理を行っている間の中間的なデータは、RAM205に記憶される。
【0050】
次に、この実施の形態にかかるネットワークゲームを進行させるため、サーバ装置200において管理されるデータについて説明する。図4は、この実施の形態にかかるネットワークゲームを実行させるためにサーバ装置200において管理されるテーブル群を示す図である。このテーブル群のうちで、図4(a)は、このネットワークゲームのサービスを利用可能なビデオゲーム装置100の接続情報を管理するための接続状況テーブルであり、図4(b)は、ネットワークゲームの進行を管理するためのゲーム進行テーブルである。
【0051】
図4(a)に示す接続状況テーブル310には、このネットワークゲームのサービスを現時点で利用しているかどうかに関わらず、利用することが可能なビデオゲーム装置100毎に、ID311と、パスワード312と、ログイン日時313と、ログアウト日時314と、IPアドレス315と、戦闘区区分316と、参加フラグ317と、閲覧先情報318とが登録される。
【0052】
ID311は、ビデオゲーム装置100(のプレイヤ)を一意に識別するための識別情報である。パスワード312は、このネットワークゲームのサービスを利用するための認証に用いられる。ログイン日時313は、当該ビデオゲーム装置100(のプレイヤ)が、このネットワークゲームサービスを利用するためにサーバ装置200にログインした日時を示す。各ビデオゲーム装置100のプレイヤは、ログインの際に、ゲームの参加/閲覧の別と、参加/閲覧したい戦闘区を指定するものとなる。ゲームに参加する場合は、所属するチームも指定するものとなる。
【0053】
ログアウト日時314は、当該ビデオゲーム装置100(のプレイヤ)がログアウトした日時を示す。当該ビデオゲーム装置100がフロントエンドサーバとなるビデオゲーム装置141、151、…として指定されていて一定の期間を越えて情報が受信されなければ、当該ビデオゲーム装置100のサーバ装置200とのデータリンクが設定不能であるものとして、強制的にログアウト処理が行われる。当該ビデオゲーム装置100が他人の行っているゲームを閲覧するだけのビデオゲーム装置143、153、…であった場合、正式にログアウトすることなく閲覧を止めてしまうこともあり得、この場合にログイン日時313のみが登録され、ログアウト日時314が登録されないものとなるが、実用上の問題が生じることはない。
【0054】
IPアドレス315は、当該ビデオゲーム装置100のネットワーク上におけるIPアドレスであり、サーバ装置200とビデオゲーム装置100との間、異なるビデオゲーム装置100の間で情報を送受信するためのアドレスとして必要になるものである。戦闘区区分316は、当該ビデオゲーム装置100がゲームに参加またはゲームを閲覧している戦闘区の区分を示すものである。当該ビデオゲーム装置100がゲームに参加しているものである場合には、戦闘区区分316は、ビデオゲーム装置群140、150、…に対応したものとなる。
【0055】
参加フラグ317は、当該ビデオゲーム装置100(のプレイヤ)が他人のゲームを閲覧するだけのビデオゲーム装置143、153、…ではなく、ゲームに参加していてビデオゲーム装置群140、150、…を形成するビデオゲーム装置141、142、151、152、…である場合にセットされるフラグである。閲覧先情報318は、他人のゲームを閲覧するだけのビデオゲーム装置143、153、…である場合に、他人の行っているゲームを閲覧するためにビデオゲーム装置141、142、151、152、…のうちの何れに接続されているのかを示す情報である。
【0056】
図4(b)に示すゲーム進行テーブル320は、ビデオゲーム装置群140、150、…毎(戦闘区毎)のテーブル320A、320B、…、320Xから構成されている。これらのテーブル320A、320B、…、320Xに後述する情報が登録されるビデオゲーム装置100は、ゲームに参加しているビデオゲーム装置141、142、151、152、…のみで、他人のゲームを閲覧しているだけのビデオゲーム装置143、153は含まれない。
【0057】
各ビデオゲーム装置群140、150、…のゲーム進行テーブル320には、対応するビデオゲーム装置群140、150、…においてビデオゲーム装置141、151、…をフロントエンドサーバとして指定した日時、或いは指定した後にこれらから最後に情報を受信した日時321が登録される。また、各ビデオゲーム装置群140、150、…のゲーム進行テーブル320には、対応する戦闘区でのゲームに参加するビデオゲーム装置100毎に、ID322と、フロントエンドフラグ323と、フロントエンドの指定日時324と、所属チーム325と、ゲームステータス326とが登録される。
【0058】
ID322は、ビデオゲーム装置100(のプレイヤ)を一意に識別するための識別情報である。フロントエンドフラグ323は、当該ビデオゲーム装置100が現時点でフロントエンドサーバとなるビデオゲーム装置141、151、…として指定されている場合にセットされるフラグである。フロントエンドの指定日時324は、当該ビデオゲーム装置100をフロントエンドとなるビデオゲーム装置141、151、…として指定したときの日時を示す。
【0059】
所属チーム325は、当該ビデオゲーム装置100(のプレイヤ)がゲームにおいて所属しているチームを示す。ゲームステータス326は、当該ビデオゲーム装置100(のプレイヤ)によるゲームの進行状況に関する情報を示すもので、プレイヤキャラクタのマップ上における位置や各種パラメータの値などの情報を含む。
【0060】
なお、ID322と所属チーム325は、当該ビデオゲーム装置100のログインからログアウトまで同じ情報が登録されるが、フロントエンドフラグ323と指定日時324とは、サーバ装置200の処理によって随時更新されるものとなっている。ゲームステータス326は、フロントエンドサーバとなるビデオゲーム装置141、151、…から送られてくるゲームの進行状況に関する情報に従って随時更新されるものとなっている。
【0061】
次に、この実施の形態にかかるネットワークゲームの進行を概略的に説明する。図5、図6は、この実施の形態にかかるネットワークゲームの進行を模式的に示す図である。なお、ここで登場するビデオゲーム装置100は、全てビデオゲーム装置群140に属する、またはビデオゲーム装置群140における他人のゲームを閲覧するものであるとして説明するものとする。
【0062】
図5(a)に示すように、ゲームに参加していなかったビデオゲーム装置100(A)が新たにゲームに参加しようとする場合、プレイヤが参加/閲覧の別として参加を指定し、さらにゲームに参加する戦闘区と所属チームとを指定し、ID及びパスワードを入力して、ビデオゲーム装置100(A)からサーバ装置200にログインを要求する。サーバ装置200は、ログイン要求の際に送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して、認証を行う。
【0063】
認証の結果によりログインが受け付けられると、サーバ装置200は、ビデオゲーム装置100(A)について接続状況テーブル310に登録されている参加フラグ317をセットし、また、指定された戦闘区のゲーム進行テーブル320に新たなレコードを作成し、当該ビデオゲーム装置100(A)のID322、所属チーム325、ゲームステータス326を登録する。
【0064】
また、当該戦闘区のゲーム進行テーブル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)との間で情報を送受信することができる。
【0065】
その後、図5(b)に示すように、ビデオゲーム装置群140に属するビデオゲーム装置141(B)とビデオゲーム装置142(A)とは、サーバ装置200を介することなくネットワークを介してピアツーピアでゲームに関する情報を送受信しながら、ゲームを進めるものとなる。より詳細に説明すると、ビデオゲーム装置142(A)においてプレイヤが入力部161から入力した位置に基づくプレイヤキャラクタの移動位置に関する情報、AIルーチンの実行に基づくプレイヤキャラクタの戦闘行動に関する情報が、フロントエンドサーバとなるビデオゲーム装置141(B)に集められる。
【0066】
フロントエンドサーバとなるビデオゲーム装置141(B)は、さらにAIルーチンの実行によりノンプレイヤキャラクタの動作も決定し、プレイヤキャラクタ及びノンプレイヤキャラクタの動作に基づく各プレイヤキャラクタのパラメータの変化値を算出する。そして、ビデオゲーム装置142(A)に対して、対応する戦闘区での各プレイヤキャラクタの動作(位置及び戦闘行動)に関する情報や、パラメータの変化値などの情報を送信する。
【0067】
ビデオゲーム装置142(A)は、フロントエンドサーバとなるビデオゲーム装置141(B)から送られてきた情報に従ってゲームの画像を生成し、表示画面122として表示させる。一方、フロントエンドサーバとなるビデオゲーム装置141(B)は、同じビデオゲーム装置群140に属するビデオゲーム装置142から送られてきた情報や自ら算出した情報に従ってゲームの画像を生成し、表示画面122として表示させる。
【0068】
また、ビデオゲーム装置群140のうちでフロントエンドサーバとなるビデオゲーム装置141(B)だけは、ゲームの進行に必要な情報をネットワークを介して送受信するものとなる。より詳細に説明すると、フロントエンドサーバとなるビデオゲーム装置141(B)は、対応する戦闘区での各プレイヤキャラクタの位置やパラメータの変化値などを含むゲームステータスに関する情報をサーバ装置200に送信する。サーバ装置200は、フロントエンドサーバとなるビデオゲーム装置141(B)から受信したゲームステータスに関する情報に基づいて、ゲーム進行テーブル320に登録されているゲームステータス326を更新する。
【0069】
サーバ装置200は、また、他のビデオゲーム装置群150、…のゲームの進行状況がビデオゲーム装置群140でのゲームの進行に影響を及ぼすことがある場合など、そのゲームの進行を制御するために必要な情報をフロントエンドサーバとなるビデオゲーム装置141(B)に送信する。ビデオゲーム装置141(B)は、この情報が送られてきた場合には、これもビデオゲーム装置142(A)に送信したり、この情報にも基づいてノンプレイヤキャラクタの動作や各プレイヤキャラクタのパラメータの変化値を算出したりするものとなる。
【0070】
また、図5(c)に示すように、サーバ装置200は、現時点でフロントエンドサーバとなっているビデオゲーム装置141(B)についてゲーム進行テーブル320の指定日時324から所定時間を経過したかどうかを監視しており、所定時間を経過したものと判断すると、同じビデオゲーム装置群140に属する他のビデオゲーム装置142を新たにフロントエンドサーバとして指定するものとなる。
【0071】
より詳細に説明すると、サーバ装置200は、ゲーム進行テーブル320に登録されているがフロントエンドフラグ323のセットされていないビデオゲーム装置142のうちから何れかを所定の手法に従って選択する(ここでは、ビデオゲーム装置142(A)が選択されたものとする)。
【0072】
サーバ装置200は、これまでフロントエンドサーバとして指定されていたビデオゲーム装置141(B)についてゲーム進行テーブル320に登録されているフロントエンドフラグ323をリセットするとともに、指定日時324を消去する。また、フロントエンドサーバの指定を解除するための指示をネットワークを介してビデオゲーム装置141(B)に送信する。フロントエンドサーバであったビデオゲーム装置141(B)は、この指示を受信すると、フロントエンドサーバではなくなり、ビデオゲーム装置群140においてフロントエンドサーバではないビデオゲーム装置142(B)となる。
【0073】
サーバ装置200は、また、新たに選択したビデオゲーム装置142(A)についてゲーム進行テーブル320に登録されているフロントエンドフラグ323をセットするとともに、制御部203の内部タイマで計測されている現在日時を指定日時324として登録する。また、接続状況テーブル310に登録されているIPアドレス315を参照して、フロントエンドサーバに指定するための指示をビデオゲーム装置142(A)に送信する。この指示には、ビデオゲーム装置群140に含まれる他の全てのビデオゲーム装置のID311及びIPアドレス315が含まれる。ビデオゲーム装置142(A)は、この指示を受信すると、新たにフロントエンドサーバとなるビデオゲーム装置141(A)となる。
【0074】
その後、図5(d)に示すように、ビデオゲーム装置群140に属するビデオゲーム装置141(A)とビデオゲーム装置142(B)とは、サーバ装置200を介することなくネットワークを介してピアツーピアでゲームに関する情報を送受信しながら、ゲームを進めるものとなる。また、ビデオゲーム装置群140のうちでフロントエンドサーバとなるビデオゲーム装置141(A)だけは、ゲームの進行に必要な情報をネットワークを介して送受信するものとなる。ここでの処理は、フロントエンドサーバが入れ替わっている以外は、図5(b)において説明したものと同じである。
【0075】
図6(a)に示すように、ゲームを閲覧していなかったビデオゲーム装置100が新たにゲームを閲覧しようとする場合、プレイヤが参加/閲覧の別として閲覧を指定し、さらにゲームを閲覧する戦闘区を指定し、ID及びパスワードを入力して、ビデオゲーム装置100からサーバ装置200にログインを要求する。サーバ装置200は、ログイン要求の際に送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して、認証を行う。
【0076】
認証の結果によりログインが受け付けられると、サーバ装置200は、戦闘区のゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置141、142を特定可能な情報(IDなど)を登録する。
【0077】
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置100のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ビデオゲーム装置100は、指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となり、サーバ装置200を介さずに選択されたビデオゲーム装置141、142から当該戦闘区でのゲームの進行状況に関する情報を受信することができるものとなる。ビデオゲーム装置143は、ビデオゲーム装置141、142から送られてきた情報に従ってゲームの画像を生成し、表示画面122として表示させる。
【0078】
図6(b)に示すように、フロントエンドサーバではないがゲームに参加しているビデオゲーム装置142からログアウト要求が受信されると、サーバ装置200は、所定のログアウト処理を行うとともに、ログアウトが要求されたビデオゲーム装置142に関するレコードをゲーム進行テーブル320から削除するとともに、当該ビデオゲーム装置142のID311を、フロントエンドサーバとなっているビデオゲーム装置141に通知する。フロントエンドサーバとなるビデオゲーム装置141は、この通知がされたビデオゲーム装置142との情報交換を停止する。
【0079】
また、ログアウトが要求されたビデオゲーム装置142を閲覧先情報318に設定しているビデオゲーム装置143がある場合には、サーバ装置200は、同じビデオゲーム装置群140についてのゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置141、142を特定可能な情報(IDなど)を登録する。
【0080】
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置143のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ログアウトしたビデオゲーム装置142に接続してゲームを閲覧していたビデオゲーム装置143は、新たに選択されたビデオゲーム装置141、142に接続して指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となる。
【0081】
図6(c)に示すように、現時点でフロントエンドサーバとして指定されているビデオゲーム装置141からログアウト要求が受信されると、サーバ装置200は、所定のログアウト処理を行うとともに、ログアウトが要求されたビデオゲーム装置141に関するレコードをゲーム進行テーブル320から削除する。また、同じビデオゲーム装置群140に属する他のビデオゲーム装置142の中から何れかを新たなフロントエンドサーバとして選択する。
【0082】
サーバ装置200は、選択したビデオゲーム装置142について接続状況テーブル310に登録されているIPアドレス315を参照して、フロントエンドサーバに指定するための指示をビデオゲーム装置142に送信する。この指示には、ビデオゲーム装置群140に含まれる他の全てのビデオゲーム装置(ログアウト要求したものを除く)のID311及びIPアドレス315が含まれる。この指示を受信したビデオゲーム装置142は、新たにフロントエンドサーバとなるビデオゲーム装置141となる。
【0083】
また、ログアウトが要求されたビデオゲーム装置141を閲覧先情報318に設定しているビデオゲーム装置143がある場合には、サーバ装置200は、同じビデオゲーム装置群140についてのゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置142を特定可能な情報(IDなど)を登録する。
【0084】
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置143のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ログアウトしたビデオゲーム装置142に接続してゲームを閲覧していたビデオゲーム装置143は、新たに選択されたビデオゲーム装置141、142に接続して指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となる。
【0085】
図6(d)に示すように、サーバ装置200は、現時点でフロントエンドサーバとして指定されているビデオゲーム装置141から情報を受信する度に当該ビデオゲーム装置群140のゲーム進行テーブル310に登録されている最後に情報を受信した日時321を更新するとともに、登録されている日時321から所定時間を経過しても新たな情報が受信されていないかどうかを監視している。
【0086】
サーバ装置200は、登録されている日時321から所定時間を経過しても新たな情報が受信されていないときには、ビデオゲーム装置141との接続が切断されたものとして、ビデオゲーム装置141を強制的にログアウトさせる処理を行うとともに、当該ビデオゲーム装置141に関するレコードをゲーム進行テーブル320から削除する。また、同じビデオゲーム装置群140に属する他のビデオゲーム装置142の中から何れかを新たなフロントエンドサーバとして選択する。
【0087】
サーバ装置200は、選択したビデオゲーム装置142について接続状況テーブル310に登録されているIPアドレス315を参照して、フロントエンドサーバに指定するための指示をビデオゲーム装置142に送信する。この指示には、ビデオゲーム装置群140に含まれる他の全てのビデオゲーム装置のID311及びIPアドレス315が含まれる。この指示を受信したビデオゲーム装置142は、新たにフロントエンドサーバとなるビデオゲーム装置141となる。
【0088】
また、ログアウトが要求されたビデオゲーム装置141を閲覧先情報318に設定しているビデオゲーム装置143がある場合には、サーバ装置200は、同じビデオゲーム装置群140についてのゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置142を特定可能な情報(IDなど)を登録する。
【0089】
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置143のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ログアウトしたビデオゲーム装置142に接続してゲームを閲覧していたビデオゲーム装置143は、新たに選択されたビデオゲーム装置141、142に接続して指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となる。
【0090】
以下、この実施の形態にかかるネットワークシステムを構成するサーバ装置200及びビデオゲーム装置100において、それぞれ実行される処理について説明する。ビデオゲーム装置100における処理は、ゲームに参加するビデオゲーム装置141、142、151、152、…である場合と、ゲームを閲覧するだけのビデオゲーム装置143、153、…である場合と異なるので、それぞれ別個に説明するものとする。
【0091】
図7、図8は、サーバ装置200において実行される処理を示すフローチャートである。サーバ装置200の制御部203は、ネットワーク上の何れかのビデオゲーム装置100から何らかの情報を受信したかどうかを判定している(ステップS101)。何れかのビデオゲーム装置100から何らかの情報を受信していれば、制御部203は、受信した情報が何であるかを判定する(ステップS102)。
【0092】
受信した情報が参加/閲覧の別として参加を指定したログイン要求であった場合には、制御部203は、ログイン要求とともに送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して当該ビデオゲーム装置100の認証を行う。認証が得られると、制御部203は、ログイン要求とともに送られてきたIDが示すビデオゲーム装置100について、接続状況テーブル310のログイン日時313に現在日時を登録し、前回のログアウト時に登録されていたログアウト日時314を削除する。また、ログイン要求をしてきたビデオゲーム装置100のIPアドレス315、戦闘区区分316を登録し、参加フラグ317をセットする。
【0093】
さらに、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に当該ビデオゲーム装置100のレコードを作成し、ログイン要求とともにIDをID322として登録し、また、ログイン要求において指定されたチームを所属チーム325としてを登録する(ステップS103)。
【0094】
次に、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に、当該戦闘区でのゲームに参加している他のビデオゲーム装置100に関する情報が登録されているかどうかを判定する(ステップS104)。当該戦闘区でのゲームに参加している他のビデオゲーム装置100が未だ1つも登録されていなければ、制御部203は、ゲーム進行テーブル320においてログイン要求をしてきたビデオゲーム装置100のフロントエンドフラグ323をセットし、指定日時324に現在日時を登録する(ステップS105)。制御部203は、さらに、当該ビデオゲーム装置100に対してフロントエンドサーバに指定する旨を示す指示を送信する(ステップS106)。そして、ステップS101の処理に戻る。
【0095】
当該戦闘区でのゲームに参加している他のビデオゲーム装置100が登録されていれば、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に登録されているビデオゲーム装置100のうちで、フロントエンドフラグ323のセットされているビデオゲーム装置100、すなわち現時点で当該戦闘区のビデオゲーム装置群においてフロントエンドサーバとして指定されているビデオゲーム装置100を検索する(ステップS107)。
【0096】
制御部203は、フロントエンドサーバとして指定されているビデオゲーム装置100に、新たに当該戦闘区でのゲームに参加するビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS108)、新たに当該戦闘区でのゲームに参加するビデオゲーム装置100に、フロントエンドサーバとして指定されているビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS109)。そして、ステップS101の処理に戻る。
【0097】
受信した情報が参加/閲覧の別として閲覧を指定したログイン要求であった場合には、制御部203は、ログイン要求とともに送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して当該ビデオゲーム装置100の認証を行う。認証が得られると、制御部203は、ログイン要求とともに送られてきたIDが示すビデオゲーム装置100について、接続状況テーブル310のログイン日時313に現在日時を登録し、前回のログアウト時に登録されていたログアウト日時314を削除する。また、ログイン要求をしてきたビデオゲーム装置100のIPアドレス315を登録する(ステップS110)。
【0098】
次に、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に、当該戦闘区でのゲームに参加しているビデオゲーム装置100に関する情報が登録されているかどうかを判定する(ステップS111)。当該戦闘区でのゲームに参加している他のビデオゲーム装置100が未だ1つも登録されていなければ、そのままステップS101の処理に戻る。
【0099】
当該戦闘区でのゲームに参加している他のビデオゲーム装置100が登録されていれば、制御部203は、当該戦闘区に対応したゲーム進行テーブル320に登録されているビデオゲーム装置100から何れかを閲覧先として選択し、選択したビデオゲーム100を示す情報を、ログイン要求をしたビデオゲーム装置100、すなわち新たにゲームを閲覧しようとするビデオゲーム装置100の閲覧先情報318に登録する(ステップS112)。
【0100】
制御部203は、閲覧先として選択されたビデオゲーム装置100に、新たに当該戦闘区でのゲームを閲覧するビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS113)、新たに当該戦闘区でのゲームを閲覧するビデオゲーム装置100に、閲覧先として選択されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS114)。そして、ステップS101の処理に戻る。
【0101】
受信した要求がログアウト要求であった場合には、制御部203は、ログアウトを要求したビデオゲーム装置100が現時点でフロントエンドサーバとして指定されている(すなわち、フロントエンドフラグ323がセットされている)かどうかを判定する(ステップS115)。
【0102】
フロントエンドサーバ115として指定されていれば、制御部203は、ログアウト要求をしたビデオゲーム装置100と同じ戦闘区のゲーム進行テーブル320に登録されている他のビデオゲーム装置100のうちから、何れかのビデオゲーム装置100を新たにフロントエンドサーバとして選択し、選択したビデオゲーム装置100についてゲーム進行テーブル320のフロントエンドフラグ323をセットするとともに、指定日時324に現在日時を登録する(ステップS116)。
【0103】
次に、制御部203は、新たにフロントエンドサーバとして指定されたビデオゲーム装置100に対して、フロントエンドサーバに指定する旨を示す指示を送信するとともに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS117)。また、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100に、新たにフロントエンドサーバとして指定されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS118)。そして、ステップS121の処理に進む。
【0104】
ログアウトを要求したビデオゲーム装置100が現時点でフロントエンドサーバとして指定されていない場合には、制御部203は、ログアウト要求をしたビデオゲーム装置100がフロントエンドサーバとして指定されていないゲームに参加するビデオゲーム装置100であるかどうかを判定する(ステップS119)。ゲームに参加するビデオゲーム装置100であった場合には、制御部203は、フロントエンドサーバとして指定されているビデオゲーム装置100に、ログアウト要求をしたビデオゲーム装置100を特定可能な情報を送信する(ステップS120)。そして、ステップS121の処理に進む。
【0105】
ステップS121では、制御部203は、ログアウト要求をしたビデオゲーム装置100について接続状況テーブル310のログアウト日時314として現在日時を登録して、当該ビデオゲーム装置100をログアウトさせる処理を行う。また、制御部203は、当該ログアウト要求をしたビデオゲーム装置100のレコードを、ゲーム進行テーブル320から削除する。
【0106】
その後、制御部203は、ここでログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100があるかどうかを判定する(ステップS122)。ログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
【0107】
ログアウトされたビデオゲーム装置100を閲覧先情報318として登録している他のビデオゲーム装置100があれば、制御部203は、ログアウトされたビデオゲーム100が登録されていたのと同じゲーム進行テーブル320に他のビデオゲーム装置100が登録されているか、すなわち該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあるかどうかを判定する(ステップS123)。該当する戦闘区でのゲームに参加しているビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
【0108】
該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあれば、制御部203は、ログアウトされたビデオゲーム装置100が登録されていたのと同じゲーム進行テーブル320に登録されているビデオゲーム装置100から何れかを閲覧先として選択し、選択したビデオゲーム100を示す情報を、ログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100の閲覧先情報318に新たに登録する(ステップS124)。
【0109】
制御部203は、閲覧先として選択されたビデオゲーム装置100に、ログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS125)、ログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100に、閲覧先として選択されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS126)。そして、ステップS101の処理に戻る。
【0110】
ログアウト要求をしたビデオゲーム装置100が、ゲームを閲覧するだけのビデオゲーム装置100であった場合には、制御部203は、当該ログアウト要求をしたビデオゲーム装置100の閲覧先情報318に登録されているビデオゲーム装置100に、ログアウト要求をした、すなわちゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を送信する(ステップS127)。さらに、制御部203は、ログアウト要求をしたビデオゲーム装置100について接続状況テーブル310のログアウト日時314として現在日時を登録して、当該ビデオゲーム装置100をログアウトさせる処理を行う(ステップS128)。
【0111】
受信した情報がフロントエンドサーバとして指定されたビデオゲーム装置100から送られてきたゲーム情報であった場合には、制御部203は、当該ゲーム情報を送信したビデオゲーム装置100が属するビデオゲーム装置群に対応したゲーム進行テーブル320の最終受信日時321を現在日時に更新する(ステップS129)。制御部203は、さらに受信したゲーム情報に従って、当該ゲーム情報を送信したビデオゲーム装置100が属するビデオゲーム装置群に対応したゲーム進行テーブル320に登録されている各ビデオゲーム装置100のゲームステータス326を更新する(ステップS130)。そして、ステップS101の処理に戻る。
【0112】
受信した情報がその他の情報であった場合には、制御部203は、受信した情報に応じてそれぞれ所定の処理を行う(ステップS131)。この処理は、本発明に直接的な関わりがあるものでもないため、詳細な説明を省略する。
【0113】
ステップS101において何れのビデオゲーム装置100からも情報を受信していないと判定された場合には、制御部203は、戦闘区毎のゲーム進行テーブル320にフロントエンドフラグ323の設定されているビデオゲーム装置100について登録されている各指定日時324から現在までの経過時間が所定時間となったものがあるかどうか、すなわちフロントエンドサーバに指定されてから所定時間の経過したビデオゲーム装置100があるかどうかを判定する(ステップS132)。
【0114】
フロントエンドサーバに指定されてから所定時間の経過したビデオゲーム装置100があれば、制御部103は、これと同じ戦闘区のゲーム進行テーブル320に登録されている他のビデオゲーム装置100のうちから、何れかのビデオゲーム装置100を新たにフロントエンドサーバとして選択し、選択したビデオゲーム装置100についてゲーム進行テーブル320のフロントエンドフラグ323をセットするとともに、指定日時324に現在日時を登録する(ステップS133)。
【0115】
次に、制御部203は、新たにフロントエンドサーバとして指定されたビデオゲーム装置100に対して、フロントエンドサーバに指定する旨を示す指示を送信するとともに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS134)。また、制御部203は、これまでフロントエンドサーバとして指定されていたビデオゲーム装置100に、フロントエンドサーバの指定を解除する旨の指示を送信する(ステップS135)。
【0116】
さらに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100に、新たにフロントエンドサーバとして指定されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS136)。そして、ステップS101の処理に戻る。
【0117】
フロントエンドサーバに指定されてから所定時間の経過したビデオゲーム装置100がなければ、制御部203は、戦闘区毎のゲーム進行テーブル320に登録されている最終受信日時321から現在までの経過時間が所定時間となったものがあるかどうか、すなわちフロントエンドサーバに指定しているビデオゲーム装置100から最後に情報を受信してから所定時間を経過したかどうかを判定する(ステップS137)。
【0118】
フロントエンドサーバに指定しているビデオゲーム装置100から最後に情報を受信してから所定時間を経過していれば、制御部203は、当該戦闘区において現時点までフロントエンドサーバとして指定されていたビデオゲーム装置100を強制的にログアウトさせる処理を行う。具体的には、接続状況テーブル310における当該ビデオゲーム装置100のログアウト日時314に現在日時を登録する(ステップS138)。
【0119】
次に、制御部203は、当該戦闘区のゲーム進行テーブル320に登録されている他のビデオゲーム装置100のうちから、何れかのビデオゲーム装置100を新たにフロントエンドサーバとして選択し、選択したビデオゲーム装置100についてゲーム進行テーブル320のフロントエンドフラグ323をセットするとともに、指定日時324に現在日時を登録する(ステップS139)。
【0120】
次に、制御部203は、新たにフロントエンドサーバとして指定されたビデオゲーム装置100に対して、フロントエンドサーバに指定する旨を示す指示を送信するとともに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS140)。また、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100に、新たにフロントエンドサーバとして指定されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS141)。
【0121】
次に、制御部203は、ここで強制的にログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100があるかどうかを判定する(ステップS142)。強制的にログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
【0122】
強制的にログアウトされたビデオゲーム装置100を閲覧先情報318として登録している他のビデオゲーム装置100があれば、制御部203は、ログアウトされたビデオゲーム100が登録されていたのと同じゲーム進行テーブル320に他のビデオゲーム装置100が登録されているか、すなわち該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあるかどうかを判定する(ステップS143)。該当する戦闘区でのゲームに参加しているビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
【0123】
該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあれば、制御部203は、強制的にログアウトされたビデオゲーム装置100が登録されていたのと同じゲーム進行テーブル320に登録されているビデオゲーム装置100から何れかを閲覧先として選択し、選択したビデオゲーム100を示す情報を、強制的にログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100の閲覧先情報318に新たに登録する(ステップS144)。
【0124】
制御部203は、閲覧先として選択されたビデオゲーム装置100に、強制的にログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS145)、強制的にログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100に、閲覧先として選択されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS146)。そして、ステップS101の処理に戻る。
【0125】
フロントエンドサーバに指定しているビデオゲーム装置100から最後に情報を受信してから所定時間を経過していなければ、制御部203は、各戦闘区におけるゲームの進行に影響を及ぼす何らかの事象が発生したかどうかを判定する(ステップS147)。この各戦闘区におけるゲームの進行に影響を及ぼす事象は、例えば、内部タイマによって計時している現在日時が所定の日時となったり、ステップS130で更新したゲームステータス326が所定の状態となること等により発生し得る。
【0126】
何れかの戦闘区におけるゲームの進行に影響を及ぼす何らかの事象が発生していれば、制御部203は、そのような事象の発生した戦闘区についてフロントエンドサーバとして指定されたビデオゲーム装置100に、その影響に応じたゲーム制御情報を送信する(ステップS148)。そして、ステップS101の処理に戻る。何れの戦闘区においてもゲームの進行に影響を及ぼす事象が発生していなければ、そのままステップS101の処理に戻る。
【0127】
図9、図10は、ゲームに参加するビデオゲーム装置100(141、142、151、152、…)において実行される処理を示すフローチャートである。ビデオゲーム装置100は、ゲームに参加するには参加/閲覧の別として参加を指定し、さらにゲームに参加する戦闘区と所属チームとを指定してサーバ装置200にログインし、また、ゲームへの参加を停止するにはサーバ装置200からログアウトする(強制的にログアウトされる場合を含む)必要があるが、ここでは、ログインの後、ログアウトする前までにおいて行われる処理について説明する。
【0128】
ゲームに参加するビデオゲーム装置100の制御部103は、ステップS106、S117、S134またはS140でサーバ装置200から送信されたフロントエンドサーバに指定する旨の指示を受信したかどうかを判定する(ステップS201)。
【0129】
フロントエンドサーバに指定する旨の指示を受信していなければ、制御部103は、ステップS109、S118、S136またはS141でサーバ装置200から送信されたフロントエンドサーバとして指定されている他のビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS202)。フロントエンドサーバとして指定されている他のビデオゲーム装置100を特定可能な情報を受信した場合には、制御部103は、当該フロントエンドサーバに関する情報をRAM105に保存する(ステップS203)。そして、ステップS201の処理に戻る。
【0130】
フロントエンドサーバとして指定されている他のビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS113、S125またはS145でサーバ装置200から送信されたゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS204)。ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信した場合には、制御部103は、当該ゲームを閲覧するビデオゲーム装置100に関する情報をRAM105に保存する(ステップS205)。そして、ステップS201の処理に戻る。
【0131】
ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS127でサーバ装置200から送信されたゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS206)。ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していた場合には、制御部103は、ゲームを閲覧するものしてRAM105に保存されている当該ビデオゲーム装置100に関する情報を消去する(ステップS207)。そして、ステップS201の処理に戻る。
【0132】
ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、後述するステップS235においてフロントエンドサーバとして指定されている他のビデオゲーム装置100から送信されたゲーム情報を受信したかどうかを判定する(ステップS208)。ゲーム情報を受信していれば、制御部103は、受信したゲーム情報に従って各プレイヤキャラクタ及びノンプレイヤキャラクタを動作させ、表示画面122に表示させる(ステップS209)。
【0133】
次に、制御部103は、ゲームを閲覧するだけのビデオゲーム装置100に関する情報がRAM105に保存されているかどうかを判定する(ステップS210)。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていれば、制御部103は、当該情報が示す他のビデオゲーム装置100にゲーム情報を送信する(ステップS211)。そして、ステップS201の処理に戻る。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていなければ、そのままステップS201の処理に戻る。
【0134】
フロントエンドサーバとして指定されているビデオゲーム装置100からゲーム情報を受信していなければ、制御部103は、入力部161からプレイヤキャラクタの移動位置を指定する入力がされたかどうかを判定する(ステップS212)。プレイヤキャラクタの移動位置を指定する入力がされていれば、制御部103は、該入力された位置をRAM105に保存する(ステップS213)。そして、ステップS214の処理に進む。プレイヤキャラクタの移動位置を指定する入力がされていなければ、そのままステップS214の処理に進む。
【0135】
ステップS214では、制御部103は、プレイヤキャラクタの移動位置としてRAM105に保存されている位置とプレイヤキャラクタの現在のマップ上の位置とが同じであるかどうかを判定する。保存されている位置と現在の位置が異なれば、制御部103は、保存されている位置に向けて、プレイヤキャラクタを所定量だけ移動させる(ステップS215)。そして、ステップS216の処理に進む。保存されている位置と現在の位置が同じであるか、プレイヤキャラクタの移動位置そのものが保存されていなければ、そのままステップS216の処理に進む。
【0136】
ステップS216では、制御部103は、自分のプレイヤキャラクタの現在の位置、フロントエンドサーバとして指定されてる他のビデオゲーム装置100から受信したゲーム情報により示される他のキャラクタ(他のプレイヤのプレイヤキャラクタ及びノンプレイヤキャラクタ)の位置に基づいて、プレイヤキャラクタがとるべき戦闘行動(何もしない場合もあり)を決定する。制御部103は、プレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を、フロントエンドサーバとして指定されている他のビデオゲーム装置100に送信する(ステップS217)。そして、ステップS201の処理に戻る。
【0137】
ステップS201でフロントエンドサーバに指定する旨の指示を受信していれば、制御部103は、当該指示とともにサーバ装置200から送られてきた当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報をRAM105に保存する(ステップS218)。次に、制御部103は、ステップS135でサーバ装置200から送信されたフロントエンドサーバの指定を解除する旨の指示を受信したかどうかを判定する(ステップS219)。
【0138】
フロントエンドサーバの指定を解除する旨の指示を受信していなければ、制御部103は、ステップS120で同じビデオゲーム装置群に属する他のビデオゲーム装置100から送信されたログアウト要求した(すなわち、ゲームの参加の停止を要求した)ビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップ220)。ゲームの参加の停止を要求したビデオゲーム装置100を特定可能な情報を受信していれば、制御部103は、当該参加の停止を要求したビデオゲーム装置100に関する情報をRAM105から消去する(ステップS221)。そして、ステップS219の処理に戻る。
【0139】
参加の停止を要求したビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS113、S125またはS145でサーバ装置200から送信されたゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS222)。ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信した場合には、制御部103は、当該ゲームを閲覧するビデオゲーム装置100に関する情報をRAM105に保存する(ステップS223)。そして、ステップS219の処理に戻る。
【0140】
ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS127でサーバ装置200から送信されたゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS224)。ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していた場合には、制御部103は、ゲームを閲覧するものしてRAM105に保存されている当該ビデオゲーム装置100に関する情報を消去する(ステップS225)。そして、ステップS219の処理に戻る。
【0141】
ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS148でサーバ装置200から送信されたゲーム制御情報を受信したかどうかを判定する(ステップS226)。ゲーム制御情報を受信していれば、ステップS233の処理に進む。
【0142】
ゲーム制御情報を受信していなければ、制御部103は、ステップS217で同じビデオゲーム装置群に属する他のビデオゲーム装置100から送信された当該プレイヤのプレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を受信したかどうかを判定する(ステップS227)。当該プレイヤのプレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を受信していれば、ステップS233の処理に進む。
【0143】
当該プレイヤのプレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を受信していなければ、制御部103は、入力部161からプレイヤキャラクタの移動位置を指定する入力がされたかどうかを判定する(ステップS228)。プレイヤキャラクタの移動位置を指定する入力がされていれば、制御部103は、該入力された位置をRAM105に保存する(ステップS229)。そして、ステップS230の処理に進む。プレイヤキャラクタの移動位置を指定する入力がされていなければ、そのままステップS230の処理に進む。
【0144】
ステップS230では、制御部103は、プレイヤキャラクタの移動位置としてRAM105に保存されている位置とプレイヤキャラクタの現在のマップ上の位置とが同じであるかどうかを判定する。保存されている位置と現在の位置が異なれば、制御部103は、保存されている位置に向けて、プレイヤキャラクタを所定量だけ移動させる(ステップS231)。そして、ステップS232の処理に進む。保存されている位置と現在の位置が同じであるか、プレイヤキャラクタの移動位置そのものが保存されていなければ、そのままステップS232の処理に進む。
【0145】
ステップS232では、制御部103は、自分のプレイヤキャラクタの現在の位置、フロントエンドサーバとして指定されている他のビデオゲーム装置100から受信したゲーム情報により示される他のキャラクタ(他のプレイヤのプレイヤキャラクタ及びノンプレイヤキャラクタ)の位置に基づいて、プレイヤキャラクタがとるべき戦闘行動(何もしない場合もあり)を決定する。そして、ステップS233の処理に進む。
【0146】
ステップS233では、制御部103は、入力部161からの入力に基づいて決定された自己のプレイヤキャラクタの位置と戦闘行動、他の各プレイヤのビデオゲーム装置100から受信した情報が示すプレイヤキャラクタの位置と戦闘行動、及びサーバ装置200から受信したゲーム制御情報に従って、ノンプレイヤキャラクタの動作を決定する。
【0147】
次に、制御部103は、入力部161からの入力に基づいて決定された自己のプレイヤキャラクタの位置と戦闘行動、他の各プレイヤのビデオゲーム装置100から受信した情報が示すプレイヤキャラクタの位置と戦闘行動、並びにノンプレイヤキャラクタについて決定した動作を示すゲーム情報を、サーバ装置200に送信する(ステップS234)。制御部103は、また、このゲーム情報を、同じビデオゲーム装置群に属する他のビデオゲーム装置100にも送信する(ステップS235)。
【0148】
さらに、制御部103は、入力部161からの入力に基づいて決定された自己のプレイヤキャラクタの位置と戦闘行動、他の各プレイヤのビデオゲーム装置100から受信した情報が示すプレイヤキャラクタの位置と戦闘行動、並びにノンプレイヤキャラクタについて決定した動作に従って各プレイヤキャラクタ及びノンプレイヤキャラクタを動作させ、表示画面122に表示させる(ステップS236)。
【0149】
その後、制御部103は、ゲームを閲覧するだけのビデオゲーム装置100に関する情報がRAM105に保存されているかどうかを判定する(ステップS237)。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていれば、制御部103は、当該情報が示す他のビデオゲーム装置100にゲーム情報を送信する(ステップS238)。そして、ステップS219の処理に戻る。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていなければ、そのままステップS219の処理に戻る。
【0150】
ステップS219でフロントエンドサーバの指定を解除する旨の指示を受信していれば、制御部103は、ステップS218でRAM105に保存した当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報を消去する(ステップS239)。そして、ステップS202の処理に進むものとなる。
【0151】
一方、ゲームを閲覧するだけのビデオゲーム装置100(143、153、…)では、参加/閲覧の別として閲覧を指定し、さらにゲームを閲覧する戦闘区を指定してサーバ装置200にログインする。ゲームを閲覧するだけのビデオゲーム装置100は、サーバ装置200にログインすると、ステップS126で送信されたゲームを閲覧するために接続されるビデオゲーム装置100(141、142、151、152、…)を特定可能な情報がサーバ装置200から送られてくるので、これをRAM205などに登録しておく。
【0152】
ゲームを閲覧するだけのビデオゲーム装置100は、ステップS210でゲームを閲覧するために接続されるビデオゲーム装置100から送信されたゲーム情報を受信すると、受信したゲーム情報に従って各プレイヤキャラクタ及びノンプレイヤキャラクタを動作させ、表示画面122に表示させる。また、ゲームの閲覧を停止するときには、サーバ装置200に対してログアウトを要求することができる。
【0153】
以上説明したように、この実施の形態にかかるネットワークゲームでは、複数のプレイヤが自己のビデオゲーム装置100の入力部161を操作してゲームに参加し、サーバ装置200においてゲームの全体の進行が管理されるものとなっている。より具体的には、サーバ装置200は、ネットワークゲームのサービスを利用可能な各ビデオゲーム装置100の接続状況を管理するための接続情報テーブル310と、現時点でゲームに参加している各ビデオゲーム装置100におけるゲームの進行状況を管理するためのゲーム進行テーブル320を有していて、複数のプレイヤの参加によって進行するゲームの全体を一元的に管理するものとなっている。
【0154】
もっとも、サーバ装置200は、ゲームに参加している各ビデオゲーム装置100と直接的に情報を交換したり、ノンプレイヤキャラクタの動作を決定したりすることはない。ゲームは、戦闘区毎に進行されるものとなっているが、サーバ装置200は、戦闘区毎に(ビデオゲーム装置群140、150、…毎に)、何れか1つのビデオゲーム装置をフロントエンドサーバとなるビデオゲーム装置141として指定するものとしている。
【0155】
各戦闘区におけるゲームを進行するための処理のうちでノンプレイヤキャラクタの動作の決定や、各プレイヤキャラクタのパラメータの変化値の算出は、戦闘区毎に設定されたビデオゲーム装置群140、150、…のうちでフロントエンドサーバとして指定されたビデオゲーム装置141、151、…が行うものとしている。また、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信も、フロントエンドサーバとして指定されたビデオゲーム装置141が制御するものとしている。サーバ装置200は、これらの処理を行う必要が全くない。このため、サーバ装置200に多大な処理負荷をかけることなく、複数のプレイヤが各自のビデオゲーム装置100から参加するネットワークゲームを実現することができるものとなる。
【0156】
また、サーバ装置200は、各プレイヤによるゲームの進行状況を管理するためには、各々のビデオゲーム装置100で行われているゲームの進行状況に関する情報を収集する必要があるが、このような情報をサーバ装置200に送信するのも、ビデオゲーム装置群140、150、…のうちでフロントエンドサーバとして指定されたビデオゲーム装置141、151、…だけである。このため、ゲームの進行状況に関する情報を各ビデオゲーム装置100から個別にサーバ装置200に送信するよりも、通信トラフィックを軽減することができ、また、ネットワークやサーバ装置200にかかる処理負荷を軽減することができる。
【0157】
また、フロントエンドサーバとして指定されたビデオゲーム装置141、151、…は、ノンプレイヤキャラクタの動作の決定や各プレイヤキャラクタのパラメータの変化値の算出、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信の制御、サーバ装置200へのゲームの進行状況に関する情報の送信の何れも行うものとしている。このため、サーバ装置200は、ビデオゲーム装置群140、150、…に属するビデオゲーム装置140のうちから何れかを容易に指定することができる。
【0158】
さらに、ビデオゲーム装置群140、150、…に属する複数のビデオゲーム装置のうちでフロントエンドサーバとして指定されるビデオゲーム装置141は、所定時間毎に変更されるものとなっている。このため、ある時点でフロントエンドサーバとして指定されているビデオゲーム装置141に不正アクセスし、ゲームにおける不正行為を行った者がいたとしても、それとは別のビデオゲーム装置が新たにフロントエンドサーバとして指定されれば、そのような不正行為が無駄なものとなってしまう。このため、ゲームにおける不正行為がされるのを防止することができる。
【0159】
また、フロントエンドサーバとして指定されていたビデオゲーム装置141のプレイヤがゲームから離脱してしまい、フロントエンドサーバとして必要な処理が実行されなくなったことがあったとしても、それとは別のビデオゲーム装置が新たにフロントエンドサーバとして指定されれば、当該新たにフロントエンドサーバとして指定されたビデオゲーム装置141によってフロントエンドサーバとして指定されたビデオゲーム装置141、151、…は、ノンプレイヤキャラクタの動作の決定や各プレイヤキャラクタのパラメータの変化値の算出、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信の制御、サーバ装置200へのゲームの進行状況に関する情報の送信が行われるものとなる。
【0160】
このため、フロントエンドサーバとして指定されていたビデオゲーム装置141のプレイヤがゲームから離脱してしまっても、長期間に亘ってゲームの進行に障害が生じることはない。また、自己のビデオゲーム装置100がフロントエンドサーバとして指定されてしまったことで、プレイヤがゲームに参加し続けることを事実上強いられてしまうということも起こらないので、各ビデオゲーム装置100のプレイヤは、任意にゲームに参加/離脱することができるものとなる。
【0161】
また、サーバ装置200は、ビデオゲーム装置群140、150、…毎に、フロントエンドサーバとなるビデオゲーム装置141、151、…から最後に情報を受信した(或いは、フロントエンドサーバとして指定した)日時321を管理しており、この日時321から一定期間を経過しても新たな情報を受信していなければ、現時点でフロントエンドサーバとして指定しているビデオゲーム装置141、151、…との接続が切断されたものと判断している。
【0162】
このような場合においてサーバ装置200は、当該ビデオゲーム装置群140、150、…に属する他のビデオゲーム装置142、152、…のうちから任意のビデオゲーム装置を選択して新たなフロントエンドサーバとして指定するものとしている。そして、新たなフロントエンドサーバが指定されると、当該フロントエンドサーバに指定されたビデオゲーム装置141、151、…が直ちにゲームを進行させるために必要な処理を行うため、ゲームを進行させるための処理が行われない空白期間をさらに小さくすることができ、長期間に亘ってゲームの進行に障害が生じることを防ぐことができる。
【0163】
さらに、この実施の形態にかかるネットワークゲームでは、戦闘区毎に行われているゲームに積極的に参加したい訳ではないが、他のプレイヤが行っているゲームを閲覧したいという者がいる場合には、その者のビデオゲーム装置143、153、…をビデオゲーム装置群140、150、…に属する任意のビデオゲーム装置に141、142、151、152、…に接続させ、そこからゲームの進行情報に関する情報が送られてくるものとしている。
【0164】
このように他のプレイヤが行っているゲームを閲覧したい者がいる場合に、サーバ装置200は、その者のビデオゲーム装置143、153、…にゲームの進行状況に関する情報を送信する処理からも解放されることとなるので、さらにサーバ装置200の処理負荷を軽減することができる。特定の戦闘区においてゲームを閲覧したい者が多数いる場合であっても、それらの者のビデオゲーム装置143、153、…が接続されるビデオゲーム装置141、142、151、152、…を分散させることができるので、ゲームを閲覧だけさせるためにビデオゲーム装置群140、150、…に属する各ビデオゲーム装置141、142、151、152、…にかかる処理が大きくなりすぎてしまうことはない。
【0165】
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【0166】
上記の実施の形態では、サーバ装置200は、ビデオゲーム装置群140、150、…毎にフロントエンドサーバとして指定するビデオゲーム装置141、151、…を所定時間毎に変更するものとしていた。もっとも、フロントエンドサーバの指定を変える時間間隔は、固定のものとするのではなく、個々のビデオゲーム装置100にかかる処理負荷を考慮して変更するものとしてもよい。例えば、ビデオゲーム装置群140、150、…に属するビデオゲーム装置141、142、151、152、…の数に応じて、フロントエンドサーバとして指定するビデオゲーム装置141、151、…を変更するものとしてもよい。
【0167】
また、サーバ装置200がビデオゲーム装置群140、150、…毎のフロントエンドサーバの指定を変える契機は、このような所定時間の到来というものに限るものではなく、例えば、当該戦闘区でのゲームにおいて所定のイベント(但し、上記の所定時間と同等の時間間隔で発生することが期待されるもの)が生じたこととしてもよい。また、新たなフロントエンドサーバの選択は、ゲーム進行テーブル320に登録された順番で行うものとしても、ランダムに決めるものとしてもよい。ビデオゲーム装置100毎に処理能力に差があり、サーバ装置200がその差を認識できるのであれば、その処理能力の違いに応じて重み付けをして決定するものとしてもよい。
【0168】
上記の実施の形態では、各プレイヤキャラクタは、対応するビデオゲーム装置100の入力部161からの入力に従って移動し、対応するビデオゲーム装置100で実行されるAIルーチンで戦闘行動が決められるものとなっていたが、戦闘区内のプレイヤキャラクタの動作の決定も、フロントエンドサーバに指定されたビデオゲーム装置141、151、…で集中して行うものとしてもよい。この場合、フロントエンドサーバ以外のビデオゲーム装置142、152、…は、プレイヤによって入力部161からどのような入力がされたかを示す情報をフロントエンドサーバとなるビデオゲーム装置141、151、…に送り、そこで決定された動作を示す情報を受け取るものとしてもよい。
【0169】
上記の実施の形態では、フロントエンドサーバに指定されたビデオゲーム装置141、151、…は、ノンプレイヤキャラクタの動作の決定、各プレイヤキャラクタのパラメータの変化値の算出、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信、各々のビデオゲーム装置100で行われているゲームの進行状況に関する情報のサーバ装置200への送信の全てを、1台で制御するものとしていた。
【0170】
しかしながら、これらの複数種類の処理を、ビデオゲーム装置群140、150、…に属するビデオゲーム装置141、142、151、152、…のうちの2以上のビデオゲーム装置で分散して行うものとしてもよい。例えば、ノンプレイヤキャラクタの動作の決定、各プレイヤキャラクタのパラメータの変化値の算出は、第1のビデオゲーム装置が行うが、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信や、各々のビデオゲーム装置100で行われているゲームの進行状況に関する情報のサーバ装置200への送信は、第2のビデオゲーム装置で行うものとしてもよい。サーバ装置200は、これらの処理のうちでどの処理をどのビデオゲーム装置に行わせるかを、個別に指定するものとしてもよい。
【0171】
上記の実施の形態では、戦闘区毎のノンプレイヤキャラクタの動作の決定は、ビデオゲーム装置群140、150、…においてフロントエンドサーバとして指定されたビデオゲーム装置141、151、…が1台で行うものとしていた。これに対して、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100のうちの2台以上で分散して、ノンプレイヤキャラクタの動作を決定するものとしてもよい。2台以上に分散して行うものとする場合、サーバ装置200は、どのノンプレイヤキャラクタの動作を決定させるかまでを決定するものとすることができる。
【0172】
この場合、戦闘区において登場するノンプレイヤキャラクタの数が非常に多く、ノンプレイヤキャラクタの動作の決定のための処理負荷が比較的大きなものであっても、2以上のビデオゲーム装置100で分散して行えばよいので、1台のビデオゲーム装置100にかかる処理負荷が過大にならないで済むようになる。
【0173】
上記の実施の形態では、他のプレイヤが行っているゲームを閲覧したい者のビデオゲーム装置143、153、…は、フロントエンドサーバに指定されているかどうかに関わらずに指定した戦闘区のビデオゲーム装置群140、150、…に属するビデオゲーム装置141、142、151、152、…に接続されるものとしていた。もっとも、フロントエンドサーバとして指定されたビデオゲーム装置141、151、…は、それ以外のビデオゲーム装置142、152、…よりも処理負荷が大きいので、ここにゲームを閲覧したい者のビデオゲーム装置143、153、…が接続されるとさらに処理負荷が大きくなってしまう。
【0174】
そこで、他のプレイヤが行っているゲームを閲覧したい者のビデオゲーム装置143、153、…は、フロントエンドサーバとして指定されていないビデオゲーム装置142、153、…だけに接続されるものとしてもよい。新たにフロントエンドサーバとなるビデオゲーム装置141、151、…を指定した場合には、サーバ装置200は、これに接続されていたゲームを閲覧したい者のビデオゲーム装置143、153、…に対して、別のビデオゲーム装置142、152、…を指定して接続させるものとしてもよい。
【0175】
このようにビデオゲーム装置群140、150、…に属するビデオゲーム装置のうちでフロントエンドサーバとして指定されていないビデオゲーム装置142、152、…は、フロントエンドサーバとして指定されているビデオゲーム装置141、151、…に比べて処理負荷が軽いので、このようなビデオゲーム装置142、152、…にビデオゲーム装置143、153、…を接続させることによって、非常に多くの者に対してゲームを閲覧させることができるようになる。
【0176】
上記の実施の形態では、サーバ装置200は、フロントエンドサーバとして指定したビデオゲーム装置100からの情報の受信を監視しており、所定期間何らの情報も受信されていなければ、これを強制的にログアウトさせるものとしていた。しかし、フロントエンドサーバとして指定されていないものについては、このようなことが行われないので、ゲームへの参加や閲覧を止めていても、強制的にログアウトされることはなかった。
【0177】
そこで、フロントエンドサーバとして指定されているビデオゲーム装置100以外にゲームに参加するビデオゲーム装置100については、フロントエンドサーバとして指定されたビデオゲーム装置100において情報の受信を監視するものとしてもよい。フロントエンドサーバとして指定されたビデオゲーム装置100が一定期間以上、プレイヤキャラクタの位置と戦闘行動を示す情報を受信していないビデオゲーム装置100があったならば、その旨をフロントエンドサーバとなるビデオゲーム装置100からサーバ装置200に通知し、強制的にログアウトさせるものとしてもよい。
【0178】
また、ゲームを閲覧するだけのビデオゲーム装置100については、閲覧先とされているビデオゲーム装置100が定期的に情報の送信を要求し、所定回数を超えて応答のなかったビデオゲーム装置100をフロントエンドサーバを介してサーバ装置200に通知するものとしてもよい。サーバ装置200は、その通知に基づいて、ゲームを閲覧するだけのビデオゲーム装置100も強制的にログアウトさせるものとすることができる。
【0179】
上記の実施の形態では、ゲームに参加するプレイヤがログイン時に戦闘区を決めると、以下、当該プレイヤのプレイヤキャラクタは、ログアウトするまで同じ戦闘区でゲームを行うことを前提として説明していた。もっとも、プレイヤキャラクタは、ゲーム中に戦闘区を移動できるものとしてもよい。例えば、各戦闘区のマップの周囲に、他の戦闘区のマップの一部を周辺領域として付加しておく。プレイヤがプレイヤキャラクタの移動位置として周辺領域を指定した場合には、当該プレイヤのビデオゲーム装置100を指定した周辺領域内の位置が本来属する戦闘区におけるビデオゲーム装置群に移行させるものとしてもよい。
【0180】
具体的に説明すると、戦闘区Aのマップ上に戦闘区Bのマップの一部が周辺領域として付加され、戦闘区Bのマップに戦闘区Aのマップの一部が周辺領域として付加されているものとする。戦闘区Aでのゲームに参加するプレイヤは、戦闘区Bのマップに周辺領域となっている範囲に自己のプレイヤキャラクタが存在するときに、戦闘区Bの範囲内の位置(戦闘区Aのマップに周辺領域として付加されている領域)もプレイヤキャラクタの移動位置として指定することができるものとする。
【0181】
そのビデオゲーム装置100がフロントエンドサーバとして指定されているものであれば、戦闘区Bの範囲内の位置がプレイヤキャラクタの移動位置として指定されたことを直接サーバ装置200に通知し、フロントエンドサーバとして指定されているものでなければ、戦闘区Bの範囲内の位置がプレイヤキャラクタの移動位置として指定されたビデオゲーム装置100に関する情報をサーバ装置200に通知するものとすればよい。
【0182】
サーバ装置200は、これらの通知がされると、対応するビデオゲーム装置100について接続状況テーブル310に登録されている戦闘区区分316を書き換えるとともに、新たな戦闘区においてフロントエンドサーバとして指定されているビデオゲーム装置100に、新たな戦闘区に移動してゲームに参加するビデオゲーム装置100に関する情報を送信するものとすればよい。また、新たな戦闘区に移動してゲームに参加するビデオゲーム装置100に対して、当該戦闘区において現時点で指定されているビデオゲーム装置100に関する情報を送信するものとすればよい。
【0183】
さらに、新たな戦闘区に移動してゲームに参加しようとするビデオゲーム装置100が、これまでの戦闘区でのゲームにおいてフロントエンドサーバとして指定されていたのであれば、これまでの戦闘区でゲームを行っている他のビデオゲーム装置100を当該戦闘区における新たなフロントエンドサーバとして選択するものとすればよい。また、新たな戦闘区に移動してゲームに参加しようとするビデオゲーム装置100を閲覧先としてゲームを閲覧していたビデオゲーム装置100には、当該戦闘区のゲームに参加している他のビデオゲーム装置100を新たな閲覧先として通知するものとすればよい。
【0184】
このような処理により、各ビデオゲーム装置100のプレイヤは、戦闘区という区分を意識することなく、広いゲーム空間内で自由に自己のプレイヤキャラクタを移動させて、ゲームを行えるようになる。
【0185】
上記の実施の形態では、サーバ装置200は、1台でネットワークゲームのサービスを利用可能な全てのビデオゲーム装置100の接続状況を管理し、戦闘区毎(ビデオゲーム装置群140、150、…毎)のゲームの進行を管理するものとしていたが、複数のサーバ装置によってサーバ装置群を形成し、これらの処理を別個のサーバ装置に分散して行うものとしてもよい。ゲームの進行は、戦闘区毎に(ビデオゲーム装置群140、150、…毎に)別のサーバ装置を用いて制御するものとしてもよい。
【0186】
上記の実施の形態では、ゲームに参加するプレイヤは、戦闘区と所属チームとを指定し、後はプレイヤキャラクタの移動位置を自動的に指定していくだけでゲームが進行していくシミュレーションゲームを例として説明した。もっとも、本発明は、ロールプレイングゲーム等の他のジャンルのゲームに対しても適用することができる。また、プレイヤキャラクタのチーム同士で対戦するのではなく、プレイヤキャラクタ対ノンプレイヤキャラクタという形で対戦を行うゲームにも、本発明を適用することができる。
【0187】
上記の実施の形態では、ビデオゲームを実行するプラットフォームとなる装置としてゲーム専用機であるビデオゲーム装置100を適用していた。これに対して、本発明は、ビデオゲーム装置100と同様の構成要素を備え、ネットワーク接続機能を有するものであれば、汎用のパーソナルコンピュータなどをプラットフォームとして実現されるものとしてもよい。表示装置121及びサウンド出力装置125を装置本体101と同一の筐体内に納めた構成を有する携帯ゲーム機(アプリケーションの実行機能を有する携帯電話機を含む)を適用するものとしてもよい。
【0188】
記録媒体131としては、DVD−ROMやCD−ROMの代わりに半導体メモリーカードを適用することができる。このメモリーカードを挿入するためのカードスロットをDVD/CD−ROMドライブ113の代わりに設けることができる。汎用のパーソナルコンピュータの場合には、本発明に係るプログラム及びデータを記録媒体131に格納して提供するのではなく、HDD107に予め格納して提供してもよい。本発明にかかるプログラム及びデータを格納して提供するための記録媒体は、ハードウェアの物理的形態及び流通形態に応じて任意のものを適用することができる。
【0189】
上記の実施の形態では、ビデオゲーム装置100のプログラム及びデータは、記録媒体131に格納されて配布されるものとしていた。これに対して、これらのプログラム及びデータをネットワーク上に存在するサーバ装置が有する固定ディスク装置に格納しておき、装置本体101にネットワークを介して配信するものとしてもよい。ビデオゲーム装置100において、通信インターフェイス115がサーバ装置から受信したプログラム及びデータは、HDD107に保存し、実行時にRAM105にロードすることができる。サーバ装置200のプログラム及びデータについても同様である。
【図面の簡単な説明】
【0190】
【図1】本発明の実施の形態にかかるネットワークゲームシステムの構成を示すブロック図である。
【図2】図1のビデオゲーム装置の構成を示すブロック図である。
【図3】図1のサーバ装置の構成を示すブロック図である。
【図4】図1、図3のサーバ装置において管理されるテーブル群を示す図である。
【図5】本発明の実施の形態にかかるネットワークゲームの進行を模式的に示す図である。
【図6】本発明の実施の形態にかかるネットワークゲームの進行を模式的に示す図である。
【図7】図1、図3のサーバ装置において実行される処理を示すフローチャートである。
【図8】図1、図3のサーバ装置において実行される処理を示すフローチャートである。
【図9】図1、図2のビデオゲーム装置において、ネットワークゲームに参加する場合に実行される処理を示すフローチャートである。
【図10】図1、図2のビデオゲーム装置において、ネットワークゲームに参加する場合に実行される処理を示すフローチャートである。
【符号の説明】
【0191】
100(141〜143、151〜153) ビデオゲーム装置
101 ビデオゲーム本体
103 制御部
105 RAM
107 HDD
109 サウンド処理部
111 グラフィック処理部
112 フレームメモリ
113 DVD/CD−ROMドライブ
115 通信インターフェイス
117 インターフェイス部
119 内部バス
121 表示装置
122 表示画面
125 サウンド出力装置
131 記録媒体
140、150 ビデオゲーム装置群
200 サーバ装置
201 サーバ本体
203 制御部
205 RAM
207 HDD
213 DVD/CD−ROMドライブ
215 通信インターフェイス
231 記録媒体
【技術分野】
【0001】
本発明は、複数のプレイヤが参加してゲームが進行するネットワークゲームに関するものである。
【背景技術】
【0002】
近年のネットワーク技術の進歩に伴い、複数のプレイヤが参加してゲームが進行するネットワークゲーム(オンラインゲーム)が盛んに行われるようになってきている。ネットワークゲームを行うためのシステムは、ネットワークゲームを運営する者が管理するサーバ装置と、このサーバ装置にインターネットなどのネットワークを介して接続可能な各プレイヤのクライアント装置とから構成されるものとなっている。
【0003】
ネットワークゲームでも、プレイヤは、プレイヤキャラクタに対する指示をビデオゲーム装置等のクライアント装置において入力装置から入力し、これに従ってゲームを進行するものとなっている。もっとも、ネットワークゲームは、一人のプレイヤだけでゲームを進行させるものではなく、他のプレイヤのプレイヤキャラクタも登場してゲームを進行させるものとなっている。さらに、何れのプレイヤのプレイヤキャラクタでもないノンプレイヤキャラクタがゲームの進行において登場するネットワークゲームもある。これらは、何れのプレイヤのクライアント装置においても同様に動作するものでなければならない。
【0004】
つまり、多数のプレイヤのプレイヤキャラクタの動作やノンプレイヤキャラクタの動作が、矛盾しないように各プレイヤのクライアント装置に通知される必要があるため、従来のネットワークゲームでは、プレイヤキャラクタの動作に関する指示が全てのクライアント装置からサーバ装置に集められ、ノンプレイヤキャラクタの動作の決定などのゲームの進行のために必要な処理をサーバ装置がまとめて行い、その処理結果に応じた情報を各クライアント装置に配信するものとしていた(例えば、特許文献1参照)。
【0005】
【特許文献1】特開2003−325984号公報(段落0059、0060等)
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1のように、ゲームを進行するための処理をサーバ装置が全て行わなければならないものとすると、サーバ装置にかかる処理負荷が大きくなってしまうという問題があった。特に、複数のプレイヤキャラクタの動作がゲームの進行に相互に影響し合うようなゲームであると、プレイヤの増加に対して、サーバ装置の処理の計算量が2乗以上のオーダーで増加してしまうこともあった。
【0007】
さらに、各プレイヤキャラクタの動作がノンプレイヤキャラクタの動作に影響を与えたり、各ノンプレイヤキャラクタの動作が各プレイヤキャラクタや他のノンプレイヤキャラクタの動作に影響を与えたりするものであると、全体としてのキャラクタの数に対する計算量の増加が顕著になってしまうという問題があった。この問題を解決するには、サーバ装置の処理能力を高めるか、プレイヤキャラクタやノンプレイヤキャラクタの数を制限するということが考えられるが、前者の場合にはコストがかかり、後者の場合にはネットワークゲームとしての面白味を半減させてしまうという問題があった。
【0008】
また、ネットワークゲームは、一般に、不特定多数の者が参加するものであるため、ネットワークゲームをプレイするプレイヤの中には、例えば、サーバ装置に不正アクセスするなどしてゲームにおける不正行為をするものが存在する場合もある。このような者の存在は、他の多くのプレイヤに迷惑をかけてしまうこととなるので、多くの人にゲームを楽しんで貰おうとするならば、不正を行う者を早急に排除する必要がある。ネットワークゲームの運営者にとっては、そのための管理コストも馬鹿にならないという問題があった。
【0009】
本発明は、ネットワークゲーム全体の進行を管理するサーバ装置に多大な負荷をかけることなく、複数のプレイヤがネットワークゲームに参加することのできるネットワークゲームシステム等を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明の第1の観点にかかるネットワークゲームシステムは、サーバ装置と、各々が所定のネットワークを介して該サーバ装置に接続可能であると共に、前記サーバ装置を介することなく前記所定のネットワークを介して互いに接続可能な複数のクライアント装置から構成されるクライアント群とを備えるネットワークゲームシステムであって、前記サーバ装置は、前記複数のクライアント装置の各々の接続状況を管理する接続状況管理手段と、前記複数のクライアント装置の各々におけるゲームの進行状況を管理するゲーム進行状況管理手段と、前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、ゲームを進行するための処理のうちの所定の処理を実行するための実行クライアントとして指定し、該実行クライアントの指定に関する情報を、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する実行クライアント指定手段と、前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、該クライアント群におけるゲームの進行に関する情報をやりとりするための管理クライアントとして指定し、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する管理クライアント指定手段と、前記管理クライアント指定手段により指定した前記管理クライアントから前記クライアント群におけるゲーム進行情報を受信する対クライアント群受信手段と、前記対クライアント群受信手段により受信されたゲーム進行情報に基づいて、前記ゲーム進行状況管理手段により管理されている前記複数のクライアント装置の各々におけるゲームの進行状況を更新するゲーム進行状況更新手段とを備え、前記複数のクライアント装置は、それぞれ、プレイヤの操作により、ゲームを進行するための所定の入力を行う入力手段と、前記実行クライアント指定手段により前記実行クライアントとして指定されたときに、前記所定の処理を実行する所定処理実行手段と、前記クライアント群に属する各クライアント装置についての前記入力手段からの入力に応じたゲーム入力情報と、前記所定処理実行手段による前記所定の処理の実行に応じたゲーム実行情報とに応じたクライアント群内ゲーム情報を、前記クライアント群に属する他のクライアント装置との間で前記所定のネットワークを介して互いに送受信するクライアント群内送受信手段と、前記管理クライアント指定手段により前記管理クライアントとして指定されたときに、前記クライアント群に属する各クライアント装置についての前記ゲーム入力情報と前記ゲーム実行情報とに応じた前記ゲーム進行情報を前記所定のネットワークを介して前記サーバ装置に送信するクライアント群外送信手段とを備え、前記実行クライアント指定手段は、所定の契機毎に、前記クライアント群に属する複数のクライアント装置のうちで前記実行クライアントとして指定するクライアント装置を変更することを特徴とする。
【0011】
上記ネットワークゲームシステムは、複数のクライアント装置を含んでおり、各クライアント装置のプレイヤは、その操作により入力手段から所定の入力を行うことによってゲームを進行することができる。また、上記ネットワークゲームシステムは、サーバ装置を含んでおり、各クライアント装置の各々の接続状況とゲームの進行状況がサーバ装置において管理されているので、複数のプレイヤの参加によって進行するゲームの全体がサーバ装置において一元的に管理されるものとなっている。
【0012】
もっとも、ゲームを実際に進行する際には、複数のクライアント装置により構成されるクライアント群の中から任意のクライアント装置が実行クライアントとしてサーバ装置によって指定される。ゲームを進行するための処理のうちの所定の処理は、実行クライアントとして指定されたクライアント装置において行われる。また、ゲーム入力情報、ゲーム実行情報などのクライアント群内ゲーム情報は、クライアント群に属するクライアント装置同士で送受信される。このため、サーバ装置に多大な処理負荷をかけることなく、複数のプレイヤが各自のクライアント装置から参加するゲームを実現することができるものとなる。
【0013】
また、ゲームを実際に進行する際には、複数のクライアント装置により構成されるクライアント群の中から任意のクライアント装置が管理クライアントとしてサーバ装置によって指定される。ゲームの進行状況をサーバ装置において一元管理するためには、ゲーム進行情報をサーバ装置に送る必要があるが、これは、管理クライアントからまとめてサーバ装置に送られるため、このような情報を複数のクライアント装置の各々から送信する場合よりも通信トラフィックを軽減することができ、また、サーバ装置の処理負荷も軽減することができる。
【0014】
さらに、クライアント群に属する複数のクライアント装置のうちで実行クライアントとして指定されるクライアント装置は、所定の期間毎に変更されるものとなっている。このため、ある時点の実行クライアントに不正アクセスしてゲームにおける不正行為が行われることがあったとしても、新たに所定の期間が到来して別のクライアント装置が実行クライアントとして指定されてしまえば、不正行為を働いたことが無駄になってしまう。このため、ゲームにおける不正行為がされるのを防止することができる。
【0015】
さらに、実行クライアントとして指定されていたクライアント装置がゲームから離脱して所定の処理が実行されなくなってしまっても、新たに所定の期間が到来して別のクライアント装置が実行クライアントとして指定されれば、当該新たに実行クライアントとして指定されたクライアント装置によって所定の処理を実行して、ゲームを進行させることができるものとなる。このため、実行クライアントとして指定されたクライアント装置がゲームから離脱してしまっても、長期間に亘ってゲームの進行に障害が生じることはない。また、実行クライアントとして指定されたクライアント装置のプレイヤがゲームに参加し続けることを強いられることがなく、各クライアント装置のプレイヤは、任意にゲームに参加/離脱することができるものとなる。
【0016】
なお、前記サーバ装置は、単体のコンピュータ装置により構成されるものだけではなく、複数のコンピュータ装置からなるコンピュータ装置群によって構成されるものであってもよい。また、前記実行クライアント指定手段が実行クライアントの指定を変更する所定の契機は、所定の期間が到来することとしてもよい。この所定の期間は、固定の期間であってもよいし、可変の期間であってもよい。
【0017】
上記ネットワークゲームシステムにおいて、前記実行クライアント指定手段が前記実行クライアントとして指定するクライアント装置と、前記管理クライアント指定手段が前記管理クライアントとして指定するクライアント装置は、同一のクライアント装置であってもよい。
【0018】
この場合、サーバ装置は、クライアント群に属する複数のクライアント装置のうちから実行クライアントと管理クライアントとを別々に指定しなくてもよいので、クライアント装置の指定の処理が容易になる。
【0019】
上記ネットワークゲームシステムにおいて、前記実行クライアント指定手段は、前記クライアント群に属する複数のクライアント装置のうちの2以上のクライアント装置を前記実行クライアントとして指定する複数指定手段を含むものとすることができる。
【0020】
この場合、ゲームを進行させるための所定の処理の処理負荷が比較的大きなものであっても、その所定の処理を実行クライアントとして指定された2以上のクライアント装置で分散して行えばよいので、1台のクライアント装置にかかる処理負荷だけが大きくなり過ぎずに済むものとなる。
【0021】
上記ネットワークゲームシステムにおいて、前記サーバ装置は、前記クライアント群に属する複数のクライアント装置のうちで少なくとも前記実行クライアントとして指定しているクライアント装置との通信が切断されたかどうかを判定する切断判定手段をさらに備えていてもよい。この場合において、前記実行クライアント指定手段は、前記実行クライアントとして指定しているクライアント装置との通信が切断されたと前記切断判定手段により判定されたときに、前記クライアント群に属する他のクライアント装置を前記指定クライアントとして指定するものとすることができる。
【0022】
この場合は、実行クライアントとして指定しているクライアント装置との通信が切断されたと判定されると、直ちに新たなクライアント装置が実行クライアントとして指定されるので、ゲームを進行させるための所定の処理が行われない空白期間をさらに小さくすることができ、長期間に亘ってゲームの進行に障害が生じることはない。
【0023】
上記ネットワークゲームシステムは、前記サーバ装置を介することなく前記所定のネットワークを介して前記クライアント群に属する任意のクライアント装置に接続可能な群外クライアント装置をさらに含んでいてもよい。この場合において、前記複数のクライアント装置は、それぞれ、前記クライアント群に属さない他のクライアント装置に前記クライアント群内ゲーム情報を送信するクライアント群外送信手段をさらに備えるものとすることができ、前記群外クライアント装置は、前記クライアント群外送信手段から送信されたクライアント群内ゲーム情報を受信するクライアント群内ゲーム情報受信手段と、前記クライアント群内ゲーム情報受信手段の受信したクライアント群内ゲーム情報に基づいて、前記クライアント群におけるゲームの進行状況を示す情報を出力するゲーム進行状況出力手段とを備えるものとすることができる。
【0024】
この場合、クライアント群に属するクライアント装置のプレイヤ同士で行われているゲームに積極的に参加したい訳ではないが、他のプレイヤの行っているゲームを閲覧したい者がいる場合は、その者の群外クライアント装置は、クライアント群に属する任意のクライアント装置に接続させるものとすればよい。クライアント群に属する複数のクライアント装置のうちで実行クライアントとしても管理クライアントとしても指定されていないクライアント装置は、比較的処理負荷が軽いので、このようなクライアント装置に群外クライアント装置を接続させることによって、非常に多くの者に対してゲームを閲覧させることができるようになる。
【0025】
上記目的を達成するため、本発明の第2の観点にかかるプログラムは、他のコンピュータ装置を介することなく所定のネットワークを介して互いに接続可能な複数のクライアント装置から構成されるクライアント群に属する各クライアント装置と前記所定のネットワークを介して接続可能なコンピュータ装置を、前記複数のクライアント装置の各々の接続状況を管理する接続状況管理手段、前記複数のクライアント装置の各々におけるゲームの進行状況を管理するゲーム進行状況管理手段、前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、ゲームを進行するための処理のうちの所定の処理を実行するための実行クライアントとして指定し、該実行クライアントの指定に関する情報を、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する実行クライアント指定手段、前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、該クライアント群におけるゲームの進行に関する情報をやりとりするための管理クライアントとして指定し、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する管理クライアント指定手段、前記管理クライアント指定手段により指定した前記管理クライアントから前記クライアント群におけるゲーム進行情報を受信するゲーム進行情報受信手段、及び、前記ゲーム進行情報受信手段により受信されたゲーム進行情報に基づいて、前記ゲーム進行状況管理手段により管理されている前記複数のクライアント装置の各々におけるゲームの進行状況を更新するゲーム進行状況更新手段として機能させ、前記実行クライアント指定手段は、所定の期間毎に、前記クライアント群に属する複数のクライアント装置のうちで前記実行クライアントとして指定するクライアント装置を変更することを特徴とする。
【0026】
上記目的を達成するため、本発明の第3の観点にかかるプログラムは、所定のネットワークを介してサーバ装置に接続可能であると共に、前記サーバ装置を介することなく前記所定のネットワークを介して同一のコンピュータ装置群に属する他のコンピュータ装置に接続可能なコンピュータ装置を、プレイヤの操作により入力手段から入力されたゲームを進行するための所定の入力を受け付ける入力受付手段、前記サーバ装置からの通知に基づいて、前記コンピュータ装置群に属するコンピュータ装置の中でゲームを進行するための処理のうちの所定の処理を実行するための実行コンピュータ装置として指定されたときに、該所定の処理を実行する所定処理実行手段、前記入力受付手段が受け付けた入力に応じたゲーム入力情報と、前記所定処理実行手段による前記所定の処理の実行に応じたゲーム実行情報とに応じた群内ゲーム情報を、前記コンピュータ群に属する他のコンピュータ装置との間で前記所定のネットワークを介して互いに送受信する群内送受信手段、及び、前記サーバ装置からの通知に基づいて、前記コンピュータ装置群におけるゲームの進行に関する情報を該サーバ装置とやりとりするための管理コンピュータ装置として指定されたときに、当該コンピュータ群に属する各コンピュータ装置についての前記ゲーム入力情報と前記ゲーム実行情報とに応じた前記ゲーム進行情報を前記所定のネットワークを介して前記サーバ装置に送信する群外送信手段として機能させることを特徴とする。
【0027】
上記第2、第3の観点にかかるプログラムは、コンピュータ読み取り可能な記録媒体に記録して提供することができる。このコンピュータ読み取り可能な記録媒体は、上記コンピュータ装置に着脱可能に構成され、上記コンピュータ装置とは別個に提供される記録媒体としてもよい。このコンピュータ読み取り可能な記録媒体は、上記コンピュータ装置内に設けられ、上記コンピュータ装置と共に提供される固定ディスク装置などの記録媒体としてもよい。上記第2、第3の観点にかかるプログラムは、ネットワーク上に存在するサーバ装置から、そのデータ信号を搬送波に重畳して、ネットワークを通じて上記コンピュータ装置に配信することもできる。
【0028】
また、上記第1の観点にかかるネットワークゲームシステムを構成するサーバ装置及びクライアント装置は、それぞれ単体でも本発明の範囲に含まれるものである。また、上記第2、第3の観点にかかるプログラムにより実現される各手段を備えるコンピュータ装置も、本発明の範囲に含まれるものである。また、上記第1の観点にかかるネットワークシステムに含まれる各手段の実行する処理を各ステップの処理として実行する方法、並びに上記第2、第3の観点にかかるプログラムに含まれる各手段の実行する処理を各ステップの処理として実行する方法も、本発明の範囲に含まれる。
【発明を実施するための最良の形態】
【0029】
以下、添付図面を参照して、本発明の実施の形態について説明する。
【0030】
図1は、この実施の形態にかかるネットワークゲームが行われるネットワークシステムの構成を示すブロック図である。図示するように、この実施の形態にかかるネットワークゲームシステムは、インターネット等のネットワーク(物理的な接続のみで論理的な接続がされてないものは図示せず)に接続される複数のビデオゲーム装置100(141〜143、151〜153、…)と、サーバ装置200とから構成される。複数のビデオゲーム装置100のうちの任意の2以上のビデオゲーム装置100同士で、ビデオゲーム装置群140、150、…が形成される。
【0031】
サーバ装置200は、この実施の形態にかかるネットワークゲームの全体の進行を管理するものであり、各ビデオゲーム装置100の接続状況と各ビデオゲーム装置100にて行われているゲームの状況を管理している。ビデオゲーム装置100は、いずれもネットワークを介してサーバ装置200に接続することが可能である。もっとも、同一のビデオゲーム装置群140、150、…に属するビデオゲーム装置100同士では、サーバ装置200を介さずに、ネットワークを介してピアツーピアで互いに接続することが可能である。
【0032】
ビデオゲーム装置群140、150、…のそれぞれに属する2以上のビデオゲーム装置100のうちで何れか1つのビデオゲーム装置141、151、…が、サーバ装置200からの指定によってフロントエンドサーバとなる(もっとも、サーバ装置200との関係ではクライアント)。フロントエンドサーバとなるビデオゲーム装置141、151、…は、サーバ装置200からの指定によって所定期間毎に変更される。ビデオゲーム装置141、151、…がフロントエンドサーバとなるのに対して、サーバ装置200は、バックエンドサーバとなる。また、他のビデオゲーム装置142、152、…は、フロントエンドサーバとなるビデオゲーム装置141、151、…に対するクライアントとなる。
【0033】
この実施の形態にかかるネットワークゲームは、ビデオゲーム装置100の各プレイヤがAチームとBチームとに別れ、チームで対戦するゲームである。ゲームのマップ上には、複数の戦闘区が設定されており、ビデオゲーム装置100の各プレイヤは、自らのプレイヤキャラクタを所属させるチームと戦闘区とを決め、ゲームに参加する。ビデオゲーム装置群140、150、…は、この戦闘群毎に設けられるものである。同一のビデオゲーム装置群140、150、…に属するビデオゲーム装置100は、互いにサーバ装置200を介さずにネットワークを介してピアツーピアで情報を交換しながら、当該戦闘区におけるゲームを進めるものとなる。
【0034】
もっとも、フロントエンドサーバとなるビデオゲーム装置141、151、…だけは、ネットワークを介してサーバ装置200と接続し、戦闘の進行状況に関する情報を随時サーバ装置200に送信するものとしている。また、フロントエンドサーバとなるビデオゲーム装置141、151、…だけは、サーバ装置200がゲームの進行を制御するために必要な情報があれば、これをサーバ装置200から受信するものとしている。
【0035】
ビデオゲーム装置100の各プレイヤは、選択した戦闘区におけるマップ上でプレイヤキャラクタの位置を順次指定していき、指定した位置にプレイヤキャラクタが達するまでに敵チームのキャラクタに遭遇すると自動的に戦闘を開始する。各々のプレイヤキャラクタの遭遇した敵チームのキャラクタに対する戦闘行動を決めるためのAIルーチンは、ビデオゲーム装置100のそれぞれで実行されるゲームプログラムに含まれているが、これは、当該プレイヤキャラクタに対応するプレイヤのビデオゲーム装置100において実行される。
【0036】
また、この実施の形態にかかるネットワークゲームでは、ビデオゲーム装置群140、150、…毎に、各プレイヤの操作に従って動作するプレイヤキャラクタ以外にノンプレイヤキャラクタが登場する。ノンプレイヤキャラクタは、AIルーチンの実行によりプレイヤの操作によらずに自動的に動作するものである。ビデオゲーム装置100のそれぞれで実行されるゲームプログラムが、このAIルーチンを含んでいる。もっとも、ノンプレイヤキャラクタを動作させるためのAIルーチンを実行するビデオゲーム装置100は、フロントエンドサーバとなっているビデオゲーム装置141、151、…だけである。
【0037】
また、フロントエンドサーバとなるビデオゲーム装置141、151、…は、同一のビデオゲーム装置群140、150、…に属する他のビデオゲーム装置142、152、…からプレイヤキャラクタの位置や戦闘行動などの情報を収集し、ノンプレイヤキャラクタの動作も含めて、各プレイヤキャラクタのパラメータの変化値を計算する。各プレイヤのパラメータの変化値や、ノンプレイヤキャラクタの動作に関する情報も、同一のビデオゲーム装置群140、150、…に属するビデオゲーム装置100同士がサーバ装置200を介さずにピアツーピアで交換し合うものである。
【0038】
さらに、この実施の形態にかかるネットワークゲームでは、ゲームそのものには参加せずに他人の行っているゲームを戦闘区毎に閲覧することができる。他人の行っているゲームを閲覧するだけのビデオゲーム装置143、153、…は、閲覧したい戦闘区に対応したビデオゲーム装置群140、150、…に含まれる任意のビデオゲーム装置141、142、151、152、…とサーバ装置200を介さずにピアツーピアで接続され、そこからゲームの進行状況に関する情報が送られてくるものとなる。
【0039】
もっとも、図1のネットワークゲームシステムにおいてビデオゲーム装置100同士をピアツーピアで接続するための制御は、サーバ装置200が行うものとなっている。つまり、各ビデオゲーム装置100からゲームに参加する、またはゲームを閲覧するためには、最初にサーバ装置200に接続して、他のビデオゲーム装置100とピアツーピアで情報を交換するために必要な情報を得なければならない。また、新たなビデオゲーム装置100がゲームに参加する、またはゲームを閲覧する場合には、これと情報交換される既にゲームに参加しているビデオゲーム装置100に必要な情報が通知されるものとなっている。
【0040】
次に、ビデオゲーム装置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を含む。
【0041】
この装置本体101のサウンド処理部109は、スピーカーであるサウンド出力装置125に、グラフィック処理部111は、表示画面122を有する表示装置121に接続されている。DVD/CD−ROMドライブ113には、記録媒体(本実施の形態では、DVD−ROMまたはCD−ROM)131を装着し得る。通信インターフェイス115は、ネットワークに接続される。インターフェイス部117には、入力部(コントローラ)161とメモリーカード162とが接続されている。
【0042】
制御部103は、CPU(Central Processing Unit)やROM(Read Only Memory)などを含み、HDD107や記録媒体131上に格納されたプログラムを実行し、装置本体101の制御を行う。制御部103は、内部タイマを備えている。RAM105は、制御部103のワークエリアである。HDD107は、プログラムやデータを保存するための記憶領域である。サウンド処理部109は、制御部103により実行されているプログラムがサウンド出力を行うよう指示している場合に、その指示を解釈して、サウンド出力装置125にサウンド信号を出力する。
【0043】
グラフィック処理部111は、制御部103から出力される描画命令に従って、フレームバッファ(フレームメモリ)112(図では、グラフィック処理部111の外側に描かれているが、グラフィック処理部111を構成するチップに含まれるRAM内に設けられる)に画像データを展開し、表示装置121の表示画面122上に画像を表示するビデオ信号を出力する。グラフィック処理部111から出力されるビデオ信号に含まれる画像の1フレーム時間は、例えば60分の1秒である。
【0044】
DVD/CD−ROMドライブ113は、記録媒体131に対しプログラム及びデータの読み出しを行う。通信インターフェイス115は、ネットワークに接続され、他のコンピュータとの通信を行う。入力部161は、方向キー及び複数の操作ボタンを備える。方向キーは、入力の選択肢(上記した戦闘区など)から所望の選択肢を選んだり、プレイヤキャラクタの移動位置を選ぶために用いられる。操作ボタンは、方向キーによる選択を確定させるためのボタンを含む。
【0045】
インターフェイス部117は、入力部161からの入力データをRAM105に出力し、制御部103がそれを解釈して演算処理を実施する。インターフェイス部117は、また、制御部103からの指示に基づいて、RAM105に記憶されているゲームの進行状況を示すデータをメモリーカード162に保存させ、メモリーカード162に保存されている中断時のゲームのデータを読み出して、RAM105に転送する。
【0046】
ビデオゲーム装置100でゲームを行うためのプログラム及びデータは、最初例えば記録媒体131に記憶されている。記録媒体131に記憶されているデータとしては、ゲーム空間(仮想3次元空間)に存在するオブジェクトを構成するためのグラフィックデータを含んでいる。記録媒体131に記憶されたプログラム及びデータは、実行時にDVD/CD−ROMドライブ113により読み出されて、RAM105にロードされる。制御部103は、RAM105にロードされたプログラム及びデータを処理し、描画命令をグラフィック処理部111に出力し、サウンド出力の指示をサウンド処理部109に出力する。制御部103が処理を行っている間の中間的なデータは、RAM105に記憶される。
【0047】
図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を装着し得る。
【0048】
制御部203は、CPU(Central Processing Unit)やROM(Read Only Memory)などを含み、HDD207や記録媒体231上に格納されたプログラムを実行し、サーバ装置200の制御を行う。制御部203は、現在時刻を計時する内部タイマを備えている。RAM205は、制御部203のワークエリアである。HDD207は、プログラムやデータを保存するための記憶領域である。通信インターフェイス215は、ネットワーク3に接続され、ビデオゲーム装置100のそれぞれとの通信を行う。
【0049】
サーバ装置200でネットワークゲームを行うためのプログラム及びデータは、最初例えば記録媒体231に記憶され、ここからHDD207にインストールされる。そして、このプログラム及びデータは実行時にHDD207から読み出されて、RAM205にロードされる。制御部203は、RAM205にロードされたプログラム及びデータを処理し、ビデオゲーム装置100のそれぞれから送られてくるメッセージなどを元にネットワークゲームを進行させる。制御部203が処理を行っている間の中間的なデータは、RAM205に記憶される。
【0050】
次に、この実施の形態にかかるネットワークゲームを進行させるため、サーバ装置200において管理されるデータについて説明する。図4は、この実施の形態にかかるネットワークゲームを実行させるためにサーバ装置200において管理されるテーブル群を示す図である。このテーブル群のうちで、図4(a)は、このネットワークゲームのサービスを利用可能なビデオゲーム装置100の接続情報を管理するための接続状況テーブルであり、図4(b)は、ネットワークゲームの進行を管理するためのゲーム進行テーブルである。
【0051】
図4(a)に示す接続状況テーブル310には、このネットワークゲームのサービスを現時点で利用しているかどうかに関わらず、利用することが可能なビデオゲーム装置100毎に、ID311と、パスワード312と、ログイン日時313と、ログアウト日時314と、IPアドレス315と、戦闘区区分316と、参加フラグ317と、閲覧先情報318とが登録される。
【0052】
ID311は、ビデオゲーム装置100(のプレイヤ)を一意に識別するための識別情報である。パスワード312は、このネットワークゲームのサービスを利用するための認証に用いられる。ログイン日時313は、当該ビデオゲーム装置100(のプレイヤ)が、このネットワークゲームサービスを利用するためにサーバ装置200にログインした日時を示す。各ビデオゲーム装置100のプレイヤは、ログインの際に、ゲームの参加/閲覧の別と、参加/閲覧したい戦闘区を指定するものとなる。ゲームに参加する場合は、所属するチームも指定するものとなる。
【0053】
ログアウト日時314は、当該ビデオゲーム装置100(のプレイヤ)がログアウトした日時を示す。当該ビデオゲーム装置100がフロントエンドサーバとなるビデオゲーム装置141、151、…として指定されていて一定の期間を越えて情報が受信されなければ、当該ビデオゲーム装置100のサーバ装置200とのデータリンクが設定不能であるものとして、強制的にログアウト処理が行われる。当該ビデオゲーム装置100が他人の行っているゲームを閲覧するだけのビデオゲーム装置143、153、…であった場合、正式にログアウトすることなく閲覧を止めてしまうこともあり得、この場合にログイン日時313のみが登録され、ログアウト日時314が登録されないものとなるが、実用上の問題が生じることはない。
【0054】
IPアドレス315は、当該ビデオゲーム装置100のネットワーク上におけるIPアドレスであり、サーバ装置200とビデオゲーム装置100との間、異なるビデオゲーム装置100の間で情報を送受信するためのアドレスとして必要になるものである。戦闘区区分316は、当該ビデオゲーム装置100がゲームに参加またはゲームを閲覧している戦闘区の区分を示すものである。当該ビデオゲーム装置100がゲームに参加しているものである場合には、戦闘区区分316は、ビデオゲーム装置群140、150、…に対応したものとなる。
【0055】
参加フラグ317は、当該ビデオゲーム装置100(のプレイヤ)が他人のゲームを閲覧するだけのビデオゲーム装置143、153、…ではなく、ゲームに参加していてビデオゲーム装置群140、150、…を形成するビデオゲーム装置141、142、151、152、…である場合にセットされるフラグである。閲覧先情報318は、他人のゲームを閲覧するだけのビデオゲーム装置143、153、…である場合に、他人の行っているゲームを閲覧するためにビデオゲーム装置141、142、151、152、…のうちの何れに接続されているのかを示す情報である。
【0056】
図4(b)に示すゲーム進行テーブル320は、ビデオゲーム装置群140、150、…毎(戦闘区毎)のテーブル320A、320B、…、320Xから構成されている。これらのテーブル320A、320B、…、320Xに後述する情報が登録されるビデオゲーム装置100は、ゲームに参加しているビデオゲーム装置141、142、151、152、…のみで、他人のゲームを閲覧しているだけのビデオゲーム装置143、153は含まれない。
【0057】
各ビデオゲーム装置群140、150、…のゲーム進行テーブル320には、対応するビデオゲーム装置群140、150、…においてビデオゲーム装置141、151、…をフロントエンドサーバとして指定した日時、或いは指定した後にこれらから最後に情報を受信した日時321が登録される。また、各ビデオゲーム装置群140、150、…のゲーム進行テーブル320には、対応する戦闘区でのゲームに参加するビデオゲーム装置100毎に、ID322と、フロントエンドフラグ323と、フロントエンドの指定日時324と、所属チーム325と、ゲームステータス326とが登録される。
【0058】
ID322は、ビデオゲーム装置100(のプレイヤ)を一意に識別するための識別情報である。フロントエンドフラグ323は、当該ビデオゲーム装置100が現時点でフロントエンドサーバとなるビデオゲーム装置141、151、…として指定されている場合にセットされるフラグである。フロントエンドの指定日時324は、当該ビデオゲーム装置100をフロントエンドとなるビデオゲーム装置141、151、…として指定したときの日時を示す。
【0059】
所属チーム325は、当該ビデオゲーム装置100(のプレイヤ)がゲームにおいて所属しているチームを示す。ゲームステータス326は、当該ビデオゲーム装置100(のプレイヤ)によるゲームの進行状況に関する情報を示すもので、プレイヤキャラクタのマップ上における位置や各種パラメータの値などの情報を含む。
【0060】
なお、ID322と所属チーム325は、当該ビデオゲーム装置100のログインからログアウトまで同じ情報が登録されるが、フロントエンドフラグ323と指定日時324とは、サーバ装置200の処理によって随時更新されるものとなっている。ゲームステータス326は、フロントエンドサーバとなるビデオゲーム装置141、151、…から送られてくるゲームの進行状況に関する情報に従って随時更新されるものとなっている。
【0061】
次に、この実施の形態にかかるネットワークゲームの進行を概略的に説明する。図5、図6は、この実施の形態にかかるネットワークゲームの進行を模式的に示す図である。なお、ここで登場するビデオゲーム装置100は、全てビデオゲーム装置群140に属する、またはビデオゲーム装置群140における他人のゲームを閲覧するものであるとして説明するものとする。
【0062】
図5(a)に示すように、ゲームに参加していなかったビデオゲーム装置100(A)が新たにゲームに参加しようとする場合、プレイヤが参加/閲覧の別として参加を指定し、さらにゲームに参加する戦闘区と所属チームとを指定し、ID及びパスワードを入力して、ビデオゲーム装置100(A)からサーバ装置200にログインを要求する。サーバ装置200は、ログイン要求の際に送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して、認証を行う。
【0063】
認証の結果によりログインが受け付けられると、サーバ装置200は、ビデオゲーム装置100(A)について接続状況テーブル310に登録されている参加フラグ317をセットし、また、指定された戦闘区のゲーム進行テーブル320に新たなレコードを作成し、当該ビデオゲーム装置100(A)のID322、所属チーム325、ゲームステータス326を登録する。
【0064】
また、当該戦闘区のゲーム進行テーブル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)との間で情報を送受信することができる。
【0065】
その後、図5(b)に示すように、ビデオゲーム装置群140に属するビデオゲーム装置141(B)とビデオゲーム装置142(A)とは、サーバ装置200を介することなくネットワークを介してピアツーピアでゲームに関する情報を送受信しながら、ゲームを進めるものとなる。より詳細に説明すると、ビデオゲーム装置142(A)においてプレイヤが入力部161から入力した位置に基づくプレイヤキャラクタの移動位置に関する情報、AIルーチンの実行に基づくプレイヤキャラクタの戦闘行動に関する情報が、フロントエンドサーバとなるビデオゲーム装置141(B)に集められる。
【0066】
フロントエンドサーバとなるビデオゲーム装置141(B)は、さらにAIルーチンの実行によりノンプレイヤキャラクタの動作も決定し、プレイヤキャラクタ及びノンプレイヤキャラクタの動作に基づく各プレイヤキャラクタのパラメータの変化値を算出する。そして、ビデオゲーム装置142(A)に対して、対応する戦闘区での各プレイヤキャラクタの動作(位置及び戦闘行動)に関する情報や、パラメータの変化値などの情報を送信する。
【0067】
ビデオゲーム装置142(A)は、フロントエンドサーバとなるビデオゲーム装置141(B)から送られてきた情報に従ってゲームの画像を生成し、表示画面122として表示させる。一方、フロントエンドサーバとなるビデオゲーム装置141(B)は、同じビデオゲーム装置群140に属するビデオゲーム装置142から送られてきた情報や自ら算出した情報に従ってゲームの画像を生成し、表示画面122として表示させる。
【0068】
また、ビデオゲーム装置群140のうちでフロントエンドサーバとなるビデオゲーム装置141(B)だけは、ゲームの進行に必要な情報をネットワークを介して送受信するものとなる。より詳細に説明すると、フロントエンドサーバとなるビデオゲーム装置141(B)は、対応する戦闘区での各プレイヤキャラクタの位置やパラメータの変化値などを含むゲームステータスに関する情報をサーバ装置200に送信する。サーバ装置200は、フロントエンドサーバとなるビデオゲーム装置141(B)から受信したゲームステータスに関する情報に基づいて、ゲーム進行テーブル320に登録されているゲームステータス326を更新する。
【0069】
サーバ装置200は、また、他のビデオゲーム装置群150、…のゲームの進行状況がビデオゲーム装置群140でのゲームの進行に影響を及ぼすことがある場合など、そのゲームの進行を制御するために必要な情報をフロントエンドサーバとなるビデオゲーム装置141(B)に送信する。ビデオゲーム装置141(B)は、この情報が送られてきた場合には、これもビデオゲーム装置142(A)に送信したり、この情報にも基づいてノンプレイヤキャラクタの動作や各プレイヤキャラクタのパラメータの変化値を算出したりするものとなる。
【0070】
また、図5(c)に示すように、サーバ装置200は、現時点でフロントエンドサーバとなっているビデオゲーム装置141(B)についてゲーム進行テーブル320の指定日時324から所定時間を経過したかどうかを監視しており、所定時間を経過したものと判断すると、同じビデオゲーム装置群140に属する他のビデオゲーム装置142を新たにフロントエンドサーバとして指定するものとなる。
【0071】
より詳細に説明すると、サーバ装置200は、ゲーム進行テーブル320に登録されているがフロントエンドフラグ323のセットされていないビデオゲーム装置142のうちから何れかを所定の手法に従って選択する(ここでは、ビデオゲーム装置142(A)が選択されたものとする)。
【0072】
サーバ装置200は、これまでフロントエンドサーバとして指定されていたビデオゲーム装置141(B)についてゲーム進行テーブル320に登録されているフロントエンドフラグ323をリセットするとともに、指定日時324を消去する。また、フロントエンドサーバの指定を解除するための指示をネットワークを介してビデオゲーム装置141(B)に送信する。フロントエンドサーバであったビデオゲーム装置141(B)は、この指示を受信すると、フロントエンドサーバではなくなり、ビデオゲーム装置群140においてフロントエンドサーバではないビデオゲーム装置142(B)となる。
【0073】
サーバ装置200は、また、新たに選択したビデオゲーム装置142(A)についてゲーム進行テーブル320に登録されているフロントエンドフラグ323をセットするとともに、制御部203の内部タイマで計測されている現在日時を指定日時324として登録する。また、接続状況テーブル310に登録されているIPアドレス315を参照して、フロントエンドサーバに指定するための指示をビデオゲーム装置142(A)に送信する。この指示には、ビデオゲーム装置群140に含まれる他の全てのビデオゲーム装置のID311及びIPアドレス315が含まれる。ビデオゲーム装置142(A)は、この指示を受信すると、新たにフロントエンドサーバとなるビデオゲーム装置141(A)となる。
【0074】
その後、図5(d)に示すように、ビデオゲーム装置群140に属するビデオゲーム装置141(A)とビデオゲーム装置142(B)とは、サーバ装置200を介することなくネットワークを介してピアツーピアでゲームに関する情報を送受信しながら、ゲームを進めるものとなる。また、ビデオゲーム装置群140のうちでフロントエンドサーバとなるビデオゲーム装置141(A)だけは、ゲームの進行に必要な情報をネットワークを介して送受信するものとなる。ここでの処理は、フロントエンドサーバが入れ替わっている以外は、図5(b)において説明したものと同じである。
【0075】
図6(a)に示すように、ゲームを閲覧していなかったビデオゲーム装置100が新たにゲームを閲覧しようとする場合、プレイヤが参加/閲覧の別として閲覧を指定し、さらにゲームを閲覧する戦闘区を指定し、ID及びパスワードを入力して、ビデオゲーム装置100からサーバ装置200にログインを要求する。サーバ装置200は、ログイン要求の際に送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して、認証を行う。
【0076】
認証の結果によりログインが受け付けられると、サーバ装置200は、戦闘区のゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置141、142を特定可能な情報(IDなど)を登録する。
【0077】
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置100のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ビデオゲーム装置100は、指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となり、サーバ装置200を介さずに選択されたビデオゲーム装置141、142から当該戦闘区でのゲームの進行状況に関する情報を受信することができるものとなる。ビデオゲーム装置143は、ビデオゲーム装置141、142から送られてきた情報に従ってゲームの画像を生成し、表示画面122として表示させる。
【0078】
図6(b)に示すように、フロントエンドサーバではないがゲームに参加しているビデオゲーム装置142からログアウト要求が受信されると、サーバ装置200は、所定のログアウト処理を行うとともに、ログアウトが要求されたビデオゲーム装置142に関するレコードをゲーム進行テーブル320から削除するとともに、当該ビデオゲーム装置142のID311を、フロントエンドサーバとなっているビデオゲーム装置141に通知する。フロントエンドサーバとなるビデオゲーム装置141は、この通知がされたビデオゲーム装置142との情報交換を停止する。
【0079】
また、ログアウトが要求されたビデオゲーム装置142を閲覧先情報318に設定しているビデオゲーム装置143がある場合には、サーバ装置200は、同じビデオゲーム装置群140についてのゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置141、142を特定可能な情報(IDなど)を登録する。
【0080】
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置143のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ログアウトしたビデオゲーム装置142に接続してゲームを閲覧していたビデオゲーム装置143は、新たに選択されたビデオゲーム装置141、142に接続して指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となる。
【0081】
図6(c)に示すように、現時点でフロントエンドサーバとして指定されているビデオゲーム装置141からログアウト要求が受信されると、サーバ装置200は、所定のログアウト処理を行うとともに、ログアウトが要求されたビデオゲーム装置141に関するレコードをゲーム進行テーブル320から削除する。また、同じビデオゲーム装置群140に属する他のビデオゲーム装置142の中から何れかを新たなフロントエンドサーバとして選択する。
【0082】
サーバ装置200は、選択したビデオゲーム装置142について接続状況テーブル310に登録されているIPアドレス315を参照して、フロントエンドサーバに指定するための指示をビデオゲーム装置142に送信する。この指示には、ビデオゲーム装置群140に含まれる他の全てのビデオゲーム装置(ログアウト要求したものを除く)のID311及びIPアドレス315が含まれる。この指示を受信したビデオゲーム装置142は、新たにフロントエンドサーバとなるビデオゲーム装置141となる。
【0083】
また、ログアウトが要求されたビデオゲーム装置141を閲覧先情報318に設定しているビデオゲーム装置143がある場合には、サーバ装置200は、同じビデオゲーム装置群140についてのゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置142を特定可能な情報(IDなど)を登録する。
【0084】
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置143のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ログアウトしたビデオゲーム装置142に接続してゲームを閲覧していたビデオゲーム装置143は、新たに選択されたビデオゲーム装置141、142に接続して指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となる。
【0085】
図6(d)に示すように、サーバ装置200は、現時点でフロントエンドサーバとして指定されているビデオゲーム装置141から情報を受信する度に当該ビデオゲーム装置群140のゲーム進行テーブル310に登録されている最後に情報を受信した日時321を更新するとともに、登録されている日時321から所定時間を経過しても新たな情報が受信されていないかどうかを監視している。
【0086】
サーバ装置200は、登録されている日時321から所定時間を経過しても新たな情報が受信されていないときには、ビデオゲーム装置141との接続が切断されたものとして、ビデオゲーム装置141を強制的にログアウトさせる処理を行うとともに、当該ビデオゲーム装置141に関するレコードをゲーム進行テーブル320から削除する。また、同じビデオゲーム装置群140に属する他のビデオゲーム装置142の中から何れかを新たなフロントエンドサーバとして選択する。
【0087】
サーバ装置200は、選択したビデオゲーム装置142について接続状況テーブル310に登録されているIPアドレス315を参照して、フロントエンドサーバに指定するための指示をビデオゲーム装置142に送信する。この指示には、ビデオゲーム装置群140に含まれる他の全てのビデオゲーム装置のID311及びIPアドレス315が含まれる。この指示を受信したビデオゲーム装置142は、新たにフロントエンドサーバとなるビデオゲーム装置141となる。
【0088】
また、ログアウトが要求されたビデオゲーム装置141を閲覧先情報318に設定しているビデオゲーム装置143がある場合には、サーバ装置200は、同じビデオゲーム装置群140についてのゲーム進行テーブル320に登録されているビデオゲーム装置141、142から何れかを選択し、当該ビデオゲーム装置100について接続状況テーブル310の閲覧先情報318に、選択したビデオゲーム装置142を特定可能な情報(IDなど)を登録する。
【0089】
また、当該戦闘区のゲーム進行テーブル320から選択されたビデオゲーム装置141、142に、当該ビデオゲーム装置143のID311及びIPアドレス315を通知するとともに、選択されたビデオゲーム装置141、142のID311及びIPアドレス315を、当該ビデオゲーム装置100に通知する。これにより、ログアウトしたビデオゲーム装置142に接続してゲームを閲覧していたビデオゲーム装置143は、新たに選択されたビデオゲーム装置141、142に接続して指定した戦闘区のゲームを閲覧できるビデオゲーム装置143となる。
【0090】
以下、この実施の形態にかかるネットワークシステムを構成するサーバ装置200及びビデオゲーム装置100において、それぞれ実行される処理について説明する。ビデオゲーム装置100における処理は、ゲームに参加するビデオゲーム装置141、142、151、152、…である場合と、ゲームを閲覧するだけのビデオゲーム装置143、153、…である場合と異なるので、それぞれ別個に説明するものとする。
【0091】
図7、図8は、サーバ装置200において実行される処理を示すフローチャートである。サーバ装置200の制御部203は、ネットワーク上の何れかのビデオゲーム装置100から何らかの情報を受信したかどうかを判定している(ステップS101)。何れかのビデオゲーム装置100から何らかの情報を受信していれば、制御部203は、受信した情報が何であるかを判定する(ステップS102)。
【0092】
受信した情報が参加/閲覧の別として参加を指定したログイン要求であった場合には、制御部203は、ログイン要求とともに送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して当該ビデオゲーム装置100の認証を行う。認証が得られると、制御部203は、ログイン要求とともに送られてきたIDが示すビデオゲーム装置100について、接続状況テーブル310のログイン日時313に現在日時を登録し、前回のログアウト時に登録されていたログアウト日時314を削除する。また、ログイン要求をしてきたビデオゲーム装置100のIPアドレス315、戦闘区区分316を登録し、参加フラグ317をセットする。
【0093】
さらに、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に当該ビデオゲーム装置100のレコードを作成し、ログイン要求とともにIDをID322として登録し、また、ログイン要求において指定されたチームを所属チーム325としてを登録する(ステップS103)。
【0094】
次に、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に、当該戦闘区でのゲームに参加している他のビデオゲーム装置100に関する情報が登録されているかどうかを判定する(ステップS104)。当該戦闘区でのゲームに参加している他のビデオゲーム装置100が未だ1つも登録されていなければ、制御部203は、ゲーム進行テーブル320においてログイン要求をしてきたビデオゲーム装置100のフロントエンドフラグ323をセットし、指定日時324に現在日時を登録する(ステップS105)。制御部203は、さらに、当該ビデオゲーム装置100に対してフロントエンドサーバに指定する旨を示す指示を送信する(ステップS106)。そして、ステップS101の処理に戻る。
【0095】
当該戦闘区でのゲームに参加している他のビデオゲーム装置100が登録されていれば、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に登録されているビデオゲーム装置100のうちで、フロントエンドフラグ323のセットされているビデオゲーム装置100、すなわち現時点で当該戦闘区のビデオゲーム装置群においてフロントエンドサーバとして指定されているビデオゲーム装置100を検索する(ステップS107)。
【0096】
制御部203は、フロントエンドサーバとして指定されているビデオゲーム装置100に、新たに当該戦闘区でのゲームに参加するビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS108)、新たに当該戦闘区でのゲームに参加するビデオゲーム装置100に、フロントエンドサーバとして指定されているビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS109)。そして、ステップS101の処理に戻る。
【0097】
受信した情報が参加/閲覧の別として閲覧を指定したログイン要求であった場合には、制御部203は、ログイン要求とともに送られてきたID及びパスワードを接続状況テーブル310に登録されているID311及びパスワード312と比較して当該ビデオゲーム装置100の認証を行う。認証が得られると、制御部203は、ログイン要求とともに送られてきたIDが示すビデオゲーム装置100について、接続状況テーブル310のログイン日時313に現在日時を登録し、前回のログアウト時に登録されていたログアウト日時314を削除する。また、ログイン要求をしてきたビデオゲーム装置100のIPアドレス315を登録する(ステップS110)。
【0098】
次に、制御部203は、ログイン要求において指定されていた戦闘区に対応したゲーム進行テーブル320に、当該戦闘区でのゲームに参加しているビデオゲーム装置100に関する情報が登録されているかどうかを判定する(ステップS111)。当該戦闘区でのゲームに参加している他のビデオゲーム装置100が未だ1つも登録されていなければ、そのままステップS101の処理に戻る。
【0099】
当該戦闘区でのゲームに参加している他のビデオゲーム装置100が登録されていれば、制御部203は、当該戦闘区に対応したゲーム進行テーブル320に登録されているビデオゲーム装置100から何れかを閲覧先として選択し、選択したビデオゲーム100を示す情報を、ログイン要求をしたビデオゲーム装置100、すなわち新たにゲームを閲覧しようとするビデオゲーム装置100の閲覧先情報318に登録する(ステップS112)。
【0100】
制御部203は、閲覧先として選択されたビデオゲーム装置100に、新たに当該戦闘区でのゲームを閲覧するビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS113)、新たに当該戦闘区でのゲームを閲覧するビデオゲーム装置100に、閲覧先として選択されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS114)。そして、ステップS101の処理に戻る。
【0101】
受信した要求がログアウト要求であった場合には、制御部203は、ログアウトを要求したビデオゲーム装置100が現時点でフロントエンドサーバとして指定されている(すなわち、フロントエンドフラグ323がセットされている)かどうかを判定する(ステップS115)。
【0102】
フロントエンドサーバ115として指定されていれば、制御部203は、ログアウト要求をしたビデオゲーム装置100と同じ戦闘区のゲーム進行テーブル320に登録されている他のビデオゲーム装置100のうちから、何れかのビデオゲーム装置100を新たにフロントエンドサーバとして選択し、選択したビデオゲーム装置100についてゲーム進行テーブル320のフロントエンドフラグ323をセットするとともに、指定日時324に現在日時を登録する(ステップS116)。
【0103】
次に、制御部203は、新たにフロントエンドサーバとして指定されたビデオゲーム装置100に対して、フロントエンドサーバに指定する旨を示す指示を送信するとともに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS117)。また、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100に、新たにフロントエンドサーバとして指定されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS118)。そして、ステップS121の処理に進む。
【0104】
ログアウトを要求したビデオゲーム装置100が現時点でフロントエンドサーバとして指定されていない場合には、制御部203は、ログアウト要求をしたビデオゲーム装置100がフロントエンドサーバとして指定されていないゲームに参加するビデオゲーム装置100であるかどうかを判定する(ステップS119)。ゲームに参加するビデオゲーム装置100であった場合には、制御部203は、フロントエンドサーバとして指定されているビデオゲーム装置100に、ログアウト要求をしたビデオゲーム装置100を特定可能な情報を送信する(ステップS120)。そして、ステップS121の処理に進む。
【0105】
ステップS121では、制御部203は、ログアウト要求をしたビデオゲーム装置100について接続状況テーブル310のログアウト日時314として現在日時を登録して、当該ビデオゲーム装置100をログアウトさせる処理を行う。また、制御部203は、当該ログアウト要求をしたビデオゲーム装置100のレコードを、ゲーム進行テーブル320から削除する。
【0106】
その後、制御部203は、ここでログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100があるかどうかを判定する(ステップS122)。ログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
【0107】
ログアウトされたビデオゲーム装置100を閲覧先情報318として登録している他のビデオゲーム装置100があれば、制御部203は、ログアウトされたビデオゲーム100が登録されていたのと同じゲーム進行テーブル320に他のビデオゲーム装置100が登録されているか、すなわち該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあるかどうかを判定する(ステップS123)。該当する戦闘区でのゲームに参加しているビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
【0108】
該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあれば、制御部203は、ログアウトされたビデオゲーム装置100が登録されていたのと同じゲーム進行テーブル320に登録されているビデオゲーム装置100から何れかを閲覧先として選択し、選択したビデオゲーム100を示す情報を、ログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100の閲覧先情報318に新たに登録する(ステップS124)。
【0109】
制御部203は、閲覧先として選択されたビデオゲーム装置100に、ログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS125)、ログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100に、閲覧先として選択されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS126)。そして、ステップS101の処理に戻る。
【0110】
ログアウト要求をしたビデオゲーム装置100が、ゲームを閲覧するだけのビデオゲーム装置100であった場合には、制御部203は、当該ログアウト要求をしたビデオゲーム装置100の閲覧先情報318に登録されているビデオゲーム装置100に、ログアウト要求をした、すなわちゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を送信する(ステップS127)。さらに、制御部203は、ログアウト要求をしたビデオゲーム装置100について接続状況テーブル310のログアウト日時314として現在日時を登録して、当該ビデオゲーム装置100をログアウトさせる処理を行う(ステップS128)。
【0111】
受信した情報がフロントエンドサーバとして指定されたビデオゲーム装置100から送られてきたゲーム情報であった場合には、制御部203は、当該ゲーム情報を送信したビデオゲーム装置100が属するビデオゲーム装置群に対応したゲーム進行テーブル320の最終受信日時321を現在日時に更新する(ステップS129)。制御部203は、さらに受信したゲーム情報に従って、当該ゲーム情報を送信したビデオゲーム装置100が属するビデオゲーム装置群に対応したゲーム進行テーブル320に登録されている各ビデオゲーム装置100のゲームステータス326を更新する(ステップS130)。そして、ステップS101の処理に戻る。
【0112】
受信した情報がその他の情報であった場合には、制御部203は、受信した情報に応じてそれぞれ所定の処理を行う(ステップS131)。この処理は、本発明に直接的な関わりがあるものでもないため、詳細な説明を省略する。
【0113】
ステップS101において何れのビデオゲーム装置100からも情報を受信していないと判定された場合には、制御部203は、戦闘区毎のゲーム進行テーブル320にフロントエンドフラグ323の設定されているビデオゲーム装置100について登録されている各指定日時324から現在までの経過時間が所定時間となったものがあるかどうか、すなわちフロントエンドサーバに指定されてから所定時間の経過したビデオゲーム装置100があるかどうかを判定する(ステップS132)。
【0114】
フロントエンドサーバに指定されてから所定時間の経過したビデオゲーム装置100があれば、制御部103は、これと同じ戦闘区のゲーム進行テーブル320に登録されている他のビデオゲーム装置100のうちから、何れかのビデオゲーム装置100を新たにフロントエンドサーバとして選択し、選択したビデオゲーム装置100についてゲーム進行テーブル320のフロントエンドフラグ323をセットするとともに、指定日時324に現在日時を登録する(ステップS133)。
【0115】
次に、制御部203は、新たにフロントエンドサーバとして指定されたビデオゲーム装置100に対して、フロントエンドサーバに指定する旨を示す指示を送信するとともに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS134)。また、制御部203は、これまでフロントエンドサーバとして指定されていたビデオゲーム装置100に、フロントエンドサーバの指定を解除する旨の指示を送信する(ステップS135)。
【0116】
さらに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100に、新たにフロントエンドサーバとして指定されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS136)。そして、ステップS101の処理に戻る。
【0117】
フロントエンドサーバに指定されてから所定時間の経過したビデオゲーム装置100がなければ、制御部203は、戦闘区毎のゲーム進行テーブル320に登録されている最終受信日時321から現在までの経過時間が所定時間となったものがあるかどうか、すなわちフロントエンドサーバに指定しているビデオゲーム装置100から最後に情報を受信してから所定時間を経過したかどうかを判定する(ステップS137)。
【0118】
フロントエンドサーバに指定しているビデオゲーム装置100から最後に情報を受信してから所定時間を経過していれば、制御部203は、当該戦闘区において現時点までフロントエンドサーバとして指定されていたビデオゲーム装置100を強制的にログアウトさせる処理を行う。具体的には、接続状況テーブル310における当該ビデオゲーム装置100のログアウト日時314に現在日時を登録する(ステップS138)。
【0119】
次に、制御部203は、当該戦闘区のゲーム進行テーブル320に登録されている他のビデオゲーム装置100のうちから、何れかのビデオゲーム装置100を新たにフロントエンドサーバとして選択し、選択したビデオゲーム装置100についてゲーム進行テーブル320のフロントエンドフラグ323をセットするとともに、指定日時324に現在日時を登録する(ステップS139)。
【0120】
次に、制御部203は、新たにフロントエンドサーバとして指定されたビデオゲーム装置100に対して、フロントエンドサーバに指定する旨を示す指示を送信するとともに、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS140)。また、当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100に、新たにフロントエンドサーバとして指定されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS141)。
【0121】
次に、制御部203は、ここで強制的にログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100があるかどうかを判定する(ステップS142)。強制的にログアウトされたビデオゲーム装置100を閲覧先情報318に登録している他のビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
【0122】
強制的にログアウトされたビデオゲーム装置100を閲覧先情報318として登録している他のビデオゲーム装置100があれば、制御部203は、ログアウトされたビデオゲーム100が登録されていたのと同じゲーム進行テーブル320に他のビデオゲーム装置100が登録されているか、すなわち該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあるかどうかを判定する(ステップS143)。該当する戦闘区でのゲームに参加しているビデオゲーム装置100がなければ、そのままステップS101の処理に戻る。
【0123】
該当する戦闘区でのゲームに参加しているビデオゲーム装置100が未だ他にあれば、制御部203は、強制的にログアウトされたビデオゲーム装置100が登録されていたのと同じゲーム進行テーブル320に登録されているビデオゲーム装置100から何れかを閲覧先として選択し、選択したビデオゲーム100を示す情報を、強制的にログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100の閲覧先情報318に新たに登録する(ステップS144)。
【0124】
制御部203は、閲覧先として選択されたビデオゲーム装置100に、強制的にログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信し(ステップS145)、強制的にログアウトされたビデオゲーム装置100を閲覧先としていたビデオゲーム装置100に、閲覧先として選択されたビデオゲーム装置100を特定可能な情報(ID311及びIPアドレス315を含む)を送信する(ステップS146)。そして、ステップS101の処理に戻る。
【0125】
フロントエンドサーバに指定しているビデオゲーム装置100から最後に情報を受信してから所定時間を経過していなければ、制御部203は、各戦闘区におけるゲームの進行に影響を及ぼす何らかの事象が発生したかどうかを判定する(ステップS147)。この各戦闘区におけるゲームの進行に影響を及ぼす事象は、例えば、内部タイマによって計時している現在日時が所定の日時となったり、ステップS130で更新したゲームステータス326が所定の状態となること等により発生し得る。
【0126】
何れかの戦闘区におけるゲームの進行に影響を及ぼす何らかの事象が発生していれば、制御部203は、そのような事象の発生した戦闘区についてフロントエンドサーバとして指定されたビデオゲーム装置100に、その影響に応じたゲーム制御情報を送信する(ステップS148)。そして、ステップS101の処理に戻る。何れの戦闘区においてもゲームの進行に影響を及ぼす事象が発生していなければ、そのままステップS101の処理に戻る。
【0127】
図9、図10は、ゲームに参加するビデオゲーム装置100(141、142、151、152、…)において実行される処理を示すフローチャートである。ビデオゲーム装置100は、ゲームに参加するには参加/閲覧の別として参加を指定し、さらにゲームに参加する戦闘区と所属チームとを指定してサーバ装置200にログインし、また、ゲームへの参加を停止するにはサーバ装置200からログアウトする(強制的にログアウトされる場合を含む)必要があるが、ここでは、ログインの後、ログアウトする前までにおいて行われる処理について説明する。
【0128】
ゲームに参加するビデオゲーム装置100の制御部103は、ステップS106、S117、S134またはS140でサーバ装置200から送信されたフロントエンドサーバに指定する旨の指示を受信したかどうかを判定する(ステップS201)。
【0129】
フロントエンドサーバに指定する旨の指示を受信していなければ、制御部103は、ステップS109、S118、S136またはS141でサーバ装置200から送信されたフロントエンドサーバとして指定されている他のビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS202)。フロントエンドサーバとして指定されている他のビデオゲーム装置100を特定可能な情報を受信した場合には、制御部103は、当該フロントエンドサーバに関する情報をRAM105に保存する(ステップS203)。そして、ステップS201の処理に戻る。
【0130】
フロントエンドサーバとして指定されている他のビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS113、S125またはS145でサーバ装置200から送信されたゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS204)。ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信した場合には、制御部103は、当該ゲームを閲覧するビデオゲーム装置100に関する情報をRAM105に保存する(ステップS205)。そして、ステップS201の処理に戻る。
【0131】
ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS127でサーバ装置200から送信されたゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS206)。ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していた場合には、制御部103は、ゲームを閲覧するものしてRAM105に保存されている当該ビデオゲーム装置100に関する情報を消去する(ステップS207)。そして、ステップS201の処理に戻る。
【0132】
ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、後述するステップS235においてフロントエンドサーバとして指定されている他のビデオゲーム装置100から送信されたゲーム情報を受信したかどうかを判定する(ステップS208)。ゲーム情報を受信していれば、制御部103は、受信したゲーム情報に従って各プレイヤキャラクタ及びノンプレイヤキャラクタを動作させ、表示画面122に表示させる(ステップS209)。
【0133】
次に、制御部103は、ゲームを閲覧するだけのビデオゲーム装置100に関する情報がRAM105に保存されているかどうかを判定する(ステップS210)。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていれば、制御部103は、当該情報が示す他のビデオゲーム装置100にゲーム情報を送信する(ステップS211)。そして、ステップS201の処理に戻る。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていなければ、そのままステップS201の処理に戻る。
【0134】
フロントエンドサーバとして指定されているビデオゲーム装置100からゲーム情報を受信していなければ、制御部103は、入力部161からプレイヤキャラクタの移動位置を指定する入力がされたかどうかを判定する(ステップS212)。プレイヤキャラクタの移動位置を指定する入力がされていれば、制御部103は、該入力された位置をRAM105に保存する(ステップS213)。そして、ステップS214の処理に進む。プレイヤキャラクタの移動位置を指定する入力がされていなければ、そのままステップS214の処理に進む。
【0135】
ステップS214では、制御部103は、プレイヤキャラクタの移動位置としてRAM105に保存されている位置とプレイヤキャラクタの現在のマップ上の位置とが同じであるかどうかを判定する。保存されている位置と現在の位置が異なれば、制御部103は、保存されている位置に向けて、プレイヤキャラクタを所定量だけ移動させる(ステップS215)。そして、ステップS216の処理に進む。保存されている位置と現在の位置が同じであるか、プレイヤキャラクタの移動位置そのものが保存されていなければ、そのままステップS216の処理に進む。
【0136】
ステップS216では、制御部103は、自分のプレイヤキャラクタの現在の位置、フロントエンドサーバとして指定されてる他のビデオゲーム装置100から受信したゲーム情報により示される他のキャラクタ(他のプレイヤのプレイヤキャラクタ及びノンプレイヤキャラクタ)の位置に基づいて、プレイヤキャラクタがとるべき戦闘行動(何もしない場合もあり)を決定する。制御部103は、プレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を、フロントエンドサーバとして指定されている他のビデオゲーム装置100に送信する(ステップS217)。そして、ステップS201の処理に戻る。
【0137】
ステップS201でフロントエンドサーバに指定する旨の指示を受信していれば、制御部103は、当該指示とともにサーバ装置200から送られてきた当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報をRAM105に保存する(ステップS218)。次に、制御部103は、ステップS135でサーバ装置200から送信されたフロントエンドサーバの指定を解除する旨の指示を受信したかどうかを判定する(ステップS219)。
【0138】
フロントエンドサーバの指定を解除する旨の指示を受信していなければ、制御部103は、ステップS120で同じビデオゲーム装置群に属する他のビデオゲーム装置100から送信されたログアウト要求した(すなわち、ゲームの参加の停止を要求した)ビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップ220)。ゲームの参加の停止を要求したビデオゲーム装置100を特定可能な情報を受信していれば、制御部103は、当該参加の停止を要求したビデオゲーム装置100に関する情報をRAM105から消去する(ステップS221)。そして、ステップS219の処理に戻る。
【0139】
参加の停止を要求したビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS113、S125またはS145でサーバ装置200から送信されたゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS222)。ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信した場合には、制御部103は、当該ゲームを閲覧するビデオゲーム装置100に関する情報をRAM105に保存する(ステップS223)。そして、ステップS219の処理に戻る。
【0140】
ゲームを閲覧するビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS127でサーバ装置200から送信されたゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信したかどうかを判定する(ステップS224)。ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していた場合には、制御部103は、ゲームを閲覧するものしてRAM105に保存されている当該ビデオゲーム装置100に関する情報を消去する(ステップS225)。そして、ステップS219の処理に戻る。
【0141】
ゲームの閲覧を停止するものとしたビデオゲーム装置100を特定可能な情報を受信していなければ、制御部103は、ステップS148でサーバ装置200から送信されたゲーム制御情報を受信したかどうかを判定する(ステップS226)。ゲーム制御情報を受信していれば、ステップS233の処理に進む。
【0142】
ゲーム制御情報を受信していなければ、制御部103は、ステップS217で同じビデオゲーム装置群に属する他のビデオゲーム装置100から送信された当該プレイヤのプレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を受信したかどうかを判定する(ステップS227)。当該プレイヤのプレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を受信していれば、ステップS233の処理に進む。
【0143】
当該プレイヤのプレイヤキャラクタのマップ上の位置とプレイヤキャラクタの戦闘行動とを示す情報を受信していなければ、制御部103は、入力部161からプレイヤキャラクタの移動位置を指定する入力がされたかどうかを判定する(ステップS228)。プレイヤキャラクタの移動位置を指定する入力がされていれば、制御部103は、該入力された位置をRAM105に保存する(ステップS229)。そして、ステップS230の処理に進む。プレイヤキャラクタの移動位置を指定する入力がされていなければ、そのままステップS230の処理に進む。
【0144】
ステップS230では、制御部103は、プレイヤキャラクタの移動位置としてRAM105に保存されている位置とプレイヤキャラクタの現在のマップ上の位置とが同じであるかどうかを判定する。保存されている位置と現在の位置が異なれば、制御部103は、保存されている位置に向けて、プレイヤキャラクタを所定量だけ移動させる(ステップS231)。そして、ステップS232の処理に進む。保存されている位置と現在の位置が同じであるか、プレイヤキャラクタの移動位置そのものが保存されていなければ、そのままステップS232の処理に進む。
【0145】
ステップS232では、制御部103は、自分のプレイヤキャラクタの現在の位置、フロントエンドサーバとして指定されている他のビデオゲーム装置100から受信したゲーム情報により示される他のキャラクタ(他のプレイヤのプレイヤキャラクタ及びノンプレイヤキャラクタ)の位置に基づいて、プレイヤキャラクタがとるべき戦闘行動(何もしない場合もあり)を決定する。そして、ステップS233の処理に進む。
【0146】
ステップS233では、制御部103は、入力部161からの入力に基づいて決定された自己のプレイヤキャラクタの位置と戦闘行動、他の各プレイヤのビデオゲーム装置100から受信した情報が示すプレイヤキャラクタの位置と戦闘行動、及びサーバ装置200から受信したゲーム制御情報に従って、ノンプレイヤキャラクタの動作を決定する。
【0147】
次に、制御部103は、入力部161からの入力に基づいて決定された自己のプレイヤキャラクタの位置と戦闘行動、他の各プレイヤのビデオゲーム装置100から受信した情報が示すプレイヤキャラクタの位置と戦闘行動、並びにノンプレイヤキャラクタについて決定した動作を示すゲーム情報を、サーバ装置200に送信する(ステップS234)。制御部103は、また、このゲーム情報を、同じビデオゲーム装置群に属する他のビデオゲーム装置100にも送信する(ステップS235)。
【0148】
さらに、制御部103は、入力部161からの入力に基づいて決定された自己のプレイヤキャラクタの位置と戦闘行動、他の各プレイヤのビデオゲーム装置100から受信した情報が示すプレイヤキャラクタの位置と戦闘行動、並びにノンプレイヤキャラクタについて決定した動作に従って各プレイヤキャラクタ及びノンプレイヤキャラクタを動作させ、表示画面122に表示させる(ステップS236)。
【0149】
その後、制御部103は、ゲームを閲覧するだけのビデオゲーム装置100に関する情報がRAM105に保存されているかどうかを判定する(ステップS237)。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていれば、制御部103は、当該情報が示す他のビデオゲーム装置100にゲーム情報を送信する(ステップS238)。そして、ステップS219の処理に戻る。ゲームを閲覧するだけのビデオゲーム装置100に関する情報が保存されていなければ、そのままステップS219の処理に戻る。
【0150】
ステップS219でフロントエンドサーバの指定を解除する旨の指示を受信していれば、制御部103は、ステップS218でRAM105に保存した当該戦闘区でのゲームに参加している他の全てのビデオゲーム装置100を特定可能な情報を消去する(ステップS239)。そして、ステップS202の処理に進むものとなる。
【0151】
一方、ゲームを閲覧するだけのビデオゲーム装置100(143、153、…)では、参加/閲覧の別として閲覧を指定し、さらにゲームを閲覧する戦闘区を指定してサーバ装置200にログインする。ゲームを閲覧するだけのビデオゲーム装置100は、サーバ装置200にログインすると、ステップS126で送信されたゲームを閲覧するために接続されるビデオゲーム装置100(141、142、151、152、…)を特定可能な情報がサーバ装置200から送られてくるので、これをRAM205などに登録しておく。
【0152】
ゲームを閲覧するだけのビデオゲーム装置100は、ステップS210でゲームを閲覧するために接続されるビデオゲーム装置100から送信されたゲーム情報を受信すると、受信したゲーム情報に従って各プレイヤキャラクタ及びノンプレイヤキャラクタを動作させ、表示画面122に表示させる。また、ゲームの閲覧を停止するときには、サーバ装置200に対してログアウトを要求することができる。
【0153】
以上説明したように、この実施の形態にかかるネットワークゲームでは、複数のプレイヤが自己のビデオゲーム装置100の入力部161を操作してゲームに参加し、サーバ装置200においてゲームの全体の進行が管理されるものとなっている。より具体的には、サーバ装置200は、ネットワークゲームのサービスを利用可能な各ビデオゲーム装置100の接続状況を管理するための接続情報テーブル310と、現時点でゲームに参加している各ビデオゲーム装置100におけるゲームの進行状況を管理するためのゲーム進行テーブル320を有していて、複数のプレイヤの参加によって進行するゲームの全体を一元的に管理するものとなっている。
【0154】
もっとも、サーバ装置200は、ゲームに参加している各ビデオゲーム装置100と直接的に情報を交換したり、ノンプレイヤキャラクタの動作を決定したりすることはない。ゲームは、戦闘区毎に進行されるものとなっているが、サーバ装置200は、戦闘区毎に(ビデオゲーム装置群140、150、…毎に)、何れか1つのビデオゲーム装置をフロントエンドサーバとなるビデオゲーム装置141として指定するものとしている。
【0155】
各戦闘区におけるゲームを進行するための処理のうちでノンプレイヤキャラクタの動作の決定や、各プレイヤキャラクタのパラメータの変化値の算出は、戦闘区毎に設定されたビデオゲーム装置群140、150、…のうちでフロントエンドサーバとして指定されたビデオゲーム装置141、151、…が行うものとしている。また、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信も、フロントエンドサーバとして指定されたビデオゲーム装置141が制御するものとしている。サーバ装置200は、これらの処理を行う必要が全くない。このため、サーバ装置200に多大な処理負荷をかけることなく、複数のプレイヤが各自のビデオゲーム装置100から参加するネットワークゲームを実現することができるものとなる。
【0156】
また、サーバ装置200は、各プレイヤによるゲームの進行状況を管理するためには、各々のビデオゲーム装置100で行われているゲームの進行状況に関する情報を収集する必要があるが、このような情報をサーバ装置200に送信するのも、ビデオゲーム装置群140、150、…のうちでフロントエンドサーバとして指定されたビデオゲーム装置141、151、…だけである。このため、ゲームの進行状況に関する情報を各ビデオゲーム装置100から個別にサーバ装置200に送信するよりも、通信トラフィックを軽減することができ、また、ネットワークやサーバ装置200にかかる処理負荷を軽減することができる。
【0157】
また、フロントエンドサーバとして指定されたビデオゲーム装置141、151、…は、ノンプレイヤキャラクタの動作の決定や各プレイヤキャラクタのパラメータの変化値の算出、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信の制御、サーバ装置200へのゲームの進行状況に関する情報の送信の何れも行うものとしている。このため、サーバ装置200は、ビデオゲーム装置群140、150、…に属するビデオゲーム装置140のうちから何れかを容易に指定することができる。
【0158】
さらに、ビデオゲーム装置群140、150、…に属する複数のビデオゲーム装置のうちでフロントエンドサーバとして指定されるビデオゲーム装置141は、所定時間毎に変更されるものとなっている。このため、ある時点でフロントエンドサーバとして指定されているビデオゲーム装置141に不正アクセスし、ゲームにおける不正行為を行った者がいたとしても、それとは別のビデオゲーム装置が新たにフロントエンドサーバとして指定されれば、そのような不正行為が無駄なものとなってしまう。このため、ゲームにおける不正行為がされるのを防止することができる。
【0159】
また、フロントエンドサーバとして指定されていたビデオゲーム装置141のプレイヤがゲームから離脱してしまい、フロントエンドサーバとして必要な処理が実行されなくなったことがあったとしても、それとは別のビデオゲーム装置が新たにフロントエンドサーバとして指定されれば、当該新たにフロントエンドサーバとして指定されたビデオゲーム装置141によってフロントエンドサーバとして指定されたビデオゲーム装置141、151、…は、ノンプレイヤキャラクタの動作の決定や各プレイヤキャラクタのパラメータの変化値の算出、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信の制御、サーバ装置200へのゲームの進行状況に関する情報の送信が行われるものとなる。
【0160】
このため、フロントエンドサーバとして指定されていたビデオゲーム装置141のプレイヤがゲームから離脱してしまっても、長期間に亘ってゲームの進行に障害が生じることはない。また、自己のビデオゲーム装置100がフロントエンドサーバとして指定されてしまったことで、プレイヤがゲームに参加し続けることを事実上強いられてしまうということも起こらないので、各ビデオゲーム装置100のプレイヤは、任意にゲームに参加/離脱することができるものとなる。
【0161】
また、サーバ装置200は、ビデオゲーム装置群140、150、…毎に、フロントエンドサーバとなるビデオゲーム装置141、151、…から最後に情報を受信した(或いは、フロントエンドサーバとして指定した)日時321を管理しており、この日時321から一定期間を経過しても新たな情報を受信していなければ、現時点でフロントエンドサーバとして指定しているビデオゲーム装置141、151、…との接続が切断されたものと判断している。
【0162】
このような場合においてサーバ装置200は、当該ビデオゲーム装置群140、150、…に属する他のビデオゲーム装置142、152、…のうちから任意のビデオゲーム装置を選択して新たなフロントエンドサーバとして指定するものとしている。そして、新たなフロントエンドサーバが指定されると、当該フロントエンドサーバに指定されたビデオゲーム装置141、151、…が直ちにゲームを進行させるために必要な処理を行うため、ゲームを進行させるための処理が行われない空白期間をさらに小さくすることができ、長期間に亘ってゲームの進行に障害が生じることを防ぐことができる。
【0163】
さらに、この実施の形態にかかるネットワークゲームでは、戦闘区毎に行われているゲームに積極的に参加したい訳ではないが、他のプレイヤが行っているゲームを閲覧したいという者がいる場合には、その者のビデオゲーム装置143、153、…をビデオゲーム装置群140、150、…に属する任意のビデオゲーム装置に141、142、151、152、…に接続させ、そこからゲームの進行情報に関する情報が送られてくるものとしている。
【0164】
このように他のプレイヤが行っているゲームを閲覧したい者がいる場合に、サーバ装置200は、その者のビデオゲーム装置143、153、…にゲームの進行状況に関する情報を送信する処理からも解放されることとなるので、さらにサーバ装置200の処理負荷を軽減することができる。特定の戦闘区においてゲームを閲覧したい者が多数いる場合であっても、それらの者のビデオゲーム装置143、153、…が接続されるビデオゲーム装置141、142、151、152、…を分散させることができるので、ゲームを閲覧だけさせるためにビデオゲーム装置群140、150、…に属する各ビデオゲーム装置141、142、151、152、…にかかる処理が大きくなりすぎてしまうことはない。
【0165】
本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【0166】
上記の実施の形態では、サーバ装置200は、ビデオゲーム装置群140、150、…毎にフロントエンドサーバとして指定するビデオゲーム装置141、151、…を所定時間毎に変更するものとしていた。もっとも、フロントエンドサーバの指定を変える時間間隔は、固定のものとするのではなく、個々のビデオゲーム装置100にかかる処理負荷を考慮して変更するものとしてもよい。例えば、ビデオゲーム装置群140、150、…に属するビデオゲーム装置141、142、151、152、…の数に応じて、フロントエンドサーバとして指定するビデオゲーム装置141、151、…を変更するものとしてもよい。
【0167】
また、サーバ装置200がビデオゲーム装置群140、150、…毎のフロントエンドサーバの指定を変える契機は、このような所定時間の到来というものに限るものではなく、例えば、当該戦闘区でのゲームにおいて所定のイベント(但し、上記の所定時間と同等の時間間隔で発生することが期待されるもの)が生じたこととしてもよい。また、新たなフロントエンドサーバの選択は、ゲーム進行テーブル320に登録された順番で行うものとしても、ランダムに決めるものとしてもよい。ビデオゲーム装置100毎に処理能力に差があり、サーバ装置200がその差を認識できるのであれば、その処理能力の違いに応じて重み付けをして決定するものとしてもよい。
【0168】
上記の実施の形態では、各プレイヤキャラクタは、対応するビデオゲーム装置100の入力部161からの入力に従って移動し、対応するビデオゲーム装置100で実行されるAIルーチンで戦闘行動が決められるものとなっていたが、戦闘区内のプレイヤキャラクタの動作の決定も、フロントエンドサーバに指定されたビデオゲーム装置141、151、…で集中して行うものとしてもよい。この場合、フロントエンドサーバ以外のビデオゲーム装置142、152、…は、プレイヤによって入力部161からどのような入力がされたかを示す情報をフロントエンドサーバとなるビデオゲーム装置141、151、…に送り、そこで決定された動作を示す情報を受け取るものとしてもよい。
【0169】
上記の実施の形態では、フロントエンドサーバに指定されたビデオゲーム装置141、151、…は、ノンプレイヤキャラクタの動作の決定、各プレイヤキャラクタのパラメータの変化値の算出、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信、各々のビデオゲーム装置100で行われているゲームの進行状況に関する情報のサーバ装置200への送信の全てを、1台で制御するものとしていた。
【0170】
しかしながら、これらの複数種類の処理を、ビデオゲーム装置群140、150、…に属するビデオゲーム装置141、142、151、152、…のうちの2以上のビデオゲーム装置で分散して行うものとしてもよい。例えば、ノンプレイヤキャラクタの動作の決定、各プレイヤキャラクタのパラメータの変化値の算出は、第1のビデオゲーム装置が行うが、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100の間でのゲームの進行に関する情報の送受信や、各々のビデオゲーム装置100で行われているゲームの進行状況に関する情報のサーバ装置200への送信は、第2のビデオゲーム装置で行うものとしてもよい。サーバ装置200は、これらの処理のうちでどの処理をどのビデオゲーム装置に行わせるかを、個別に指定するものとしてもよい。
【0171】
上記の実施の形態では、戦闘区毎のノンプレイヤキャラクタの動作の決定は、ビデオゲーム装置群140、150、…においてフロントエンドサーバとして指定されたビデオゲーム装置141、151、…が1台で行うものとしていた。これに対して、ビデオゲーム装置群140、150、…に属するビデオゲーム装置100のうちの2台以上で分散して、ノンプレイヤキャラクタの動作を決定するものとしてもよい。2台以上に分散して行うものとする場合、サーバ装置200は、どのノンプレイヤキャラクタの動作を決定させるかまでを決定するものとすることができる。
【0172】
この場合、戦闘区において登場するノンプレイヤキャラクタの数が非常に多く、ノンプレイヤキャラクタの動作の決定のための処理負荷が比較的大きなものであっても、2以上のビデオゲーム装置100で分散して行えばよいので、1台のビデオゲーム装置100にかかる処理負荷が過大にならないで済むようになる。
【0173】
上記の実施の形態では、他のプレイヤが行っているゲームを閲覧したい者のビデオゲーム装置143、153、…は、フロントエンドサーバに指定されているかどうかに関わらずに指定した戦闘区のビデオゲーム装置群140、150、…に属するビデオゲーム装置141、142、151、152、…に接続されるものとしていた。もっとも、フロントエンドサーバとして指定されたビデオゲーム装置141、151、…は、それ以外のビデオゲーム装置142、152、…よりも処理負荷が大きいので、ここにゲームを閲覧したい者のビデオゲーム装置143、153、…が接続されるとさらに処理負荷が大きくなってしまう。
【0174】
そこで、他のプレイヤが行っているゲームを閲覧したい者のビデオゲーム装置143、153、…は、フロントエンドサーバとして指定されていないビデオゲーム装置142、153、…だけに接続されるものとしてもよい。新たにフロントエンドサーバとなるビデオゲーム装置141、151、…を指定した場合には、サーバ装置200は、これに接続されていたゲームを閲覧したい者のビデオゲーム装置143、153、…に対して、別のビデオゲーム装置142、152、…を指定して接続させるものとしてもよい。
【0175】
このようにビデオゲーム装置群140、150、…に属するビデオゲーム装置のうちでフロントエンドサーバとして指定されていないビデオゲーム装置142、152、…は、フロントエンドサーバとして指定されているビデオゲーム装置141、151、…に比べて処理負荷が軽いので、このようなビデオゲーム装置142、152、…にビデオゲーム装置143、153、…を接続させることによって、非常に多くの者に対してゲームを閲覧させることができるようになる。
【0176】
上記の実施の形態では、サーバ装置200は、フロントエンドサーバとして指定したビデオゲーム装置100からの情報の受信を監視しており、所定期間何らの情報も受信されていなければ、これを強制的にログアウトさせるものとしていた。しかし、フロントエンドサーバとして指定されていないものについては、このようなことが行われないので、ゲームへの参加や閲覧を止めていても、強制的にログアウトされることはなかった。
【0177】
そこで、フロントエンドサーバとして指定されているビデオゲーム装置100以外にゲームに参加するビデオゲーム装置100については、フロントエンドサーバとして指定されたビデオゲーム装置100において情報の受信を監視するものとしてもよい。フロントエンドサーバとして指定されたビデオゲーム装置100が一定期間以上、プレイヤキャラクタの位置と戦闘行動を示す情報を受信していないビデオゲーム装置100があったならば、その旨をフロントエンドサーバとなるビデオゲーム装置100からサーバ装置200に通知し、強制的にログアウトさせるものとしてもよい。
【0178】
また、ゲームを閲覧するだけのビデオゲーム装置100については、閲覧先とされているビデオゲーム装置100が定期的に情報の送信を要求し、所定回数を超えて応答のなかったビデオゲーム装置100をフロントエンドサーバを介してサーバ装置200に通知するものとしてもよい。サーバ装置200は、その通知に基づいて、ゲームを閲覧するだけのビデオゲーム装置100も強制的にログアウトさせるものとすることができる。
【0179】
上記の実施の形態では、ゲームに参加するプレイヤがログイン時に戦闘区を決めると、以下、当該プレイヤのプレイヤキャラクタは、ログアウトするまで同じ戦闘区でゲームを行うことを前提として説明していた。もっとも、プレイヤキャラクタは、ゲーム中に戦闘区を移動できるものとしてもよい。例えば、各戦闘区のマップの周囲に、他の戦闘区のマップの一部を周辺領域として付加しておく。プレイヤがプレイヤキャラクタの移動位置として周辺領域を指定した場合には、当該プレイヤのビデオゲーム装置100を指定した周辺領域内の位置が本来属する戦闘区におけるビデオゲーム装置群に移行させるものとしてもよい。
【0180】
具体的に説明すると、戦闘区Aのマップ上に戦闘区Bのマップの一部が周辺領域として付加され、戦闘区Bのマップに戦闘区Aのマップの一部が周辺領域として付加されているものとする。戦闘区Aでのゲームに参加するプレイヤは、戦闘区Bのマップに周辺領域となっている範囲に自己のプレイヤキャラクタが存在するときに、戦闘区Bの範囲内の位置(戦闘区Aのマップに周辺領域として付加されている領域)もプレイヤキャラクタの移動位置として指定することができるものとする。
【0181】
そのビデオゲーム装置100がフロントエンドサーバとして指定されているものであれば、戦闘区Bの範囲内の位置がプレイヤキャラクタの移動位置として指定されたことを直接サーバ装置200に通知し、フロントエンドサーバとして指定されているものでなければ、戦闘区Bの範囲内の位置がプレイヤキャラクタの移動位置として指定されたビデオゲーム装置100に関する情報をサーバ装置200に通知するものとすればよい。
【0182】
サーバ装置200は、これらの通知がされると、対応するビデオゲーム装置100について接続状況テーブル310に登録されている戦闘区区分316を書き換えるとともに、新たな戦闘区においてフロントエンドサーバとして指定されているビデオゲーム装置100に、新たな戦闘区に移動してゲームに参加するビデオゲーム装置100に関する情報を送信するものとすればよい。また、新たな戦闘区に移動してゲームに参加するビデオゲーム装置100に対して、当該戦闘区において現時点で指定されているビデオゲーム装置100に関する情報を送信するものとすればよい。
【0183】
さらに、新たな戦闘区に移動してゲームに参加しようとするビデオゲーム装置100が、これまでの戦闘区でのゲームにおいてフロントエンドサーバとして指定されていたのであれば、これまでの戦闘区でゲームを行っている他のビデオゲーム装置100を当該戦闘区における新たなフロントエンドサーバとして選択するものとすればよい。また、新たな戦闘区に移動してゲームに参加しようとするビデオゲーム装置100を閲覧先としてゲームを閲覧していたビデオゲーム装置100には、当該戦闘区のゲームに参加している他のビデオゲーム装置100を新たな閲覧先として通知するものとすればよい。
【0184】
このような処理により、各ビデオゲーム装置100のプレイヤは、戦闘区という区分を意識することなく、広いゲーム空間内で自由に自己のプレイヤキャラクタを移動させて、ゲームを行えるようになる。
【0185】
上記の実施の形態では、サーバ装置200は、1台でネットワークゲームのサービスを利用可能な全てのビデオゲーム装置100の接続状況を管理し、戦闘区毎(ビデオゲーム装置群140、150、…毎)のゲームの進行を管理するものとしていたが、複数のサーバ装置によってサーバ装置群を形成し、これらの処理を別個のサーバ装置に分散して行うものとしてもよい。ゲームの進行は、戦闘区毎に(ビデオゲーム装置群140、150、…毎に)別のサーバ装置を用いて制御するものとしてもよい。
【0186】
上記の実施の形態では、ゲームに参加するプレイヤは、戦闘区と所属チームとを指定し、後はプレイヤキャラクタの移動位置を自動的に指定していくだけでゲームが進行していくシミュレーションゲームを例として説明した。もっとも、本発明は、ロールプレイングゲーム等の他のジャンルのゲームに対しても適用することができる。また、プレイヤキャラクタのチーム同士で対戦するのではなく、プレイヤキャラクタ対ノンプレイヤキャラクタという形で対戦を行うゲームにも、本発明を適用することができる。
【0187】
上記の実施の形態では、ビデオゲームを実行するプラットフォームとなる装置としてゲーム専用機であるビデオゲーム装置100を適用していた。これに対して、本発明は、ビデオゲーム装置100と同様の構成要素を備え、ネットワーク接続機能を有するものであれば、汎用のパーソナルコンピュータなどをプラットフォームとして実現されるものとしてもよい。表示装置121及びサウンド出力装置125を装置本体101と同一の筐体内に納めた構成を有する携帯ゲーム機(アプリケーションの実行機能を有する携帯電話機を含む)を適用するものとしてもよい。
【0188】
記録媒体131としては、DVD−ROMやCD−ROMの代わりに半導体メモリーカードを適用することができる。このメモリーカードを挿入するためのカードスロットをDVD/CD−ROMドライブ113の代わりに設けることができる。汎用のパーソナルコンピュータの場合には、本発明に係るプログラム及びデータを記録媒体131に格納して提供するのではなく、HDD107に予め格納して提供してもよい。本発明にかかるプログラム及びデータを格納して提供するための記録媒体は、ハードウェアの物理的形態及び流通形態に応じて任意のものを適用することができる。
【0189】
上記の実施の形態では、ビデオゲーム装置100のプログラム及びデータは、記録媒体131に格納されて配布されるものとしていた。これに対して、これらのプログラム及びデータをネットワーク上に存在するサーバ装置が有する固定ディスク装置に格納しておき、装置本体101にネットワークを介して配信するものとしてもよい。ビデオゲーム装置100において、通信インターフェイス115がサーバ装置から受信したプログラム及びデータは、HDD107に保存し、実行時にRAM105にロードすることができる。サーバ装置200のプログラム及びデータについても同様である。
【図面の簡単な説明】
【0190】
【図1】本発明の実施の形態にかかるネットワークゲームシステムの構成を示すブロック図である。
【図2】図1のビデオゲーム装置の構成を示すブロック図である。
【図3】図1のサーバ装置の構成を示すブロック図である。
【図4】図1、図3のサーバ装置において管理されるテーブル群を示す図である。
【図5】本発明の実施の形態にかかるネットワークゲームの進行を模式的に示す図である。
【図6】本発明の実施の形態にかかるネットワークゲームの進行を模式的に示す図である。
【図7】図1、図3のサーバ装置において実行される処理を示すフローチャートである。
【図8】図1、図3のサーバ装置において実行される処理を示すフローチャートである。
【図9】図1、図2のビデオゲーム装置において、ネットワークゲームに参加する場合に実行される処理を示すフローチャートである。
【図10】図1、図2のビデオゲーム装置において、ネットワークゲームに参加する場合に実行される処理を示すフローチャートである。
【符号の説明】
【0191】
100(141〜143、151〜153) ビデオゲーム装置
101 ビデオゲーム本体
103 制御部
105 RAM
107 HDD
109 サウンド処理部
111 グラフィック処理部
112 フレームメモリ
113 DVD/CD−ROMドライブ
115 通信インターフェイス
117 インターフェイス部
119 内部バス
121 表示装置
122 表示画面
125 サウンド出力装置
131 記録媒体
140、150 ビデオゲーム装置群
200 サーバ装置
201 サーバ本体
203 制御部
205 RAM
207 HDD
213 DVD/CD−ROMドライブ
215 通信インターフェイス
231 記録媒体
【特許請求の範囲】
【請求項1】
サーバ装置と、各々が所定のネットワークを介して該サーバ装置に接続可能であると共に、前記サーバ装置を介することなく前記所定のネットワークを介して互いに接続可能な複数のクライアント装置から構成されるクライアント群とを備えるネットワークゲームシステムであって、
前記サーバ装置は、
前記複数のクライアント装置の各々の接続状況を管理する接続状況管理手段と、
前記複数のクライアント装置の各々におけるゲームの進行状況を管理するゲーム進行状況管理手段と、
前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、ゲームを進行するための処理のうちの所定の処理を実行するための実行クライアントとして指定し、該実行クライアントの指定に関する情報を、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する実行クライアント指定手段と、
前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、該クライアント群におけるゲームの進行に関する情報をやりとりするための管理クライアントとして指定し、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する管理クライアント指定手段と、
前記管理クライアント指定手段により指定した前記管理クライアントから前記クライアント群におけるゲーム進行情報を受信する対クライアント群受信手段と、
前記対クライアント群受信手段により受信されたゲーム進行情報に基づいて、前記ゲーム進行状況管理手段により管理されている前記複数のクライアント装置の各々におけるゲームの進行状況を更新するゲーム進行状況更新手段とを備え、
前記複数のクライアント装置は、それぞれ、
プレイヤの操作により、ゲームを進行するための所定の入力を行う入力手段と、
前記実行クライアント指定手段により前記実行クライアントとして指定されたときに、前記所定の処理を実行する所定処理実行手段と、
前記クライアント群に属する各クライアント装置についての前記入力手段からの入力に応じたゲーム入力情報と、前記所定処理実行手段による前記所定の処理の実行に応じたゲーム実行情報とに応じたクライアント群内ゲーム情報を、前記クライアント群に属する他のクライアント装置との間で前記所定のネットワークを介して互いに送受信するクライアント群内送受信手段と、
前記管理クライアント指定手段により前記管理クライアントとして指定されたときに、前記クライアント群に属する各クライアント装置についての前記ゲーム入力情報と前記ゲーム実行情報とに応じた前記ゲーム進行情報を前記所定のネットワークを介して前記サーバ装置に送信するクライアント群外送信手段とを備え、
前記実行クライアント指定手段は、所定の期間毎に、前記クライアント群に属する複数のクライアント装置のうちで前記実行クライアントとして指定するクライアント装置を変更する
ことを特徴とするネットワークゲームシステム。
【請求項2】
前記実行クライアント指定手段が前記実行クライアントとして指定するクライアント装置と、前記管理クライアント指定手段が前記管理クライアントとして指定するクライアント装置は、同一のクライアント装置である
ことを特徴とする請求項1に記載のネットワークゲームシステム。
【請求項3】
前記実行クライアント指定手段は、前記クライアント群に属する複数のクライアント装置のうちの2以上のクライアント装置を前記実行クライアントとして指定する複数指定手段を含む
ことを特徴とする請求項1または2に記載のネットワークゲームシステム。
【請求項4】
前記サーバ装置は、前記クライアント群に属する複数のクライアント装置のうちで少なくとも前記実行クライアントとして指定しているクライアント装置との通信が切断されたかどうかを判定する切断判定手段をさらに備え、
前記実行クライアント指定手段は、前記実行クライアントとして指定しているクライアント装置との通信が切断されたと前記切断判定手段により判定されたときに、前記クライアント群に属する他のクライアント装置を前記指定クライアントとして指定する
ことを特徴とする請求項1乃至3のいずれか1項に記載のネットワークゲームシステム。
【請求項5】
前記ネットワークゲームシステムは、前記サーバ装置を介することなく前記所定のネットワークを介して前記クライアント群に属する任意のクライアント装置に接続可能な群外クライアント装置をさらに含み、
前記複数のクライアント装置は、それぞれ、前記クライアント群に属さない他のクライアント装置に前記クライアント群内ゲーム情報を送信するクライアント群外送信手段をさらに備え、
前記群外クライアント装置は、
前記クライアント群外送信手段から送信されたクライアント群内ゲーム情報を受信するクライアント群内ゲーム情報受信手段と、
前記クライアント群内ゲーム情報受信手段の受信したクライアント群内ゲーム情報に基づいて、前記クライアント群におけるゲームの進行状況を示す情報を出力するゲーム進行状況出力手段を備える
ことを特徴とする請求項1乃至4のいずれか1項に記載のネットワークゲームシステム。
【請求項6】
他のコンピュータ装置を介することなく所定のネットワークを介して互いに接続可能な複数のクライアント装置から構成されるクライアント群に属する各クライアント装置と前記所定のネットワークを介して接続可能なコンピュータ装置を、
前記複数のクライアント装置の各々の接続状況を管理する接続状況管理手段、
前記複数のクライアント装置の各々におけるゲームの進行状況を管理するゲーム進行状況管理手段、
前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、ゲームを進行するための処理のうちの所定の処理を実行するための実行クライアントとして指定し、該実行クライアントの指定に関する情報を、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する実行クライアント指定手段、
前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、該クライアント群におけるゲームの進行に関する情報をやりとりするための管理クライアントとして指定し、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する管理クライアント指定手段、
前記管理クライアント指定手段により指定した前記管理クライアントから前記クライアント群におけるゲーム進行情報を受信するゲーム進行情報受信手段、及び、
前記ゲーム進行情報受信手段により受信されたゲーム進行情報に基づいて、前記ゲーム進行状況管理手段により管理されている前記複数のクライアント装置の各々におけるゲームの進行状況を更新するゲーム進行状況更新手段として機能させ、
前記実行クライアント指定手段は、所定の期間毎に、前記クライアント群に属する複数のクライアント装置のうちで前記実行クライアントとして指定するクライアント装置を変更する
ことを特徴とするプログラム。
【請求項7】
所定のネットワークを介してサーバ装置に接続可能であると共に、前記サーバ装置を介することなく前記所定のネットワークを介して同一のコンピュータ装置群に属する他のコンピュータ装置に接続可能なコンピュータ装置を、
プレイヤの操作により入力手段から入力されたゲームを進行するための所定の入力を受け付ける入力受付手段、
前記サーバ装置からの通知に基づいて、前記コンピュータ装置群に属するコンピュータ装置の中でゲームを進行するための処理のうちの所定の処理を実行するための実行コンピュータ装置として指定されたときに、該所定の処理を実行する所定処理実行手段、
前記入力受付手段が受け付けた入力に応じたゲーム入力情報と、前記所定処理実行手段による前記所定の処理の実行に応じたゲーム実行情報とに応じた群内ゲーム情報を、前記コンピュータ群に属する他のコンピュータ装置との間で前記所定のネットワークを介して互いに送受信する群内送受信手段、及び、
前記サーバ装置からの通知に基づいて、前記コンピュータ装置群におけるゲームの進行に関する情報を該サーバ装置とやりとりするための管理コンピュータ装置として指定されたときに、当該コンピュータ群に属する各コンピュータ装置についての前記ゲーム入力情報と前記ゲーム実行情報とに応じた前記ゲーム進行情報を前記所定のネットワークを介して前記サーバ装置に送信する群外送信手段
として機能させることを特徴とするプログラム。
【請求項1】
サーバ装置と、各々が所定のネットワークを介して該サーバ装置に接続可能であると共に、前記サーバ装置を介することなく前記所定のネットワークを介して互いに接続可能な複数のクライアント装置から構成されるクライアント群とを備えるネットワークゲームシステムであって、
前記サーバ装置は、
前記複数のクライアント装置の各々の接続状況を管理する接続状況管理手段と、
前記複数のクライアント装置の各々におけるゲームの進行状況を管理するゲーム進行状況管理手段と、
前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、ゲームを進行するための処理のうちの所定の処理を実行するための実行クライアントとして指定し、該実行クライアントの指定に関する情報を、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する実行クライアント指定手段と、
前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、該クライアント群におけるゲームの進行に関する情報をやりとりするための管理クライアントとして指定し、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する管理クライアント指定手段と、
前記管理クライアント指定手段により指定した前記管理クライアントから前記クライアント群におけるゲーム進行情報を受信する対クライアント群受信手段と、
前記対クライアント群受信手段により受信されたゲーム進行情報に基づいて、前記ゲーム進行状況管理手段により管理されている前記複数のクライアント装置の各々におけるゲームの進行状況を更新するゲーム進行状況更新手段とを備え、
前記複数のクライアント装置は、それぞれ、
プレイヤの操作により、ゲームを進行するための所定の入力を行う入力手段と、
前記実行クライアント指定手段により前記実行クライアントとして指定されたときに、前記所定の処理を実行する所定処理実行手段と、
前記クライアント群に属する各クライアント装置についての前記入力手段からの入力に応じたゲーム入力情報と、前記所定処理実行手段による前記所定の処理の実行に応じたゲーム実行情報とに応じたクライアント群内ゲーム情報を、前記クライアント群に属する他のクライアント装置との間で前記所定のネットワークを介して互いに送受信するクライアント群内送受信手段と、
前記管理クライアント指定手段により前記管理クライアントとして指定されたときに、前記クライアント群に属する各クライアント装置についての前記ゲーム入力情報と前記ゲーム実行情報とに応じた前記ゲーム進行情報を前記所定のネットワークを介して前記サーバ装置に送信するクライアント群外送信手段とを備え、
前記実行クライアント指定手段は、所定の期間毎に、前記クライアント群に属する複数のクライアント装置のうちで前記実行クライアントとして指定するクライアント装置を変更する
ことを特徴とするネットワークゲームシステム。
【請求項2】
前記実行クライアント指定手段が前記実行クライアントとして指定するクライアント装置と、前記管理クライアント指定手段が前記管理クライアントとして指定するクライアント装置は、同一のクライアント装置である
ことを特徴とする請求項1に記載のネットワークゲームシステム。
【請求項3】
前記実行クライアント指定手段は、前記クライアント群に属する複数のクライアント装置のうちの2以上のクライアント装置を前記実行クライアントとして指定する複数指定手段を含む
ことを特徴とする請求項1または2に記載のネットワークゲームシステム。
【請求項4】
前記サーバ装置は、前記クライアント群に属する複数のクライアント装置のうちで少なくとも前記実行クライアントとして指定しているクライアント装置との通信が切断されたかどうかを判定する切断判定手段をさらに備え、
前記実行クライアント指定手段は、前記実行クライアントとして指定しているクライアント装置との通信が切断されたと前記切断判定手段により判定されたときに、前記クライアント群に属する他のクライアント装置を前記指定クライアントとして指定する
ことを特徴とする請求項1乃至3のいずれか1項に記載のネットワークゲームシステム。
【請求項5】
前記ネットワークゲームシステムは、前記サーバ装置を介することなく前記所定のネットワークを介して前記クライアント群に属する任意のクライアント装置に接続可能な群外クライアント装置をさらに含み、
前記複数のクライアント装置は、それぞれ、前記クライアント群に属さない他のクライアント装置に前記クライアント群内ゲーム情報を送信するクライアント群外送信手段をさらに備え、
前記群外クライアント装置は、
前記クライアント群外送信手段から送信されたクライアント群内ゲーム情報を受信するクライアント群内ゲーム情報受信手段と、
前記クライアント群内ゲーム情報受信手段の受信したクライアント群内ゲーム情報に基づいて、前記クライアント群におけるゲームの進行状況を示す情報を出力するゲーム進行状況出力手段を備える
ことを特徴とする請求項1乃至4のいずれか1項に記載のネットワークゲームシステム。
【請求項6】
他のコンピュータ装置を介することなく所定のネットワークを介して互いに接続可能な複数のクライアント装置から構成されるクライアント群に属する各クライアント装置と前記所定のネットワークを介して接続可能なコンピュータ装置を、
前記複数のクライアント装置の各々の接続状況を管理する接続状況管理手段、
前記複数のクライアント装置の各々におけるゲームの進行状況を管理するゲーム進行状況管理手段、
前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、ゲームを進行するための処理のうちの所定の処理を実行するための実行クライアントとして指定し、該実行クライアントの指定に関する情報を、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する実行クライアント指定手段、
前記クライアント群に属する複数のクライアント装置のうちの任意のクライアント装置を、該クライアント群におけるゲームの進行に関する情報をやりとりするための管理クライアントとして指定し、該指定に関わるクライアント装置に前記所定のネットワークを介して通知する管理クライアント指定手段、
前記管理クライアント指定手段により指定した前記管理クライアントから前記クライアント群におけるゲーム進行情報を受信するゲーム進行情報受信手段、及び、
前記ゲーム進行情報受信手段により受信されたゲーム進行情報に基づいて、前記ゲーム進行状況管理手段により管理されている前記複数のクライアント装置の各々におけるゲームの進行状況を更新するゲーム進行状況更新手段として機能させ、
前記実行クライアント指定手段は、所定の期間毎に、前記クライアント群に属する複数のクライアント装置のうちで前記実行クライアントとして指定するクライアント装置を変更する
ことを特徴とするプログラム。
【請求項7】
所定のネットワークを介してサーバ装置に接続可能であると共に、前記サーバ装置を介することなく前記所定のネットワークを介して同一のコンピュータ装置群に属する他のコンピュータ装置に接続可能なコンピュータ装置を、
プレイヤの操作により入力手段から入力されたゲームを進行するための所定の入力を受け付ける入力受付手段、
前記サーバ装置からの通知に基づいて、前記コンピュータ装置群に属するコンピュータ装置の中でゲームを進行するための処理のうちの所定の処理を実行するための実行コンピュータ装置として指定されたときに、該所定の処理を実行する所定処理実行手段、
前記入力受付手段が受け付けた入力に応じたゲーム入力情報と、前記所定処理実行手段による前記所定の処理の実行に応じたゲーム実行情報とに応じた群内ゲーム情報を、前記コンピュータ群に属する他のコンピュータ装置との間で前記所定のネットワークを介して互いに送受信する群内送受信手段、及び、
前記サーバ装置からの通知に基づいて、前記コンピュータ装置群におけるゲームの進行に関する情報を該サーバ装置とやりとりするための管理コンピュータ装置として指定されたときに、当該コンピュータ群に属する各コンピュータ装置についての前記ゲーム入力情報と前記ゲーム実行情報とに応じた前記ゲーム進行情報を前記所定のネットワークを介して前記サーバ装置に送信する群外送信手段
として機能させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2009−119150(P2009−119150A)
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願番号】特願2007−298487(P2007−298487)
【出願日】平成19年11月16日(2007.11.16)
【出願人】(308033283)株式会社スクウェア・エニックス (173)
【Fターム(参考)】
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願日】平成19年11月16日(2007.11.16)
【出願人】(308033283)株式会社スクウェア・エニックス (173)
【Fターム(参考)】
[ Back to top ]