YONのドバトブログ

YONの土鳩ブログ

ゲーム好きの鳩"YON"がツイッターでは言い切れないことについて書き連ねるブログ

【スマブラSP】オンライン対戦のチックレート&仕様解説 What I know about Smash Online. 日本語訳

この記事では、スマブラSPのオンライン仕様について詳細に解説された記事"What I know about Smash Online."の日本語訳を記載する。翻訳元の記事は、Ver.8.1.0のアップデートにて「オンライン対戦時の操作感」が調整されたことを受けて書かれている。もちろん、原著者Nerf_0氏から翻訳許可を直接頂いている。なお、緑字は訳注である。

 

(翻訳はじめ)

オンラインのスマブラについて私が知っていること

このページのGoogleドキュメント版

ネットワークの変動に免疫がある人はいません。

 

オンラインスマブラの詳細

  • この記事では以下のように定義します。 「プレイヤー」は、リング上の人、または実際に試合をプレイしている人を指します
  • リング横で列になって待っている人には、観戦者席にいる人と同じようにデータが送られてきます。この人達を両方「観戦者」とみなしてください
  • オンラインのプレイヤーはロックステップに入っています。つまり、両プレイヤーからのデータがないとゲームが進まないということです。ラグが発生した場合は、ゲームを停止してデータが届くのを待つしかありません
  • ディレイ方式のネットコードを使用しています
    これは、ロックステップを使用するゲームのための最もシンプルで一般的な実装です。離れたプレイヤーの入力がネットワーク経由で送信されるせいで到着が遅れている場合、ディレイ方式ではローカルプレイヤーの入力を同じ時間だけ人為的に遅延させます。そうすれば、理論的には両方の入力が同じ時間に「到着」し、期待通りに同じフレームで実行できるようになります
  • スマブラでは試合の途中でラウンドタイムトリップ(訳注 pingのこと。通信相手に信号を送信してから返事の信号を受信するまでの時間差)をチェックし、必要に応じて遅延を調整します(私の意見では、これはオンラインスマブラの最悪の点の一つです)
  • スマブラで使用されているPeer to PeerプロトコルはPIAと呼ばれています
  • マッチメイキングはNEXと呼ばれるシステムで行われますが、ゲームプレイには何の影響もありません
  • ロックステップを行っているのはプレイヤーだけで、観戦者はそうではありません
  • 観戦者として発生した同期問題は解消されず、単に観戦から切断されます
  • チックレートはゲームがデータを送信する頻度のことです。60Hz = 秒間60パケット(訳注 チックレートという用語をサーバーの更新頻度のみに使う場合もある。詳細はスプラ2の記事を参照)
  • 2人のプレイヤーだけの場合のチックレートは60Hzです
  • 3-4人のプレイヤー(と観戦者)がいる場合のチックレートは30Hzです
  • 5人以上のプレイヤー(と観戦者)がいる場合のチックレートは20Hzです
  • スピードテストはほとんど意味がありません。スマブラは帯域幅をほぼ使いません
  • NATタイプはラグを改善しないし、ラグの原因にもなりません。それは自分のSwitchで利用可能なオープンポートの数を示しているだけです
  • 通信の安定性とともに、対戦相手とのpingが最も重要です
  • 観戦者自身やプレイヤーの接続上の問題のせいで、観戦から切断される可能性があります
  • プレイヤーの地域はクイックプレイ(訳注 オンラインの「だれかと」モードのこと。VIPマッチが遊べる所)でのpingに強い影響を与えます
  • クイックプレイでは、何らかの形で「クオリティチェック」を行っていますが、15秒程度の非常に長い切断があった場合にのみ何かしらの対処をしてくれます

 

