説明

ネットワークシステム

【課題】P2P方式のネットワークにおいてセッションへの参加ノード数に上限がある場合であっても、当該上限を超えた数のノードで情報共有するための技術を提供する。
【解決手段】M個(Mは2以上の整数)を上限とする複数個のノードにより形成されるノード群であるセッションを複数個含むネットワークシステムであって、同じセッションに参加しているノード同士は互いに情報を送受信することが可能であり、それぞれのセッションは、複数のセッションに参加しているノードである接続ノードを少なくとも一つ含んでおり、接続ノードが情報を中継することにより、異なるセッションに参加しているノード同士で情報が送受信されることを特徴とするネットワークシステムを用いる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置がピアツーピア方式で形成するネットワークシステムに関する。
【背景技術】
【0002】
インターネットのように、情報処理装置が回線を通じて通信を行うネットワークが広く利用されている。例えばゲームの分野においても、通信機能を持つゲーム機等の情報処理装置(以下、「ノード」とも呼ぶ)を操作してネットワーク上で他のノードと通信し、対戦やチャット、情報共有を行うことが普通になっている。そして、かかるネットワークの構成として様々な形態が存在する。
【0003】
まず一つの構成として、クライアント/サーバ方式がある。この場合、各ノードがクライアントとなり、ネットワークを通じてサーバに処理要求を送信する。処理要求を受信したサーバは、自身の資源を利用して情報処理を行い、必要に応じてノードに情報を送り返す。
【0004】
しかし、かかるクライアント/サーバ方式では、ネットワークが大規模化するにつれて、サーバの処理能力およびネットワークの負荷の点で問題が生じる。すなわち、クライアント数が増えるとサーバに要求される処理件数も増加し、ユーザへのレスポンスが悪化する。それに対応するためには高性能な情報処理装置を使用する必要があり、結果的にネットワークを運営するコストが増大する。また、クライアント数の増加により通信量が多くなると、データ伝送帯域が増大し、ネットワーク上のボトルネックとなる。このように、クライアント/サーバ方式におけるネットワークの大規模化は、サービス品質の低下や運営コストの増加につながる。
【0005】
もう一つの構成として、P2P(ピアツーピア)方式がある。P2P方式においては、ネットワークに参加する各ノードがピアとなり、他のノードと接続して情報を送受信する。P2Pネットワークで提供できるサービスとして、情報の共有、ストリーミングによるデータ配信、メッセージングなどがある(特許文献1、2参照)。P2P方式においては、情報処理の負荷が各ノードに分散されることや、ネットワーク伝送経路が分散されることから、上記のクライアント/サーバ方式に比べて個々の情報処理装置の規模を小さくでき、かつ、ネットワークの帯域も抑制できる。したがって、サービスへの参加ノード数の増加した時の拡張性に優れている。さらに、サーバとP2P方式のネットワークと組み合わせてさらなる性能向上を図ることも可能である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2006−268844号公報
【特許文献2】特開2010−109976号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、P2P方式のネットワークにおいて、提供されるサービスに参加可能なノード数が制限される場合がある。かかる制限は、主にサービスを提供するシステム側の都合による。例えば、ゲーム機がノードとなり、P2Pネットワークを形成してオンラインで対戦可能とするサービスについて検討する。なおこれ以降、サービスを受ける際に互いに通信して情報を共有するノード群を「セッション」とも呼ぶ。
【0008】
ここで、あるゲーム機を用いたサービスでは、一つのセッションに参加可能なノード数を32台までに制限されているとする。この場合、33台目以降のノードは同じゲームに参加することができず、大人数でのゲームを享受するための支障となる。また、P2P方式の利点の一つである、参加ノード数の増大に対する拡張性を十分に生かせないことになる。
【0009】
本発明は上記の課題に鑑みてなされたものであり、その目的とするところは、P2P方式のネットワークにおいてセッションへの参加ノード数に上限がある場合であっても、当該上限を超えた数のノードで情報共有するための技術を提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本発明は以下の構成を採用する。すなわち、M個(Mは2以上の整数)を上限とする複数個のノードにより形成されるノード群であるセッションを複数個含むネットワークシステムであって、同じセッションに参加しているノード同士は互いに情報を送受信することが可能であり、それぞれのセッションは、複数のセッションに参加しているノードである接続ノードを少なくとも一つ含んでおり、前記接続ノードが情報を中継することにより、異なるセッションに参加しているノード同士で情報が送受信されることを特徴とするネットワークシステムである。
【0011】
このようなネットワークシステムによれば、たとえセッションに参加できるノード数が制限されている場合であっても、接続ノードの中継により、異なるセッションに属するノードの間で情報の送受信が行われる。その結果、上限を超えた数のノードの間で情報の共有が可能になり、P2Pネットワークの利点を多数のユーザが享受することができる。
【0012】
また、上記のネットワークシステムにおいて、前記ネットワークシステムに参加しているノードは、一つの親ノードにM−1個を上限とする子ノードが接続する木構造を形成し、前記セッションは、木構造において上流側に位置する一つの親ノードと、木構造において前記親ノードの下流側に接続する子ノードからなるものであり、前記接続ノードは、当該接続ノードが子ノードとして参加するセッションと、当該接続ノードが親ノードとして参加するセッションとの間で情報を中継するような構成を取ることができる。
このようなネットワークシステムによれば、セッション間の階層構造を単純化することができるので、情報の送受信の方向が明確になる。また、接続ノードによる情報の送受信の回数を抑制することが可能になる。
【0013】
また、ネットワークシステムが、各ノードが同じデータを保持することにより同じ内容を参照できる電子掲示板を提供する場合、前記電子掲示板に書き込みを追加するノードである注目ノードは、書き込みの内容を含む書き込み要求を、同じセッションに参加するノードに送信し、前記注目ノードと同じセッションに参加するノードは、前記注目ノードからの書き込み要求を受信すると、保持するデータに前記書き込みを行い、前記注目ノードと異なるセッションに参加するノードは、前記接続ノードが中継してきた前記データ書き込み要求を受信して、保持するデータに前記書き込みを行うような構成を取ることができる。
このようなネットワークシステムによれば、上限を超えた数のノードによる、追記式の電子掲示板への書き込みや参照が可能になる。
【0014】
また、ネットワークシステムが、同じセッションに参加しているノード同士が行う対戦型ゲームの内容を他のノードに伝える観戦システムを提供しており、前記ネットワークシステムに参加しているノードは表示装置を含む場合に、前記対戦型ゲームを行うノードである注目ノードは、ゲームの対戦の状況に関するパラメータを、同じセッションに参加す
るノードに送信し、前記注目ノードと同じセッションに参加するノードは、前記注目ノードからのパラメータを受信して、ユーザが視聴可能な形式で表示装置に表示し、前記注目ノードと異なるセッションに参加するノードは、前記接続ノードが中継してきた前記パラメータを受信して、ユーザが視聴可能な形式で表示装置に表示するような構成を取ることができる。
このようなネットワークシステムによれば、上限を超えた数のノードによる、対戦型ゲームの観戦システムを実現できる。
【0015】
また、ネットワークシステムが、各ノードが同じ内容の更新可能なデータである同期情報を保持し、いずれかのノードによる更新内容が他のノードにおいて同期されるサービスを提供する場合に、前記ネットワークシステムは、木構造における根ノードを含むセッションである最上位セッションに参加しており、前記同期情報の更新の排他制御を行う調停ノードを含み、前記同期情報を更新するノードである注目ノードは、更新内容を含む更新要求を、前記接続ノードの中継により前記調停ノードに送信し、前記注目ノードからの更新要求を受信した前記調停ノードは、前記ネットワークシステムに参加する各ノードに更新内容を含む更新指示を送信するような構成を取ることができる。
このようなネットワークシステムによれば、調停ノードのみが情報の更新指示を行うことにより排他制御がなされるので、上限を超えた数のノードの間で書き換え可能な情報を共有し、同期が取れた状態にすることができる。
【0016】
また、ネットワークシステムに参加するノードが通常のノードとストリクトノードを含み、当該ストリクトノード同士では直接的に通信を行うことができない場合に、前記通常のノードが前記セッションの親ノードとなるような構成を取ることができる。
このようなネットワークシステムによれば、ストリクトノードの存在により一部のノード間の通信が制約を受ける場合であっても、ネットワークの木構造の上流と下流の情報伝達を保証できる。
【発明の効果】
【0017】
本発明によれば、P2P方式のネットワークにおいてセッションへの参加ノード数に上限がある場合であっても、当該上限を超えた数のノードで情報共有することが可能になる。
【図面の簡単な説明】
【0018】
【図1】本発明の実施例1における掲示板への書き込み要求の伝達を説明する模式図である。
【図2】本発明のノードの構成を説明するブロック図である。
【図3】本発明の実施例1における掲示板への書き込み要求の伝達を説明するフローチャートである。
【図4】本発明の実施例1におけるデータ構造を説明する図である。
【図5】本発明の実施例3における同期情報の更新要求の伝達を説明する模式図である。
【図6】本発明の実施例3における同期情報の更新指示の伝達を説明する模式図である。
【図7】本発明の実施例3における同期情報の更新要求の伝達を説明するフローチャートである。
【図8】本発明の実施例3における同期情報の更新指示の伝達を説明するフローチャートである。
【図9】本発明の実施例3の変形例における同期情報のブロックを説明する図である。
【図10】本発明の実施例4におけるノード間の通信の制限を説明する図である。
【発明を実施するための形態】
【0019】
本発明は情報処理装置である複数のノードが集まってセッションを形成し、互いに通信を行って構成される、ピアツーピア(P2P)方式のネットワークを前提としている。以下、各実施例に共通するノードとセッションの構造について説明する。さらに、複数のセッションの集合であるセッションクラスタについても説明する。セッションクラスタは、本発明における「ネットワークシステム」に相当する。
【0020】
(ノードの説明)
図2は、各ノードの構成を説明するブロック図である。
以下の実施例において、各ノードはほぼ同程度の処理能力を持つコンピュータ等の情報処理装置を想定している。具体的には、家庭用のゲーム機やPCを利用できる。以下の実施例では、ユーザが家庭用のゲーム機を用いて他のユーザと共通のネットワークにログインし、掲示板機能による連絡、ゲームのオンライン対戦や、書き換え可能な情報の共有等を行うシステムを想定している。
【0021】
ノード20は、情報処理部201、記憶部202および通信部203を備える。情報処理部201は情報処理機能を備えるプロセッサである。情報処理部201は、光学ディスクや記憶装置等に格納されたゲームのデータや、ネットワークを経由して取得した他のユーザの行動に関するデータ等に基づいて、ユーザに表示する画像・音声を作成する。情報処理部201はまた、ユーザの操作を受け付けて、ゲームの規定に従った処理を行い、必要に応じてノード20のユーザにフィードバックしたり、他のノードのユーザに情報送信したりする。記憶部202はデータの記憶装置であり、例えばHDD装置やフラッシュメモリを利用できる。
【0022】
通信部203はネットワークを経由して他のノードと情報の送受信を行う通信装置である。ネットワークは他のノードと通信可能なものであれば種類は問わず、ゲームに専用の回線であっても良いし、インターネットのようにオープンな形式でも良い。また有線無線の別も問わない。ここでは、各ノードのネットワーク速度は同程度であるものとする。
【0023】
ノード20には、ユーザインターフェースとして表示装置21と入力装置22が接続されている。表示装置21はユーザに情報を提示するためのディスプレイ装置である。表示装置に加えて、ユーザに音声や振動でゲームの進行を伝える装置を設けても良い。入力装置22はユーザによる操作を受け付ける装置であり、ゲームコントローラやキーボード、マイク等が用いられる。あるいは、ノードが携帯型のゲーム機であれば、ノード本体と表示装置や入力装置が一体となって構成されていても良い。
【0024】
(ネットワーク構成の説明)
図1(a)を用いて、ノードの集合であるセッション、および、セッションの集合であるセッションクラスタの構成例を説明する。
図中の円形は、それぞれがノードを表わす。また、符号111、112、113および114で示される円錐はそれぞれ、セッションを模式的に表わしたものである。基本的には、同じセッションに属するノード同士は相互に情報の送受信が可能であるものとする。
【0025】
セッションに参加できるノードの数は、あらかじめシステムの前提として定められている。この例では、一つのセッションに参加できる上限ノード数は7個である。また、この例では、あるノードが3つ以上のセッションに参加することはないものとしている。ただしこれらの条件は、接続ノードの処理能力やネットワークの帯域に応じて適宜変更できる。
【0026】
あるセッションに参加しているノードは、もう一つ別のセッションに参加することも可能であり、このようなノードを接続ノードと呼ぶ。図中で言えば、ノード102はセッション111と112に、ノード104はセッション112と113に、ノード105はセッション111と114に、それぞれ重複して参加している。したがって、二つのセッションに参加している接続ノードは、一方のセッションの参加ノードから情報を受信することもできるし、当該受信した情報を、もう一方のセッションの参加ノードに送信することもできる。このように接続ノードが情報を中継してセッションをまたがるノード同士での情報の送受信を実現することにより、本発明のセッションクラスタが形成される。
【0027】
以下の実施例では、接続ノードが中継するセッションの間には、木構造における上位と下位の概念がある。図中で言えば、セッション111が最上位セッションであり、これより上位のセッションは存在しない。セッション112とセッション114は、最上位セッションに直に接続する下位セッションである。セッション113は、セッション112のさらに下位に接続している。結局セッションクラスタは、一つの最上位セッションと、それに次々と連なる下位セッションから構成される木構造となっている。このような木構造は、階層構造を単純化でき、情報伝達の方向を明確化できる点で好ましい。特に、ノードの数が増えてくると(例えば1千個〜1万個程度)、階層構造が単純な方が情報の中継回数を少なくできる点で好ましい。
【0028】
ただしこのような木構造は一例であり、セッションを網目状につないだり、循環的に連結させたりする方法でもセッションクラスタは実現できる。
【0029】
なお、図1(a)は模式図であるため、最上位セッション内のノードで下位セッションを持たないものが存在する。しかし、先に最上位セッション内の全てのノードが下位セッションを持ったことを確認してから、更に下位のセッションを設けるように順序を制御しても良い。これにより、セッション間の中継回数を減少させることができる。
【0030】
(セッションの形成)
以下の実施例では、セッションは一つのノードがセッションオーナとなって作成し、他のノードが参加することによって形成される。
すなわち、ユーザがゲーム機(ノード)を操作してオンライン機能を利用しようとした時、ノードはネットワーク上に参加できるセッションがあるかどうかを検索する。この検索方法は任意であるが、例えばゲーム機に、サーバを利用したあるいはアドホック機能による既存のマッチングシステムが存在する場合、それを利用すれば良い。ただしサーバを利用した場合であっても、セッションが形成された後はP2P方式で通信が行われる。セッションオーナとなるノードは、ユーザにとっては通常のゲーム機として機能するが、背後ではセッションへのノードの参加などを管理する。
【0031】
また、セッションクラスタの最上位セッション111には、最上位ノード101が存在する。最上位ノード101は、最上位セッション111のセッションオーナでもある。最上位ノードは木構造の根ノードにあたり、最上位セッションは根ノードとその子ノードからなる。
以下の実施例ではまた、下位セッションのセッションオーナは、上位のセッションとの間の接続ノードとなっている。すなわち、セッションオーナは上位のセッションにメンバとして参加している。
このようにすれば、当該セッションが、最上位セッションから連なる木構造の中に参加していることが保証される。具体的に見ると、図中、セッション112のセッションオーナであるノード102は上位セッション111のメンバでもある。
【0032】
したがって、セッションクラスタ全体でみると、最上位ノードが最上位セッションを作
成し、最上位セッションに参加した各ノードが下位セッションを持つことにより木構造が形成される。言い換えると、あるノードを取りだして親ノードと見た時、そのノードと、そのノードに接続される子ノードが一つのセッションとなる。上位セッションと下位セッションの接続においては、別個に作成されたセッションが所定の方法で接続されても良いし、最上位セッションの参加ノードがセッションを作成し参加者を受け付ける方法でも良い。下位セッションの参加ノードがさらにセッションを作成することで、木構造の枝が成長する。
【0033】
(ノード離脱)
セッションに参加しているノードが、何らかの理由でP2Pネットワークから離脱した場合、そのノードの役割に応じて残りのノードの動作は変わる。ノードの離脱は、ノード間の通信が一定時間以上途絶えたことにより検知できる。
セッションオーナではない通常のノードの離脱であれば、特に必要な動作はないが、セッションの参加者数が上限値よりも少なくなるので、セッションクラスタへの参加を希望するノードをより上位のセッションに参加させることができる。
【0034】
セッションオーナが離脱した場合、セッション内の他のノードが代わりにセッションオーナとなる。新たにセッションオーナになったノードは、上位のセッションとの接続を回復する。どのノードがオーナとなるかは、ノード間の通信によって決定してもよい。あるいは、離脱したセッションオーナが接続ノードとして参加していた上位のセッション内のノードが、当該離脱したノード以外の下位のセッション内のノードの情報を保持している場合、離脱を検知した上位のセッションが指示を出しても良い。
最上位ノードが離脱した場合、最上位セッション内のノードの中から後継を決める。
【0035】
運営者が存在するネットワークの場合、最上位ノードだけは運営者が維持しておくことにより、セッションクラスタの継続性を増すことができる。この場合であっても、処理能力の高いサーバ機を用意する方式よりも維持コストを減らすことができる。
【0036】
<実施例1>
実施例1では、ゲーム機等のノード同士がP2P方式で形成するネットワークにおいてユーザが利用する掲示板システムについて説明する。ここで掲示板とは、BBS(Bulletin Board System)とも呼ばれる電子掲示板を指す。本実施例の掲示板システムは追記型で
あり、各ユーザは情報を書き込んだり、他人の書き込みを読んだり、返信したりすることができる。しかし、書き込みの削除や修正は行われないことを前提とする。かかる掲示板システムを実現するために、本実施例では、特定のサーバを設ける代わりに、セッションクラスタに参加するノードのいずれもが同じコンテンツを保持する方式を取る。
【0037】
(データ構造)
図4(a)は、掲示板のGUIの一例を示す図である。また図4(b)は、掲示板に使用されるデータ構造を示す図である。図4(b)において、各エントリーは掲示板への一つの書き込みに相当する。各エントリーには、書き込みを一意に識別するための個別ID(MSG_ID)、書き込み日時(TIMESTAMP)、書き込み要求したユーザ(USER_ID)、他の書き込みへの返信であるかどうか、および、返信であれば対象の書き込み(REPLY_TO)、書き込み内容(CONTENT)の各フィールドを持つ。このデータはノードの記憶部202に保管される。
ただしこの図に示したデータ構造およびGUIは一例であり、実際には必要に応じて任意に決定することができる。
【0038】
あるノードが掲示板への書き込み要求を行う時は、まず、入力装置22によりユーザからの書き込み内容を受け付ける。続いて、情報処理部201は、各フィールドの内容を埋めた後、あらかじめ定められたプロトコルに従い、通信部203から他のノードに書き込
み要求を送信する。例えば図4(b)の1行目のデータであれば、情報処理部201は、ユーザ名とユーザ自身の通し番号からMSG_IDを生成し、現在時刻からTIMESTAMPを入力し
、他のユーザへの返信ではないのでRESPONSE_TOにNULLを入力し、ユーザが書き込む内容
でCONTENTを埋める。
【0039】
続いて、他のノードは、書き込み要求を通信部203で受信すると、その内容を一つのエントリーとして記憶部202に保管する。そして、情報処理部201は、各フィールドの内容に基づいて、図4(a)のように表示装置21に掲示板を表示する。
【0040】
(構造)
再度、図1(a)を用いて本実施例のセッションクラスタについて述べる。
図中、黒く塗られたノード103は、注目ノードである。注目ノード103は、セッションクラスタの各ノードに対し、掲示板への書き込みを要求する。注目ノード以外のセッションクラスタの構成要素は上述した通りである。
【0041】
(処理の流れ)
図3は、処理の全体的な流れを示すフローチャートである。
ステップS101において、注目ノード103が同じセッション112に参加しているノードに対して、掲示板への書き込み要求を送信する。
【0042】
ステップS102において、書き込み要求を受信したノード(セッション112内の各ノード)が、記憶部202にエントリーを追加し、表示装置21の掲示板GUIを更新する。これにより、セッション112内の各ノードの掲示板に書き込みが追記される。本実施例の場合、図1(b)に網掛けで示したノードがこれに相当する。
【0043】
ステップS103において、要求を受信したノードは、自身がセッション112以外のセッションにも参加しているかどうかを判定する。参加していない場合(S103=NO)、そのノードの処理は終了する。参加している場合(S103=YES)、S104に進む。本実施例の場合、上位のセッション111にも参加しているノード102と、下位のセッション113にも参加しているノード104がYESと判定する。
【0044】
ステップS104において、他のセッションにも参加しているノードは、当該他のセッション内のノードに対して、掲示板への書き込みを要求する。本実施例の場合、ノード102からセッション111内の各ノードに、ノード104からセッション113内の各ノードに書き込み要求がなされる。
【0045】
続いて再度ステップS102に進み、書き込み要求を受信した各ノードが自身の掲示板に追記する。本実施例の場合、図1(c)に網掛けで示したノードの掲示板に書き込みが追記される。
【0046】
本実施例においては、セッション111に参加しているノード105は、他のセッション114にも参加しているので、再度ステップS103においてYESの判定がなされ、セッション114内のノードにも書き込み要求が出される。その要求を受信したセッション114内のノードが書き込みを追記した結果、図1(d)に示すように、セッションクラスタに参加している全てのノードの掲示板に書き込みが行われた状態になる。
【0047】
(効果)
本実施例の方式によれば、セッションへの参加ノード数に上限があるP2Pネットワークにおいて、複数のセッションを一つのセッションクラスタとして扱うことができるようになる。そして、異なるセッションに属するノード間で掲示板のような形式で情報を共有
することが可能となる。これにより、ユーザは自身がどのセッションに参加しているかを意識することなく、ゲームに参加している(セッションクラスタに属する)多数のノード全体を対象として、掲示板への書き込みや返信などを行うことが可能となる。
本実施例の情報送受信の方式は、電子掲示板システムのみではなく、書き換えが起こらない情報を共有するシステム全般に適用可能である。
【0048】
<実施例2>
実施例2では、ゲーム機等のノード同士がP2P方式で形成するネットワークにおける、対戦型ゲームの観戦システムについて説明する。すなわち、セッションクラスタに参加するノードのうちいくつかのノードが対戦型ゲームを行い、他のノードはその模様を観戦するシステムである。
【0049】
(ゲーム内容)
対戦型ゲームの具体的な例について述べる。ここでは、対戦者は2人のユーザであり、それぞれがノード(ゲーム機)を操作する。この例では、図1(a)のセッション111に属するノード102およびノード105が対戦者であるものとする。ゲームの内容は、対戦ユーザのそれぞれに対応する2台の機体がディスプレイに表示され、各ユーザは入力装置を通じて自分の機体を操作し、ゲームのルールが定める所定の条件を満たして対戦相手の撃破を目指すものである。
【0050】
例えばノード102のユーザは、入力装置22から、機体の移動や相手への攻撃の指示を入力する。ノード102の情報処理部201は、指示の内容をパラメータ化した後、所定のプロトコルにしたがって通信部203から対戦相手のノード105に送信する。パラメータの内容は、機体の移動方向や距離、攻撃の手段や方向などである。
【0051】
対戦相手のノード105の情報処理部は、受信したパラメータに基づき、ノード102の指示の内容やタイミングを解析する。そして、ノード105のユーザが入力した指示の内容と比較し、双方の攻撃の成否やダメージの度合いを判定する。この判定結果は、パラメータ化されてノード102にも送信される。したがって、ゲーム開始の時点で通信を行い、互いの機体の位置やダメージの状態などの初期状態を合わせておけば、パラメータをやり取りすることにより、ゲームの現状が対戦者間で共有される。
【0052】
なお、この例で双方のノードが同じセッションに属することとしたのは、セッションをまたがる通信において接続ノードが情報を中継する際に生じるタイムラグを避けるためである。また、双方のノードが最上位セッション111に属することとしたのは、各セッションへの情報伝達時の中継回数を減らすためである。ただし、ゲームの種類、セッションクラスタの規模、ネットワークの速度、および当該ゲームにおける即応性の優先度などを考慮した上で、対戦者を互いに異なるセッションや最上位セッション以外に所属させても構わない。
【0053】
(観戦システム)
本実施例のセッションクラスタの構成は、実施例1で図1(a)を用いて説明したものと同じ構成を取るものとする。かかる観戦システムにおいては、上述したように、対戦者の間でパラメータを次々と送受信することにより、ゲームの最新の状態を共有しながら対戦が行われる。
【0054】
したがって、対戦者以外のノードがこのパラメータを利用すれば、刻々と変化する対戦の現状を把握することができる。対戦者と同じセッション111にあるノードについては、対戦者がセッション内に同報的にパラメータを送信するようにすれば、容易に現状を把握することが可能である。また、対戦者と異なるセッションにあるノードについても、複
数のセッションに参加している接続ノードが受信したパラメータを中継することにより、中継時間分のタイムラグはあるものの、現状を把握することができる。
ここでは2台のゲーム機を用いた対戦型のゲームを例として説明したが、ノードの種類、対戦者の人数、アプリケーションの種類、および、送受信するパラメータの内容などは、P2Pネットワークの目的に応じて任意に設定できることは言うまでもない。
【0055】
(効果)
本実施例の方式によれば、セッションへの参加ノード数に上限があるP2Pネットワークで対戦型ゲームが行われる場合であっても、上限数を超えた数のノードが対戦の状況を把握することが可能となる。
【0056】
(変形例)
本実施例の観戦システムは、単独で用いるだけにとどまらず、実施例1の掲示板システムと組み合わせて利用出来る。すなわち、対戦者間で送受信されるパラメータが接続ノードにより中継されてセッションクラスタ内の各ノードに送信され、対戦の現状を共有するとともに、各ノードが掲示板に書き込んだ内容も中継されて各ノードに表示される、掲示板兼観戦システムである。かかるシステムを用いれば、観戦者が対戦の内容に応じてリアルタイムに感想や応援等を書き込み、情報を共有できる。掲示板のGUIとしては実施例1と同様のウィンドウを用いて、対戦の実況画面の近傍に表示しても良い。あるいは、対戦の実況画面に観戦者の書き込みを重ねて表示しても良い。
【0057】
<実施例3>
実施例3では、ゲーム機等のノード同士がP2P方式で形成するネットワークにおいて、書き換え可能な形で情報を共有する方法について説明する。サーバ/クライアント方式のネットワークであれば、サーバに共有情報を配置して各ノードが書き換え要求を行うようにすれば、排他制御は容易である。一方、P2Pネットワークにおいて書き換え可能な情報を共有するためには、別の方法で排他制御を行う必要がある。
本実施例では、ネットワーク内部に排他制御を担当する「調停ノード」を設けて排他制御を行う方法を説明する。本実施例においても、セッションの参加人数に上限がある場合に、上限値を超えた数のノードでの処理を実現する点は、実施例1、2と共通する。
【0058】
(データ構造)
サーバを用いない本実施例の方式では、情報を共有するといっても、実際に同じメモリ領域にあるデータの構造体などにアクセスして読み書きするわけではない。その代わりに、セッションクラスタ内の各ノードが同じ内容の情報を保持し、同期して書き換えることにより、同じデータを共有しているのと同じ状態にする。以下、このような情報のことを「同期情報」とも記載する。更新に際しては、現在の内容との差分情報ではなく、同期情報の全体を送受信することが、ノード内での整合性を保証できる点で好ましい。
【0059】
(セッションクラスタの構成)
本実施例においても、各ノードの構成は、図2を用いて上で説明したものと同様である。
また、セッションおよびセッションクラスタの構成も、基本的には上で説明したものと同様である。図5が本実施例のセッションおよびセッションクラスタの構成である。符号311、312、313および314で示される円錐はそれぞれセッションを示す。セッション内のノード同士は互いのネットワーク上の位置情報を保持しており、通信可能な状態である。
【0060】
最上位ノード301は、最上位セッション311のセッションオーナである。
本実施例の最上位ノードは、最上位セッション内のノードから1つの調停ノードを選ぶ
ものとする。ここではノード305が調停ノードとなる。調停ノードがP2Pネットワークから離脱した場合、最上位ノードが速やかに次の調停ノードを選択する。
【0061】
本実施例では、セッションクラスタ内に1つの調停ノードが存在する。そして、ノードからの同期情報の更新要求の内容を、各ノードへの更新指示として送信する。その際、複数のノードから更新要求があった場合など、必要があれば排他制御を行う。これにより、最新の情報が明確になる。
【0062】
ノード302は、最上位セッション311および注目ノードを含むセッション312の両方に参加しているノードであり、双方の接続ノードとして機能する。
注目ノード303は、各ノードの情報の更新を要求するノードである。
ノード304は、セッション312および下位セッション313の両方に参加しており、双方の接続ノードとして機能する。このようにセッション311〜314は接続ノードがメッセージを中継することにより接続されており、全体で一つのセッションクラスタを構成していると言える。
【0063】
なお、図5(a)、図5(b)、図6(a)、図6(b)および図6(c)において、網掛けで示したノードは、注目ノードからの更新要求メッセージを受け取ったノードである。また、黒く塗ったノードは、同期情報が更新されたノードである。
【0064】
(更新要求の受付)
図7は、注目ノードからの更新要求を調停ノードが受け付けるまでの流れを示すフローチャートである。図5(a)、図5(b)は、このときのセッションクラスタの様子である。
ステップS301において、注目ノード303が同じセッション312に参加しているノードに対して、更新要求を含むメッセージを送信する。このメッセージには、更新対象の情報と、更新内容が含まれる。このとき、図5(a)に示すように、セッション312に属するノードは更新要求メッセージを保持している。
【0065】
ステップS302において、書き込み要求を受信したノードは、自身が調停ノードかどうかを判定する。ここで、セッション312内の各ノードは調停ノードではない(S302=NO)ので、ステップS303に進む。
【0066】
ステップS303において、調停ノードでないと判断されたノードは、自身が上位セッションにも参加しているかどうかを判定する。この処理は、上位セッションがなくなるまで、すなわち最上位セッションに到達するまで繰り返される。本実施例では、ノード302が上位のセッション311にも参加している(S303=YES)ので、ステップS304に進む。一方、ノード302以外のノードは上位セッションに参加していない(S303=NO)ので、処理を終了する。
なお、ここで上位セッションへの参加の有無のみ判定し、下位セッションについて判定していないのは、本実施例においては調停ノードを最上位セッションに配置したためである。
【0067】
ステップS304において、ノード302は、上位のセッション311内のノードに更新要求を送信する。このとき、図5(b)に示すように、セッション311および312に属するノードは更新要求メッセージを保持している。ただし、S303の後で、ノード302以外のノードは更新要求メッセージを破棄しても構わない。
続いて、再度ステップS302の判定が行われる。ここで、ノード305は、最上位セッション311に属する調停ノードである(S302=YES)ため、更新要求の制御処理に進む。
【0068】
(更新指示の反映)
図8は、更新要求を受け付けた調停ノードが、セッションクラスタ内の各ノードに対して同期情報の更新指示を行う際のフローチャートである。図6(a)、図6(b)および図6(c)は、このときのセッションクラスタの様子である。
【0069】
ステップS401において、調停ノード305が、自身の同期情報を更新するとともに、自身が参加しているセッション(本実施例ではセッション311および314)内に更新指示のメッセージを送信する。このときの様子を図6(a)に示す。
このステップで調停ノードが複数のノードからの更新要求を受け付けた場合、要求を受け付けた順序が早い方を選択する等の排他制御を行う。この場合、もう片方のノードが、自身の更新要求が受け付けられなかったことを知るために、タイムアウトを検知する方法を取ることができる。すなわち、更新要求を出してから一定時間が経過しても要求内容に従った更新指示が受信できない場合、更新が失敗したと認識できる。
【0070】
ステップS402において、更新指示を受信したノードは、その内容にしたがって、記憶部202に保管されている同期情報を更新する。このときの様子を図6(b)に示す。
【0071】
ステップS403において、同期情報を更新したノードは、自身が他のセッション(更新指示を送信してきたノードとは別のセッション)にも参加しているかどうかを判定する。参加していない場合(S403=NO)、そのノードの処理は終了する。参加している場合(S403=YES)、S404に進む。本実施例の場合、セッション312にも参加しているノード302が該当する。
【0072】
ステップS404において、他のセッションにも参加しているノードは、当該他のセッション内のノードに対して更新指示のメッセージを送信する。本実施例の場合、ノード302からセッション312内の各ノードに更新が指示される。
【0073】
以下同様に、下位のセッションとの接続ノードが更新指示を伝達することにより、セッションクラスタ内のすべてのノードの同期情報が更新される。最終的に、図6(c)に示すように、セッション内のすべてのノードの同期情報が、注目ノード303からの要求にしたがって更新される。
【0074】
(効果)
本実施例の方式によれば、セッションへの参加ノード数に上限があるP2Pネットワークにおいて、複数のセッションを一つのセッションクラスタとして扱い、ノード間で情報を共有したり、同期して更新したりすることが可能となる。さらに、かかる同期情報を用いて各ノードが恊働して情報処理を行うこともできる。
【0075】
なお、本実施例では、調停ノードは最上位セッションにあるものとしたので、更新要求や更新指示のメッセージが流れる方向を単純化することが可能となっているが、必ずしもこの必要はない。
【0076】
また、セッションクラスタ内の適切な場所に、最新の同期情報をバックアップするノードを設けても良い。そして、調停ノードからの更新指示をまずバックアップノードに反映し、その後各ノードに更新指示を出すようにする。これにより、調停ノードがセッションクラスタから離脱したときなどに、同期情報を復元することができる。バックアップノードは調停ノードとネットワーク上の近い位置(例えば、同じセッション内)にあることが好ましい。さらに、このようなバックアップを複数の世代にわたって保存することにより、同期情報のロールバックに利用することもできる。
【0077】
(変形例1)
上の記載では、図7のフローチャートのステップS301において、注目ノード303は、セッション312内の全てのノードに更新要求を送信している。しかし、セッション312から上位のセッションへの接続ノードはノード302だとあらかじめ分かっていれば、ノード302にのみ更新要求を送信すれば良い。
【0078】
また上の記載では、接続ノード302は、最上位セッション311内の全てのノードに更新要求を中継している。しかし、最上位セッション311内のノードが、自身は最上位セッションにいること、および、調停ノードはノード305だということをあらかじめ分かっていれば、ノード305にのみ更新要求を中継すれば良い。どのノードが調停ノードであるかは、最上位ノードから各メンバへの通知により知ることができる。
このような本変形例の構成は、セッション内の全ノードに同報通信をする場合に比べて、情報伝達時のネットワーク負荷を抑制することができる点で好ましい。
【0079】
(変形例2)
上の記載では調停ノードは一つだけとなっている。しかしこの場合、全てのノードからの更新要求を一つのノードで処理するため、ノードの処理能力を超えて処理が遅延する可能性がある。また、ネットワークの負荷が一つの調停ノードに集中する。さらに、複数のノードからの更新要求が衝突する可能性が高まり、排他制御が行われる結果、更新が実現されない確率が増える。
【0080】
そこで、図9に示すように、共有情報を複数のブロックに分割し、それぞれのブロックの排他制御を別々の調停ノードに担当させることにより、処理の負担を分散させることが考えられる。
共有情報をブロックに分割する基準としては、データの内容、サイズ、使用目的など、状況に応じて定めることができる。また分割する際には、最上位ノードが各ブロックの内容および排他制御を担当する調停ノードを指定すれば良い。また、ブロックのデータサイズを固定長とした場合、情報が追加されてサイズを超えそうな時には、最上位ノードが監視して、適宜ブロックを分割すれば良い。また、一つの調停ノードが複数のブロックを管理しても構わない。
【0081】
<実施例4>
実施例4では、P2Pネットワーク内の一部のノードが、通信を制限されている場合について述べる。
一般に、ホームネットワークやオフィスネットワークを構築してゲーム機などのノードをインターネットに接続する場合、NAT(Network Address Translation)機能を用い
ることがある。このとき、NATの設定によっては、ノード間の通信が不可能となる。
【0082】
設定の一例を図10に示す。本実施例では、ノードにはオープンノードとストリクトノードの2種類があるものとする。オープンノード同士、または、オープンノードとストリクトノードの間では通信が可能であり、ストリクトノード同士では通信が不可能である。
【0083】
したがって、一つのセッション内において、セッションオーナはオープンノードであることが好ましい。もしストリクトノードがオーナになると、他のストリクトノードがセッションに参加できなくなる。また、セッションオーナがオープンノードであれば、セッション内の他のノードからのメッセージ(掲示板への書き込み要求や同期情報の更新要求)受信や、他のノードへのメッセージ(同期情報の更新指示)送信が可能であることを保証できる。
【0084】
また、セッションクラスタ全体においては、オープンノードはなるべく上位の(最上位により近い)セッションに参加し、ストリクトノードはなるべく下位のセッションに参加するよう制御することが好ましい。これにより、セッションクラスタの階層を浅くし、情報伝達のステップ数を減らすことができる。
本実施例の方式によれば、ネットワーク上の事情によりノード間の通信が制限される場合であっても、セッションクラスタ内の情報送受信の性能への影響を抑えることができる。
【符号の説明】
【0085】
101:最上位ノード
102,104,105:接続ノード
103:注目ノード
111:最上位セッション
112〜114:下位セッション

