启嘟渡科技商贸有限公司
SEARCH

与我们合作

我们专注提供互联网一站式服务,助力企业品牌宣传多平台多途径导流量。
主营业务:网站建设、移动端微信小程序开发、营销推广、基础网络、品牌形象策划等

您也可通过下列途径与我们取得联系:

微 信: wxyunyingzhe

手 机: 15624122141

邮 箱:

为什么lua在游戏开发中应用普遍

更新时间:2025-01-20 01:11:08

lua在游戏开发中的广泛应用,源于其独特的特性与优势。我有幸见证了这一过程,自2011年进入游戏行业以来,我便开始使用lua。那时,手游尚未兴起,unity还在页游领域挣扎。我在一家小公司担任后台主程,使用lua编写后台业务逻辑。随后,为了提高开发效率,我在unity中嵌入lua,使后台人员也能参与客户端逻辑的编写,实现了部分代码共享。

2015年,我加入腾讯,虽然主要工作是后台程序,但凭借之前的经验,我为客户端组件团队开发了一个基于unity的lua组件,命名为xLua。起初,这个组件是为了满足特定需求而设计的,但随着项目的发展,xLua逐渐成为了我主要负责的项目。2017年,xLua对外开源,受到广泛认可,至今已有8000+ star,被《原神》等大型项目采用。

在游戏领域,lua的兴起与魔兽世界的使用、云风的推荐等密切相关,但其在2015年左右崛起的关键优势在于代码段占用。那时,由于苹果要求应用提交64位版本,unity刚为此推出了il2cpp。然而,il2cpp早期占用空间较大,而当时iOS应用允许的代码段限制较小(iOS7以前版本为40M,iOS7为60M),这使得许多项目对第三方组件的代码段占用提出了严苛的要求。lua凭借其小体积优势,在这一时期赢得了开发者们的青睐。

然而,随着技术的发展和应用需求的演变,lua的优势也在发生变化。ios9以上代码段限制放宽至900M,体积小不再是关键因素。同时,脚本逻辑的增多、小游戏的兴起等趋势对lua提出了新的挑战。小游戏的兴起使得越来越多的团队开始重视这一渠道,而lua在维护、模块间配合、人员流动等方面与动态类型语言的结合可能带来一定的复杂性。

为应对这些变化,我曾考虑为lua寻找更合规的脚本方案,以适应苹果的jscore和google的v8,但项目进展受阻。后来,为了探索unreal的脚本方案,我选择了基于typescript的语言,推出了puerts。puerts在小游戏/h5领域具有独特优势,能够实现unity下js的直接运行,而lua则通过将虚拟机编译为wasm,然后在wasm虚拟机上执行。js的运行方式在性能和稳定性方面通常优于这种虚拟机套虚拟机的模式。

针对小游戏/H5项目,puerts能够实现跨项目共享组件、经验和人员,为公司节省技术栈成本。此外,puerts支持nodejs脚本后端,这为跨平台桌面开发框架electron的构建提供了可能,同时也为游戏引擎、nodejs和全平台应用的结合带来了新机遇。

在性能方面,我持续对unity版本的puerts进行优化,寻找质变方案。几周前,我发现了一项优化,使android下的性能得到了数量级的提升,从落后于xLua转变为7倍反超。这一优化将在unity puerts的v2版本中发布。此外,puerts v2已经发布预览版,项目开始实装。关于性能,v2预览版在android下的表现确实优于最新xlua发布版本,但在实际应用中,性能差异还需根据具体情况进行评估。

多重随机标签

猜你喜欢文章

QQ客服 电话咨询