查看: 601|回复: 0

手游服务端遭遇玩家客户端的兼容性问题和防外挂问题应...

[复制链接]

4783

主题

5079

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
18913

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2020-2-18 17:37:14 | 显示全部楼层 |阅读模式

手游服务端遭遇玩家客户端的兼容性问题和防外挂问题应该如何解决?https://www.gmbbs.net/
1月8日,腾讯精品开放平台WeTest正式发布《2017中国移动游戏质量白皮书》。
在《2017中国移动游戏质量白皮书》中,从研发概况、市场硬件环境、兼容性、客户端/服务器性能、安全状况、公众意见和声誉等方面总结了中国手机游戏产品的质量数据和趋势。最大限度地展示手持旅游研发质量的现状。
值得注意的是,gamelook发现,这份白皮书不仅给出了目前国内手持旅游产品所遇到的主要技术问题,还给出了一个建议开发人员理解的解决方案。以下是对最潮湿的各种技术问题的建议:
解决兼容性问题的建议
客户端崩溃
解决撞车问题主要有四种方法。开发商需要根据自己的情况做出合理的选择:
1.通过异常堆栈找到相应的代码进行分析。java可以直接看到代码堆栈。ndk-stack可以将本机程序还原到代码异常堆栈中,并根据逻辑找到原因。
2.将代码更改与以前的稳定版本进行比较,您可以使用beyondcompare之类的比较工具来仔细分析修改后的代码,并找出问题的原因。
3.直接调试和分析。使用安卓工作室进行调试。可以同时考虑Java和本机程序,并且可以在代码异常发生之前执行单步跟踪来找到问题的原因。
4.在关键位置点击更多调试日志,等待问题再次出现。重现后,通过日志缩小问题范围,并用代码进行分析,找出问题的原因;
用户界面异常
用户界面异常一般分为几类:黑屏、白屏和花屏;双重形象,错位;资源加载失败等。
1黑白屏幕和花屏问题通常与安卓设备的兼容性和适应性有关。细节与设备的屏幕尺寸、图形处理器类型、定制的安卓版本等相关。例如,注意GPU对某些纹理的支持格式;以及虚拟控件对图片本身的显示效果。
幽灵、混乱或无法加载资源通常是游戏本身的逻辑问题。一旦出现,它通常不会只发生在特定的模型上。这个用户界面问题的原因有时与游戏引擎有关。就Unity引擎开发的游戏而言,我们发现很多开发者没有遵循官方图片格式等等。请注意,图片格式符合官方标准,依此类推。
无响应
ANR问题通常是由主线程执行一些耗时的操作引起的,这会导致线程阻塞时间超过阈值,从而导致系统异常。
ANR主要包括以下类型:
按键显示超时(5秒)-主要类型、按键或触摸事件在特定时间内没有响应。
广播超时(10秒)-广播接收器无法在特定时间内完成处理;
服务超时(20秒)-小概率类型,服务无法在特定时间内处理。跟踪文件和系统日志在ANR分析中使用得更频繁
根据痕迹文件是否能准确掌握现场
系统日志中可能出现的有用信息是CPU使用率
客户性能优化建议
帧(fps)
在核心场景中,调用耗费时间的函数,如资源加载函数、对象生成函数、io操作函数等。这些功能应该在加载场景时完成。
场景中同时存在的对象数量需要控制,尤其是一些会影响性能的对象。具有刚体属性的对象需要物理计算和碰撞检测。具有复杂模型材质的对象需要更高的渲染性能。这些对象不应该同时存在太多。
优化游戏资源的大小,在保证效果的前提下,减少网格的面和骨骼的数量,纹理的大小等。
记忆
在代码逻辑方面,释放不再及时使用的内存,减少频繁的内存分配和释放,并在条件允许时使用内存池和对象池技术。
就游戏资源而言,控制资源的大小,按需加载和释放它们,并防止不再需要的资源留在内存中。同时,一些参数也会影响内存对资源的占用,如纹理的长度和宽度不是2的幂,纹理的纹理贴图的数量等。这需要特别注意。
中央处理器
在游戏的主线程中,尽量不要做复杂的操作,把这些操作放在一个单独的子线程中。
充分利用引擎提供的优化选项,如网格合并、遮挡剔除、光照烘焙等。这些功能可以大大减少引擎所需的中央处理器操作。
具有极高性能要求的代码可以用C或C语言实现,甚至可以用汇编语言嵌入。
解决服务器性能问题的建议
单一场景问题调查
通过压力测试工具进行单场景测试,逐步增加场景压力。如果服务器进程耗尽了cpu资源,回复消息太慢,并且回复消息失败,则表明服务器已经到达瓶颈。此时,系统工具(top、perf、iostat、vmstat等。)可以用来检查热点逻辑,看是否有优化的空间,或者从逻辑机制上解决问题。
解决容量测试问题
综合场景一般包括之前筛选出来的所有场景,所有的玩家都是按照一定的比例分布的,一般可以通过不同场景下心跳包的频率比例来看。
将会遇到的主要问题是:游戏被卡住,玩家被断开连接,等等。这些问题通常是由客户机或服务器的每个进程的资源瓶颈造成的。放映方法类似于单个场景。
稳定性试验问题的探讨
稳定性测试容易导致服务器停机和内存泄漏。鉴于服务器停机,gdb通常用于分析核心文件,并结合测试场景中的机器人行为分析停机的原因。通过查看稳定性测试中的内存变化曲线,可以判断服务器内存是否稳定或泄漏。在发生泄漏的情况下,服务器进程通常可以通过内存检测工具(如valgrind)进行检查。
解决手游安全问题的建议
客户端安全性
客户端安全是指从防破解和防调试的角度来看,在应用程序级别需要的预防措施。
对开发人员的建议:
1)增加防调试机制,防止游戏运行时被破解;
2)屏蔽常规注射方法,例如ptrace
3)配置编译选项以擦除so文件中的函数名;
4)检查动态库so和资源文件的完整性;
Unity引擎下的关键逻辑动态库dll文件需要隐藏或加密。
6)对Apk文件的二级打包进行验证处理;
7)避免输出与关键逻辑相关的日志信息。
业务逻辑安全性
业务逻辑安全指的是与游戏业务数据相关的安全问题。
对开发人员的建议:
1)在游戏运行时加密存储数据;
2)本地客户端和服务器之间的通信协议必须受到加密保护,并且每次登录时必须至少更改一次加密密钥;
3)对于通信协议交互性强的游戏,关键逻辑操作必须由服务器完成;
4)对于通信协议交互性较弱的游戏,应记录单个游戏中用户的数据,并上报服务器进行统一验证。
服务器端安全性
服务器端存在各种影响正常游戏运营的安全问题。
对开发人员的建议:
1)对于游戏中的用户输入,有必要防止SQL注入和其他类型的漏洞。
2)对于DDOS类型的攻击漏洞,建议添加类似于大禹系统的抗攻击安全组件。




【GM论坛[www.gmbbs.net]免责声明】
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
4、论坛的所有内容都不保证其准确性,完整性,有效性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请告之,本站将立即删除。
   提问发帖求助请点此发帖 https://www.gmbbs.net/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表