Sable-Detectがどのようにラグを検出し、どのように役立つか

  • Sable-Detectは、Wiresharkによく似たパケットスニッファー(訳注 通信監視ツールのこと)です。それは、2つまたは3つのSwitch間のP2P通信を監視します。すべての通信を解析し、フィルタリングします
  • スマブラでやり取りされる各パケットには番号が振られているので、Sable-Detectは次にどのパケットを取得すべきかを知ることができ、スマブラは一定のチックレートで動作するので、いつ取得すべきかも知ることができます。各プレイヤーの予期せぬ通信断絶、順番が乱れたパケット、パケットロスを探して、そのプレイヤーに報告/フラグを立てます(フラグを立てられるのは、1人のプレイヤーによって引き起こされた問題のみです)
  • 大会主催者の裁定とSable-Detectのレポートにより、大会主催者はリアルタイムに具体的な判断を下すことができます
  • 例を挙げます。
    例えば、両方のプレイヤーがラグを主張していて、大会主催者は観戦者としてラグを観測したとき、Sable-Detectは2Pがパケットロスを発生させていて、いくつかのパケットが遅れて来ていることを発見し、それに応じてフラグを立てていたとします。これら全てが、1Pのパケットが正常に送られている間に起こりました(訳注 つまり2P側の通信だけに問題があったと運営が判断できるということ)


観戦者がどのように試合に影響を与えるか

  • 観戦者はラグを直接引き起こせません。プレイヤーや観戦者は、パケットを操作して、非常に限られたタイプのラグを発生させることができます。例えば、pingの急激な変化、パケットロス、パケットの順番の乱れなどです。観戦者が対戦ロビーでこれらのことを好き放題してもプレイヤーは気づかず、観戦者は切断されます。これは何度でも起きます
  • 観戦から切断されても、あなたがリング横の列や観戦席にいる限り、プレイヤーは以降の試合データをあなたに送ろうとします(これは任天堂側の帯域幅の無駄です)
  • 観戦者が試合に与える影響はチックレートです。チックレート自体はラグを引き起こしませんし、試合中にチックレートを調整することもできません。チックレートの変化は入力遅延の要因となります
  • 観戦者が試合に与えるもう一つの影響は、必要な帯域幅です。もし1人以上の観戦者がいる状況で、プレイヤーが通信速度上の問題を起こしそうな場合、さらに1人観戦者を追加することでプレイヤーを追い込み、不安定さを引き起こす恐れがあります。これには、すでに危うい接続と、負荷のわずかな増大という2つの要因があります。最終的には、プレイヤーが他の装置にデータを供給するための帯域幅を持っていないことが原因でラグが発生することに変わりはありません

自分で接続を確認したり、改善したりする方法

  • 自分の接続に問題がないかどうかを確認したい場合は、コマンドプロンプトを開き、pingループを開始するという簡単な方法があります
  • "ping 8.8.8.8 -t"と実行すると、googleサーバーとping測定をループします。タイムアウトするようなリクエストや、"Time"が劇的に変化するようなリクエストを探してみてください
  • pingテストの悪い結果の例。タイムアウトしているだけでなく、"Time"の応答時間が非常に離散的です。安定した応答時間が望ましいです!
  • 有線LANを使用してください。Amazonに多くのブランドのLANケーブルが沢山あります!
  • Switchの無線LANはあまり信頼できません
  • 家屋を通してLANケーブルを設置することができないか、ルータがあまりにも遠くにあるのなら、「PLCアダプタ」を購入することを検討して下さい。コンセントの代わりにLANを使用できるようになります(私はtp-linkの物でうまくいきました)
  • 大会では、接続の問題を軽減するために地域制限をかけることができます。全てのオンラインゲームにおいて距離は重要な要素ですが、特にディレイ方式のゲームをプレイするのは、たった2つ離れた州の間でも難しいです

