这回的实践完全是被老伙计们给架上去的。新版本更新那天,群里就炸了,说《七宗罪HTML汉化版》这回更新偷偷摸摸塞了东西,大家都像无头苍蝇一样瞎找。我当时拍着胸脯保证:“我来,我肯定能把那几个藏得比耗子还深的彩蛋给挖出来。”

本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.me
从头摸起,锁定这回更新的“脏”点
我的习惯是,只要是找游戏隐藏要素,绝对不从正常玩开始。玩游戏找彩蛋效率太低,那是普通玩家干的事。咱们搞实践记录的,必须得直捣黄龙。
我从渠道那边搞到了最新的打包文件。第一步,就是祭出我的“祖传”文件对比工具,把上一个版本和这个最新版本的文件一个一个地跑了一遍。这个过程特别枯燥,因为大部分代码都没动,或者只是混淆了一下,但效率极高。我就像个老侦探一样,在堆积如山的代码堆里,就盯着那几个“新增”和“修改”的标红文件。
跑了大概一个多小时,我抓住了几个关键的变动:
一个叫
scene_data_A_*的配置文件,体积暴增了差不多50KB。这玩意儿以前就几十K,突然肥了这么多,肯定有鬼。这是第一个重点嫌疑对象。主渲染脚本里的几个函数名被改了,但只有一小段逻辑被动了手脚,里面多了一个判断条件:
if(flag_user_click == 7)。这数字“7”就是赤裸裸的暗示。资源文件夹里多了一张叫
_dev_temp_*的小图,分辨率极低,根本没在游戏里用。这肯定不是彩蛋,但我觉得是开发者忘删的“草稿”,让我嗅到了点人味儿。
深入虎穴,用最野路子的办法触发彩蛋
锁定了目标,接下来的行动就是暴力破解了。我先拿那个肥了一圈的scene_data_A_*开刀。这文件虽然是JSON格式,但里面的内容被二次加密了,看着像一堆乱码。怎么办?我不像有些人非得去逆向它的加密算法,太浪费时间了。
我的土办法是:直接把上个版本的同名文件给替换掉,然后进游戏看崩溃不崩溃。结果是,游戏虽然能跑,但在进入“贪婪之室”的时候,直接卡死了。好家伙,这说明彩蛋肯定藏在这间屋子里,而且跟新的数据包强绑定。
然后我用一个更野的办法——在卡死的地方,用调试工具直接把那段判断条件if(flag_user_click == 7)给强制改成if(true),看看会发生什么。这种粗暴的手段果然奏效了!
第一个彩蛋立刻被我炸了出来:
傲慢之怒(Pride)的隐藏对话:在“傲慢”界面连续点击角色头部7次,会弹出一段从未在任何剧情中出现过的,关于主角童年阴影的超长对话。这不是彩蛋,这是剧情补完。
暴食的逆转(Gluttony)隐藏成就:不是点击,而是要让界面的食物堆积到第7层,然后静置30秒。静置时间一到,画面中间的那个“油炸鸡腿”会瞬间变成一个像素风的“程序员的工作餐”,并弹出一个隐藏成就“996的献祭”。这个藏得是真他妈深。
色欲的彩蛋签名(Lust):这是最难搞的。它不靠点击也不靠数据。我回到那个我找到的,带有数字“7”的函数片段,发现它执行完后,会往一个临时的内存地址写入一串字符串。我盯着内存地址,硬生生把那串字符串给逮住了。那串字符解出来就是三个字:“不干了”。这个,我心说,百分百是开发人员留的遗言。
为什么非得死磕这串“不干了”
我之所以花了一晚上没睡觉,非得把这串“不干了”给扒出来,不是因为我多爱这款游戏,而是我从这个开发人员的身上,看到了以前的自己。
那年,我带着团队没日没夜地赶一个大项目,整整八个月,我们把所有人都得罪光了,终于把一个从头到尾被上面否定了几十次的功能模块给硬生生地塞进了项目里。结果项目上线第二天,那个模块就被产品经理以“影响用户体验”为由,一句话给砍掉了。我当时看着那几百行被注释掉的代码,心里跟刀绞一样。
我记得我当时也偷偷在代码的角落里,留了一句注释,大意也是“操蛋”,然后默默删掉了。现在看到这个《七宗罪》开发人员的“不干了”,我特别能理解。他费劲心思在代码里留下一个隐秘的角落,像个小孩一样宣泄自己的不满,这已经不是一个游戏彩蛋了,这是职场人的求救信号。
我把那三个彩蛋的位置和截图都整理好了,特别是那个带有“不干了”字样的内存地址截图,我特意给那个群里的老王发了过去。老王回复我:“牛逼,赶紧去睡。”
我说:“这算啥牛逼,我只是帮一个同行把他的遗言给公之于众而已。”
这就是我的实践记录,从对着代码一顿乱搞到找到一个同行的“心声”,搞定。

