サーバーは最終的な判断を下しますが、クライアントが入力および位置として送信するものを検証および正常性チェックすることでそれを行う必要があります。あなたがしているのはプレーヤーをすぐに動かすことであり、あなたのコードで作成する期待はクライアントが本当のポジションであるということなので、私はこれを言います。
一般的にはうまくいくと思いますが、そうではありません。補足:クライアントはレンダラーにすぎないと言った後、サーバーのメッセージなしで移動するためのローカルコントロールをすぐにクライアントに与えます。両方の方法を使用することはできません。サーバーが移動するように指示するまで待つか、自分の位置をある程度制御し、サーバーを使用してチートを確認します。
回答が1秒に達していることをお知らせします。これは500msのレイテンシであり、あらゆる種類のアクションゲームにとっては途方もなく大きいものです。このターンアラウンドに非常に時間がかかる理由を見つけてください。コマンドキューのバックアップから、すぐに処理されないことから、帯域幅のフラッディング、または多くのパケットの損失の原因となるデーモンまで、さまざまなことが考えられます。
私が起こるべきだと思うのは
client sends a move + position update
server gets it t+latency time later
server verifies and sends out info to all clients
client receives this at (t+latency + latency)
ここでトリッキーな部分は、クライアントがそれ自体に関するメッセージを受信した場合、そのメッセージが「無効な移動、代わりにXYZに移動する」などのメッセージでない限り、ほとんど無視する必要があるということです。そのメッセージがあなたが情報を得ている他の誰かのクライアントのためのものであるなら、あなたはそれがどこにあるかのように見えるように時間内にフォワードを外挿する必要があります。