私は最近、リアルタイムでペースの速いゲームのネットワーキングについて考えています。正しく補間すると、player2(p2)s のポイントから (p1.interp+p2.interp+p1.ping/2+p2.ping/2) 以上前の状態でヒット計算が行われるようです。シューターがplayer1(p1)の時のビュー。
パケットは最初に p1.ping/2 を取得するサーバーに送信され、サーバーは p1.interp + p1.ping/2 前に発生したゲームの状態に基づいて計算します。その計算の結果は、後で p2.interp を見るだけの player2 に送信されます。3 つの側面すべてが物事を処理するのに時間がかかるため、合計するとさらに大きくなります。
player1 server player2
| | |
.------|_1.............actual.....|.....game state......|
| | | ^ |
|intrp |_2 | | |
| | | | |
`----->|_3----ping/2 | | |
`------|_4----ping/2 |
`------5_|-------.
| |
6_| intrp|
| |
7_|<------‘
アスキーアートのスキルが低くて申し訳ありませんが、我慢できませんでした。
(私は Windows がインストールされている家に帰りました。ここでそれがどのように見えるかがわかりましたが、皆さんがアイデアを理解してくれることを願っています)
50 ミリ秒の ping、100 ミリ秒の補間を想定すると、合計で 250 ミリ秒以上になります。これは、プレイヤー 2 がプレイヤー 1 によって約 250 ミリ秒前に見られていることを意味しますが、クライアントの予測を仮定すると、彼は自分自身をリアルタイムで見ています。私の論理に欠陥がありますか、それとも大したことではありませんか?