程序员的噩梦,一定是某个角落突然有人大呼“怎么又这么卡呀???”玩家、运营、产品老是喷你的客户端为什么卡怎么办?总有些技巧,学会了,卡顿的锅,咱技术不背!

李东旭  巨人网络客户端软件专家。擅长含有物理、数学等游戏玩法研发,熟悉游戏性能优化,目前负责《球球大作战》客户端相关研发。

本期Live,GAD邀请到了巨人网络客户端资深软件工程师李东旭老师,以《球球大作战》为例,分享了手游客户端的优化技巧、客户端与服务器的同步怎么优化等问题,干货满满,小编本着有福同享的原则整理了Live的精彩内容推送给大家。

1.我们一个游戏在unity3d 里面用DragonBones 做的2d动画 普攻的特效没有分离,加载和运行的时候很卡 cup 占用很高 这个怎么优化呢?

李东旭:动画加载和运行卡,检查一下骨骼结点是不是很多。

2.像是在《球球大作战》中网络延迟到网络恢复的这期间,客户端要怎样处理才能更平滑,客户端会加速跑吗?

李东旭:出现延迟的话,客户端会根据当前收到的数据进行计算和模拟,使得客户端的球也能继续移动,等网络恢复的时候通过加速平滑的拉过去。

3.手游客户端ios和安卓有什么针对性的优化呢?

李东旭:其实IOS的同体性能比安卓要好很多,所以我们主要集中在安卓这一块,安卓优化好了Ios也就自然而然优化好了。

安卓的优化也主要是通用的那些优化,主要就是代码效率、资源加载、美术模型的优化等。

4.服务器同步的时候不是很平滑,这个怎么优化呢?

李东旭:服务器同步的话,还是需要客户端做一个平滑的处理,使得玩家在游戏中不易感觉出来。

5.单物理服务器承载量级大概是多少?

李东旭:一个房间大概能承载数百人,一个服务器有上千个房间。

6.想请教一下做状态同步这种框架需要注意哪些问题?和帧同步比起来差异又是如何的?

李东旭:帧同步与状态同步最大的差异就是一个在客户端、QQ号购买平台一个在服务端,状态同步要比帧同步要好处理些,帧同步比较麻烦一点的就是要保证每个现象都要一样,比较难一点。

7.网络波动的情况下,客户端会不会卡顿严重,有没有什么好的优化办法?

李东旭:小的波动其实影响不大,主要是怕那种发一个消息,很久才收到,会让玩家明显感到卡的情况出现。

8.单物理服务器也可以每个房间100人,1000个房间吗?

李东旭:1000个房间是极限情况,我们其实不是每个服务器都这么多的,一般情况大概只有一半左右。

9.Cocos引擎手机游戏耗电的主要因素有哪些呢?

李东旭:耗电主要是CPU、GPU的工作量很高,CPU主要是我们自己些的代码,GPU主要就是那些美术资源。cocos这个我们用的不是很多,但对于Unity来说,我们有个优化就是降低分辨率,减少引擎渲染的开销。

10.《球球大作战》中用的是Udp还是Tcp?Udp真的效率比tcp高很多吗?因为udp感觉成本比较高,还要保证顺序重发包。

李东旭:刚开始用的Tcp,现在是两种混着用。一般情况会检测玩家的网络情况,网络较好的情况用的是Tcp,波动比较大的话会切换成Udp,这个是动态切换的。Udp的成本的确是比较高,所以前期为了快速上线用的Tcp,现在是玩家反应卡顿过多,所以花大力气做了Udp,Udp的效率确实比Tcp高很多。

11.像unity里的2d动画的骨骼和纹理,一般是多少合适呢?服务器发包频率多少?

李东旭:我们一般采用的是5个骨骼,纹理256KB。服务器发包频率最高每秒10次,在这个频率内的话,服务器还是很流畅的,如果超了的话就会有延迟了。

12.我们第一个包中场景初始的动画很多。unity的的动画和龙骨或者说用dotween那个效率高一点?球球的模型动画或场景ui动画是如何优化的呢?

李东旭:场景的初始动画建议动态加载进来,看不见的先不要加载在产品上面。效率最高的动画其实是Unity的animaton,最简单效率也最好。动画以简单为主,时间越短越好。球球里面也没有使用过多复杂的动画。

13.动画是最好归纳到一个动画状态机 然后统一管理子节点的动画好 还是,每个都是animaton用程序处理好,也就是说是否能相信animator的效率?

李东旭:优先程序来实现动画的状态,如果复杂的话用animaton,因为animaton在使用的时候,加载消耗还是很高的。

14.客户端发送数据到服务端的话,服务端组装帧数据包的时候有加锁吗?

李东旭:客户端发的服务器可以理解为每个玩家都有一个“槽位”,客户端给服务器发送数据的时候就放在这个“槽位”,然后服务器就从这些槽位中取数据。

15.游戏逻辑出BUG了,你们是怎样定位?

李东旭:如果是偶然出现的话,就是让它复现,就是按照一定规则复现出现就会容易发现问题了。如果复现还是找不到那么会借助一些比如说断点,看下具体那部分出现了异常。

16.为什么有的客户端包体很大却完全不影响启动速度?

李东旭:客户端的启动速度和包体的大小没有什么直接的关系,取决于运行场景的大小,还有resources里面资源量的大小。

