vlambda博客
学习文章列表

【游戏自动化】浅谈 OpenCV 在游戏脚本的应用

在我还年轻的时候,因为喜欢玩游戏,整天坐在电脑前鼠标点点点,在我废寝忘食地享受快乐后,也给我身体带来了伤害。


网络上还没有如今这么丰富的游戏辅助可以用,当时我就在想,这么重复枯燥的操作为什么要人来做?


一旦开启了这个思路后,从此一发不可收拾,在游戏自动化的道路上越走越远了。


刚开始到网上一搜,那自然是大名鼎鼎的按键精灵了,从最开始的无脑循环点击固定的几个坐标,到找图找色判断点击,再到按任务分模块,写了大量的初级代码。


虽然没有商业化的辅助脚本功能那么全,也没测试得那么完善,但自己用用还是可以的,从此我也有了更多时间去把妹了(大雾~)。


找图找色虽然简单,但写起脚本来,那真的是体力活。重复地抓点抓色,要去复制粘贴再测试,而且游戏稍微一改界面,又得重新搞一遍。


后面手游出来了,安卓苹果多种多样的手机型号,数不胜数的屏幕分辨率,适配起来那叫一个酸爽。


我们的青春,应该去浪去嗨皮,而不是受这些苦。


之后有相当长的一段时间,我都在考虑,如何找到一套完美的解决方案,让模拟操作的脚本开发起来更高效,维护起来更方便,运行起来更稳定。


由于认知的局限,设想过很多的不靠谱的方案,也做过不少的尝试,最后都被一一排除掉了。


玩着玩着,进入大学了,修完计算机专业,毕业后正赶上移动互联网热潮,做了几年手机游戏开发和APP应用开发,再到16年人工智能的兴起,我的想法也在几年间的反复求证中,开始逐步成型。


目前来看,最完美的解决方案应该是 Python + OpenCV + Pytorch + 硬件。


这一篇,我想重点聊聊 OpenCV 在游戏自动化辅助脚本中的应用。


在以前写找图找色脚本的时候,我就在想,为什么写脚本不能按人的自然逻辑来写?人可以看到的东西,可以识别的出来的东西,电脑也应该也可以做到。


在做过几年的游戏和应用开发后,我对界面的布局方案有了比较深入的了解,我认为,写图形图像识别脚本就是对界面的逆向。


脚本也可以像人一样去识别游戏画面的UI布局,轮廓和层次关系、图像含义和文字内容,然后把画面转化成结构化的数据,再根据识别出来的数据,进行逻辑判断和策略制定,然后调用对应的软件或硬件模拟操作即可。


经过探索和实践,OpenCV 这个计算机视觉软件库,基本可以满足识别游戏画面内容的需求。


如果有编程基础,通过查看 OpenCV 的官方帮助文档和案例,上手还是比较容易的。即使是零基础小白,学习 Python 和 OpenCV 的曲线也是比较平缓的。


不过这东西属于易懂难精,要想用得好,还是得经过大量的实践,才能有效地将图像处理的接口配合起来,成长为一个合格的“调参侠”。


总之,OpenCV 给我们提供了一种新的模式,让我们可以用更贴近人类习惯的思维方式去编写脚本。


关于OpenCV的应用,后面我会出一系列的实践案例,帮助大家学习和理解。