让我们做简单的事情,我们有一个云,客户端绘制,服务器,它发送命令移动云。假设客户端1运行在60 fps上,客户端2运行在30 fps上,我们希望云转换能够比较平稳。
第一个问题-服务器有不同的fp与客户端,如果发送移动命令每勾,它将启动垃圾邮件命令要快得多,然后客户端将绘制。
可能的解决方案1-客户端发送“我想要更新”命令后完成框架。
可能的解决方案2 -服务器每x发送移动云命令,但云将不会顺利移动。可与解决方案3相结合。
可能的解决方案3 -服务器发送-“开始移动云的速度x”和“改变”云方向,而不是“移动云到x”。但问题再次是什么检查改变云量在屏幕边缘,将触发更快比云实际绘制在客户端。
也是客户2比客户1慢2倍,如何补偿这一点?
如何与客户端以基本方式同步服务器逻辑?
发布于 2012-08-29 04:49:54
如果你能做到的话,解决方案3听起来是目前为止最好的解决方案。您的所有其他解决方案都过于健谈:它们需要客户端和服务器之间非常频繁的通信,除非服务器和客户端之间有非常好的网络连接,否则太频繁了。
如果您的云移动非常简单,可以将它们作为向量发送到客户端,以便客户端可以在从服务器接收新指令(新的开始位置和向量)之前,沿着一个向量移动一段较长的时间(许多帧),那么您肯定应该这样做。如果您的云运动不像简单的向量那么容易表示,那么您可以选择一个更复杂的模型(例如,添加指令来转换随时间变化的向量),并将模型的参数发送给客户端。
如果云是更大世界的一部分,并且客户端跟踪世界中的时间,那么来自服务器的每一组指令都应该包含一个时间戳,表示模型中初始条件有效的时间。
至于如何补偿客户端2的绘制速度比客户端1慢两倍的问题,您需要使您的世界时钟以一致的速度在两个客户端上运行。此速率不需要与任何客户端上的屏幕刷新速率有任何关系。
https://stackoverflow.com/questions/12170972
复制相似问题