“跳一跳”游戏启示录

“跳一跳”游戏各个维度的玩法


第一阶段:凭直觉完成目标

最开始的玩法是老老实实的手动按屏幕凭借自己的直觉来玩这个游戏。


第二阶段:总结规律完成目标

玩着玩着,有心的人会观察游戏的规律。根据自己总结的规律来尽可能的实现更准确的跳跃。比如,按压时间和跳跃距离相关,那就总结出根据按压棋子时候的声音确定时间的方法。有的根据心里暗数数来判断,我当时是这样做的。还有人发现个别方框停留时间超过3秒会送分,这也是规律。还有在屏幕画坐标量距离辅助判断。这个阶段比上一阶段更懂得总结规律来增加赢面。不会那么凭感觉去玩了。


第三阶段:寻找漏洞完成目标

高手发现了手机通过网络发送的游戏成绩的请求,修改一下参数,发送给服务器,直接修改了游戏的分数。但这个阶段很短,这个漏洞不久就被修复了。这个阶段特别像改革刚开放的时候,个别发现机会的人,趁着规则不健全的时候快速的去抢占资源。看过《大败局》的人,应该会有这样的感觉。这个阶段是一切刚出现但还不健全还有漏洞的时候,成功了就修改了记录,一步登天。失败的,可能被发现而封号。等漏洞修复完成,机会就很少了。


第四阶段:设计工具半自动化完成目标

失去了一步登天的机会,剩下的也不是没有机会。只是稍微复杂一些,于是,又有高手出现了,虽然迟了一些,但高手无论何时出现总会解决问题的。

这个阶段的高手有的用Python脚本实现玩跳一跳的功能。具体思路呢,手机与电脑通过adb的方式连接,用adb命令获取游戏截图,用Python的matplot显示截图,鼠标点击终点和起点,程序将两点距离转换为按压时间,通过adb命令发送模拟按压。以此完成一次跳跃。最早是看到知乎网友@神奇的战士 发表的这个方法。

教程:

https://zhuanlan.zhihu.com/p/32452473

视频:

http://www.miaopai.com/show/DKOlISCk6Un1NfkYy4bUsjtH0LCBrxwbjnVnqw__.htm

还有高手软件和硬件结合来实现玩游戏的。如下截图

先说第一个,视频来自于快手,操作:将两个指针分别定位在起跳点和落地点。按压开关,触摸笔会点击屏幕实现跳跃。

判断应该是把距离转换为电位器的阻值,然后单片机把阻值转换为按压时间来实现的。

“跳一跳”游戏启示录_第1张图片


下面这位操作是原理和上面大致相同。

“跳一跳”游戏启示录_第2张图片


下面这位具体操作是先手动量取起点和落点距离数值,然后旋转旋钮调节参数,再开关,让舵机控制触摸笔按压实现按照设定参数跳跃。

“跳一跳”游戏启示录_第3张图片


第五阶段:全自动化完成目标

在这个阶段,有精通图像化处理的高手,运用opencv库将第四阶段的Python脚本优化,实现程序自动识别截图中的起点和落点,计算距离然后模拟按压。从而实现全自动刷分的境界。


第六阶段:人工智能

先上这位高手的教程:https://zhuanlan.zhihu.com/p/32819519

实话说,我还没有研究过深度学习,所以原理还不是很懂。大致给了不严谨但便于理解的解释:首先,这个游戏的本质是两点距离和按压时间的关联。于是,可以构建一个神经网络,将游戏截图作为输入,按压时间作为输出。深度学习系统最初构建出来之后,需要通过大量的数据让它自己总结出两点距离和按压时间的规律。这里就需要大量的玩游戏过程中的数据来训练它,训练到准确率达到一定百分比后,就可以真正实战,配合之前阶段提到的脚本程序就能实现自动玩游戏了。

这个过程就像之前AlphaGo下围棋一样,它本身不知道下每一步的意义。它知道的是以前训练得到的海量的数据,当面对当前的情况时,通过比对“经验”,找到每一步的最优解。总而实现全局获胜。


罗素说,参差多态乃幸福之源。

挺有意思。哈哈哈。






你可能感兴趣的:(读书笔记,Python)