JP3984643B2 - 同期通信方法および同期通信装置 - Google Patents

同期通信方法および同期通信装置 Download PDF

Info

Publication number
JP3984643B2
JP3984643B2 JP2006542940A JP2006542940A JP3984643B2 JP 3984643 B2 JP3984643 B2 JP 3984643B2 JP 2006542940 A JP2006542940 A JP 2006542940A JP 2006542940 A JP2006542940 A JP 2006542940A JP 3984643 B2 JP3984643 B2 JP 3984643B2
Authority
JP
Japan
Prior art keywords
synchronization
input information
information
state
communication
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.)
Expired - Fee Related
Application number
JP2006542940A
Other languages
English (en)
Other versions
JPWO2006043473A1 (ja
Inventor
始 大歳
純 市成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MEDIASEEK Inc
Original Assignee
MEDIASEEK Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MEDIASEEK Inc filed Critical MEDIASEEK Inc
Application granted granted Critical
Publication of JP3984643B2 publication Critical patent/JP3984643B2/ja
Publication of JPWO2006043473A1 publication Critical patent/JPWO2006043473A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • A63F13/12
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/534Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Description

本発明は、通信回線により接続された複数の情報処理端末間で同期を取りながら通信処理を行う同期通信装置及び同期通信方法に関する。
従来の同期通信装置としては、例えば、特開平02−041190号公報に記載されているようなファミコン通信システムが知られている。このファミコン通信システムは、通信回線を介して接続された少なくとも2台のファミコン間で通信を行うものであり、各ファミコンの入力部から入力されたデータの時間的ずれを補正する手段を備え、繰り返し発生する番号コードをキースキャンパルスに同期させて相手側装置に送出し、相手側では番号コードを用いて時間的ずれを補正するように構成されている。
図16は、上記ファミコン通信システムにおけるデータのタイミングを説明するためのタイミングチャートであり、図1を参照して以下にこのファミコン通信システムの動作を説明する。
図16において(a)及び(b)は、各ファミコンより発生するキースキャンパルスを示しており、このキースキャンパルス(a)、(b)によりキーパッドの状態がデータとしてファミコンに取り込まれる。通信アダプタを用いると、(c)、(d)に示すように、相手側のモデムにデータを送るに際して時刻t1〜t2、t3〜t4の間の時間に相当する遅れが生じる。2つのファミコンで同時にゲームを行うには、図中m及びnで示す一対のデータの順番が正しくファミコンに送られることが必要である。即ち、mのパルスの時に取り込んだプレイヤーのデータと、nのパルスの時に取り込んだ相手のデータとが正しい順序でそれぞれのファミコンのデータとして入力されることが必要である。
通信の遅れにより図16ではn+3のパルスの時に一方から他方のファミコンにデータが入力され、m+3のパルスの時に更に、他方から一方のファミコンにデータが入力される。例えば、m、nのタイミングで取り込んだデータをm+3、n+3のタイミングまで送出を遅らせると、双方のファミコンに送られるデータが3パルス分ずつ遅れた一対のものとなる。
双方のファミコンの電源が同時にONにされるとは限らないので、mとnとの時間差が最高1パルス変化する。このため、Nパルスになったとすると、図1に示されるように、mの時のデータは、N+2の時には相手側に送られる。しかし、Nの時のデータは、m+4になるまで届くことができない。このままの状態でファミコンにデータを送出すると、必要なデータが必要な時に受け取れなくなり、2つのファミコンが別々の動作をしてしまう。上記から明らかなように、ファミコン間において生じる遅れは、データ通信の遅れと、キースキャンパルスの遅れの和となる。
ここで、データ通信の遅れは、ハード及び通信速度に依存するので、比較的一定している。しかし、キースキャンパルスの遅れは、機器を動作させるタイミングにより変化すると共に、2台の機器におけるキースキャンパルスの位相差により次第に変化する。これを補正するために、キースキャンパルスに同期させて繰り返し発生する番号コードを相手側に送出する。番号コードを受け取った側では、自分のデータをこの番号コードの内容から同期させて送出する。
遅れを検出し、同期させてデータを送出するには、相手の番号コードと自分の番号コードとを記憶させ、タイマーを動作させる。次に自分のスキャンパルスでタイマーを停止させると、相手のデータの入力時から自分のスキャンパルスの発生時までの遅れが測定される。この動作を数回行わせて平均値を求める。この平均値と予めセットされた数値を比較することにより遅れが正しく検出される。
可変シフトレジスタは、自分が取り込んだキーデータを数パルス分遅らせるために必要なものであり、例えば、mのパルスのデータをm+3でファミコンに送出する場合、3段のシフトレジスタが必要となる。この遅らせるパルス数は、変動するキースキャンパルスに追従させるために可変とすることが必要になる。
要するに、上記ファミコン通信システムは、N同期目に入力された情報を、N+m(但しm>0の整数)同期目の情報処理に用いることにより、通信の遅れによる処理速度の低下を防ぐように構成されている。
しかしながら、上述したファミコン通信システムでは、所定時間内に相手から入力情報を受信できなかった場合、情報を受信するまでの間、待機することを必要とするために、同期処理の一時停止を引き起こし、ファミコン通信システムを利用する利用者に違和感を与える。特にインターネット等の通信品質が保証されていない通信回線を用いる場合には数秒おきに一時停止を引き起こす場合があり、システムの商品価値を著しく損なうことになるという問題点があった。
本発明は、上記従来のファミコン通信システムにおける問題点に鑑みてなされたものであり、所定時間内に相手からの入力情報を受信できなかった場合であっても、同期処理を一時停止することなく、同期処理を進めることができる同期通信方法及び同期通信装置を提供することをその課題とするとする。
本発明の上記課題は、通信回線に接続された複数の情報端末間で同期を取りながら通信処理を行う同期通信装置であって、前記通信回路に接続された前記複数の情報端末が正常の通信状態にあるかどうかを判断する判断手段と、前記判断手段の結果により、前記複数の情報端末の少なくとも一つの情報端末の通信状態に異常が発生して該複数の情報端末の他の情報端末と同期が取れていないと判断された場合には、同期が取れない該同期目の直前の同期目の入力情報をみなし入力情報として設定する入力情報設定手段と、前記入力情報設定手段により設定されたみなし入力情報に基づいて所定の演算処理を実行して前記同期が取れない同期目の同期状態を求める演算手段とを備え、前記判断手段が前記異常が発生した情報端末の通信状態が回復して前記複数の情報端末の他の情報端末と同期が取れると判断するまで、前記各処理を繰り返すことを特徴とする同期通信装置によって達成される。
本発明の上記課題は、通信回線に接続された複数の情報端末間で同期を取りながら通信処理を行う同期通信方法であって、前記通信回路に接続された前記複数の情報端末が正常の通信状態にあるかどうかを判断する段階と、前記判断の結果により、前記複数の情報端末の少なくとも一つの情報端末の通信状態に異常が発生して該複数の情報端末の他の情報端末と同期が取れていないと判断された場合には、同期が取れない該同期目の直前の同期目の入力情報をみなし入力情報として設定する段階と、前記設定されたみなし入力情報に基づいて所定の演算処理を実行して前記同期が取れない同期目の同期状態を求める段階と、前記異常が発生した情報端末の通信状態が回復して前記複数の情報端末の他の情報端末と同期が取れるまで前記各段階を繰り返す段階とを具備することを特徴とする同期通信方法によって達成される。
本発明の同期通信装置によれば、上記構成により、所定時間内に相手からの入力情報を受信できなくても同期処理を実行することができるので、同期処理を一時停止することなく、同期処理を進めることができるという効果を奏する。
同様に、本発明の同期通信方法によれば、上記段階により、所定時間内に相手からの入力情報を受信できなくても同期処理を実行することができるので、同期処理を一時停止することなく、同期処理を進めることができるという効果を奏する。
本発明の同期通信装置では、前記演算手段は、前記所定の演算処理として、前記同期が取れない同期目におけるゲームの同期状態を得るための演算処理を実行するように構成してもよい。
本発明の同期通信装置では、前記演算手段は、前記情報端末を、同期状態をバックアップしたものに戻すように構成してもよい。
本発明の同期通信装置では、前記入力情報をみなし入力情報として設定し続けても、前記判断手段が全ての前記情報端末を同一の同期状態に揃えることが不可能と判断した場合には、前記演算手段は、前記情報端末を、同期状態をバックアップしたものに戻すように構成してもよい。
本発明の同期通信装置では、前記演算手段は、前記みなし入力情報を用いている間に実際の入力情報を保存し、通常の同期処理が再開されたときに、入力情報として該保存した情報を任意の数だけ飛ばして用いるように構成してもよい。
本発明の同期通信装置では、前記演算処理は、ゲームキャラクタの位置の計算、当り判定、得点計算のいずれか一つまたは二つ以上の組合せであってもよい。
本発明の同期通信装置では、前記入力情報設定手段は、同期が取れない同期目の入力情報の代わりに、同期が取れない該同期目より前の任意の同期目の入力情報をみなし入力情報として設定するように構成してもよい。
本発明の同期通信方法では、前記演算する段階は、前記所定の演算処理として、前記同期が取れない同期目におけるゲームの同期状態を得るための演算処理を実行するように構成してもよい。
本発明の同期通信方法では、前記演算する段階は、前記情報端末を、同期状態をバックアップしたものに戻すように構成してもよい。
本発明の同期通信方法では、前記入力情報をみなし入力情報として設定し続けても、前記判断する段階で全ての前記情報端末を同一の同期状態に揃えることが不可能と判断した場合には、前記演算する段階手段は、前記情報端末を、同期状態をバックアップしたものに戻すように構成してもよい。
本発明の同期通信方法では、前記演算する段階は、前記みなし入力情報を用いている間に実際の入力情報を保存し、通常の同期処理が再開されたときに、入力情報として該保存した情報を任意の数だけ飛ばして用いるように構成してもよい。
本発明の同期通信方法では、前記演算処理は、ゲームキャラクタの位置の計算、当り判定、得点計算のいずれか一つまたは二つ以上の組合せであってもよい。
本発明の同期通信方法では、前記入力情報を設定する段階は、同期が取れない同期目の入力情報の代わりに、同期が取れない該同期目より前の任意の同期目の入力情報をみなし入力情報として設定するように構成してもよい。
以下、添付した図面を参照して、本発明による同期通信方法及び同期通信装置の好適な実施形態を説明する。
図1は、本発明による同期通信装置の一実施形態である複数の利用者が同時に参加する形式の同期通信ゲームシステムの構成を示す概略ブロック図である。
図1に示す同期通信ゲームシステム1は、同期通信処理を行うためにサーバとしての役割を果たす判断手段である同期サーバ10と、同期サーバ10及び情報端末30に接続されかつそれらの間のデータ通信を行う通信回線である通信ネットワーク20と、所定のデータを入出力するように構成されかつゲーム参加者側に配置された二つの情報端末30a、30bを含む情報端末30とにより構成されている。
本実施例では、情報端末30は、二つの情報端末30a、30bにより構成されているが、本発明は、これらに限定されるものではなく、三つ以上の情報端末30a〜30N(N=c〜z)により構成されてもよい。ここでは簡略化するために、二つの端末装置30a、30bの場合について説明する。
図1の同期通信ゲームシステム1は、ゲーム参加者が通信ネットワーク20を介して各自の情報端末30a、30bを同期サーバ10に接続することより、お互いの情報を相互に交換することができるように構成されている。
情報端末30a、30bは、入力情報設定手段の一部を構成する外部情報入力部40a、40bと、同期通信処理を行うためにクライアントとしての役割を果たす入力情報設定手段の一部を構成する同期クライアント50a、50bと、演算手段である演算部60a、60bと、情報出力部70a、70bとにより構成されている。
以下、同期クライアント50a、50bをまとめて呼ぶ場合には、単に同期クライアント50と表す。同様に、演算部60a、60bについても、まとめて呼ぶ場合には、以下単に演算部60と表す。
また、同期クライアント50a、演算部50aに関わるステップについては、SXXXXa(XXXXは任意の数値)と表し、同期クライアント50b、演算部50bに関わるステップについてはSXXXXb(XXXXは任意の数値)と表すが、両者を区別せずまとめて呼ぶ場合には、末尾のaやbを省いてSXXXX(XXXXは任意の数値)と表すものとする。
次に、図2を参照して、図1に示す同期通信ゲームシステム1で実際にゲームが行われるときの動作を説明する。前提として、今からN回目の同期処理を実行するものとする。
まず、情報端末30aの同期クライアント50aは、ゲーム参加者によって外部情報入力部40aに入力されている入力情報a_Nを取得する(ステップS0000a)。
同期クライアント50aは、入力情報a_Nを同期サーバ10へ送信する(ステップS0001a)。入力情報a_Nを受信した同期サーバ10は、入力情報a_Nを全ての対戦相手の同期クライアント50、本実施例では同期クライアント50bのみ、へ送信する(ステップS0002a)。
同様に、情報端末30bの同期クライアント50bは、ゲーム参加者によって外部情報入力部50bに入力されている入力情報b_Nを取得し(ステップS0000b)、同期サーバ10へ送信する(ステップS0001b)。同期サーバ10によって受信された入力情報b_Nは、同期クライアント50aへと送信される(ステップS0002b)。
同期クライアント50aは、同期サーバ10から送信された入力情報b_Nを受信し(ステップS0003a)、N同期目の入力情報、即ち入力情報a_N、入力情報b_N(以下、入力情報INa_Nと表する)を揃えることができる。
同様に、同期クライアント50bは、入力情報a_Nを受信し(ステップS0003b)、N同期目の入力情報、即ち入力情報a_N、入力情報b_N(以下、入力情報INb_Nと表する)を揃えることができる。ここで、入力情報INa_N=入力情報INb_Nであるが、このように両同期クライアント50a、50bにおけるN同期目の入力情報が等しい場合、以下、代表して入力情報IN_Nと表する。
このようにして、N回目の同期処理を行うために必要な全情報端末30a、30bの入力情報IN_Nを、それぞれの同期クライアント50a、50bで共有できる。
次いで、同期クライアント50aは、入力情報IN_Nを演算部60aへ譲渡する(ステップS0004a)。演算部60aは、入力情報IN_Nと、情報端末30aにおける直前のゲームの同期状態Sa_N−1を元に演算処理を実行し、N同期目のゲームの同期状態Sa_Nを算出する(ステップS0005a)。同期状態Sa_Nは、情報出力部70aによって表示される。
同様に、同期クライアント50bでも入力情報IN_Nと、情報端末30bにおける直前のゲームの同期状態Sb_N−1を元に演算処理を実行し、N同期目のゲームの同期状態Sb_Nが算出される。同期状態Sb_Nは、情報出力部70bによって表示される。
ここで、同期状態Sa_N−1=同期状態Sb_N−1ならば、入力情報INa_N=入力情報INb_Nであるため、同期状態Sa_N=同期状態Sb_Nとなる(このようにN同期目の同期状態が等しい場合、以下、代表して同期状態S_Nと表する)。
このようにして情報端末30a、30bは、同一の入力情報を共有することで同一の同期状態を共有できる。
同期クライアント50a、50bは、同期回数NをN+1に進め次の同期処理(ステップS0000a〜、ステップS0000b〜)を同様に繰り返す。両方の同期クライアント50a、50bにおいて同一の入力情報が共有され続ける限り、同一の同期状態が共有される。
次に、図3を用いてゲームの途中で、同期クライアント50aと同期サーバ10との間の通信状態が一時的に悪くなった場合の動作を説明する。
ここでは同期クライアント50aと同期サーバ10との間の通信が悪くなった場合を想定する。この時、同期クライアント50aは、所定時間内に入力情報a_Nを同期サーバ10へ送信することができない(ステップS0101a)。
従来の技術を用いた場合には、当然相手からの情報を受信することもできず、通信状態が回復して相手からの情報を受信するまで同期処理を一時停止していた。このためゲームの途中で突然画面の動きが止まり、ゲームユーザに違和感を与え、ゲームの商品価値を著しく下げる原因ともなっていた。以下に続く本実施例の説明で、このような一時停止を起こすことなく処理を進める方法を示す。
これ以降の処理は、上述した一時停止を防止する処理になるが、この間も同期クライアント50aは、サーバ10へ入力情報a_Nの送信が成功するまで再送処理を継続することに注意する。また、この時の同期回数Nを一般的に用いられる同期回数Nと区別するために以下Wと表記する。
同期クライアント50aは、所定時間内に入力情報a_Wを送信することができないため、通信状態が悪くなっていると判断する。このため、これ以降は、通信状態の悪化によって同期処理が一時停止されるのを回避する処理を行う。具体的には、まず、W−1同期目までは正常に処理できたことを同期サーバ10へ送信しようとする(ステップS0107a)。実際には通信状態が悪いため、送信できるまで再送処理を継続する(ステップS0107a)が、前記同様、これと並行して以下の処理を行う。また、以下特に断りがない限りは、通信状態が悪いために情報の送受信ができず再送処理(或いは受信待ち処理)を行う場合は、その再送処理等と並行してそれ以降の処理を行うものとする。
一方、同期クライアント50bは、入力情報b_Wを同期サーバ10へ送信する(ステップS0101b)。同期サーバ10は、受信した入力情報b_Wを同期クライアント50aへ送信する。実際には通信状態が悪いため、送信できるまで再送処理を継続する(ステップS0102b)。同期クライアント50bは、情報端末30a側の通信状態が悪いため所定時間内に入力情報a_Wを受信することができない(ステップS0103b)。同期クライアント50bは、通信状態が悪化していると判断し、前記同様、受信待ち状態を保ちつつ一時停止を回避する処理に入る。同期クライアント50bは、W−1同期目まで正常に処理できたことを同期サーバ10へ送信する(ステップS0104b)。
同期サーバ10は、同期クライアント50bがW−1同期目までは正常に処理できたことを受信する(ステップS0105b)。
次に、図4を参照して、図3に続く動作を説明する。同期クライアント50aは、演算部60aに通信状態が悪化していることを通知する(ステップS0201a)。演算部60aは、現在保持している直前のゲームの同期状態S_W−1をバックアップする(ステップS0202a)。
同期クライアント50aは、通信状態の悪化のため入力情報INa_Wを作成できない。このため、代わりに直前の入力情報(=INa_W−1=IN_W−1)を「みなし入力情報」として演算部60aへ渡す(ステップS0203a)。演算部60aは、正規の入力情報の代わりに受け取ったみなし入力情報IN_W−1を元に演算処理を実行し、W同期目におけるゲームの同期状態を算出する(ステップS0204a)。ここで算出された同期状態Sa_Wは、「みなし入力情報」を用いて算出されているため情報端末30a側における「仮の」値となる。同期クライアント50aは、同期回数WをW+1に進めて次の仮同期処理(ステップS0203a〜)を同様に繰り返す。つまり、みなし入力情報IN_W−1を用いて「仮の」N同期目の同期状態Sa_Nを算出することを繰り返す。このようにして、一時的に通信状態が悪化しても、同期処理を一時停止することなく続けることができる。
同期クライアント50bにおいても、同様に、通信状態の悪化を通知し(ステップS0201b)、同期状態のバックアップ(ステップS0202b)を行い、「みなし入力情報」を用いて仮の同期処理を繰り返す(ステップS0203b〜)。これらの繰り返しは通信状態が回復するまで行われる。
以下、図5〜図8を参照して、通信状態が回復した後の場合の動作を説明する。
通信状態が回復したことによって、図3のステップS0101aにおいて送信された「情報端末30a側においてW−1同期目まで正常に処理できた」という情報が同期サーバ10に到達する(ステップS0301a)。
同期サーバ10は、全ての同期クライアント50で正常に行われた同期回数が同一回数であるかどうかを判断する(ステップS0302)。本実施例の場合は、全ての同期クライアント50においてW−1同期目まで正常に同期処理が行われ、W同期目からは「みなし入力」を用いた仮の同期処理を行っており、正常に行われた同期回数が一致するものとする。このような場合には、全ての同期クライアント50に対して同一の入力情報が渡され続けてきたこと(つまり、入力情報INa_N=入力情報INb_Nであること)が保証され、同期状態が同一であること(つまり、同期状態Sa_N=同期状態Sb_Nであること)が保証される。
このため、全ての同期クライアント50において、同期回数を同一に揃えた後で、通常の同期処理を再開すれば、全同期クライアント50における同期状態は同一に保たれることになる。このため、以降の処理において全同期クライアント50において同期回数を同一に揃えることを目指す。
同期サーバ10は、全ての同期クライアント50に通信が回復したということを伝える(ステップS0303)。この後、同期クライアント50と同期サーバ10との間で一回の通信を行うが(具体的には、ステップS0305〜ステップS0505まで)、その通信を行う間に必要な同期処理回数を通知する(ステップS0303)。この回数は、これまでサーバ、クライアント間で行われてきた通信時間に基づいて概算される。例えば、1回の通信に70msかかり、1回の同期処理に32msかかるとすれば、70÷32=2余り6であり、必要な同期回数は2+1=3回となる。本実施例の場合、K回とする。
更に、相手の同期クライアント50がどの回まで正常に同期処理を行ったかということ、及び相手の同期クライアント50がどの回まで自己の同期情報を送信したかということを送信する(ステップS0303)。
同期サーバ10から通信回復の通知を受けた時点で、同期クライアント50aにおいて成された仮同期処理の回数をM回とする。同様に同期クライアント50bにおいて成された仮同期処理の回数をL回とする。同期クライアント50aは、同期サーバ10より通信回復通知を受信し(ステップS0304a)、現在の処理を終えている同期回数(=W+M−1)を同期サーバ10へ送り返す(ステップS0305a)。同様に、同期クライアント50bも同期サーバ10より通信回復を受信し(ステップS0304b)、現在処理を終えている同期回数(=W+L−1)を同期サーバ10へ送り返す(ステップS0305b)。同期サーバ10は、全てのクライアント50から現在処理を終了している同期回数を受信する(ステップS0306)。
また、各同期クライアント50は、ステップS0304において相手がどの回まで各自の同期情報を送信したかを受信している。このため、各同期クライアント50は、相手が自分宛に送信した情報でまだ自分が受信していないものがいくつあるかを知ることができる。具体的には、同期クライアント50aは、入力情報b_Wを受信しておらず、同期クライアント50bは、入力情報a_Wを受信していない。通信状態が回復したことで、同期クライアント50aは、入力情報b_Wを受信することができる(ステップS0403a)。同様に、通信状態が回復したことで、同期サーバ10は、入力情報a_Wを受信することができる(ステップS0402a)。
入力情報a_Wを受信した同期サーバ10は、入力情報a_Wを同期クライアント50bへ送信する(ステップS0402a)。同期クライアント50bは、入力情報a_Wを受信する(ステップS0403b)。また、これらの各処理が終わるのを待つ必要もないため、以下の処理が並行して行われることに注意する。またここで受信されたa_W、b_Wは保持しておく必要がないため破棄される。
同期クライアント50aは、同期サーバ10からの通知(ステップS0505a)があるまでは、みなし入力情報INaを用いて仮同期処理を実行、表示し続け(ステップS0501a、S0502a)、同期処理が一時停止するのを防ぐ。同期クライアント50bにおいても同様である(ステップS0501b、ステップS0502b)。この間、同期サーバ10側においては、次に述べる処理が並行して行われることになる。
同期サーバ10は、受信した同期回数の差(=L−M)を無くすためには、これ以降、各同期クライアント50がどの程度の速度で何回の同期処理を行えばいいかを算出する(ステップS0503)。例えば、同期クライアント50aによって送信された回数が1036回であり、同期クライアント50bによって送信された回数が1039回である場合、その差は3回である。同期クライアント50aにおいて、1同期処理を32msの速度で、9回行う一方、同期クライアント50bにおいて、1同期処理を48msの速度で、6回行えば、両同期クライアント50における同期回数と同期状態が、同一時刻(=288ms後)に最終的に一致する。
同期サーバ10は、算出した同期処理の速度と回数を各同期クライアント50に対して通知する(ステップS0504)。なお、この間も、先ほど述べたように、同期クライアント50は、同期処理が停止しないように、みなし入力情報INaを用いて仮同期処理を繰り返している(ステップS0501、ステップS0502)。また、この同期サーバ10からの通知は、ステップS0303で算出された同期回数(=K回)以内に行われる。もし、K回以内にこの同期サーバ10からの通知を受信できなかった場合には、受信できるまで処理が一時停止されるため、Kは、十分大き目にとっておく必要がある。
同期クライアント50aは、同期サーバ10から、同期クライアント50bと同期回数を合わせるために必要な同期処理速度、及び仮同期処理回数(=J回)を受け取る(ステップS0505a)。同期クライアント50aは、K回の仮同期処理を通常の速度で終了(ステップS0506、ステップS0507)した後、同期サーバ10より受け取った同期処理速度に従って、J回の仮同期処理を繰り返す(ステップS0601a、ステップS0602a)。
同期クライアント50bにおいても同様に、同期サーバ10から同期処理速度、及び、仮同期処理回数(=J−L+M回)を受け取る(ステップS0505b)。同期クライアント50bは、同様に、K回の仮同期処理を通常の速度で終了した後、同期サーバ10より受け取った同期処理速度に従って、J−L+M回の仮同期処理を繰り返す(ステップS0601b、ステップS0602b)。
この時点で、同期クライアント50aにおける同期処理回数は、(W−1)+M+K+J回となる。また、同期クライアント50bにおける同期処理回数は、(W−1)+L+K+(J−L+M)回=(W−1)+M+K+J回となり、両同期クライアント50における同期回数は等しくなる。つまり、同期クライアント50aと同期クライアント50bは、同一の同期状態を共有している状態に戻る。以降は、通常通りの同期処理(ステップS0000a〜ステップS0006a、ステップS0000b〜ステップS0006b)を繰り返すことできる。
これにより、通信状態が悪化した場合でも、相手の情報を受信するまでの間待ち状態に入り同期処理を一時停止することなく処理を続けるという効果が得られる。
次に、図9を参照して、通信状態が悪化するタイミングが前回に比べ微妙にずれた場合について説明する。
ここでは同期回数NがN=Wの場合を想定する。同期クライアント50aは、同期サーバ10へ入力情報a_Wを送信する(ステップS1001a)。同期サーバ10は、入力情報a_Wを受信する。今回は、この入力情報a_Wの受信完了後に情報端末30a側の通信状態が悪くなるものとする。同期サーバ10は、受信した入力情報a_Wを同期クライアント50bに送信する(ステップS1002a)。
同様に、同期クライアント50bは、入力情報b_Wを同期サーバへ送信する(ステップS1001b)。同期サーバは、入力情報b_Wを受信するが、既に情報端末30a側の通信状態が悪くなっているため、入力情報b_Wを相手へ送信することができない(ステップS1002b)。
通信状態が悪くなっているため、同期クライアント50aは、所定時間内に入力情報b_Wを受信できない(ステップ1003a)。
一方、同期クライアント50bは、入力情報a_Wを受信できる(ステップS1003b)ので、同期入力情報INb_Wを作成することができる(ステップS1004b)。演算部60bは、同期入力情報INb_Wを受け取り、W同期目の正常な処理を実行し、W同期目の状態を表示する(ステップS1005b)。このため、同期クライアント50bの同期回数は、同期クライアント50aに比べて一つ進むことになる。
続いて、同期クライアント50bは、同期回数をW+1に進めて、入力情報b_W+1を同期サーバ10へ送信する(ステップS1006b)。同期サーバ10は、入力情報b_W+1を受信するが、前回同様、情報端末30a側の通信状態が悪いため入力情報b_Wを同期クライアント50aへ送信できない(ステップS1007b)。
同期クライアント50aは、入力情報b_Wを受信することができず(ステップS1003a)、通信状態が悪化していると判断する。このため、同期処理が一時停止されるのを防ぐ処理を以後行う。前記同様、W−1同期目までは正常に処理できたことを同期サーバ10へ送信する(ステップS1004a)。実際には、通信状態が悪いため再送処理を継続する。
一方、同期クライアント50bも、所定時間内に入力情報a_Wを受信できない(ステップS1008b)。同期クライアント50bも同様に通信状態が悪化していると判断し、W同期目までは正常に処理できたことを同期サーバ10へ送信する(ステップS1009b)。
同期クライアント50aは、W−1同期目まで正常に処理を行ったのに対し、同期クライアント50bはW同期目までも正常に処理を行っていることに注意する。
同期クライアント50aは、演算部60aに通信状態が悪化していることを通知する(ステップS1101a)。演算部60aは、直前の同期状態S_W−1をバックアップする(ステップS1102a)。同期クライアント50aは、同期処理が一時停止されるのを防ぐため、直前の同期入力情報IN_W−1を「みなし入力情報」として用いながら、前回同様、仮の同期処理を行う(ステップS1103a、ステップS1104a)。
一方、同期クライアント50bも同様に演算部60bに通信状態が悪化していることを通知する(ステップS1101b)。演算部60bは、直前の同期状態S_Wをバックアップする(ステップS1102b)。ここで、演算部60aは、同期回数がW−1の時の同期状態をバックアップしたのに対し、演算部60bは、同期回数がWの時の同期状態のバックアップを行っていることに注意する。
同期クライアント50bは、同期処理が一時停止されるのを防ぐため、直前の同期入力情報IN_Wを「みなし入力情報」として用いながら、同様に仮の同期処理を行う(ステップS1103b、ステップS1104b)。
ここで、同期クライアント50aは、「みなし入力情報」として同期入力情報IN_W−1を用いているのに対し、同期クライアント50bは、「みなし入力情報」として同期入力情報IN_Wを用いていることに注意する。
次に、図11を参照して、通信状態が回復した後の場合について説明する。
通信状態が回復したことによって、図9のステップS1004aにおいて送信された「情報端末30a側においてW−1同期目まで正常に処理できた」という情報が同期サーバ10に到達する(ステップS1201a)。同期サーバ10は、全ての同期クライアントで正常に行われた同期回数が同一回数であるかどうかを判断する(ステップS1202)。本実施例の場合は、情報端末30a側においてW−1同期目であるのに対して情報端末30b側においては、W同期目まで正常に処理が行われている。同期サーバ10は、同期入力情報INb_Wが同期入力情報IN_W−1と同一の入力内容かどうかをチェックする(ステップS1203)。
同期入力情報INb_Wと同期入力情報INb_W−1が同一の場合を考える。情報端末30a側においては、通信状態の悪化を通知(ステップS1101a)後、「みなし入力情報」として同期入力情報INa_W−1が用い続けられている。一方、情報端末30b側においては、「みなし入力情報」として同期入力情報INb_Wが用い続けられている。ここで、情報端末30a側、情報端末30b側それぞれにおいて用い続けられている「みなし入力情報」の同期回数がW−1とWで等しくないが、結果として、両者で用い続けられている入力情報は、同一のものになる。何故なら、同期入力情報INb_W=同期入力情報INb_W−1であり、同期入力情報INa_W−1=同期入力情報INb_W−1だからである(W−1同期目までは正常に同期処理が行われているため、双方における入力情報は等しいことに注意する)。従って、任意の同期回数Nにおいて、同期入力情報INa_N=同期入力情報INb_Nであることが保証され、同期状態Sa_N=同期状態Sb_Nであることが保証される。
このため、全ての同期クライアント50において同期回数を同一に揃えた後で、通常の同期処理を再開すれば、全クライアント50における同期状態は同一に保たれることになる。この状況は、前記の例(図5参照)と全く同じであり同様の処理(図7及び図8のステップS0303〜ステップS0306)を行うことで、通常の同期処理再開へと導くことができる。前記と異なる点は、同期クライアント50bが入力情報b_W+1まで送信している(ステップS1006b)点である(ステップS0101b、ステップS1001b、ステップS1006bを比較)。
次に、図12を参照して、図6で説明した処理に対応する処理を説明する。
各同期クライアント50は、ステップS0304において相手がどの回まで各自の同期情報を送信したかを受信している。このため、各同期クライアント50は、相手が自分宛に送信した情報でまだ自分が受信していないものがいくつあるかを知ることができる。具体的には、同期クライアント50aは、入力情報b_W、及び、入力情報b_W+1を受信していない。また、同期クライアント50bは、入力情報a_W+1を受信していない。また、同期クライアント50aは、相手が入力情報a_W+1まで受信待ちであることを知ることができるが、現時点では、まだ入力情報a_W+1を送信していないことに注意する。
通信状態が回復したことで、同期クライアント50aは、入力情報b_Wを受信することができる(ステップS1303a)。続いて、同期クライアント50bが入力情報a_W+1の受信を待っていることから、同期クライアント50aは、入力情報a_W+1を送信する(ステップS1304a)。同期サーバ10は、入力情報a_W+1を受信し相手へ送信する(ステップS1305a)。同期クライアント50bは、入力情報a_W+1を受信する(ステップS1306b)。また、同期クライアント50aは、ステップS1007bにおいて送信された入力情報b_W+1を受信する(ステップS1306a)。以上の処理により、送受信待ちの状態を全て解消できる。
次に、ステップS1203において同期入力情報INb_Wと同期入力情報INb_W−1が等しくなかった場合の処理について説明する。この場合、W以上のNにおいて同期入力情報INa_Nと同期入力情報INb_Nが等しくないことになる。つまり、それぞれの同期クライアント50において異なった入力情報が渡され続けてきたことになる。従って、W以上のNにおいて同期状態Sa_Nと同期状態Sb_Nは等しいことが保証されなくなる。このため、各同期クライアント50における同期状態を通信状態が悪化する直前のバックアップした状態に戻した上で、通常の同期処理を再開する必要がある。
なお、この状態のままいきなりバックアップした状態に戻すと、同期クライアント50aの同期回数は、W−1に戻る(ステップS1102a)のに対し、同期クライアント50bの同期回数は、Wまでしか戻らない(ステップS1102b)。
続いて、同期クライアント50bは、入力情報a_W+1の受信待ち状態に戻る(ステップS1008bの続き)。入力情報a_W+1が同期クライアント50bに届けられるためには、同期クライアント50aが入力情報b_Wを受信し、同期回数Wにおける演算処理を行った後、入力情報a_W+1を送信し、これが同期サーバ10を経由して同期クライアント50bに送信されなくてはならない。この作業には通常より長時間を要するため、同期クライアント50bが所定時間内に入力情報a_W+1を受信できなかった場合、再び通信状態が悪化していると誤判断し、同期処理が一時停止されるのを防ぐ処理を再度開始してしまう。
このような状態は、一時停止防止処理の連鎖を招き、結果として全く入力処理を受付けない状態を引き起こす可能性がある。このため、再び一時停止防止処理が開始されないような状態にした上で同期処理を再開するため、以下の手続きを踏む。
次に、図13を参照して、前記の目的を果たすための処理について説明する。
同期サーバ10は、同期クライアント50に通信状態が回復したことを通知する(ステップS1401)と共に、同期状態をS1102においてバックアップした状態に戻すことが必要なことを通知する(ステップS1401)。
同期クライアント50は、通信状態が回復したことを受信し(ステップS1402)、バックアップした状態に戻す必要があることを知る。
ここで、図14を参照して、各同期クライアント50において同期入力情報を相手と揃えるための処理について説明する。
同期クライアント50aは、ステップS1002bで送信された入力情報b_Wを受信する(ステップS1503a)。これにより、同期入力情報IN_Wを作成することができるが、これは後で用いるためバックアップしておく(ステップS1503a)。
続いて、同期クライアント50aは、入力情報a_W+1を送信する(ステップS1504a)。入力情報a_W+1を受信した同期サーバ10は、同期クライアント50bへ送信する(ステップS1505a)。同期クライアント50bは、入力情報a_W+1を受信する(ステップS1506b)。これにより、同期入力情報IN_W+1を作成することができるが、これは、後で用いるためバックアップしておく(ステップS1506b)。
続いて、同期クライアント50aは、ステップS1007bで送信されたb_W+1を受信する(ステップS1506a)。同様に同期入力情報IN_W+1を作成することができるが、これも後で用いるためにバックアップしておく(ステップS1506a)。
この時点で、両同期クライアント50において、W+1同期目までの入力情報を用意することができたことになる。なお、これらの処理中にも、各同期クライアント50においては、「みなし入力情報」を用いた仮の同期処理が行われている(ステップS1103a、ステップS1104a、ステップS1103b、ステップS1104b)ことにより、同期処理が一時停止されるのを防いでいる。
各同期クライアント50は、W+1同期目の同期入力情報IN_W+1の作成が完了した時点で、同期サーバ10に対し、完成した旨を通知する(ステップS1403a、ステップS1403b)。同期サーバ10は、全ての同期クライアント50から必要な入力情報の作成が完了したことを受信する(ステップS1404)。同期サーバ10は、バックアップ状態に戻した後、通常の同期処理に戻るまでの間、各同期クライアント50においてどの程度の同期処理速度で何回同期処理を行えば同一時刻に同期回数が一致し得るかを計算する(ステップS1405)。具体的には、同期クライアント50aと同期クライアント50bにおける同期回数の差は、1回である。従って、同期クライアント50aにおいて1同期処理を32msで2回行うのに対し、同期クライアント50bにおいては1同期処理を64msで1回行えば64ms経過後に両者の同期回数は一致し、同期状態も一致する。同期サーバ10は計算結果を各同期クライアント50に通知する(ステップS1405)。同期クライアント50は、同期状態をバックアップした状態に戻す様指示を受ける(ステップS1406)。同期クライアント50aは、同期状態をS_W−1に戻す(ステップS1406a)。一方、同期クライアント50bは、同期状態をS_Wに戻す(S1406b)。
次に、図15を参照して、通常の同期処理に戻るまでの処理について説明する。
同期クライアント50において同期状態に戻した時刻をt=0msとする。同期クライアント50aにおいて、作成済みの同期入力情報IN_W(ステップS1503a)を用いて時刻t=32msにおいてW同期目の処理を実行し表示する(ステップS1601a、ステップS1602a)。更に作成済みの同期入力情報IN_W+1(ステップS1506a)を用いて時刻t=64msにおいてW+1同期目の処理を実行し表示する(ステップS1601b、ステップS1602b)。
このようにして同期状態をバックアップしたものに戻した時から64ms後において、全同期クライアント50における同期回数、同期状態を同一に揃えることができる。後は、通常の処理を行うことで、同期処理を一時停止することなく処理を継続することができる。
次に、本発明の第2の実施形態として、図1に示す同期通信ゲームシステムを用いた別の同期処理動作について説明する。
まず、図17を参照して、N同期目に入力された情報を、N+m(但しm>0の整数)同期目の処理に用いながらゲームの進行をすすめる場合について説明する。尚、同期クライアント50同士間でデータ送受信を行うために同期サーバ10は、上述した実施形態(以下、第1の実施形態とも称する)と同様にデータの中継処理を行うが、このデータの中継処理については、図の簡略化のためにその説明を省略する。
以下、具体的にm=2の場合について説明する。現在、N+2同期目の処理を行おうとしているものとする(ステップS2003a〜及び、ステップS2003b〜)。同期クライアント50aは、入力情報としてIN_N+2を用いる代わりに2同期前の入力情報IN_N(=a_N及びb_N)を用いる。b_Nは、2同期も前に同期クライアント50bから送信されている(ステップS2001b)。このため、N同期目、N+1同期目の処理を行う間にb_Nが同期クライアント50aへ送信されていれば、同期クライアント50bからの入力情報の受信を待つことなく処理を進めることができる。同期クライアント50aは、IN_N+2を渡す代わりにIN_Nを演算部60aに渡す(ステップS2003a)。演算部60aは、IN_Nを元にN+2同期目の処理を行う(ステップS2004a)。同期クライアント50bでも同様の処理が行われる。このように全ての同期クライアント50において同一の入力情報を共有することができ同一の同期状態を共有することができる。
次に、図18を用いてゲームの途中で、同期クライアント50aと同期サーバ10との間の通信状態が一時的に悪くなった場合の動作を説明する。具体的に、同期クライアント50aにおいてW同期目の処理を行おうとしている時に、a_Wの送信を行うことができたが、b_W−2を受信することができなかった場合を想定する(ステップS2101a)。上述した実施形態と同様に、同期クライアント50aは、同期サーバ10に対し、通信状態悪化のためW−1同期目まで正常に処理できたことを送信できるまで再送処理を継続する(ステップS2102a)。また同様に、同期クライアント50bと同期サーバ10との間の通信状態も一時的に悪くなった場合を想定し、同期クライアント50bにおいても同様にb_Wの送信を行うことができたが、a_W−2を受信することができなかった場合を想定する(ステップS2101b)。上述した実施形態と同様、同期クライアント50bは、同期サーバ10に対し、通信状態悪化のためW−1同期目まで正常に処理できたことを送信できるまで再送処理を継続する(ステップS2102b)。
同期クライアント50aは、上述した実施形態と同様に演算部60aに対し通信状態が悪化したことを通知する(ステップS0201aと同様)。上述した実施形態と同様に演算部60aは、S_W−1をバックアップする(ステップS0202aと同様)。同期クライアント50bにおいても同様に、通信状態の悪化を演算部60bに通知し(ステップS0201bと同様)、演算部60bは、S_W−1をバックアップする(ステップS0202bと同様)。上述した実施形態と同様に、同期クライアント50aは、みなし入力情報としてIN_W−1を演算部60aへ譲渡し続ける(ステップS0203aと同様)。演算部60aは、上述した実施形態と同様に、みなし入力情報IN_W−1を用いてW同期目以降の処理を行う(ステップS0204aと同様)。同期クライアント50b、演算部60bについても同様の処理を行う。このように、通信状態が悪化した場合でも、正常な入力情報の代わりにみなし入力情報を用いて処理を行うことにより、同期処理の一時停止を防ぐことができ、画面が一時停止する等の違和感をユーザに与えなくて済む。
次に、同期クライアント50aと同期サーバ10との間の通信状態、及び、同期クライアント50bと同期サーバ10との間の通信状態が回復した場合の処理について説明する。上述した実施形態と同様に、S2102aにおいて送信中であった「W−1同期目まで正常に処理できた」という情報が、同期クライアント50aから同期サーバ10に対して送信される(ステップS0301aと同様)。同期クライアント50bについても同様に、「W−1同期目まで正常に処理できた」という情報が同期サーバ10に対して送信される。上述した実施形態と同様に、同期サーバ10は、全ての同期クライアント50において正常に行われた同期回数が同じであったかを調べる(ステップS0302と同様)。本実施形態においては、全ての同期クライアント50において正常に行われた同期回数は、W−1と同じである。同期サーバ10は、上述した実施形態と同様に、同期クライアント50に対し通信が回復したことを通知し、次のサーバ間通信までに必要な同期クライアント50側での同期処理回数(上述した実施形態と同様に、K回とする)、及び、相手の同期クライアント50がどの回まで正常に同期処理を行ったかということを送信する(ステップS0303と同様)。
通信の回復通知を受けた各同期クライアント50は、上述した実施形態と同様に、現在の同期回数を同期サーバ10へ通知し、同期サーバ10は、これを受信する(ステップS0305a、ステップS0305b、ステップS0306と同様)。今回も上述した実施形態と同様に、同期クライアント50aにおいて成された仮同期処理の回数をM回とし、同期クライアント50bにおいて成された仮同期処理の回数をL回とする。
また、上述した実施形態と同様に、各同期クライアント50は、相手が自分宛に送信した情報でまだ自分が受信していないものを受信する(ステップS0402a、ステップS0403aと同様)。
同期サーバ10は、上述した実施形態と同様に、受信した同期回数の差(=L−M)を無くすために必要な各同期クライアント50における仮の同期処理回数と速度を算出する(ステップS0503と同様)。同期サーバ10は、上述した実施形態と同様に、各同期クライアント50に対し算出した処理速度と回数を通知する(ステップS0504と同様)。
各同期クライアント50は、上述した実施形態と同様に、必要回数分だけ、みなし入力情報を用いた同期処理を行った後、通常の同期処理を再開することができる(図7、図8に同じ)。同期処理を再開する際の同期回数をV回とする。本実施形態においては、V同期目の処理を行うのにV−m同期目の入力情報を用いる。このため、同期処理を再開するまでの間にあらかじめV−m、V−m+1、・・・V−1同期目の入力情報を揃えておくのが望ましい。このように設定することにより、V同期目の処理を行うために、V−m同期目の入力情報が相手から届くのを待つ必要がなく、速やかに次の同期処理を行うことができる。
次に、m=2の場合において同期クライアント50aと同期サーバ10との間の通信状態のみが一時的に悪くなった場合についての処理方法を説明する。具体的には、同期クライアント50aにおいて、W回目の同期処理を行おうとしている際に、a_Wの送信を行うことができたが、b_W−2を受信することができなかった場合を想定する(ステップS2201a)。上述した実施形態と同様に、同期クライアント50aは、通信状態悪化のためW−1同期目まで正常に処理できたことを同期サーバ10に送信できるまで再送処理を継続する(ステップS2202a)。一方、同期クライアント50bは、同期サーバ10よりa_Wまで受信することができるため、W+2同期目まで正常に処理を進めることができる(ステップS2201b〜ステップS2206b)。同期クライアント50bは、a_W+1を受信することができないため、同期サーバ10に対し通信状態悪化のためW+2同期目まで正常に処理できたことを送信する(ステップS2207b)。
上述した実施形態と同様に、同期クライアント50aは、演算部60aに対し通信状態が悪化したことを通知し、演算部60aは、S_W−1をバックアップする(ステップS1101a、ステップS1102aと同様)。以降、通常の同期処理が再開されるまでの間、みなし入力情報INa_W−1を用いて仮の同期処理を行う(ステップS1103a、ステップS1104aと同様)。同期クラインと50bについても同様に、S_W+2をバックアップし、INb_W+2をみなし入力情報として用いながら仮の同期処理を行う(ステップS1101b〜ステップS1104bと同様)。
次に、同期クライアント50aと同期サーバ10との間の通信状態が回復した時の処理について説明する。ステップS2202aにおいて送信された情報が同期サーバ10へ届く(ステップS1201aと同様)。今回は、各同期クライアント50において正常に行われた同期回数が異なるため(W−1≠W+2)、INb_W+2、INb_W+1、INb_W、INb_W−1が全て同じであったかを確認する(ステップS1203)。もし、これら全てが同じであった場合は、各演算部において全く同じ入力情報が渡され続けてきたことになり、各同期回数における同期状態は同一になる。上述した実施形態と同様に、各同期クライアント50の同期回数を一致させてやれば、同期状態を同一にすることができ、通常の同期処理を再開できる。これ以降の処理は、上述した実施形態と同様の処理になる。
他方、INb_W+2、INb_W+1、INb_W、INb_W−1のうちどれか一つでも異なる場合は、各同期クライアントにおいて異なった入力情報が渡されていることになり、もはや各同期クライアントにおける同期状態が同一であることは、保証できない。このため、上述した実施形態と同様に、同期サーバ10は、各同期クライアント50に対し同期状態をバックアップした状態に戻す必要があることを通知する(ステップS1401と同様)。以降、上述した実施形態と同様に、作成済みの入力情報を準備し、算出された処理速度に従って同期処理を行った後、通常の同期処理を再開することができる。また、上述した実施形態と同様に、同期処理を再開する際の回数をVとした場合、同期処理を再開するまでの間にあらかじめV−m、V−m+1、・・・V−1同期目の入力情報を揃えておくのが望ましい。
また、上述した実施形態では、みなし入力情報が用いられ始めてから通常の同期処理が再開されるまでの間にユーザが行ったボタン操作等は、全て無視されてしまう。これを防ぐため、みなし入力情報を用いている間は、実際の入力情報を別途保存しておき、通常の同期処理が再開された時点で、保存しておいた情報を入力情報として用いることで、ユーザの行った入力処理を破棄しないで用いることができる。但し、保存した全ての情報を用いていると常にユーザの入力した情報が遅れて用いられることになり、ユーザは、常に違和感を感じることになる。これを防ぐため、例えば、図20に示すように、保存した情報を一つ飛ばしに用いることで最終的にはユーザが入力した情報を遅滞なく用いることができ、ユーザの入力した情報の一部を反映させることができる。
入力情報の飛ばしについては、一つ飛ばしに限定されものではない。例えば、nを1以上の整数として、n個飛ばしに入力情報を用いてもよい。
上述したように構成することにより、みなし入力情報を用いている間の実際の入力情報を保存しておき、後でその入力情報をn個飛ばしで用いることで、ユーザが入力した情報を全て破棄することを防ぐことが可能になる。
ここで、上述したこれまでの処理の概要を、図21を参照してまとめて説明する。
図1に示した同期通信ゲームシステム1は、同期処理を実行し(ステップS3001)、各同期ごとに通信障害が発生しているかどうかをチェックし(ステップS3002)、上記ステップS3002で通信障害が発生していると判断された場合には、現在の正常な同期状態をバックアップする(ステップS3003)。他方、上記ステップS3002で通信障害が発生していないと判断された場合には、上記ステップS3001に戻り、同期処理を実行する。
上記ステップS3003に続き、それ以後、正常な同期処理が再開されるまで、直前の正常な入力情報をみなし入力情報として用い、仮の同期処理を行う(ステップS3004)。次いで、通信状態が回復したかどうかを判断し(ステップS3005)、上記ステップS3005で通信状態が回復したと判断されかつ回復が確認できた場合には、全てのクライアントにおいて同一同期目において仮の同期処理が開始されたかどうかを判断し(ステップS3006)、上記ステップS3006で全てのクライアントにおいて同一同期目において仮の同期処理が開始されていると判断された場合は、全てのクライアントにおいて同期回数が同一になるように調整し、後で用いることになる入力情報を事前に準備して(ステップS3007)、通常の同期処理を再開する(ステップS3008)。他方、上記ステップS3006で全てのクライアントにおいて同一同期目において仮の同期処理が開始されていないと判断された場合には、各クライアントで用いられた同期情報(みなし入力情報を含む)が結果として同一のものであったかどうかを判断し(ステップS3009)、上記ステップS3009における判断の結果、同一のものであった場合には、上述したステップS3007の処理を行い、上述したステップS3008で示した、通常の同期処理を再開する。他方、上記ステップS3009における判断の結果、各クライアントで用いられた同期情報が同一のものでなかった場合には、後で用いることになる入力情報を事前に準備して(ステップS3010)、各クライアントの同期状態をバックアップしておいた同期状態に戻す(ステップS3011)。そして、同期状態をバックアップしておいたものに戻した後、上述したステップS3008で示した、通常の同期処理を再開する。
本発明による同期通信装置の一実施形態である、複数の利用者が同時に参加する形式の同期通信ゲームシステムの構成を示す概略ブロック図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。 従来のファミコン通信システムによるデータのタイミングを示すタイミングチャートである。 図1に示す同期通信ゲームシステムの別の実施形態における動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの別の実施形態における動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの別の実施形態における動作を説明するための動作フロー図である。 図1に示す同期通信ゲームシステムの別の実施形態における動作を説明するための動作フロー図である。 図17から図20に示した動作の概略を説明するためのフローチャートである。
符号の説明
1 同期通信ゲームシステム
10 同期サーバ
20 通信ネットワーク
30a 情報端末
30b 情報端末
40a 外部情報入力部
40b 外部情報入力部
50a 同期クライアント
50b 同期クライアント
60a 演算部
60b 演算部
70a 情報出力部
70b 情報出力部

Claims (12)

  1. 通信回線に接続された複数の情報端末間で同期を取りながら通信処理を行う同期通信装置であって、
    前記通信回線に接続された前記複数の情報端末が正常の通信状態にあるかどうかを判断する判断手段と、
    前記判断手段の結果により、前記複数の情報端末の少なくとも一つの情報端末の通信状態に異常が発生して該複数の情報端末の他の情報端末と同期が取れていないと判断された場合には、同期が取れない同期目の入力情報の代わりに、同期が取れない該同期目より前の任意の同期目の入力情報をみなし入力情報として設定する入力情報設定手段と、
    前記入力情報設定手段により設定されたみなし入力情報に基づいて所定の演算処理を実行して前記同期が取れない同期目の同期状態を求める演算手段と、
    を備え、
    前記判断手段は、前記異常が発生した情報端末の通信状態が回復して前記複数の情報端末の他の情報端末と同期が取れると判断するまで、前記各処理を繰り返すことを特徴とする同期通信装置。
  2. 前記演算手段は、前記所定の演算処理として、前記同期が取れない同期目におけるゲームの同期状態を得るための演算処理を実行することを特徴とする請求項1に記載の同期通信装置。
  3. 前記演算手段は、前記情報端末を、同期状態をバックアップしたものに戻すことを特徴とする請求項1に記載の同期通信装置。
  4. 前記入力情報をみなし入力情報として設定し続けても、前記判断手段が全ての前記情報端末を同一の同期状態に揃えることが不可能と判断した場合には、前記演算手段は、前記情報端末を、同期状態をバックアップしたものに戻すことを特徴とする請求項1に記載の同期通信装置。
  5. 前記演算手段は、前記みなし入力情報を用いている間に実際の入力情報を保存し、通常の同期処理が再開されたときに、入力情報として該保存した情報を任意の数だけ飛ばして用いることを特徴とする請求項1に記載の同期通信装置。
  6. 前記演算処理は、ゲームキャラクタの位置の計算、当り判定、得点計算のいずれか一つまたは二つ以上の組合せであることを特徴とする請求項1に記載の同期通信装置。
  7. 通信回線に接続された複数の情報端末間で同期を取りながら通信処理を行う同期通信方法であって、
    前記通信回線に接続された前記複数の情報端末が正常の通信状態にあるかどうかを判断する段階と、
    前記判断の結果により、前記複数の情報端末の少なくとも一つの情報端末の通信状態に異常が発生して該複数の情報端末の他の情報端末と同期が取れていないと判断された場合には、同期が取れない同期目の入力情報の代わりに、同期が取れない該同期目より前の任意の同期目の入力情報をみなし入力情報として設定する段階と、
    前記設定されたみなし入力情報に基づいて所定の演算処理を実行して前記同期が取れない同期目の同期状態を求める段階と、
    前記異常が発生した情報端末の通信状態が回復して前記複数の情報端末の他の情報端末と同期が取れるまで前記各段階を繰り返す段階と
    を具備することを特徴とする同期通信方法。
  8. 前記演算する段階は、前記所定の演算処理として、前記同期が取れない同期目におけるゲームの同期状態を得るための演算処理を実行することを特徴とする請求項7に記載の同期通信方法。
  9. 前記演算する段階は、前記情報端末を、同期状態をバックアップしたものに戻すことを特徴とする請求項7に記載の同期通信方法。
  10. 前記入力情報をみなし入力情報として設定し続けても、前記判断する段階で全ての前記情報端末を同一の同期状態に揃えることが不可能と判断した場合には、前記演算する段階手段は、前記情報端末を、同期状態をバックアップしたものに戻すことを特徴とする請求項7に記載の同期通信方法。
  11. 前記演算する段階は、前記みなし入力情報を用いている間に実際の入力情報を保存し、通常の同期処理が再開されたときに、入力情報として該保存した情報を任意の数だけ飛ばして用いることを特徴する請求項7に記載の同期通信方法。
  12. 前記演算処理は、ゲームキャラクタの位置の計算、当り判定、得点計算のいずれか一つまたは二つ以上の組合せであることを特徴とする請求項7に記載の同期通信方法。
JP2006542940A 2004-10-21 2005-10-14 同期通信方法および同期通信装置 Expired - Fee Related JP3984643B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2004306376 2004-10-21
JP2004306376 2004-10-21
JP2004323762 2004-11-08
JP2004323762 2004-11-08
PCT/JP2005/018936 WO2006043473A1 (ja) 2004-10-21 2005-10-14 同期通信方法および同期通信装置

Publications (2)

Publication Number Publication Date
JP3984643B2 true JP3984643B2 (ja) 2007-10-03
JPWO2006043473A1 JPWO2006043473A1 (ja) 2008-08-07

Family

ID=36202889

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006542940A Expired - Fee Related JP3984643B2 (ja) 2004-10-21 2005-10-14 同期通信方法および同期通信装置

Country Status (4)

Country Link
US (1) US7840711B2 (ja)
JP (1) JP3984643B2 (ja)
KR (1) KR100909302B1 (ja)
WO (1) WO2006043473A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007105471A1 (ja) * 2006-03-07 2007-09-20 Nec Corporation 資源情報管理装置、システム、方法、及びプログラム
US8595336B1 (en) * 2008-02-01 2013-11-26 Wimm Labs, Inc. Portable universal personal storage, entertainment, and communication device
US8161195B2 (en) * 2009-03-25 2012-04-17 Microsoft Corporation Adaptable management in sync engines
JP2011045504A (ja) * 2009-08-26 2011-03-10 Namco Bandai Games Inc プログラム、情報記憶媒体及びゲーム装置
US8307052B2 (en) * 2009-12-29 2012-11-06 International Business Machines Corporation Method and system for communication sessions
JP6221498B2 (ja) * 2013-08-15 2017-11-01 富士通株式会社 情報処理システム及び情報処理システムの制御方法
JP5602963B1 (ja) * 2014-01-30 2014-10-08 グリー株式会社 ゲーム管理プログラム、ゲーム管理方法及びゲーム管理システム
WO2018012628A1 (ja) * 2016-07-15 2018-01-18 ナーブ株式会社 画像表示装置及び画像表示システム
CN107423015B (zh) 2017-07-24 2018-07-20 腾讯科技(深圳)有限公司 游戏内容的同步显示方法和装置
JP7222628B2 (ja) * 2018-08-03 2023-02-15 株式会社バンダイナムコエンターテインメント ゲームシステム及びプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0698224B2 (ja) * 1988-08-01 1994-12-07 株式会社広布 テレビゲーム用通信システム
JP3101051B2 (ja) 1992-01-29 2000-10-23 富士通株式会社 同期確立方法
US5751220A (en) * 1995-07-14 1998-05-12 Sensormatic Electronics Corporation Synchronized network of electronic devices including back-up master units
US5987376A (en) * 1997-07-16 1999-11-16 Microsoft Corporation System and method for the distribution and synchronization of data and state information between clients in a distributed processing system
AU2001251341A1 (en) * 2000-04-08 2001-10-23 Sun Microsystems, Inc. Resynchronizing media during streaming
US20030046433A1 (en) * 2001-07-25 2003-03-06 Omer Luzzatti Method to synchronize information between online devices
EP1569731A1 (en) * 2002-12-10 2005-09-07 Nokia Corporation Method and device for continuing an electronic multi-player game, in case of an absence of a player of said game

Also Published As

Publication number Publication date
US20080126568A1 (en) 2008-05-29
KR20070055615A (ko) 2007-05-30
WO2006043473A1 (ja) 2006-04-27
US7840711B2 (en) 2010-11-23
KR100909302B1 (ko) 2009-07-24
JPWO2006043473A1 (ja) 2008-08-07

Similar Documents

Publication Publication Date Title
JP3984643B2 (ja) 同期通信方法および同期通信装置
CN104375789B (zh) 拼接屏的同步显示方法及系统
US6934766B1 (en) Method and apparatus for exchanging event information between computer systems that reduce perceived lag times by subtracting actual lag times from event playback time
CN106034129A (zh) 一种用于游戏同步的fbsg方法
JPH11512897A (ja) 冗長性を有するクロック分配ネットワークの動作及び保守
CN103716175A (zh) 用于确保企业ims网络中高可用性的系统和方法
CN107982912A (zh) 一种信息处理方法和终端
JP6523226B2 (ja) 時刻同期制御システム
CN113225600B (zh) 一种防止led显示屏出现闪屏问题的方法及装置
JPH06164572A (ja) フレーム同期回路およびフレーム同期方法
CN109194576B (zh) 一种tcp热备份的方法和装置
JPH11163934A (ja) 伝送システム及び伝送装置及び受信装置及び実時間動画像及び音声送信システム及び装置及びその制御方法及び記憶媒体
JPH09238127A (ja) 通信ネットワークシステムの同期動作方法、およびそれを用いたゲームシステム
JP3696316B2 (ja) 同期保護方法および同期保護回路
CN108540688B (zh) 分布式拼接控制器、图像发送方法及图像处理方法
JPS59194551A (ja) デ−タ通信方式
JPH0385081A (ja) 同期式画像伝送装置
CN117915086A (zh) 一种视频传输方法、装置、设备及介质
JP2002335251A (ja) データ通信方式
JPH01316043A (ja) 通信システムの同期クロック供給制御方式
CN114390155A (zh) 信号备份显示的方法、装置、电子设备和存储介质
JPS6398238A (ja) 高速フレーム同期方法
JPH04213240A (ja) 障害信号フレーム処理方式
JPS5944143A (ja) 同期制御方式
JPH05260122A (ja) 通信機間のフロー制御方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070625

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070706

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100713

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A072

Effective date: 20081014

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100713

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110713

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110713

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110713

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130713

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130713

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees