1

マルチプレイヤー RPG 用のサーバーをコーディングしていますが、現在、視界範囲の実装に苦労しています。一部のマップはかなり大きいため、クライアントに表示されるものを制限する必要があります。私のアプローチ:

クライアントから新しい座標を取得したら、移動開始時刻とともに目的地として保存します。xミリ秒ごとに、世界のすべての生き物を調べて、最後に更新したときの位置を保存した後、現在の位置を更新します。基本的には、移動開始時間と速度に基づいて新しい位置を計算し、それらを現在の位置変数に書き込み、新しい開始時間を保存します。この更新が完了したら、移動したすべてのクリーチャー、つまり前回の更新時とは異なる位置にあるクリーチャーについて調べます。サブループでは、すべてのクリーチャー/クライアントを再度調べて、クリーチャーの出現 (消失) について通知する必要があるかどうかを確認します。現時点では、この更新を 100 ミリ秒ごとに実行しています。

このアプローチは機能していますが、これは最善の方法ではないと感じています。そして、世界に数千のクリーチャー (プレイヤー、モンスターなど) がいるとどうなるかわかりません。それらを更新してチェックする必要があります。

この特定の問題に関するリソースを見つけることができなかったので、ここで質問しています。このアプローチは大丈夫ですか?すぐに問題が発生しますか? これを行うための標準は何ですか?最善の方法は何ですか?

4

2 に答える 2

0

Eric Lippert は、シャドウキャスティングに関する非常に優れた一連の投稿を行っており、これにアプローチ/解決するのに役立つ可能性があります。

于 2012-06-02T16:18:20.637 に答える
0

四分木を使用して、プレイヤー キャラクターが見ることができる領域に基づいてゲーム ワールドをセクションに分割することを検討することをお勧めします。そうすれば、ゲーム内のすべてのクリーチャーを常にループする必要はありません。問題のプレイヤー キャラクターがいるセクション内のものと、何かが境界を越えた場合に備えて隣接するものだけをループする必要があります。

私はこの種のコーディングを個人的に行ったことはありませんが、GUI を開発していた宇宙戦闘ゲームでこれを行った人と一緒に仕事をしました!

于 2012-06-02T16:23:41.580 に答える