Questions tagged «replays»

9
面对浮点非确定性,确定性游戏怎么可能?
为了使游戏像RTS网络游戏一样,我在这里看到了许多答案,这些建议建议使游戏完全具有确定性。那么您只需要彼此转移用户的操作,并稍微延迟所显示的内容,以便在呈现下一帧之前“锁定”每个人的输入。这样,诸如单位位置,健康状况之类的事情就不需要通过网络不断更新,因为每个玩家的模拟都是完全相同的。我也听到过建议进行重放的同一件事。 但是,由于浮点计算在机器之间,甚至在同一机器上同一程序的不同编译之间是不确定的,真的可以这样做吗?我们如何防止这一事实在整个游戏中引起波动的玩家(或重播)之间产生微小差异? 我听说有人建议完全避免使用浮点数int来表示小数的商,但这对我来说并不实用-例如,如果我需要取一个角度的余弦值怎么办?我是否真的需要重写整个数学库? 请注意,我主要对C#感兴趣,据我所知,在这方面,C#与C ++存在完全相同的问题。

2
重播-存储和定时
我正在从事赛车游戏,只是实现了一个幽灵精灵来重播过去的比赛。我使用物理引擎,经过大量阅读后得出的结论是,存储重影数据以进行重放的最佳方法是在给定的时间点记录汽车的位置和旋转,例如此处所述:https:// gamedev。 stackexchange.com/a/8380/26261。 但是,在重播期间找到这些时间点的一种好方法是什么?一个示例是具有以下数据的记录: time: +3.19932 (seconds since race start) position: 180,40 (position at that time) rotation: 30.4 (rotation at that time) 但是我有几个问题: 重新播放时,不太可能再次达到3.19932的确切时间点-更有可能的是,我的时间点大约是3.1,必须找到最接近的匹配记录。插值时,即使是上下最接近的匹配。听起来效率很低,很费时间吗? 我可以在哪个列表结构中存储这些记录以供以后重播?数组?难道不是说比赛时间越长,匹配特定时间记录的搜索时间会增加吗? 我应该为时间点使用哪个频率?每个帧都是-我猜想是过大了,相反,我应该保存,即每第n帧并在它们之间进行插值,这使存储问题在2中更加困难。 那么这个想法甚至是正确的方法吗?如果是,我如何有效地存储和检索数据?请注意,我通常希望使用上面的数据结构,而不是确定性的游戏状态和记录用户输入等。 谢谢你的帮助! 编辑:我意识到我应该描述我使用的环境:iPhone的Cocos2D。有一种方法update:(ccTime)delta。理想情况下,每1/60秒调用一次此方法,但不能保证- delta是自上次游戏结束以来经过的实际时间,并且可能多于或少于1/60。我想用这种方法存储当前的游戏状态。

2
重播系统:记录输入或事件?
我读了这篇文章:如何设计一个重放系统,但是它并不能真正回答我的问题。 我的游戏是用游戏的客户端“视图”作为与服务器“模型”和“控制器”分开的程序构建的。(有点像mmo或以此方式构建的任何多人游戏)。服务器端始终是游戏的“真相”,它仅接受动作请求作为来自客户端的输入,并输出事件和“当前状态”消息。 游戏模型和规则是完全确定的,并且具有固定的“刻度”更新周期,因此在服务器端,我既可以记录发送到客户端视图的事件,也可以记录操作请求。两者都与特定的循环编号相关。 问题是:在这种情况下,要设置重放系统,我应该使用输入内容还是用户操作请求(如此处所建议)或事件? 在我看来,两者将给出完全相同的输出。我可以看到的唯一区别是: 事件提供真正的输出,而必须处理操作请求以提供事件。 动作请求可能要记录的数据要少得多。 还有其他事情要考虑吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.