已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
3天前关闭。
Improve this question
我在我的在线游戏中使用canvas。所有数据都是按客户端考虑的,在一个玩家移动之后,最终状态在房间中的所有客户端之间同步。然而,在一个回合中,动画可以播放不同。我使用了requestAnimationFrame,但在update函数中,经过的时间也被考虑在内,我在计算时依赖它。2帧仍然不同。3我的游戏对即使是最轻微的偏差也非常敏感,所以动画必须完全一样。这怎么能实现呢?或者至少接近我想要的?
有很多动画库。在它们里面,动画总是一样的,它们是怎么做到的?
1条答案
按热度按时间sdnqo3pr1#
我不是Maven,但我认为这取决于你如何计算框架。
想象一个只会跳跃的游戏,跳跃在2秒内完成,想象两个玩家
[1, 2]
同时跳跃,你只为用户1
发送:并且有
0.5 sec
的延迟所以他会看到2号参与人的跳跃在2. 5秒内结束。也许你可以添加一个时间戳来真实的计算位置,即使他有一个连接延迟。另一种选择是将该逻辑发送到服务器,服务器发送对象的坐标,并更新每个用户PC上的状态:
所以,你重画画布,总是呈现最后一个坐标点。
也许你可以使用这两种技术,在服务器上更新对象的状态(比如玩家的位置),在PC上更新状态(比如枪声)。
另一个技巧是使用一个工人来更新画布,使其更快,不要阻止主要威胁(https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas)