システム詳細仕様

Last-modified: 2022-11-17 (木) 01:13:02

ここではゲームシステムの仕様について、より細かい検証と解説を行なっていくぞ。

初心者向けのゲームシステム解説は操作方法のページなどにあります。
また、各ルールのシステム仕様については各ルールの個別ページに、
ブキサブウェポンスペシャルウェポンそれぞれの個別の仕様についてはそれぞれの個別ページに、
ギアパワーの個別の仕様についてはギアパワーのページにあります。

イカロールについて

イカロールには2種類ある。ここでは次のように呼び名を定める。

床ロール
イカ移動中に、スティックを進行方向と90°以上違う方向へ倒してジャンプすると出るアクション。
壁ロール
壁張り付き中に、スティックを壁の反対側へ倒してジャンプすると出るアクション。

イカロール中にはアーマーが付与される。詳細はアーマーについてを参照。

床ロール

床でイカロールを出せる具体的な条件は、

  1. 一定以上のイカ速(イカニンジャ無しで大きめの飛沫が立つぐらいの速度)で泳いでいる
  2. キャラの向きから90度以上の角度の方向にスティックが倒されている

の2つ。

1.の条件となる速度はブキやギアに依らず固定値。そのため、ブキ重量ギアなどによって最高イカ速が速くなっているほど出しやすく、遅いほど出しにくくなる(試し撃ち場で重量級ブキにイカニンジャをつけて連続イカロールすれば、ほとんど続けられないことが分かるだろう)

イカロールの移動速度はおそらく通常の地上イカ泳ぎと同じだが、山なりに進む分だけ地上の移動時間は地上イカ泳ぎより僅かに長くなる*1

イカロールを連続で出すと、速度に一定割合の減衰がかかる。デフォルトで0.85倍の速度になる。連続でイカロールするとだんだん遅くなって仕舞いには出せなくなるのはこの仕様による。
アクション強化を積むとこの速度減衰率を軽減でき、GP57で減速無し(倍率1倍)となる。理論上は無限に連続イカロールできる。
なお、速度減衰は連続で出す場合の2回目以降にかかる。1回目のイカロールの性能はイカ速にのみ準ずるということ。

1回目のイカロールの移動速度(ジャンプ飛距離)は、出す直前の泳ぎ速度とは関係ない?*2

イカ速やアクション強化などの値に関わらず、ジャンプ時の滞空時間は一定。なので元々のイカ速が速ければ速いほど遠くに到達できる。

壁ロール

壁でイカロールを出せる条件は、

  1. 自インクで塗られた壁に張り付いている
  2. 壁の法線から45°以内の方向にスティックが倒されている

状態でBボタンを押すこと。

壁ロールは床ロールと同様に、連続して出すと速度ペナルティを受ける。
壁ロールと床ロールは速度ペナルティを共有している。そのため床ロールを連続で出した後は壁ロールの飛び出し速度が低くなる。逆も然り。

興味深いことに、速度ペナルティが十分高くなると、壁ロール→元の壁に張り付く→壁ロール…という動作が可能になる

壁ロールはイカノボリの上昇中に繰り出すことができる。そうするとイカノボリはキャンセルされる。

ダメージについて

一定以上のダメージを受けているプレイヤーは次の効果を受ける。

ダメージ起こること
0.1以上・画面の周囲に相手インクが浸食してくるようなエフェクトが表示される
・ダメージの量に応じてエフェクトは大きくなる
・全回復するとエフェクトは消える
18.0以上・相手プレイヤーのマップにアイコンが映るようになる
・受けたダメージが18.0を超えた瞬間に、画面の周囲に集中線エフェクトが表示される

敵インクを踏んだ際のスリップダメージ等についての仕様は相手インク影響軽減の項目を参照されたし。

ダメージ回復について

ダメージを受けてから60Fの間はダメージが回復しない。
回復速度は自チームのインクにセンプクしているか否かで変わる。

状態回復速度
センプク中1.4/F (84.0/秒)
それ以外0.175/F (10.5/秒)

自チームのインクにセンプクしているほうが、そうでない場合より8倍速く回復する。

