[开发者心得] 【断线重连宝典】断线重连产生的原因以及应对措施

  [复制链接]
3476 |1
空伊伊 发表于 2023-3-2 18:16:34 | 显示全部楼层 |阅读模式
本帖最后由 空伊伊 于 2023-3-23 09:43 编辑

什么?游戏又弹重新链接了?
“正在尝试重新链接”是什么意思?
1.png
啊?与服务器链接中断?


别担心!要搞清楚这些问题,咱们可以往下看!
👇👇👇


断线重连是什么?
断线重连包含三个状态:“断线”、“重连”、“与服务器断开链接”
断线:当由于网络波动/错误,服务器原因等造成客户端与服务器无法通信时,则会判断为断线
重连:当出现断线的情况,会自动进行重新链接
与服务器断开链接:当重连10秒依旧无法连接服务器时,会与服务器断开连接。玩家可选择退出游戏或重新连接


导致断线重连的原因
1.RPC函数调用过于频繁一段时间内调用超过255个RPC函数会导致网络断开
(补充:RPC函数可以简单理解为服务端和客户端的通信)
2.服务端内存不足、服务端CPU占用过高(简单理解就是服务端被你搞炸了,自然就链接不上了)
3.客户端内存不足、客户端CPU占用过高(简单理解就是你的手机目前太卡了)
4.客户端挂起时间太久了,超过180秒会直接让客户端进入断线状态(你不玩别人还要玩呢,相当于把你踢出房间了)
(补充:“挂起”指的是切后台、看广告、熄屏等操作)
5.手机的网络不好(你网不好,当然就连接不上服务器了)


主动实现断线重连
下方视频中我进行了4个操作
操作一:短暂切出后台,期间不接受服务端RPC消息(结果:无事发生)
操作二:切出后台长达180秒(结果:直接断线)
操作三:短暂切出后台,期间接收服务端RPC消息的频率较低(1秒10次)(结果:无事发生)
操作四:短暂切出后台,期间接收服务端RPC消息的频率很高(1秒30次)(结果:尝试重新链接,10秒后断开链接)



避免断线重连的应对措施
1.减少RPC函数的调用(能一次性做完的事情,就不要让服务端和客户端来回通信多次)
2.减少游戏场景中双端动态物体的数量(减少双端动态物体能降低服务端内存消耗)
3.将非必要的计算逻辑交由客户端执行(降低服务端CPU消耗)
4.少用物理模拟、少用Update(降低服务端CPU消耗)
5.逻辑中注意内存管理,避免创建大量对象消耗内存(减少服务端内存消耗)
5.使用Events.addOnPauseListener和Events.addOnResumeListener来处理挂起状态时的逻辑(减少挂起状态时堆积的信息)
6.玩游戏时保证良好的网络(网络游戏当然得网好啊)



如果出现了其他莫名其妙的原因导致断线重连
欢迎大家在评论区分享哦!




回复

使用道具 举报

窜稀战神 发表于 2023-5-8 10:25:34 | 显示全部楼层
本帖最后由 窜稀战神 于 2023-5-8 10:30 编辑

动态双端物体,要少在服务器写tween,同步过程会消耗大量网络资源
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表