②基本的なプレイユニットを突き詰める|ネットワーク環境|Splatoon アーキテクチャ・デザインパターン

この回からは、単独プレイヤーに向けたデザインパターンを考えます。
それはチーム戦においても、チームメンバーひとりひとりが使う基本的なプレイユニットに着目して仕様を突き詰めていくことに他ならず、プレイ環境上では最も大切な要素になります。

単独プレイヤーに向けたデザインパターン(基本的なプレイユニットを突き詰める)

1人のプレイヤーがSplatoonをプレイするための環境をプレイユニットと呼びましょう。
これをどう突き詰めていくか、が今回のテーマです。

今回のテーマで重要な突き詰め要素は

  • 数ms(ミリ秒)に向き合うために
  • 操作精度と戦う
  • 状況把握精度と戦う
  • 最適な機材の入手方法
  • 振り返りという武器を手に入れる
  • 可能な限りシンプルに(何を捨て、何を得るか)

です。たくさんありますね。
ひとつひとつ紐解いていましょう。

数msに向き合うために

これは、最もベーシックであり、どのプレイヤーも最初に解決策に目を向けるべき項目です。
Splatoon、しいてはNintendo Swtichを取り巻く数msのロス原因を探り、解決方針を出していきましょう。

ホームネットワーク

これは、最もリーズナブルに解決できる可能性が高いポイントの一つです。
ネットワークにおいて、気にすべき項目は、優先度順に安定性・応答速度・回線速度です。
もしあなたの家が以下に示す様な条件下のネットワーク回線を利用してSplatoonをプレイしているならば、あなたが勝てない可能性の10%程度はネットワーク回線が握っているかもしれません。

  • 安定性 :回線落ちしないためには、安定性の高いホームネットワークへの接続方法が必要です
  • 応答速度:あなたが行なった操作を少しでも早くサーバーに届けるために、できるだけ応答速度の速い方法でホームネットワークに接続する必要があります
  • 回線速度:Splatoonに限って言えば、回線自体の通信速度は上り・下りとも1Mbpsも出ていれば十分と言われています。(実測もそのくらい)これを下回る回線を探す方が現代の日本では大変なので、無視していい観点かもしれません。

応答速度の考え方と、目標性能値

FPSプレイ時の目安として、 20ms前後 に総合的なタイムラグを押さえておきたい、という一つの目標があります。

スプラトゥーン2の為にプロバイダをBIGLOBEに変えた


では、FPSのプレイ時の目安として

可能なら20ms、許せるのは40ms、70ms以上ならラグがあるって感じだったかな?

と語っています。

ラグがあると弾が当たってないのにやられたり、自インクの中から敵が出てきたりする。

恐ろしいと思いませんか。心当たりはありませんか。
快適なプレイ環境ができているかの指標として応答速度は大切なのです。
※ちなみに20ms付近はインターネット広告システムの一部に使われるデファクト的な目標応答速度としても知られています。このあたり見ると参考になるかな。

https://books.google.co.jp/books?id=7iD9B10c1A8C&pg=PA530&lpg=PA530&dq=DSP+20ms&source=bl&ots=DCvk6eNhhU&sig=YkUq3sOYQhjoiAO-kDofv_BGslQ&hl=ja&sa=X&ved=2ahUKEwiyotPW6_3cAhWKWrwKHdkJAJ0Q6AEwBnoECAMQAQ#v=onepage&q=DSP%2020ms&f=false

また、このブログでは、ネットワークに関する視点を以下の3つに捉えています。
http://kanai6274.blogspot.com/2017/03/splatoon2.html

  • End-to-Endで有線・固定回線であること
  • 回線速度 上り下り 1Mbps が、常にでること
  • 対戦相手とのRTT(*)が常に低いこと(目安は50ミリ秒以下)

上記は非常に良い整理です。
また、同じ記事内のRTTとpingの考え方の違いも重要ですのでおさらいしておきましょう。

(*)RTTとは、Round-Trip Timeのことで、自分が発したパケットが相手に届いて、それがまた自分に帰ってくるまでの時間(ミリ秒)のことです。一部の方は「ping値」と言ったりしていますが、これは誤用ですのでやめましょう。pingとはRTTを測定するツールの名前です。
RTT = アプリケーション遅延 + 伝送遅延(ルータ処理) + 伝搬遅延(光ファイバ) + キューイング遅延 で表されます。