【特許請求の範囲】
【請求項1】
M個(Mは2以上の整数)を上限とする複数個のノードにより形成されるノード群であるセッションを複数個含むネットワークシステムであって、
同じセッションに参加しているノード同士は互いに情報を送受信することが可能であり、
それぞれのセッションは、複数のセッションに参加しているノードである接続ノードを少なくとも一つ含んでおり、
前記接続ノードが情報を中継することにより、異なるセッションに参加しているノード同士で情報が送受信される
ことを特徴とするネットワークシステム。
【請求項2】
前記ネットワークシステムに参加しているノードは、一つの親ノードにM−1個を上限とする子ノードが接続する木構造を形成し、
前記セッションは、木構造において上流側に位置する一つの親ノードと、木構造において前記親ノードの下流側に接続する子ノードからなるものであり、
前記接続ノードは、当該接続ノードが子ノードとして参加するセッションと、当該接続ノードが親ノードとして参加するセッションとの間で情報を中継するものである
ことを特徴とする請求項1に記載のネットワークシステム。
【請求項3】
前記ネットワークシステムは、各ノードが同じデータを保持することにより同じ内容を参照できる電子掲示板を提供するものであり、
前記電子掲示板に書き込みを追加するノードである注目ノードは、書き込みの内容を含む書き込み要求を、同じセッションに参加するノードに送信し、
前記注目ノードと同じセッションに参加するノードは、前記注目ノードからの書き込み要求を受信すると、保持するデータに前記書き込みを行い、
前記注目ノードと異なるセッションに参加するノードは、前記接続ノードが中継してきた前記データ書き込み要求を受信して、保持するデータに前記書き込みを行う
ことを特徴とする請求項2に記載のネットワークシステム。
【請求項4】
前記ネットワークシステムは、同じセッションに参加しているノード同士が行う対戦型ゲームの内容を他のノードに伝える観戦システムを提供するものであり、
前記ネットワークシステムに参加しているノードは表示装置を含み、
前記対戦型ゲームを行うノードである注目ノードは、ゲームの対戦の状況に関するパラメータを、同じセッションに参加するノードに送信し、
前記注目ノードと同じセッションに参加するノードは、前記注目ノードからのパラメータを受信して、ユーザが視聴可能な形式で表示装置に表示し、
前記注目ノードと異なるセッションに参加するノードは、前記接続ノードが中継してきた前記パラメータを受信して、ユーザが視聴可能な形式で表示装置に表示する
ことを特徴とする請求項2に記載のネットワークシステム。
【請求項5】
前記ネットワークシステムは、各ノードが同じ内容の更新可能なデータである同期情報を保持し、いずれかのノードによる更新内容が他のノードにおいて同期されるサービスを提供するものであり、
前記ネットワークシステムは、木構造における根ノードを含むセッションである最上位セッションに参加しており、前記同期情報の更新の排他制御を行う調停ノードを含み、
前記同期情報を更新するノードである注目ノードは、更新内容を含む更新要求を、前記接続ノードの中継により前記調停ノードに送信し、
前記注目ノードからの更新要求を受信した前記調停ノードは、前記ネットワークシステムに参加する各ノードに更新内容を含む更新指示を送信する
ことを特徴とする請求項2に記載のネットワークシステム。
【請求項6】
前記ネットワークシステムに参加するノードが通常のノードとストリクトノードを含み、当該ストリクトノード同士では直接的に通信を行うことができない場合に、
前記通常のノードが前記セッションの親ノードとなる
ことを特徴とする請求項2ないし5のいずれか1項に記載のネットワークシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−88960(P2012−88960A)
【公開日】平成24年5月10日(2012.5.10)
【国際特許分類】
【出願番号】特願2010−235548(P2010−235548)
【出願日】平成22年10月20日(2010.10.20)
【出願人】(399113905)株式会社フロム・ソフトウェア (3)
【Fターム(参考)】