Description
US 61/119,787 20081204 US 61/119,789 20081204 20131211 G06F 13/00 patcit 1 : 特開平04−242467(JP,A)
patcit 2 : 国際公開第2006/057040(WO,A1)
patcit 3 : 国際公開第2008/035600(WO,A1)
nplcit 1 : 酒徳 哲,分散型部分空間の結合による共有仮想空間の構成法,マルチメディア,分散,協調とモバイル(DICOMO2007)シンポジウム論文集 情報処理学会シンポジウムシリーズ Vol.2007 No.1 [CD−ROM],日本,社団法人情報処理学会,2007年 7月 4日,第2007巻,第1682頁-第1689頁
JP2009070236 20091202 WO2010064653 20100610 20121107 木村 雅也
Technical Field
[0001]
本発明は、仮想空間を管理する仮想空間管理システム、当該仮想空間管理システムを構成する通信制御サーバ、その制御方法、プログラム、及び情報記憶媒体に関する。
Background Art
[0002]
例えば複数ユーザが参加可能なオンラインゲームなどでは、仮想空間を管理する仮想空間管理システムが構築され、この仮想空間内に各ユーザに関連づけられたオブジェクトなどが配置される(特許文献1参照)。
Citation List
Patent Literature
[0003]
patcit 1 : 特開2005−234633号公報
Summary of Invention
Technical Problem
[0004]
上述した仮想空間管理システムにおいて、管理対象となる仮想空間が大きく、多数のユーザが参加する場合、処理負荷を分散するために仮想空間を複数の部分空間に分割し、この分割された部分空間ごとに、当該部分空間を管理するサーバ(空間管理サーバ)を設置することがある。この場合、ユーザ端末に関連づけられる仮想空間内の位置(ユーザ位置)が、ある空間管理サーバによって管理される部分空間の内部から別の空間管理サーバによって管理される部分空間の内部に遷移する場合、ユーザ端末はこれまでユーザ位置が属していた部分空間を管理する空間管理サーバとの通信接続を終了し、遷移後の部分空間を管理する空間管理サーバとの間で新たに通信接続を確立する必要がある。このような通信接続の切り替えが実行されている間、ユーザ端末は仮想空間に対するユーザの操作を行うことができなくなってしまい、ユーザを待たせてしまうことがあった。
[0005]
また、上述した仮想空間管理システムでは、ユーザ端末側において送受信可能な通信帯域などのネットワーク環境条件によっては、仮想空間管理システム側で送信したいデータの全てを所定時間内に送信しきれないことがある。そのため、仮想空間管理システムが単にユーザ端末側で受信可能な量のデータを順次送信するだけでは、仮想空間内で発生するイベント等の進行によって、送信する必要がなくなってからデータを送信してしまったり、送信すべきデータを送信すべきタイミングで送信できなかったりする事態が生じうる。
[0006]
本発明は上記実情を考慮してなされたものであって、その目的の一つは、ユーザの操作を中断させることなく、ユーザ位置が属する部分空間の遷移処理を行うことのできる仮想空間管理システム、通信制御サーバ、その制御方法、プログラム、及び情報記憶媒体を提供することにある。
[0007]
また、本発明の別の目的は、ユーザ端末のネットワーク環境に応じて、送信すべきデータを送信することのできる仮想空間管理システム、空間管理サーバ、その制御方法、プログラム、及び情報記憶媒体を提供することにある。
Technical Solution
[0008]
本発明に係る仮想空間管理システムは、一つの仮想空間を分割してなる複数の部分空間のそれぞれを管理する複数の空間管理サーバと、前記複数の空間管理サーバのいずれかとユーザ端末との間の通信を中継する通信制御サーバと、を含む仮想空間管理システムであって、前記各空間管理サーバは、前記ユーザ端末に関連づけられる前記仮想空間内の位置が、他の空間管理サーバによって管理される部分空間の内部から、当該空間管理サーバによって管理される部分空間の内部に遷移する場合に、当該遷移に係る処理を行うユーザ遷移制御手段を備え、前記通信制御サーバは、前記遷移に係る処理が実行されている間、前記ユーザ端末との間の通信接続を維持するとともに、前記遷移に応じて、当該ユーザ端末から受信したデータの送信先を、当該遷移後の部分空間を管理する空間管理サーバに変更する接続先管理手段を備えることを特徴とする。
[0009]
上記仮想空間管理システムにおいて、前記ユーザ遷移制御手段は、前記遷移に係る処理の完了を前記通信制御サーバに通知し、前記接続先管理手段は、前記遷移の完了の通知を受け付けた場合に、前記ユーザ端末から受信したデータの送信先を、当該通知を行った空間管理サーバに変更することとしてもよい。
[0010]
また、上記仮想空間管理システムにおいて、前記通信制御サーバは、前記遷移に係る処理が実行されている間、前記遷移前の部分空間を管理する空間管理サーバ、及び前記遷移後の部分空間を管理する空間管理サーバのそれぞれとの間の通信接続を維持することとしてもよい。
[0011]
また、上記仮想空間管理システムにおいて、前記ユーザ遷移制御手段は、前記ユーザ端末に関連づけられる前記仮想空間内の位置が、当該空間管理サーバによって管理される部分空間の内部から、他の空間管理サーバによって管理される部分空間の内部に遷移する場合に、当該遷移の開始を前記通信制御サーバに通知し、前記接続先管理手段は、前記遷移の開始の通知を受け付けてから、前記遷移の完了の通知を受け付けるまでの間、前記ユーザ端末から受信した情報をバッファリングし、前記遷移の完了の通知を受け付けた後、当該通知を行った空間管理サーバに対して当該バッファリングした情報を送信することとしてもよい。
[0012]
さらに、上記仮想空間管理システムにおいて、前記接続先管理手段は、前記ユーザ端末に関連づけられる前記仮想空間内の位置が属する部分空間を管理する空間管理サーバを特定する情報を接続先情報として保持し、前記遷移の完了の通知を受け付けた場合に、当該接続先情報を、当該通知を行った空間管理サーバを特定する情報に更新し、前記通信制御サーバは、前記接続先情報を参照して、前記ユーザ端末から受信したデータの送信先を決定することとしてもよい。
[0013]
また、本発明に係る通信制御サーバは、一つの仮想空間を分割してなる複数の部分空間のそれぞれを管理する複数の空間管理サーバのいずれかと、ユーザ端末と、の間の通信を中継する通信制御サーバであって、前記ユーザ端末に関連づけられる前記仮想空間内の位置が、一の空間管理サーバによって管理される部分空間の内部から、他の空間管理サーバによって管理される部分空間の内部に遷移する場合に、当該遷移に係る処理が前記他の空間管理サーバによって実行されている間、前記ユーザ端末との間の通信接続を維持するとともに、前記遷移に応じて、当該ユーザ端末から受信したデータの送信先を、前記他の空間管理サーバに変更する接続先管理手段を備えることを特徴とする。
[0014]
また、本発明に係る通信制御サーバの制御方法は、一つの仮想空間を分割してなる複数の部分空間のそれぞれを管理する複数の空間管理サーバのいずれかと、ユーザ端末と、の間の通信を中継する通信制御サーバの制御方法であって、前記ユーザ端末に関連づけられる前記仮想空間内の位置が、一の空間管理サーバによって管理される部分空間の内部から、他の空間管理サーバによって管理される部分空間の内部に遷移する場合に、当該遷移に係る処理が前記他の空間管理サーバによって実行されている間、前記ユーザ端末との間の通信接続を維持するとともに、前記遷移に応じて、当該ユーザ端末から受信したデータの送信先を、前記他の空間管理サーバに変更するステップを含むことを特徴とする。
[0015]
また、本発明に係るプログラムは、一つの仮想空間を分割してなる複数の部分空間のそれぞれを管理する複数の空間管理サーバのいずれかと、ユーザ端末と、の間の通信を中継する通信制御サーバを、前記ユーザ端末に関連づけられる前記仮想空間内の位置が、一の空間管理サーバによって管理される部分空間の内部から、他の空間管理サーバによって管理される部分空間の内部に遷移する場合に、当該遷移に係る処理が前記他の空間管理サーバによって実行されている間、前記ユーザ端末との間の通信接続を維持するとともに、前記遷移に応じて、当該ユーザ端末から受信したデータの送信先を、前記他の空間管理サーバに変更する接続先管理手段、として機能させるためのプログラムである。このプログラムは、コンピュータ読み取り可能な情報記憶媒体に格納されてよい。
[0016]
また、本発明に係る別の仮想空間システムは、仮想空間を管理する空間管理サーバと、前記空間管理サーバとユーザ端末との間の通信を中継する通信制御サーバと、を含む仮想空間管理システムであって、前記空間管理サーバは、前記ユーザ端末に送信すべき、前記仮想空間に関する複数のイベント情報を、当該各イベント情報の送信順序が特定される態様で待機バッファに格納するイベント情報格納手段と、前記待機バッファに格納された複数のイベント情報を、順に読み出して前記通信制御サーバに対して出力するイベント情報出力手段と、前記待機バッファに格納された情報を変更するバッファ情報変更手段と、を備え、前記通信制御サーバは、前記イベント情報出力手段が出力するイベント情報を、順に前記ユーザ端末に対して送信し、前記イベント情報出力手段は、前記通信制御サーバが前記ユーザ端末に対して単位時間あたりに送信可能なデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を異ならせることを特徴とする。
[0017]
上記仮想空間管理システムにおいて、前記イベント情報出力手段は、前記通信制御サーバが過去に前記ユーザ端末に対して単位時間あたりに送信したデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を変化させることとしてもよい。
[0018]
また、上記仮想空間管理システムにおいて、前記イベント情報出力手段は、前記通信制御サーバに保持されている送信待ちのイベント情報のデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を補正することとしてもよい。
[0019]
また、上記仮想空間管理システムにおいて、前記イベント情報格納手段は、前記複数のイベント情報のそれぞれにアプリケーション実行手段が指定する優先度情報を関連づけて前記待機バッファに格納し、前記バッファ情報変更手段は、前記アプリケーション実行手段によって書き換えられる前記優先度情報に応じて、前記各イベント情報の送信順序を変更することとしてもよい。
[0020]
さらに、上記仮想空間管理システムにおいて、前記イベント情報格納手段は、所定の条件を満たすイベント情報については、前記待機バッファに格納せずに、前記通信制御サーバに対して出力することとしてもよい。
[0021]
また、本発明に係る空間管理サーバは、仮想空間を管理し、ユーザ端末との間の通信を中継する通信制御サーバに接続される空間管理サーバであって、前記ユーザ端末に送信すべき、前記仮想空間に関する複数のイベント情報を、当該各イベント情報の送信順序が特定される態様で待機バッファに格納するイベント情報格納手段と、前記待機バッファに格納された複数のイベント情報を、順に読み出して前記通信制御サーバに対して出力するイベント情報出力手段と、前記待機バッファに格納された情報を変更するバッファ情報変更手段と、を備え、前記イベント情報出力手段は、前記通信制御サーバが前記ユーザ端末に対して単位時間あたりに送信可能なデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を異ならせることを特徴とする。
[0022]
また、本発明に係る空間管理サーバの制御方法は、仮想空間を管理し、ユーザ端末との間の通信を中継する通信制御サーバに接続される空間管理サーバの制御方法であって、前記ユーザ端末に送信すべき、前記仮想空間に関する複数のイベント情報を、当該各イベント情報の送信順序が特定される態様で待機バッファに格納するイベント情報格納ステップと、前記待機バッファに格納された複数のイベント情報を、順に読み出して前記通信制御サーバに対して出力するイベント情報出力ステップと、前記待機バッファに格納された情報を変更するバッファ情報変更ステップと、を備え、前記イベント情報出力ステップでは、前記通信制御サーバが前記ユーザ端末に対して単位時間あたりに送信可能なデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を異ならせることを特徴とする。
[0023]
また、本発明に係る別のプログラムは、仮想空間を管理し、ユーザ端末との間の通信を中継する通信制御サーバに接続される空間管理サーバを、前記ユーザ端末に送信すべき、前記仮想空間に関する複数のイベント情報を、当該各イベント情報の送信順序が特定される態様で待機バッファに格納するイベント情報格納手段、前記待機バッファに格納された複数のイベント情報を、順に読み出して前記通信制御サーバに対して出力するイベント情報出力手段、及び前記待機バッファに格納された情報を変更するバッファ情報変更手段、として機能させ、前記イベント情報出力手段は、前記通信制御サーバが前記ユーザ端末に対して単位時間あたりに送信可能なデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を異ならせることを特徴とする。このプログラムは、コンピュータ読み取り可能な情報記憶媒体に記憶されてよい。
Brief Description of Drawings
[0024]
[fig. 1] 本発明の実施の形態に係る仮想空間管理システムの全体概要を示す概要図である。
[fig. 2] 本発明の実施の形態に係る仮想空間管理システムによって管理される仮想空間の概念図である。
[fig. 3] 本発明の実施の形態に係る仮想空間管理システムによって実現される機能例を示す機能ブロック図である。
[fig. 4] イベント情報管理部の機能例を示す機能ブロック図である。
[fig. 5] 待機バッファの一例を示す図である。
[fig. 6] イベント情報の送信先となる周辺範囲を示す説明図である。
[fig. 7] 送信待ちキューの一例を示す図である。
[fig. 8] ユーザオブジェクトの遷移時に実行される処理の一例を示すフロー図である。
[fig. 9] 接続先管理テーブルの一例を示す図である。
[fig. 10] 通信帯域管理テーブルの一例を示す図である。
Description of Embodiments
[0025]
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
[0026]
本実施形態に係る仮想空間管理システムは、1又は複数の仮想空間を管理している。この仮想空間は、例えば多人数参加型のオンラインゲームを実現する空間であり、2次元や3次元の空間であってよい。仮想空間管理システムのユーザは、それぞれ自分自身の所持するユーザ端末を操作して、インターネット等の通信ネットワークを介して本実施形態に係る仮想空間管理システムにアクセスすることによって、この仮想空間の一つに参加する。具体的に、ユーザが仮想空間に参加することによって、当該ユーザが使用するユーザ端末に関連づけられる位置(以下、ユーザ位置という)が仮想空間内に設定される。例えばこのユーザ位置は、ユーザに対応づけられたオブジェクト(ユーザオブジェクト)の配置位置であってもよいし、ユーザ端末に仮想空間内の様子を示す画像を表示させるために仮想空間内に設定される視点位置であってもよい。本実施形態に係る仮想空間管理システムは、ユーザのユーザ端末に対する指示操作によって仮想空間内におけるユーザ位置を移動させたり、仮想空間内で発生する様々なイベントに関する情報をユーザ端末に送信することによって、仮想空間内の様子を示す画像や音声をユーザに提示したりする。これにより、ユーザは、仮想空間によって実現されるゲームをプレイしたり、仮想空間内で発生する様々な出来事を体験したりすることができる。
[0027]
図1は、本実施形態に係る仮想空間管理システム1の全体概要を示す概要図である。同図に示されるように、仮想空間管理システム1は、システムログイン管理サーバ2と、空間ログイン管理サーバ3と、複数の通信制御サーバ4と、複数の空間管理サーバ5と、を含んで構成される。これらの各サーバは、いずれもサーバコンピュータ等の情報処理装置によって構成され、互いに通信ネットワークを介して接続されている。また、仮想空間管理システム1には、インターネット等の通信ネットワークを介して、仮想空間管理システム1のユーザがそれぞれ使用する複数のユーザ端末6が接続される。ユーザ端末6は、例えば家庭用ゲーム機やパーソナルコンピュータ等の情報処理装置である。なお、本実施形態では、各通信制御サーバ4と各空間管理サーバ5とは、例えばセンタ内LAN等の、各ユーザ端末6と各通信制御サーバ4とを接続する通信ネットワークより通信帯域の大きな通信ネットワークによって接続されていることとする。
[0028]
システムログイン管理サーバ2は、仮想空間管理システム1全体のログイン管理を行う。ユーザが仮想空間管理システム1の利用を開始する場合、まずユーザ端末6を操作してシステムログイン管理サーバ2にアクセスし、システムログイン管理サーバ2によるユーザ認証を受ける。
[0029]
空間ログイン管理サーバ3は、仮想空間管理システム1によって管理される仮想空間ごとに設置され、対応する仮想空間へのユーザの参加(ログイン)を管理する。図1においては、仮想空間管理システム1によって管理される仮想空間は一つであって、空間ログイン管理サーバ3も一つだけであることとしている。しかしながら、仮想空間管理システム1は、複数の仮想空間を管理可能に構成されてもよい。その場合には、個々の仮想空間に対して、1つの空間ログイン管理サーバ3、1又は複数の通信制御サーバ4、及び1又は複数の空間管理サーバ5が設置される。
[0030]
システムログイン管理サーバ2によるユーザ認証を受けたユーザは、仮想空間管理システム1によって管理される1又は複数の仮想空間の中から、自分がこれから参加する仮想空間を選択する。この選択に応じて、当該ユーザが使用するユーザ端末6は、選択された仮想空間に対応する空間ログイン管理サーバ3に対して、仮想空間への参加要求を送信する。空間ログイン管理サーバ3は、参加要求を行ったユーザを認証して参加の可否を判定し、その結果をユーザ端末6に通知する。
[0031]
通信制御サーバ4は、仮想空間管理システム1によって管理される仮想空間のいずれかと関連づけられており、当該関連づけられた仮想空間に参加中のユーザが使用するユーザ端末6との間の通信を制御する。具体的に、通信制御サーバ4は、対応する仮想空間に参加中のユーザ端末6との間で通信接続を確立し、当該ユーザ端末6と、当該ユーザ端末6が参加する仮想空間を管理する空間管理サーバ5と、の間の通信を中継する。通信制御サーバ4には、同じ仮想空間に参加する複数のユーザ端末6が通信接続可能になっている。また、通信制御サーバ4は、対応する仮想空間を管理する1又は複数の空間管理サーバ5のそれぞれと通信接続される。
[0032]
前述した空間ログイン管理サーバ3は、ユーザ端末6からの参加要求を許可する場合には、当該ユーザ端末6に対して、参加要求のあった仮想空間に対応する通信制御サーバ4の一つを特定する情報を通知する。なお、当該仮想空間に対応する通信制御サーバ4が複数ある場合には、空間ログイン管理サーバ3は、各通信制御サーバ4に割り当てられているユーザ端末6の数を管理しておき、現在割り当てられているユーザ端末6の数が少ない(すなわち、他の通信制御サーバ4と比較して処理負荷の少ない)通信制御サーバ4を特定する情報を、新たに参加要求を行ったユーザ端末6に対して通知することとする。
[0033]
この通知に応じて、ユーザ端末6は、通知された情報によって特定される通信制御サーバ4に対して接続要求を行い、当該通信制御サーバ4との間で通信接続を確立する。すなわち、ユーザ端末6及び通信制御サーバ4の両者が、互いに相手方を通信先として特定し、常時両者の間でデータの送受信が可能な状態を維持するための初期処理(セッション開始処理)を実行する。通信接続が確立した後は、ユーザ端末6が当該仮想空間に参加している間、当該ユーザ端末6と通信制御サーバ4との間の通信接続が維持され、ユーザ端末6は通信制御サーバ4を介して自分自身が参加する仮想空間を管理する空間管理サーバ5との間の通信を行う。
[0034]
空間管理サーバ5は、仮想空間管理システム1によって管理される仮想空間のいずれかと関連づけられており、当該関連づけられた仮想空間の管理を行う。一つの仮想空間に対応する空間管理サーバ5が複数ある場合には、各空間管理サーバ5は、一つの仮想空間を分割してなる複数の部分空間のいずれかを管理する。具体的に、本実施形態では、仮想空間管理システム1の管理対象となる一つの仮想空間が複数の部分空間に分割され、この部分空間のそれぞれに対して、当該部分空間内に配置されるオブジェクトや当該部分空間内で発生するイベントを管理する空間管理サーバ5が割り当てられる。空間管理サーバ5は、担当する部分空間内の各オブジェクトの挙動を管理し、当該部分空間内で発生する各種のイベント(オブジェクト同士の相互作用や、参加中のユーザからの指示などによって仮想空間内に生じる各種の事象)に関する処理を実行する。
[0035]
図2は、仮想空間管理システム1によって管理される仮想空間Vの概念図である。この図の例では、仮想空間Vは、4つの部分空間Vpa、Vpb、Vpc及びVpdに分割されており、仮想空間Vに参加している各ユーザに対応するユーザオブジェクトが、4つの部分空間Vpのいずれかに配置されている。以下では、部分空間Vpa、Vpb、Vpc及びVpdのそれぞれを管理する空間管理サーバ5を、空間管理サーバ5a、5b、5c及び5dと表記する。また、当該仮想空間Vに参加しているユーザをユーザUa、Ub、Uc、Ud及びUeと表記し、これらユーザUのそれぞれが使用するユーザ端末6をユーザ端末6a、6b、6c、6d及び6eと表記する。さらに、これらユーザのそれぞれに対応するユーザオブジェクトを、ユーザオブジェクトOa、Ob、Oc、Od及びOeと表記する。本実施形態では、これらユーザオブジェクトOの仮想空間V内における配置位置が、各ユーザ端末6に関連づけられるユーザ位置に相当する。また、ユーザ端末6a、6b及び6cは通信制御サーバ4aと、ユーザ端末6d及び6eは通信制御サーバ4bと、それぞれ通信接続されることとする。
[0036]
以下、ユーザUが仮想空間Vに参加中に、本実施形態に係る仮想空間管理システム1によって実現される機能の具体例について、説明する。
[0037]
まず、仮想空間管理システム1によって実行される処理の全体概要を説明する。仮想空間Vへの参加中、ユーザUがユーザ端末6に対する指示操作を行うと、ユーザ端末6は、当該指示操作の内容に応じた情報(以下、ユーザメッセージという)を通信接続された通信制御サーバ4に対して送信する。例えばユーザメッセージは、ユーザオブジェクトOの現在の座標値や移動方向、移動速度などを指示する情報であってもよいし、ユーザオブジェクトOに対して各種の動作を指示する情報であってもよい。各通信制御サーバ4は、ユーザ端末6から送信されるユーザメッセージを、当該ユーザ端末6に対応するユーザオブジェクトOが属する部分空間Vpを管理する空間管理サーバ5に対して送信する。空間管理サーバ5は、自分自身が管理する部分空間Vpに存在する各ユーザオブジェクトOに関連づけられたユーザ端末6から送信されてくるユーザメッセージや、自分自身が管理している部分空間Vp内に配置された各オブジェクトの挙動を演算して得られる情報などに基づいて、当該各ユーザ端末6に対して通知すべきイベント情報を出力する。空間管理サーバ5が出力したイベント情報は、通信制御サーバ4を介して、各ユーザ端末6に送信される。イベント情報を受信したユーザ端末6は、当該イベント情報の内容に応じて、モニタに表示される画像を更新したり、スピーカから音声を再生したりする。このような処理が継続的に実行されることによって、各ユーザUは仮想空間V内のユーザオブジェクトOを操作し、仮想空間V内で発生する各種のイベントを体験することができる。
[0038]
図3は、本実施形態に係る仮想空間管理システム1が実現する機能の具体例を示す機能ブロック図である。同図に示されるように、空間管理サーバ5は、機能的に、アプリケーション実行部11と、イベント情報管理部12と、ユーザ遷移制御部13と、通信処理部14と、を含んで構成される。通信制御サーバ4は、機能的に、接続先管理部21と、データ中継処理部22と、通信状況管理部23と、を含んで構成される。また、ユーザ端末6は、機能的に、ユーザメッセージ送出部31と、空間情報提示部32と、を含んで構成される。これらの機能はいずれも、空間管理サーバ5、通信制御サーバ4、及びユーザ端末6の各装置が備える制御部(マイクロプロセッサ等のプログラム制御デバイス)が、記憶部(例えばRAM等のメモリ素子)に格納されたプログラムを実行することによって実現される。なお、これらのプログラムは、インターネット等の通信ネットワークを介して各装置に提供されてもよいし、光ディスク等のコンピュータ読み取り可能な各種の情報記憶媒体に格納されて提供されてもよい。
[0039]
空間管理サーバ5のアプリケーション実行部11は、仮想空間Vを実現するゲームアプリケーションプログラムなどを制御部が実行することによって、実現される。このアプリケーション実行部11が実行する処理内容によって、空間管理サーバ5が管理する部分空間Vp内にどのようなオブジェクトが配置され、当該部分空間Vp内でどのようなイベントが発生するかが規定される。
[0040]
具体的に、アプリケーション実行部11は、後述するユーザメッセージ送出部31によって各ユーザ端末6から送出されるユーザメッセージを受領する。そして、受領したユーザメッセージや、予め定められた各種のイベント条件などに基づいて、部分空間Vp内に配置される各オブジェクトの状態(各オブジェクトの部分空間内における位置や向き、移動速度や移動方向、その他のパラメタなど)の変化を決定する。単位時間ごとにこのような各オブジェクトの状態の変化が生じることによって、時間とともに部分空間Vp内で各オブジェクトが様々な挙動を示すことになる。このような状態変化を決定する対象となるオブジェクトには、ユーザオブジェクトOだけでなく、その他のキャラクタオブジェクトなどが含まれてもよい。また、各オブジェクトの状態の変化を決定する際には、予め定められた決定条件を用いてもよいし、物理シミュレーションなどを実行した結果を用いてもよい。
[0041]
さらに、アプリケーション実行部11は、上述した各オブジェクトの状態の変化や、その他部分空間Vp内で生じる各種の事象を示すイベント情報を、イベント情報管理部12に対して出力する。このイベント情報は、空間管理サーバ5がユーザ端末6に送信すべき部分空間Vpに関する各種の情報である。なお、アプリケーション実行部11は、当該イベント情報の通知先として、特定のユーザ端末6を指定してもよいし、当該イベント情報の発生場所(状態変化のあったオブジェクトの位置など)及びその周辺を含む所定範囲(以下、周辺範囲という)を指定してもよい。
[0042]
空間管理サーバ5のイベント情報管理部12は、アプリケーション実行部11から出力されるイベント情報の管理を行う。本実施形態では、イベント情報管理部12は、図4に示すように、機能的に、イベント情報格納部12aと、イベント情報出力部12bと、バッファ情報変更部12cと、を含んで構成されている。
[0043]
イベント情報格納部12aは、アプリケーション実行部11が出力する複数のイベント情報を、当該各イベント情報の送信順序が特定される態様で、記憶部内に確保された所定のバッファ領域(以下、待機バッファという)に格納する。このとき、各イベント情報の送信順序は、アプリケーション実行部11によって規定される。具体例として、イベント情報はアプリケーション実行部11が出力した順に待機バッファに格納され、この格納された順序によって各イベント情報の送信順序が特定されることとしてもよい。また、アプリケーション実行部11は、イベント情報の送信順序がイベント情報格納部12aに対する出力順と異なる順序となるように、イベント情報に対して送信順序を規定する情報を付与して出力してもよい。この場合の具体例については、後述する。この待機バッファは、イベント情報の送信先となるユーザ端末6ごとに確保されており、イベント情報管理部12は、各イベント情報を、その送信先のユーザ端末6に関連づけられた待機バッファに格納する。図5は、このような待機バッファの一例を示しており、この図においてはユーザ端末6ごとの待機バッファに格納された個々のイベント情報が丸印によって表されている。
[0044]
イベント情報の通知先としてアプリケーション実行部11がイベント発生場所の周辺範囲を指定した場合、イベント情報管理部12は、以下のようにして当該イベント情報の通知先を特定する。すなわち、各空間管理サーバ5によって管理される部分空間Vpは、所定の単位領域(以下、グリッドという)にさらに分割されており、イベント情報管理部12は、部分空間Vp内に存在する各ユーザオブジェクトOがどのグリッド内に属しているかを管理している。そして、周辺範囲に送信すべきイベント情報を受領した場合には、当該イベント情報の発生場所が属するグリッド及び当該グリッドに隣接する周囲のグリッドの内部に、ユーザオブジェクトOが存在するかを判定する。ユーザオブジェクトOが存在すれば、当該ユーザオブジェクトOに関連づけられたユーザ端末6を、このイベント情報の送信先として決定する。
[0045]
図6は、このようなイベント情報の送信先となる周辺範囲を示す説明図である。この図の例では、破線が各グリッドの境界を示しており、部分空間Vpaが5行5列の計25個のグリッドに分割されている。ここで、アプリケーション実行部11がユーザオブジェクトOaの状態の変化を示すイベント情報を、周辺範囲を通知先として指定して発行したとする。このとき、当該イベント情報の通知先となる周辺範囲は、図中において斜線で示した3行3列の計9グリッドである。この周辺範囲内には、ユーザオブジェクトOaのほか、ユーザオブジェクトOb及びユーザオブジェクトOcが存在している。したがって、イベント情報管理部12は、ユーザ端末6a、6b及び6cを当該イベント情報の通知先として決定し、各ユーザ端末6に関連づけられた待機バッファのそれぞれに、当該イベント情報を格納する。一方、ユーザオブジェクトOdは周辺範囲内に含まれていないので、イベント情報の通知先にならない。このようにイベント情報管理部12が周辺範囲に属するユーザオブジェクトOをイベント情報の通知対象として特定することにより、アプリケーション実行部11は、個々のイベント情報の通知先を個別に指定することなく、単に周辺範囲へのイベント情報通知を指示するだけで、当該イベント情報の影響を受ける可能性のあるユーザ端末6にだけイベント情報を通知することができる。
[0046]
なお、イベント情報の発生場所が部分空間Vpの端に位置するグリッドの場合、当該グリッドの周辺範囲には、隣接する別の部分空間Vpに属するグリッドも含まれる。このような場合、イベント情報管理部12は、隣接する別の部分空間Vpを管理する空間管理サーバ5に対しても、イベント情報を通知する。当該イベント情報を受領した別の空間管理サーバ5のイベント情報管理部12は、通知されたイベント情報の発生場所に隣接するグリッド内にユーザオブジェクトOが存在するか判定し、存在している場合、当該ユーザオブジェクトOに関連づけられたユーザ端末6の待機バッファに、この通知されたイベント情報を格納する。
[0047]
イベント情報出力部12bは、イベント情報格納部12aによって待機バッファに格納された複数のイベント情報を、規定された送信順序に従って順に読み出し、所定の送信待ちキューに書き込む。なお、当該送信待ちキュー内に書き込まれたイベント情報は、待機バッファからは削除される。この送信待ちキューは、待機バッファとは異なり、イベント情報の現実の送信先となる通信制御サーバ4ごとに記憶部内に確保される。そのため、イベント情報出力部12bは、記憶部内に記憶されているユーザ端末6と通信制御サーバ4との対応関係を示すテーブルを参照して、各ユーザ端末6と接続されている通信制御サーバ4がどれかを特定する。そして、各ユーザ端末6に関連づけられたイベント情報を、当該ユーザ端末6と接続された通信制御サーバ4に関連づけられた送信待ちキューに格納する。図7は、このような送信待ちキューの一例を示す図であって、図5と同様にキュー内に格納された個々のイベント情報が丸印によって表されている。
[0048]
バッファ情報変更部12cは、アプリケーション実行部11からの要求に応じて、待機バッファに格納された情報を変更する。これにより、送信待ちキューに格納される前のイベント情報を、場合によって削除又は更新したり、各イベント情報の送信順序を見直したりすることが可能になる。
[0049]
空間管理サーバ5のユーザ遷移制御部13は、仮想空間V内におけるユーザオブジェクトOの位置が、ある一つの部分空間Vp内から、他の部分空間Vp内に遷移する場合に、当該遷移に係る処理を実行する。具体的に、ユーザ遷移制御部13は、ユーザオブジェクトOがユーザの指示等によって自分自身の管理する部分空間Vpから他の空間管理サーバ5によって管理される部分空間Vpに移動する場合、ユーザオブジェクトOに関する情報を当該他の空間管理サーバ5に移送する処理を行う。また、他の空間管理サーバ5によって管理される部分空間Vpから自分自身の管理する部分空間VpにユーザオブジェクトOが進入する場合に、当該他の空間管理サーバ5から新たに入ってくるユーザオブジェクトOに関する情報を受け入れるユーザオブジェクト受け入れ処理を行う。
[0050]
空間管理サーバ5の通信処理部14は、通信制御サーバ4との間でデータの送受信を行う。具体的に、通信処理部14は、各通信制御サーバ4から送信されるユーザメッセージを、アプリケーション実行部11に対して出力する。また、通信制御部14は、送信待ちキューを管理し、イベント情報出力部12bによって送信待ちキューに書き込まれたイベント情報を、順次通信制御サーバ4に対して送信する。なお、送信待ちキューは既に通信待機状態にあるデータを保持する記憶領域なので、先入れ先出し方式によってデータが格納されており、通信処理部14は、送信待ちキューに格納されたデータの更新や順序の変更は行わない。
[0051]
通信制御サーバ4の接続先管理部21は、当該通信制御サーバ4に対して通信接続を行っている各ユーザ端末6に関連づけられたユーザオブジェクトOが、どの空間管理サーバ5によって管理される部分空間Vpに属しているかを管理する。具体的に、接続先管理部21は、当該通信制御サーバ4に接続している各ユーザ端末6と、当該ユーザ端末6に関連づけられたユーザオブジェクトOが属する部分空間Vpを管理する空間管理サーバ5(接続先の空間管理サーバ5)と、を関連づける接続先管理テーブルを生成し、ユーザ遷移制御部13からの通知に応じて当該テーブルの情報を更新する。
[0052]
通信制御サーバ4のデータ中継処理部22は、ユーザ端末6と、当該ユーザ端末6に関連づけられるユーザオブジェクトOが属する部分空間Vpを管理する空間管理サーバ5と、の間のデータ送受信を中継する。具体的に、データ中継処理部22は、通信制御サーバ4が通信接続しているユーザ端末6からユーザメッセージを受信した場合、当該ユーザ端末6に対応する空間管理サーバ5を接続先管理部21が管理する情報を参照して特定し、空間管理サーバ5ごとに用意されたサーバ向け送信待ちキューのうち、当該特定した空間管理サーバ5に対応するサーバ向け送信待ちキューに受信したユーザメッセージを格納する。そして、サーバ向け送信待ちキューに格納されたユーザメッセージを、対応する空間管理サーバ5の通信処理部14に対して順次送信する。
[0053]
また、各空間管理サーバ5の通信処理部14から通知先のユーザ端末6を特定したイベント情報を受信した場合、データ中継処理部22は、当該受信したイベント情報を送信先のユーザ端末6ごとに用意されたユーザ端末向け送信待ちキューに格納する。そして、ユーザ端末向け送信待ちキューに格納されたイベント情報を、対応するユーザ端末6の空間情報提示部32に対して順次送信する。
[0054]
通信制御サーバ4の通信状況管理部23は、データ中継処理部22による各ユーザ端末6とのデータ送受信の状況をモニタし、得られる情報を空間管理サーバ5のイベント情報管理部12に対して通知する。当該通知したデータ送受信の状況に関する情報は、イベント情報管理部12内のイベント情報出力部12bによる、イベント情報の出力処理の際に用いられる。
[0055]
ユーザ端末6のユーザメッセージ送出部31は、ユーザがユーザ端末6の操作デバイス等に対して実行する指示操作を受け付けて、当該指示操作に関する情報をユーザメッセージとして通信制御サーバ4のデータ中継処理部22に対して出力する。また、ユーザ端末6の空間情報提示部32は、通信制御サーバ4のデータ中継処理部22から送信されるイベント情報を受信して、当該受信したイベント情報に応じて仮想空間V内の様子を示す画像を更新したり、スピーカから音声を再生したりする。
[0056]
次に、上述した各部が実行する処理のいくつかの具体例について、説明する。
[0057]
まず、ユーザオブジェクトOの位置がある部分空間Vpから他の部分空間Vpに遷移する場合の処理について、図8のフロー図を用いて説明する。ここでは一例として、部分空間Vpa内に存在しているユーザオブジェクトOaが、ユーザの指示によって部分空間Vpb内に移動する場合の例について説明する。
[0058]
部分空間Vpaを管理する空間管理サーバ5aのユーザ遷移制御部13は、ユーザオブジェクトOaが部分空間Vpaから部分空間Vpbに移動する旨をアプリケーション実行部11から通知されると、部分空間Vpbを管理する空間管理サーバ5bを特定し、当該空間管理サーバ5bと、ユーザ端末6aが接続している通信制御サーバ4aと、に対して、ユーザオブジェクトOaの遷移開始を通知する(S1)。
[0059]
S1による遷移開始の通知を受領した通信制御サーバ4aの接続先管理部21は、接続先管理テーブルにおいて、ユーザ端末6aの接続先の空間管理サーバ5を示す情報を、「切り替え中」であることを示す情報に更新する(S2)。図9は、このような更新がなされた状態の接続先管理テーブルの一例を示す図である。
[0060]
一方、S1による遷移開始の通知を受領した空間管理サーバ5bのユーザ遷移制御部13は、当該遷移に係る処理として、ユーザオブジェクト受け入れ処理を実行する(S3)。ユーザオブジェクト受け入れ処理は、空間管理サーバ5aのユーザ遷移制御部13からユーザオブジェクトOaに関する情報を受け入れて、部分空間Vpb内にユーザオブジェクトOaを配置し、ユーザ端末6aとの間でユーザメッセージやイベント情報の送受信を可能にするための処理である。ここで、ユーザオブジェクト受け入れ処理において受け入れ対象となるユーザオブジェクトOに関する情報には、当該ユーザオブジェクトOに関連づけられたユーザを特定するユーザ特定情報(ユーザIDなど)、及び遷移後のユーザオブジェクトOの仮想空間V内における位置を示す情報が含まれる。このユーザ特定情報によって、当該ユーザが利用するユーザ端末6やその接続先の通信制御サーバ4が特定される。また、受け入れ対象のユーザオブジェクトOに関する情報には、ユーザオブジェクトOの移動方向や移動速度などに関する情報が含まれてもよい。さらに、遷移前の空間管理サーバ5のユーザ遷移制御部13は、アプリケーション実行部11に問い合わせをすることによって、ユーザオブジェクトOの種類や状態に関する各種の情報を取得し、当該取得した情報をユーザオブジェクトOに関する情報の一部として遷移後の空間管理サーバ5に引き継いでもよい。
[0061]
このユーザオブジェクト受け入れ処理が実行されている間、空間管理サーバ5aのイベント情報管理部12は、ユーザ端末6aに通知すべきイベントが発生した場合(例えば、最後にユーザオブジェクトOaが属していたグリッドの周辺でイベントが発生した場合)、当該イベント情報を通信制御サーバ4aへの送信対象とはせずに、空間管理サーバ5bのイベント情報管理部12へと転送する。空間管理サーバ5bのイベント情報格納部12aは、空間管理サーバ5bのアプリケーション実行部11から出力されたイベント情報と同様に、当該転送されたイベント情報を待機バッファへと格納する。ただし、イベント情報出力部12bは、S3のユーザオブジェクト受け入れ処理が完了するまでは、ユーザ端末6aに対応する待機バッファに格納されたイベント情報については送信待ちキューへの出力対象とはせずに、待機バッファ内に保持させておく。
[0062]
また、通信制御サーバ4aのデータ中継処理部22は、S3のユーザオブジェクト受け入れ処理が実行されている間にユーザ端末6aのユーザメッセージ送出部31からユーザメッセージを受信した場合、接続先管理テーブルにおいてユーザ端末6aに関連づけられた情報が「切り替え中」になっているため、ユーザ端末6aに関連づけて受信イベントバッファを確保して、当該受信したユーザメッセージをこの受信イベントバッファにバッファリングしておき、データの送信については保留することとする。図8において破線で示した処理フローは、このような処理が発生した場合を示している。
[0063]
S3のユーザオブジェクト受け入れ処理が完了すると、空間管理サーバ5bのユーザ遷移制御部13は、当該処理の完了(すなわち、ユーザ位置の遷移の完了)を通信制御サーバ4aの接続先管理部21に通知する(S4)。
[0064]
S4の遷移完了の通知を受領した通信制御サーバ4aの接続先管理部21は、接続先管理テーブルにおいて、ユーザ端末6aの接続先の空間管理サーバ5を示す情報を、当該通知を送信した空間管理サーバ5bを示す情報に更新する(S5)。これによって、ユーザオブジェクトOaの部分空間Vpaから部分空間Vpbへの遷移が完了し、これ以降、ユーザ端末6aと空間管理サーバ5bとの間で、通信制御サーバ4aを介してユーザメッセージやイベント情報の送受信が実行される。
[0065]
なお、遷移が完了すると、まず通信制御サーバ4aのデータ中継処理部22は、ユーザオブジェクト受け入れ処理の実行中にユーザ端末6aから受信して受信イベントバッファにバッファリングしていたユーザメッセージを、空間管理サーバ5bに対応するサーバ向け送信待ちキューに移送して、順に空間管理サーバ5bに対して送信する。また、空間管理サーバ5bのイベント情報出力部12bは、ユーザオブジェクト受け入れ処理の実行中にイベント情報格納部12aが待機バッファ内に格納したユーザ端末6aに送信すべきイベント情報を、通信制御サーバ4aへの送信対象として送信待ちキューに出力する。
[0066]
以上説明したユーザオブジェクトOaの遷移に関する処理は、ユーザ端末6a−通信制御サーバ4a間、通信制御サーバ4a−空間管理サーバ5a間、及び通信制御サーバ4a−空間管理サーバ5b間の全ての通信接続が維持されたままで、実行される。このような方法によれば、どの装置間でも通信接続の切断や再接続を行うことなくユーザオブジェクトOの遷移が実現されるため、ユーザオブジェクトOの遷移に要する時間を短縮することができる。また、各ユーザ端末6は、仮想空間Vに参加している間、常に一つの通信制御サーバ4とだけ通信接続を確立していれば、どの部分空間Vpに移動したとしても、当該通信制御サーバ4の中継によって移動先の部分空間Vpを管理する空間管理サーバ5との間でユーザメッセージやイベント情報を授受できる。
[0067]
また、ユーザオブジェクトOaの遷移実行中は、通信制御サーバ4aがユーザメッセージをバッファリングするので、ユーザ端末6aは、遷移実行中も遷移開始前と同様にユーザメッセージ送出部31による処理を実行し、ユーザメッセージを送出し続けることができる。逆に、空間管理サーバ5a及び5bの双方においてユーザオブジェクトOaの近傍で発生したイベント情報も、遷移実行中は空間管理サーバ5bの待機バッファ内にバッファリングされ、遷移完了後にユーザ端末6aに送信される。これによって、遷移実行中に実行されたユーザ操作に関するユーザメッセージや、遷移実行中に仮想空間V内で発生したイベント情報が、消失してしまうことなく、それぞれ空間管理サーバ5b及びユーザ端末6aに送信される。ここで、前述したように、本実施形態ではユーザ端末6a−通信制御サーバ4a間の通信ネットワークの通信帯域よりも通信制御サーバ4a−空間管理サーバ5b間の通信ネットワークの通信帯域の方が大きくなっている。そのため、遷移処理の実行中にもユーザ端末6aから通信制御サーバ4aへのユーザメッセージ送出を実行可能とすることで、比較的時間のかかる通信を遷移処理によって中断させないようにすることができる。すなわち、本実施形態によれば、通信制御サーバ4aまでユーザメッセージが到達していれば、遷移処理が完了してから比較的短時間で通信制御サーバ4aから空間管理サーバ5aにユーザメッセージを送信できるので、遷移処理が完了してからユーザ端末6aがユーザメッセージの送出を開始する場合と比較して、ユーザの指示操作から当該指示操作に係るユーザメッセージの空間管理サーバ5aへの到達までのタイムラグを短くできる。
[0068]
なお、以上では、ユーザオブジェクトOa自体が仮想空間V内を移動することによって、部分空間Vpaから部分空間Vpbへの遷移が生じる場合の例について説明したが、これ以外の原因によってユーザオブジェクトOの遷移が発生する場合にも、上述した処理と同様の処理を実行することとしてもよい。例えば本実施形態において、各空間管理サーバ5が管理する部分空間Vpの範囲は、動的に変更可能としてもよい。すなわち、一つの部分空間Vp内にユーザオブジェクトOが集中した場合などにおいて、ユーザ遷移制御部13は、当該部分空間Vpの一部を、グリッド単位で当該グリッド内に配置されたオブジェクトごと隣接する部分空間Vpを管理する空間管理サーバ5に移管することとする。こうすれば、特定の空間管理サーバ5に負荷が集中しないように空間管理サーバ5同士で調整を行うことが可能となる。
[0069]
この場合、各空間管理サーバ5は、他の空間管理サーバ5との間で負荷状況に関する情報を定期的に交換していることとする。そして、自分自身が管理する部分空間Vpに属するユーザオブジェクトOの数が所定数を超えるなどして、処理負荷が高くなると、隣接する他の部分空間Vpを管理する空間管理サーバ5のうち、比較的処理負荷の低い空間管理サーバ5に対して、グリッド単位で部分空間Vpの一部を移管する。このとき、空間管理サーバ5は、まず移管先の空間管理サーバ5に対して移管対象のグリッドに関する情報を送信し、続いて当該グリッド内に存在しているユーザオブジェクトOのそれぞれについて、順次、上述したユーザオブジェクトOの遷移処理を実行する。これによって、やはりユーザ端末6側の処理を中断させることなく、グリッドの移管処理を実行することができる。
[0070]
次に、イベント情報管理部12によるイベント情報管理の具体例について、説明する。
[0071]
本実施形態では、イベント情報出力部12bは、通信制御サーバ4とユーザ端末6との間の通信環境に応じて、送信待ちキューに出力することによって通信制御サーバ4に対して送信するイベント情報の単位時間あたりのデータ量を調整する。具体的には、イベント情報出力部12bは、通信制御サーバ4がユーザ端末6に対して単位時間あたりに送信可能なデータ量に応じて、当該ユーザ端末6に対応する待機バッファから送信待ちキューに単位時間あたりに出力するデータ量を異ならせることとする。ここで、通信制御サーバ4がユーザ端末6に対して単位時間あたりに送信可能なデータ量は、例えば、通信制御サーバ4が各ユーザ端末6から取得する、各ユーザ端末6の通信帯域などのネットワーク環境に関する情報によって特定されてもよい。また、通信制御サーバ4が過去にユーザ端末6に対して単位時間あたりに送信したデータ量に応じて推定されることとしてもよい。この場合の具体例について、以下に説明する。
[0072]
具体的に、通信制御サーバ4の通信状況管理部23は、自分自身に接続されるユーザ端末6及び空間管理サーバ5のそれぞれについて、利用可能な最大通信帯域(単位時間あたりに送受信可能な最大データ量)を定期的に計測する。また、定期的に、直近の過去所定期間における実際の使用通信帯域(実際に送受信した単位時間あたりのデータ量)を計測する。これらの情報は、例えば数秒から数分おきに計測され、空間管理サーバ5のイベント情報出力部12bに対して通知される。なお、ユーザ端末6に対する最大通信帯域や使用通信帯域については、当該ユーザ端末6の接続先として接続先管理テーブルに記録されている空間管理サーバ5に対して通知することとする。これにより、各空間管理サーバ5のイベント情報出力部12bは、図10に例示するような通信帯域管理テーブルに格納すべき情報を定期的に取得し、記録する。
[0073]
イベント情報出力部12bは、この通信帯域管理テーブルに格納された情報を参照して、待機バッファから読み出して送信待ちキューに単位時間あたりに出力するデータ量を決定する。すなわち、使用通信帯域の数値が大きなユーザ端末6については、大量のデータを送信できていることになるので、この数値に応じて単位時間あたりに送信待ちキューに移送するデータ量を増加させる。ただし、データ量を増加させる場合であっても、最大通信帯域の数値を超える量のデータを送信することはできないので、最大通信帯域の数値を上限としてデータ量を増加させていく。一方、使用通信帯域の数値が小さなユーザ端末6については、送信可能なデータ量が限られた状態にあることになるので、この数値に応じて単位時間あたりに送信待ちキューに移送するデータ量を減少させる。
[0074]
さらに、イベント情報出力部12bは、通信制御サーバ4のユーザ端末向け送信待ちキューに残っているデータ量に応じて、待機バッファから送信待ちキューに移送するイベント情報のデータ量を補正することとしてもよい。この場合、通信制御サーバ4の通信状況管理部23は、データ中継処理部22が1回の送信サイクルの処理(接続された全てのユーザ端末6に対して、ユーザ端末向け送信待ちキューに格納されたイベント情報のうち、送信可能な分量のイベント情報を送信する処理)を実行するごとに、ユーザ端末6に送信しきれずにユーザ端末向け送信待ちキューに残ったイベント情報のデータ量を計測する。そして、ユーザ端末向け送信待ちキューが空になっている場合、当該ユーザ端末6に対する送信データ量を増加させる要求をイベント情報出力部12bに対して出力する。これに応じて、イベント情報出力部12bは、通信帯域管理テーブル内の使用通信帯域の数値を増加させる補正を行い、当該補正された数値に基づいて待機バッファから送信待ちキューへのイベント情報の移送を行う。この場合にも、補正後の数値が最大通信帯域の数値は超えないように制限することとする。また、通信状況管理部23は、ユーザ端末向け送信待ちキューに所定量以上のデータが残っている場合、当該ユーザ端末6に対する送信データ量を減少させる要求をイベント情報出力部12bに対して出力する。これに応じて、イベント情報出力部12bは、通信帯域管理テーブル内の使用通信帯域の数値を減少させる補正を行い、当該補正された数値に基づいて待機バッファから送信待ちキューへのイベント情報の移送を行う。
[0075]
以上説明したような制御が実行されることによって、通信制御サーバ4から各ユーザ端末6に対して過去に送信されたデータ量に応じて空間管理サーバ5から通信制御サーバ4に送信されるイベント情報のデータ量が調整される。これによって、通信制御サーバ4のユーザ端末向け送信待ちキュー内が空にならず、かつ、ユーザ端末6に対してデータを送信しきれずにユーザ端末向け送信待ちキュー内に大量のデータが残らないように、ユーザ端末向け送信待ちキューの状態を制御することができる。本実施形態では、既に述べたように、バッファ情報変更部12cによって待機バッファ内のデータが更新可能になっている。具体的に、例えばバッファ情報変更部12cは、アプリケーション実行部11が実行する処理の進行に伴ってユーザ端末6への送信が不要になってしまったイベント情報を、待機バッファ内から削除する。そのため、通信制御サーバ4に送信したとしてもユーザ端末6に送信しきれずに送信待ちのまま通信制御サーバ4内にある程度の時間滞留してしまうと予測されるイベント情報については、ユーザ端末6に送信可能な状況になるまで通信制御サーバ4に送信せずに待機バッファに格納したままにしておくことによって、送信不要になったイベント情報を送信せずに廃棄する機会を増やすことができる。
[0076]
なお、イベント情報は、それぞれ有効期限を指定する情報が関連づけられて待機バッファに格納されることとし、アプリケーション実行部11による当該イベント情報の発行時から関連づけられた有効期限以上の時間が経過しても待機バッファに残っているイベント情報については、削除の対象とすることとしてもよい。こうすれば、イベントの発生から時間が経過して送信する意味のなくなったイベント情報などを、送信対象から除外することができる。このような有効期限切れとなったイベント情報の待機バッファからの削除は、イベント情報出力部12bによって、待機バッファに格納されたイベント情報を送信待ちキューに移送する際に実行されることとしてもよい。
[0077]
さらに、本実施形態では、バッファ情報変更部12cは、単に待機バッファに格納されたイベント情報を削除するだけでなく、アプリケーション実行部11の要求に応じて、イベント情報の送信順序を入れ替えたり、イベント情報の内容を更新したりしてもよい。
[0078]
具体例として、待機バッファに格納されるイベント情報のそれぞれには、各イベント情報の送信順序を規定する情報として、アプリケーション実行部11によって指定される優先度情報が関連づけられることとしてもよい。アプリケーション実行部11は、仮想空間内で発生する事象などに応じて、待機バッファに格納されている個々のイベント情報の優先度情報を書き換えることとする。これに応じて、バッファ情報変更部12cは、所定時間おきにユーザ端末6ごとの待機バッファに格納された複数のイベント情報を、優先度順に並べ替えることとする。これによって、通信帯域が限られており、大量のデータを送信できないユーザ端末6に対しては、特に重要性の高いイベント情報(例えば当該ユーザ端末6に対応するユーザオブジェクトOに関して発生したイベント情報など)を優先的に送信することとし、重要性の低いイベント情報(例えば当該ユーザ端末6に対応するユーザオブジェクトOから離れた位置で発生したイベント情報など)については、待機バッファ内に残すようにすることができる。例えば仮想空間Vがゲームを実現するためのものである場合、このような制御を行うことで、通信帯域の限られているユーザ端末6には、ゲームの進行などに最低限必要なイベント情報を優先して送信する一方で、通信帯域が大きなユーザ端末6には、ゲームの進行には直接関係ないがより仮想空間V内の様子を詳細に提示するための情報なども送信するようにすることができ、ゲームの公平性を損なわないようにしながら、各ユーザ端末6の通信能力に応じた量のデータを送信することができる。なお、優先度が低いために送信されずに待機バッファに残り続けたイベント情報については、前述したように有効期限を関連づけておくことで、有効期限以上の期間が経過した際に送信対象とせずに削除することができる。
[0079]
なお、この場合において、イベント情報格納部12aは、特に優先度が高く必ずユーザ端末6に送信すべきイベント情報については、待機バッファに格納せずに、直接送信待ちキューに格納することとしてもよい。こうすれば、ユーザ端末6のデータ通信状況に関わらず、所定の条件を満たすイベント情報は必ずユーザ端末6に送信するよう制御することができる。
[0080]
また、イベント情報は、イベント種別を特定する情報が関連づけられて待機バッファに格納されることとしてもよい。この場合、イベント情報格納部12aは、新たに待機バッファに格納しようとするイベント情報と同じ種別のイベント情報が、同じユーザ端末6に関連づけられた待機バッファ内に既に格納されている場合、当該イベント情報を新たなイベント情報で上書きすることとする。これにより、例えば特定のオブジェクトの現在位置を指定するイベント情報など、同種のイベント情報を何度もユーザ端末6に送信することを避け、最新の状態を表すイベント情報だけをユーザ端末6に対して送信することができ、無駄なデータ送信を減らすことができる。
[0081]
以下、本実施形態に係る仮想空間管理システム1の適用例として、仮想空間管理システム1によってチャットシステムを実現する例について説明する。この例では、各ユーザオブジェクトOは仮想空間V内を移動して、近くにいる他のユーザオブジェクトOとの間で会話を楽しむことができる。この例では、各ユーザは、キーパッドなどの操作デバイスを用いて、発言したい内容を文字入力する。ユーザ端末6のユーザメッセージ送出部31は、入力されたテキスト情報を、予め定められた当該ユーザの声質に関する情報とともに、ユーザメッセージとして通信制御サーバ4に送出する。通信制御サーバ4のデータ中継処理部22は、接続先管理テーブルを参照して、当該ユーザ端末6に関連づけられたユーザオブジェクトOが属する部分空間Vpを管理する空間管理サーバ5に対して、当該ユーザメッセージを送信する。このユーザメッセージは、通信処理部14を介して、空間管理サーバ5のアプリケーション実行部11に出力される。
[0082]
アプリケーション実行部11は、当該ユーザメッセージを送信したユーザ端末6に対応するユーザオブジェクトO(発言者)の位置をイベントの発生場所とし、通知先を当該発生場所の周辺範囲として、受信したユーザメッセージに含まれるテキスト情報及び声質の情報を、ユーザの発言を示す発言イベント情報としてイベント情報管理部12に出力する。イベント情報管理部12のイベント情報格納部12aは、当該発言イベント情報をイベント発生場所の周辺範囲に存在する各ユーザオブジェクトO(聴取者)に対応するユーザ端末6向けの待機バッファに格納する。ここで、アプリケーション実行部11は、待機バッファに格納された発言イベント情報の優先順位を、発言者と聴取者との仮想空間V内における位置関係に応じて変更してもよい。すなわち、発言者と聴取者との距離が遠い場合や、聴取者の向きが発言者のいる方向と逆向きの場合などにおいて、当該聴取者向けの発言イベント情報の優先順位を下げることとする。こうすれば、聴取者にとって聞き取りにくいと推定される発言イベント情報の優先順位を下げ、他に聴取者に聞き取りやすいと推定される発言イベント情報があれば、優先してこのような発言イベント情報をユーザ端末6に送信することができる。
[0083]
待機バッファ内の発言イベント情報は、イベント情報出力部12bによって通信処理部14に出力され、通信処理部14から通信制御サーバ4に送信される。通信制御サーバ4のデータ中継処理部22は、当該発言イベント情報をユーザ端末6に送信する。ユーザ端末6の空間情報提示部32は、受信した発言イベント情報に含まれるテキスト情報の内容を、発言者の声質の情報に応じた声質で音声合成し、スピーカから当該発言内容を再生させる。これにより、あるユーザがテキスト入力した発言内容は、当該ユーザの声質で仮想空間V内において近くにいる他のユーザに聞こえることになる。なお、この場合において、空間情報提示部32は、多チャンネルのスピーカを用いたサラウンド再生を行うことによって、聴取者のユーザオブジェクトOの向きに対して仮想空間V内において発言者のユーザオブジェクトOが存在する方向から、当該発言者の発言内容が聞こえるような制御を実行してもよい。これにより、ユーザはあたかも実際に仮想空間V内で他者と会話しているような臨場感でチャットを行うことができる。
[0084]
以上説明した本実施形態に係る仮想空間管理システム1によれば、一つの仮想空間Vを複数の部分空間Vpに分割してそれぞれ独立した空間管理サーバ5に各部分空間Vpを管理させているにも関わらず、ユーザオブジェクトOがある部分空間Vp内から他の部分空間Vp内に遷移する際に、通信接続の切り替えを必要とせず、素早く、かつユーザ端末6側の処理を中断させずに当該遷移を実現することができる。
[0085]
また、本実施形態に係る仮想空間管理システム1によれば、通信制御サーバ4がユーザ端末6に対して過去に単位時間あたりに送信したデータ量に応じて、空間管理サーバ5から通信制御サーバ4に対して単位時間あたりに送信するデータ量を調整することで、ユーザ端末6に送信しきれないイベント情報を待機バッファに保持しておき、必要に応じて待機バッファの内容を更新して不要なデータの送信を減らすことができる。
[0086]
なお、本発明の実施の形態は、以上説明したものに限られない。例えば以上の説明においては一つの仮想空間Vにつき、複数の通信制御サーバ4及び複数の空間管理サーバ5が存在することとしたが、通信制御サーバ4が一つだけの場合も、当該通信制御サーバ4がユーザ端末6と複数の空間管理サーバ5のいずれかとの間の通信を中継することで、部分空間Vpの遷移処理をユーザ端末6側の処理の中断なしで実現できる。また、空間管理サーバ5が一つだけの場合も、空間管理サーバ5から通信制御サーバ4へのデータ送信量を通信制御サーバ4からユーザ端末6へのデータ送信量に応じて調整し、空間管理サーバ5側の待機バッファの内容を更新することで、不要なデータ送信を減らすことができる。
Claims
[1]
一つの仮想空間を分割してなる複数の部分空間のそれぞれを管理する複数の空間管理サーバと、前記複数の空間管理サーバのいずれかとユーザ端末との間の通信を中継する通信制御サーバと、を含む仮想空間管理システムであって、
前記各空間管理サーバは、
前記ユーザ端末に関連づけられる前記仮想空間内の位置が、他の空間管理サーバによって管理される部分空間の内部から、当該空間管理サーバによって管理される部分空間の内部に遷移する場合に、当該遷移に係る処理を行うユーザ遷移制御手段を備え、
前記通信制御サーバは、
前記遷移に係る処理が実行されている間、前記ユーザ端末との間の通信接続を維持するとともに、前記遷移に応じて、当該ユーザ端末から受信したデータの送信先を、当該遷移後の部分空間を管理する空間管理サーバに変更する接続先管理手段を備える
ことを特徴とする仮想空間管理システム。
[2]
請求項1記載の仮想空間管理システムにおいて、
前記ユーザ遷移制御手段は、前記遷移に係る処理の完了を前記通信制御サーバに通知し、
前記接続先管理手段は、前記遷移の完了の通知を受け付けた場合に、前記ユーザ端末から受信したデータの送信先を、当該通知を行った空間管理サーバに変更する
ことを特徴とする仮想空間管理システム。
[3]
請求項1記載の仮想空間管理システムにおいて、
前記通信制御サーバは、前記遷移に係る処理が実行されている間、前記遷移前の部分空間を管理する空間管理サーバ、及び前記遷移後の部分空間を管理する空間管理サーバのそれぞれとの間の通信接続を維持する
ことを特徴とする仮想空間管理システム。
[4]
請求項2に記載の仮想空間管理システムにおいて、
前記ユーザ遷移制御手段は、前記ユーザ端末に関連づけられる前記仮想空間内の位置が、当該空間管理サーバによって管理される部分空間の内部から、他の空間管理サーバによって管理される部分空間の内部に遷移する場合に、当該遷移の開始を前記通信制御サーバに通知し、
前記接続先管理手段は、前記遷移の開始の通知を受け付けてから、前記遷移の完了の通知を受け付けるまでの間、前記ユーザ端末から受信した情報をバッファリングし、前記遷移の完了の通知を受け付けた後、当該通知を行った空間管理サーバに対して当該バッファリングした情報を送信する
ことを特徴とする仮想空間管理システム。
[5]
請求項1に記載の仮想空間管理システムにおいて、
前記接続先管理手段は、前記ユーザ端末に関連づけられる前記仮想空間内の位置が属する部分空間を管理する空間管理サーバを特定する情報を接続先情報として保持し、前記遷移の完了の通知を受け付けた場合に、当該接続先情報を、当該通知を行った空間管理サーバを特定する情報に更新し、
前記通信制御サーバは、前記接続先情報を参照して、前記ユーザ端末から受信したデータの送信先を決定する
ことを特徴とする仮想空間管理システム。
[6]
一つの仮想空間を分割してなる複数の部分空間のそれぞれを管理する複数の空間管理サーバのいずれかと、ユーザ端末と、の間の通信を中継する通信制御サーバであって、
前記ユーザ端末に関連づけられる前記仮想空間内の位置が、一の空間管理サーバによって管理される部分空間の内部から、他の空間管理サーバによって管理される部分空間の内部に遷移する場合に、当該遷移に係る処理が前記他の空間管理サーバによって実行されている間、前記ユーザ端末との間の通信接続を維持するとともに、前記遷移に応じて、当該ユーザ端末から受信したデータの送信先を、前記他の空間管理サーバに変更する接続先管理手段を備える
ことを特徴とする通信制御サーバ。
[7]
一つの仮想空間を分割してなる複数の部分空間のそれぞれを管理する複数の空間管理サーバのいずれかと、ユーザ端末と、の間の通信を中継する通信制御サーバの制御方法であって、
前記ユーザ端末に関連づけられる前記仮想空間内の位置が、一の空間管理サーバによって管理される部分空間の内部から、他の空間管理サーバによって管理される部分空間の内部に遷移する場合に、当該遷移に係る処理が前記他の空間管理サーバによって実行されている間、前記ユーザ端末との間の通信接続を維持するとともに、前記遷移に応じて、当該ユーザ端末から受信したデータの送信先を、前記他の空間管理サーバに変更するステップを含む
ことを特徴とする通信制御サーバの制御方法。
[8]
一つの仮想空間を分割してなる複数の部分空間のそれぞれを管理する複数の空間管理サーバのいずれかと、ユーザ端末と、の間の通信を中継する通信制御サーバを、
前記ユーザ端末に関連づけられる前記仮想空間内の位置が、一の空間管理サーバによって管理される部分空間の内部から、他の空間管理サーバによって管理される部分空間の内部に遷移する場合に、当該遷移に係る処理が前記他の空間管理サーバによって実行されている間、前記ユーザ端末との間の通信接続を維持するとともに、前記遷移に応じて、当該ユーザ端末から受信したデータの送信先を、前記他の空間管理サーバに変更する接続先管理手段、
として機能させるためのプログラム。
[9]
請求項8記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
[10]
仮想空間を管理する空間管理サーバと、前記空間管理サーバとユーザ端末との間の通信を中継する通信制御サーバと、を含む仮想空間管理システムであって、
前記空間管理サーバは、
前記ユーザ端末に送信すべき、前記仮想空間に関する複数のイベント情報を、当該各イベント情報の送信順序が特定される態様で待機バッファに格納するイベント情報格納手段と、
前記待機バッファに格納された複数のイベント情報を、順に読み出して前記通信制御サーバに対して出力するイベント情報出力手段と、
前記待機バッファに格納された情報を変更するバッファ情報変更手段と、
を備え、
前記通信制御サーバは、前記イベント情報出力手段が出力するイベント情報を、順に前記ユーザ端末に対して送信し、
前記イベント情報出力手段は、前記通信制御サーバが前記ユーザ端末に対して単位時間あたりに送信可能なデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を異ならせる
ことを特徴とする仮想空間管理システム。
[11]
請求項10記載の仮想空間管理システムにおいて、
前記イベント情報出力手段は、前記通信制御サーバが過去に前記ユーザ端末に対して単位時間あたりに送信したデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を変化させる
ことを特徴とする仮想空間管理システム。
[12]
請求項10記載の仮想空間管理システムにおいて、
前記イベント情報出力手段は、前記通信制御サーバに保持されている送信待ちのイベント情報のデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を補正する
ことを特徴とする仮想空間管理システム。
[13]
請求項10に記載の仮想空間管理システムにおいて、
前記イベント情報格納手段は、前記複数のイベント情報のそれぞれにアプリケーション実行手段が指定する優先度情報を関連づけて前記待機バッファに格納し、
前記バッファ情報変更手段は、前記アプリケーション実行手段によって書き換えられる前記優先度情報に応じて、前記各イベント情報の送信順序を変更する
ことを特徴とする仮想空間管理システム。
[14]
請求項10記載の仮想空間管理システムにおいて、
前記イベント情報格納手段は、所定の条件を満たすイベント情報については、前記待機バッファに格納せずに、前記通信制御サーバに対して出力する
ことを特徴とする仮想空間管理システム。
[15]
仮想空間を管理し、ユーザ端末との間の通信を中継する通信制御サーバに接続される空間管理サーバであって、
前記ユーザ端末に送信すべき、前記仮想空間に関する複数のイベント情報を、当該各イベント情報の送信順序が特定される態様で待機バッファに格納するイベント情報格納手段と、
前記待機バッファに格納された複数のイベント情報を、順に読み出して前記通信制御サーバに対して出力するイベント情報出力手段と、
前記待機バッファに格納された情報を変更するバッファ情報変更手段と、
を備え、
前記イベント情報出力手段は、前記通信制御サーバが前記ユーザ端末に対して単位時間あたりに送信可能なデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を異ならせる
ことを特徴とする空間管理サーバ。
[16]
仮想空間を管理し、ユーザ端末との間の通信を中継する通信制御サーバに接続される空間管理サーバの制御方法であって、
前記ユーザ端末に送信すべき、前記仮想空間に関する複数のイベント情報を、当該各イベント情報の送信順序が特定される態様で待機バッファに格納するイベント情報格納ステップと、
前記待機バッファに格納された複数のイベント情報を、順に読み出して前記通信制御サーバに対して出力するイベント情報出力ステップと、
前記待機バッファに格納された情報を変更するバッファ情報変更ステップと、
を備え、
前記イベント情報出力ステップでは、前記通信制御サーバが前記ユーザ端末に対して単位時間あたりに送信可能なデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を異ならせる
ことを特徴とする空間管理サーバの制御方法。
[17]
仮想空間を管理し、ユーザ端末との間の通信を中継する通信制御サーバに接続される空間管理サーバを、
前記ユーザ端末に送信すべき、前記仮想空間に関する複数のイベント情報を、当該各イベント情報の送信順序が特定される態様で待機バッファに格納するイベント情報格納手段、
前記待機バッファに格納された複数のイベント情報を、順に読み出して前記通信制御サーバに対して出力するイベント情報出力手段、及び
前記待機バッファに格納された情報を変更するバッファ情報変更手段、
として機能させ、
前記イベント情報出力手段は、前記通信制御サーバが前記ユーザ端末に対して単位時間あたりに送信可能なデータ量に応じて、前記通信制御サーバに対して単位時間あたりに出力するデータ量を異ならせる
ことを特徴とするプログラム。
[18]
請求項17記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
Drawings