この記事ではRTTの優劣を図る身近な基準であるping値を参考に、各セクションでの最適化方針を探っていきましょう。

有線LAN接続を導入する

Switchを無線LANに接続していて、さらにその無線LANルータが古めの規格のものである場合、Switch – ルーター間の接続を有線接続に切り替えることで応答速度が改善する場合があります。

ゲーミングPCは無線と有線どちらで繋ぐべきか


では、

一昔前は有線なら100MBで10Pingなのに、無線だと6MBで50Pingみたいな感じだったのですが…無線規格の進化により、少なくともPing応答速度が明らかに遅すぎるという事はありません。

というコメントを書いています。
最近の無線規格であればあるほどその差は小さいですが、有意な差があることは明確です。
また加えて回線の 安定性 が増し「回線落ちが格段に減る」というのが有線の何者にも代えがたいメリットです。

最近のネットワーク接続規格を見てみると、回線速度は有線よりも速い!みたいな規格がざらにあり、時には有線にした方が数値上遅い、ということもありますが、最初に言った通り、 回線速度 はネットワークFPSにおいてはどの規格も十分に速いので、その違いは無視できることもお伝えしておきます。
あくまでこのセクションで補強する重要な要素は 応答速度安定性 なのです。

★有線LAN接続機器はこれが良さそう
ギガビット対応USB-LANアダプタ
https://www.amazon.co.jp/dp/B00VSGJ7BI/

IPoE系光の固定回線を導入する

まずはじめに、ネットワーク回線そのものの方式を考えると、答えはひとつ、理想はフレッツに代表されるIPoE系の固定回線です。
この環境にて、ネットワーク遅延の指標に用いられるping値は
9〜20ms程度
です。これが、家庭における目指すべきネットワーク環境のMAXとなります。

この固定の光回線に比べて、その他の環境がいかに我々を不利にさせているかを見てみましょう。

この記事をご覧ください。
スマホのテザリングや、WiMAXなど、無線通信系のping値について触れています。
https://ワイmax.com/netgame/
ping値は50〜70ms程度
です。我々が目指す応答速度の3〜7倍近い差があります。
相手の操作が反映されるまでの時間が、環境強者の3〜7倍あるということです。

また、他の通信形式も並べてみますと、概ね次のような感じです。

IPoE系光回線 > 非IPoE系光回線 > USENなどの集中コントロール型光回線 > ADSL > 大手モバイルルーター系・WiMAX・スマホテザリング

この状況を改善するには、やはりより品質の高い回線方式と、プロバイダを選ぶべきです。

同じ光回線でも、IPoE系光回線、非IPoE系光回線、USENなどの集中コントロール型光回線 は応答速度の観点から言うと別物です。
MVNOの回線がネイティブ御三家に比べてワンテンポ分モッサリするのと宿命的理屈は似ていて、通信経路の中継キャラクターが多い分不利なのです。

★応答速度で光回線を選ぶなら、やっぱりNTTのお膝元になってしまう。どうしても。
BIGLOBEの光回線
https://www.b-hikari.com/

追記:Gaming+というESports専用を謳っている回線を発見しました。
これも僕は使って見たことはないですが、IPv4 over IPv6 IPoE方式を利用しています。
さらなる高みを目指す方は試す価値があるんじゃないでしょうか。
https://www.gaming-plus.net

ちなみに我が家の通信環境はこんな感じです。(計測はSPEED TESTが便利です)

BIGLOBEやソフトバンク光などと同じく、プロバイダを介さない IPv4 ovre IPv6 IPoE のauひかりです。
これにGoogle WiFiの3台メッシュの構成です。

マンションタイプで無線接続PCからの計測なので、少し上乗せされている事を鑑みると結構頑張ってると思います。

さて、いきなり骨の折れる改善案も出てきているかとは思いますが、該当する方は、これらを解決するだけでもかなりストレスが減るかと思います。
上記を全て満たした同士の対戦であれば、通信経路的にはこのような感じ。

