00002贪婪洞窟.001
地牢类游戏我喜欢的有不少,比如《厕所穿越记》、《地下城冒险》等等,以及这次的研究对象《贪婪洞窟》。
从玩法上来说,《贪婪洞窟》不够上进,刷多了就显得单调、腻人。在那么几次更新中,除了“梦境”之外,都是相同模式下、内容的单调增加。即便是梦境,也只是“一条命看你能闯到多少关,然后给你个排名”的无聊游戏,玩法和主线还是一模一样的。我要看看能不能修改它,如果能,就再看看能修改到什么程度。我个人的愿念,不仅仅是平衡性(比如主角属性、水晶、装备属性等)上的修改,更是玩法上的变更、完善(当然,如果可行,这将是一项比较耗时的操作,我不会一次性完成并给出文章,将会不定时更新。大家可通过标签分类“贪婪洞窟”查看)。
闲话不多说,进入正题。
要想修改游戏,首先就得拿到游戏。在电脑时代,这是个笑话:都玩上游戏了,还能没拿到游戏?你以为你在虚拟桌面么?安卓游戏还好,网上应当比较好找。苹果比较麻烦,手机越狱了可以找找越狱版的,修改完直接越狱安装。那没越狱的怎么办?对于iOS8.3以下,可以通过iTools、PP助手等的备份程序功能,导出游戏程序;iOS8.3及其以上,通过iTune备份+iBackupBot也应当能够提取出游戏程序。另外,还可以通过iTunes直接在AppStore中下载游戏程序。游戏修改后,如何在非越狱机上安装呢?如果你有一台Mac电脑,可以通过Xcode进行安装。如果你有一台Windows电脑,则通过PP助手5进行安装。获取程序和安装程序的具体操作过程,此处不赘述,如有问题,请自行解决。
拿到的游戏程序文件,安卓的是一个apk,苹果的是一个ipa。它们都是压缩包,用WinRAR之类的解压出来即可。我们将文件修改后,替换掉原文件即可。对于apk,需要重新打包(有些游戏会对签名进行验证,重新打包的就无法正常游戏了。对于这类游戏,就得找到验证的代码,看能不能破解掉)。对于ipa,重新压缩打包好像有问题,不过可以用WinRAR直接替换掉ipa中的原文件(而不要解压再压缩)。
以下开始正式讲解贪婪洞窟的修改,以iOS上的1.5.0版为基础,而非最新版。
解压ipa后,打开到Payload\Cave iOS CN.app\,可以看到里面有很多文件和文件夹。文件有mp3、json、pvr.ccz、atlas、plist、png等类型:
如果对游戏开发有所了解,那么就可以很容易看出那些含有bundle的文件夹是第三方开发包,这个没什么好弄的;含有lproj的文件夹(比如de.lproj、en.lproj等)是语言包,也没有什么好弄的;_CodeSignature从名字上看是大概是数字签名之类的,还是没什么好弄的。
好了,文件就这么全过滤掉了,下面看看文件。
Mp3和png显然不是我们关心的重点。名称相同的pvr.ccz、plist组合为一个整体,是TexturePacker生成的图像,已被加密(在研究过程中虽然顺手拿到了密码,但我是不会公开的,也别找我要)。名称相同的json、atlas也组合为一个整体(具体使用时还要加上刚刚说的pvr.ccz图片),构成spine动画。有个_vungle.db,这是一个sqlite数据库,但也属于一个第三方SDK中,暂时不用管。经过这么过滤,还剩下一些单独的plist文件和为数不多的几个文件:PkgInfo、README.txt、key_words.txt、LICENSE、Cave iOS CN、Cave iOS CN.entitlements等等。Cave iOS CN是游戏的可执行程序(相当于Windows中的exe文件);key_words.txt是要过滤的关键字(一些伟人的名字是不能乱说的、脏话也是不能乱讲的)。其他的PkgInfo等看起来就不像游戏的配置或者逻辑。这样一来,也就剩下那些单独的plist文件了。好吧,其实如果对苹果开发有点了解,我们就会知道plist叫做属性列表文件,和Windows中cfg、ini等配置文件差不多,便会首先定位到它们。
继续分析plist,就看看名称,就不难发现里面有一些是用来定义界面(名称中包含ui)的;还有一些是系统的。剩下的便是我们所关心的。
打开plist看看。
Plist有好几种格式,二进制的、文本的、xml的。后两种都可以用文本编辑器打开,但很难看。Xml还可以用xml工具打开,同样很难看。二进制的,很不幸,需要使用xcode或其他专用工具打开。如果使用Xcode打开的话,非常直观,比如成就表:
上图中的第一项,210004大概是成就的id,它的子条目,名称具有很好的可读性,让我们很容易就知道要改啥了。Des、name之类的值是一串数字而非明文的描述性文本,这是为了方便本地化,那串数字是语言包中的id。
经过一定的研究,发现各plist文件的作用如下:
l achievementAttribute.plist:成就
l battleRewardEquipments_dl.plist:梦境奖励
l battleRewardItems_dl.plist:梦境奖励
l crystalBox.plist:开水晶箱子所需的水晶数目
l drama.plist:故事碎片(地牢捡起的那些纸张,可在背包-)日志-》故事中查看)
l dramaCatalogue.plist:故事分类
l equipmentAttribute.plist、equipmentAttribute_dl.plist:前者是主线中的装备属性、后者是梦境的
l equipmentZone.plist:各等级+0装备的基本属性随机范围
l face.plist、face_2.plist:创建角色时捏脸用到的眼睛、头发之类的
l guide.plist:操作教学
l happyClub.plist:某种充值活动?奖励
l heroAttribute.plist、heroAttribute_dl.plist:
l itemsAttribute.plist、itemsAttribute_dl.plist:物品
l level_1.plist、level_1_dl.plist:普通难度地牢生成规则。后者为梦境
l level_2.plist、level_2_dl.plist:噩梦难度地牢生成规则。后者无效
l level_3.plist、level_3_dl.plist:地狱难度地牢生成规则。后者无效
l levelReward.plist:爬塔(到达地牢指定层)奖励
l LocalString_zh.plist:简体中文语言包
l makeRuneLimit.plist:各层地牢生成符文的数量上限
l mapConfig.plist:???????????
l mapElement.plist:???????????
l missionAttribute.plist:任务
l monstersAttribute_1.plist、monstersAttribute_1_dl.plist:普通难度下的怪物属性。后者为梦境
l monstersAttribute_2.plist:噩梦难度下的怪物属性
l monstersAttribute_3.plist:地狱难度下的怪物属性
l playerNames.plist:创建角色时的随机名称列表
l pointMax.plist:一些属性的极限值(未具体研究,不知道用在哪里)
l pointShop_dl.plist:梦境积分商店
l prizePoolAttribute.plist、prizePoolAttribute_dl.plist:奖池(用于怪物的掉落列表等)
l purchasePresent.plist:首充奖励
l rareMonster_1.plist:普通难度精英怪生成规则
l rareMonster_2.plist:
l rareMonster_3.plist:
l secretshop_1.plist:普通难度时的老婆婆商店
l secretshop_2.plist:
l secretshop_3.plist:
l shopincave.plist、shopincave_dl.plist:地牢商店
l skill.plist:人物技能
l skillEffect.plist:
l skilllvup.plist:
l suitSkill.plist:物品技能
l TestConfig_Cave.plist:正式版改了会生效么?
l TestConfig_Town.plist:正式版改了会生效么?
l treasureAttribute_1.plist、treasureAttribute_1_dl.plist:怪物、密室、钱包、箱子掉落(可能掉落的物品列表和几率在prizePoolAttribute中定义)
l treasureAttribute_2.plist:
l treasureAttribute_3.plist:
l triggerObject.plist、triggerObject_dl.plist:陷阱
l triggerType.plist:
l turntableAttribute_1.plist:普通难度时的转盘
l turntableAttribute_2.plist:
l turntableAttribute_3.plist:
l turntableBingoAttribute.plist:转盘转满指定次数时的奖励
l updatePurchase.plist:老婆婆商店中的3种药水(未具体研究,不保证)
l upGrade.plist:强化装备时装备附加属性的提升值
l upGrade_base.plist:强化装备时装备基本属性的提升值
TestConfig的内容如下:
上述内容可能有所遗漏甚至错误,欢迎大家指正。
习惯性吐槽CSDN:我只想从MS Office Word中Ctrl+C,在html编辑器中Ctrl+V,希望能够保留Word中的格式(图片和OLE内容另计),这个功能啥时能够实现?