代码角度分析《旅行青蛙》:一

代码角度分析《旅行青蛙》:一
坐船的小青蛙

  17 年春节前,《旅行青蛙》火的不行,反应慢一拍的我最近才开始迷上这个游戏。最近我的青蛙出去旅行不知所踪好几天了,作为一个不甘心当“佛系青年”的程序员,我想看看游戏的代码到底是如何设定的。

  所谓细节是魔鬼,真做起来就没那么容易了,我从来没有接触过游戏开发,更别提手游了,一开始还真是有点懵。

  第一步,我想先确定一下《旅行青蛙》是否涉及到和服务器端的交互,毕竟单机游戏破解还比较容易,如果数据是从服务器端拿到的话难度肯定会大一些。用手机端端的抓包软件看看游戏过程中是否有和服务器的交互就可以了。


代码角度分析《旅行青蛙》:一
request
代码角度分析《旅行青蛙》:一
response

  上图是一次请求交互的结果,其他的交互也是一样的模式,响应消息中除了 200 OK,没有其他内容,表示这只是应用向服务器端上报运行状态的变化,便于监控游戏的 bug,并无服务器端的逻辑,而且还可以看出来是一个基于 Unity 3D 开发的游戏。

  对我来讲,破解还是从 Android 端入手更为容易一些,于是从 Google Play 上下载下来了 APK,扩展名改为 RAR,即可解压。解压后目录结构如下:

代码角度分析《旅行青蛙》:一
jp.co.hit_point.tabikaeru

  通常来讲 Unity 开发的软件代码会打包成 Assembly-CSharp.dll 放在目录 assets/bin/Data/Managed/ 目录下,这个游戏也是如此,使用 .Net 的反编译软件即可拿到代码,不过通常来讲,都会对这个文件做加壳处理,想破解不会很轻松,但这个游戏是个例外,也许是因为 Hit-Point 是日本的游戏公司,只能说和国内的行业氛围不一样吧。

代码角度分析《旅行青蛙》:一
游戏代码

  简单的扫了一下代码,我觉得代码质量还是挺高的,风格一致性很高,写的也颇为工整。而且代码量比我之前想象的要大得多,本以为一个休闲小游戏不会有多少内容的。而且代码主要集中在地图系统的逻辑上,这也有些出乎意料,毕竟地图系统在游戏中根本不可见,随便做上几个点,随机选择,恐怕对绝大部分用户来说也没差别,要为这个游戏的一丝不苟点赞。

  目前对于游戏的逻辑还没有深入研究,目前能确定的几个结论有:

  • 使用不同的称号,对游戏的进程没有影响,因为没有找到这部分逻辑,例如使用“离家之路”,也不会让小青蛙回来的更慢。
  • 门前的池塘里最多一次可以收获二十枚三叶草,每棵三叶草都有自己独立的重生时间,范围在五分钟到四个小时之间,所以想多赚点三叶草,就要勤快一点,多去点点。
  • 抽奖的奖品获奖率是不同的,车票(黄玉): 1%,金平糖(红玉):3% ,小馒头(绿玉):9%,护身符(青玉):27%,抽奖卷一张(白玉):60%。

参考链接:
呱呱走火入魔-逆向游戏代码-终结玄学迷信
旅行青蛙分析(Android篇)

上一篇:在百度搜索里展现网站LOGO


下一篇:R 语言实战第一,二章 R 语言版