巨人网络李东旭:关于提高游戏流畅性的那些事相关推荐

  1. csgo调哪个会流畅_对于游戏卡顿掉帧说不,三步提高游戏流畅性,让你纵享丝滑画面...

    在我们玩游戏的时候,经常会遇到画面掉帧或者卡顿,严重影响玩家游戏体验,所以小编结合自身经历今天给大家带来如何提高画面帧数以及游戏流畅性的小技巧. 一.什么是FPS数值 要想真正理解FPS,我们必须先科 ...

  2. 计算机提高游戏运行速度的方法,DNF提高游戏流畅度办法推荐 DNF提高游戏流畅度方法...

    导 读 相信很多玩家在玩DNF的时候,就算自己电脑配置理论上来讲已经可以完全带动DNF,但有时候还是会一卡一卡的,那么怎么办呢?今天小编就给大家推荐一下DNF提高游戏流畅度方法,快一起来看看吧! 电脑 ...

  3. 个人理财有哪些基本原理和方法?——知乎李东旭

    为什么80%的码农都做不了架构师?>>>    本文我觉得对大部分普通家庭很适用. / 现金为王:不超额消费,不使用信用卡,不负债(房贷除外) 信贷消费已经成为主流的今天,强调使用现 ...

  4. 黄东旭:开发者的“技术无感化”时代,从 Serverless HTAP 数据库开始 | PingCAP DevCon 2022

    12 月 1 日,以"去发现,去挑战"为主题的 PingCAP DevCon 2022 主论坛在线上成功举办,为数万观众带来一场技术盛宴.PingCAP 联合创始人兼 CTO 黄东 ...

  5. 李东生:管理者不能变成诸葛先生

    2011年是TCL的全年营业收入达历年来最好的水平,回到并且超越2004年开始国际化并购之前的状态,也是成立整整30年的特殊节点.作为中国第一代企业家,特别是李东生的同学比如创维的黄宏生.康佳原掌门人 ...

  6. “开源社区运营就像种菜”,黄东旭谈开源商业化 | 独家

    <CSDN编者按><程序员>于 2000 年创刊,其理念为技术改变世界,创新驱动中国.2021 年,全新的<程序员>2.0 重新起航,以专业的内容为立足点,以音视频 ...

  7. 黄东旭当选 CCF 数据库专业委员会、开源发展委员会、大数据专家委员会执行委员

    近日,CCF 数据库专业委员会.大数据专家委员会分别公布了执行委员最新名单,PingCAP 联合创始人兼 CTO 黄东旭成功当选数据库专业委员会.大数据专家委员会执行委员.此外,CCF 开源发展委员会 ...

  8. 要成就事业,更要分享快乐 记上海润邦(集团)有限公司董事长兼总经理李东

    毕业于名校的李东曾经是上海政府部门最年轻的处级干部之一,他信奉一条原则,就是事业要快乐地去闯,要结合时代背景去闯.他说:"战争年代,我一定去扛枪打仗,当兵最能体现价值:计划经济年代,我一定去 ...

  9. win10系统做游戏服务器,Win10专业版如何提升游戏流畅度?Win10游戏流畅度的三种提升方法...

    对于喜欢玩游戏的用户而言,电脑就是其娱乐工具,为了能够提升游戏的流畅度,会根据系统配置问题进行优化.那么Win10专业版的用户要如何提升游戏的流畅度呢?别着急,下面小编收集了三种Win10专业版提升游 ...

最新文章

  1. 包装类接受string 会自动将数字类型string转换成对应得包装类型
  2. 为什么很努力进步却不明显
  3. java gettext返回值_012-关于EditText中的getText()方法的返回值类型以及string的转换问题(转)...
  4. Notepad++写Verilog HDL代码时,在注释语句下出现红色波浪线怎么办?
  5. java 手风琴二级菜单_jQuery多级手风琴菜单实例讲解
  6. P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
  7. Storm,Spark和Samza
  8. 公文写作与计算机应用,德阳市事业单位《计算机应用和公文写作》真题.doc
  9. 正则表达式系统教程.CHM
  10. 微信小程序开发——以简单易懂的浏览器页面栈理解小程序的页面路由
  11. 通过select下拉框里的value控制div显示与隐藏
  12. 开源原生JavaScript插件-CJPCD(省市区联动)
  13. 第5讲:软考中高项04_进度管理、成本管理
  14. 绝不在构造/析构函数中使用虚函数
  15. 基于火焰传感器的火焰警报
  16. 手把手教你安装vivado2015.4开发环境
  17. JESD204B高速AD开发(一)基于FPGA的LMK04821时钟芯片设计
  18. SpringBoot配置文件的说明
  19. Knockout绑定语法
  20. c语言怎么实现滑动窗口算法,【C语言】滑动窗口算法

热门文章

  1. combobox 怎么实现对listview的类别查询_Flutter实战之独立实现官网Demo单词收藏Demo
  2. java2实用教程第5版第九章_java2实用教程(例子代码)第4版第九章.doc
  3. Spark 系列(一)—— Spark简介
  4. ORA-39095: Dump file space has been exhausted
  5. (一)U盘安装ubuntu18.04.1
  6. BGP属性+13条选路原则(转载)
  7. 仿微信公众号后台管理-自定义菜单
  8. win7下nsis打包exe安装程序教程
  9. 对于java反射的理解
  10. Android 4.0新增WiFiDirect功能