■なにをしたの
スプラトゥーンのナワバリバトル中にどのような通信が行われているのか確認しました。ARPスプーフィングによって、Wii Uから自宅ゲートウェイへ送られるパケットを覗いてみました。使用したツールは下記の2つです。
- nighthawk: ARPスプーフィングします
- Wireshark: パケットキャプチャします
■通信内容
ソフト起動後に、Amazon Web ServicesとSSLで通信していました。Miiverseと、ランク・ウデマエなどの戦績を、AWSとWii U本体間で同期していると思います。AWS導入事例で書かれているところの、「DataStore機能」と「Miiverse」ですかね。
ロビーに入ると、シリコンスタジオ株式会社のサーバーとUDPで定期的に通信していました。フレンドのオンライン状況を定期的にとりにいっているようです。マッチングについては、シリコンスタジオのオンラインソリューションを使用しているようです。
ナワバリバトルを選択すると、シリコンスタジオとのUDP通信後、一般のISP×7名とのUDP通信が開始されます。この7名が対戦相手です。ホスト名に「hokkaido.ocn」やら、「hyougo.so-net」やらの地域もでてきて、わくわく。
8人が揃って試合が始まると、通信が激しくなり、通信相手は一般のISP×7名とのUDP通信と、シリコンスタジオ向けのUDP通信となります。シリコンスタジオ向け通信はほとんどありませんでした(数秒間隔)。つまり、ナワバリバトル中のプレイヤー操作情報は、8人がフルコネクト型のP2P通信を行うことでやりとりしていることが分かりました。シリコンスタジオ向け通信は、ユーザーがオンラインプレイ中であることと、試合時間情報を送っていると思われます。
試合が終わって結果発表になると、Amazon Web ServicesとのSSL通信が行われました。戦績を同期していると思われます。
■通信量推移
試合前後の通信量(bps)変化です。黒はTCP、赤はUDPです。試合中の通信速度は800kbps程度でした。TCPのスパイクは、前述した、戦績を同期するための、Amazon Web Services向けSSL通信です。
■通信頻度推移
1人あたりに送信するパケット量の(pps)変化です。画面描画が60fpsということで、パケットも60ppsくらいでした。
■イメージ
マッチング中のイメージだよ。
試合中のイメージだよ。
試合中のWiresharkの様子 pic.twitter.com/GBtw7hZDVC
— かない (@kanai6274) 2015, 10月 12
■今後
試合中の1名がホストとして何をとりまとめているか、推定したい。自分が地面を塗っても塗られない事象は経験があるので、地面の塗り情報はホストがとりまとめていると思う。あとは、各プレイヤーの操作情報を8人が相互に送り合っているが、それが有効になっているのか、それもホスト経由なのかが知りたい。