まとめ

  • Switchの無線LANを信用してはいけません
  • 大会での対戦部屋のサイズは4人以下にすべきです
  • スマブラのディレイ方式は、いつも良好なユーザー体験を提供できたわけではありません。プレイヤーの入力は一貫性がなく、反応もよくありません。多くの対戦ゲームと同様に、スマブラはマッスルメモリー、反応、反射神経で成り立っています。入力遅延が安定せず急激に変動すると、プレイヤーは自分の入力に自信を失い、オンラインではイライラしてしまいます
  • これを解決するための唯一の提案は、全員が有線LANを取得し、大会では地域制限を考慮すべきだということです
  • 現在、Sable-Detect はアクセスが制限されています。私は大会主催者にゆっくりとそれを展開しています。Discordで私に連絡してください。Nerf_0#3248
  • 公開バージョンは計画されていて、私のロードマップにあります
  • Deven3000、Mr.Smith、HumanBomb、Mj ♥に感謝します

(翻訳終わり)

 

全体要約

  • Ver8.1.0のスマブラオンライン対戦のチックレートは、プレイヤーと観戦者の合計人数が2人の場合は60Hz、3,4人の場合は30Hz、5人以上の場合は20Hzである
  • 観戦者が直接ラグを引き起こすことはないが、対戦のチックレートに悪影響を与え得る
  • スピードテストの結果とNATタイプは重要でなく、通信の安定性と対戦相手とのpingが重要である。有線LANの使用と、地域制限が通信上の問題を軽減する

 

訳者補足

Nerf_0氏のツイート、およびSOAT | Humanbomb氏のツイートによると、Ver.8.1.0のアップデートにて、観戦者なしの1on1オンライン対戦におけるチックレートは30Hzから60Hzに増加した。スマブラは60fps(1秒あたり60フレーム)のゲームなので、データの送信頻度による遅延はアプデ前では最大2F(= 60F/30)だったのに対し、アプデ後は最大1F(= 60F/60)となったと言える。つまり、チックレート変化による恩恵は平均1Fの遅延減少となる。これは、全ての入力に対し一定の遅延減少が起きるという意味ではなく、個々の入力それぞれについて0-2Fの改善が見込める、という意味だ。*1

勿論、これは解析結果が正しい場合の話であり、チックレートの変化以外にもオンラインの遅延に影響するアップデートが行われた可能性もあることに留意されたい。

(2020/08/11追記) DRAFIX氏らの実対戦での検証により、観戦者なし1on1の遅延がアプデ前と比較して約1.1F改善されたことが確認された。また、アプデ後の観戦者なし1on1と比較すると、観戦者1人のとき+0.98F、観戦者3人のとき+2.02Fとなることも確認されており、Nerf_0氏の解析が裏付けられたことになる。

(追記) 2020/10/14のver.9.0.0のアップデートにて、3,4人のオンライン部屋のチックレートが30Hz→60Hzに改善し、2人部屋と同じ水準になったことが確認された。5人以上の部屋の場合は従来と同様である(20Hz)。

 

個人的な意見

最大1Fの変化を感じ取れるようなプレイヤーはやや限られるとはいえ、例の伝染病の影響でオフ対戦の機会が減っている今、オン対戦のユーザー体験向上に繋がる改善をしてくれたことは大変ありがたい。Ver.8.1.0のアプデでは新ステージの小戦場も追加されたが、開発者の桜井氏のツイートで「競技シーンの主流の対戦である1on1」に向けたステージと発表されている。他にも全曲からのオレ曲セレクトやUI改善などもされており、Ver.8.1.0のアップデートは主にガチ勢向けの、影響範囲の広いものだったと言えるだろう。

少々残念なのは、今回のアップデートによるチックレート改善が観戦者なしの1on1対戦に留まることだ。タミスマやマエスマなど、オンラインのスマブラ大会では観戦者が試合を配信することが多い。しかし、1on1でもチーム戦でも、Ver.8.1.0の仕様では観戦者が入るとチックレートが悪化してしまう。観戦者周りの処理改善は是非次回以降のアップデートに期待したい。

 

*1:こちらの計算の詳細はDRAFIX氏のツイートを参照。ある更新時点の直後0-1F間に入力された信号は、次の更新と同時に処理される。実際の入力時点が0-1F間で一様分布していると仮定すると、実入力時点は平均0.5Fとなり、平均遅延時間が計算できる