自上次LayaAir 2.0.1beta新增3D动画文件压缩、内存与性能优化、开放域项目创建等功能后,一个月很快就过去,在这段时间里,我们不仅在官网新增了大量的LayaAir 2.0 3D文档,优化了一些2D文档,全面更新了官网的3D示例。在今天发布的LayaAir 2.0.2 beta版里,还围绕着2.0引擎发展的主线“性能、易用性、3D”这几个核心点做了大量的更新,更是率先完成了小米快游戏的引擎适配以及在LayaAir IDE中集成了小米快游戏的发布。
小米快游戏背景介绍
TEF 2019快应用开发者大会于3月20日在北京落下帷幕,宣布海信手机和中国移动终端公司加入快应用生态平台,厂商联盟扩展为12家。快应用具有成本低、体验好、留存高的特点,在功能和体验层面已经可以媲美原生APP,对用户的使用成本更是轻量。发展至今,快应用累计覆盖全网10亿设备,月活超过2亿;快应用打开次数超过20亿,超过1亿个桌面图标留存,7日留存率18%。
作为快应用厂商联盟成员之一的知名手机厂商小米,一旦被引擎厂商公开支持适配,势将为快速引入众多的游戏CP与优质产品铺平了道路。Layabox作为首家完成适配和公开发布小米快游戏的引擎方,已经具备完整的发布与接入流程。特别是在LayaAir IDE内提供了引擎一键发布工具,开发者可迅速将基于LayaAir引擎的游戏项目发布为小米快游戏,并且整个接入过程十分方便,极大降低了开发者的接入成本。
快游戏的入口既包括典型的原生应用,也有丰富的系统级入口场景:浏览器、应用商店、游戏中心、桌面搜索/全局搜索、负一屏、锁屏、语音助手、快应用中心、Push、日历。只要用户点亮屏幕,随时随地可快速进入小游戏中。在未来亿级用户曝光资源的支撑下,快游戏不仅会成为快应用生态的未来,还有望成为整个游戏行业的一个全新增长点。
LayaAir 2.0.2 beta 版本要点
通用部分
1、引擎新增了屏幕物理分辨率适配开关(useRetinalCanvas),启用后,适配模式可自动调整为屏幕物理分辨率,让游戏画面更加高清。
2、IDE强制升级更强大的发布版本功能、并新增了小米快游戏的发布。
2D方面
1、引擎大幅提升了spine的效率(性能、内存)。
2、IDE新增二进制文件合并功能,并优化提升了文件合并与图集压缩的易用性。
3、IDE增加wav音频的组件识别。
4、IDE全面更新了自带的UI组件资源(Assets\comp)
3D方面
1、引擎大幅提升同材质且同Mesh的MeshSprite3D性能
2、引擎优化骨骼动画性能,提升15%
3、引擎的性能统计信息增加savedRenderBatches,方便开发者查看节省的批次数量
4、引擎ShaderPass增加StateMap功能,渲染状态设置更灵活,可逐ShaderPass也可逐材质
5、Laya U3D插件大幅优化提升蒙皮Mesh导出性能,提高100倍
01
新增物理分辨率开关
我们通常在进行屏幕适配时候,要考虑的重要因素之一是设计尺寸,就是游戏按多少像素设计的,比如750*1334。游戏设计尺寸不仅会影响画面的清晰度,同时也对图片文件大小、GPU、内存会产生影响。设计尺寸较大相对于设计尺寸小的,图片资源尺寸大,GPU渲染压力大,内存占用大。所以有一些对画面精致度要求并不是太高的,或者是因为性能等原因,设计时将游戏图片尺寸设计的比较小,例如960*640。然后通过拉伸放大来适配一些高分辨率屏幕。这样带来的后果就是高清屏幕上会不清晰,图像或者文字甚至有马赛克现象(有的是锯齿感明显)。所以开发者就不能过分的将设计尺寸调小,而是要考虑到主流的机型来均衡考虑。
在微信安卓7.0.3版本之前,安卓版的微信小游戏底层会强制把在屏Canvas的宽高按屏幕物理分辨率设置。也就是说,哪怕开发者把游戏图片尺寸设计的比较低,最终画面的表现仍然会很清晰,当然,这会影响到性能。同时,对一些不需要高清显示的游戏,更希望能节省一些性能的消耗的CP来说。相当于小游戏底层就剥夺了开发者的选择权。不过从7.0.3开始,小游戏底层不再强制把Canvas设置为物理分辨率,在性能有提升的同时,很多之前没有暴露出设计尺寸存在问题的小游戏(设计尺寸较小),会发现在高清手机上变的不清晰了或者是有轻微马赛克感。由于LayaAir引擎并不存在7.0.3的版本兼容BUG,所以碰到这些问题的基本上都是对屏幕适配理解不深,并且适配经验不足导致。
为了让适配门槛更低,也为了解决那些已有的老游戏在不改变设计尺寸的前提下,能够自动适配为高清物理分辨率模式。所以,从LayaAir 2.0.2beta版开始,我们增加了useRetinalCanvas这个强制将Canvas设置为物理分辨率的设置,当Laya.stage.useRetinalCanvas=true时,无论是使用哪种LayaAir的适配模式,在哪种设计尺寸下,canvas都将按物理分辨率大小设置。好处是,那些设计尺寸小的游戏,不用调整图片大小,不用担心内存占用增加,又可以恢复到高清模式了。缺点就是强制为高清分辨率后一定会带来GPU渲染压力,也就是开启这个功能后,需要牺牲一些性能。所以引擎默认是关闭的,如果开发者认为该产品性能更重要时,可采用LayaAir的标准适配方案来设计游戏尺寸,当开发者认为各屏幕的高清视觉表现更重要的时候,可以开启该功能。
02
发布优化与小米快游戏支持
在LayaAirIDE的发布功能方面,由于2.0正式版推出了新版的发布功能,并称为发布版本的3.0,一度引起部分开发者对于引擎版本与功能版本号的混淆或疑问。因此,从LayaAir 2.0.2beta开始模糊小功能的版本号概念,去掉发布按钮旧版指向,原发布功按钮直接指向到新版发布。如果还需要使用旧版发布功能,可以前往菜单栏的项目选项中打开。 我们推荐使用新版本发布。如有功能使用疑问,可以打开发布功能界面后,点击问号图标查看说明文档。
另外,继率先支持百度智能小游戏之后,LayaAir引擎又再次率先完成了小米快游戏的引擎适配与IDE发布支持。流量大厂的加入,让开发者又多了一个新平台流量红利的机会。
当然,在接入早期,如果开发者对于小米快游戏接入业务不太了解,也可以联系Layabox的商务获得更多的技术与上架支持。
商务合作联络邮箱:[email protected]
相关链接:百度即将推出智能小游戏,Layabox率先完成引擎适配支持!
03
大幅提升Spine效率
在LayaAir 2.0.2 beta版里,我们对Spine的效率进行了大幅提升。根据三七.极光旗下大天使项目组提供的spine模型作为测试用例素材,每个模型155个骨骼和845个三角形,在小米6的内置浏览器测试环境下。针对上一版引擎,我们从性能与内存两方面进行了数据对比。
性能对比:
红线为2.0.2beta版、蓝线为2.0.1beta版
X轴为sprite数量,Y轴为相应sprite数量的FPS帧速
通过性能数据对比,我们可以直观的看到。100个精灵(sprite)时2.0.2满帧,2.0.1只能在40帧左右。在继续增加精灵数量的过程中,FPS(帧速)都在下降,但2.0.2始终保持着性能上的优势。
内存对比:
红线为2.0.2beta版、蓝线为2.0.1beta版
X轴为sprite数量,Y轴为相应sprite数量的内存占用量
通过内存占用的数据对比,我们可以直观的看到。在相同精灵数量的情况下,基于LayaAir 2.0.2的测试用例占用内存不仅比基于LayaAir 2.0.1版本的减少了不少,而且在精灵数量不断增加的情况下,内存占用增长曲线也是非常平稳缓慢。
04
VIP功能的增加与优化
在VIP功能方面,本次LayaAir 2.0.2 beta版本开始新增二进制文件合并。这样,对于一些琐碎的小文件,不止是json格式的文件,二进制文件也可以合并起来了。文件合并功能可大幅减少文件下载交互数量,提升游戏加载效率。
由于增加了二进制文件合并,为了统一文件合并的操作流程与规范,文本(json)文件合并的用法也有所调整。另外,关于图集纹理压缩的IDE操作流程也做了优化,不再需要开发者手动编写图集的文本信息,开发者直接将图集atlas或者png图片拖入工具栏即可自动识别,功能的易用性进一步得到了加强。以上更细节的功能使用介绍,请查看VIP功能介绍与使用介绍。
文档链接:
https://ldc2.layabox.com/doc/?nav=zh-ts-0-3-3
05
IDE的其它优化
IDE与引擎的易用性是我们一直在努力提升地方。本次版本,我们将用了好几年的IDE默认UI组件资源进行了全面替换,新版UI组件资源图片不仅美术风格更加好看了,还面向移动设备进行了美术适配,让开发者制作DEMO时组件资源更加易用,UI更加美观。
IDE另一个改进,就是支持wav音频格式组件识别,在LayaAir 2.0.2之前,IDE只能将mp3格式的文件识别为音频组件,用于可视化的场景触发使用,现在多了wav音效的支持,让LayaAir IDE的可视化编辑与创作流程更加的舒畅。
06
新增3D性能分析功能
3D游戏制作 ,批次优化是性能优化的重要方式之一,但是开启批次优化后,到底节省了多少RenderBatches,开发者很难直观的感受到。所以,从LayaAir 2.0.2beta版开始,引擎在性能统计信息面板中新增了savedRenderBatches参数,这个参数值是进行优化操作后能节省的批次数量,通过查看该参数的值,就可以大概看出,我们已优化了多少,还有多少可优化空间。而如何开启优化,从而影响savedRenderBatches参数值,大概有以下几个方面:
1、静态合并:
在Layabox的Unity插件中勾选静态标签,引擎在加载场景时会对静态物体进行合并处理,可减少RenderBatches,并大幅提升场景性能,合并原则为同材质的模型,所以开发者在编辑场景模型时尽量使用相同材质。
2、动态合并:
该优化无需开发者进行任何设置,而且物体可动态移动不受限制,但合并原则相对严格,需要同Mesh和同材质双条件满足,但在三维场景中这种模型依然是大量存在的,也可大幅减少RenderBatches。
3、动态顶点合并:
该优化同样无需开发者进行任何设置,而且物体可动态移动不受限制,合并原则为同材质且模型顶点小于10个,相对来说较严格,但目前在一些假阴影和特效的模型上依然有发挥空间,可少量减少RenderBatches。
以上几点优化的优先级为 静态合并>动态合并>动态顶点合并,综合来讲开发者的优化原则很简单,只要尽量保证场景模型的材质和Mesh相同,场景不动的物体勾选静态,即可达到节省渲染批次的目的。
07
大幅提升3D性能
极致性能是LayaAir引擎的重要标签之一, 所以在引擎性能的极致优化追求也是我们引擎发展的重点。而对于三维场景中通常存在的大量同材质和同Mesh模型,例如场景中的森林、路灯等,差异只有位置和大小,从本次引擎版本开始,针对以上特点的模型进行了深度优化,使得大量同材质和同Mesh的模型合并为一个批次,这样就可以大幅提升场景的渲染性能。当然,开发者要注意的是,尽量保障重复的模型去使用相同的Mesh和Material。并且该优化不影响物体的移动变换,这样的情况,引擎就可以动态合并优化,从而大幅提升性能。
我们在Surface Pro6这个测试机型,做了一些对比测试。 CPU是Intel i5 8250U,GPU是Intel UHD Graphics 620,测试用例的模型采用12个三角面。希望数据对比图能给开发者一些直观的效果感受。
从上图测试用例的效果可看出, LayaAir 2.0.2beta版本在2万上精灵时候,可以达到满帧,而2.0.1 beta版本仅有20多帧,在不断增加精灵的同条件下,2.0.2beta始终保持着优势。
Animator动画是LayaAir3D中的动画组件,骨骼动画是其最常用的功能,因此优化骨骼动画的性能和内存也一直作为LayaAir3D的重点优化任务,自从LayaAir2.0发布以来Animator动画组件性能已经优化多次,本次LayaAir2.0.2版本同样优化了骨骼动画性能,再次提升了15%。除此之外,Layabox的Unity导出插件对骨骼动画资源格式也进行了优化,使用新版Unity插件导出资源也有可能减少模型的渲染批次提升性能。
最后必须要提下对Layabox的Unity插件优化,本次版本的插件,大幅优化提升了蒙皮Mesh导出性能,让导出时间获得了大幅度的缩短,效率可提升100倍。 原来要300秒干的事,3秒即可完成。
08
本次新增的3D引擎功能
在本次LayaAir2.0.2 beta版本的新增功能里,3D引擎ShaderPass增加了StateMap功能,这样可以使渲染状态设置更加灵活,可逐ShaderPass设置,也可以逐材质设置。
另外,还增加了一些3D引擎的常用功能。例如:
Texture2D增加setSubPixels接口
纹理增加mipmapCount属性
增加Laya.Loader.create批量加载回调事件参数
增加Mesh克隆接口
增加BLEND_ENABLE_SEPERATE混合模式
写在最后
引擎在这一个月干了很多的事,写到这里,我已经码了好久的字,版本发布相关的都写完了。能看到这里的开发者也都是Layabox的真爱。感谢你们的支持,也欢迎大家来转发分享本文,将本次众多的更新告知更多开发者。未来在引擎方面,我们还会有更大的动作。除了引擎本身,对于官网的学习文档,也曾是大家一直在吐槽地方,但是可以明显看到我们在年后有不断的改进,对于文档,示例,视频,我们会持续投入,继续完善,为能降低大家的学习门槛而努力。
近期推荐阅读:
MOBA、SLG、ARPG类型3D HTML5游戏案例精品推荐
LayaAir 2.0 正式版发布了,重要特性全面介绍
开源,不是一种道德绑架
微信3D小游戏已达数百款,这里肯定有你没玩过的小游戏!
百度即将推出智能小游戏,Layabox率先完成引擎适配支持!
边锋、君海、智明星通、途游、开心网等16家游戏企业急招LayaAir引擎游戏前端程序猿与高级攻城狮!
Layabox为开发者免费获得游戏流量,推出小游戏流量共享平台!
Layabox推出“贡献者支持计划”,扶持开发者生态的贡献者!
超级好玩的空中跑酷3D游戏《极速奔跑少年》点击进入试玩
全民热玩的IO游戏《围地大作战》点击进入试玩