JP2011194144A - ネットワークの構築方法、プログラム、及び、そのプログラムを記録した記録媒体 - Google Patents
ネットワークの構築方法、プログラム、及び、そのプログラムを記録した記録媒体 Download PDFInfo
- Publication number
- JP2011194144A JP2011194144A JP2010066596A JP2010066596A JP2011194144A JP 2011194144 A JP2011194144 A JP 2011194144A JP 2010066596 A JP2010066596 A JP 2010066596A JP 2010066596 A JP2010066596 A JP 2010066596A JP 2011194144 A JP2011194144 A JP 2011194144A
- Authority
- JP
- Japan
- Prior art keywords
- node
- data
- nodes
- player
- game
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
【課題】オンラインゲームを実行する複数のノードでネットワークを構築する際に、有益な情報を効率的に共有可能となる適切な接続先を選択する。また、ノード間でのデータ転送負荷を低減するとともに、ノードで保持するデータ量の低減を図る。
【解決手段】各ノードが接続可能なノードの最大数が予め決められている。各ノードは、自ノードと接続している接続ノードから、ゲームを実行することによって形成される仮想世界における該接続ノードのプレイヤーの位置の情報を含むPCデータを受信する。そして、各ノードは、PCデータを用いて前記仮想世界内でのプレイヤー間の距離を求め、前記仮想世界内でのプレイヤー間の距離が短い他ノードとの接続が優先的に維持されるように、他ノードとの接続を切り替える。
【選択図】図3
【解決手段】各ノードが接続可能なノードの最大数が予め決められている。各ノードは、自ノードと接続している接続ノードから、ゲームを実行することによって形成される仮想世界における該接続ノードのプレイヤーの位置の情報を含むPCデータを受信する。そして、各ノードは、PCデータを用いて前記仮想世界内でのプレイヤー間の距離を求め、前記仮想世界内でのプレイヤー間の距離が短い他ノードとの接続が優先的に維持されるように、他ノードとの接続を切り替える。
【選択図】図3
Description
本発明は、ネットワークの構築方法、プログラム、及び、そのプログラムを記録した記録媒体に関する。
近年、ビデオゲームとして、通信回線を利用したオンラインゲームが普及しつつある。そのようなオンラインゲームに関する技術は、例えば、特許文献1などに開示されている。
しかしながら、従来のオンラインゲームでは、予め用意されたサーバが、全プレイヤーの情報を管理する。そのため、プレイヤーの数の増加に伴いサーバや各端末でのトラフィックが大きくなり、プレイヤーが安定してゲームをプレイすることができなくなる虞がある。また、自分にとって不要な情報を受信するといった無駄なトラフィックが発生することも問題となる。
本発明の目的の一つは、オンラインゲームを実行する複数のノードでネットワークを構築する際に、有益な情報を効率的に共有可能となる適切な接続先を選択するための技術を提供することにある。また本発明の目的の一つは、オンラインゲームを実行する複数のノードで構成されたネットワークにおいて、ノード間でのデータ転送負荷を低減するための技術を提供することにある。また本発明の目的の一つは、オンラインゲームを実行する複数のノードで構成されたネットワークにおいて、ノードで保持するデータ量を低減するための技術を提供することにある。
本発明のネットワークの構築方法は、ゲームを実行する複数のノードで構成されるネットワークの構築方法であって、各ノードが接続可能なノードの最大数が予め決められており、各ノードが、自ノードと接続している接続ノードから、前記ゲームを実行することによって形成される仮想世界における該接続ノードのプレイヤーの位置の情報を含むPCデータを受信するステップと、各ノードが、PCデータを用いて前記仮想世界内でのプレイヤー間の距離を求め、前記仮想世界内でのプレイヤー間の距離が短い他ノードとの接続が優先的に維持されるように、他ノードとの接続を切り替えるステップと、を有する。
このように接続可能な最大数を制限したことで、データ転送に関わる負荷が増大するのを未然に防ぐことができる。また仮想世界内において近くにいるプレイヤーのノードは、自ノードのプレイヤーにとって有益な情報を持っている可能性が高い。よって、仮想世界内において近くにいるプレイヤーのノードとの接続を優先することで、互いのノードで有益な情報を効率的に共有できるものと期待できる。
このように接続可能な最大数を制限したことで、データ転送に関わる負荷が増大するのを未然に防ぐことができる。また仮想世界内において近くにいるプレイヤーのノードは、自ノードのプレイヤーにとって有益な情報を持っている可能性が高い。よって、仮想世界内において近くにいるプレイヤーのノードとの接続を優先することで、互いのノードで有益な情報を効率的に共有できるものと期待できる。
あるノードが新たにネットワークに参加する場合には、そのノードが、所定のサーバに一時的に接続し、前記所定のサーバから前記所定のサーバに接続している他ノードのネットワークアドレスを取得し、その他ノードとの接続を確立すればよい。また、既にネット
ワークに参加しているノードが新たなノードと接続を行う場合には、各ノードが、自ノードと接続するために必要なデータであるリンクチケットを発行し、自ノードと接続している接続ノードを介して自ノードと接続していない未接続ノードへ前記リンクチケットを送信して、リンクチケットを発行したノードと該リンクチケットを受信したノードとが新たな接続を確立するようにすればよい。
この構成によれば、所定のサーバを利用して他ノードと接続した後は、リンクチケットを用いて未接続ノードとの接続が行われる。そのため、サーバに負荷を与えることなくネットワークを拡大することができる。またリンクチケットの発行量によって、接続ノードの数や接続処理の負荷をコントロールできるという利点もある。
ワークに参加しているノードが新たなノードと接続を行う場合には、各ノードが、自ノードと接続するために必要なデータであるリンクチケットを発行し、自ノードと接続している接続ノードを介して自ノードと接続していない未接続ノードへ前記リンクチケットを送信して、リンクチケットを発行したノードと該リンクチケットを受信したノードとが新たな接続を確立するようにすればよい。
この構成によれば、所定のサーバを利用して他ノードと接続した後は、リンクチケットを用いて未接続ノードとの接続が行われる。そのため、サーバに負荷を与えることなくネットワークを拡大することができる。またリンクチケットの発行量によって、接続ノードの数や接続処理の負荷をコントロールできるという利点もある。
各ノードは、前記他ノードとの接続を切り替えるステップにおいて、前記仮想世界内で自ノードのプレイヤーの移動先にプレイヤーが存在するノードとの接続も維持することが好ましい。
このような構成にすることにより、仮想世界におけるプレイヤーの移動先で有益となる情報を先行して取得することができる。
このような構成にすることにより、仮想世界におけるプレイヤーの移動先で有益となる情報を先行して取得することができる。
あるノードが新たにネットワークに参加する場合、そのノードが、前記所定のサーバに接続している複数の他ノードの内、前記仮想世界内でのプレイヤー間の距離が最も短い他ノードと接続することが好ましい。これにより、ネットワークに参加してすぐに有益な情報を取得することができるものと期待できる。
前記ネットワークを構成しているノードのうちのいずれかのノードが、所定のサーバを介して、前記ネットワークに属していない新たなノードの情報を取得し、該新たなノードとの間で接続を確立するステップを更に有することが好ましい。具体的には、各ノードが、前記所定のサーバに接続していない時間を計測時間として計測するステップと、各ノードが、前記計測時間が所定の配布時間に達した場合に、該計測時間を蓄積時間として記録したデータであるタイムチケットを接続ノードに送信するステップと、各ノードが、接続ノードからタイムチケットを受信した場合に、該タイムチケットに記録されている蓄積時間に前記計測時間を加算するステップと、各ノードが、前記蓄積時間に前記計測時間を加算した時間が所定の満了時間に達した場合には、前記所定のサーバに一時的に接続して新たなノードの情報を取得し該新たなノードとの間で接続を確立し、前記蓄積時間に前記計測時間を加算した時間が所定の満了時間に満たない場合には、前記加算した時間を蓄積時間として記録したタイムチケットを接続ノードに送信するステップと、を更に有することが好ましい。
このような構成にすることにより、ネットワークに属していない新たなノードとの接続が行われるため、ネットワーク間の交流(情報の交換・共有)を促進することができる。
このような構成にすることにより、ネットワークに属していない新たなノードとの接続が行われるため、ネットワーク間の交流(情報の交換・共有)を促進することができる。
ノード間で伝送される前記ゲームのデータは、消滅までの時間を表す情報を含み、前記ゲームのデータのうち、前記仮想世界において近い位置に存在するプレイヤーに対してのみ意味のある第1データは、前記仮想世界において離れた位置に存在するプレイヤーに対しても意味のある第2データよりも、消滅までの時間が短く設定されることが好ましい。
このような構成にすることにより、仮想世界において離れた位置に存在するプレイヤーに対してあまり有効とならないデータの伝達が抑制されるため、有益な情報は残しつつデータの転送量を低減することができる。その結果、各ノードの負荷を低減することができ、プレイヤーが安定してゲームをプレイすることが可能となる。
このような構成にすることにより、仮想世界において離れた位置に存在するプレイヤーに対してあまり有効とならないデータの伝達が抑制されるため、有益な情報は残しつつデータの転送量を低減することができる。その結果、各ノードの負荷を低減することができ、プレイヤーが安定してゲームをプレイすることが可能となる。
前記第2データの送信頻度は、第1データの送信頻度よりも低く設定されることが好ましい。
一般に、第2データは、古いデータであっても意味のあるデータである可能性が高い。そのため、そのようなデータの送信頻度を低く設定することにより、有益な情報は残しつ
つデータの転送量を低減することができる。その結果、各ノードの負荷を低減することができ、プレイヤーが安定してゲームをプレイすることが可能となる。
一般に、第2データは、古いデータであっても意味のあるデータである可能性が高い。そのため、そのようなデータの送信頻度を低く設定することにより、有益な情報は残しつ
つデータの転送量を低減することができる。その結果、各ノードの負荷を低減することができ、プレイヤーが安定してゲームをプレイすることが可能となる。
各ノードは、接続ノードのうち、前記仮想世界内でのプレイヤー間の距離が短い他ノードに対して前記第1データと前記第2データの両方を送信し、前記仮想世界において、プレイヤーが自ノードのプレイヤーの移動先にいる他ノードに対して前記第2データのみを送信することが好ましい。
または、各ノードは、接続ノードのうち、前記仮想世界において、プレイヤーが自ノードのプレイヤーの移動先にいる他ノードに対して、前記第1データを、前記仮想世界内でのプレイヤー間の距離が短い他ノードに対する送信頻度よりも低い送信頻度で送信することが好ましい。
第1データは、仮想世界において近い位置に存在するプレイヤーに対してのみ意味のあるデータであるため、このような構成にすることにより、有益な情報は残しつつデータの転送量を低減することができる。その結果、各ノードの負荷を低減することができ、プレイヤーが安定してゲームをプレイすることが可能となる。
または、各ノードは、接続ノードのうち、前記仮想世界において、プレイヤーが自ノードのプレイヤーの移動先にいる他ノードに対して、前記第1データを、前記仮想世界内でのプレイヤー間の距離が短い他ノードに対する送信頻度よりも低い送信頻度で送信することが好ましい。
第1データは、仮想世界において近い位置に存在するプレイヤーに対してのみ意味のあるデータであるため、このような構成にすることにより、有益な情報は残しつつデータの転送量を低減することができる。その結果、各ノードの負荷を低減することができ、プレイヤーが安定してゲームをプレイすることが可能となる。
各ノードは、他ノードから受信した前記ゲームのデータを蓄積するための記憶装置を有しており、前記ゲームのデータのうち、前記仮想世界において離れた位置に存在するプレイヤーに対しても意味のあるデータは、プレイヤーへの影響度合いを表す評価値の情報を含み、各ノードは、前記評価値の情報を含むデータに対し、評価値の高いデータを優先的に前記記憶装置に蓄積することが好ましい。
このような構成にすることにより、ノードで保持するデータ量を低減することができる。また、プレイヤーに影響のあるデータ(プレイヤーにとって有益なデータ)が残される。
このような構成にすることにより、ノードで保持するデータ量を低減することができる。また、プレイヤーに影響のあるデータ(プレイヤーにとって有益なデータ)が残される。
また、本発明は、上記処理の少なくとも一部を有するネットワークの構築方法として捉えてもよいし、かかる方法を実現するためのプログラムやそのプログラムを記録した記録媒体として捉えることもできる。なお、上記処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
本発明によれば、オンラインゲームを実行する複数のノードでネットワークを構築する際に、有益な情報を効率的に共有可能となる適切な接続先を選択することができる。また、ノード間でのデータ転送負荷を低減するとともに、ノードで保持するデータ量の低減を図ることもできる。
以下、本実施形態に係るネットワークの構築方法について説明する。本実施形態では、ゲームを実行する複数のノードで構成されるネットワークを構築する。また、以下の説明では1つのノードに注目し、該ノードを“自ノード”、それ以外のノードを“他ノード”と呼ぶ。他ノードのうち、自ノードに接続されているノードを“接続ノード”、自ノードに接続されていないノードを“未接続ノード”と呼ぶ。ノード間の接続のことを“リンク”と呼ぶ。
<ノード間の接続について>
図1は、自ノードが所定のサーバを利用して他ノードに接続する様子を示す概略図である。
図1は、自ノードが所定のサーバを利用して他ノードに接続する様子を示す概略図である。
図1において、ノード(自ノード101及び他ノード102)は、ゲームを実行するノードであり、例えば、ゲーム装置本体やパーソナルコンピュータなどである。なお、ノードは、これらに限らず、ゲームを実行することができ、且つ、インターネットへ接続可能な端末であればよい。
所定のサーバ103は、ゲームソフトやゲーム装置(ノード)のメーカーなどが予め用意したサーバである。本実施形態では、所定のサーバ103は、ロビーサーバ111とSTUN(Simple Traversal of UDP through NATs)サーバ112とからなるものとする。ロビーサーバ111は、ロビーサーバ111に接続されているノードの情報(ノードデータ)を管理する。具体的には、ロビーサーバに登録されているノードデータを管理する。ノードデータは、ノード間の接続(P2P接続;リンク)に必要なデータであり、例えば、IPアドレス、ポート、ネットワーク内での識別子(ログインID)などである。STUNサーバ112は、ロビーサーバ111に接続されているノードの有効なIPアドレスを管理する。なお、本実施形態では、ノード間の接続をUDP(User Datagram Protocol)で行う場合を想定しており、TCP(Transmission Control Protocol)で行う場合にはST
UNサーバ112は必要ない。
UNサーバ112は必要ない。
以下、ネットワークに参加していない自ノード101と他ノード102が接続するまでの流れについて説明する。なお、以下の処理は、少なくとも、自ノード101のユーザ(プレイヤー)がゲームのプレイを開始する際に行われる。
まず、自ノード101は、ゲームを起動すると、ロビーサーバ111に接続し、自ノード101のノードデータをロビーサーバ111に登録する(図1の矢印11)。
そして、自ノード101は、ロビーサーバ111から他ノード102のノードデータを取得する(図1の矢印12)。
次に、自ノード101は、取得したノードデータを用いて、STUNサーバ112に有効なIPアドレスを問い合わせ、取得する(図1の矢印13,14)。
そして、自ノード101は、STUNサーバ112から取得したIPアドレスのノード(他ノード102)に対し、P2P接続を開始する(図1の矢印15)。
そして、自ノード101は、ロビーサーバ111から他ノード102のノードデータを取得する(図1の矢印12)。
次に、自ノード101は、取得したノードデータを用いて、STUNサーバ112に有効なIPアドレスを問い合わせ、取得する(図1の矢印13,14)。
そして、自ノード101は、STUNサーバ112から取得したIPアドレスのノード(他ノード102)に対し、P2P接続を開始する(図1の矢印15)。
以上の工程を経て、自ノード101は所定のサーバ103を介さずに他ノード102に接続される。そして、自ノード101は、他ノード102とのP2P接続を確立した後に、ロビーサーバ111から切断する(ロビーサーバ111から自ノード101のノードデータを削除する)。例えば、自ノード101は、他ノード102との接続から所定時間後や、所定数の他ノード102との接続を確立したタイミングで、ロビーサーバ111から自ノード101のノードデータを削除する。このように、本実施例では、ロビーサーバ111は一時的(例えば、初回のゲーム起動時のみ)に利用されるため、ネットワークの参加人数(プレイヤーの数)が増加した場合におけるサーバの負荷を軽減することができる
。
。
また、自ノードは、ゲームを実行することで形成される仮想世界におけるプレイヤー間の距離が短い他ノードと接続することが好ましい(以後、仮想世界でのプレイヤーを現実世界でのプレイヤーと区別し、PC(Player Character)と記載する)。これは、PCが自ノードのPCの近くにいるノードは、一般的に、自ノードのプレイヤーにすぐに有益となる情報(データ)を持っている可能性が高いからである。そのような接続を実現するためには、各ノードが、ノードデータの他に、PCの位置の情報を含むPCデータをロビーサーバ111に登録すればよい。そして、自ノードは、他ノードのノードデータとPCデータをロビーサーバから取得し、PCデータを用いて、PC間の距離が最も短い他ノードを探索し、該他ノードに対して接続を行えばよい。具体的には、自ノードが、自ノードのPCデータと他ノードのPCデータとから接続の好ましさの指標であるリンクスコア(本実施形態では、PC間の距離が短いほど高くなるスコア)を算出し、リンクスコアが最も高い他ノードに対して接続を行えばよい。このような構成にすることにより、プレイヤーは、ゲーム開始直後から他のプレイヤーに関わる有益な情報を取得することができるため、プレイヤーに対しオンラインでプレイしているメリットを享受させることができる。
<リンクチケットを用いたネットワークの拡大方法>
次に、上記ネットワークの拡大方法について説明する。本実施形態では、リンクチケットを用いて、各ノードがサーバに接続することなく上記ネットワークを拡大する。リンクチケットは、他ノード(未接続ノード)が自ノードに接続するために必要なチケット(データ)である。リンクチケットは接続(若しくは接続を試みること)を許可するデータでもあるし、接続を確立するのに必要な情報が記述されたデータでもある。
次に、上記ネットワークの拡大方法について説明する。本実施形態では、リンクチケットを用いて、各ノードがサーバに接続することなく上記ネットワークを拡大する。リンクチケットは、他ノード(未接続ノード)が自ノードに接続するために必要なチケット(データ)である。リンクチケットは接続(若しくは接続を試みること)を許可するデータでもあるし、接続を確立するのに必要な情報が記述されたデータでもある。
図2(a)は、リンクチケットのデータ構造の一例を示す図である。
図2(a)に示すように、リンクチケットは、枚数、生成元のノードデータ、生成日時、有効時間などの情報を有する。リンクチケットに枚数の情報を導入することにより、1枚ずつ送信するよりもデータ量を軽減することができる。有効時間はリンクチケットが有効な時間であり、リンクチケットは、生成されてから有効時間経過後に消滅または使用不可能となる。
図2(a)に示すように、リンクチケットは、枚数、生成元のノードデータ、生成日時、有効時間などの情報を有する。リンクチケットに枚数の情報を導入することにより、1枚ずつ送信するよりもデータ量を軽減することができる。有効時間はリンクチケットが有効な時間であり、リンクチケットは、生成されてから有効時間経過後に消滅または使用不可能となる。
図3は、リンクチケットを用いてネットワークが拡大される様子を示す概略図である。
図3に示すように、自ノード301は自身のリンクチケット(LT_A)や受信したリンクチケット(LT_B)を接続ノード302へ送信する。このようなリンクチケットの送信・転送により、自ノード301は未接続ノード303のリンクチケット(LT_C)を受信することとなる。自ノードは、リンクチケット(LT_C)を受信すると、そのリンクチケットを用いて、対応する未接続ノード303へ接続を要求する。
図3に示すように、自ノード301は自身のリンクチケット(LT_A)や受信したリンクチケット(LT_B)を接続ノード302へ送信する。このようなリンクチケットの送信・転送により、自ノード301は未接続ノード303のリンクチケット(LT_C)を受信することとなる。自ノードは、リンクチケット(LT_C)を受信すると、そのリンクチケットを用いて、対応する未接続ノード303へ接続を要求する。
また、プレイヤーがオンラインプレイのメリットをできるだけ享受するためには、自ノードはより多くの他ノードと接続していることが望ましい。
そこで、本実施形態では、自ノードは、未接続ノードのリンクチケットを受信した場合に、該未接続ノードに対し必ず接続を要求し(能動リンク)、未接続ノードから接続の要求があった場合には、それを受け入れる(受動リンク)ものとする。
そこで、本実施形態では、自ノードは、未接続ノードのリンクチケットを受信した場合に、該未接続ノードに対し必ず接続を要求し(能動リンク)、未接続ノードから接続の要求があった場合には、それを受け入れる(受動リンク)ものとする。
また、本実施形態では、自ノードは、自ノードのリンクチケットを、定期的に、接続ノードへ送信するものとする。例えば、一度リンクチケットを送信してから所定時間後に再度リンクチケットを送信する。なお、送信するリンクチケットの枚数は、自ノードの空きリンク数(自ノードが接続できる総ノード数−接続ノード数)に応じて変更される。空きリンク数が多いことは、接続ノード数が少ないことを意味する。そのため、自ノードは空きリンク数が多いほど多くのリンクチケットを発行(送信)する。なお、図3には1つの
接続ノードにリンクチケットを送信する例を示しているが、リンクチケットは複数の接続ノードに送信してもよい。例えば、6枚のリンクチケットを2枚ずつ3つの接続ノードに送信してもよい。接続ノード毎にリンクチケットの枚数を異ならせてもよい。例えば、帯域に余裕のある接続ノードやリンク数(接続しているノードの数)の多い接続ノードに対してより多くのリンクチケットを送信する構成であってもよい。
接続ノードにリンクチケットを送信する例を示しているが、リンクチケットは複数の接続ノードに送信してもよい。例えば、6枚のリンクチケットを2枚ずつ3つの接続ノードに送信してもよい。接続ノード毎にリンクチケットの枚数を異ならせてもよい。例えば、帯域に余裕のある接続ノードやリンク数(接続しているノードの数)の多い接続ノードに対してより多くのリンクチケットを送信する構成であってもよい。
以下、図4のフローチャートを用いて、リンクチケットを用いてネットワークを拡大する際の処理の流れについて説明する。
まず、自ノードは、接続ノードからリンクチケットを受信すると(S401:YES)、該リンクチケットをすでに所有しているか否かを判断する(S402)。
受信したリンクチケットがすでに所有しているリンクチケットである場合には(S402:YES)、自ノードは、受信したリンクチケットを送信元の接続ノードとは異なる接続ノードへ転送する(S406)。受信したリンクチケットがまだ所有していないリンクチケットである場合には(S402:NO)、自ノードは、該リンクチケットを用いて対応する他ノード(未接続ノード)へ接続を要求する(S403)。
そして、S403の次に、自ノードは、S402で受信したリンクチケットの枚数が2枚以上か否かを判断する(S404)。枚数が1枚である場合には(S404:NO)、S401へ戻る。枚数が2枚以上である場合には(S404:YES)、(自ノードが1枚使用するため)受信したリンクチケットの枚数を1枚減らし(S405)、該リンクチケットを送信元の接続ノードとは異なる接続ノードへ送信する(S406)。そして、S401へ戻る。
以上の処理を繰り返すことにより、ネットワークが拡大される。
また、本実施形態では、ノード間でリンクチケットを送受信して(サーバに接続することなく)ネットワークが拡大されるため、サーバに負荷を与えることなくネットワークを拡大することができる。そして、リンクチケットを使用しなければ他ノードと接続できないため、1つのノードに接続要求が集中することを抑制することができる。
また、本実施形態では、ノード間でリンクチケットを送受信して(サーバに接続することなく)ネットワークが拡大されるため、サーバに負荷を与えることなくネットワークを拡大することができる。そして、リンクチケットを使用しなければ他ノードと接続できないため、1つのノードに接続要求が集中することを抑制することができる。
<接続の切り替え方法>
上述したように、本実施形態において、自ノードは積極的に能動リンク及び受動リンクを行う。しかしながら、空きリンクが無ければ、自ノードは他ノードと接続を行うことができない。また、自ノードは、プレイヤーのプレイ中に、現在の接続ノードよりも好ましい未接続ノードのリンクチケットを取得することや、そのような未接続ノードから接続を要求されることがある。その場合に、自ノードに空きリンクが無ければ、自ノードは、そのような未接続ノードとの接続を行うことができない。そこで、本実施形態では、各ノードは必ず所定数の空きリンクを確保しているものとする。具体的には、自ノードが、空きリンクの数(空きリンク数)が所定数未満となった場合に、接続ノードの中から好ましい接続ノードを選択し、それら以外の接続ノードとの接続を切断するものとする。それにより、所定数の空きリンクが確保される。
上述したように、本実施形態において、自ノードは積極的に能動リンク及び受動リンクを行う。しかしながら、空きリンクが無ければ、自ノードは他ノードと接続を行うことができない。また、自ノードは、プレイヤーのプレイ中に、現在の接続ノードよりも好ましい未接続ノードのリンクチケットを取得することや、そのような未接続ノードから接続を要求されることがある。その場合に、自ノードに空きリンクが無ければ、自ノードは、そのような未接続ノードとの接続を行うことができない。そこで、本実施形態では、各ノードは必ず所定数の空きリンクを確保しているものとする。具体的には、自ノードが、空きリンクの数(空きリンク数)が所定数未満となった場合に、接続ノードの中から好ましい接続ノードを選択し、それら以外の接続ノードとの接続を切断するものとする。それにより、所定数の空きリンクが確保される。
例えば、自ノードは、接続ノードと定期的にPCデータの送受信を行う。そして、空きリンク数が所定数未満となった場合(接続ノードの数が所定数を超えた場合)に、PCデータに基づいて接続ノードの接続を切り替える。具体的には、リンクスコアが高い順に所定数のノードとの接続は維持し、リンクスコアが低いノードのうちのいくつかの接続を切断する。なお、リンクスコアが高いノードとのリンクを通常リンクと呼ぶ。これにより、自ノードはPC間の距離がより短いノードとの接続が優先されるため、有益な情報の取得が期待できる。
また、自ノードのPCの移動先にPCが存在するいくつかのノードとの接続も維持されるように、接続ノードの接続を切り替えてもよい。例えばゲームの仮想世界が複数のエリアで構成されている場合に、自ノードのPCがエリアXからエリアYに向かって移動中であれば、エリアYの中にPCが存在している他のノードともリンクをもつのである。このようなリンクを先読みリンクと呼ぶ。このような構成にすることにより、自ノードのPCの移動先の情報を先行して取得することができる。
なお、リンクスコアを算出するための関数として、通常リンク用の関数と先読みリンク用の関数とを用意し、それぞれのリンクスコアを算出してもよい。その場合には、通常リンクと先読みリンクのそれぞれについてリンクスコアが高い所定数の他ノードと接続される構成とすればよい。
なお、リンクチケットとともにPCデータを転送する構成であってもよい。それにより、能動リンクにおいては、取得したPCデータを用いてリンクスコアを算出し、接続するにふさわしい他ノードか否かを判断した後で、他ノードとの接続を行うことができる。そのため、不必要に他ノードと接続することを防ぐことができる。
また、上記接続の切り替えのタイミングは、自ノードが決定してもよい。例えば、一度接続した他ノードのノードデータ(リンクチケットを含む)と該他ノードのPCデータをノードリストとして格納しておき、定期的に接続ノードとのリンクスコア、及び、未接続ノードとのリンクスコア(接続したと仮定した場合のリンクスコア)を算出し、上記判断指標に基づいて接続の切り替えを行ってもよい。
また、接続ノードからのデータ(例えば、PCデータ)の転送が途絶えた場合には、その接続ノードとのリンクを解除してもよい。接続ノードからのデータの転送が途絶えた場合には、該接続ノードがネットワークから切断した可能性が高いため、そのような接続ノードとのリンクを解除することにより、無駄なリンクを減らすことができる。
<タイムチケットを用いたネットワークの拡大方法>
また、上述した方法でネットワークを構築しようとすると、ネットワーク内に“小島”(一部のノードで構成され、他のノードとの接続を行わない小規模なネットワーク)ができてしまう虞がある。そのような“小島”内のプレイヤーは、接続先のプレイヤーが限定されてしまうため、取得できる情報に偏りがでる可能性がある。そこで、本実施形態では、タイムチケットを用いてノードをサーバへ定期的に接続させる。タイムチケットはロビーサーバへ強制的に接続させるためのチケット(データ)である。
また、上述した方法でネットワークを構築しようとすると、ネットワーク内に“小島”(一部のノードで構成され、他のノードとの接続を行わない小規模なネットワーク)ができてしまう虞がある。そのような“小島”内のプレイヤーは、接続先のプレイヤーが限定されてしまうため、取得できる情報に偏りがでる可能性がある。そこで、本実施形態では、タイムチケットを用いてノードをサーバへ定期的に接続させる。タイムチケットはロビーサーバへ強制的に接続させるためのチケット(データ)である。
図2(b)は、タイムチケットのデータ構造の一例を示す図である。
図2(b)に示すように、タイムチケットは、蓄積時間、満了時間などの情報を有する。蓄積時間はタイムチケットに蓄積された時間の情報であり、蓄積時間が満了時間に達したタイムチケットを所持しているノードはサーバへ接続しなければならない。
図2(b)に示すように、タイムチケットは、蓄積時間、満了時間などの情報を有する。蓄積時間はタイムチケットに蓄積された時間の情報であり、蓄積時間が満了時間に達したタイムチケットを所持しているノードはサーバへ接続しなければならない。
図5は、タイムチケットを用いてネットワークが拡大される様子を示す概略図である。
各ノードは、サーバへ接続していない時間を計測時間としてカウントしており、計測時間が所定の配布時間に達したノードは、該計測時間を蓄積時間としてタイムチケット(TT)に記録し、そのタイムチケットを接続されているノードに送信する。
タイムチケットを受信したノードは、自身の計測時間を受信したタイムチケットに記録されている蓄積時間に加算し、そのタイムチケットを接続されているノードに送信する。
以上の処理を繰り返し、加算の結果が満了時間以上となった場合には、そのノードはサーバに登録し、他のノードとの接続を行う。
各ノードは、サーバへ接続していない時間を計測時間としてカウントしており、計測時間が所定の配布時間に達したノードは、該計測時間を蓄積時間としてタイムチケット(TT)に記録し、そのタイムチケットを接続されているノードに送信する。
タイムチケットを受信したノードは、自身の計測時間を受信したタイムチケットに記録されている蓄積時間に加算し、そのタイムチケットを接続されているノードに送信する。
以上の処理を繰り返し、加算の結果が満了時間以上となった場合には、そのノードはサーバに登録し、他のノードとの接続を行う。
以下、図6のフローチャートを用いて、タイムチケットを用いてネットワークを拡大する際の処理の流れについて説明する。
まず、自ノードは、計測時間のカウントを開始する(S601)。
そして、計測時間が配布時間以上となると(S603:YES)、自ノードは該計測時間を蓄積時間としてタイムチケットに記録し、そのタイムチケットを接続ノード(複数存在する場合にはいずれか1つ)に送信する(S604)。そして、S601へ戻る。
また、自ノードは、タイムチケットを受信すると(S602:YES)、該タイムチケットの蓄積時間に計測時間を加算する(S605)。
そして、計測時間が配布時間以上となると(S603:YES)、自ノードは該計測時間を蓄積時間としてタイムチケットに記録し、そのタイムチケットを接続ノード(複数存在する場合にはいずれか1つ)に送信する(S604)。そして、S601へ戻る。
また、自ノードは、タイムチケットを受信すると(S602:YES)、該タイムチケットの蓄積時間に計測時間を加算する(S605)。
(S605の)次に、自ノードは、S605の加算処理により、蓄積時間が満了時間以上となったか否かを判断する(S606)。蓄積時間が満了時間未満の場合には(S606:NO)、自ノードは、該蓄積時間が記録されたタイムチケットを接続ノードに送信する(即ち、S604の処理を行う)。累積時間が満了時間以上となった場合には(S606:YES)、ロビーサーバへ接続し(S607)、他ノード(未接続ノード)との接続を行う(S608)。なお、自ノードは、他ノードとの接続が確立するまで、ロビーサーバに接続し続ける(ノードデータを登録し続ける)。
他ノードとの接続が確立すると(S608:YES)、自ノードはロビーサーバとの接続を切断し(S609)、S601へ戻る。即ち、自ノードはロビーサーバからノードデータを削除し、S601へ戻る。
このように、タイムチケットによってノードを強制的にサーバに接続させることにより、“小島”内のノードを“小島”外のノードと接続させることができ、ネットワーク間の交流(情報の交換・共有)を促進することができる。よって、ユーザに対してより有益な情報を与える機会が増える。
なお、S602において、自ノードは、複数の接続ノードから同時にタイムチケットを受信する可能性がある。そのような場合には、自ノードは、受信した複数のタイムチケットの蓄積時間と自身の計測時間の総和を算出し、複数のタイムチケットの該総和を蓄積時間とする1つのタイムチケットに集約すればよい。
なお、タイムチケットの送信後(S604の処理の後)やロビーサーバとの接続の切断後(S609の処理の後)に、直ちに計測時間のカウント(S601の処理)を開始するのではなく、所定の猶予時間後に開始するようにしてもよい。また、猶予時間は、自ノードのリンク数(接続ノードの数)に応じて変動するものであってもよい。例えば、リンク数が多い場合には、ネットワークの大きさがある程度大きいことが予想される。そのような場合には、ロビーサーバへ頻繁に接続する必要はないため、猶予時間を長くしてもよい。
また、満了時間は、状況に応じて設定されてもよい。例えば、満了時間として、最初に初期値(例えば10秒)が設定され、タイムチケットによりノードがロビーサーバに接続した場合には、該ノードは満了時間をロビーサーバの性能に応じて長い時間(例えば1分)に変更してもよい。満了時間を長い時間に変更するのは、一度タイムチケットによってロビーサーバに接続すれば、その後はロビーサーバに接続しなくてもある程度までネットワークが広がるからである。また、ロビーサーバへ登録されているノードの数が十分に多い場合にロビーサーバへ接続すると、ロビーサーバの負荷が大きくなってしまうため、そのような場合には、満了時間を長くしてもよい。一方、ロビーサーバへ登録されているノードの数が少ない場合には、ロビーサーバの処理に余裕があるため、満了時間を短くして
もよい。
もよい。
また、満了時間の変更日時が古い場合には、その満了時間が妥当な時間である可能性は低くなる。例えば、ロビーサーバが混んでいたために満了時間を長くしたとしても、それが10分前の情報であれば現在ロビーサーバが混んでいる可能性は低くなる。そこで、各ノードは、満了時間の変更の際に、その変更日時をタイムチケットに記録することが好ましい。そして、受信したタイムチケットに記録されている変更日時が現日時よりも所定時間前の日時である場合には、満了時間を初期値に戻せばよい。それにより、満了時間の妥当性を向上することができ、ひいては、好適にネットワークを拡大すること(“小島”の発生を抑制すること)ができる。なお、タイムチケットが複数のノードから同時に受信された場合(複数のタイムチケットを1つに集約する場合)には、満了時間として、各タイムチケットの満了時間のうち、変更日時が最も新しい満了時間を選択すればよい。
<ノード間で送受信するデータについて>
次に、ノード間で送受信するデータ(ゲームの情報;ゲームデータ)について説明する。ゲームデータは、各ノードで生成され送信される。具体的には、各ノードは、プレイヤーのゲームのプレイ状況に応じてゲームデータを生成する。そのため、ゲームデータの増加に伴い、ノード間を行き交うデータ量(転送量)が増大してしまう。このような転送量の増大は、ノードの負荷の増大を招き、好ましくない。そのような問題を解決するために、本実施形態では、ゲームデータを定期的に削除する。具体的には、ゲームデータに消滅までの時間(寿命)を設けることにより、ゲームデータを定期的に削除する。
次に、ノード間で送受信するデータ(ゲームの情報;ゲームデータ)について説明する。ゲームデータは、各ノードで生成され送信される。具体的には、各ノードは、プレイヤーのゲームのプレイ状況に応じてゲームデータを生成する。そのため、ゲームデータの増加に伴い、ノード間を行き交うデータ量(転送量)が増大してしまう。このような転送量の増大は、ノードの負荷の増大を招き、好ましくない。そのような問題を解決するために、本実施形態では、ゲームデータを定期的に削除する。具体的には、ゲームデータに消滅までの時間(寿命)を設けることにより、ゲームデータを定期的に削除する。
例えば、ゲームデータとして、PCが自ノードのPCの近くにいるノードのプレイヤーにのみ有効となるデータ(第1データ)と、PCが自ノードのPCから離れた位置にいるノードのプレイヤーにも有効となるデータ(第2データ)とが考えられる。本実施形態では、第1データと第2データとで寿命を異ならせる。
具体的には、ゲームデータが到達するまでのホップ数(通過するノード数)が少ない接続ノードや未接続ノードのPCは、自ノードのPCの近くにいる可能性が高い。一方、ゲームデータが到達するまでのホップ数が多い未接続ノードのPCは、自ノードのPCから離れた位置にいる可能性が高い。そのため、第1データに対しては(第2データよりも)短い寿命を設定し、第2データに対しては(第1データよりも)長い寿命を設定する。それにより、PCが自ノードのPCから離れた位置にいるノードのプレイヤーに対しあまり有効とならないデータの伝達が抑制されるため、有益な情報は残しつつデータの転送量を低減することができる。その結果、各ノードの負荷を低減することができ、プレイヤーが安定してゲームをプレイすることが可能となる。
また、一般に、第1データは古いデータであると意味の無くなるデータである可能性が高く、第2データは古いデータであっても意味のあるデータである可能性が高い。そこで、本実施形態では、第1データと第2データとで配信頻度(送信頻度)を異ならせる。
具体的には、第1データについては(第2データよりも)高い配信頻度を設定し、第2データについては(第1データよりも)低い配信頻度を設定する。それにより、古いデータであると意味の無くなるデータは積極的に生成、送信され、古いデータであっても意味のあるデータの転送量は減らされるため、有益な情報は残しつつデータの転送量を低減することができる。その結果、各ノードの負荷を低減することができ、プレイヤーが安定してゲームをプレイすることが可能となる。なお、古くても意味のあるデータは、寿命が無限大(無限時間)で、且つ、1つのノードに対し1回だけ送信されるデータであってもよい。
また、ゲームデータとして、プレイヤーが指示している間だけ有効となるデータが考えられる。例えば、プレイヤーの指示(操作)によって有効となり、プレイヤーの指示によって無効となるアプリケーションのデータが考えられる。そのようなデータを他のプレイヤーに対して有効にするために、本実施形態では以下のようなデータの送信を行う。
まず、自ノードのプレイヤーがアプリケーションを有効にすると、自ノードが、そのアプリケーションを識別する識別子を生成する。次に、自ノードが、その識別子とともに該アプリケーションのデータを繰り返し送信する(データに識別子が含まれていてもよい。例えば、データの名前が識別子であってもよい)。具体的には、自ノードは、データの寿命がくる前に同じデータを送信する。そして、他ノードは、以前に受信したデータと同じ識別子のデータを受信すると、受信したデータを以前に受信した同じ識別子のデータに上書きする。それにより、同一のデータの寿命だけが更新されることになり、有効性が維持される。なお、そのようなデータは、自ノードのプレイヤーがアプリケーションを無効にした後に寿命によって無効とされてもよいし、自ノードがアプリケーションを無効したことを示すデータ(無効データ)を送信し、該無効データの受信によって無効とされてもよい。
また、第1データは、PCが自ノードのPCの近くにいるノードのプレイヤーにのみ有効となるデータであるため、先読みリンクの接続ノードに送信しても有効となる可能性は低い。そこで、本実施形態では、通常リンクと先読みリンクとで送信するデータまたは配信頻度を異ならせる。具体的には、通常リンクの接続ノードに対しては第1,2データを送信し、先読みリンクの接続ノードに対しては第2データを送信する。このような構成にすることにより、有益な情報は残しつつデータの転送量を低減することができる。その結果、各ノードの負荷を低減することができ、プレイヤーが安定してゲームをプレイすることが可能となる。なお、先読みリンクの接続ノードのPCは自ノードのPCに近づく可能性があるため、第1データを通常リンクの接続ノードに対する配信頻度よりも低い配信頻度で送信してもよい。PC間の距離が近いほど高くなるようなリンクスコアによって通常リンクと先読みリンクを区別する場合には、該リンクスコアに応じて送信するデータが異なることとなる。
また、ゲームデータ(例えば、古くても意味のある第2データ)を、記憶装置(例えば、ノードに内蔵または外付けされた不揮発性メモリ、磁気ディスクなど)に記憶させることが考えられる。しかしながら、受信した第2データを全て記憶すると、データ量が膨大になる虞がある。そこで、本実施形態では、第2データがプレイヤーへの影響度合いを表す評価値の情報を含むものとする。具体的には、第2データに対しプレイヤーが何らかの評価をすることを可能にし、該評価に基づいて評価値を算出する。そして、評価値の高いものを優先的に記憶装置に記憶させる(第2データに対し、評価値の低いデータから順に削除する)。このような構成にすることにより、ノード(具体的には、上述した記憶装置)が保持するデータ量を低減することができる。また、プレイヤーに影響のあるデータ(プレイヤーにとって有益なデータ)を優先的に残すことができる。
なお、ゲームデータは、記憶するデータ量を所定量以下に保つように削除されてもよいし、評価値が所定の閾値未満である場合に削除されてもよい。
なお、ゲームデータは、記憶するデータ量を所定量以下に保つように削除されてもよいし、評価値が所定の閾値未満である場合に削除されてもよい。
<具体例>
以下、上述した各種技術の具体例について説明する。
(PCデータの具体例)
まず、PCデータ及び該PCデータを用いたリンクスコアの算出方法の具体例について説明する。ゲームの種類によって接続の評価に重要なパラメータが異なるため、PCデータやリンクスコアの算出方法もゲームの種類によって異なる。
以下、上述した各種技術の具体例について説明する。
(PCデータの具体例)
まず、PCデータ及び該PCデータを用いたリンクスコアの算出方法の具体例について説明する。ゲームの種類によって接続の評価に重要なパラメータが異なるため、PCデータやリンクスコアの算出方法もゲームの種類によって異なる。
例えば、アクションロールプレイングゲームなどのようなゲームの場合、リンクスコアを算出するためのパラメータ(PCデータ)として、「PCの位置座標」、「PCのレベル」、及び、「空きリンク数」などが考えられる。そのような場合には、各パラメータに対し接続するにふさわしいほど高得点になるようなスコアを算出し、算出したそれらスコアの合計値をリンクスコアとすればよい。なお、スコアは、接続するにふさわしいか否かの判断において重要となるパラメータほど重みが大きくなるように算出されることが好ましい。
「PCの位置座標」に対しては、例えば、PC間の距離が近いほど高くなるようにスコアを算出すればよい。具体的には、PC間の距離がある距離以上の場合はスコアを“0”とし、それよりも近い場合には、距離に応じて“11〜20”の範囲でスコアを算出すればよい。
「PCのレベル」に対しては、例えば、PC間のレベル差が小さいほど高くなるようにスコアを算出すればよい。具体的には、PC間のレベル差に応じて“0〜10”の範囲でスコアを算出すればよい。
「空きリンク数」に対しては、空きリンク数が多いほど高くなるようにスコアを算出すればよい。具体的には、空きリンク数に応じて“0〜5”の範囲でスコアを算出すればよい。
「PCのレベル」に対しては、例えば、PC間のレベル差が小さいほど高くなるようにスコアを算出すればよい。具体的には、PC間のレベル差に応じて“0〜10”の範囲でスコアを算出すればよい。
「空きリンク数」に対しては、空きリンク数が多いほど高くなるようにスコアを算出すればよい。具体的には、空きリンク数に応じて“0〜5”の範囲でスコアを算出すればよい。
なお、すでに述べたように、近い位置にいるPCのノードは、自ノードのプレイヤーにとって有益な情報を持っている可能性が高い。そこで、上記例では、「PCの位置座標」がリンクスコアに最も大きな影響を与えるようにスコアの範囲が設定されている。
なお、ゲームによってはPCの移動できる範囲が制限されている場合がある。即ち、PCの移動できる経路が予め決められている場合がある。その場合には、「PCの位置座標」から経路上の距離と(相手のPCがいる)方向を算出し、それらの結果を用いてスコアを算出すればよい。
なお、ゲームによってはPCの移動できる範囲が制限されている場合がある。即ち、PCの移動できる経路が予め決められている場合がある。その場合には、「PCの位置座標」から経路上の距離と(相手のPCがいる)方向を算出し、それらの結果を用いてスコアを算出すればよい。
次に、ゲームの種類(ゲームタイプ)ごとの必要なPCデータ及び評価基準の例について説明する。
・PCの状態によってリンクスコアを変化させる場合
PCが死亡してもプレイヤーが操作可能な魂として存在し続けるゲームの場合には、「生身」や「魂」などの「状態」を表すデータをPCデータとして用いてもよい。そのようなPCデータに対しては、例えば、状態が近い(または状態が離れている)ほど高くなるようにスコアを算出すればよい。
・PCの状態によってリンクスコアを変化させる場合
PCが死亡してもプレイヤーが操作可能な魂として存在し続けるゲームの場合には、「生身」や「魂」などの「状態」を表すデータをPCデータとして用いてもよい。そのようなPCデータに対しては、例えば、状態が近い(または状態が離れている)ほど高くなるようにスコアを算出すればよい。
・PCの属性によってリンクスコアを変化させる場合
チーム分けがあるゲームの場合には、自分のチームを表すデータをPCデータとして用いてもよい。そのようなPCデータに対しては、例えば、該データが自ノードのチームと同じチームを表す場合に高くなるようにスコアを算出すればよい。
チーム分けがあるゲームの場合には、自分のチームを表すデータをPCデータとして用いてもよい。そのようなPCデータに対しては、例えば、該データが自ノードのチームと同じチームを表す場合に高くなるようにスコアを算出すればよい。
・プレイ状況によってリンクスコアを変化させる場合
対戦ゲームであって、他のPCが助けに入ったり乱入したりできるゲームの場合には、助けに入るのか乱入するのかを表すデータをPCデータとして用いてもよい。そして、そのようなPCデータに対しては、例えば、自ノードのPCが優勢か劣勢かでスコアの算出方法を異ならせればよい。具体的には、優勢の場合には、乱入を表すPCデータに対して高いスコアを算出し、劣勢の場合には、助けに入ることを表すPCデータに対して高いスコアを算出すればよい。なお、優勢か劣勢かは、自ノードのPCの体力、レベル、装備、及び、敵の数、強さなどの情報から判断すればよい。
対戦ゲームであって、他のPCが助けに入ったり乱入したりできるゲームの場合には、助けに入るのか乱入するのかを表すデータをPCデータとして用いてもよい。そして、そのようなPCデータに対しては、例えば、自ノードのPCが優勢か劣勢かでスコアの算出方法を異ならせればよい。具体的には、優勢の場合には、乱入を表すPCデータに対して高いスコアを算出し、劣勢の場合には、助けに入ることを表すPCデータに対して高いスコアを算出すればよい。なお、優勢か劣勢かは、自ノードのPCの体力、レベル、装備、及び、敵の数、強さなどの情報から判断すればよい。
・プレイヤーの意思によってリンクスコアを変化させる場合
プレイヤーが他のプレイヤーの助けを求めるための“救援信号”を発信できるゲームの場合には、“救援信号”を受け入れるか否かを表すデータをPCデータとして用いてもよい。そのようなPCデータに対しては、例えば、該データが“救援信号”を受け入れること表す場合に高くなるようにスコアを算出すればよい。
また、プレイヤーが挑戦者を募集することができるゲームの場合には、挑戦を希望しているか否かを表すデータをPCデータとして用いてもよい。そして、例えば、自ノードのプレイヤーが挑戦者を募集しているときに、挑戦を希望していること表すPCデータに対して高いスコアを算出すればよい。
プレイヤーが他のプレイヤーの助けを求めるための“救援信号”を発信できるゲームの場合には、“救援信号”を受け入れるか否かを表すデータをPCデータとして用いてもよい。そのようなPCデータに対しては、例えば、該データが“救援信号”を受け入れること表す場合に高くなるようにスコアを算出すればよい。
また、プレイヤーが挑戦者を募集することができるゲームの場合には、挑戦を希望しているか否かを表すデータをPCデータとして用いてもよい。そして、例えば、自ノードのプレイヤーが挑戦者を募集しているときに、挑戦を希望していること表すPCデータに対して高いスコアを算出すればよい。
(ゲームデータの具体例)
次に、ゲームデータの具体例について説明する。
まず、PCが自ノードのPCから離れた位置にいるノードのプレイヤーにも有効となり、且つ、古いデータであっても意味のあるデータ(第2データ)の例について説明する。
次に、ゲームデータの具体例について説明する。
まず、PCが自ノードのPCから離れた位置にいるノードのプレイヤーにも有効となり、且つ、古いデータであっても意味のあるデータ(第2データ)の例について説明する。
プレイヤーが仮想世界の所望の位置にテキストを残すことができるゲームの場合、ゲームデータとして、該テキストを表すテキストデータが考えられる。テキストデータは、例えば、テキストの内容、テキストが残された位置などの情報を含む。
自ノードのPCが過去に行った行動を他のプレイヤーが見ることのできるゲームの場合、ゲームデータとして、該行動を表すリプレイデータが考えられる。リプレイデータは、例えば、PCの行った行動、該行動を行った位置などの情報を含む。
仮想世界のキャラクター(例えば、敵や商人など)がノード間を移動するゲームの場合、ゲームデータとしてキャラクターの情報を表すキャラクターデータが考えられる。キャラクターデータは、例えば、キャラクターが敵である場合には、該敵の種類、強さ、残りの体力、キャラクターが商人である場合には、商品(アイテム)のラインナップなどの情報を含む。
仮想世界におけるお店で売買されるアイテムの在庫をプレイヤー間で共有するゲームの場合、PCがお店に売ったアイテムや捨てたアイテムがお店の在庫に反映されることが考えられる。そのため、その場合には、ゲームデータとして、自ノードのPCがお店に売ったアイテムや捨てたアイテムのデータ(アイテムデータ)が考えられる。アイテムデータは、例えば、PCがお店に売ったアイテムの種類及びその個数、PCが捨てたアイテム及びその個数などの情報を含む。
仮想世界におけるチーム毎の勢力を確認することができるゲームの場合、ゲームデータとして、該勢力を算出するために必要な勝敗データが考えられる。勝敗データは、例えば、各チームの勝敗数、メンバーなどの情報を含む。
仮想世界において、1つのものに対して各PCが所定の動作を行うことができ、どれだけのPCが該動作を行ったかを確認することのできるゲームの場合、ゲームデータとして、上記動作の実行状況を表す動作状況データが考えられる。例えば、上記所定の動作が仮想世界の泉に対しコインを投げることである場合、動作状況データは、自ノードのPCが投げたコインの枚数などの情報を含む。
大局的にはストラテジーゲームであり、局地戦がアクションゲームであるようなゲームの場合、ゲームデータとして、戦局を表す戦局データが考えられる。戦局データは、例えば、局地戦の状況、局地戦での勝敗、局地戦の発生や消滅などの情報を含む。
これらのデータは全てのプレイヤーに伝達されることが好ましいため、寿命は長く設定
され、配信頻度は低く設定される。例えば、寿命は、3日、1週間、無限時間などが設定され、配信頻度は、1回/ノード、1回/時間などが設定される。
され、配信頻度は低く設定される。例えば、寿命は、3日、1週間、無限時間などが設定され、配信頻度は、1回/ノード、1回/時間などが設定される。
次に、PCが自ノードのPCの近くにいるノードのプレイヤーにのみ有効となり、且つ、古いデータであると意味の無くなるデータ(第1データ)の例について説明する。
自ノードのPCの存在を他のプレイヤーに知らせるゲームの場合、ゲームデータとして、該PCの存在を表すリアルタイムリプレイデータが考えられる。リアルタイムリプレイデータは、例えば、PCの行った行動、該行動を行った位置などの情報を含む。
プレイヤーが他のプレイヤーとマルチプレイすることのできるゲームの場合、ゲームデータとして、マルチプレイを望んでいることを表すSOSデータが考えられる。SOSデータは、例えば、マルチプレイを望んでいることを表す情報、他のPCの呼び出し位置などの情報を含む。なお、SOSデータは、プレイヤーの指示に応じて送信されてもよいし、プレイヤーの意思とは無関係に(例えば、PCが所定のアイテムを取得した場合に)送信されてもよい。
自ノードのPCの状況を他のプレイヤーに知らせるゲームの場合、ゲームデータとして、PCの状況を表すPC状況データが考えられる。
PCが敵を倒したことや、敵に倒されたことを他のプレイヤーに知らせる場合には、PC状況データは、例えば、PCが倒した敵の種類や位置、PCが倒された敵の種類や位置などの情報を含む。
PCが特定の位置(拠点)に到達したことを他のプレイヤーに知らせる場合には、PC状況データは、例えば、PCが到達した位置、拠点を占有している時間などの情報を含む。
PCが特定のアイテムを取得したことを他のプレイヤーに知らせる場合には、PC状況データは、例えば、入手したアイテムの種類、自身(入手者)などの情報を含む。
PCがアイテムを配置したことを他のプレイヤーに知らせる場合には、PC状況データは、例えば、配置したアイテムの種類、位置などの情報を含む。
PCが敵を倒したことや、敵に倒されたことを他のプレイヤーに知らせる場合には、PC状況データは、例えば、PCが倒した敵の種類や位置、PCが倒された敵の種類や位置などの情報を含む。
PCが特定の位置(拠点)に到達したことを他のプレイヤーに知らせる場合には、PC状況データは、例えば、PCが到達した位置、拠点を占有している時間などの情報を含む。
PCが特定のアイテムを取得したことを他のプレイヤーに知らせる場合には、PC状況データは、例えば、入手したアイテムの種類、自身(入手者)などの情報を含む。
PCがアイテムを配置したことを他のプレイヤーに知らせる場合には、PC状況データは、例えば、配置したアイテムの種類、位置などの情報を含む。
また、プレイヤーに他のプレイヤーが協力することのできるゲームの場合には、ゲームデータとして、協力を求めたり、協力したりすることを表す協力データが考えられる。例えば、自ノードのPCに他ノードのPCがエネルギーを送り、そのエネルギーを利用して自ノードのPCが強力な技を繰り出すようなゲームでは、協力データとして、協力を要請していることを表す情報、協力を求めているPCに送るエネルギーの量などの情報を含むデータを用いればよい。
これらのデータは自ノードのPCの近くにいるPCのノードに伝達されればよいため、寿命は短く設定される。また、常に新しい情報を伝えることが好ましいため、配信頻度は高く設定される。例えば、寿命は、30秒、40秒などが設定され、配信頻度は、1回/6秒、1回/10秒などが設定される。
(評価値の算出方法の具体例)
次に、評価値の算出方法の具体例について説明する。
上述したように、特定のゲームデータ(第2データ)は、記憶装置に記憶され、評価値に基づいて削除される。
次に、評価値の算出方法の具体例について説明する。
上述したように、特定のゲームデータ(第2データ)は、記憶装置に記憶され、評価値に基づいて削除される。
評価値は、例えば、仮想世界におけるデータの生成位置、データの生成日時、データの最終更新日時、データの生成者、他のプレイヤーによるデータの参照回数、他のプレイヤーによるデータの評価回数、データの内容、データの希少さなどの情報に基づいて算出さ
れる。
れる。
仮想世界におけるデータの生成位置の情報を用いて評価値を算出する場合には、例えば、仮想世界における特定の場所で生成されたデータに対して評価値が高くなるようにすればよい。具体的には、宝箱などの付近に生成されたテキストのデータは、宝箱の存在などを知らせる重要な情報を含んだデータである可能性が高い。そのため、テキストのデータの生成位置が宝箱付近である場合に評価値を高くすればよい。
データの生成日時の情報を用いて評価値を算出する場合には、例えば、生成日時が新しいデータに対して評価値が高くなるようにすればよい。新しいデータは長時間プレイしたプレイヤーに刺激を与える可能性が高いため、このような構成にすることにより、長時間プレイしたプレイヤーに有益なデータを記憶装置に残すことができる。なお、生成日時が古いデータに対して評価値が高くなるようにしてもよい。
データの最終更新日時の情報を用いて評価値を算出する場合には、例えば、最終更新日時が新しいデータに対して評価値が高くなるようにすればよい。最終更新日時は、例えば、最後に評価された日時(評価されていない場合にはデータの生成日時)である。最終更新日時が新しいデータはプレイヤーに何らかの刺激を与えたデータである可能性が高いため、このような構成にすることにより、プレイヤーに刺激を与えることのできるデータを記憶装置に残すことができる。なお、最終更新日時が古いデータに対して評価値が高くなるようにしてもよい。
データの生成者の情報を用いて評価値を算出する場合には、例えば、特定のプレイヤーが生成したデータに対して評価値が高くなるようにすればよい。特定のプレイヤーとは、例えば、PCのレベルが所定値以上、データの生成回数が所定数以上などのプレイヤーである。
他のプレイヤーによるデータの参照回数の情報を用いて評価値を算出する場合には、例えば、参照回数が多いほど高くなるように評価値を算出すればよい。参照回数が多いデータは、プレイヤーの興味をひくデータである可能性が高いため、このような構成にすることにより、プレイヤーの興味をひくデータを記憶装置に残すことができる。なお、参照回数が少ないほど高くなるように評価値を算出してもよい。
他のプレイヤーによるデータの評価回数の情報を用いて評価値を算出する場合には、例えば、評価回数が多いほど高くなるように評価値を算出すればよい。評価回数が多いデータは、プレイヤーに何らかの刺激を与えたデータである可能性が高いため、このような構成にすることにより、プレイヤーに刺激を与えることのできるデータを記憶装置に残すことができる。なお、評価回数が少ないほど高くなるように評価値を算出してもよい。なお、プレイヤーが、複数種類の評価(良い評価と悪い評価や、5段階の評価など)から選択してデータを評価する場合には、評価数は、所定の種類の評価数であってもよいし、全評価数(種類ごとの評価数の合計値)であってもよい。
データの内容の情報を用いて評価値を算出する場合には、例えば、重要であるほど高くなるように評価値を算出すればよい。重要か否かは、例えば、テキストデータなどの場合、データに所定のキーワードが含まれているか否かで判断すればよい。具体的には、データに所定のキーワードが含まれている場合に、該データは重要であると判断すればよい。また、仮想世界におけるテキストなどの生成位置に基づいて判断してもよい。プレイヤーが重要か否かを選択し、該選択結果に基づいて判断してもよい。
データの希少さの情報を用いて評価値を算出する場合には、例えば、希少であるほど高
くなるように評価値を算出すればよい。希少か否かは、例えば、記憶されているゲームデータの種類毎の数に基づいて判断すればよい。具体的には、データ数が所定数以下の種類のデータは希少であると判断すればよい。
くなるように評価値を算出すればよい。希少か否かは、例えば、記憶されているゲームデータの種類毎の数に基づいて判断すればよい。具体的には、データ数が所定数以下の種類のデータは希少であると判断すればよい。
次に、評価された回数(評価数)および最終更新日時に基づく評価値の算出方法の具体例について説明する。評価値は、例えば、以下の式により算出される。
評価値=(評価数/50)+((最終更新日時−現在日時)×(−3))+6
上記式は、評価数が多いデータ及び最終更新日時が新しいデータほど高い評価値を得ることのできる式の例である。また、このような式に対し、「生成から2日以内のデータを削除しない」などの条件を加えてもよい。
なお、評価値の算出式は上記式に限らない。評価値は評価数のみから算出し、評価値が同じデータについては最終更新日時が新しいデータを優先して記憶してもよい。
評価値=(評価数/50)+((最終更新日時−現在日時)×(−3))+6
上記式は、評価数が多いデータ及び最終更新日時が新しいデータほど高い評価値を得ることのできる式の例である。また、このような式に対し、「生成から2日以内のデータを削除しない」などの条件を加えてもよい。
なお、評価値の算出式は上記式に限らない。評価値は評価数のみから算出し、評価値が同じデータについては最終更新日時が新しいデータを優先して記憶してもよい。
(接続の切り替えタイミングの具体例)
次に、接続の切り替えタイミングの具体例について説明する。
例えば、自ノードに対し、リンク数の最大値(最大接続可能数)が32、基準のリンク数(接続基準数)が24(最大接続可能数の2/3)とする。即ち、自ノードは、8個の空きリンクを確保するものとする。また、32個のリンクは、受動リンク用と能動リンク用にそれぞれ半分ずつ利用されるものとする。
この場合には、自ノードは、リンク数が接続基準数になるようにリンクスコアの低い接続ノードを定期的に切断する。
次に、接続の切り替えタイミングの具体例について説明する。
例えば、自ノードに対し、リンク数の最大値(最大接続可能数)が32、基準のリンク数(接続基準数)が24(最大接続可能数の2/3)とする。即ち、自ノードは、8個の空きリンクを確保するものとする。また、32個のリンクは、受動リンク用と能動リンク用にそれぞれ半分ずつ利用されるものとする。
この場合には、自ノードは、リンク数が接続基準数になるようにリンクスコアの低い接続ノードを定期的に切断する。
なお、上記切り替え方法は、PCの周囲の状況が緩やかに変わる(例えば、PCの移動によって最適な接続相手が変化する)ゲームなどに適用するのに好ましい方法である。
これに対し、レースゲームのように同じプレイヤーと長時間プレイさせることが望ましいゲームでは、例えば、1レースが終わる毎にレースの参加人数だけ接続の切り替えを行えばよい。
また、プレイヤーが他のプレイヤーと同じミッションをこなすようなゲームでは、例えば、ミッションの終了毎にミッションの参加人数だけ接続の切り替えを行えばよい。
これに対し、レースゲームのように同じプレイヤーと長時間プレイさせることが望ましいゲームでは、例えば、1レースが終わる毎にレースの参加人数だけ接続の切り替えを行えばよい。
また、プレイヤーが他のプレイヤーと同じミッションをこなすようなゲームでは、例えば、ミッションの終了毎にミッションの参加人数だけ接続の切り替えを行えばよい。
101,301 自ノード
102 他ノード
103 サーバ
111 ロビーサーバ
112 STUNサーバ
302 接続ノード
303 未接続ノード
102 他ノード
103 サーバ
111 ロビーサーバ
112 STUNサーバ
302 接続ノード
303 未接続ノード
Claims (11)
- ゲームを実行する複数のノードで構成されるネットワークの構築方法であって、
各ノードが接続可能なノードの最大数が予め決められており、
各ノードが、自ノードと接続している接続ノードから、前記ゲームを実行することによって形成される仮想世界における該接続ノードのプレイヤーの位置の情報を含むPCデータを受信するステップと、
各ノードが、PCデータを用いて前記仮想世界内でのプレイヤー間の距離を求め、前記仮想世界内でのプレイヤー間の距離が短い他ノードとの接続が優先的に維持されるように、他ノードとの接続を切り替えるステップと、
を有するネットワークの構築方法。 - 各ノードは、前記他ノードとの接続を切り替えるステップにおいて、前記仮想世界内で自ノードのプレイヤーの移動先にプレイヤーが存在するノードとの接続も維持する
請求項1に記載のネットワークの構築方法。 - 各ノードが、自ノードと接続するために必要なデータであるリンクチケットを発行し、自ノードと接続している接続ノードを介して自ノードと接続していない未接続ノードへ前記リンクチケットを送信するステップと、
リンクチケットを発行したノードと該リンクチケットを受信したノードとが新たな接続を確立するステップと、
を更に有する請求項1または2に記載のネットワークの構築方法。 - 前記ネットワークを構成しているノードのうちのいずれかのノードが、所定のサーバを介して、前記ネットワークに属していない新たなノードの情報を取得し、該新たなノードとの間で接続を確立するステップ
を更に有する請求項1〜3のいずれか1項に記載のネットワークの構築方法。 - ノード間で伝送される前記ゲームのデータは、消滅までの時間を表す情報を含み、
前記ゲームのデータのうち、前記仮想世界において近い位置に存在するプレイヤーに対してのみ意味のある第1データは、前記仮想世界において離れた位置に存在するプレイヤーに対しても意味のある第2データよりも、消滅までの時間が短く設定される
請求項1〜4のいずれか1項に記載のネットワークの構築方法。 - 前記第2データの送信頻度は、第1データの送信頻度よりも低く設定される
請求項5に記載のネットワークの構築方法。 - 各ノードは、接続ノードのうち、前記仮想世界内でのプレイヤー間の距離が短い他ノードに対して前記第1データと前記第2データの両方を送信し、前記仮想世界において、プレイヤーが自ノードのプレイヤーの移動先にいる他ノードに対して前記第2データのみを送信する
請求項5または6に記載のネットワークの構築方法。 - 各ノードは、接続ノードのうち、前記仮想世界において、プレイヤーが自ノードのプレイヤーの移動先にいる他ノードに対して、前記第1データを、前記仮想世界内でのプレイヤー間の距離が短い他ノードに対する送信頻度よりも低い送信頻度で送信する
請求項5または6に記載のネットワークの構築方法。 - 各ノードは、他ノードから受信した前記ゲームのデータを蓄積するための記憶装置を有しており、
前記ゲームのデータのうち、前記仮想世界において離れた位置に存在するプレイヤーに対しても意味のあるデータは、プレイヤーへの影響度合いを表す評価値の情報を含み、
各ノードは、前記評価値の情報を含むデータに対し、評価値の高いデータを優先的に前記記憶装置に蓄積する
請求項1〜8のいずれか1項に記載のネットワークの構築方法。 - 請求項1〜9のうちいずれか1項に記載のネットワークの構築方法における各ステップをコンピュータに実行させるプログラム。
- 請求項10に記載のプログラムを記録した記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010066596A JP2011194144A (ja) | 2010-03-23 | 2010-03-23 | ネットワークの構築方法、プログラム、及び、そのプログラムを記録した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010066596A JP2011194144A (ja) | 2010-03-23 | 2010-03-23 | ネットワークの構築方法、プログラム、及び、そのプログラムを記録した記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011194144A true JP2011194144A (ja) | 2011-10-06 |
Family
ID=44873069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010066596A Pending JP2011194144A (ja) | 2010-03-23 | 2010-03-23 | ネットワークの構築方法、プログラム、及び、そのプログラムを記録した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011194144A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020124546A (ja) * | 2020-04-16 | 2020-08-20 | グリー株式会社 | プログラム、端末装置、及び情報処理システム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006244208A (ja) * | 2005-03-04 | 2006-09-14 | Matsushita Electric Ind Co Ltd | 情報処理システム、情報処理装置、及び情報処理方法 |
-
2010
- 2010-03-23 JP JP2010066596A patent/JP2011194144A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006244208A (ja) * | 2005-03-04 | 2006-09-14 | Matsushita Electric Ind Co Ltd | 情報処理システム、情報処理装置、及び情報処理方法 |
Non-Patent Citations (2)
Title |
---|
CSNG200400201014; 川原 圭博: 'ネットワーク型仮想環境のための分散型通信アーキテクチャ' 電子情報通信学会技術研究報告 第101巻,第717号, 20020308, 第119-126頁, 社団法人電子情報通信学会 * |
JPN6014018279; 川原 圭博: 'ネットワーク型仮想環境のための分散型通信アーキテクチャ' 電子情報通信学会技術研究報告 第101巻,第717号, 20020308, 第119-126頁, 社団法人電子情報通信学会 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020124546A (ja) * | 2020-04-16 | 2020-08-20 | グリー株式会社 | プログラム、端末装置、及び情報処理システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8465369B2 (en) | Game system, game system control method, and recording medium | |
JP4772058B2 (ja) | ネットワークゲームシステム、ゲーム装置、ゲーム装置の制御方法及びプログラム | |
US7645195B2 (en) | Game apparatus, game method, and game program | |
US8821288B2 (en) | Method of determining gifts of each friend user | |
JP5167390B2 (ja) | ゲーム管理装置、ゲーム管理方法及びプログラム | |
JP3708537B1 (ja) | ゲーム方法およびゲームシステム | |
KR101205501B1 (ko) | 온라인게임 시스템 | |
US10881966B2 (en) | Networked game system | |
JP5291823B1 (ja) | ゲーム管理サーバ装置、ゲーム管理サーバ装置用プログラム、および、端末装置用プログラム | |
KR20110127907A (ko) | 온라인 게임 환경에서 서버 트랜스퍼링하여 게임을 진행하는 방법, 장치, 및 기록매체 | |
JP2024028661A (ja) | ゲームプログラム、およびゲームシステム | |
JP6616238B2 (ja) | ゲーム制御方法、コンピュータ及び制御プログラム | |
JP2013075189A (ja) | ゲーム管理装置、ゲーム管理方法及びプログラム | |
JP2011194144A (ja) | ネットワークの構築方法、プログラム、及び、そのプログラムを記録した記録媒体 | |
JP5124044B1 (ja) | ゲーム管理装置、ゲーム管理方法及びプログラム | |
KR20110081843A (ko) | 대화형 네트워크 게임 및 그의 방법들 | |
JP5253680B2 (ja) | ゲーム管理装置、ゲームシステム、ゲーム管理方法及びプログラム | |
JP5296732B2 (ja) | オンラインゲームシステム、及びサーバ装置群 | |
JP2007160001A (ja) | 遊技システム、遊技サーバおよび遊技機 | |
JP7010909B2 (ja) | ビデオゲーム処理プログラム及びゲームシステム | |
JP7260831B1 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JP5956945B2 (ja) | ゲーム管理装置、ゲームシステム及びプログラム | |
JP2007160000A (ja) | 遊技システム、遊技サーバおよび遊技機 | |
CN106254520A (zh) | 一种资源竞争方法及服务器 | |
JP5225496B1 (ja) | ゲーム管理装置、ゲームシステム、ゲーム管理方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130321 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140513 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140924 |