把《超级马力欧64》《马力欧卡丁车64》和《塞尔达传说:时之笛》放进模拟器,用RTX 4070 Ti Super跑到4K,是主机原生分辨率的九倍。画面清晰之后,一些当年被藏进代码里的手法反而露了出来。

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

先说《超级马力欧64》。它把马力欧第一次带进3D世界,但那个世界并非全是3D。游戏用了一种叫billboarding(公告板)的技术:某些画面元素不用多边形搭建,而是画一张平面2D图,随着镜头移动不断调整角度,让玩家永远看不到它的侧面。

不信就绕着树走一圈。马力欧站在树旁,把镜头从一侧转到另一侧,树始终是同一张脸。不只是植被,把镜头绕着Bob-omb(炸弹兵)这类角色转,也能看到同样的效果。

Digital Foundry(数毛社)在分析一个粉丝制作的实时光线追踪版本时,树就成了麻烦:它们是平面2D位图,不适合光线追踪光照,改模组的人只能把它们换成完整3D模型。当然,不是所有模型都靠公告板,马力欧和大多数主要敌人是真正的多边形模型,只是用了平涂颜色,4K放大后看得很清楚。

《马力欧卡丁车64》的情况更彻底:赛道和地图进了3D,赛车手没有。看起跑线那一排就很明显,八名车手是预渲染的精灵图。据2022年《马力欧卡丁车64 HD》模组团队的说法,任天堂先用3D建模并制作动画,再把角色作为平面图像插进游戏,游戏只负责换上与你视角角度匹配的那张图。

障碍物同理。4K截图里,赛道上的香蕉皮没有任何厚度,许多其他赛道障碍也是插进世界的2D精灵。Hideki Konno(绀野秀树)后来在Iwata Asks(岩田聪访谈)中解释,全3D角色并非做不到,但会让游戏慢到八名车手没法同场跑。也正是这个手法降低了渲染负担,让四人对战成为可能。

《时之笛》我本以为会看到类似的套路,结果开发者的做法更有想象力。Castle Town Market(城堡镇集市)、时之神殿入口,以及一些小型建筑的内部,都是预渲染图像,上面再叠加3D角色。

4K下最先跳出来的是游戏开场林克出生的那个房间,一眼就能看出是预渲染的。更有意思的是从林克门口望出去的景象:它和你在Kokiri Forest(科奇里森林)外面看到的对不上,很可能因为这张图在村子定稿之前就画好了。The Cutting Room Floor(一个专门挖掘游戏未使用内容的社区)也注意到了这一点。

另一间科奇里小屋把这种反差摆得更直白。放大之后,林克和一只罐子保持着干净的轮廓,而大锅、木桶、架子、墙壁和地板糊成了块状条纹。在N64原生分辨率下,这些细节根本不会扎眼,CRT显示器上柔和的画面正好保住了幻觉。

把这三款游戏拉到4K,某种意义上像一次拆解,但也让人更佩服当年的手艺。每一次妥协都是权衡,为的是把N64那点资源腾给别的东西。那是一个开发者在DLSS、神经渲染和帧生成把这些工作自动化之前,靠手工一点点抠细节的年代。