アーマーについて

アーマーはゲーム中の仕組み。
アーマーは1人のプレイヤーを覆い、そのプレイヤーの代わりにダメージを受けて、そのプレイヤーへのダメージを無効化または軽減する。
アーマーには耐久値がある。アーマーが受けたダメージの合計が耐久値を上回ると、アーマーは破壊される。

アーマーは「イカスポーンからの降下」「イカロール」「イカノボリ」「ショクワンダー」「ナイスダマ」の5種類のアクションによって付与される。(1.2.1現在)

アーマーの性質は「イカスポーンからの降下」「イカロール・イカノボリ」「ショクワンダー」「ナイスダマ」の4種類で異なる。うち、ナイスダマ以外は近い性質を持つ。

イカスポーン後のアーマー

イカスポーン後のアーマーは次の性質を持つ。

  • アーマー装着中は発光しているため、イカセンプクをしても居場所がバレる。
  • 持続時間はイカスポーンから降下して操作可能になってから3秒(180F)。
  • 耐久値は30.0。
  • 耐久値が0になると、0.4秒(24F)後に破壊される。
  • アーマーに対する攻撃に、対物攻撃力アップの効果は適用されない(1.0倍)。
  • アーマーが受けるダメージに、サブ影響軽減の効果は適用される。
  • アーマー装着中でも相手インクを踏むとスリップダメージを受ける。
  • 100.0ダメージ以上の一撃を受けると、100.0を超えた分だけアーマーを貫通してダメージを受ける。

参考資料
https://twitter.com/rougsmth/status/1580955024209121281

イカロール・イカノボリのアーマー

イカロール・イカノボリのアーマーの性質は、イカスポーン後のアーマーとほぼ同じだが、次の点で異なる。
この他の性質はイカスポーン後のアーマーを参照。

  • 持続時間は次の通り。
    • 床ロールのアーマーの持続時間は0.3秒(18F)。
    • 壁ロール・イカノボリのアーマーの持続時間は0.75秒(45F)。
  • ヒト状態になると終了する。
  • イカ返しにぶつかると終了する。
  • 耐久値が0になると即座に破壊される。被ダメージから破壊までのラグが無い。
    • ただし、複数の攻撃が同時ヒットした場合はまとめて1発分の攻撃として耐える。貫通ダメージも発生しない(実戦で容易に発生しうるのはシェルターストリンガーの攻撃など)

参考資料
https://twitter.com/Berg_Blog_Spl/status/1578313180639801344
https://berg-spl.com/3roll-durability-value/

ショクワンダーのアーマー

ショクワンダーの触腕を壁に貼り付け、高速で移動している最中にアーマーが付与される(以下、触腕移動とする)
触腕移動中のアーマーの性質は、イカスポーン後のアーマーとほぼ同じだが、次の点で異なる。

  • 持続時間は、移動し始めた瞬間~壁に到達した瞬間まで。
  • 耐久値は100? 100未満のダメージでは破壊されない。

ナイスダマのアーマー

ナイスダマのアーマーは次の性質を持つ。

  • 持続時間は、発動後30F経過~ナイスダマを投げた後65F経過まで。
  • 耐久値は470.0。
  • 耐久値が0になると、0.4秒(24F)後に破壊される?(要検証)
  • アーマーに対する攻撃に、対物攻撃力アップの効果は適用される(1.1倍)。
  • アーマーが受けるダメージに、サブ影響軽減の効果が適用されるかは不明。(要検証)
  • 100.0以上の一撃を受けると、100.0を超えた分だけアーマーを貫通してダメージを受ける
    • 貫通ダメージの上限は80.0以上100.0未満であることが判明しているが、詳細な値は不明。
    • シェルターストリンガーなど、同時に複数発当たると100.0を超えるが一発は100.0未満の攻撃が貫通するかは不明。(要検証)

参考資料
https://twitter.com/rougsmth/status/1580184421948620800

デスと復活について

デスしたときにまき散らすインク

デスしたとき爆発し、相手インクを撒き散らすがその塗りポイントは22ポイント前後である。

