逆向工程GTA。
1
GTA大概是最广为人知的游戏系列之一,超过2.5亿份的总销量鲜有其他作品能够匹敌,系列各作也登陆了几乎所有能够登陆的平台——除了Switch。
任天堂Switch自发售以来连续霸占游戏主机的销量榜榜首,全球已经售出约7000万台主机,兼顾便携的特性让很多老游戏在这里找到了第二春。
而偏偏大热的Switch平台上没有任何一款GTA游戏,这成为了不少GTA玩家的怨念。
尤其是GTA三部曲:GTA 3、《GTA:圣安地列斯》和《GTA:罪恶都市》等曾推出过手机移植版,玩家们无法理解,为什么不把这些游戏移植到有正经手柄按键的主机和掌机上,偏偏要用虚拟按键来玩主机游戏。
作为现代3D版GTA的开山之作,GTA 3这样的作品也是复古游戏中的经典,被很多复古爱好者喜爱,不少玩家都期盼能在Switch这样的便携平台上。
而对此R星始终没有表态,但《黑色洛城》却登陆了Switch,这也侧面证明了把GTA移植到Switch不是不能,只是不想。
2019年,澳大利亚的游戏评级网站上毫无征兆地出现了对GTA3的重新评级,这样反常的举动引起了人们的注意,有一些人认为这也许证明了GTA3重制版的存在。
之后还有传言说,R星准备重制所有的GTA三部曲,而重制版会登陆Switch。一时间各种传言、情报、猜测满天飞,搞得玩家们兴奋不已。可传言过后,一切都没有发生,迄今为止,R星都并没有放出任何GTA重制的信号。
不论是重制还是移植,想在Swtich上玩到GTA,好像只能寄望于民间技术组了。
2
这些年来,有不少人曾试图重制GTA 3,比如2013年有人开启了OpenRW项目,就曾尝试将GTA 3移植到开源引擎OpenRW上,但项目进度缓慢,时至今日仍没能完成。
还有一些人,曾想用Unity或Unreal这样更现代的引擎去重制GTA3,不时就会蹦出一个概念预告片,但随着时间的推移,这些项目也都不了了之了。
在众多想攻克GTA的人中,网名aap的黑客是极少数坚持下来的。
aap从2016年开始试图用逆向工程技术来获得GTA3的源代码。最开始这只是他业余的一种学习和研究,没有什么明确的目的。通过逆向工程出来的代码他成功的还原了游戏的地图,还把游戏中的碰撞与物理系统还原了出来,并将这些代码导入到原版的游戏中进行测试。
aap在GitHub的头像
这时aap突然生出了一个新的念头,用自己破译出的源代码一点点的代替原有游戏中的程序,这样进行下去,最后他得到的不就是一个完整的开源的GTA了吗?
开源的GTA,有无限的可能,他可以为游戏加入最新的技术,高帧数、光线追踪、VR都不在话下,这样的愿景让aap调整了自己的方向。
2018年春天,他正式将项目的目标修改为用逆向工程制作出一个完整的开源GTA 3,代号RE3。
aap不知道这个项目什么时候能真正的完成,但他还是充满希望,因为即使才刚刚开始,但他的作品已经是市面上所有开源GTA项目中看上去最靠谱的一个了。
不过要编程出完整的游戏,比单独实现某个功能困难得多。
GTA3使用RenderWare 引擎制作,因此他首先需要让RenderWare正常运行起来。他编写了一个程序能够重新启用RenderWare大部分的功能,而且可以支持各种文件格式、各种运行平台。
但问题才是刚刚开始,GTA3使用C++编写,但逆向工程得到的代码则是机器语言,为了让这些代码能够再次被利用,他需要将这些机器语言再转换成C++代码。
虽然有一些反编译软件能够帮他省下一些功夫,但将这些软件输出的代码整理成可以阅读的C++代码依然相当费时费力,而且这个过程中还很容易给游戏中引入新的bug。
有些地方的代码让他完全搞不清楚,每一个缺口都会让游戏最终无法正常的运行起来,这一度让aap的工作陷入僵局。
3
在2018年,aap将项目暂停了一年,这期间他幸运地发现了一个重要突破口。
一般游戏的开发代码中都会有调试符号(Debug symbol),包含了变量、函数和源代码行等信息。
有了调试符号,测试人员可以便捷的对游戏进行测试和调试,快速找到问题代码的位置。当然也意味着黑客同样可以更容易的找到需要的代码并进行修改。因此不论是PlayStation还是其他厂商的都会要求开发者在正式版的游戏中将调试符号删除。
但不知道什么原因,PS2和安卓版的GTA3中保留了这些调试符号,变量和函数都被标记了名称,这让aap可以更容易的将源代码拆分开来并转化成C++语言。aap认为如果不是有这些调试符号,自己的项目很可能很早就完蛋了。
aap分析代码时的截图
2019年,aap再次重新回到这个项目上,发现了调试符号让项目的开发一下顺了起来,时年5月,他已经完成了15000行代码,并将RE3项目正式发布到了GitHub上。
很快,人们注意到了RE3的喜人进展,更多的爱好者加入到了aap的队伍中,此时又恰逢全球疫情爆发,很多人呆在家里无事可做——于是他们都把业余时间都花在了这个项目上,让开发的速度突飞猛进。
到了2020年4月RE3已经可以独立运行了,代码数已经达到18万行。有了RE 3的基础,他们又用7个月的时间完成了《罪恶都市》的反向编程。
得到开源的GTA只是第一步,开源的意义在于,接下来他们可以对这个游戏进行改进,让游戏比原版更好。比如他们在游戏中加入了检查点,玩家在战斗中失败后,不需要再从任务的最开始重来。
更重要的是,他们可以把游戏移植到那些没能得到R星青睐的平台上。很快GTA 3和《GTA:罪恶都市》被移植到了任天堂Switch、Wii U和索尼PSV平台。虽然还是会有一些bug,但作为多数人已经相当令人满意了,比如他们终于在Swtich上玩到了GTA3:
还有其他的组员受到了启发,顺便把《GTA:圣安地列斯》移植到了PSV上,这次不需要反向编程,而是使用了安卓版的游戏,结果运行得相当稳定。
不少人感叹,如果当年PSV上能有这些游戏,没准结局会不太一样。
aap的工作并没有就此停止,如今他们又马不停蹄地开始了对《GTA:自由城故事》的逆向工程。
4
说到这里很多人可能会奇怪,这么折腾真不怕R星找上门来吗?aap自己其实也怕得要死。
Take-Two一向对旗下游戏的版权保护十分重视,尤其是那些尝试重制或修改游戏代码的人。之前有不少民间的GTA重制项目,都在公布后不久就被Take-Two叫停了,甚至相关的演示视频都遭到下架。在GTA 5的PC版最开始推出的一段时间,Take-Two甚至还曾经对Mod进行过封禁。
aap深知自己是在刀尖上舞蹈,此他也提前准备了一些防护措施。比如他声明了自己在GitHub上传的代码仅能用于教育、纪录和Mod的用途,且明确表示不鼓励盗版和其他商业用途。同时,他表示要正常运行RE3还需要游戏的PC原版文件才可以,因此理论上,使用RE3的玩家都需要先购买正版的游戏本体。
“我们希望能尽可能的保持低调,尽量不被注意到”,aap表示。
然而这与现实有些矛盾,当初RE3成功移植到Switch的消息在玩家之中引发了不小的骚动,不少媒体和自媒体都跟进报道了这个消息,把aap和他的项目推到了聚光灯下。但Take-Two方面对此始终没有反应,aap和他的团队就把这看作是R星的一种默许。
之前有其他的团队用类似的逆向工程方法制作了开源版的《超级马力欧64》,而这个项目至今仍活在GitHub上。每次看到这个项目,aap的心里就会安稳很多,毕竟连任天堂最强法务部都没有插手,那么达摩克利斯之剑应该还轮不到自己头上。
再说,这些游戏已经有接近20年的历史了,原版游戏对Take-Two来说已经没有什么经济价值了,而aap这些爱好者们也不从中获利,也许发行商会因此网开一面?
可能正是不断的用这些想法来安慰自己,aap一直对项目的前景还抱有希望。近期,他还接受了知名媒体Eurogamer的采访,可就在 2月20日,Eurogamer将报道发布后的第三天,RE3的GitHub页面突然遭到封禁。
目前,这次封禁尚未得到任何解释。
在采访中,aap表示自己当前的终极目标是逆向工程出《GTA:罪恶都市传奇》,因为这款游戏没有安卓移植版和调试符号,因此是个巨大的挑战,“目前来看,那将是逆向工程GTA的巅峰。”
只是不知道会不会有那天了
扫码关注
游研社公众号
小程序
游研社精选
- 首页
-
- 页 / 共页
-
在“快手”这个用户过4亿的平台里,最火的游戏是给他爱5 半年前,一篇名为《底层残酷物语,一个视频软件的中国农村》的文章,将一个用户量过亿的视频App的生 ...王恺文2016-12-28