173173游戏网-国内大型游戏综合门户网站
您当前的位置:首页 > 新闻中心 > 最新新闻 > 正文返回列表页

GMGC开发者训练营 盖娅互娱研发技术总监刘琛:MMORPG手游研发技术要点(2)

编辑:173173游戏网 来源:网络整理 发表时间:2017-03-17 18:51 人气 | 查看所有评论

导语:Unity资源管理。Unity提供非常方便的资源管理机制,包括资源加载和卸载都有一整套的API。但Unity的资源管理和加载卸载有致命缺点,它的资源卸载虽然方便,但并不智能,也不精细,它的资源卸载是需要把所有的资源都

Unity资源管理。Unity提供非常方便的资源管理机制,包括资源加载和卸载都有一整套的API。但Unity的资源管理和加载卸载有致命缺点,它的资源卸载虽然方便,但并不智能,也不精细,它的资源卸载是需要把所有的资源都检查一遍,然后确定不用了以后才会去释放,但这个检查是非常耗时的。一个地图的游戏会经常加载和卸载各种各样的资源,所以如果我说调用这种函数会造成非常卡的感觉,这是我们需要避免的地方。我们在资源管理方面是自己做的,生成assetbundle时,把资源的依赖建立好存在文件里,加载的过程中会加载引用计数,可以很快的加载和卸载资源,保障内存的控制。可能大家会想为什么Unity不好,因为Unity的资源是可以循环引用的。大家知道循环引用是引用技术里最不能避免的一种问题,但其实我们在游戏开发中很少会循环这种资源。Unity性能。UI要注意层级和模块的划分合理,很多的常用UI在隐藏时不要隐藏或者禁用,我们要移出摄像机的镜头,这样回来时不会有这种激活问题。关注Overdraw,我们之前有策划做UI用全透的底图,但虽然是看不见的但也会有损耗。场景方面,根据小场景和大场景,这是静态加载,静态Batch还是动态分块加载,这种性能表现的比较好。在地图上我们用LOD的办法,让大家在可以看到的范围内尽量减少渲染。角色方面控制面数和贴图的质量,大家想要一种在一起玩的感觉还是想要看到很多玩家在一起呢,所以要控制角色控制面数。Unity的动画文件很大。贴图压缩,在大家做手游的过程中,一定要使用跟平台相关的压缩原理,PVR很方便,但质量很低,所以在UI不能用,安卓可以用ETCD,因为现在安卓平台的支持广泛的就是ETC1,但它的问题在于没有贴图,但我们我们还要修改。制作的过程中大家尽量保持一致,但在打包的过程中,大家需要做好打包的脚本根据不同的平台压缩不同的纹理,生成不同平台的包。对象池和资源池,不是所有的资源不使用就要立即释放,还有关于频率和资源特性的策略,这样不至于平台的加载卸载消耗自己的网络。在合适的地方主动触发GC和Unity的资源清理。清理LOG输出和字符的串拼凑,有时候会造成CPU损耗。两个工具,Unity Profiler、Frame Debugger,要检查自己的性能到底损耗在哪里。UWA公司的文章非常干。

热更新是手游领域必须具备的功能,我们要注意文件分布的合理性,单包不能太大,如果太大的时候加载会耗时。策划配置是Lua,大部分的客户端逻辑,场景和战斗都是UI功能,所以Lua是热更新的重点。我们需要有版本控制机制去更新,使用版本控制文件,我们所有的资源和Lua根据版本打成差异包,客户端根据版本控制下载差异包。注意CDN缓存问题,很多重名的文件大家不要放在CDN上。域名劫持。

Lua,现在很多的框架都在用,但uLua是使用频率最高的,一部分是Lua的虚拟家,还有就是C#与Lua的应用。在一些非关键点,我们可以先GC,在卡的时间比较长的时候,我们可以再完整GC。Lua使用有非常严重的问题是内存泄露,主要的原因是Unity的Mono和Lua的虚拟家之间互相看不到,所以两个虚拟机之间的对象相互引用的时候,没有办法回收释放。一定要明确哪一些东西用,哪一些东西不用的。Lua性能,内存占用,削减文件大小。Lua的执行效率没有问题,但它在Lua和C#相互调用的时候效率很低,我们在开发的过程中把一些频繁调用的模块放在C#上,减少Lua与C#的相互调用。热更新是所有手游都要具备的,热更新里面最重要的就是使用Lua来连接。

健康游戏忠告 抵制不良游戏,拒绝盗版游戏,注意自我保护,谨防上当受骗 适度游戏益脑,沉迷游戏伤身,合理安排时间,享受健康生活

  • 本站部分文字及图片均来自于网络,如不慎侵害的您的权益,请及时通知我们,我们将尽快安排处理。
  • 提示:本站为防止低俗内容出现,用户发表的评论及上传游戏需本站审核后才能显示出来,感谢理解!