デスから復活までにかかる時間とその流れ

ギアパワーなどの効果が何も乗っていない、素の状態での復活時間とその流れは下記の通り。
☆をつけた項目が、復活時間短縮エナジースタンドで短縮される箇所。
★をつけた項目が、復活ペナルティアップリベンジの効果で延長される箇所。

状況フレーム数備考
総合計510F
デス時の爆発演出30F
☆★自分カメラ表示90F画面左上にマップアイコンが表示されるのが境目
☆相手キルカメラ表示270F倒してきた敵の頭上に名前が表示されるのが境目
スポナー上の復活演出60F
ここまでの合計450Fイカスポーン上で操作可能になるまでの時間
イカスポーン60FZRを押した瞬間から降下→操作可能になるまでの時間

前作『2』と変わらず、復活にかかる総合計時間は8.5秒(510F)。
ただし、スポナー上でイカスポーンまたはスーパージャンプの操作ができるようになるまでの時間は7.5秒(450F)と『2』より1秒(60F)早い。

『2』ではスポナー上の復活演出が120Fで、復活したら即操作可能になった。
今作は復活とイカスポーンを合わせて120Fなので、復活後最速でイカスポーンして初めて『2』と同じ時間になる。イカスポーンの降下位置の指定操作に手間取ると『2』より時間がかかることになる(その代わり復活場所を選べるので、実質的に戦闘復帰できる時間は今作の方がやや早いと言えるだろう)

トリカラバトルの攻撃側に限り、自分カメラ表示が60F、相手キルカメラ表示が180Fに短縮される。
これはギアパワー及びエナジースタンドによる短縮とは乗算して重複する。

復活時間一覧

ここでは、スポナー上で操作可能になるまでの時間を記載する。
イカスポーンで復帰する場合はその時間も加算されることを留意。

  • 通常デス:7.5秒(450F)
  • 落下:4.5秒(270F)
    • 画面が黒くワイプする時間30F→暗転時間180F→ワイプインしながら復活演出60F
  • 水没:6秒(360F)
    • 溺れる時間60F→蒸発、黒くワイプする時間100F→暗転時間140F→ワイプインしながら復活演出60F

イカスポーンについて

イカスポーンとは、今作から登場したスポナーから降下する操作のこと。
矢印マーカーで降下位置を指定し、ZRを押すとスポナーから射出されて降下する。
ZRを押さない限りずっとスポナー上に残り続けてしまう。
ただし試合開始時のイカスポーンのみ、ZRを押さなかった場合は最後にカーソルがあった場所に自動的に降下する。

  • 降下位置を示す矢印マーカーは味方のものも画面に表示される(どれが誰のマーカーかはわからない。タコであっても表示はイカ型)。試合開始時は分かりやすいが、試合中も同様(自分が既に地上にいる場合も表示される)。
  • ZRを押した瞬間から計測して、操作可能になるまでの時間はおよそ60F。ただし、空中で操作可能になるため地上に着地する時間はもう少し遅い。
  • 飛行中にLスティックを手前に倒していると飛距離が減少する。ステージの一番手前に向けてこれを行うとステージにたどり着けずに落ちてしまうので注意。
  • イカスポーン中は完全無敵。スーパージャンプと同様。
  • イカスポーン後はアーマーが付与される。詳細はイカスポーン後のアーマーを参照。

対戦中の通信について

オンライン通信対戦についての基礎知識

オンライン通信対戦を実現するいくつかの基礎知識について紹介します

RTT(Round-Trip Time,ラウンドトリップタイム)とレイテンシ、ping(ピン、ピング)

何らかの通信を相手に送り、それを受け取った相手から返事が返ってくるまでにかかる往復時間のことをRTTという。
RTTを測定するために用いられるのがpingという仕組み。
AさんからBさんへ、pingと呼ばれる極小のデータを送信すると、それを受け取ったBさんは何もせずそのままpingをAさんに打ち返す。このpingの往復時間=RTTになる。

  • RTTが大きい=データの往復に時間がかかっているということ。オンラインゲームの場合、ラグが発生する。
  • RTTは通信速度が遅いとそれだけ長くなる。より大きなラグが発生する。
  • RTTは物理的距離に比例して長くなる。遠方の海外勢と対戦すると激しいラグが発生する。

