記事
- 1. 送信 tickrate は framerate 依存,受信 tickrate は 20 Hz
- 2. 弾道計算に不具合があったっていう事実
- 3. ゲーム開始時のスローモーションは単なるバグだったのか……
- 最後に
1. 送信 tickrate は framerate 依存,受信 tickrate は 20 Hz
tickrate は 20 Hz。
Our servers are running at 20Hz. This means that they simulate the entire world state once every 50ms (1 second—or 1,000ms—divided by 20).
筆者訳: サーバーは20 Hzで動作しています。これは全世界の状態が50 ミリ秒(1 秒=1000 ミリ秒,これを20で割る)ごとにシミュレーションされることを意味します。
Apex Legends はゲーム framerate がデータ送信に依存する設計らしい。
多くのゲームにおいて、サーバーが60Hzで動作している場合、クライアントは60Hzの入力しか送信できないということです。60fpsで動作している場合は問題ありません。ですがクライアントが120fpsで動作している場合、入力の半分が失われてしまいます。ですが「エーペックスレジェンズ」の場合は違います。入力のレートが変動しても、問題なく処理が可能です。(ちなみに「エーペックス」ではfpsが高いほど、帯域幅の使用量が増加します。)
2. 弾道計算に不具合があったっていう事実
撃ち合いのゲームなのに……
通常であれば、クライアントとサーバーは同じ結論に至り、銃弾は予測通りの場所に着弾します。以前は、弾道や弾の軌道を計算する方法にバグがありました(例えばスナイパーライフルといった、弾のサイズが点ではない全ての武器において)。
3. ゲーム開始時のスローモーションは単なるバグだったのか……
覚えている方もいるかもしれませんが、シーズン7と8では、ゲーム開始時のチャンピオン画面で速度低下が起きていました。試合に参加している全プレイヤーが同じ場所にスポーンしたことで、プレイヤーが別のプレイヤーの真上に配置されたり、重なり合ったことが問題の原因でした(UIのせいでその光景を見ることすらできなかったわけです!)。物理シミュレーションでは、オブジェクトが他のオブジェクトと重なり合うと問題が発生します。そして物理エンジンがプレイヤーの体をお互いから引き離そうとしたことで、サーバーのCPUに大きな負荷がかかったというわけです。
ひどい…… 初期の頃に待機画面で殴って敵をノックダウンすることができるって不具合ありましたが,あの状態のままだったんですね……
最後に
ざっと気になったところピックアップしました! 本文の記事を読んでもらえればいいかと!
他ゲーのネットコード関連
公式のものをピックアップしました。非公式のスマブラSPとかも検索したら見つかると思います。
Valorant
昨日大会が盛り上がっていた Valorant についてもネットコードや当たり判定についての動画や記事があるのでどうぞ。
こちらの記事は英語です。
こちらの動画には日本語字幕があります。
Battlefield V
ネットコード調査に関する報告。
日本語翻訳はこのスレッドから: https://twitter.com/WildG_Jeff/status/1077221846267904000