背景
我是一名 Unity3D 的前端开发。公司的项目大部分是用 C# + xLua 的框架,MMORPG 类型的游戏。不可否认的 Lua 的技术还是非常成熟的。
疑惑
在工作中项目中,Lua 能用到的什么优化方法呢?我几乎想不到,完全没有思路。也不知道从何下手。平时公司里也没有什么大佬会告诉我。所以想请教下社区的大佬们,请问您知道的 lua 优化有哪些呢?谢谢您
目的
我觉得像我这样的小白应该不少,既然有相同的疑问,我也想通过这个帖子,可能相互学习一下。
谢谢您!
1
silencemodimo 2023-07-22 21:16:17 +08:00
|
2
Katrol 2023-07-22 21:41:02 +08:00
其实就是知乎上、博客上常见的那些。我觉得应该是先把相关数据结构的底层实现看下就大概明白了,游戏中要注意的其实是 C# lua 交互调用的性能
|
3
asuraa 2023-07-22 22:15:11 +08:00
我们优化 直接把 lua 干掉换 quickjs 然后就可以愉快的写 js 了
|
4
flyqie 2023-07-22 23:00:01 +08:00
|
5
asuraa 2023-07-22 23:34:28 +08:00
@flyqie 差别就是 lua c++做集成非常容易没有侵入性 也就用 luabridge 之类的包一层就行了 原来的 clas 基本不用改
但是 quickjs 就比较蛋疼 需要管理整个对象的生命周期 做集成的时候比较麻烦 需要侵入到 class 代码里面 比如继承一个父类之类的 然后就是写起来的区别了 lua 写的非常难受 连特么一个 continue 都没有需要包一层 循环 js 就各种输入 map 什么的 舒服的很 写起来非常快 |
10
wxf666 2023-07-23 10:49:43 +08:00
|
11
pursuer 2023-07-23 11:29:31 +08:00
@wxf666 之前看到过的测试,lua 比 quickjs 性能快 3 倍左右,来源: https://zhuanlan.zhihu.com/p/391905689
lua 也有一些强类型变体比如 teal ,以及可以 AOT 编译以提高性能的变体 nelua ,还有神奇的 TypeScriptToLua 。lua 主要问题还是生态相较于 js 和 py 比较薄弱。 |
12
flyqie 2023-07-23 16:30:24 +08:00 via Android
|
13
pursuer 2023-07-23 19:05:46 +08:00
@flyqie
是说语法简陋的话,lua 确实语法糖不多,但 lua 虚拟机提供的机制却意外的全面,异常处理,_ENV 和 coroutine 都有 生态的话,还是和 lua 的定位有关,所以本身标准库很薄弱。有个叫 luvit 的项目,给 lua 提供了类似 node 的环境。但是 js 背靠浏览器,python 则是大部分 linux 预装且标准库丰富,lua 就很难有进一步的优势。 |
14
nevermoreluo 2023-07-24 10:33:29 +08:00
配置载入在 lua 层的话可以优化,大配置载入时,gc 会成问题,全量载入的场景还好,
但是有些要动态启动的场景,物件逻辑依赖配置载入就会有瓶颈 |
15
jetkeey OP @silencemodimo 这个确实对我有一定指引作用。谢谢您
|