宇宙戦闘シミュレーションにおける光情報伝播のモデリング速度


29

私は、比較的広大な領域(一辺が20分の光の立方体)で行われ、(ほとんど)現実的な物理学を使用する宇宙戦闘シミュレーションに取り組んでいます。私がモデル化したい重要な要素の1つは、バトルスペース全体の情報の伝播速度です。つまり、プレイヤーAがバトルスペースの片側でメインドライブに従事している場合、プレイヤーBがそれを見るまでに20分の遅延があり、それに反応できる

比較的小さな戦闘スペースでも、速度が関係することを考えると、これは重要な要素です。30kpsの長さ500mの船は60分の1秒で全長を移動するため、わずか数10分の1秒先の敵をターゲットにした場合でも、ライトラグの影響を受けます。

これを行うのを見たことがありませんし、これをモデル化するためのいくつかのベストプラクティスがあるかどうか疑問に思っています。現在、各イベントにタイムスタンプを付けて位置をマークし、キューに入れてから、ゲームワールド内のオブジェクトのいずれかがライトコーンの端に新たにあるかどうかをチェックし、イベントを追加しています。センサーキューに。まだそれを感知できる可能性のあるすべてのオブジェクトによって既に感知されているイベントを削除することで最適化しますが、それでも面倒なかなり速くなると思います。プレイ中に数百の検知オブジェクトがある場合のサイクル数(これは非常に日常的です)

これに適したデータモデルはありますか?


7
答えはダンノですが、なんて素敵な質問でしょう!
ティム・ホルト

おっ!ゲームは主に視覚化に関するものです。ピクセルが大きすぎるとき、どのように敵を視覚化するのかを知る必要がありますか?シンプルなHUDインジケーター?テキストモードのアドベンチャーゲームですか?教えてください!
ジョナスビストレム

1
あなたのモデルは物理的に正確だと言います。そのニュートンまたは相対論的ですか?それはそのようなスケールで大きな違いを生むかもしれません。
–MSalters

1
質問に答えているわけではありませんが、「光の速度が遅い」を見ると、アイデアが得られるかもしれません。
マイケルパンコフ

@JonasByström-長距離ビューはかなり複雑であり、クリーンアップしようとしています。基本的に、ライトラグと船のコンピューターのターゲットの最大デルタvの推定値に基づいて、ターゲットが将来どこになるかを確率的に見たいと思っています。現時点ではそれよりもそれほど素晴らしいものではありませんが、:)
ジョンBiesnecker

回答:


9

ここでブレーンストーミングをしています...

興味深いことに、この場合、ネットワークラグがあなたの友人です。あなたと同じように、少なくとも描画に関するものであれば、一部のデータパケットに遅延が発生することを望みます。ただし、各プレーヤーは通常、ネットワーク速度だけの影響を受けるすべてのデータパケットに対してベースラグの代わりに、光速度の遅延に基づいて各イベントに特定の遅延を各プレーヤーに適用する必要があります。

通常、サーバーはすべてのクライアントに同時に更新を送信しますが、必要なのは、サーバーが各イベントの「遅れ」を(視聴者の距離に基づいて)計算し、それまで更新を送信しないことです。時間。

そのため、すべてのイベントについて、イベントと各プレーヤー間の時間遅延を計算し、遅延時間が経過するまでそのプレーヤーに描画するために送信されないようにそのイベントをキューに入れます。

これは、イベントの発生後にプレイヤーが位置や速度を変更する効果には対応していませんが、プレイヤーの変更に基づいてキューに入れられていたイベントを潜在的に調整できます。プレイヤーは時間とともに動き、イベントを近づけます。プレイヤーは時間内に移動します。

ドップラーシフトは、視聴者とイベントの間の移動デルタに基づいて、ミックスに投入する興味深いものです。


私はすでに位置と速度の変化をモデル化しています。スケールにもかかわらず、ゲーム内のオブジェクトは通常、光の速度のかなりの部分を取得しないため、イベントはそれらを比較的簡単に追い越しますが、受信機が球内にある場合は、各ティックでチェックがありますイベントです。したがって、良いクリップに向かって移動したり、離れたりする場合、数ティックの影響を受けます。ドップラーは確かに面白いでしょう!調べるべきもの。:
ジョン・ビースネッカー

2
この方法を使用する場合、注意が必要なことは、パケットをスキャンする誰も、情報を取得する前に取得できないことです。Eve Onlineは、クロークされた船で同様のことを行います。エリア内で船が移動すると、すべてのクライアントに通知されますが、クロークされた船が移動しても、クライアントには何も通知されません。それ以外の場合、クライアントは船を表示しませんが、パケットは表示します。
レイ・ブリトン

5

問題は、遅延画像が実際にどのように表示されるかを正確に知る必要があるということです。100%の精度を求めている場合、各ティックでマップ上のすべてのオブジェクトのアクションまたは状態のいずれかを保存し、言うように、距離に基づく遅延でそれらを再生する必要があります。ゲームではめったに必要としないピンポイントの精度についてあまり気にしない場合は、間隔を空けて状態を保存し、遅延が追いついたときにそれらの間を推定することができます。同一の更新を保存しないことで最適化できます。

または、すべての動きをベクトル化し、普遍的な観測者から見た開始時間とともに各オブジェクトのパスを保存できます。その後、保存したパスノードに基づいた現地時間の世界時カウンターに基づいて、各オブザーバーのオブジェクトの予想位置を計算できます。パスノードのタイムスタンプが、関連するすべてのオブジェクトのライトコーンより遅れる場合、それを破棄します。

編集:上記では、絶対的なオブザーバー(私はプレーヤーと仮定しています)によって基本的な相対性論をだまそうとしていると仮定しています。これは時間膨張のより興味深い側面のいくつかを奪いますが、それらをモデル化すること自体がプロジェクトになります> _>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.