Corona SDK 位置预测。
2014-6-27 2:46:46
收藏:0
阅读:60
评论:1
我正在使用Corona SDK创建一个多人游戏。每个设备每秒发送15条消息,包含他们角色的位置。由于一些消息接收时间略有不同,而在30帧每秒的游戏中只发送15次,因此导致移动不流畅。如果下一帧没有接收到数据,我应该如何计算出从前一帧到当前帧的角色位置或旋转的差异,以预测其位置。我完全接受其他解决方案!谢谢!
原文链接 https://stackoverflow.com/questions/24440191
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
如果发送速率是固定且双方(发送方和接收方)都知道的话,接收者就可以假设它。在这种情况下,据死算法是一种已经得到充分验证且容易应用的技术。例如,如果发送者每隔 1/15 秒发送一次数据,那么接收者可以假设在接收到第一个数据包后,任何其他的数据包都是相隔 1/15 秒。如果在 1/15 秒内没有接收到任何东西,那么接收者会猜测如果它确实被接收到的话,数据包在 1/15 秒后的情况是什么。然后当数据包实际到来时,它会纠正猜测。
唯一需要保证的是数据包的顺序和交付。如果数据包从不丢失并且始终按顺序到达(即 TCP),那么它就很可靠。
如果可以保证顺序但有些数据包会丢失,则接收者需要知道何时发生了丢失。我认为可以通过为数据包计数器的方式去纠正。因此,如果接收者收到一个计数器为 X 的数据包,下一个数据包的计数器为 X+2,那么接收者就知道该数据包已经丢失了,因为顺序是保证的,所以两者之间的时间差为 2/15 秒。
如果不会丢失数据包,但无法保证顺序,则计数器也将有所帮助:接收者保证如果数据包 X 已经到达了,那么数据包 X+1 最终也会到达,所以即使它收到了 X+2,它也会将 X+2 保存,并等待 X+1 到达。
最后,如果既无法保证传递,也无法保证顺序(即在广域网上传输的 UDP 数据包),那么计数器仍然是充分的,但算法会有所改变:如果接收者收到一个计数器为 X 的数据包,然后收到了 X+2,这可能意味着 X+1 已经丢失了,或者会很快到达,但无法知道。因此,如果在短时间内(也许又 1/15 秒)没有收到 X+1,接收者将宣布数据包丢失(因此,如果最终到达,则将被忽略)。
以上都是在发送方频率几乎恒定的情况下进行的。