之前的游戏辅助跑了一个月了, 因为刷了很多资源, 账号能力提升很多, 于是就有了刷下一级副本的能力. 下一级副本效率高了50%, 单位时间产出也高了50%, 但多了难度是 boss 会释放随机技能, 只要吃上一个, 游戏失败的概率就提高了大半.
选型
之前用的 opencv 的 match-image, 其实在匹配角色上效果就很差, 最后的方案是点了塔获取详情, 匹配详情上的头像, 匹配度基本都能达到99了.
而现在 boss 技能只有在棋盘上才有, 之前尝试过在短时间内连续截图3次来匹配, 但又耗时效果也很差. 于是只能用 yolo.
yolo 和 opencv 不是同一代的 ai, opencv 是基于像素匹配模板, yolo 是深度学习检测目标的.
因为我的系统已经有了明确的网格系统, boss 的技能也只会出现在网格中, 基于之间 opencv 的裁剪匹配更快更准的经验, 我选择了 yolo 的 classify 分支, 只做指出图片是属于哪个分类, 不需要对目标定位, 训练材料也更简单. 记得这些事情我老同事18年就在玩猫狗分类了, 可能就是这个吧.
操作流程
基本流程很简单, 训练导出 onnx 模型, 使用的时候加载模型来识别目标. 以上所有事情(训练代码, 测试代码, 使用代码)都是 ai 一把就写好的, 需要人工的就是收集训练数据.
先写个脚本, 在指定的时机连续截图, 因为要保证训练数据的多样性, 这个取样的游戏是要人工玩的.
玩了足够多的局数, 收集好各个不同 boss 技能后, 再用另外一个脚本把游戏截图按网格切分, 就获得了很多单个格子的图片了. 把这些图片分别放到不同类别文件夹, 目标是单个文件夹里都是同一个识别目标(比如一个文件夹里都是猫片, 另一个都是狗片). 这是最消耗时间的, 而且纯体力活. (感叹下, 还有 ai 干不了的体力活)
最后跑脚本训练出 onnx 文件就好了. 理论应该把训练素材取一部分作测试用, 我这么做了, 实际上没点屁用, 生产该挂还是挂, 还不如都拿去训练, 模型还更准一点.
业务介入
很受挫的是, 上生产就挂, 因为 boss 技能不一定每次都放, 我把错误的截图放到训练数据重新训练还好, 但玩一局找错误是非常花精力的.
在家了很多 log, 玩完一局仔细看 log 后, 发现其实每次模型都找到最像的技能都是正确的, 但匹配度很低, 都不到50. 于是我尝试降低阈值, 就取匹配度最高的, 没想到成功率基本接近100了.
虽然有 ai 写代码, 但觉得业务还是需要人介入, 在用了 yolo 后知道, 他也不是无敌的, 抛开包大小, 识别的时候也是比 opencv 慢的, 而切换成分类分支, 也算是业务上的优化. 在 opencv 匹配格子角色的时候, 我也整理重要的角色, 只匹配相关的角色, 也能提高程序效率.
ai 现在的能力和费用
上次因为对卖课广告夸大 ai 能力的方案, 过度否认了模型的进化.
ai 能让工程师干工程, 把时间花在业务上, 不用研究 api. 可以说算是让厨师不必须要会洗菜了. 另外我让 ai 干了一些以前干过的事, 确实是聪明一些的.
我最近用的都是 trae, 之前都接近免费, 我这波开发用了 5天, 强度是远低于正常上班的, 用掉了2000多积分. 目前的 plan 50 块钱一个月, 每个月只有2000积分, 已经需要升级套餐了, 如果我正常工作一个月, 起码是要每月240块的额度了. ds 之前还永久降价, 现在又说要大幅涨价了, 这个圈子的能力和价格都还没稳定下来, 但我相信是有稳定的一天的, 能力也会很强, 价格很便宜.
最后再吐槽一下卖课的, 以现在 ai 的能力和价格, 还要求人类不参与循环. 做一个能跑的游戏就得花几百, 而且这个游戏要迭代和修bug可就更难了. 并且那些所谓的产品都是个网页. 脱离网页现在 ai 还啥都不是, 还是需要人类深度参与的.