找回密码
 立即注册
查看: 260|回复: 0

安卓、iOS、小游戏三端同发?介绍给你一个新方式 ...

[复制链接]
发表于 2023-2-18 21:55 | 显示全部楼层 |阅读模式
什么是三端同发?

        手游时代的很长一段时间里,游戏业界有一个词语叫双端同发:指代安卓和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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-24 21:51 , Processed in 0.119916 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表