查看原文
其他

9月15日,LayaAir 2.0 开放测试了!台风预警下深圳沙龙依旧火爆!

关註请点我☞ Layabox 2023-08-11

9月15日,在开发者的期盼之下,LayaAir 2.0引擎与IDE终于开放测试了,Layabox官网首页提供了LayaAir 2.0文档与测试版本的下载链接(目前还不能提供MAC版本下载  ,具体开放情况请关注Layabox公众号消息)


与此同时,Layabox开发者技术沙龙也在深圳如期举行,尽管深圳当日有17级台风的预警,沙龙中依然爆满,在台风将来临的压力下  来到现场的,足以称之为真爱粉,在此向所有支持和关注Layabox与LayaAir 2.0的开发者表示感谢。感谢你们一直以来的信任与追随,我们将努力将引擎做的更好。(沙龙中分享的技术内容,近几天会陆续整理出来,请开发者关注Layabox公众号最新内容)



在沙龙中,Layabox合伙人李明首先为现场开发者介绍了LayaAir 2.0的引擎的发展方向,除了继续追求极致的引擎性能和努力保持3D的领先优势外,还会在引擎功能丰富性,易用性,扩展性等方面进一步发力。



然后,李明开始重点介绍了LayaAir 2.0在2D与3D方面的众多新特性、以及概要介绍Layabox的新产品LayaCloud,以及LayaNative 2.0产品等众多优化与改进点。


其中重点内容如下:


2D方面

1、组件化支持

在LayaAir 1.0内提供了简单的脚本扩展支持,随着用户越来越广,需求越来越复杂,扩展成为常见需求。为了改进这一需求的体验,在LayaAir 2.0内增加了组件化脚本的支持。支持自定义脚本到编辑器,方便扩展已有组件功能。

LayaAir引擎IDE内会提供默认的组件,如果满足不了需求,开发者也可以通过脚本扩展的方式来改进组件功能,从而实现个性化需求。组件化开发在功能抽象,复用及开发效率提升上也有帮助。同时我们保留了页面基类继承的处理方式,在处理UI逻辑时非常方便。


比如想在编辑器内展示脚本定义的属性,可以通过特殊注释来实现

脚本类如下图所示:

上图脚本类在IDE内对应的显示效果如下图所示:

这样就可用在脚本里面设计显示参数,在IDE内输入参数,然后在脚本里面使用,这种标记同时支持AS,JS,TS三种语言,甚至还可用只写标记,脚本本身没有具体实现(在继承属性时会用得到)

Tips:脚本和页面继承相比,如果是页面级的逻辑,需要频繁访问页面内多个元素,使用继承式写法,如果是独立小模块,功能单一复用,建议用脚本方式实现。

    
2、内置Box2D物理系统与可视化物理编辑

LayaAir1.0采用了轻量级的Matter物理引擎,虽然体积较小,但随着小游戏的开放,越来越多的游戏需要物理引擎的支持,产生出大量的新需求,例如Matter精度不是很高、没有防穿透支持等等,对于物理引擎需求较高的一些小游戏上,Matter物理引擎的压力越来越大。

因此LayaAir引擎组基于市场需求出发重新评估了主流的物理引擎。最终选定并内置了相对最为完善的Box2D物理引擎,封装了物理组件,提供了IDE物理属性的可视化编辑,还让制作物理游戏更加方便快捷。

当然,采用Box2D物理引擎后,引擎体积也会增加一些。如果对于物理引擎功能需求较为简单,并且希望能减小引擎体积的情况下,仍然可以使用Matter物理引擎。

3、增加基于场景管理


LayaAir 2.0提供了基于场景的管理方式,开发者只需要关注场景的创意设计,剩下的场景加载,切换,资源加载,图集使用,资源销毁等等,引擎都提供了完整的方案,原来需要主程做的事情,现在引擎和IDE都提供了,简化了开发成本,让大家把更多时间花在游戏设计上。

4、可定制化编译调试与个性化发布
    
LayaAir 2.0 采用gulp自动化脚本来构建编译和测试流程,整个编译和调试过程,可通过脚本任务的方式串联,如果想在编译和调试中间插入自定义的新流程,比如copy或者压缩等,只需用gulp文件内增加一个新任务即可,这样就能做到每个项目自定义化,智能化。

