请教一个服务器和前端交互的时候,有可能丢包或者1包比2包晚到的问题

我们的游戏是同步率比较高的竞速游戏,经过测试会有丢包或者接收消息时,当前帧会比下一帧晚到的情况,我应该如何处理才能把游戏画面和体验,让玩家感受到尽量平滑不突兀,现在是丢包,我就会重置画面,拿当前帧的数据绘制画面

ccc默认是用websocket做长链接,经验中只遇到过库不一致导致丢包,如果不是用websocket请略过。

谨慎起见还是百度一下
Z$})BEBUYSBV}$C2OP7A$E

感觉还是只能优化用户体验,想个表现方法把这种 伪丢包的情况,给圆过去

ws确实不会丢包但是,服务器的计数是有问题,导致了类似丢包的情况

意思是你们是状态同步吗。那客户端有没有游戏逻辑的。有的话是不是可以做预测

我们也有遇到过服务器同时发送消息,先发的比后发的到。要么做一个排序客户端矫正,要么合并有顺序要求的消息。排序非常麻烦,合并消息不大通用,自己做取舍。
还有一个只是我想的:同一个用户用同一个线程发消息。服务器说他实现不了 :rofl:

客户端的游戏逻辑更多的是表现,但是车的速度是在服务器计算的,我没有办法预测,同屏幕内车的车速是否会变快或者变慢

用户会实时点击加速按钮或者攻击按钮,导致速度更改

排序不会有延迟吗?我现在感觉服务器这块如果解决不了,最好的办法是让老板升级服务器 :joy:

客户端是怎么知道丢包的。你们是固定时间间隔给客户端下推状态是吗?
你这个处理看不懂,还是用当前帧的话,那就是在原地没动? :joy:

是有间隔时间推送状态的,每一次推送都会有服务端发的计数,计数不对,我就拿当前的状态保持不动

排序主要是处理同时到,但是顺序不对,所以不会有延迟。如果在序列中某个消息丢了就会卡住,所以如果丢包的话就会导致重连。
如果能够通过硬件解决的问题就不要纠结软件了。

有间隔时间。按我理解那就是直接同步车的位置然后做插值?这样出现丢包情况的时候,不就能用上一帧的速度来大概预测这一帧应该跑到哪个位置吗。
再在包里带上帧序号,下一次数据来的时候,用正确序号的包的数据做表现

游戏里速度计算逻辑挺复杂的,有些道具,会每秒递增速度,递减速度,包括急刹车,速度都会在1秒内掉下去,或者增加很多,会影响排名,所以没办法预测,如果我预测了,排名没变,那就出大问题了

两种办法
1 客户端预算
2 死认服务器最终值

其实是个服务器问题,大概率是服务器每个用户的消息处理没有固定到某个线程(协程)上,所以无法保证用户的消息按顺序消费

你们服务端是垃圾,,

我这边也是服务器说架构就是这样,不好处理 :rofl:

用nodejs自己写一个 吧 我现在都被逼得全栈了。服务器说干不了的我做完了

建议开除了换一个服务器