手机小游戏辅助程序的实现

这两天玩了一个微信的小游戏,想到以前的跳一跳可以通过模拟按键和截取屏幕的方式做辅助程序,所以想针对这个小游戏也做个机器人自动玩,虽然结果是失败的,但是也学到了点东西。

1.做这种小游戏机器人的关键点有两个,一个是模拟按键,一个是截取屏幕。模拟按键很简单,直接调用以下命令即可在安卓手机上任意一个坐标点击一次,部分手机记得在开发者选项里开启允许模拟点击

adb shell input tap x y

2.图像识别起初想和跳一跳一样,用adb shell来截图,但是发现这种方式速度太慢了,大概3秒一张图,跳一跳没有时间限制,而我现在玩的游戏有时间限制,所以截图速度要快,快速截图有以下几种

  • 安卓手机内用APP截图,这种方式我觉得是最快的,因为可以直接把图像数据放在内存里,减少了IO,但是这种方式我自己没研究过
  • PC上使用安卓模拟器,模拟器内玩游戏,然后用PC上的API截图,这种方式和第一种速度上不相上下,缺点是部分游戏不支持模拟器
  • 使用局域网同屏APP,然后在PC上截图,这种方式也比较快,但是有一定的延迟,画质越高延迟越大,所以推荐可以自定义画质的同屏APP,我用过爱莫助手和AirDroid,前者画质虽然没后者好,但是延迟低且PC上不用额外安装软件,浏览器上就可以用

3.截取屏幕后,就可以根据游戏规则写算法来识别什么时候需要点击了,简单的游戏可以判断像素。复杂点的嘛。。。我也没研究过,所以不知道

4.至于为什么最后失败了,我觉得有两点

  • adb shell input这种模拟点击方式不可靠,比如发送三次模拟点击,间隔300毫秒,虽然百分之90的情况都是点击了3次,但是依然有几率只会点击2次
  • 对于速度要求高的游戏,同屏截图依然还是慢了

5.类似这种小游戏,还可以找到上报分数的地方拦截修改掉,或者修改游戏代码达到一些变态功能,因为这些小游戏的数据校验一般都在客户端

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,811评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,824评论 2 59
  • 不知大家有没有看过这两本书,反正我是很喜欢。 我从初一便开始看一些玄幻类的小说。无论是网上很火的《斗破苍穹》《...
    刘星星_三月阅读 1,742评论 8 6
  • 在一些应用中,有这样的场景:在控制器A中需要处理很多逻辑,那么可以将另一个控制器B来作为A的子控制器,帮助A分担一...
    LSRain阅读 291评论 2 1
  • 我和L小姐是很要好的朋友。L小姐前段时间和G先生有点暧昧,应该是L小姐对他有点想法,可之后两个人的关系就像过...
    MLZ阅读 3,460评论 0 0