一方、RTTと似た意味であるが、「相手に何らかの処理を要求してから、その返事が返ってくるまでの時間」をレイテンシという。
RTTが純粋な往復移動時間とすれば、レイテンシはそれプラスこちらの要求を受けた相手が何らかの処理を行う時間も含むといえるか。オンラインゲーム用語としてはレイテンシを使うことが多い。

レイテンシが短いほど対戦環境は快適になると言える。レイテンシを短くするには、ユーザー側は自宅のネット環境を改善する、ゲーム運営側はサーバーやネットワーク環境の改善・ゲームのプログラムの処理高速化などに取り組む必要がある。

  • Splatoon3のVer1.2.0にて、「送信したデータが相手に届き、その反応が返ってくるまでの時間が、これまでより短くなるよう、通信プログラムの改善を行いました。平均して約3/60秒の短縮となります。」というアップデートがされた。これはまさしくレイテンシを短縮したということになる。

ただし、どれだけレイテンシ(RTT)を短縮したところで0には絶対にならないので、大なり小なりラグは必ず発生する。物理的な距離など解決しようがない問題もある。

そこで、実際のゲームでは様々な工夫でラグの問題を軽減している。

完全同期型と非同期型

オンライン通信対戦では、参加者全員のゲーム画面が常に同じ状況でなければ公平な対戦にならない。が、現実にはラグやパケットロスがあり常に完璧に一致させ続けることは難しい。

かつて格ゲーなどでよく用いられていた「ディレイ方式」では、ラグに合わせて参加者全員の入力を常に少し遅延させることで、参加者全員のゲーム画面を常に一致させていた。これを完全同期型という。
しかし、これは参加者に一人でも回線が遅い人がいれば全員の入力をそれに合わせて遅延させるため、誰か一人でも遅すぎるとゲームにならなくなるし、そもそも多人数対戦には向いていない。回線が強くなければ実質対戦に参加できないに等しかった。

これに対して、非同期型のオンラインゲームでは参加者それぞれのゲーム画面が異なることを許容する。
スプラトゥーンに採用されている「ロールバック方式」では、自キャラは入力通りに、相手キャラはラグの間の入力状態をゲーム機が予測して画面に結果を表示する。

もし予測と実際の相手の入力が異なる場合、予測のロールバック(巻き戻し)を行なって結果を一致させる。
例えば崖から飛び降りたはずの敵が一寸後に崖上に戻る、という現象はロールバックとしてよくある(予測では飛び降りると思ってそう処理したが、実際の相手は飛び降りていなかった)
この予測はおおむね正しく、ゲームプレイ体験を著しく損なうほど予測が外れることは滅多にないとされている。

なお完全同期型/非同期型でいう同期とは、プレイヤー(クライアント)の間でゲームの内容を同一に保つことを指している。
これらを指して同期処理/非同期処理と呼ぶ例がまま見られるが、誤用である。*3

アップデートレートとチックレート

1秒当たりに同期を取る回数をアップデートレートという。単位はHz。
アップデートレートが高いと頻繁に同期を取れるためお互いのゲーム状況は正確になりやすいが、通信量と頻度が爆発的に増えるため参加者全員にそれなりの回線スペックが必要となる。

アップデートレートが低すぎると、少ない頻度でまとまった情報をいっぺんに同期するため、お互いのゲーム状況に大きな違いが生まれやすい。

例えば自分は物陰に隠れたつもりなのに相手の画面では隠れていないため撃たれて死んだとか、無被弾の状態から突然3発同時に食らって死んだとかが容易に起こる。

ゲーム機側の同期の更新頻度をアップデートレートというのに対し、対戦サーバー側での更新頻度をチックレートという*4
ただ、スプラトゥーンは対戦サーバーを使用していないため、この意味でのチックレートは存在しない。

サーバクライアント通信とP2P通信