同时引擎默认支持了require,这样大量的第三方nodejs库就可以在引擎内直接使用了。

同时改进了微信小游戏调试方式,可以边开发边调试,无需再发布后调试。

后续的版本,发布面板也会采用脚本化定制方式重构,这样发布个性化需求就不愁了。

5、3D编辑器

从LayaAir 2.0 开始,在LayaAir IDE内增加了对3D项目的可视化编辑支持,可以在IDE内编辑3D场景、材质、物理等常用功能。并会保持功能上的不断完善。

注:测试阶段,由于还在优化改进中,所以,测试版本暂时不开放使用


6、支持创建LayaCloud项目

LayaCloud可以让前端开发者需学习服务器开发语言,无需了解服务器开发的相关知识,只需要和游戏前端的开发一样,在LayaAirIDE中去创建LayaCloud项目,使用LayaCloud的API,既可以用单机开发的模式去开发一款网络游戏。



LayaCloud的主要系统功能


  • 开发者可以通过配置文件对匹配方式进行定制,从而实现同一款游戏内不同游戏模式的匹配策略多样性。

  • LayaCloud 提供了完善的房间生命周期管理,开发者可以专注于房间内游戏逻辑的开发,而不必关心房间的创建及回收。

  • LayaCloud 提供了业内广泛共识的帧同步服务机制,目前业内对战类游戏(如 王者荣耀)大多采用帧同步协议进行通讯。

  • 对于游戏内通讯交互并不频繁的游戏(如 棋牌类游戏),LayaCloud 还提供了基于广播机制的通讯方式,开发者可利用此接口在参与游戏的玩家间进行消息通讯。

  • LayaCloud 提供了基于JSON格式的玩家数据存取接口,开发者只需要使用和修改数据,无需关心数据什么时候被保存。

更多信息与实例参考请查看LayaCloud官方文档:
https://wiki.cloud.layabox.com/


7、全新的IDE

LayaAir 2.0重新设计了IDE皮肤及布局,使其更加简洁漂亮,同时也进行了大量的功能改进,进一步提高了易用性,有益于提升开发效率,开发者们可以在实际使用中进行体会。



3D方面

1、性能

众所周知,LayaAir始终以性能著称,本次LayaAir 2.0的3D除了大小功能增加150多项外,还对底层进行了大量重构升级,对静态模型和动态模型均做了大量优化,尤其大幅提升了静态场景性能。同时采用更先进的机制来减少JS和WebGL本地接口的调用次数等等优化措施,对性能做出了大幅提升。比如,3D静态模型批处理性能提升61%,3D动态模型批处理性能提升12%, 3D动画内存减少80%。


2、材质系统
LayaAir2.0对材质进行了诸多改进和提升,并在引擎中提供更多的官方材质以及开放了更多自定义材质相关的功能,新增的主要官方材质包括:PBRStandardMaterial、PBRSpecularMaterial以及UnlitMaterial材质等。



PBR材质也就是近几年比较流行的基于物理渲染材质,采用更科学的shader算法表现更为真实的材质感。


UnlitMaterial是简化版的无光照材质,一般用于技能特效等,通过加色法或者透明混合结合刚体动画可以实现诸多特殊效果。


自定义Shader方面LayaAir 2.0主要增加了多pass功能,比如实现卡通渲染需要的描边效果等,多pass会在shader渲染时渲染多次。


材质开放了renderQueue接口,renderqueue是渲染精灵时的排序依据,开发者可通过指定renderQueue值来修改材质所属精灵的渲染顺序。


3、纹理系统 


LayaAir2.0对纹理功能进行了提升和改进,增加了纹理的灵活性和可控性。

比如增加了多种纹理参数配置(mipmap、format、wrapModeU、wrapModeV、filterMode、anisoLevel)

Mipmap为是否生成多级纹理,

format为纹理格式(例如R8G8B8和R8G8B8A8等),

wrapModeU和wrapModeV为纹理寻址模式,

filterMode为纹理过滤器模式,

anisoLevel为各向异性过滤。


还增加了纹理上传像素的接口,开发者可自行上传自定义像素颜色来生成纹理。支持了GPU纹理压缩(Android、IOS),具体为ETC、PVR,可大幅减少显存占用,增加游戏资源总量,提升游戏品质。


