パスワードを忘れた? アカウント作成
15650752 story
インターネット

「光速でも遅すぎる」世界で格闘ゲームに画期的なユーザ体験をもたらした「ロールバック方式」 57

ストーリー by nagazou
心理的テクニックも活用 部門より

Q&Aサイト「Quora」に投稿された質問に、

オンラインゲームでは、お互いの位置がだいぶ離れていても (日本とブラジルくらい) 何故素早く同期できるのですか?どのように通信しているのでしょうか?

というものがあったそうだ。この質問にネットワークエンジニアのNakamura Yuta氏が、鉄拳7を例にしつつ詳細な回答をおこなっている。こうした格闘ゲーム上で、海外レベルで離れている者同士が、なぜ素早く同期して通信できているのかに関して同氏は、結論からいえば素早くは同期しておらず遅延は発生していると回答。日本とブラジルで通信をした場合、Pingコマンドで275ms、これをフレームに換算すると16.5フレームほどの遅延があるという。

この遅延自体を解消することは現代科学では不可能だが、こうした遅延を遅延と思わせないための技術として2016年頃、「ロールバック方式」という同期方式が開発されたのだという。ロールバック方式は、入力到達から攻撃HITまでの間にある攻撃モーションの一部を省略することで同期を取る方法なのだそう。またゲームプログラムがプレイヤーの未来予測をおこなうなどの処理をしているとのこと。

  • by Anonymous Coward on 2022年05月13日 18時01分 (#4248645)

    もうゲーム始める前に最後まで予測して、「You lose!」って結果だけ返すようにすればええんちゃう?

    ここに返信
    • by Anonymous Coward

      負け確のところ待たされるのはすごく長く感じるだろうから、演出上、ほんとにそういうこともしてるのかも。ソースはみてない。

    • by Anonymous Coward

      パチンコやパチスロは抽選スイッチONで抽選開始するのでそれよりも高度だね
      もうだいぶパチスロ打ってないから今でもそうなのかは知らないけど

    • by Anonymous Coward

      俺らの人生もYou died!でええんやで

  • by nnnhhh (47970) on 2022年05月13日 17時33分 (#4248628) 日記

    ネットアクションゲーはスプラトゥーンぐらいしかやらないのでそれしか知らないが、やはりこれも予測して動かしているようだ(そらそうか

    時々段差から落ちた人が戻るときがある。
    飛び降りると予測したらはずれたんじゃないかなと思ってる。

    それ以外でも同期が必要な動作などは時々妙に遅れる時がある。
    これらは同期待ってるのに遅延した場合なんだろうな

    と言っても普通にプレイしていたらたまに感じるぐらいで、
    あとはうまくごまかされているのだろう
    当たってないのに死んだ!っていうのもかなり少ない。上手くできるもんだ。

    しかしさすがにヨーロッパの人とゲームすると結構らぐい
    しばらくたってから死ぬ、段差と言わず敵がワープするが頻発する

    表題の格闘ゲームはブラジルとゲームしてもわからないぐらい凄いんかね?

    ここに返信
    • by Anonymous Coward

      格闘ゲームの技術が他ゲーより優れてるって話じゃなくて、表題の通り格闘ゲームは「光速でも遅すぎる」から、
      ロールバック方式じゃないと同国内であってもゲーム体験に影響が出てくる、なので格闘ゲームを例にして説明したという話。

      「4フレーム以上遅延したらゲームになりません」と書いてあるけど、プロの世界だと1フレームの差を競っているので、
      オンライン大会とオフライン大会ではかなり違ってくるようです。
      例えばストリートファイターVだと、弱パンチの発生が3フレームですからね。

      • もちろん限界はあると思うんだけども

        このゲームでは「素人が遊ぶ分にはブラジルとやっても気にならない」ぐらいにうまく処理されてるんかなと
        > オンラインゲームでは、お互いの位置がだいぶ離れていても (日本とブラジルくらい) 何故素早く同期できるのですか?どのように通信しているのでしょうか?

        とあるからさ

        # どうしても減らしたければニュートリノで直結すればちょっと減るか

        • by 90 (35300) on 2022年05月13日 22時16分 (#4248787) 日記

          リンク先を見ると実際の大技では入力からアニメーションが始まるものの、発動するまで10F以上を要するものが多いようです。格ゲーマーは1F(16.67ms)を見切ると言われますが、書き込みから反映までの遅延が伸びるとフォールトかバッファアンダーランか何かが発生することによって検知できるというのが正しいようで、反応時間で10Fを割る人はほぼいないようです。

          入力から結果コンペアまで10Fということは167msの猶予があります。光速で150ms移動すると4.5万キロ、地球の周長は4万キロなのでブラジルからの片道パケットでも入力時から反映タイムリミットまで75msの猶予があります。従って大技に限りマリアナ海溝(10km)を含む地球表面及び低軌道(~400km)までならばアニメーションを飛ばすことで対応可能でしょう。静止軌道(35786km)や月(38万キロ)になると状況や技によっては発動タイミングを過ぎてから反映されることになり、HPなど含めて巻き戻すことになってプレイ不可能になるのではないでしょうか。

          • by Anonymous Coward

            攻撃食らう側から見るとアニメーションがスキップされていきなり攻撃判定が発生したように見えそうなんだけど
            小足見てから昇竜とかどうなるんだろ

          • by Anonymous Coward

            格闘ゲームやってる者からすると、シビアなタイミングのタイトルの場合はPing100ms超の環境ではゲームになりません。
            国内なら普通に遊べますが、海外相手だと遊べるタイトルとそうでないタイトルがあります。
            格闘ゲームは双方向なので片道の時間では意味がないですし、地表の通信なら光速は20万km/hで計算すべきでブラジルは往復200msです。

            反応時間の絶対値が1フレームではないのはその通りですが、差分が1フレームあれば多くの人が分かります。
            10フレームもあると違和感がありすぎてまともに遊べなくなります。
            VRヘッドセットで遅延やフレームレート低下があると、酔ったり立っていられなくなるのと似たような感じです。

            • by 90 (35300) on 2022年05月14日 2時57分 (#4248837) 日記

              コマンド入力から画面上への反映までは片道なので、計算はRTTではなく片道でよいはずです。といっても演出10フレームのうち9フレームを省略して結果だけ出されてプレイできるかというと確かに無理でしょうけど。

              元コメントは端折りすぎましたが、格ゲープレイヤーはボタン押下から次の画像取得までループ長10Fのパイプライン処理が基本で2Fまでの遅延は許容(超えるとプレイ自体不可能)と理解してます。この点は1F見えるよ派と200ms未満はフカシだよ派でよく衝突するところですが、もっと正確/簡潔な理解があれば教えていただけると助かります。

              • by Anonymous Coward on 2022年05月14日 10時08分 (#4248936)

                自分のコマンドを連続する、コンボ技の入力のような場合には片道の計算で良いと思います。
                元々コンボ技の場合は、画面の反応を見るまでもなく体感でタイミングを覚えているので、遅延はそれほど問題になりません。
                ゲームシステム側の同期予測も外れないため、画面を見ているだけだと全く遅延なしと差が出ません。

                一方、相手の連携技の隙間に自分の技を差し込むとか、単発の技の応酬の場合には遅延が顕著になります。
                自分が技を出す > 相手が避けるorガード > その結果を見て次の攻撃を決める、というループになります。

                自分が技を出した後、相手が対応を決めるまでは人間の反応速度として200-300ms程度かかります。
                ただし、技を入力してから効果が発生するまでの演出が10フレーム160msあると、その一部も反応時間に組み込めます。
                ネットワークの遅延があると、この演出10フレーム分が短くなってしまい、人間側の反応時間が削られてしまいます。
                例えば効果発生まで10フレームだった技が、遅延で8フレーム分削られると2フレームの技のように見えてしまいます。

                普通の格闘ゲームはこの発生の速さや隙の大きさは、技の効果=ダメージと比例するように作られています。
                ネットワーク遅延がり、すべての技の発生フレームが削られると、相手側からは大技でも小技でも反応に要する時間に差が無くなってしまい、リスクと報酬のバランスが崩れてクソゲー化します。

                ネットワーク遅延ではなく表示遅延、かつメーカーのタイアップ記事ですがこんな記事もあります。
                https://game.watch.impress.co.jp/topics/toshiba2007/ [impress.co.jp]

            • by Anonymous Coward

              ゲーム機とTV表示間の遅延が、(液晶or有機EL)TV内部処理の問題で早くて2Fらしいが、格闘ゲームの大会ではCRT式TVが現役と聞かないから

              >差分が1フレームあれば多くの人が分かります。

              は疑わしい。「俺らは1Fの違いが分かるんだぜ」という選民意識のなせる技では?

              • by i12o (35348) on 2022年05月14日 3時44分 (#4248840)

                表示に常時2Fの遅延が生じているとして、それを感じられるかと言えばなんとも言えません。
                それより遅延の多い/少ない環境でプレイした経験があれば、自分の入力が画面に反映されるタイミングに違和感を感じる可能性は結構高いと思います。ですが、それがゲーム中常に一定のフレーム数であれば、そのうち慣れてあんまり気にならなくなります(遅延が5F以上ある場合だと、この台/モニターきっついなーってなってると思いますが)

                通常15フレームの技がラグなどにより16F以上かかったり、14F以下であたった場合、これに関しておかしいと感じる可能性は結構あると思います。毎回ではないでしょうが。

                ある技をガードした後、攻撃が成立するまでに15Fまでの技なら必ず反撃として成功するような状況(いわゆる確定反撃)なのにそれをガードされたりした場合、自分の反応が遅かったわけでなければ何かおかしいと思うでしょう(普段なら9割成功しているはずなのに、3割くらいしか成功しない、とか)。

                また発生21Fの技であればモーションの出かかりを見てほぼガードできるという人にとって、フレームがスキップされたために画面表示から20Fで当たられた場合、ガードできない場合が増えます。2Fランダムにずれる場合、22Fの技ですらガードできない場合が生じます。

                といっても、ただガードしたり立っていたり、前後に移動しているだけの状況での2〜3Fのずれは認識できないでしょう(ゲーム中の90%の入力はレバーニュートラルかどっかの方向に入っているだけの状態でしょうから、確率的にずれは認識できないタイミングに生じるものが大半になります)。

                任意の1Fのずれを必ず体感として認識できるわけではないですが、技の当る瞬間などでは本来あるべき長さに対してずれが生じたとき、それが感じられるタイミングがあるんです。ずれたせいで自分の攻撃が当たったのは多分わかんないですが(笑)、食らったり外したときは何かおかしいと思います。それが1ゲーム中に1度しか起きなかったらたいして気にしないでしょうが、それが数回以上発生したら確実に「ラグい」と愚痴っていると思います。

                決して選民意識とかじゃないんです。技が出ているときの1F以上のずれは、技が当るか外れるかというシビアな状況である程に、認識できる場合がラウンド中に何度かはあるんですよ。

              • by Anonymous Coward

                それはかなり昔の液晶の話ですね。
                今の液晶TV、モニターのゲームモードでは、120Hz倍速パネルの1フレーム=8.3msに少し処理追加して9msとかが基準です。
                240Hzモニタならもっと減ります。

                入力遅延はメーカーが数字を書いてない場合もあるので、実機で計測しているTFT Centralで調べるのがいいです。
                https://tftcentral.co.uk/reviews/gigabyte-aorus-fi32q-x [tftcentral.co.uk]
                例えば上記のモニタなら、InputLagが2.35msとなっています。

            • by Anonymous Coward

              >地表の通信なら光速は20万km/hで計算すべきでブラジルは往復200msです。

              20万km/hの速さだと、200msで11kmくらいしか進めないですが。

        • by Anonymous Coward

          > 海外レベルで離れている者同士が、なぜ、素早く同期して通信できているのかということです。
          > 結論から申し上げると素早くは同期していません。遅延は発生しています。

          って回答してますね。
          プロ格ゲーマーの配信をよく見るんですが、「この相手ラグいなぁ」とかよく言っているので、
          ロールバック方式でも無理なものは無理みたいです。

          他のゲームだったら「そんなのプロが突き詰めた時の話だろ」で済むんですが、格闘ゲームだと
          「しゃがみガードできない発生15フレームの攻撃」みたいなのがあって、この攻撃を見たら
          立ちガードに切り替えないといけないので、例えば10フレームの遅延があったら5フレーム以内に
          反応しなくてはいけなくなって実質ガード不能になるので、素人でも顕著に影響を感じますね。

        • by Anonymous Coward

          ニュウトリノを使うまでもなく、、、
          地球直径の距離を光速で直行すれば、22msだから、pingコマンドの227msが遅すぎるんじゃね。
          超透明なファイバーを使って中継器なしってのは無理だから、
          低軌道に反射衛星を配置して鏡で見通せるようにすれば、鏡での反射の遅延は0だから、伝送路だけなら22msを(円周率の半分の)1.6倍して、35ms程度でいけるんじゃないかな。

          • by Anonymous Coward
            エラー訂正で1000msくらいかかりそう
          • by Anonymous Coward

            遠距離通信は普通光ファイバーを使ってます。
            光ファイバーで使われる石英ガラスの屈折率が1.5ぐらいなので、ファイバー中の高速は20万km/sぐらいです。
            地球の真裏まで地表をファイバーを這わせると片道2万kmで100msぐらいで、Pingは往復時間だから最低でも200msぐらい。
            275msなら直線で引けない部分や通信機器のオーバーヘッド入れて妥当じゃないですかね。

            ちなみに長距離の光ファイバーは、光信号のままアナログ増幅してるので、途中の中継器で遅延は発生してません。

    • by Anonymous Coward

      ケンシロウが言ってるだろうお前はもう死んでいると

    • by Anonymous Coward

      Splatoonは通常は地域内でのみマッチングしているように見えるので、
      普通に遊んでいたらほぼ日本国内でマッチングしているはずです。
      なので、普通は数ミリ秒、遅くても20msとか30msで通信できてるはず。

      レギュラーマッチのフレンド合流で海外勢が入ってくる場合のほか、
      たまに近隣でマッチング相手が見つからなかったのか海外とマッチングされた場合は
      明らかに遅延を感じます。

      マリオカートなんかもとんでもない動きしますし、モンハンなんかもそうです。

    • by Anonymous Coward

      MMOでも本来入れないお店のカウンターの奥へめり込んでから戻される人をたまに見かけます。
      たぶん、同期するまでは前回の移動速度を維持するようになっているのでしょう、
      同期できないままになると他のプレイヤーからは移動し続けてしまう(ように他の人からは見える)
      同期が取れたところで正常な位置に戻される(ように他の人からは見える)

  • by Anonymous Coward on 2022年05月13日 18時24分 (#4248656)

    それから約10年が経過した2016年頃、新たな「ロールバック方式」という同期方式が実装されます。これが格闘ゲームの世界に画期的なユーザ体験をもたらしました。

    こうした遅延を遅延と思わせないための技術として2016年頃、「ロールバック方式」という同期方式が開発されたのだという。

    GGPO - Wikipedia [wikipedia.org]を読めば分かる通り、このソフトが開発されたのは2006年なので、このくだりは間違ってますね。
    はじめはエミュ動作の古い格闘ゲームに対応する野良ソフトで、2010年頃から商業ソフトでの正式採用例が増えて、オープンソース化されたのが2019年なので、2016年のストVでの採用はエポックメイキングではないでしょう。
    2011年の開発者インタビュー [archive.org]に対しても、「それって昔からWorld of Warcraft [wikipedia.org]で使われてる技術と同じじゃね?(超意訳)」「まあ古いアイデアだけど実装されて広く動作してるってことに意味があるから……(超意訳)」といったコメントが付いてるので、「ロールバック方式」の発祥がGGPOかも疑いの余地があります。

    ここに返信
    • by Anonymous Coward on 2022年05月13日 20時12分 (#4248713)

      アーケードの大型筐体での通信方式では2008年頃から採用されていたはずです
      三国志大戦で同期処理にロールバック方式が採用されているというのをインタビュー記事か何かで読んだ記憶があります

    • by Anonymous Coward

      大昔、ゲームボーイだかのエミュレーターが通信機能(ケーブル接続するやつ)に対応するために似たようなことしてたような。
      そうでないと通信速度の関係でゲームにならなかったとかなんとか。

  • by Anonymous Coward on 2022年05月13日 18時18分 (#4248653)

    UT99や2k3、2k4は遅延を考慮しないネットコードだったから相手の進行方向の
    ちょっと先を撃つ必要があってping 30msec未満ぐらいはほしいなって状態だったけど、
    CounterStrike系はサーバで遅延分を計算して当たり判定を決めてたから、
    野良試合なら100msec未満ならまぁええか的な感じだった。
    Quake系はどうだったか忘れた。

    FPSで使われてるものと格ゲーのとで違うのは「攻撃モーションの一部を省略」ってところだよね。
    これはクリックした瞬間に弾が発射されるFPSではできないもので、かつ格闘ゲームでは効果があっていいアイデアと思う。

    ここに返信
  •  昔3DSで出ていた大合奏!バンドブラザーズPでは、インターネット接続したフレンドとパートを分担して曲を合奏するという機能があったけど、演奏をミスると、合奏してる相手には実際にミスった箇所とは遅れた箇所で譜面からずれた演奏になるようになっていたっぽい。
    なので、難所的な小節はちゃんと演奏されるのに、難所のしばらく後になって音がずれるという現象がよく発生していた。

    奏においてはボタン押してから音が出るまで1ミリ秒のラグすら違和感になるから、ロールバックみたいな方法は不可能だろうねぇ。ましてや、有線接続がない3DSでは……。

    ここに返信
  • by Anonymous Coward on 2022年05月13日 17時19分 (#4248615)

    遅延分をロールバックして辻褄合わせねぇ。
    そりゃそうするだろうね。
    実装はとてもしんどいけど、技術的なハードルがあるというわけではない。
    ただ一度ライブラリを作れば終わりじゃなくて、ゲーム毎に対応が必要そうだよね。

    逆に言えば他社やインディーズに対する差別化に繋がるとも言える。
    多少はノウハウやコードも貯まるだろうし。

    ここに返信
  • ロールバック方式の技術がオープンソース化されているってのが面白かった。
    確かに複数の格闘ゲームがロールバック方式を採用している。(多分格闘ゲーム以外も)
    その理由がオープンソース化というのは意外だった。

    昔、どこだかが壁に近付いた時のカメラアングルの特許を占有していて、そのせいで
    他メーカのゲームでカメラアングルが無茶苦茶不自由になっていた時期があったと
    聞いた気がする。

    もしロールバック方式がオープンになっていなかったら、格闘ゲームは特定の
    メーカしかオンラインで出せない状況になっていたのかな。

    ここに返信
  • by Anonymous Coward on 2022年05月13日 17時53分 (#4248641)

    コレ [yamaha.com]なんかはどうやってるんだろ?

    ここに返信
    • by Anonymous Coward

      どうもしてないんじゃないの
      音速を343m/sとしオーケストラの幅を20mと仮定すると端から端まで58msec
      バッファが2~4msec推奨だそうで、各プロバイダーでpingは平均20~30msec程度らしいので国内でやる分には別に困るほどじゃないんでしょう
      下手すると空気よりもネット回線経由の方が遅延が少ないとかもありえる

      • by Anonymous Coward

        エンコードとデコード入れても間に合う?

        • by Anonymous Coward

          wavなCDだとしても16bit*44100hz*2chなので1秒1411200bit
          多めに見積もって一拠点3Mbpsとしても圧縮する必要がないので大丈夫なのでは?知らんけど

        • by Anonymous Coward

          楽器演奏の場合は生であっても、プレイヤーが遅延を考慮して操作(演奏)するのが当たり前ですからね。
          ピアノとギターでは動作を始めてから実際に音が出るまでの時間が異なりますし、オーケストラの管楽器と弦楽器でも全然ちがいます。それでもそろうのは、テンポに合わせて音の発生が同時になるように(意識的または無意識的に)補正しているから。
          何回かセッションすれば、それぞれが一番気持ちいいタイミングを覚えて演奏できるようになるんじゃないかな。

          # テンポが急激かつ予測不可能に変化するスタイルの即興演奏だと破綻すると思う

  • by Anonymous Coward on 2022年05月13日 18時31分 (#4248659)

    > ロールバック方式は、入力到達から攻撃HITまでの間にある攻撃モーションの一部を省略することで同期を取る方法なのだそう

    この解釈は間違いですね。ロールバック方式という名前が示すとおり、同期を取るための手段はロールバックであり、
    それを省略と書いてしまうようでは、私は何もわかってませんと白状しているようなものです。

    ここに返信
    • by Anonymous Coward on 2022年05月13日 21時12分 (#4248749)

      うん。分からない。
      あなたがロールバックをどう理解解釈しているのか説明を省略してしまっているので理解不能になってますよ。

      • たぶんこんな感じ。
        とりあえずプレイヤーAとプレイヤーBの間には20F(フレーム)の遅延があるとする。

          0F:Aが25F後にBに当たる攻撃を行う。このとき「25F後の時点でBがガードせず攻撃の当たる位置にいた場合は攻撃成功する」という情報もいっしょにBの端末へ送信する。
        20F:BはAが攻撃モーションに入ったことを知りガードする。攻撃モーションを視認してからガードが成立するまでにかかる時間は10Fとする。
        25F:Aの攻撃がヒットするためBのガードは不成功。Bの端末ではAが攻撃モーションを開始してから5Fで攻撃が当たり、途中のモーションを飛ばしたように見える。
        30F:本来ならこの時点でBのガードが成立するはずだが、25Fの攻撃ヒットでなかったことにされている。

        Aが攻撃モーションを開始した時点で「いつ、どの位置に攻撃判定が発生するか」という情報が確定しているから可能な処理だね。

        リンク先の説明では攻撃が受ける側は何もしていないので「遅延がなければ成功していたはずのBの行動が、遅延のためになかったことにされる」というロールバックっぽい現象を説明できていない。

        --
        うじゃうじゃ
    • by Anonymous Coward

      なんでソース読みに行かないの?

  • by Anonymous Coward on 2022年05月13日 20時46分 (#4248735)

    ゲーム遅延の体感は操作している側が体感していなければ
    「遅延」と思わないという状態なので、相手が遅延している
    状況について精度上げる必要がないんです。

    ここに返信
  • by Anonymous Coward on 2022年05月13日 21時10分 (#4248748)

    戦闘中に敵のちょっと未来の影(?)が重なって見えるあれ?
    今のゲームはお互いにちょっと未来の幻と戦っていたのか。

    ここに返信
    • by Anonymous Coward

      普通に地球の裏からコントロールされる無人対地攻撃機で使われているのでは?

  • by Anonymous Coward on 2022年05月13日 22時56分 (#4248794)

    この記事がわかりやすかった。
    https://automaton-media.com/articles/newsjp/20201031-141954/ [automaton-media.com]

    通信ラグで情報が遅れて届いた時に、遅れた分だけの時間を巻き戻した時点から再計算して
    現在の時間までスキップするって感じっぽい。

    操作したボタン情報だけでなく、いつ操作されたかの時間情報も付加されてやりとりしてそう。

    ここに返信
    • by Anonymous Coward

      ロールバックの前提として、行動を線形予測(現在のアクションが連続すると想定)している、というのは多分2000年頃のオンラインRPG(私の知っている範囲だと、PSOとかLineage2とか)と同じだよね。
      比べ物にならないくらい粒度が荒くて、敵を引き連れたまま、数秒間吹っ飛ぶように走っていく他人のキャラが何度もリピートして見えるとか、なかなか面白い光景が見えたりしましたが(笑)

  • by Anonymous Coward on 2022年05月14日 2時52分 (#4248836)

    > 日本とブラジルで通信をした場合、Pingコマンドで275ms

    ちょっと光遅すぎじゃないですかねぇ。

    #もうこれは光速への風評被害でしょ

    ここに返信
    • by Anonymous Coward

      地球の真裏までだと地球0.5周。これを往復すると地球1周分の時間がかかる。
      光は1秒で地球を7.5周するので、地球を1周するには1000ms/7.5=133msくらいかかる。
      だいたい倍かかってるって話だね。

      これって、日本の末端環境から、近くてもブラジルのIX直結サーバまでのpingでしょ?
      光速以外の遅延要因で見ると、国外に出てからの遅延より日本国内で発生している
      遅延が一番大きいまであるんじゃないかな。

      # 羽田まで飛行機で1時間だが、羽田から見えてる東京タワーまで1時間みたいな・・・

      • by Anonymous Coward

        電気信号も光ファイバーも真空中の光速度の2/3しか出ないの忘れてるよ

        自分はこの話コーエーの偉い人から聞いたな。15年位前だったかと。

typodupeerror

アレゲはアレゲを呼ぶ -- ある傍観者

読み込み中...