重放系统的时间控制

时间:2013-06-07 11:18:54

标签: c# time

我正在编写一个从竞赛模拟器挂钩到数据流的应用程序。我的应用程序有各种仪表,可以在用户活动时向用户显示此信息。我将此数据保存到文件中作为显示过程的一部分。

我想做的是通过仪表重播,但是以实时速度重播。我的应用程序可以很好地重放此存储文件中的数据,但它的运行速度与数据读取速度一样快,而且速度太快。

数据存储在字节数组中并写入磁盘,并以串行方式读取,即我不会立即读取所有数据。我曾想过用数据流的时间长度编写一个字段,然后以某种方式在重放时映射,但这对我来说似乎过于复杂。

我正在努力弄清楚如何将其与实时相匹配。现在虽然我可以延迟实时模拟它,但问题是根据数据写入的速度,会影响这个“延迟”值。有些系统会以20或30条记录/秒的速度写入60条记录/秒的其他系统。

在数据中,我捕获的是一个时间值,虽然是一圈时间,但如果需要,我可以放入一个实际的时间字段而没有太多问题。

那么如何匹配录制的时间戳以便在重播时实时重播。

该应用是一款C#WPF应用。我已经阅读了几篇关于重放设计的帖子,但它们都与确定性游戏开发有关,这不是我正在做的事情。

2 个答案:

答案 0 :(得分:1)

  

在数据中,我捕获的是一个时间值,虽然是一圈时间,但如果需要,我可以放入一个实际的时间字段,没有太多问题。 [...]那么如何匹配记录的时间戳以便在重播时实时重播。

有些代码会有所帮助,但基本上你只需要在绘制每一帧之间等待(nextFrame.Timestamp - currentFrame.Timestamp)个时间戳单位。

请参阅this question和其他人了解让您的计划“等待”的最佳方式。

答案 1 :(得分:1)

如果将记录开始后的时间偏移与每个数据条目一起存储,该怎么办?然后以相同的速度重放数据,你只需要得到下一个条目的时差并睡觉或等待。