私は2Dサーバークライアントマルチプレイヤーゲームエンジンに取り組んでいます(こちらで試すことができます)。WebRTCを使用しDataChannel
ます。(接続はピアツーピアですが、ホストピアはサーバーとして機能します。)
(接続性を除く)最大の問題は、ローカル入力の予測です。通常の操作:キーを押すと、プレイヤーは即座に移動し、どのキーが押されたかをホストに伝え、ホストからデータを受け取り、それを過去の位置と比較します。差異がある場合、位置は時間とともに修正されます。これは、pingが高い場合でも、低いパケット損失またはPDVでうまく機能します。
損失またはPDVがある場合、偏差は大きくなる可能性があります。これは、入力の変更を示す最初のパケットが遅延またはドロップされた場合、ホストが後で検出し、ローカル入力の予測よりも遅れてそのプレーヤーの変更を開始するためだと思います。
プレーヤーが動いている場合は、目立たないため、適用される修正の量を増やします。これは、移動を開始するときと移動しているときにギャップを埋めるようです。ただし、修正が突然停止した場合、修正はより顕著になります。その後、ホストが後で停止したとPDVまたは損失が意味する場合、ホストはオーバーシュートし、少し先に進んでいるというデータを送り返し、修正によりプレイヤーは少しドリフトします。不安定な接続では、プレイヤーはしばしば停止した後に顕著にドリフトします。
私は他のゲームでこれに気づいていません。これをどのように軽減できますか?