4、动画系统  


LayaAir2.0 具备更完善的Animator动画系统,可支持更多的动画属性。比如,新增动画多层混合播放、新增Animator动画融合功能crossFade、动画更新机制调整为实时插值、新增多种材质属性动画。


支持动画多层混合播放,可实现动画上下半身分离等功能,尤其是吃鸡类游戏中较为常见,每一层均可独立控制某些骨骼。



在支持动画融合之前,两个非连贯动作的切换会有闪切瞬移的感觉,使用动画融合后,动作的过渡切换会变的平滑自然。动画融合功能不仅支持单层融合,还支持分层动画融合。


Animator动画调整为埃尔米特实时插值,可大幅减少内存并且在相同帧率下提升动画流畅度表现。

5、物理系统 

LayaAir1.0物理功能非常匮乏,2.0重点对物理系统进行了重构设计。新增多种物理组件,包括RigidBody、PhysicsCollider、CharacterController,开发者可根据项目需求选择不同的物理组件。

  • 新增刚体:
    RigidBody 

  • 新增碰撞器:
    PhysicsCollider 

  • 新增角色控制器:
    CharacterController 

  • 新增碰撞器形状:
    BoxColliderShape、CapsuleColliderShape、CompoundColliderShape、ConeColliderShape、CylinderColliderShape、SphereColliderShape、MeshColliderShape 

  • 新增辅助检测功能:
    shapeCast、shapeCastAll等


6、精灵 

LayaAir 2.0中新增了拖尾精灵,用于实现拖尾的拉伸特效。如下图游戏中所示。

三维特效中比较常用的几个精灵分别为粒子、Mesh加刚体动画,还有就是本次LayaAir 2.0中新增的拖尾。同时LayaAir 2.0又新增了像素线精灵用于绘制像素线框,这个一般在游戏或一些开发过程中的调试模式都比较有用。


7、脚本系统  

LayaAir2.0新增了onCollisionEnter、onCollisionStay、onCollisionExit、onMouseDown、onMouseDrag、onMouseClick、onMouseUp、onMouseEnter、onMouseOver、onMouseOut碰撞回调函数。

LayaAir2.0对引擎易用性的提升十分注重,脚本中增加了多种回调函数,包括碰撞反馈的回调、三维模型的鼠标拾取更加简单方便。比如,刚提到的各种onCollisonXX为物理碰撞时触发,包括进入碰撞,保持碰撞和退出碰撞。

8、其它  

对于资源释放,在LayaAir1.0中一直是开发者比较头疼的事情。在LayaAir2.0中采用destroyUnusedResources()来模拟GC释放当前场景树没有被使用的资源。

LayaAir2.0对光照贴图进行了优化显示,使得光照贴图可以显示大于1.0的HDR颜色,显示效果更加逼真。


    LayaAir 2.0主要的新特性与优化明细:

  • 重构WebGL底层实现

  • 重构HTMLDivElement实现,由原先的节点模式改为Graphic模式,减少节点创建,提高渲染性能

  • 颜色滤镜增加亮度,对比度,饱和度,色调的设置,使用更加方便

  • Graphics增加命令行cmd的返回,方便修改调整cmd命令

  • Graphics的drawTexture函数增加color和blendMode的支持

  • Graphics新增drawImage,实现简化版本的drawTexture

  • Graphics新增drawTriangles,能根据顶点信息绘制三角形

  • Loader增加对WorkderLoader的支持

  • 改进了Sprite的Texture实现,提高Texture渲染性能,建议多用

  • 优化了Sprite获取bounds的性能

  • 所有颜色值增加了Alpha通道的支持

  • 节点增加offAllCaller接口,方便注销某个对象身上的所有事件,提高方便性

  • 改进大部分UI组件,支持资源异步加载

  • 引擎去掉了大图合集的支持,减少使用者的理解成本和引擎的复杂度

  • 去掉所有IF-Flash相关代码,减少不必要的分支,减少代码大小

  • 解决其他已知bug

