毎秒 60 の更新ループを持つサーバーを取り上げます。このサーバーは、いつでもクライアント入力を受信し、それらを配列に格納して、次の更新ティックですべてを処理します。処理が完了すると、配列は空になります。サーバーは遅延し、1 秒あたりの更新が 60 未満になる可能性があります。不正行為を防ぐために、入力の処理は次のように行います: player.x += speed * deltaTime
問題は、正しい deltaTimeを見つけることです。
これが各サーバー ティック間の deltaTime である場合、サーバーが遅れるとプレイヤーはより速く移動するか、他のプレイヤーよりも多くの入力を送信すると、プレイヤーはごまかす (より速く移動する) 可能性があります。
クライアントが入力のタイムスタンプを送信する場合、連続する同じ入力間の deltaTime を取得できます (ただし、最初の入力の deltaTime は 0 になります)。しかし、繰り返しになりますが、プレーヤーは別のタイムスタンプを送信して不正行為を行うことができます...
解決策 ?
どうもありがとうございました !
編集: また、ティック間の deltaTime を使用したクライアント側の予測があります。