数msへの向き合い方はまだあります。
次回はネットワーク以外の数msへの向き合い方を考えます。

Makuakeで一緒にエンジニアリングしませんか。
https://www.wantedly.com/companies/makuake?ql=gaJpZM4ATBNM

Splatoon アーキテクチャ・デザインパターン①Splatoonの基本的な世界観

これはSplatoonのための記事ですが、Splatoonのプレイが上達するためのヒントを与えるものではありません。
SplatoonをはじめとしたFPSはゲーム環境を整えていく過程もまた非常にアーキテクティブで楽しい工程なので、そんな点に着目しました。
このテーマは、事業におけるプロダクト構想や、事業ドメインの観察から見出すアーキテクチャの設計方針などの工程と、非常に良く似ています。
ちょうど仕事上の役目がそんなですから、頭の体操にと書きはじめたシリーズです。
とりあえず、飽きるまで書いてみます。

Splatoonの基本的な世界観

Splatoon上では「オンラインで世界の誰かと戦う、もしくは協力する。」という非常にわかりやすい世界観が展開されています。
世界観の基本的な構築要素は以下の通りです。(ストーリーモードは除く)

  • 基本的にチーム行動。4人1チーム。
  • 単独参加の場合は4人のそれぞれ単独の参加者が自動的にマッチングしてチームを結成
  • ペア参加の場合は2ペアがマッチングしてチームを形成
  • チーム対戦は1:1で、複数チームが同じステージで同時に対戦することはない
  • ステージはすべて対面対象

また、バトル参加者にはタイムアップの概念は存在しても、死んでゲームオーバーという概念は存在しません。
バトルに参加した場合は不幸にも撃ち抜かれて死んでも何度でも蘇りながら、時間いっぱいその場を楽しむことになります。
バトルには以下のバリエーションの明確な目的が設定され、チームはその目的の達成のために、それぞれの役割を精一杯こなし、勝利を目指すことになります。

  • ナワバリバトル(3分):時間内により多くの面積を塗ったほうが勝利
  • ガチヤグラ(5分):乗ると進むヤグラを、設定されたゴールまで進めると勝利
  • ガチホコ(5分):メガ粒子砲の様なものを発射できるホコを持ち、相手陣地の奥にあるホコ台まで運べば勝利
  • ガチエリア(5分):指定されたエリアを一定時間、一定面積以上塗りつぶし続けられたら勝利
  • ガチアサリ(5分):アサリを10個集めるとできるデカアサリでゴール膜を破り、一定以上のアサリをゴールに放り込めたら勝利

シンプルな目的を達成するためのバトルをひたすらループし続けるだけのゲームですが、
世界のNintendoが何年にもわたって改良し続けてきただけあって、バトルの進行は非常に刹那的かつ戦略的であるにも関わらず、ものの3〜5分で結果が出るという子気味良いサイクルも相まって、非常に中毒性があります。
うちの妻はほとんど子供の頃にゲームをやってこなかったにも関わらず、Minecraftに次いでこのゲームにどっぷりはまってしまいました。

この凝縮された世界観をどのくらい濃く楽しむことができるかは、ゲーム環境にかかっています。
シビアなFPSはどれもそうですが、数msのタイムラグが勝敗を分ける世界です。
突き詰めれば突き詰めるほど、オンライン越しには見えない有利な環境を作り出すことができます。
上記の様なテーマ、我々エンジニアの出番だと思いませんか。

突き詰めの要素は様々ですが、このシリーズでは以下のどれかにフォーカスした様なテーマを取り扱います。
書きながらやっていますので、こんなテーマに着目してほしい、などあればリクエストもらえたら検討します。

  • 数ms(ミリ秒)に向き合うために
  • 操作精度と戦う
  • 状況把握精度と戦う
  • チーム・コミュニケーション
  • 最適な機材の入手方法
  • 振り返りという武器を手に入れる
  • 可能な限りシンプルに(何を捨て、何を得るか)

次回からは単独プレイに関する環境を考えます。

ところで、Makuakeで一緒にエンジニアリングしませんか。
https://www.wantedly.com/companies/makuake?ql=gaJpZM4ATBNM