接口和协议组成 lua 与游戏测试 (一)

陈子昂 · 2016年01月09日 · 最后由 王攀 回复于 2020年06月16日 · 3178 次阅读
本帖已被设为精华帖!

本文是独家授权给 testerhome 的,如果转摘希望可以带上 testerhome 链接或者联系本网站管理员

lua 脚本与游戏测试(一)

##lua 游戏产业历史(也可以叫解释型语言)
lua 在国外被广泛成熟使用后,起源 1993 年巴西歪果仁喊出来哒,至今是开源免费。暴雪神作 WOW 在国内疯狂到持续到现在,其中大量运用了 lua(后面介绍)。lua 脚本语言慢慢让普通用户也熟悉了,后面国人 mmorpg 大作例如《剑侠情缘 3ol》也涵盖 lua 这门语言的身影,至今作品涵盖用 lua 已经是不计其数。

游戏项目开发从网易开始,对 lua 这个轻量的脚本语言使用越来越广,本人也是受云风影响慢慢从看他的博客,到自己学习写和了解结构,不过主要还是运用于读脚本和测试。

ps: 还有很多脚本语言可以用于游戏开发,优点是可以集中底层,并且编译和集成后十分小巧,脚本语言一直是备选方案。但 lua 有 1 个优点,lua 一直不是只基于 API 级别的,还在于项目中扩展功能。

谈谈 WOW 里 lua 到底做了哪些东西

玩家看的到得

  1. GUI 界面开发和编译 —— 你懂的,玩 WOW 的大部分人都用过插件吧
  2. 定义,存储和管理基础游戏数据(你也懂的,也导致了很多 bug,这个后话)
  3. 游戏的人工智能( boss 技能施展条件= =,宏)
  4. 管理实时的游戏事件(点击 c,打开人物界面,任务等,不过单机游戏= =特别多啊,这个也是废话)
  5. 创建游戏存储和载入系统(这个是废话,一定有)

看不到的

  1. 性能环节,支持程序底层语言来实现。
  2. 很小的数据和命令封成 chunk,可以随时调用。
  3. lua 变量默认全局(局部问题,可以后期用静态走查工具检查 很方便的)
  4. 兼容 C 语言系统,系统要求很低(32mb RAM )
  5. lua 可以处理图像问题

来谈谈客户端抛错

测试人员先需要检查这个,客户端抛错,级别定义是 B。重要问题,在每个阶段都属于阻断性的问题。
在游戏测试时,还有些公司打成编译好的包给测试在手机上跑,同时不用 assert 这个函数就是坑。

游戏测试一定要有 pc bulid 版本,这里 assert 函数处理函数一样的编译 lua 的 chunk,立即执行。

  1. assert (v [, message])

    函数 1 相当于 C 的断言,不满足 v 的条件 message 就会打印出来,打断程序在内网如果点击继续可以恢复的,在外网就不会卡住。assert (A,[, message]) 如果 A 正常,程序继续运行,A 异常就打印 message。这个需要大家在开发的代码里自己看吧。

    Cocos2d: [LUA ERROR] ASSERT FAILED ON LUA EXECUTE:不过后台里如果出现这个,其实也影响不大,要看具体情况

  2. error (message [, level])

    也是 1 个处理错误的。

    • Level=1[默认]:为调用 error 位置 (文件 + 行号)
    • Level=2:指出哪个调用 error 的函数的函数
    • Level=0:不添加错误位置信息

    一般情况下是 2 个结合在一起,这里可惜没有内网开发环境抛错的图,不过这个大家应该看的懂吧。
    这里依次对应的行就是代表什么意思,测试读这个抛错信息知道是哪个代码块出现问题是最基础的。

1 月 9 日 23:02 分 @jiazurongyu 于家中

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 7 条回复 时间 点赞

修改了下排版,php 里面也会大量使用 assert。lua 的另一个好处是可以实时更新游戏吧。不用重新发包。

#1 楼 @lihuazhang 点评的 a b test 就是这样玩的,实时更新 zip 包

#1 楼 @lihuazhang 对的。chunk 现改现看效果,不用重编译包。
#2 楼 @monkey 大众点评的 a/b 测试,= =什么语言写的?

#4 楼 @monkey 看完了。是可以的,脚本语言层面支持动态更新,游戏也是这样的,底层或者 sdk 壳里的,就不能了。

#4 楼 @monkey 第二章发了

仅楼主可见
陈子昂 lua 与游戏测试 (二) 中提及了此贴 02月01日 14:33
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册