安卓、iOS、小游戏三端同发?介绍给你一个新方式 ...
什么是三端同发?手游时代的很长一段时间里,游戏业界有一个词语叫双端同发:指代安卓和iOS同时上线。在成熟的游戏引擎比如Unity、cocos等的加持下,做这样的事情并不难。
然而随着手机性能的发展。像微信小游戏、抖音小游戏这样的web平台,就像pc时代末期的浏览器一样如期而至,屡屡吸引大家的目光。这时候,“三端同发”的需求就出现了,一次开发,发布安卓、iOS、小游戏。理论上是这个时代手游开发最好的选择。
但遗憾的是,双端同发时代大家的首选引擎,Unity,并不太能做这件事,截至2022年,Unity的最新版本都没有自带往各家小游戏的适配。这里的原因有很多,笔者就不总结了。
平台方提供的WASM小游戏方案
一方面是急切的需求,一方面是工具的缺乏,最后形成的局面是——平台方亲自下场做。微信抖音各自都推出了unity适配工具,将Unity build成WebGL的产物移植到小游戏上。这大概已经是比较不错的方案了。
微信官方的Unity WASM方案
抖音官方的Unity WASM方案
然而这两个wasm方案虽然能解决Unity的c#代码。但手游时代大家早已习惯用Lua作为脚本语言,以获得热更新的能力,这部分代码在转小游戏时应该怎么办呢?
手游时代的Lua先驱们
以xLua为例,xLua能把Lua虚拟机编译成wasm,然后Lua代码最终会在这个wasm虚拟机中运行的Lua虚拟机解释执行——可想而知这个性能有多么容易成为瓶颈
并且,利用WASM解释执行脚本的特性还有可能随时被平台所封禁,比如抖音小游戏就明文规定不允许使用xLua动态变更代码。
三端同发背景下,可能是最好的脚本解决方案
puerts是一个在Unity/UE下写Typescript的解决方案,本身就希望能让开发者可以在Unity里写Typescript。既然都用Typescript了,是不是在小游戏上可以有不一样的方案呢?
答案是肯定的,去年,我让puerts在WebGL上给出了特别的答卷——puerts本身变为wasm和宿主js环境通信的桥梁,将游戏脚本运行在宿主js环境上
脚本运行在宿主环境之后,便能享受JIT加速,调试等便利,大大提升脚本执行的效率。当然据实际使用反馈,最爽的一点还是“更改JS代码不需要重新构建Unity”
去年测试的xLua和PuerTS在WebGL下的执行性能对比
在这个模式下,Puer的Loader不再工作(因为不是解释执行了),而是使用小游戏平台的require。因此使用普洱WebGL,还是需要付出一些迁移工作。但这样一来puer就不会违反小游戏平台禁止热更的策略了。
普洱WebGL的现状
经过一年的沉淀发展,目前正在通过普洱接入微信小游戏的游戏有五六家,已上线的也有两三家了。
放大可扫码
除了使用者之外,普洱社区也有不少积极的贡献者,为这个事情添砖加瓦。puer-webgl的首个代表游戏的作者ctxdegithub,就为puer-webgl贡献了一段关键代码。最近也有社区大牛整理了一套脚手架puerts-cli,用以解决使用门槛的问题。
如果您对普洱的webgl方案感兴趣,欢迎点入github首页了解:https://github.com/zombieyang/puerts_unity_webgl_demo
页:
[1]