専用の対戦サーバーを用意し、ユーザーはクライアントとしてサーバーに接続して対戦を行うのがサーバクライアント通信。
対戦中の様々な処理はサーバー上で行われ、チックレートの間隔で各クライアント(ユーザーのゲーム機)へデータを送信して同期を図る。
昨今の多くの通信対戦はこちらの方法で行われている。

一方、対戦サーバーを用意せず、ユーザー同士で相互に直接接続して行う通信をP2P(Pear to Pear, ピアツーピア)通信という。
専用サーバーが必要ないため運営側はコストがかからないという大きなメリットがあるが、
ユーザー同士の通信品質(RTT)が全組み合わせで均質なのか分からない点や、
全員が全員と常に相互通信するため通信量が大幅に増える点、
対戦に潜り込んだチートを対処できない点など、品質面ではデメリットが多い。

このゲームの通信仕様

対戦時の通信方式は初代スプラトゥーンから変わらずP2P通信。対戦サーバーは存在しない(マッチングサーバーは存在する)。
アップデートレートは15Hz(秒間15回のペースでユーザー同士の同期を図る。フレームで言うと4Fおき)。こちらも前作のスプラトゥーン2から変更なし(スプラトゥーンは25Hz、スプラトゥーン2 先行試射会は12.5Hz)。

ソース

Ver.1.2.0現在もP2P通信かつ15Hz。

ソース

スプラトゥーン3からはネットワークライブラリーにNPLN(ナポリン)を使用している。
Google Cloud Japanに投稿された動画では「現時点では、高頻度なリアルタイム通信にはP2Pを利用しています。」(動画の15:55)との発言がある。
https://youtu.be/HN5yDW-Vi8A?t=955

参考: ほかのゲームの場合

参考: ほかのゲームの場合

  • Valorant: 128Hz

    To give defenders the time they need to react to aggressors, we determined that VALORANT would require 128-tick servers.

    (攻撃に反応するために十分な時間を防衛側に与えるために、Valorantは128チックのサーバーが必要であると決定した。)

    https://technology.riotgames.com/news/valorants-128-tick-servers (英語)

    参考 “ネットコードと128チックのサーバー // Dev Diaries - VALORANT”
    https://youtu.be/_Cu97mr7zcM (英語音声、日本語字幕あり*5)

このゲーム特有の同期

攻撃のヒットやダメージが発生した際、攻撃した側と被弾した側どちらの状況を優先して同期するかは、ダメージの発生方法によって異なる。
おおよその傾向として、「攻撃側が狙って当てるべきもの」は攻撃側のヒットとダメージが同期され、「被弾側が攻撃を察知して避けたり範囲外に逃げたりすべきもの」は被弾側のヒットとダメージが同期される。

メインウェポンの同期

メインウェポンのヒットやそれによるダメージ・キルは、メインウェポンを撃ったプレイヤー側の処理結果が他プレイヤーに同期される。
自分の画面で相手に弾が当たっているなら、相手からどう見えていようが関係なく当たったことになる。
例えば、攻撃側が被弾側にスプラシューターの弾を3発ヒットさせたが、被弾側の視点では攻撃を受けていない(ように見える)場合、攻撃側の「3発当てた」という処理結果が同期されるため、被弾側には弾が3発ヒットしたことになりデスする。

  • 「どう見ても物陰に隠れて射線が通っていないのにリッターに抜かれた」は、相手リッター視点では物陰に隠れていないあなたを抜いている。
  • 「どう見ても範囲外に逃げたのにブラスターの爆風で死んだ」は、相手ブラスター視点ではあなたに爆風が普通に当たっている。
  • 逆にあなたが何らかのメインウェポンを敵に撃って「どう見ても当たってるのにダメージが入ってない」は無い。それはあなたが外している。

サブウェポンの同期

サブウェポンによるダメージは、おおむね被弾側の処理結果が他プレイヤーに同期される。
自分の画面で相手ボムの爆風を避けることができていればデスしない。
このときボムを投げた相手の画面では、ボムが直撃したはずなのに死ななかった、と見えているかもしれない。