LayaAirIDE主要的新特性与优化明细:

  • 新增物理系统支持,可视化编辑物理属性,更加方便制作物理小游戏

  • 新增组件化扩展支持,所有节点均可通过组件方式扩展,快速实现个性化需求

  • 新增资源缩略图预览面板,方便定位管理资源

  • 调整IDE可视化界面结构,融合资源面板和页面面板,增加脚本及基本组件的展示,提高实用性

  • 新增Prefab制作及使用支持,方便组件复用

  • 新增插件项目创建,完善插件扩展机制,方便扩展IDE

  • 改进调试功能,一键发布编译调试,新增运行功能,运行能跳过链接VScode调试,直接使用chrome的调试

  • 增加小图及图集自动映射,加载小图的时候,会自动判定是否有图集存在,如果有则优先使用图集

  • 增强场景切换调试,方便调试某个特定场景(比如当前打开的场景)

  • 层级支持双击节点修改名称,方便定位

  • 增强可视化编辑工具,比如旋转工具,场景缩放工具,对齐工具

  • 优化IDE启动速度,启动更加迅速

  • 支持最新的VsCode,功能更加强大,对ts和js支持更加友好

  • 使用最新的AS3代码提示插件,改进AS3语言使用体验

  • 改进了ViewStack使用体验

  • 增加可定制化任务流程,方便自定义流程

  • 增加属性默认值显示,让属性查看更加直观

  • 改进小工具位置,简化界面元素,使其更简洁

  • 时间轴增加函数调用支持

  • 新增项目列表页面,方便管理历史项目

  • 增加模板保存按钮,方便保存为模板

  • 增加页面设置按钮

  • 新增游戏参数设置,起始场景设置

  • 增加调试及帧率开关

  • 增加脚本选择控制,方便选择使用第三方脚本



LayaNative 2.0 方面

LayaNative2.0对开发者而言,最大的改进就是全面支持LayaAir 3D,为开发者发布3D的App版本提供便利。另外,LayaNative2.0推翻了LayaBox延续5代的Native解决方案,目的是更快、更开放、更简单以及更好的支持3D为设计目标。LayaNative2.0采用WebGL+的专利技术设计理念,更先进、更开放,如同WebGL协议,只定函数不定规则,是一种小巧而且扩展性强的解决方案。

1、LayaNative架构

开发者用LayaAir引擎开发的项目,既可以发布到浏览器中,也可以发布成原生的App,下图为LayaNative的结构图以及开发者开发流程图。 

2、性能

LayaNative2.0经过代码重构,性能对比1.0版本有很大的提高。

 1、对比LayaNative1.0


2D3D
Android提高10%提高90%
IOS提高13%提高270%

2、对比国内其他通用runtime引擎


2D3D
Android提高85%提高90%
IOS提高240%提高270%

3、扩展功能

1、LayaNative 2.0支持单线程和双线程两种模式,开发者根据自己项目的实际测试结果,决定选择使用哪种模式。

  • 单线程模式:JS和Render运行在一个线程中。

    • 优点:操作无延迟(例如:touch、按键)。

    • 缺点:性能不如双线程模式。

  • 双线程模式:JS和Render运行在各自的线程中。

    • 优点:性能比单线程版本高。

    • 缺点:操作会有半帧,最大到一帧的延迟(例如:touch、按键)。

2、支持显卡纹理压缩,不仅提高渲染效率还能减少显存的占用。

3、优化的二次开发,更容易理解,方便开发者使用。

4、易用性

1. 提供更方便的调试功能

Android平台可以真机调试JavaScript

在LayaNative1.0版本中,要调试项目中的JavaScript代码只能调用console.log或者alert函数。在layaNative2.0版本中正式支持使用Chrome浏览器调试JavaScript代码。可以在Chrome的调试器里对代码进行断点的添加,代码追踪等功能。


测试App支持扫码启动项目

为了让开发者能够更快的调试开发,新版本的测试App添加了扫码启动App的功能,免去了调试时需要手工输入URL的麻烦。

2. 可以定制内容更加丰富的启动界面

LayaNative 2.0的loadingview是采用平台原生语言开发的,Android使用Java语言,IOS使用Objective-C语言。

相较于1.0使用JavaScript语言开发的LoadingView,2.0提供了更加丰富的定制功能。不仅能够更换图片,开发者还可以使用平台语言实现自己想要的功能。


END 





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存