重放系统的时间控制
本文关键字:时间 控制 系统 | 更新日期: 2023-09-27 18:17:18
我正在编写一个应用程序,从比赛模拟器挂钩到数据流。我的应用程序有各种仪表,显示这些信息给用户,而他们在事件。我将这些数据保存到一个文件中,作为显示过程的一部分。
我想做的是通过仪表回放,但以实时速度。我的应用程序可以很好地重放这个存储文件中的数据,但它的运行速度和读取数据的速度一样快,这太快了。
数据存储在字节数组中并写入磁盘,并以串行方式读取,即我不会一次读取所有数据。我曾想过用数据流的时间长度写一个字段,然后在重放时以某种方式映射它,但对我来说似乎过于复杂。
我正在努力弄清楚如何将此与实时匹配。现在,虽然我可以将延迟模拟为实时,但问题是,这取决于数据写入的速度,将影响这个"延迟"值。有些系统的写入速度为60条记录/秒,有些则为20或30条记录/秒。
在我捕获的数据中是一个时间值,虽然是一圈时间,但如果需要,我可以将实际时间字段放入其中,而不会产生太多问题。
那么我如何匹配记录的时间戳在回放中实时回放。
这个应用程序是一个c# WPF应用程序。我读过一些关于重放设计的帖子,但它们都与确定性游戏开发有关,这不是我所做的。
在我捕获的数据中,是一个时间值,虽然是一个单圈时间,但如果需要,我可以放入一个实际的时间字段,而不会产生太多问题。[…那么我如何匹配一个记录的时间戳在回放中实时回放。
一些代码会有帮助,但基本上你只需要在绘制每帧之间等待(nextFrame.Timestamp - currentFrame.Timestamp)
时间戳单位。
请参考这个问题和其他问题,看看什么是让你的程序"等待"的最好方法。
如果您将记录开始以来的时间偏移量与每个数据条目一起存储呢?然后,要以相同的速度回放数据,您只需要获得下一个条目的时差,然后休眠或等待。