打开圣安地列斯的格罗夫街,CJ正朝街角NPC开火,下一秒他径直走向一道粉色传送门,对着门这边的敌人又补了几枪,然后若无其事地穿过去——角色瞬间变成汤米·维赛迪,周围的棕榈树和霓虹灯表明他已经踩在了罪恶都市的沙滩上。一通破坏之后,他又从原路穿回,再次化身CJ;紧接着第三次穿过传送门,落地自由城,在GTA III的阴沉街道里继续折腾。这不是CG拼接,而是一个名为Grand Theft Auto Multiverse的模组在实时运行。

视频里最离谱的部分,是传送门真的像一扇开在不同游戏之间的窗户。站在圣安地列斯的地盘上,能把子弹射进罪恶都市的场景,被击中的人、车和爆炸都会在“对面”正常反应;反过来也一样。模组还允许玩家在任意位置手动放置传送门,像是随手在墙上画个圈就能连通另一个年代的另一座城市。目前唯一不明确的是,这种跨游戏互动的上限在哪——比如能不能把车开进去,开发者没有透露。

打开网易新闻 查看精彩图片

实现这一切的方式远比看起来更“硬核”。创建者Dryxio解释,三个游戏被塞进同一个进程中同时运行,共用一块Direct3D设备。每一道传送门本质上是一张实时生成的GPU纹理,画面没有任何视频捕捉伪造;人穿过门的时候,程序仅仅切换一次游戏引擎,其他两个游戏依然在后台正常运转,所以你看到的另一个世界不是预录动画,而是平行运行的真实场景。整个过程没有加载画面,穿越立刻生效。

每个游戏在模组里都保留了自己的底层机制:独立的AI系统、交通逻辑、物理规则、存档设定、任务脚本甚至独立的画面设置。之所以能把这些独立的商业作品捏合成一个能共存的进程,主要是因为三个游戏的源代码都已被逆向工程并编译为开源版本。Dryxio修改了re3和reVC——前者是GTA III源文件被反编译成干净C++代码的社区项目,后者对应罪恶都市——再利用plugin-sdk与圣安地列斯对接。由于三部原作都基于私有的RenderWare引擎,无法在同一进程内同时渲染多个空间场景,模组调用了开源重实现librw,把三个游戏编译成一个统一进程,才打通了这道“墙”。

眼下的遗憾也很清楚:这款模组尚未公开。但无论它最终是否释出,把三款相隔数年的经典GTA做成一个实时联通的多元宇宙,本身已经触碰到了社区修改的极限。不需要懂一行代码,单是看视频里那个穿着夹克的家伙在不同城市之间来去自如开火,就足够人重新理解什么叫“无缝地图”。