1

レース シミュレーターからのデータ ストリームに接続するアプリを作成しています。私のアプリには、イベント中にユーザーにこの情報を表示するさまざまなゲージがあります。表示プロセスの一部として、このデータをファイルに保存しています。

私がやりたいのは、ゲージを介してこれを再生することですが、リアルタイムの速度で再生します。私のアプリは、この保存されたファイルからのデータを正常に再生しますが、データを読み取ることができるのと同じくらい速く実行されていますが、これは速すぎます。

データはバイト配列に格納され、ディスクに書き込まれ、シリアル方式で読み取られます。つまり、すべてのデータを一度に読み取るわけではありません。データ ストリームの時間の長さをフィールドに書き込んで、再生時に何らかの方法でマップすることを考えていましたが、私には複雑すぎるように思えました。

これをリアルタイムに一致させる方法を理解するのに苦労しています。リアルタイムでシミュレートするために遅延を入れることができますが、問題は、データが書き込まれる速さに応じて、この「遅延」値がどうなるかに影響することです。一部のシステムは 60 レコード/秒で書き込み、他のシステムは 20 または 30 レコード/秒で書き込みます。

私が取得したデータには、ラップタイムではありますが、時間の値が含まれていますが、必要に応じて実際の時間フィールドを問題なく入力できます。

では、記録されたタイム スタンプを一致させて、リプレイでリアルタイムにリプレイするにはどうすればよいでしょうか。

アプリは C# WPF アプリです。リプレイのデザインに関する投稿をいくつか読みましたが、それらはすべて決定論的なゲーム開発に関連しており、私が行っているのはそれではありません。

4

2 に答える 2

1

私が取得したデータには、ラップタイムではありますが、時間の値が含まれていますが、必要に応じて実際の時間フィールドを問題なく入力できます。[...] では、記録されたタイム スタンプを一致させて、リプレイでリアルタイムにリプレイするにはどうすればよいでしょうか。

いくつかのコードが役に立ちますが、基本的には、(nextFrame.Timestamp - currentFrame.Timestamp)各フレームを描画する間にタイムスタンプ ユニットを待つだけです。

プログラムを「待機」させる最善の方法については、この質問と他の質問を参照してください。

于 2013-06-07T11:23:09.637 に答える