MMO衝突検出


7

2Dゲーム用のMMOゲームサーバーを構築していて、現在衝突検出を実装しています。どうすればよいか知りたいのですが。

1000人のプレイヤーがプレイしていて、10,000個のオブジェクトがあるとします。それらすべてを繰り返し処理して、衝突しているかどうかを判断する必要がありますか?これは少し高価なようです。

世界をチャンクに分離し、チャンク内の各プレーヤーのすべてのオブジェクトを反復することができます。

他のアイデアや標準とは何か知りたいのですが。MMOサーバーが衝突検出を処理する最良の方法は何static objectsですか?


:私は、これは、それはデビッドの答えに追加したgamedev.stackexchange.com/questions/3884/...
パトリックLorio

回答:


14
  1. チャンク分割されている世界は、実際に実行する必要がある最初のステップであり、各チャンクは個別に処理されます。

  2. 静的オブジェクト?それらが決して移動せず、決して消えないという意味で純粋に静的ですか?次に、これらのオブジェクトを、世界のプレーヤーナビゲーショングリッドナビゲーションメッシュ可視性グラフなど)に使用しているデータ構造に単純に組み込むことができます。個々の衝突検出を行う必要はありません。これは、デザイナーが手動で行うことも、コンテンツパイプラインの前処理ステップとしてエンジンが自動的に行うこともできます。

  3. 一方、各チャンク内の動的エンティティ間の衝突検出を実際に実行したい場合は、同時エンティティの予想される量に応じて、空間分割データ構造四分木やグリッドなど)を使用して削減することでメリットが得られる可能性があります。反復する必要のあるエンティティの量。一般に、前述の空間分割手法やスイープやプルーンなどの他のアプローチを含む、広域位相衝突検出(しゃれは意図されていません)のより広いトピックを調査します。


3
補足:すべての物理エンジンのサブセットは衝突を検出するためのユーティリティです。物理を使用して移動しなくても、独自に記述したくない場合は衝突検出を使用できます。
Patrick Hughes

1
@PatrickHughes正しい。数年前、分離軸の定理を使用してOBB-OBB交差を正しく機能させるために何時間も費やしました。その後5分でBox2Dをドロップして問題を解決しました。
David Gouveia、2012年

言うまでもなく、彼らはすでにBroadphaseを実装しています。
David Gouveia、2012年

1
これを容易にするために、物理エンジンの他のすべての計算を「オフ」にすることは現実的ですか?オブジェクトは定期的に不連続に移動するため、MMOサーバーで適切な物理を実行したくない場合がよくあります。
カイロタン2012年

1
けいれんや奇妙なことについては何も言わなかったが、MMOオブジェクトは特定の位置にスナップする必要があるため、不連続に移動する必要があることが多い。テレポート/ゾーニング、または不適切な予測とスピードハックの修正など。私は何年も物理パッケージを使用していませんが、当時は通常、そのような任意の動きを処理することは非常に困難でした。
カイロタン2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.