如果忽略角速度,则在赛车拐大弯的时候网络远程所看到的图象将是锯齿状
的圆弧,而并不是平滑的。
于是这里提出一个角速度的概念,当键盘的左/右键在按下的时候,在PDU包
中多传一个角速度,然后远端在收到消息后,按照收到的角速度对赛车进行
一个角速度的模拟,当左右键弹起的时候,角速度为0,这个时候也需要将再
发一条角速度变为0的消息。
需要考虑的比较麻烦的一个问题:
当用户很频繁的单击左/右键的时候,发包频率变化得很快,于是这里跟轨道
和速度一样,同样需要一个阉值来进行缓冲。
暂时的解决方案是客户端设置一个记时器,当左/右键按下的时候,启动记时
器,当左/右键送开的时候,释放记时器,不发包。而当记时器到时的时候,
根据记时器的时间算出一个圆周运动的差值,将当前坐标加上这个差值,一起
组成一个新的PDU包,发给远端,可以得到比较好的模拟预测效果。
PS,如果不了解DR算法的,请搜dead reckoning 同步等关键字查找相关内容,或
者参考我的《小谈网络游戏同步》一文。
的圆弧,而并不是平滑的。
于是这里提出一个角速度的概念,当键盘的左/右键在按下的时候,在PDU包
中多传一个角速度,然后远端在收到消息后,按照收到的角速度对赛车进行
一个角速度的模拟,当左右键弹起的时候,角速度为0,这个时候也需要将再
发一条角速度变为0的消息。
需要考虑的比较麻烦的一个问题:
当用户很频繁的单击左/右键的时候,发包频率变化得很快,于是这里跟轨道
和速度一样,同样需要一个阉值来进行缓冲。
暂时的解决方案是客户端设置一个记时器,当左/右键按下的时候,启动记时
器,当左/右键送开的时候,释放记时器,不发包。而当记时器到时的时候,
根据记时器的时间算出一个圆周运动的差值,将当前坐标加上这个差值,一起
组成一个新的PDU包,发给远端,可以得到比较好的模拟预测效果。
PS,如果不了解DR算法的,请搜dead reckoning 同步等关键字查找相关内容,或
者参考我的《小谈网络游戏同步》一文。