美文网首页
位置同步

位置同步

作者: KN郑某某 | 来源:发表于2021-02-09 16:37 被阅读0次

情景假设:

a 客户端发送位置移动消息(包括当前位置和当前速度),经过服务器 s ,发到客户端 b,因为网络延迟而造成客户端 b 接收到消息时,客户端又移动了一定的距离,所以此时 b 客户端从 a 发送的位置开始按照a发送的速度开始移动,这就出现了位置的不同步;

解决方法:

我们只要在发送数据时将 “发送时间” 也加到发送的消息中,接收方接收到消息时,就可以根据当前时间和发送的时间的时间差知道此发送方又移动了多少的距离,所以直接将位置移动到新的位置,在新的位置开始移动按照原先的速度开始移动,这样就可以解决延时的问题。

新问题:此时会出现新的问题,就是客户端 a 和客户端 b 的时间是不同步的,所以我们不能知道两者的时间差是多少?

方法一:根据时间差进行位置的预测拉扯(如果发送的延时和接收的延时不相同)

因为服务器的时间是统一的,所以我们可以按照服务器的时间来统一时间,具体方法如下:

  1. 获得时间差:客户端发送当前时间 tc1 到 服务器,服务器当前的时间是ts,再将 ts 时间发送到客户端,此时客户端的时间是tc2,所以得到客户端的

    发送时间差 dt1 = ts - tc1
    接收时间差 dt2 = ts - tc2

将这两个数据保存(必须隔一段时间更新一次,当然每次发送位置信息更新一次也是可以的,这个可以根据情况自己决定)
  1. 开始计算:设 a 客户端的两个时间差是 dta1 和 dta2 ,客户端 b 的两个时间差分别是 dtb1 和 dtb2,a 在 t1 发送消息到服务器 s ,此时服务器时间是 t2,服务器将消息发送到客户端 b,理论上客户端b的时间是 t3,满足如下:

    t2 - t1 = dta1
    t2 - t3 = dtb2
    ==》t3 = dta1 - dtb2 + t1

    但是 b 接收到消息时,实际上 b 的时间是t4 ,即此时从 a 发送数据到现在已经经过的时间dt是dt = t4 - t3
    此时 a 又移动的距离是dx = dt * v(发送的速度),所以将b的位置按照a位置拉扯多dx,再在新的位置按照接收的速度开始移动。

综上所述:最终发送的消息包含的数据有 当前位置,速度,发送时间差


方法二:根据时间差进行位置的预测拉扯(假设发送的时延和接收的时延是相同)

  1. 这种条件下的判断更加简单,但是存在不合理的地方
  2. 客户端在 t1 时刻发送消息到服务端,服务端将数据返回客户端,客户端接收到数据的时间是 t2,此时可以得到网络的时延是 t2 - t1,因为假设发送的时延和接收的时延是相同的,所以可以知道发送的时延是 dt = (t2 - t1)/ 2
  3. 开始计算:设客户端 a 的网络时延是dta , 客户端 b 的网络时延是dtb , a 在 t1 发送消息,最终到达 b, b的时间是t3,可以知道这段时间经过网络延时造成的时间误差是:dt = t3 - (dta + dtb),此时 a 又移动的距离是 dx = dt * v(发送的速度),所以将b的位置按照a位置拉扯多dx,再在新的位置按照接收的速度开始移动。

综上所述:最终发送的消息包含的数据有 当前位置,速度,延迟时间

相关文章

  • 位置同步

    情景假设: a 客户端发送位置移动消息(包括当前位置和当前速度),经过服务器 s ,发到客户端 b,因为网络延迟而...

  • 2020向日葵双开无广告

    支持改共享位置+密友+多群同步

  • 位置同步机制(二)

    游戏说明 每个玩家控制一个飞机,在网络世界里尽情的pk。前期简单的操作就是左右键、飞行或者停止以及射击键,以及技能...

  • Linux中rsync备份数据使用实例

    rsync工具用于将文件和目录从一个位置同步到另一个位置。同步的位置可以在本地服务器或远程服务器上。 在Cento...

  • 状态同步游戏的移动手感问题

    首先弱网环境丢包的问题,丢包不可避免,如果用tcp的话,指数退避的算法会更加大延迟,在结合位置同步的特点,位置同步...

  • rsync 的使用

    查看是否安装 启动 检查启动 查看进程 语法 SRC表示同步源,DEST要同步到的位置,就是目标文件 rsync ...

  • Atom常用插件

    0、汉化 simplified-chinese-menu 1、文件在目录树中同步展示位置 atom-materia...

  • 时域同步

    LTE系统通过符号定时同步来确定正确的符号起始位置,即通过定时估计来确定OFDM时域帧的起始位置。由于OFDM系统...

  • Mac 鼠须管词库手动合并

    一、打开配置文件所在位置 二、从公司和家里或者从你的windows电脑上把同步文件放到这个文件里 三、点击同步用户...

  • 进程的同步和互斥

    同步 同步亦称直接制约关系,指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序...

网友评论

      本文标题:位置同步

      本文链接:https://www.haomeiwen.com/subject/kilcxltx.html