做了一个智能玩具车的项目,针对项目中出现的一些问题,做简要记录。
 
项目的设计系统的体系架构是什么?
这是一款进行远程操控的赛车软件,用户可以在手机上操控小车的行驶路线,还能透过摄像头看到远方的山水风光。
它主要由app客户端,商家后台,服务器,小车硬件,直播推流,摄像头这几大板块组成。
 
游戏操控是怎么一步步传递给小车的?
app客户端向服务器发送操作请求,服务器收到后,将指令发给了安装在小车上的APP,
app安装在安卓版上,安卓版连接摄像头,音响等,在联网和推流的情况下,用户从app客户端透过小车的摄像头看到实景,进行比赛等
 
直播又是怎么一步步建立连接的?
直播涉及到推流和拉流,主播使用推流引擎把采集阶段封装好的内容 通过 url 参数指定的 rtmp 推流地址 上传到服务器,;用户客户端使用拉流引擎在源站直接拉取,并进行解码和渲染内容的过程。
 
 
能看到屏幕,但车无法启动?
检查一下安装在安卓版上的app,与硬件的交接是否有问题
 
直播屏幕为白屏,是什么原因?
猜测:
可能是带宽太小了(查看服务器带宽)
可能是网络不够流畅(保证网络流畅下排查)
拉流失败(数据内容格式异常)(第三方排查)
手机端不兼容问题(使用多台设备,不同系统排查)
 
用户操作动作与小车视频动态有延迟,是什么原因?
我们可以通过发起请求到运营商,运营商到服务器,服务器到运营商到小车,小车到摄像头,每个节点的传输时间,可以通过查看手机APP日志找到延时的原因。
可能是:
RTMP协议的播放地址延时一般比较低(需要即构进行排查) 摄像头的延迟(雄迈排查)
服务器性能太低,也会导致延迟变大,服务器来不及发送数据
网络延迟(查看WIFI信号,5G,4G信号) 安卓版处理性能不足(JSON硬件方排查)
 
直播页面卡顿?
可能是服务器带宽不足导致(查看服务器带宽)
 
用户操作小车后,小车没反应,待小车重新推流后,小车处于停不下来的状态?
直播使用RTMP协议,当网络状态差时,服务器会将包缓存起来,导致累积的延迟;待网络状况好了,就一起发给客户端。
对策:当客户端的缓冲区很大,就断开重连。
 
 
你遇到了最难解决的问题是什么?
(排队为何是困扰的?出现什么问题?什么原因导致?解决的方案是什么?)
最难的是进入游戏时的排队功能,
当场景只有一辆车时,一人游戏,多人排队的情况
当场景有多辆车时,多人游戏,多人排队的顺序的情况
当一/多人正常退出/等级匹配不足/卡托不足/网络原因等退出游戏时,其他人的排队情况
当多人同时进入游戏,或多人同时退出游戏,车辆的释放情况和排队情况
其中常见的问题是:
出现多人同时进入一辆车的情况
出现多人同时排队,其他有两人同时并行的情况,其实其中一人处于断开情况
多人排队,同时出现网络不流畅,排队顺序混乱的情况
多人同时退出游戏,后续没被再次分配的车辆,停留在驾驶中,无法释放等
网络出现异常,无法操控车辆的情况
排队中,切换后台,倒计时停止,导致其他车辆也无法排到队
策略:一开始开发修了又修,但是问题层出不穷,BUG总是死而复生,后面开发修改了传输协议,
由原来的WEBSOKET协议改成了HTTP长连接,解决了操作不稳定的问题
并且针对网络问题,我们采用了断网重连机制
当因为网络异常问题,车辆会一直停留在驾驶中的问题,当websoket检测到网络异常时,前端会给提示并且强制退出游戏,车辆在3分钟内接受不到来自服务器的指令,会进行释放车辆
 
posted on 2022-12-16 14:15  小树~~  阅读(57)  评论(0)    收藏  举报