(57)【特許請求の範囲】
【請求項１】
通信回線に接続された複数の情報端末間で同期を取りながら通信処理を行う同期通信装置であって、
前記通信回線に接続された前記複数の情報端末が正常の通信状態にあるかどうかを判断する判断手段と、
前記判断手段の結果により、前記複数の情報端末の少なくとも一つの情報端末の通信状態に異常が発生して該複数の情報端末の他の情報端末と同期が取れていないと判断された場合には、同期が取れない同期目の入力情報の代わりに、同期が取れない該同期目より前の任意の同期目の入力情報をみなし入力情報として設定する入力情報設定手段と、
前記入力情報設定手段により設定されたみなし入力情報に基づいて所定の演算処理を実行して前記同期が取れない同期目の同期状態を求める演算手段と、
を備え、
前記判断手段は、前記異常が発生した情報端末の通信状態が回復して前記複数の情報端末の他の情報端末と同期が取れると判断するまで、前記各処理を繰り返すことを特徴とする同期通信装置。
【請求項２】
前記演算手段は、前記所定の演算処理として、前記同期が取れない同期目におけるゲームの同期状態を得るための演算処理を実行することを特徴とする請求項１に記載の同期通信装置。
【請求項３】
前記演算手段は、前記情報端末を、同期状態をバックアップしたものに戻すことを特徴とする請求項１に記載の同期通信装置。
【請求項４】
前記入力情報をみなし入力情報として設定し続けても、前記判断手段が全ての前記情報端末を同一の同期状態に揃えることが不可能と判断した場合には、前記演算手段は、前記情報端末を、同期状態をバックアップしたものに戻すことを特徴とする請求項１に記載の同期通信装置。
【請求項５】
前記演算手段は、前記みなし入力情報を用いている間に実際の入力情報を保存し、通常の同期処理が再開されたときに、入力情報として該保存した情報を任意の数だけ飛ばして用いることを特徴とする請求項１に記載の同期通信装置。
【請求項６】
前記演算処理は、ゲームキャラクタの位置の計算、当り判定、得点計算のいずれか一つまたは二つ以上の組合せであることを特徴とする請求項１に記載の同期通信装置。
【請求項７】
通信回線に接続された複数の情報端末間で同期を取りながら通信処理を行う同期通信方法であって、
前記通信回線に接続された前記複数の情報端末が正常の通信状態にあるかどうかを判断する段階と、
前記判断の結果により、前記複数の情報端末の少なくとも一つの情報端末の通信状態に異常が発生して該複数の情報端末の他の情報端末と同期が取れていないと判断された場合には、同期が取れない同期目の入力情報の代わりに、同期が取れない該同期目より前の任意の同期目の入力情報をみなし入力情報として設定する段階と、
前記設定されたみなし入力情報に基づいて所定の演算処理を実行して前記同期が取れない同期目の同期状態を求める段階と、
前記異常が発生した情報端末の通信状態が回復して前記複数の情報端末の他の情報端末と同期が取れるまで前記各段階を繰り返す段階と
を具備することを特徴とする同期通信方法。
【請求項８】
前記演算する段階は、前記所定の演算処理として、前記同期が取れない同期目におけるゲームの同期状態を得るための演算処理を実行することを特徴とする請求項７に記載の同期通信方法。
【請求項９】
前記演算する段階は、前記情報端末を、同期状態をバックアップしたものに戻すことを特徴とする請求項７に記載の同期通信方法。
【請求項１０】
前記入力情報をみなし入力情報として設定し続けても、前記判断する段階で全ての前記情報端末を同一の同期状態に揃えることが不可能と判断した場合には、前記演算する段階手段は、前記情報端末を、同期状態をバックアップしたものに戻すことを特徴とする請求項７に記載の同期通信方法。
【請求項１１】
前記演算する段階は、前記みなし入力情報を用いている間に実際の入力情報を保存し、通常の同期処理が再開されたときに、入力情報として該保存した情報を任意の数だけ飛ばして用いることを特徴する請求項７に記載の同期通信方法。
【請求項１２】
前記演算処理は、ゲームキャラクタの位置の計算、当り判定、得点計算のいずれか一つまたは二つ以上の組合せであることを特徴とする請求項７に記載の同期通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信回線により接続された複数の情報処理端末間で同期を取りながら通信処理を行う同期通信装置及び同期通信方法に関する。
【背景技術】
【０００２】
従来の同期通信装置としては、例えば、特開平０２−０４１１９０号公報に記載されているようなファミコン通信システムが知られている。このファミコン通信システムは、通信回線を介して接続された少なくとも２台のファミコン間で通信を行うものであり、各ファミコンの入力部から入力されたデータの時間的ずれを補正する手段を備え、繰り返し発生する番号コードをキースキャンパルスに同期させて相手側装置に送出し、相手側では番号コードを用いて時間的ずれを補正するように構成されている。【０００３】
図１６は、上記ファミコン通信システムにおけるデータのタイミングを説明するためのタイミングチャートであり、図１を参照して以下にこのファミコン通信システムの動作を説明する。
図１６において（ａ）及び（ｂ）は、各ファミコンより発生するキースキャンパルスを示しており、このキースキャンパルス（ａ）、（ｂ）によりキーパッドの状態がデータとしてファミコンに取り込まれる。通信アダプタを用いると、（ｃ）、（ｄ）に示すように、相手側のモデムにデータを送るに際して時刻ｔ１〜ｔ２、ｔ３〜ｔ４の間の時間に相当する遅れが生じる。２つのファミコンで同時にゲームを行うには、図中ｍ及びｎで示す一対のデータの順番が正しくファミコンに送られることが必要である。即ち、ｍのパルスの時に取り込んだプレイヤーのデータと、ｎのパルスの時に取り込んだ相手のデータとが正しい順序でそれぞれのファミコンのデータとして入力されることが必要である。【０００４】
通信の遅れにより図１６ではｎ＋３のパルスの時に一方から他方のファミコンにデータが入力され、ｍ＋３のパルスの時に更に、他方から一方のファミコンにデータが入力される。例えば、ｍ、ｎのタイミングで取り込んだデータをｍ＋３、ｎ＋３のタイミングまで送出を遅らせると、双方のファミコンに送られるデータが３パルス分ずつ遅れた一対のものとなる。
双方のファミコンの電源が同時にＯＮにされるとは限らないので、ｍとｎとの時間差が最高１パルス変化する。このため、Ｎパルスになったとすると、図１に示されるように、ｍの時のデータは、Ｎ＋２の時には相手側に送られる。しかし、Ｎの時のデータは、ｍ＋４になるまで届くことができない。このままの状態でファミコンにデータを送出すると、必要なデータが必要な時に受け取れなくなり、２つのファミコンが別々の動作をしてしまう。上記から明らかなように、ファミコン間において生じる遅れは、データ通信の遅れと、キースキャンパルスの遅れの和となる。【０００５】
ここで、データ通信の遅れは、ハード及び通信速度に依存するので、比較的一定している。しかし、キースキャンパルスの遅れは、機器を動作させるタイミングにより変化すると共に、２台の機器におけるキースキャンパルスの位相差により次第に変化する。これを補正するために、キースキャンパルスに同期させて繰り返し発生する番号コードを相手側に送出する。番号コードを受け取った側では、自分のデータをこの番号コードの内容から同期させて送出する。
遅れを検出し、同期させてデータを送出するには、相手の番号コードと自分の番号コードとを記憶させ、タイマーを動作させる。次に自分のスキャンパルスでタイマーを停止させると、相手のデータの入力時から自分のスキャンパルスの発生時までの遅れが測定される。この動作を数回行わせて平均値を求める。この平均値と予めセットされた数値を比較することにより遅れが正しく検出される。【０００６】
可変シフトレジスタは、自分が取り込んだキーデータを数パルス分遅らせるために必要なものであり、例えば、ｍのパルスのデータをｍ＋３でファミコンに送出する場合、３段のシフトレジスタが必要となる。この遅らせるパルス数は、変動するキースキャンパルスに追従させるために可変とすることが必要になる。
要するに、上記ファミコン通信システムは、Ｎ同期目に入力された情報を、Ｎ＋ｍ（但しｍ＞０の整数）同期目の情報処理に用いることにより、通信の遅れによる処理速度の低下を防ぐように構成されている。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述したファミコン通信システムでは、所定時間内に相手から入力情報を受信できなかった場合、情報を受信するまでの間、待機することを必要とするために、同期処理の一時停止を引き起こし、ファミコン通信システムを利用する利用者に違和感を与える。特にインターネット等の通信品質が保証されていない通信回線を用いる場合には数秒おきに一時停止を引き起こす場合があり、システムの商品価値を著しく損なうことになるという問題点があった。【０００８】
本発明は、上記従来のファミコン通信システムにおける問題点に鑑みてなされたものであり、所定時間内に相手からの入力情報を受信できなかった場合であっても、同期処理を一時停止することなく、同期処理を進めることができる同期通信方法及び同期通信装置を提供することをその課題とするとする。
【課題を解決するための手段】
【０００９】
本発明の上記課題は、通信回線に接続された複数の情報端末間で同期を取りながら通信処理を行う同期通信装置であって、前記通信回路に接続された前記複数の情報端末が正常の通信状態にあるかどうかを判断する判断手段と、前記判断手段の結果により、前記複数の情報端末の少なくとも一つの情報端末の通信状態に異常が発生して該複数の情報端末の他の情報端末と同期が取れていないと判断された場合には、同期が取れない該同期目の直前の同期目の入力情報をみなし入力情報として設定する入力情報設定手段と、前記入力情報設定手段により設定されたみなし入力情報に基づいて所定の演算処理を実行して前記同期が取れない同期目の同期状態を求める演算手段とを備え、前記判断手段が前記異常が発生した情報端末の通信状態が回復して前記複数の情報端末の他の情報端末と同期が取れると判断するまで、前記各処理を繰り返すことを特徴とする同期通信装置によって達成される。【００１０】
本発明の上記課題は、通信回線に接続された複数の情報端末間で同期を取りながら通信処理を行う同期通信方法であって、前記通信回路に接続された前記複数の情報端末が正常の通信状態にあるかどうかを判断する段階と、前記判断の結果により、前記複数の情報端末の少なくとも一つの情報端末の通信状態に異常が発生して該複数の情報端末の他の情報端末と同期が取れていないと判断された場合には、同期が取れない該同期目の直前の同期目の入力情報をみなし入力情報として設定する段階と、前記設定されたみなし入力情報に基づいて所定の演算処理を実行して前記同期が取れない同期目の同期状態を求める段階と、前記異常が発生した情報端末の通信状態が回復して前記複数の情報端末の他の情報端末と同期が取れるまで前記各段階を繰り返す段階とを具備することを特徴とする同期通信方法によって達成される。
【発明の効果】
【００１１】
本発明の同期通信装置によれば、上記構成により、所定時間内に相手からの入力情報を受信できなくても同期処理を実行することができるので、同期処理を一時停止することなく、同期処理を進めることができるという効果を奏する。【００１２】
同様に、本発明の同期通信方法によれば、上記段階により、所定時間内に相手からの入力情報を受信できなくても同期処理を実行することができるので、同期処理を一時停止することなく、同期処理を進めることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
本発明の同期通信装置では、前記演算手段は、前記所定の演算処理として、前記同期が取れない同期目におけるゲームの同期状態を得るための演算処理を実行するように構成してもよい。【００１４】
本発明の同期通信装置では、前記演算手段は、前記情報端末を、同期状態をバックアップしたものに戻すように構成してもよい。【００１５】
本発明の同期通信装置では、前記入力情報をみなし入力情報として設定し続けても、前記判断手段が全ての前記情報端末を同一の同期状態に揃えることが不可能と判断した場合には、前記演算手段は、前記情報端末を、同期状態をバックアップしたものに戻すように構成してもよい。【００１６】
本発明の同期通信装置では、前記演算手段は、前記みなし入力情報を用いている間に実際の入力情報を保存し、通常の同期処理が再開されたときに、入力情報として該保存した情報を任意の数だけ飛ばして用いるように構成してもよい。【００１７】
本発明の同期通信装置では、前記演算処理は、ゲームキャラクタの位置の計算、当り判定、得点計算のいずれか一つまたは二つ以上の組合せであってもよい。【００１８】
本発明の同期通信装置では、前記入力情報設定手段は、同期が取れない同期目の入力情報の代わりに、同期が取れない該同期目より前の任意の同期目の入力情報をみなし入力情報として設定するように構成してもよい。【００１９】
本発明の同期通信方法では、前記演算する段階は、前記所定の演算処理として、前記同期が取れない同期目におけるゲームの同期状態を得るための演算処理を実行するように構成してもよい。【００２０】
本発明の同期通信方法では、前記演算する段階は、前記情報端末を、同期状態をバックアップしたものに戻すように構成してもよい。【００２１】
本発明の同期通信方法では、前記入力情報をみなし入力情報として設定し続けても、前記判断する段階で全ての前記情報端末を同一の同期状態に揃えることが不可能と判断した場合には、前記演算する段階手段は、前記情報端末を、同期状態をバックアップしたものに戻すように構成してもよい。【００２２】
本発明の同期通信方法では、前記演算する段階は、前記みなし入力情報を用いている間に実際の入力情報を保存し、通常の同期処理が再開されたときに、入力情報として該保存した情報を任意の数だけ飛ばして用いるように構成してもよい。【００２３】
本発明の同期通信方法では、前記演算処理は、ゲームキャラクタの位置の計算、当り判定、得点計算のいずれか一つまたは二つ以上の組合せであってもよい。【００２４】
本発明の同期通信方法では、前記入力情報を設定する段階は、同期が取れない同期目の入力情報の代わりに、同期が取れない該同期目より前の任意の同期目の入力情報をみなし入力情報として設定するように構成してもよい。
【実施例１】
【００２５】
以下、添付した図面を参照して、本発明による同期通信方法及び同期通信装置の好適な実施形態を説明する。
図１は、本発明による同期通信装置の一実施形態である複数の利用者が同時に参加する形式の同期通信ゲームシステムの構成を示す概略ブロック図である。【００２６】
図１に示す同期通信ゲームシステム１は、同期通信処理を行うためにサーバとしての役割を果たす判断手段である同期サーバ１０と、同期サーバ１０及び情報端末３０に接続されかつそれらの間のデータ通信を行う通信回線である通信ネットワーク２０と、所定のデータを入出力するように構成されかつゲーム参加者側に配置された二つの情報端末３０ａ、３０ｂを含む情報端末３０とにより構成されている。【００２７】
本実施例では、情報端末３０は、二つの情報端末３０ａ、３０ｂにより構成されているが、本発明は、これらに限定されるものではなく、三つ以上の情報端末３０ａ〜３０Ｎ（Ｎ＝ｃ〜ｚ）により構成されてもよい。ここでは簡略化するために、二つの端末装置３０ａ、３０ｂの場合について説明する。【００２８】
図１の同期通信ゲームシステム１は、ゲーム参加者が通信ネットワーク２０を介して各自の情報端末３０ａ、３０ｂを同期サーバ１０に接続することより、お互いの情報を相互に交換することができるように構成されている。
情報端末３０ａ、３０ｂは、入力情報設定手段の一部を構成する外部情報入力部４０ａ、４０ｂと、同期通信処理を行うためにクライアントとしての役割を果たす入力情報設定手段の一部を構成する同期クライアント５０ａ、５０ｂと、演算手段である演算部６０ａ、６０ｂと、情報出力部７０ａ、７０ｂとにより構成されている。
以下、同期クライアント５０ａ、５０ｂをまとめて呼ぶ場合には、単に同期クライアント５０と表す。同様に、演算部６０ａ、６０ｂについても、まとめて呼ぶ場合には、以下単に演算部６０と表す。
また、同期クライアント５０ａ、演算部５０ａに関わるステップについては、ＳＸＸＸＸａ（ＸＸＸＸは任意の数値）と表し、同期クライアント５０ｂ、演算部５０ｂに関わるステップについてはＳＸＸＸＸｂ（ＸＸＸＸは任意の数値）と表すが、両者を区別せずまとめて呼ぶ場合には、末尾のａやｂを省いてＳＸＸＸＸ（ＸＸＸＸは任意の数値）と表すものとする。【００２９】
次に、図２を参照して、図１に示す同期通信ゲームシステム１で実際にゲームが行われるときの動作を説明する。前提として、今からＮ回目の同期処理を実行するものとする。
まず、情報端末３０ａの同期クライアント５０ａは、ゲーム参加者によって外部情報入力部４０ａに入力されている入力情報ａ＿Ｎを取得する（ステップＳ００００ａ）。【００３０】
同期クライアント５０ａは、入力情報ａ＿Ｎを同期サーバ１０へ送信する（ステップＳ０００１ａ）。入力情報ａ＿Ｎを受信した同期サーバ１０は、入力情報ａ＿Ｎを全ての対戦相手の同期クライアント５０、本実施例では同期クライアント５０ｂのみ、へ送信する（ステップＳ０００２ａ）。【００３１】
同様に、情報端末３０ｂの同期クライアント５０ｂは、ゲーム参加者によって外部情報入力部５０ｂに入力されている入力情報ｂ＿Ｎを取得し（ステップＳ００００ｂ）、同期サーバ１０へ送信する（ステップＳ０００１ｂ）。同期サーバ１０によって受信された入力情報ｂ＿Ｎは、同期クライアント５０ａへと送信される（ステップＳ０００２ｂ）。
同期クライアント５０ａは、同期サーバ１０から送信された入力情報ｂ＿Ｎを受信し（ステップＳ０００３ａ）、Ｎ同期目の入力情報、即ち入力情報ａ＿Ｎ、入力情報ｂ＿Ｎ（以下、入力情報ＩＮａ＿Ｎと表する）を揃えることができる。【００３２】
同様に、同期クライアント５０ｂは、入力情報ａ＿Ｎを受信し（ステップＳ０００３ｂ）、Ｎ同期目の入力情報、即ち入力情報ａ＿Ｎ、入力情報ｂ＿Ｎ（以下、入力情報ＩＮｂ＿Ｎと表する）を揃えることができる。ここで、入力情報ＩＮａ＿Ｎ＝入力情報ＩＮｂ＿Ｎであるが、このように両同期クライアント５０ａ、５０ｂにおけるＮ同期目の入力情報が等しい場合、以下、代表して入力情報ＩＮ＿Ｎと表する。
このようにして、Ｎ回目の同期処理を行うために必要な全情報端末３０ａ、３０ｂの入力情報ＩＮ＿Ｎを、それぞれの同期クライアント５０ａ、５０ｂで共有できる。【００３３】
次いで、同期クライアント５０ａは、入力情報ＩＮ＿Ｎを演算部６０ａへ譲渡する（ステップＳ０００４ａ）。演算部６０ａは、入力情報ＩＮ＿Ｎと、情報端末３０ａにおける直前のゲームの同期状態Ｓａ＿Ｎ−１を元に演算処理を実行し、Ｎ同期目のゲームの同期状態Ｓａ＿Ｎを算出する（ステップＳ０００５ａ）。同期状態Ｓａ＿Ｎは、情報出力部７０ａによって表示される。【００３４】
同様に、同期クライアント５０ｂでも入力情報ＩＮ＿Ｎと、情報端末３０ｂにおける直前のゲームの同期状態Ｓｂ＿Ｎ−１を元に演算処理を実行し、Ｎ同期目のゲームの同期状態Ｓｂ＿Ｎが算出される。同期状態Ｓｂ＿Ｎは、情報出力部７０ｂによって表示される。【００３５】
ここで、同期状態Ｓａ＿Ｎ−１＝同期状態Ｓｂ＿Ｎ−１ならば、入力情報ＩＮａ＿Ｎ＝入力情報ＩＮｂ＿Ｎであるため、同期状態Ｓａ＿Ｎ＝同期状態Ｓｂ＿Ｎとなる（このようにＮ同期目の同期状態が等しい場合、以下、代表して同期状態Ｓ＿Ｎと表する）。【００３６】
このようにして情報端末３０ａ、３０ｂは、同一の入力情報を共有することで同一の同期状態を共有できる。
同期クライアント５０ａ、５０ｂは、同期回数ＮをＮ＋１に進め次の同期処理（ステップＳ００００ａ〜、ステップＳ００００ｂ〜）を同様に繰り返す。両方の同期クライアント５０ａ、５０ｂにおいて同一の入力情報が共有され続ける限り、同一の同期状態が共有される。【００３７】
次に、図３を用いてゲームの途中で、同期クライアント５０ａと同期サーバ１０との間の通信状態が一時的に悪くなった場合の動作を説明する。
ここでは同期クライアント５０ａと同期サーバ１０との間の通信が悪くなった場合を想定する。この時、同期クライアント５０ａは、所定時間内に入力情報ａ＿Ｎを同期サーバ１０へ送信することができない（ステップＳ０１０１ａ）。【００３８】
従来の技術を用いた場合には、当然相手からの情報を受信することもできず、通信状態が回復して相手からの情報を受信するまで同期処理を一時停止していた。このためゲームの途中で突然画面の動きが止まり、ゲームユーザに違和感を与え、ゲームの商品価値を著しく下げる原因ともなっていた。以下に続く本実施例の説明で、このような一時停止を起こすことなく処理を進める方法を示す。【００３９】
これ以降の処理は、上述した一時停止を防止する処理になるが、この間も同期クライアント５０ａは、サーバ１０へ入力情報ａ＿Ｎの送信が成功するまで再送処理を継続することに注意する。また、この時の同期回数Ｎを一般的に用いられる同期回数Ｎと区別するために以下Ｗと表記する。【００４０】
同期クライアント５０ａは、所定時間内に入力情報ａ＿Ｗを送信することができないため、通信状態が悪くなっていると判断する。このため、これ以降は、通信状態の悪化によって同期処理が一時停止されるのを回避する処理を行う。具体的には、まず、Ｗ−１同期目までは正常に処理できたことを同期サーバ１０へ送信しようとする（ステップＳ０１０７ａ）。実際には通信状態が悪いため、送信できるまで再送処理を継続する（ステップＳ０１０７ａ）が、前記同様、これと並行して以下の処理を行う。また、以下特に断りがない限りは、通信状態が悪いために情報の送受信ができず再送処理（或いは受信待ち処理）を行う場合は、その再送処理等と並行してそれ以降の処理を行うものとする。【００４１】
一方、同期クライアント５０ｂは、入力情報ｂ＿Ｗを同期サーバ１０へ送信する（ステップＳ０１０１ｂ）。同期サーバ１０は、受信した入力情報ｂ＿Ｗを同期クライアント５０ａへ送信する。実際には通信状態が悪いため、送信できるまで再送処理を継続する（ステップＳ０１０２ｂ）。同期クライアント５０ｂは、情報端末３０ａ側の通信状態が悪いため所定時間内に入力情報ａ＿Ｗを受信することができない（ステップＳ０１０３ｂ）。同期クライアント５０ｂは、通信状態が悪化していると判断し、前記同様、受信待ち状態を保ちつつ一時停止を回避する処理に入る。同期クライアント５０ｂは、Ｗ−１同期目まで正常に処理できたことを同期サーバ１０へ送信する（ステップＳ０１０４ｂ）。
同期サーバ１０は、同期クライアント５０ｂがＷ−１同期目までは正常に処理できたことを受信する（ステップＳ０１０５ｂ）。【００４２】
次に、図４を参照して、図３に続く動作を説明する。同期クライアント５０ａは、演算部６０ａに通信状態が悪化していることを通知する（ステップＳ０２０１ａ）。演算部６０ａは、現在保持している直前のゲームの同期状態Ｓ＿Ｗ−１をバックアップする（ステップＳ０２０２ａ）。【００４３】
同期クライアント５０ａは、通信状態の悪化のため入力情報ＩＮａ＿Ｗを作成できない。このため、代わりに直前の入力情報（＝ＩＮａ＿Ｗ−１＝ＩＮ＿Ｗ−１）を「みなし入力情報」として演算部６０ａへ渡す（ステップＳ０２０３ａ）。演算部６０ａは、正規の入力情報の代わりに受け取ったみなし入力情報ＩＮ＿Ｗ−１を元に演算処理を実行し、Ｗ同期目におけるゲームの同期状態を算出する（ステップＳ０２０４ａ）。ここで算出された同期状態Ｓａ＿Ｗは、「みなし入力情報」を用いて算出されているため情報端末３０ａ側における「仮の」値となる。同期クライアント５０ａは、同期回数ＷをＷ＋１に進めて次の仮同期処理（ステップＳ０２０３ａ〜）を同様に繰り返す。つまり、みなし入力情報ＩＮ＿Ｗ−１を用いて「仮の」Ｎ同期目の同期状態Ｓａ＿Ｎを算出することを繰り返す。このようにして、一時的に通信状態が悪化しても、同期処理を一時停止することなく続けることができる。【００４４】
同期クライアント５０ｂにおいても、同様に、通信状態の悪化を通知し（ステップＳ０２０１ｂ）、同期状態のバックアップ（ステップＳ０２０２ｂ）を行い、「みなし入力情報」を用いて仮の同期処理を繰り返す（ステップＳ０２０３ｂ〜）。これらの繰り返しは通信状態が回復するまで行われる。【００４５】
以下、図５〜図８を参照して、通信状態が回復した後の場合の動作を説明する。
通信状態が回復したことによって、図３のステップＳ０１０１ａにおいて送信された「情報端末３０ａ側においてＷ−１同期目まで正常に処理できた」という情報が同期サーバ１０に到達する（ステップＳ０３０１ａ）。
同期サーバ１０は、全ての同期クライアント５０で正常に行われた同期回数が同一回数であるかどうかを判断する（ステップＳ０３０２）。本実施例の場合は、全ての同期クライアント５０においてＷ−１同期目まで正常に同期処理が行われ、Ｗ同期目からは「みなし入力」を用いた仮の同期処理を行っており、正常に行われた同期回数が一致するものとする。このような場合には、全ての同期クライアント５０に対して同一の入力情報が渡され続けてきたこと（つまり、入力情報ＩＮａ＿Ｎ＝入力情報ＩＮｂ＿Ｎであること）が保証され、同期状態が同一であること（つまり、同期状態Ｓａ＿Ｎ＝同期状態Ｓｂ＿Ｎであること）が保証される。
このため、全ての同期クライアント５０において、同期回数を同一に揃えた後で、通常の同期処理を再開すれば、全同期クライアント５０における同期状態は同一に保たれることになる。このため、以降の処理において全同期クライアント５０において同期回数を同一に揃えることを目指す。【００４６】
同期サーバ１０は、全ての同期クライアント５０に通信が回復したということを伝える（ステップＳ０３０３）。この後、同期クライアント５０と同期サーバ１０との間で一回の通信を行うが（具体的には、ステップＳ０３０５〜ステップＳ０５０５まで）、その通信を行う間に必要な同期処理回数を通知する（ステップＳ０３０３）。この回数は、これまでサーバ、クライアント間で行われてきた通信時間に基づいて概算される。例えば、１回の通信に７０ｍｓかかり、１回の同期処理に３２ｍｓかかるとすれば、７０÷３２＝２余り６であり、必要な同期回数は２＋１＝３回となる。本実施例の場合、Ｋ回とする。
更に、相手の同期クライアント５０がどの回まで正常に同期処理を行ったかということ、及び相手の同期クライアント５０がどの回まで自己の同期情報を送信したかということを送信する（ステップＳ０３０３）。【００４７】
同期サーバ１０から通信回復の通知を受けた時点で、同期クライアント５０ａにおいて成された仮同期処理の回数をＭ回とする。同様に同期クライアント５０ｂにおいて成された仮同期処理の回数をＬ回とする。同期クライアント５０ａは、同期サーバ１０より通信回復通知を受信し（ステップＳ０３０４ａ）、現在の処理を終えている同期回数（＝Ｗ＋Ｍ−１）を同期サーバ１０へ送り返す（ステップＳ０３０５ａ）。同様に、同期クライアント５０ｂも同期サーバ１０より通信回復を受信し（ステップＳ０３０４ｂ）、現在処理を終えている同期回数（＝Ｗ＋Ｌ−１）を同期サーバ１０へ送り返す（ステップＳ０３０５ｂ）。同期サーバ１０は、全てのクライアント５０から現在処理を終了している同期回数を受信する（ステップＳ０３０６）。【００４８】
また、各同期クライアント５０は、ステップＳ０３０４において相手がどの回まで各自の同期情報を送信したかを受信している。このため、各同期クライアント５０は、相手が自分宛に送信した情報でまだ自分が受信していないものがいくつあるかを知ることができる。具体的には、同期クライアント５０ａは、入力情報ｂ＿Ｗを受信しておらず、同期クライアント５０ｂは、入力情報ａ＿Ｗを受信していない。通信状態が回復したことで、同期クライアント５０ａは、入力情報ｂ＿Ｗを受信することができる（ステップＳ０４０３ａ）。同様に、通信状態が回復したことで、同期サーバ１０は、入力情報ａ＿Ｗを受信することができる（ステップＳ０４０２ａ）。
入力情報ａ＿Ｗを受信した同期サーバ１０は、入力情報ａ＿Ｗを同期クライアント５０ｂへ送信する（ステップＳ０４０２ａ）。同期クライアント５０ｂは、入力情報ａ＿Ｗを受信する（ステップＳ０４０３ｂ）。また、これらの各処理が終わるのを待つ必要もないため、以下の処理が並行して行われることに注意する。またここで受信されたａ＿Ｗ、ｂ＿Ｗは保持しておく必要がないため破棄される。【００４９】
同期クライアント５０ａは、同期サーバ１０からの通知（ステップＳ０５０５ａ）があるまでは、みなし入力情報ＩＮａを用いて仮同期処理を実行、表示し続け（ステップＳ０５０１ａ、Ｓ０５０２ａ）、同期処理が一時停止するのを防ぐ。同期クライアント５０ｂにおいても同様である（ステップＳ０５０１ｂ、ステップＳ０５０２ｂ）。この間、同期サーバ１０側においては、次に述べる処理が並行して行われることになる。【００５０】
同期サーバ１０は、受信した同期回数の差（＝Ｌ−Ｍ）を無くすためには、これ以降、各同期クライアント５０がどの程度の速度で何回の同期処理を行えばいいかを算出する（ステップＳ０５０３）。例えば、同期クライアント５０ａによって送信された回数が１０３６回であり、同期クライアント５０ｂによって送信された回数が１０３９回である場合、その差は３回である。同期クライアント５０ａにおいて、１同期処理を３２ｍｓの速度で、９回行う一方、同期クライアント５０ｂにおいて、１同期処理を４８ｍｓの速度で、６回行えば、両同期クライアント５０における同期回数と同期状態が、同一時刻（＝２８８ｍｓ後）に最終的に一致する。【００５１】
同期サーバ１０は、算出した同期処理の速度と回数を各同期クライアント５０に対して通知する（ステップＳ０５０４）。なお、この間も、先ほど述べたように、同期クライアント５０は、同期処理が停止しないように、みなし入力情報ＩＮａを用いて仮同期処理を繰り返している（ステップＳ０５０１、ステップＳ０５０２）。また、この同期サーバ１０からの通知は、ステップＳ０３０３で算出された同期回数（＝Ｋ回）以内に行われる。もし、Ｋ回以内にこの同期サーバ１０からの通知を受信できなかった場合には、受信できるまで処理が一時停止されるため、Ｋは、十分大き目にとっておく必要がある。【００５２】
同期クライアント５０ａは、同期サーバ１０から、同期クライアント５０ｂと同期回数を合わせるために必要な同期処理速度、及び仮同期処理回数（＝Ｊ回）を受け取る（ステップＳ０５０５ａ）。同期クライアント５０ａは、Ｋ回の仮同期処理を通常の速度で終了（ステップＳ０５０６、ステップＳ０５０７）した後、同期サーバ１０より受け取った同期処理速度に従って、Ｊ回の仮同期処理を繰り返す（ステップＳ０６０１ａ、ステップＳ０６０２ａ）。【００５３】
同期クライアント５０ｂにおいても同様に、同期サーバ１０から同期処理速度、及び、仮同期処理回数（＝Ｊ−Ｌ＋Ｍ回）を受け取る（ステップＳ０５０５ｂ）。同期クライアント５０ｂは、同様に、Ｋ回の仮同期処理を通常の速度で終了した後、同期サーバ１０より受け取った同期処理速度に従って、Ｊ−Ｌ＋Ｍ回の仮同期処理を繰り返す（ステップＳ０６０１ｂ、ステップＳ０６０２ｂ）。【００５４】
この時点で、同期クライアント５０ａにおける同期処理回数は、（Ｗ−１）＋Ｍ＋Ｋ＋Ｊ回となる。また、同期クライアント５０ｂにおける同期処理回数は、（Ｗ−１）＋Ｌ＋Ｋ＋（Ｊ−Ｌ＋Ｍ）回＝（Ｗ−１）＋Ｍ＋Ｋ＋Ｊ回となり、両同期クライアント５０における同期回数は等しくなる。つまり、同期クライアント５０ａと同期クライアント５０ｂは、同一の同期状態を共有している状態に戻る。以降は、通常通りの同期処理（ステップＳ００００ａ〜ステップＳ０００６ａ、ステップＳ００００ｂ〜ステップＳ０００６ｂ）を繰り返すことできる。
これにより、通信状態が悪化した場合でも、相手の情報を受信するまでの間待ち状態に入り同期処理を一時停止することなく処理を続けるという効果が得られる。【００５５】
次に、図９を参照して、通信状態が悪化するタイミングが前回に比べ微妙にずれた場合について説明する。
ここでは同期回数ＮがＮ＝Ｗの場合を想定する。同期クライアント５０ａは、同期サーバ１０へ入力情報ａ＿Ｗを送信する（ステップＳ１００１ａ）。同期サーバ１０は、入力情報ａ＿Ｗを受信する。今回は、この入力情報ａ＿Ｗの受信完了後に情報端末３０ａ側の通信状態が悪くなるものとする。同期サーバ１０は、受信した入力情報ａ＿Ｗを同期クライアント５０ｂに送信する（ステップＳ１００２ａ）。
同様に、同期クライアント５０ｂは、入力情報ｂ＿Ｗを同期サーバへ送信する（ステップＳ１００１ｂ）。同期サーバは、入力情報ｂ＿Ｗを受信するが、既に情報端末３０ａ側の通信状態が悪くなっているため、入力情報ｂ＿Ｗを相手へ送信することができない（ステップＳ１００２ｂ）。
通信状態が悪くなっているため、同期クライアント５０ａは、所定時間内に入力情報ｂ＿Ｗを受信できない（ステップ１００３ａ）。【００５６】
一方、同期クライアント５０ｂは、入力情報ａ＿Ｗを受信できる（ステップＳ１００３ｂ）ので、同期入力情報ＩＮｂ＿Ｗを作成することができる（ステップＳ１００４ｂ）。演算部６０ｂは、同期入力情報ＩＮｂ＿Ｗを受け取り、Ｗ同期目の正常な処理を実行し、Ｗ同期目の状態を表示する（ステップＳ１００５ｂ）。このため、同期クライアント５０ｂの同期回数は、同期クライアント５０ａに比べて一つ進むことになる。
続いて、同期クライアント５０ｂは、同期回数をＷ＋１に進めて、入力情報ｂ＿Ｗ＋１を同期サーバ１０へ送信する（ステップＳ１００６ｂ）。同期サーバ１０は、入力情報ｂ＿Ｗ＋１を受信するが、前回同様、情報端末３０ａ側の通信状態が悪いため入力情報ｂ＿Ｗを同期クライアント５０ａへ送信できない（ステップＳ１００７ｂ）。
同期クライアント５０ａは、入力情報ｂ＿Ｗを受信することができず（ステップＳ１００３ａ）、通信状態が悪化していると判断する。このため、同期処理が一時停止されるのを防ぐ処理を以後行う。前記同様、Ｗ−１同期目までは正常に処理できたことを同期サーバ１０へ送信する（ステップＳ１００４ａ）。実際には、通信状態が悪いため再送処理を継続する。【００５７】
一方、同期クライアント５０ｂも、所定時間内に入力情報ａ＿Ｗを受信できない（ステップＳ１００８ｂ）。同期クライアント５０ｂも同様に通信状態が悪化していると判断し、Ｗ同期目までは正常に処理できたことを同期サーバ１０へ送信する（ステップＳ１００９ｂ）。
同期クライアント５０ａは、Ｗ−１同期目まで正常に処理を行ったのに対し、同期クライアント５０ｂはＷ同期目までも正常に処理を行っていることに注意する。
同期クライアント５０ａは、演算部６０ａに通信状態が悪化していることを通知する（ステップＳ１１０１ａ）。演算部６０ａは、直前の同期状態Ｓ＿Ｗ−１をバックアップする（ステップＳ１１０２ａ）。同期クライアント５０ａは、同期処理が一時停止されるのを防ぐため、直前の同期入力情報ＩＮ＿Ｗ−１を「みなし入力情報」として用いながら、前回同様、仮の同期処理を行う（ステップＳ１１０３ａ、ステップＳ１１０４ａ）。【００５８】
一方、同期クライアント５０ｂも同様に演算部６０ｂに通信状態が悪化していることを通知する（ステップＳ１１０１ｂ）。演算部６０ｂは、直前の同期状態Ｓ＿Ｗをバックアップする（ステップＳ１１０２ｂ）。ここで、演算部６０ａは、同期回数がＷ−１の時の同期状態をバックアップしたのに対し、演算部６０ｂは、同期回数がＷの時の同期状態のバックアップを行っていることに注意する。
同期クライアント５０ｂは、同期処理が一時停止されるのを防ぐため、直前の同期入力情報ＩＮ＿Ｗを「みなし入力情報」として用いながら、同様に仮の同期処理を行う（ステップＳ１１０３ｂ、ステップＳ１１０４ｂ）。
ここで、同期クライアント５０ａは、「みなし入力情報」として同期入力情報ＩＮ＿Ｗ−１を用いているのに対し、同期クライアント５０ｂは、「みなし入力情報」として同期入力情報ＩＮ＿Ｗを用いていることに注意する。【００５９】
次に、図１１を参照して、通信状態が回復した後の場合について説明する。
通信状態が回復したことによって、図９のステップＳ１００４ａにおいて送信された「情報端末３０ａ側においてＷ−１同期目まで正常に処理できた」という情報が同期サーバ１０に到達する（ステップＳ１２０１ａ）。同期サーバ１０は、全ての同期クライアントで正常に行われた同期回数が同一回数であるかどうかを判断する（ステップＳ１２０２）。本実施例の場合は、情報端末３０ａ側においてＷ−１同期目であるのに対して情報端末３０ｂ側においては、Ｗ同期目まで正常に処理が行われている。同期サーバ１０は、同期入力情報ＩＮｂ＿Ｗが同期入力情報ＩＮ＿Ｗ−１と同一の入力内容かどうかをチェックする（ステップＳ１２０３）。【００６０】
同期入力情報ＩＮｂ＿Ｗと同期入力情報ＩＮｂ＿Ｗ−１が同一の場合を考える。情報端末３０ａ側においては、通信状態の悪化を通知（ステップＳ１１０１ａ）後、「みなし入力情報」として同期入力情報ＩＮａ＿Ｗ−１が用い続けられている。一方、情報端末３０ｂ側においては、「みなし入力情報」として同期入力情報ＩＮｂ＿Ｗが用い続けられている。ここで、情報端末３０ａ側、情報端末３０ｂ側それぞれにおいて用い続けられている「みなし入力情報」の同期回数がＷ−１とＷで等しくないが、結果として、両者で用い続けられている入力情報は、同一のものになる。何故なら、同期入力情報ＩＮｂ＿Ｗ＝同期入力情報ＩＮｂ＿Ｗ−１であり、同期入力情報ＩＮａ＿Ｗ−１＝同期入力情報ＩＮｂ＿Ｗ−１だからである（Ｗ−１同期目までは正常に同期処理が行われているため、双方における入力情報は等しいことに注意する）。従って、任意の同期回数Ｎにおいて、同期入力情報ＩＮａ＿Ｎ＝同期入力情報ＩＮｂ＿Ｎであることが保証され、同期状態Ｓａ＿Ｎ＝同期状態Ｓｂ＿Ｎであることが保証される。
このため、全ての同期クライアント５０において同期回数を同一に揃えた後で、通常の同期処理を再開すれば、全クライアント５０における同期状態は同一に保たれることになる。この状況は、前記の例（図５参照）と全く同じであり同様の処理（図７及び図８のステップＳ０３０３〜ステップＳ０３０６）を行うことで、通常の同期処理再開へと導くことができる。前記と異なる点は、同期クライアント５０ｂが入力情報ｂ＿Ｗ＋１まで送信している（ステップＳ１００６ｂ）点である（ステップＳ０１０１ｂ、ステップＳ１００１ｂ、ステップＳ１００６ｂを比較）。【００６１】
次に、図１２を参照して、図６で説明した処理に対応する処理を説明する。
各同期クライアント５０は、ステップＳ０３０４において相手がどの回まで各自の同期情報を送信したかを受信している。このため、各同期クライアント５０は、相手が自分宛に送信した情報でまだ自分が受信していないものがいくつあるかを知ることができる。具体的には、同期クライアント５０ａは、入力情報ｂ＿Ｗ、及び、入力情報ｂ＿Ｗ＋１を受信していない。また、同期クライアント５０ｂは、入力情報ａ＿Ｗ＋１を受信していない。また、同期クライアント５０ａは、相手が入力情報ａ＿Ｗ＋１まで受信待ちであることを知ることができるが、現時点では、まだ入力情報ａ＿Ｗ＋１を送信していないことに注意する。
通信状態が回復したことで、同期クライアント５０ａは、入力情報ｂ＿Ｗを受信することができる（ステップＳ１３０３ａ）。続いて、同期クライアント５０ｂが入力情報ａ＿Ｗ＋１の受信を待っていることから、同期クライアント５０ａは、入力情報ａ＿Ｗ＋１を送信する（ステップＳ１３０４ａ）。同期サーバ１０は、入力情報ａ＿Ｗ＋１を受信し相手へ送信する（ステップＳ１３０５ａ）。同期クライアント５０ｂは、入力情報ａ＿Ｗ＋１を受信する（ステップＳ１３０６ｂ）。また、同期クライアント５０ａは、ステップＳ１００７ｂにおいて送信された入力情報ｂ＿Ｗ＋１を受信する（ステップＳ１３０６ａ）。以上の処理により、送受信待ちの状態を全て解消できる。【００６２】
次に、ステップＳ１２０３において同期入力情報ＩＮｂ＿Ｗと同期入力情報ＩＮｂ＿Ｗ−１が等しくなかった場合の処理について説明する。この場合、Ｗ以上のＮにおいて同期入力情報ＩＮａ＿Ｎと同期入力情報ＩＮｂ＿Ｎが等しくないことになる。つまり、それぞれの同期クライアント５０において異なった入力情報が渡され続けてきたことになる。従って、Ｗ以上のＮにおいて同期状態Ｓａ＿Ｎと同期状態Ｓｂ＿Ｎは等しいことが保証されなくなる。このため、各同期クライアント５０における同期状態を通信状態が悪化する直前のバックアップした状態に戻した上で、通常の同期処理を再開する必要がある。【００６３】
なお、この状態のままいきなりバックアップした状態に戻すと、同期クライアント５０ａの同期回数は、Ｗ−１に戻る（ステップＳ１１０２ａ）のに対し、同期クライアント５０ｂの同期回数は、Ｗまでしか戻らない（ステップＳ１１０２ｂ）。
続いて、同期クライアント５０ｂは、入力情報ａ＿Ｗ＋１の受信待ち状態に戻る（ステップＳ１００８ｂの続き）。入力情報ａ＿Ｗ＋１が同期クライアント５０ｂに届けられるためには、同期クライアント５０ａが入力情報ｂ＿Ｗを受信し、同期回数Ｗにおける演算処理を行った後、入力情報ａ＿Ｗ＋１を送信し、これが同期サーバ１０を経由して同期クライアント５０ｂに送信されなくてはならない。この作業には通常より長時間を要するため、同期クライアント５０ｂが所定時間内に入力情報ａ＿Ｗ＋１を受信できなかった場合、再び通信状態が悪化していると誤判断し、同期処理が一時停止されるのを防ぐ処理を再度開始してしまう。
このような状態は、一時停止防止処理の連鎖を招き、結果として全く入力処理を受付けない状態を引き起こす可能性がある。このため、再び一時停止防止処理が開始されないような状態にした上で同期処理を再開するため、以下の手続きを踏む。【００６４】
次に、図１３を参照して、前記の目的を果たすための処理について説明する。
同期サーバ１０は、同期クライアント５０に通信状態が回復したことを通知する（ステップＳ１４０１）と共に、同期状態をＳ１１０２においてバックアップした状態に戻すことが必要なことを通知する（ステップＳ１４０１）。
同期クライアント５０は、通信状態が回復したことを受信し（ステップＳ１４０２）、バックアップした状態に戻す必要があることを知る。【００６５】
ここで、図１４を参照して、各同期クライアント５０において同期入力情報を相手と揃えるための処理について説明する。
同期クライアント５０ａは、ステップＳ１００２ｂで送信された入力情報ｂ＿Ｗを受信する（ステップＳ１５０３ａ）。これにより、同期入力情報ＩＮ＿Ｗを作成することができるが、これは後で用いるためバックアップしておく（ステップＳ１５０３ａ）。
続いて、同期クライアント５０ａは、入力情報ａ＿Ｗ＋１を送信する（ステップＳ１５０４ａ）。入力情報ａ＿Ｗ＋１を受信した同期サーバ１０は、同期クライアント５０ｂへ送信する（ステップＳ１５０５ａ）。同期クライアント５０ｂは、入力情報ａ＿Ｗ＋１を受信する（ステップＳ１５０６ｂ）。これにより、同期入力情報ＩＮ＿Ｗ＋１を作成することができるが、これは、後で用いるためバックアップしておく（ステップＳ１５０６ｂ）。
続いて、同期クライアント５０ａは、ステップＳ１００７ｂで送信されたｂ＿Ｗ＋１を受信する（ステップＳ１５０６ａ）。同様に同期入力情報ＩＮ＿Ｗ＋１を作成することができるが、これも後で用いるためにバックアップしておく（ステップＳ１５０６ａ）。
この時点で、両同期クライアント５０において、Ｗ＋１同期目までの入力情報を用意することができたことになる。なお、これらの処理中にも、各同期クライアント５０においては、「みなし入力情報」を用いた仮の同期処理が行われている（ステップＳ１１０３ａ、ステップＳ１１０４ａ、ステップＳ１１０３ｂ、ステップＳ１１０４ｂ）ことにより、同期処理が一時停止されるのを防いでいる。
各同期クライアント５０は、Ｗ＋１同期目の同期入力情報ＩＮ＿Ｗ＋１の作成が完了した時点で、同期サーバ１０に対し、完成した旨を通知する（ステップＳ１４０３ａ、ステップＳ１４０３ｂ）。同期サーバ１０は、全ての同期クライアント５０から必要な入力情報の作成が完了したことを受信する（ステップＳ１４０４）。同期サーバ１０は、バックアップ状態に戻した後、通常の同期処理に戻るまでの間、各同期クライアント５０においてどの程度の同期処理速度で何回同期処理を行えば同一時刻に同期回数が一致し得るかを計算する（ステップＳ１４０５）。具体的には、同期クライアント５０ａと同期クライアント５０ｂにおける同期回数の差は、１回である。従って、同期クライアント５０ａにおいて１同期処理を３２ｍｓで２回行うのに対し、同期クライアント５０ｂにおいては１同期処理を６４ｍｓで１回行えば６４ｍｓ経過後に両者の同期回数は一致し、同期状態も一致する。同期サーバ１０は計算結果を各同期クライアント５０に通知する（ステップＳ１４０５）。同期クライアント５０は、同期状態をバックアップした状態に戻す様指示を受ける（ステップＳ１４０６）。同期クライアント５０ａは、同期状態をＳ＿Ｗ−１に戻す（ステップＳ１４０６ａ）。一方、同期クライアント５０ｂは、同期状態をＳ＿Ｗに戻す（Ｓ１４０６ｂ）。【００６６】
次に、図１５を参照して、通常の同期処理に戻るまでの処理について説明する。
同期クライアント５０において同期状態に戻した時刻をｔ＝０ｍｓとする。同期クライアント５０ａにおいて、作成済みの同期入力情報ＩＮ＿Ｗ（ステップＳ１５０３ａ）を用いて時刻ｔ＝３２ｍｓにおいてＷ同期目の処理を実行し表示する（ステップＳ１６０１ａ、ステップＳ１６０２ａ）。更に作成済みの同期入力情報ＩＮ＿Ｗ＋１（ステップＳ１５０６ａ）を用いて時刻ｔ＝６４ｍｓにおいてＷ＋１同期目の処理を実行し表示する（ステップＳ１６０１ｂ、ステップＳ１６０２ｂ）。
このようにして同期状態をバックアップしたものに戻した時から６４ｍｓ後において、全同期クライアント５０における同期回数、同期状態を同一に揃えることができる。後は、通常の処理を行うことで、同期処理を一時停止することなく処理を継続することができる。
【実施例２】
【００６７】
次に、本発明の第２の実施形態として、図１に示す同期通信ゲームシステムを用いた別の同期処理動作について説明する。
まず、図１７を参照して、Ｎ同期目に入力された情報を、Ｎ＋ｍ（但しｍ＞０の整数）同期目の処理に用いながらゲームの進行をすすめる場合について説明する。尚、同期クライアント５０同士間でデータ送受信を行うために同期サーバ１０は、上述した実施形態（以下、第１の実施形態とも称する）と同様にデータの中継処理を行うが、このデータの中継処理については、図の簡略化のためにその説明を省略する。
以下、具体的にｍ＝２の場合について説明する。現在、Ｎ＋２同期目の処理を行おうとしているものとする（ステップＳ２００３ａ〜及び、ステップＳ２００３ｂ〜）。同期クライアント５０ａは、入力情報としてＩＮ＿Ｎ＋２を用いる代わりに２同期前の入力情報ＩＮ＿Ｎ（＝ａ＿Ｎ及びｂ＿Ｎ）を用いる。ｂ＿Ｎは、２同期も前に同期クライアント５０ｂから送信されている（ステップＳ２００１ｂ）。このため、Ｎ同期目、Ｎ＋１同期目の処理を行う間にｂ＿Ｎが同期クライアント５０ａへ送信されていれば、同期クライアント５０ｂからの入力情報の受信を待つことなく処理を進めることができる。同期クライアント５０ａは、ＩＮ＿Ｎ＋２を渡す代わりにＩＮ＿Ｎを演算部６０ａに渡す（ステップＳ２００３ａ）。演算部６０ａは、ＩＮ＿Ｎを元にＮ＋２同期目の処理を行う（ステップＳ２００４ａ）。同期クライアント５０ｂでも同様の処理が行われる。このように全ての同期クライアント５０において同一の入力情報を共有することができ同一の同期状態を共有することができる。【００６８】
次に、図１８を用いてゲームの途中で、同期クライアント５０ａと同期サーバ１０との間の通信状態が一時的に悪くなった場合の動作を説明する。具体的に、同期クライアント５０ａにおいてＷ同期目の処理を行おうとしている時に、ａ＿Ｗの送信を行うことができたが、ｂ＿Ｗ−２を受信することができなかった場合を想定する（ステップＳ２１０１ａ）。上述した実施形態と同様に、同期クライアント５０ａは、同期サーバ１０に対し、通信状態悪化のためＷ−１同期目まで正常に処理できたことを送信できるまで再送処理を継続する（ステップＳ２１０２ａ）。また同様に、同期クライアント５０ｂと同期サーバ１０との間の通信状態も一時的に悪くなった場合を想定し、同期クライアント５０ｂにおいても同様にｂ＿Ｗの送信を行うことができたが、ａ＿Ｗ−２を受信することができなかった場合を想定する（ステップＳ２１０１ｂ）。上述した実施形態と同様、同期クライアント５０ｂは、同期サーバ１０に対し、通信状態悪化のためＷ−１同期目まで正常に処理できたことを送信できるまで再送処理を継続する（ステップＳ２１０２ｂ）。【００６９】
同期クライアント５０ａは、上述した実施形態と同様に演算部６０ａに対し通信状態が悪化したことを通知する（ステップＳ０２０１ａと同様）。上述した実施形態と同様に演算部６０ａは、Ｓ＿Ｗ−１をバックアップする（ステップＳ０２０２ａと同様）。同期クライアント５０ｂにおいても同様に、通信状態の悪化を演算部６０ｂに通知し（ステップＳ０２０１ｂと同様）、演算部６０ｂは、Ｓ＿Ｗ−１をバックアップする（ステップＳ０２０２ｂと同様）。上述した実施形態と同様に、同期クライアント５０ａは、みなし入力情報としてＩＮ＿Ｗ−１を演算部６０ａへ譲渡し続ける（ステップＳ０２０３ａと同様）。演算部６０ａは、上述した実施形態と同様に、みなし入力情報ＩＮ＿Ｗ−１を用いてＷ同期目以降の処理を行う（ステップＳ０２０４ａと同様）。同期クライアント５０ｂ、演算部６０ｂについても同様の処理を行う。このように、通信状態が悪化した場合でも、正常な入力情報の代わりにみなし入力情報を用いて処理を行うことにより、同期処理の一時停止を防ぐことができ、画面が一時停止する等の違和感をユーザに与えなくて済む。【００７０】
次に、同期クライアント５０ａと同期サーバ１０との間の通信状態、及び、同期クライアント５０ｂと同期サーバ１０との間の通信状態が回復した場合の処理について説明する。上述した実施形態と同様に、Ｓ２１０２ａにおいて送信中であった「Ｗ−１同期目まで正常に処理できた」という情報が、同期クライアント５０ａから同期サーバ１０に対して送信される（ステップＳ０３０１ａと同様）。同期クライアント５０ｂについても同様に、「Ｗ−１同期目まで正常に処理できた」という情報が同期サーバ１０に対して送信される。上述した実施形態と同様に、同期サーバ１０は、全ての同期クライアント５０において正常に行われた同期回数が同じであったかを調べる（ステップＳ０３０２と同様）。本実施形態においては、全ての同期クライアント５０において正常に行われた同期回数は、Ｗ−１と同じである。同期サーバ１０は、上述した実施形態と同様に、同期クライアント５０に対し通信が回復したことを通知し、次のサーバ間通信までに必要な同期クライアント５０側での同期処理回数（上述した実施形態と同様に、Ｋ回とする）、及び、相手の同期クライアント５０がどの回まで正常に同期処理を行ったかということを送信する（ステップＳ０３０３と同様）。【００７１】
通信の回復通知を受けた各同期クライアント５０は、上述した実施形態と同様に、現在の同期回数を同期サーバ１０へ通知し、同期サーバ１０は、これを受信する（ステップＳ０３０５ａ、ステップＳ０３０５ｂ、ステップＳ０３０６と同様）。今回も上述した実施形態と同様に、同期クライアント５０ａにおいて成された仮同期処理の回数をＭ回とし、同期クライアント５０ｂにおいて成された仮同期処理の回数をＬ回とする。【００７２】
また、上述した実施形態と同様に、各同期クライアント５０は、相手が自分宛に送信した情報でまだ自分が受信していないものを受信する（ステップＳ０４０２ａ、ステップＳ０４０３ａと同様）。【００７３】
同期サーバ１０は、上述した実施形態と同様に、受信した同期回数の差（＝Ｌ−Ｍ）を無くすために必要な各同期クライアント５０における仮の同期処理回数と速度を算出する（ステップＳ０５０３と同様）。同期サーバ１０は、上述した実施形態と同様に、各同期クライアント５０に対し算出した処理速度と回数を通知する（ステップＳ０５０４と同様）。【００７４】
各同期クライアント５０は、上述した実施形態と同様に、必要回数分だけ、みなし入力情報を用いた同期処理を行った後、通常の同期処理を再開することができる（図７、図８に同じ）。同期処理を再開する際の同期回数をＶ回とする。本実施形態においては、Ｖ同期目の処理を行うのにＶ−ｍ同期目の入力情報を用いる。このため、同期処理を再開するまでの間にあらかじめＶ−ｍ、Ｖ−ｍ＋１、・・・Ｖ−１同期目の入力情報を揃えておくのが望ましい。このように設定することにより、Ｖ同期目の処理を行うために、Ｖ−ｍ同期目の入力情報が相手から届くのを待つ必要がなく、速やかに次の同期処理を行うことができる。【００７５】
次に、ｍ＝２の場合において同期クライアント５０ａと同期サーバ１０との間の通信状態のみが一時的に悪くなった場合についての処理方法を説明する。具体的には、同期クライアント５０ａにおいて、Ｗ回目の同期処理を行おうとしている際に、ａ＿Ｗの送信を行うことができたが、ｂ＿Ｗ−２を受信することができなかった場合を想定する（ステップＳ２２０１ａ）。上述した実施形態と同様に、同期クライアント５０ａは、通信状態悪化のためＷ−１同期目まで正常に処理できたことを同期サーバ１０に送信できるまで再送処理を継続する（ステップＳ２２０２ａ）。一方、同期クライアント５０ｂは、同期サーバ１０よりａ＿Ｗまで受信することができるため、Ｗ＋２同期目まで正常に処理を進めることができる（ステップＳ２２０１ｂ〜ステップＳ２２０６ｂ）。同期クライアント５０ｂは、ａ＿Ｗ＋１を受信することができないため、同期サーバ１０に対し通信状態悪化のためＷ＋２同期目まで正常に処理できたことを送信する（ステップＳ２２０７ｂ）。【００７６】
上述した実施形態と同様に、同期クライアント５０ａは、演算部６０ａに対し通信状態が悪化したことを通知し、演算部６０ａは、Ｓ＿Ｗ−１をバックアップする（ステップＳ１１０１ａ、ステップＳ１１０２ａと同様）。以降、通常の同期処理が再開されるまでの間、みなし入力情報ＩＮａ＿Ｗ−１を用いて仮の同期処理を行う（ステップＳ１１０３ａ、ステップＳ１１０４ａと同様）。同期クラインと５０ｂについても同様に、Ｓ＿Ｗ＋２をバックアップし、ＩＮｂ＿Ｗ＋２をみなし入力情報として用いながら仮の同期処理を行う（ステップＳ１１０１ｂ〜ステップＳ１１０４ｂと同様）。【００７７】
次に、同期クライアント５０ａと同期サーバ１０との間の通信状態が回復した時の処理について説明する。ステップＳ２２０２ａにおいて送信された情報が同期サーバ１０へ届く（ステップＳ１２０１ａと同様）。今回は、各同期クライアント５０において正常に行われた同期回数が異なるため（Ｗ−１≠Ｗ＋２）、ＩＮｂ＿Ｗ＋２、ＩＮｂ＿Ｗ＋１、ＩＮｂ＿Ｗ、ＩＮｂ＿Ｗ−１が全て同じであったかを確認する（ステップＳ１２０３）。もし、これら全てが同じであった場合は、各演算部において全く同じ入力情報が渡され続けてきたことになり、各同期回数における同期状態は同一になる。上述した実施形態と同様に、各同期クライアント５０の同期回数を一致させてやれば、同期状態を同一にすることができ、通常の同期処理を再開できる。これ以降の処理は、上述した実施形態と同様の処理になる。【００７８】
他方、ＩＮｂ＿Ｗ＋２、ＩＮｂ＿Ｗ＋１、ＩＮｂ＿Ｗ、ＩＮｂ＿Ｗ−１のうちどれか一つでも異なる場合は、各同期クライアントにおいて異なった入力情報が渡されていることになり、もはや各同期クライアントにおける同期状態が同一であることは、保証できない。このため、上述した実施形態と同様に、同期サーバ１０は、各同期クライアント５０に対し同期状態をバックアップした状態に戻す必要があることを通知する（ステップＳ１４０１と同様）。以降、上述した実施形態と同様に、作成済みの入力情報を準備し、算出された処理速度に従って同期処理を行った後、通常の同期処理を再開することができる。また、上述した実施形態と同様に、同期処理を再開する際の回数をＶとした場合、同期処理を再開するまでの間にあらかじめＶ−ｍ、Ｖ−ｍ＋１、・・・Ｖ−１同期目の入力情報を揃えておくのが望ましい。【００７９】
また、上述した実施形態では、みなし入力情報が用いられ始めてから通常の同期処理が再開されるまでの間にユーザが行ったボタン操作等は、全て無視されてしまう。これを防ぐため、みなし入力情報を用いている間は、実際の入力情報を別途保存しておき、通常の同期処理が再開された時点で、保存しておいた情報を入力情報として用いることで、ユーザの行った入力処理を破棄しないで用いることができる。但し、保存した全ての情報を用いていると常にユーザの入力した情報が遅れて用いられることになり、ユーザは、常に違和感を感じることになる。これを防ぐため、例えば、図２０に示すように、保存した情報を一つ飛ばしに用いることで最終的にはユーザが入力した情報を遅滞なく用いることができ、ユーザの入力した情報の一部を反映させることができる。
入力情報の飛ばしについては、一つ飛ばしに限定されものではない。例えば、ｎを１以上の整数として、ｎ個飛ばしに入力情報を用いてもよい。
上述したように構成することにより、みなし入力情報を用いている間の実際の入力情報を保存しておき、後でその入力情報をｎ個飛ばしで用いることで、ユーザが入力した情報を全て破棄することを防ぐことが可能になる。【００８０】
ここで、上述したこれまでの処理の概要を、図２１を参照してまとめて説明する。
図１に示した同期通信ゲームシステム１は、同期処理を実行し（ステップＳ３００１）、各同期ごとに通信障害が発生しているかどうかをチェックし（ステップＳ３００２）、上記ステップＳ３００２で通信障害が発生していると判断された場合には、現在の正常な同期状態をバックアップする（ステップＳ３００３）。他方、上記ステップＳ３００２で通信障害が発生していないと判断された場合には、上記ステップＳ３００１に戻り、同期処理を実行する。
上記ステップＳ３００３に続き、それ以後、正常な同期処理が再開されるまで、直前の正常な入力情報をみなし入力情報として用い、仮の同期処理を行う（ステップＳ３００４）。次いで、通信状態が回復したかどうかを判断し（ステップＳ３００５）、上記ステップＳ３００５で通信状態が回復したと判断されかつ回復が確認できた場合には、全てのクライアントにおいて同一同期目において仮の同期処理が開始されたかどうかを判断し（ステップＳ３００６）、上記ステップＳ３００６で全てのクライアントにおいて同一同期目において仮の同期処理が開始されていると判断された場合は、全てのクライアントにおいて同期回数が同一になるように調整し、後で用いることになる入力情報を事前に準備して（ステップＳ３００７）、通常の同期処理を再開する（ステップＳ３００８）。他方、上記ステップＳ３００６で全てのクライアントにおいて同一同期目において仮の同期処理が開始されていないと判断された場合には、各クライアントで用いられた同期情報（みなし入力情報を含む）が結果として同一のものであったかどうかを判断し（ステップＳ３００９）、上記ステップＳ３００９における判断の結果、同一のものであった場合には、上述したステップＳ３００７の処理を行い、上述したステップＳ３００８で示した、通常の同期処理を再開する。他方、上記ステップＳ３００９における判断の結果、各クライアントで用いられた同期情報が同一のものでなかった場合には、後で用いることになる入力情報を事前に準備して（ステップＳ３０１０）、各クライアントの同期状態をバックアップしておいた同期状態に戻す（ステップＳ３０１１）。そして、同期状態をバックアップしておいたものに戻した後、上述したステップＳ３００８で示した、通常の同期処理を再開する。
【図面の簡単な説明】
【００８１】
【図１】本発明による同期通信装置の一実施形態である、複数の利用者が同時に参加する形式の同期通信ゲームシステムの構成を示す概略ブロック図である。
【図２】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図３】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図４】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図５】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図６】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図７】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図８】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図９】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図１０】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図１１】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図１２】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図１３】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図１４】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図１５】図１に示す同期通信ゲームシステムの動作を説明するための動作フロー図である。
【図１６】従来のファミコン通信システムによるデータのタイミングを示すタイミングチャートである。
【図１７】図１に示す同期通信ゲームシステムの別の実施形態における動作を説明するための動作フロー図である。
【図１８】図１に示す同期通信ゲームシステムの別の実施形態における動作を説明するための動作フロー図である。
【図１９】図１に示す同期通信ゲームシステムの別の実施形態における動作を説明するための動作フロー図である。
【図２０】図１に示す同期通信ゲームシステムの別の実施形態における動作を説明するための動作フロー図である。
【図２１】図１７から図２０に示した動作の概略を説明するためのフローチャートである。
【符号の説明】
【００８２】
１      同期通信ゲームシステム
１０    同期サーバ
２０    通信ネットワーク
３０ａ  情報端末
３０ｂ  情報端末
４０ａ  外部情報入力部
４０ｂ  外部情報入力部
５０ａ  同期クライアント
５０ｂ  同期クライアント
６０ａ  演算部
６０ｂ  演算部
７０ａ  情報出力部
７０ｂ  情報出力部
【図１】
0003984643.tif 000002
【図２】
0003984643.tif 000003
【図３】
0003984643.tif 000004
【図４】
0003984643.tif 000005
【図５】
0003984643.tif 000006
【図６】
0003984643.tif 000007
【図７】
0003984643.tif 000008
【図８】
0003984643.tif 000009
【図９】
0003984643.tif 000010
【図１０】
0003984643.tif 000011
【図１１】
0003984643.tif 000012
【図１２】
0003984643.tif 000013
【図１３】
0003984643.tif 000014
【図１４】
0003984643.tif 000015
【図１５】
0003984643.tif 000016
【図１６】
0003984643.tif 000017
【図１７】
0003984643.tif 000018
【図１８】
0003984643.tif 000019
【図１９】
0003984643.tif 000020
【図２０】
0003984643.tif 000021
【図２１】
0003984643.tif 000022