問題タブ [dead-reckoning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
10230 参照

networking - ネットワーク化されたゲームでの遅延への対処

ネットワークゲームを作ろうと思っています。私はこれに少し慣れておらず、推測航法とネットワーク遅延の適切な計画をまとめようとして、すでに多くの問題に遭遇しているため、このトピックに関する優れた文献を見てみたい. 私が考えた方法を紹介します。

もともとは、プレイヤーの入力をサーバーに送信し、そこでシミュレートして、ゲーム状態の変化をすべてのプレイヤーにブロードキャストするだけでした。これにより不正行為が困難になりましたが、遅延が大きい場合は、自分のアクションの結果がすぐに表示されないため、制御が少し困難でした.

この GamaSutra の記事には、帯域幅を節約し、クライアントでもシミュレートすることでローカル入力がスムーズに見えるようにするソリューションがありますが、チートプルーフは窓の外に投げ出されているようです. また、プレイヤーが環境を操作したり、岩を押したりし始めたときに何をすべきかわかりません。以前はニュートラルだったこれらのオブジェクトは、一時的にクライアントが PDU を送信する必要があるオブジェクトになるか、複数のプレイヤーが一度に送信する必要があります。誰の PDU が勝つでしょうか? オブジェクトが各プレイヤーによって二重に追跡されなくなるのはいつですか? (推測バージョンと比較するため)? 2 人のプレイヤーが相撲の試合に参加することは絶対に禁じられています (例: 互いに押し合い始める)。

この gamedev.net のビットは、gamasutra ソリューションが不適切であることを示していますが、別の方法について説明しているため、私の共同で岩を押す例を実際には修正できません。私が見つけた他のほとんどのものは、シューティング ゲームに固有のものです。SNES ゼルダのようにプレイするゲーム向けの何かをもっと見たいと思っていますが、もう少し物理学/勢いが関係しています.

  • 注: ここで物理シミュレーションについて質問しているわけではありません。他のライブラリがカバーしています。ネットワークの遅延にもかかわらず、ゲームをスムーズかつ反応的にするための単なる戦略。
0 投票する
4 に答える
834 参照

great-circle - 私がここにいて、そこに向かっているとしたら、私はどこにいるのでしょうか?

次のメソッドを書くのに助けが必要です:

すべての場所は (緯度、経度)

地球が楕円体であるという事実を考慮した、地球にはさまざまなモデル (WGS-84、GRS-80 など) があることを認識しています。私の目的では、完全な球体で十分であると仮定すると、このレベルの精度は必要ありません。

アップデート

いくつかの回答を考慮して、質問を微調整しています。

benjismithは、地球上のポイント間に複数の最短経路があるため、私の質問に答えることができないと主張しています。彼は投票という形で多くの支持を持っているので、私は同意しないので、私が理解できない何かがあると思います.

球上の任意の 2 つの位置の間の中点は円弧です。

これは、2 つの点が完全に正反対の場合に当てはまることを認めます。これは、両方の点が球の表面にとどまっている間、互いにこれ以上離れることはできないことを意味します。この場合、両方の点を結ぶ等距離の経路は無数にあります。ただし、これは特殊なケースであり、ルールではありません。他のすべてのケースでは、大多数のケースでは、単一の最短パスがあります。

説明すると、2 点を通過する紐を持って強く引っ張った場合、紐が落ち着く経路は 1 つだけではないでしょうか (既に説明したエッジ ケースを除く)。

さて、質問をする前に、2 点と方​​位の間の距離を取得することは問題ではありませんでした。

私が尋ねるべきだったのは、次のことが有効かどうかだと思います。

もし私がこの道をたどるとしたら、私は大圏、菱形線をたどることになるでしょうか?それとも完全に外れてしまうのでしょうか? (Drew Hall の回答のおかげで、これらの用語を知っています。)

0 投票する
2 に答える
1412 参照

language-agnostic - 旋回が含まれる場合に推測航法を実装するにはどうすればよいですか?

推測航法は、以前に決定された位置に基づいて現在の位置を推定し、経過時間とコースに対する既知または推定速度に基づいてその位置を進めるプロセスです。」(ウィキペディア)

私は現在、推測航法の最適化を利用する単純なサーバーを実装しています。これは、クライアントとサーバーの両方で論理的な仮定を行うことにより、必要な更新を最小限に抑えます。

ユーザーが制御するオブジェクトは、回転している、または回転していないと言えます。これは、推測航法に問題をもたらします (私の見方です)。

たとえば、[位置、速度、回転: 左/右/いいえ] で定義された時点Aがあるとします。ここで、 t時間後にポイントBが必要になります。回転していないときは、新しい位置は簡単に推測できます。結果の方向も簡単に推定できます。しかし、これら 2 つの要因が組み合わさるとどうなるでしょうか。オブジェクトがt時間回転するにつれて、速度の方向は曲線に沿って変化します。

おそらく別の解決策を採用する必要がありますか(サーバーに「今左に曲がっています」と伝えるのではなく、新しい方向ごとにクライアントに更新を送信させるなど)?

ちなみに、これは簡単にするために 2D 空間にあります。

0 投票する
1 に答える
3371 参照

java - GeoTools - GeoTools クラスを使用して推測航法とコース計算を行う方法

私は現在、GeoTools ツールキットを使用して、2 つの経度/緯度ポイント間の大圏距離の計算など、船舶データの計算を行っています。他に 2 つの要件を満たす必要がありますが、GeoTools のどこを調べて、この種の計算を行うクラスを見つければよいかわかりません。

要件 #1:移動中の船舶の推測航法位置を 計算します。

入力値:

  • 現在の経度
  • 現在の緯度
  • 現在の速度 (時間「T」が与えられると、距離に簡単に変換できます)
  • 現在のコース

期待される成果:

  • 時間「T」が経過した後の経度/緯度の推定位置

要件 #2: 位置「A」から位置「B」までのコースを計算します。

入力値:

  • 経度「A」
  • 緯度「A」
  • 経度「B」
  • 緯度「B」

期待される成果:

  • 「A」から「B」を直接指すコース

質問

これらの計算を実行できる GeoTools のクラスを教えてもらえますか? GeoTools の膨大な数のクラスに圧倒され、これを行うために必要なものが見つからないようです。

0 投票する
1 に答える
1224 参照

multiplayer - マルチプレイヤー ゲームでの AI NPC の同期

私は小規模なマルチプレイヤー レーシング ゲームの開発を始めました。もちろん、Half Life、Quake、Unreal で使用されているすべてのプレイヤー予測、推測航法、ラグ補償技術を使用していますが、ゲーム内に数十台の AI 車も含める予定です。 .

最初は、ランダム シードをすべてのクライアントに単純に送信し、AI の位置などを計算することにしましたが、次の問題に達しました。

  1. すべてのクライアントは、AI 車を実行するためのシードを受け取ります
  2. クライアントは、視線内にいるプレーヤーの動きの更新のみを受け取ります
  3. プレイヤー A が NPC の車にぶつかる
  4. プレーヤー B がプレーヤー A のフレームに入る

プレイヤー B はプレイヤー A の動きを受信して​​いないため、AI 車がまだ正常に動いていると想定し、プレイヤー A がそれらの車の 1 つに衝突したという事実を計算しません...

要するに、プレイヤーの影響を受けた AI ユニットを同期するにはどうすればよいでしょうか?

0 投票する
1 に答える
2387 参照

android - ジャイロスコープの測定値を方位角に変換する

Android デバイスからジャイロスコープを使用して、車が曲がっている間に車の回転角度を見つけようとしています。車が角度 168 の方位で走行していて、道路を右折するとします。ここで、ジャイロスコープを使用して、新しい進行方向または方位角を計算する必要があります。しかし、受け取る値はラジアン/秒です。これらの値を期間 dT にわたって統合してみました。しかし、これらの値は実際の角度にさえ近くありません。回転はデバイスを基準にしていると思い、値を実際の座標に変換しようとしました。しかし、私はそのための良いアルゴリズムを手に入れませんでした。

誰かが私を助けたり、この問題を解決するための適切なリソースを指摘したりできますか?

編集: 質問で言及するのを忘れていました。GPS を使用せずにこれを実行しようとしています (GPS が失敗した場合のシナリオで)。 Android プラットフォーム以外でも実行できるソリューションです。車両の実際の速度を取得するために OBD と通信しています。したがって、クライアントからジャイロスコープのデータを収集し、バックエンドで処理して、車両の回転だけを判断しようとしています。

0 投票する
1 に答える
508 参照

opengl - 回転行列の値を外挿する方法は?

私はchai3dapiを使用しています。これは、仮想世界でオブジェクトの向きを保存するために3x3のフローティングptマトリックスを使用します。

サーバーから定期的に更新した後、クライアント側でこれらの方向を予測して、一貫した仮想グラフィカルワールドを作成したいと思います。

位置と速度の値を送信して、オブジェクト(openglキューブなど)の位置を予測します。

方向の角速度は位置の速度と同じですか?

はいの場合、この3x3行列から角速度を計算し、それを外挿に使用するにはどうすればよいですか?

0 投票する
1 に答える
668 参照

networking - ゲームに推測航法を導入する最も簡単な方法は?

画面上を多数のスプライトが飛び交うゲームを使用しており、ユーザーはそのうちの 1 つを矢印キー/WASD で制御しています。

ホストゲームがユーザーが制御するものであり、クライアントゲームにはユーザー入力がなく、ホストゲームで起こっていることすべてを単に模倣するように、ネットワーク経由でセットアップしました。

私がする必要があるのは、クライアント ゲームでユーザーが制御するスプライトに推測航法を実装することだけです。上下左右の4方向に動きます。

これを行う最も簡単な方法は何ですか/これを行うにはどうすればよいですか?

ps 私のホスト ゲームは、WinSock を使用して UDP ソケット経由でクライアントにデータを送信します。

0 投票する
1 に答える
2290 参照

ios - iOS推測航法

私は、GPS が利用できないときに単純な推測航法を行う必要がある iOS プロジェクトに取り組んでいます。さまざまな電話から、以下で構成される一連の測定データが提供されました。

  1. GPS データ (x、y、z、コース、速度) (利用可能な場合)
  2. 加速度計 (ユーザー加速度 x、y、z)
  3. ジャイロスコープ (回転率 x、y、z)

時系列で欠落している GPS 位置を計算したい。最後の GPS 位置とコースの値に基づいて位置を予測する方法は理解していますが、これでは大きな誤差が生じます。私の質問は、加速度計とジャイロスコープのデータを組み合わせると、より良い結果が得られるかどうかです。加速度計の値を統合して速度情報を取得する方法は理解していますが、ジャイロスコープ データの使用方法がわかりません。どんな助けでも大歓迎です。

0 投票する
1 に答える
305 参照

gps - ハネウェルの推測航法モジュールの GPS の問題

現在、Honeywell DRM4000L を GPS モジュールに接続しようとしています。DRM は、GPS 入力を受け取り、シリアルで位置を出力する推測航法デバイスです。現在、GS407 GPS モジュールを DRM に接続しています。DRM で GPS パススルー機能を試すたびに、意味不明な出力が得られます。

また、GPS に接続された FTDI ケーブルがあり、正しい NMEA データを取得しています。コンピュータに直接接続すると、GPS からのデータはすべて正しくフォーマットされます。DRM データも正しく受信されますが、NMEA データ ストリームが表示されないため、GPS データで初期化されません。慣性センサーに基づいたトラック情報のみを持っています。

GPS は 9600 ボーに設定され、DRM ホスト ポートは 9600 に設定されているため、DRM は正しい GPS データをすべて認識しているはずです。DRM からコンピュータへのボーレートも 9600 です。

私が見ていないものを見ている人はいますか?ありがとう!