マルチプレイヤー RPG 用のサーバーをコーディングしていますが、現在、視界範囲の実装に苦労しています。一部のマップはかなり大きいため、クライアントに表示されるものを制限する必要があります。私のアプローチ:
クライアントから新しい座標を取得したら、移動開始時刻とともに目的地として保存します。xミリ秒ごとに、世界のすべての生き物を調べて、最後に更新したときの位置を保存した後、現在の位置を更新します。基本的には、移動開始時間と速度に基づいて新しい位置を計算し、それらを現在の位置変数に書き込み、新しい開始時間を保存します。この更新が完了したら、移動したすべてのクリーチャー、つまり前回の更新時とは異なる位置にあるクリーチャーについて調べます。サブループでは、すべてのクリーチャー/クライアントを再度調べて、クリーチャーの出現 (消失) について通知する必要があるかどうかを確認します。現時点では、この更新を 100 ミリ秒ごとに実行しています。
このアプローチは機能していますが、これは最善の方法ではないと感じています。そして、世界に数千のクリーチャー (プレイヤー、モンスターなど) がいるとどうなるかわかりません。それらを更新してチェックする必要があります。
この特定の問題に関するリソースを見つけることができなかったので、ここで質問しています。このアプローチは大丈夫ですか?すぐに問題が発生しますか? これを行うための標準は何ですか?最善の方法は何ですか?