逆に、「自分の画面で避けたはずのボムで死んだ」は起こらない(それは避けられていないということ)
サブウェポンは直接当てるというよりは相手に回避を強要させる「置き」の攻撃である。そういう性質の攻撃で「避けたはずなのに死んだ」が発生するとゲーム体験がかなり悪くなるので、この仕様になったのだろう。

  • 正確には、サブウェポンに限らず爆風全般が被弾側の同期となる。
  • 直接狙って当てるクイックボムは、『2』では直撃のヒット判定は攻撃側、爆風のヒット判定は被弾側で同期されていた。
    • 同期ズレによって攻撃側では直撃させているが被弾側では完全に避けていた場合、直撃ダメージ25は攻撃側判定なので入り、爆風ダメージ35は被弾側判定なので入らず、爆風によるノックバックも被弾側判定なので発生しないという、不可思議な結果になっていた。
    • 『3』でも同じだと思われるが要検証。また、ラインマーカーなど新サブウェポンも検証が必要。

スペシャルウェポンの同期

スペシャルによって仕様が異なる(要検証)。

『2』では以下の通りだった。

『2』では以下の通りだった。

アーマーの同期

【攻撃側判定】メインがアーマーにヒットしたか否か→【被弾側判定】アーマーが存在するか否か→耐久値減算などの処理、
の順に処理していると思われ、アーマーの各種判定はアーマーをまとっている被弾側の処理結果が同期されると思われる。

  • 攻撃側でメイン射撃が生身にヒットしている場合、被弾側のアーマーの有無に関わらず相手はダメージを受ける。
    • 被弾側ではアーマーで防げたように見えていても、攻撃側で生身の敵にヒットさせている場合はその時点で既にダメージが発生している。
    • 被弾側の画面ではアーマーで防げているのでダメージエフェクトも発生しないが、実際にはダメージを受けているという矛盾した状態になる。その状態で攻撃側がキルに至るまでダメージを与えた場合、被弾側ではノーダメージ状態から突然致死量のダメージを受けてキルされたように見える。
  • 攻撃側のメイン射撃がアーマーにヒットした場合、まずヒット判定が被弾側と同期され、その後被弾側のアーマーの耐久値減算処理などが被弾側で行われると思われる。
    • 攻撃側でアーマーに防がれたように見える場合でも、ヒット判定が被弾側と同期した際に被弾側のアーマーが無くなっていた場合、被弾側でのアーマーの処理が行われずダメージを受ける。
    • アーマーの終わり際を攻撃すると、この同期ズレによる「アーマーで防がれたはずの敵になぜかダメージが入っていた」が発生しやすいものと思われる。
  • 攻撃側はアーマーに防がれており、被弾側もアーマーで防いでいる、という状況になって初めて正しくアーマーが機能するものと思われる。
    • 全てのアーマーが同じ仕様と思われるが、特に効果時間が短いイカロールでは、同期ズレを乗り越えて双方ともに正しく防がれ/防げている状況となる有効時間がさらに短いことになる。

コメント


*1 試し撃ちライン2本分の距離を、地上イカ泳ぎの最高速度で通過するのにかかる時間と、イカロール+少しの泳ぎで通過するのにかかる時間とを比較すると、僅かに地上イカ泳ぎのみの方が短かった。
*2 静止状態から慣性キャンセル即イカロールしても、最高速度でイカロールした場合と全く同じ飛距離に見える。一方、スティック半倒しでイカロールが出せるギリギリの遅さで泳ぎながらイカロールすると、普通に最高速度からイカロールした場合より僅かに飛距離が縮んでいる気がする…が、精確な検証が困難でよく分からない。
*3 同期処理とはプログラミング用語で「1つの処理が完了するまで次の処理を待つこと」を指す。非同期処理とは「ある処理が完了するのを待たずに次の処理を実行すること」を指す。ここでいう同期は処理の順序を制御することを意味している。待つのは通信に限らない。
*4 厳密にはサーバーのアップデートレートとチックレートはイコールではないが、動きの激しいFPS/TPSジャンルでは実質イコールになるのでここではチックレートとしておく。
*5 「設定(歯車)→字幕→日本語」で有効にする必要があります