在程序员眼中,HTML5是超文本标记语言(HTML)第五次重大修改的新标准,该标准历经8年的艰苦努力,万维网联盟于2014年10月29日宣布HTML5标准规范终于最终制定完成。在此之前的几年时间里,已经有很多开发者陆续使用了HTML5的部分技术,Firefox、Google Chrome、Opera、Safari 4+、Internet Explorer 9+都已支持HTML5,而宣布后看到的才是“正式版”。
而在更多的人眼里,HTML5是指的一种基于浏览器的网页技术产品,是一种无需下载安装,点击即用(玩)的网页产品或游戏。通常HTML5被简称为H5,尽管也有很多人并不认为HTML5与H5是一回事,但事实上把HTML5简称为H5占据了媒体与HTML5从业者的主流。
2018年,微信小游戏爆发了,这不仅仅是有了千万和亿级别的月流水产品的出现,更多的表现是开发者疯狂涌入与产品的高速增长。同时还带动了靠广告收费的流量变现游戏盈利模式的发展。
也让大多数不太会在游戏的内购上赚钱的开发者,可以有一个专心做出好玩游戏,获得广大玩家认可的同时就可以进行流量变现的机会。
另外,还刺激了百度、手机QQ、小米、OPPO\ViVO等等其它主流平台加入到小游戏的阵营中来。可谓非常火热。
但是,小游戏是H5吗?非也。
虽然小游戏也有着即点即玩,与无需下载安装的特性,也兼容了兼容大部分Canvas和Webgl接口,但是,他并非是标准的HTML5。比如,微信小游戏的运行环境并不是浏览器,也不能在浏览器中运行,而是运行于微信APP中的Runtime。
不过,LayaAir引擎可以适配这些小游戏平台,目前已拥有了微信小游戏的适配库、百度小游戏的适配库,QQ轻游戏的适配库......所以,开发者使用LayaAir引擎,不仅可以开发HTML5游戏,还可以发布为APP游戏(LayaAir引擎),更可以适配各种小游戏平台。
PC上,Flash已经停止更新维护,HTML5已成为新的主流标准。
移动设备上,HTML5游戏或者说是小游戏,已经火的一塌糊涂,各平台的流量入口已纷纷打开,并作为新的战略目标。
尤其是,采用LayaAir引擎的HTML5游戏,还可以发布成为APP安卓APK包,或者是上架iOS的appStore。而且,5G时代的到来,网速的加快,会解决HTML5的加载弊端,却具有不跳出流量APP的优势。自然会受到更多流量平台的欢迎。
总之,HTML5已经火了。未来会更火。
LayaAir是LAYABOX 2016年发布的全平台3D引擎产品,拥有全工作流高效开发环境。支持2D、3D、VR与AR产品的开发,一次开发可同时发布为Web、小游戏、Native APP产品。拥有超百万开发者,服务众多知名企业,在Web与小游戏领域的3D市场中处于国产Web3D开源引擎龙头地位。广泛应用于游戏、广告营销、教育、动画、元宇宙、数字人、数字孪生、智慧城市、工业控制、仿真模拟、国防模拟、线上展示(展览展示、地产、文旅)等众多3D 数字领域。最新发布LayaAir 3.0是全球首款AIGC 3D引擎。
LayaAir基于Web 3D图形API实现2D与3D渲染,涵盖网络通信、事件与交互、多媒体播放、设备接口、组件系统等通用引擎能力。具有开放式可编程的渲染管线,全平台(Web+Native)的图形引擎架构,次世代PBR渲染流,ClusterLighting多光源技术,Forward+渲染管线,高性能并行渲染器API的接入等核心基础。
LayaAir引擎集成了项目创建、可视化编辑(UI、场景、动画、材质、粒子、物理、蓝图等)、资源管理、组件管理、插件扩展、项目发布等全工作流高效工具,支持一次开发全平台发布,包括:Web平台(浏览器、WebView)、小游戏平台(字节跳动小游戏、微信小游戏、OPPO小游戏、vivo小游戏、小米快游戏、支付宝小游戏)、Native APP平台(安卓、iOS)。
截止到2022年底,LayaAir已拥有超过百万专业开发者,服务于字节跳动、华为、OPPO、vivo、小米、阿里巴巴、腾讯、网易、三七互娱、小米、完美世界、电魂网络、光宇游戏、汤姆猫、猎豹移动、第七大道、掌趣科技、商汤科技、精锐教育、途游等众多知名企业。
除支持2D\3D\VR\AR的页游、HTML5、APP等全平台游戏开发外,还可以用于3D数字技术、元宇宙、应用软件、广告、营销、教育、医疗等众多领域。
LayaAir 3.0 IDE深度整合最新的AI技术,通过简单的文字或语音接口为用户提供智能帮助、个性化服务与各类AIGC功能,打造项目管理、策划、美术、程序各职能都需要使用的AIGC 3D工作流。相关AIGC功能包括:
优异的性能一直是LayaAir引擎的核心追求,目标是始终保持行业领先。
LayaAir2016年推出3D引擎,经过多年商业案例技术积累,是基于Web图形API最成熟的国产开源3D引擎。始终处于Web与小游戏领域开源3D引擎领导地位。
拥有完整的引擎与集成开发环境生态。支持UI编辑器、3D场景编辑器、3D材质编辑器、3D粒子编辑器、3D蓝图编辑器、动画编辑器(2D+3D)、物理编辑器(2D+3D)、插件系统、资源商城等,支持代码与美术设计分离。
一次开发可同时发布Web平台(浏览器、WebView)、小游戏平台(字节跳动小游戏、微信小游戏、OPPO小游戏、vivo小游戏、小米快游戏、支付宝小游戏)、Native APP平台(安卓、iOS)。
适用于游戏、广告营销、教育、动画、元宇宙、数字人、数字孪生、智慧城市、工业控制、仿真模拟、国防模拟、线上展示(展览展示、地产、文旅)等众多3D 数字领域。
LayaAirIDE的1.0和2.0都是由LayaAir引擎开发,基于LayaAir UI系统,实现可视化UI编辑、动画编辑、代码编辑等等功能,看起来和原生桌面软件没有差别!
上海彼邑采用LayaAir引擎开发的奢侈品牌Burberry新年广告出现在微信朋友圈,一时成为热点。整个H5融合了私人订制、产品展示、拜年广告等元素,将精美的画质、流畅的体验、出色的视频播放性能融为一体,展现出了Burberry的英式优雅。
2016年,深圳地铁为了方便市民出行,使用LayaAir引擎制作了在线地铁运营网络路线图,方便市民实时查询各站之间的来往及换乘,让市民能够清晰的规划出行线路。
LayaAir引擎主要包括 引擎库与LayaAir IDE两大核心部分
LayaCloud与LayaNative是引擎的生态组合部分
LayaAir2.0引擎不仅保持了1.0的原有功能,比如:
精灵、矢量图、文本、富文本、位图字体、动画、骨骼、音频与视频、滤镜、事件、加载、缓动、时间、网络、UI系统、物理系统、TiledMap、prtocol等API;
还新增内置了box2D物理引擎、组件化支持,以及150多款3D功能,比如:
新增的主要官方材质包括PBRStandardMaterial、PBRSpecularMaterial以及UnlitMaterial材质等。
纹理方面,增加多种纹理参数配置(mipmap、format、wrapModeU、wrapModeV、filterMode、anisoLevel), 增加纹理上传像素接口, GPU纹理压缩。
动画方面,新增Animator动画融合功能crossFade,新增动画多层混合播放,动画更新机制调整为实时插值,大幅减少内存和动画流畅度表现,新增多种材质属性动画
支持开发2D、3D产品研发,支持同时发布为Web(浏览器、webView)、Native APP(IOS、安卓)、小游戏(微信、手Q、百度、头条、抖音、小米、OPPO、vivo、华为)、等多种版本。
LayaAir2.0 IDE主要包括项目管理、代码开发编辑器、可视化编辑器、第三方工具链支持工具等。
其中主要功能包括:
Laya2.0 IDE 兼容LayaAir 1.x版本的写法,在2d项目中,可以不需要太大的改动即可把原有项目升级到2.0引擎(升级前建议备份)
Laya2.0 IDE 采用挂载组件脚本与场景管理的方式进行开发,在ide中编辑场景与页面组件,通过添加脚本的方式,使项目开发更利于程序,美术,策划的协同工作,并且对初次接触Laya的开发者,更易于上手,开发方式更友好。
LayaNative是LayaAir引擎针对移动端原生App的开发、测试、发布的一套完整的开发解决方案,但不局限于LayaAir引擎。LayaNative以LayaPlayer为核心运行时的基础上,利用反射机制、渠道对接方案提供开发者在原生App上进行二次开放和渠道对接,并提供测试器、构建工具,为开发者将html5项目打包、发布成原生App提供便利。
1、对比LayaNative1.0
2D |
3D |
|
Android |
提高10% |
提高90% |
IOS |
提高13% |
提高270% |
2、对比国内其他通用runtime引擎
2D |
3D |
|
Android |
提高85% |
提高90% |
IOS |
提高240% |
提高270% |
1、LayaNative 2.0支持单线程和双线程两种模式,开发者根据自己项目的实际测试结果,决定选择使用哪种模式。
单线程模式:JS和Render运行在一个线程中。
双线程模式:JS和Render运行在各自的线程中。
2、支持显卡纹理压缩,不仅提高渲染效率还能减少显存的占用。
3、优化的二次开发,更容易理解,方便开发者使用。
Android平台可以真机调试JavaScript
在LayaNative1.0版本中,要调试项目中的JavaScript代码只能调用console.log或者alert函数。在layaNative2.0版本中正式支持使用Chrome浏览器调试JavaScript代码。可以在Chrome的调试器里对代码进行断点的添加,代码追踪等功能。
测试App支持扫码启动项目
为了让开发者能够更快的调试开发,新版本的测试App添加了扫码启动App的功能,免去了调试时需要手工输入URL的麻烦。
关于更详细的2.0新特性介绍可以查看Layabox的微信公众号文章:https://mp.weixin.qq.com/s/lHI3tCozcFd_8fZ1PFJ8Xg
如果在开发过程中存在引擎与工具的BUG问题或者建议请访问社区进行提交:http://ask.layabox.com
对于刚接触LayaAir引擎的开发者,本文作出一些学习的指引。欢迎阅读。
由于LayaAir引擎支持ActionScript3(AS3)、TypeScript(TS)、JavaScript(JS)三种语言开发,到底用哪种语言更好呢?常常困惑着刚接触引擎的新手们。这里简单介绍一下。
需要大家注意的是JS语言虽然上手更为容易,但是作为一弱类型语言,开发与调试的难度,以及大型项目的管理与多人协作等方面,都不如TS与AS3这种可以在IDE中检测类型和语法语言。当代码越来越多的时候,JS一旦不小心写错,IDE中并不会有任何提示,只有在运行的时候才会发现问题,经常有开发者为了查一个小小的失误,花费大量的时间成本。所以虽然支持JS语言开发,但并不建议采用该语言作为中型或大型项目的开发。
TS语言是LayaAir引擎官方推荐的开发语言,也是自2.2引擎开始,LayaAir引擎源码所使用的语言。在官方的2.0引擎视频教学中,也会仅采用TS语言进行教学。
AS语言是LayaAir 2.2版本之前的引擎源码语言,AS3语言曾经是页游时代的霸主,但自从Adobe正式宣布放弃Flash之后,也代表着该语言也将步入无人维护的境地。那一些新的语言特性自然难已支持,毫无疑问,继续使用该语言将会拖引擎的后腿。所以,LayaAir引擎源码语言进行了变更,但2.X版引擎,AS语言版本仍会保持兼容及维护。但未来3.x一定会放弃该语言的支持。所以建议开发者在创建新项目的时候不要使用AS语言。
尽管很多开发者已安装了TS的全局开发环境,但本篇,仍建议开发者在VSCode的shell命令行下,再次执行npm的本地环境安装命令 npm install,以保障引擎编译的正常运行。
Gulp全局环境也需要安装,LayaAir开发者基本上都会安装,不会的可以查看Layabox官方文档,这里就不讲了。
VSCode相关文档:《VSCode高效开发工作流配置指南》
用VSCode打开clone下来的LayaAir引擎目录。安装好本地开发环境后,根目录结构如下图所示。
3.3.1 bin目录
bin目录是源码编译后的运行目录,用于引擎示例的快捷切换与调试,包括了两种编译方式的js库调试方式,tsc与rollUp。通过查看与调试这里的测试示例DEMO,验证引擎是否存在影响运行的BUG。
通用的资源目录res与3D物理js这里就不详细说明了,我们来重点了解一下tsc与rollup模式的入口文件。
tsc调试模式是LayaAir开源项目默认配置好的调试模式,在VSCode中使用F5调试的时候,会自动采用tsc模式编译,发布的js就在bin/tsc目录下。indexTSC.html是tsc模式的示例入口文件。rollUp调试相关
相对于tsc的单文件编译,rollUp编译会形成一个完整的js库。
如果要使用rollup编译,需要先安装好rollup全局环境,命令为 npm i rollup -g。
准备好rollup环境,在VSCode的shell命令行下进入src/samples目录,执行 rollup -c,即可编译生成rollup的js引擎与示例库。
要注意的是,如果首次采用rollup编译,编译四五分钟,甚至十几分钟,也是正常的,因电脑性能差异会有所不同,卡住了就多等会,不要直接终止。首次编译缓存后,以后编译就会快起来。
编译结束后,我们看到bin目录下的rollup示例相关的结构如下图所示。
bundle.js是整合了引擎与示例的js库,indexRollUp.html是rollup调试模式的示例入口文件。
无论是tsc编译模式,还是rollup编译模式,开发者任选其一即可。
编译之后的运行,推荐采用anywhere启动一个本地的web服务。命令 anywhere 端口号,端口号自己定义,不冲突就行,
如果本地装没有anywhere,可以安装下,命令: npm i anywhere -g
web服务运行起来之后。按命令行中的网址在chrome浏览器中访问,点开tsc编译模式或者rollup编译模式对应的html入口文件即可。
src目录内包括了引擎源码、引擎测试用例源码、插件源码等。
buildtools
引擎团队测试使用的内部rollup插件工具,当前,开发者无需关注。
引擎团队用于搭建引擎自动测试的工程,当前仍在开发调整中,未来也许会改名,开发者无需关注。
引擎插件源码目录,当前只有debugtool插件。
用于生成引擎API文档的项目源码。拖拽该目录下的 run.bat 到命令行直接执行即可生成API文档。doc下为生成好的API文档。
LayaAir引擎源码目录。对于引擎的BUG修改,功能增加,都在这里完成。最终通过编译工具,生成js库来使用。
存放AS编译工具,以及生成AS引擎壳文件和用于代码提示的d.ts文件目录。
命令行下进入publish.bat同级目录,运行该目录下的publish.bat 即可发布生成。
引擎测试用例的源码项目目录,bin目录下的测试DEMO来源于此处项目源码的编译。
发布js用的gulp任务文件。
Layabox引擎软件使用的声明
npm的package.json配置,这里有LayaAir源码项目的描述信息,描述了项目的git仓库地址,社区地址, shell命令入口,引擎作者,项目依赖环境的最小版本等等。
重点介绍一下package.json 当前内置的三个脚本命令,分别为publishTool与generateDoc目录内的bat执行和引擎源码的编译。
之前我们知道了进入到目录内执行XX.bat的方法,通过package.json配置的shell命令入口,还可以在根目录来执行npm run 脚本名称,来调用相关的脚本。
比如,npm run build 会执行publish.bat,npm run buildDoc会执行文档的run.bat,npm run compile会编译引擎源码。如下图所示。
在上一小节,我们已经简单的提及编译相关的命令。本小节会重点针对引擎编译成js库的方式进行介绍。
日常开发时,开发者可以使用F5进行引擎编译。因为我们将F5调试配置文件( launch.json)已默认设置为node模式,并设置了LayaAirBuild的gulp任务。
这与我们之前提到的shell命令npm run compile实际上是一样的。打开package.json配置文件,可以看到compile指向的gulp任务也是 LayaAirBuild。
为了进一步了解LayaAirBuild这个gulp任务,我们直接打开根目录的gulpfile.js。
这时,可以看到LayaAirBuild任务中又执行了tsc与LayaAirShaderCopy这两个gulp任务。
通过查看gulpfile.js中的tsc与LayaAirShaderCopy任务。我们可以看出,名称为tsc的gulp任务是通过调用本地的tsc.cmd来编译引擎及示例。名称为LayaAirShaderCopy的gulp任务是用来复制shader相关文件的。
除非是第一次编译,必须要执行LayaAirBuild这个gulp任务,也就是说tsc与LayaAirShaderCopy任务都要执行。在后续的日常编译中,shader没有改变的话,只执行示例及引擎的gulp编译任务(tsc)就行了。如果是rollup编译模式,则是在src/samples目录,执行shell命令 rollup -c,也可以编译示例及引擎。
假如,示例也没有改变,那我们也可以只编译引擎,在vscode中使用快捷键 Ctrl + Shift + B 打开任务面板,选择tsc:构建 - src/layaAir/tsconfig.json 进行编译即可。
小结:
至此我们对laya Air2.0的有了一个初步的了解,接下来将介绍关于laya的基础篇,包括它的基础概念,文本,位图,矢量图等内容。