自1996年以来,Nintendo 64一直背负着同样的评价:游戏素质极佳,但雾气效果糟糕。那堵遮挡住20英尺外一切事物的灰色“雾墙”并非出于艺术风格的考量,而是所有在该平台开发游戏的开发者最终都会碰到的硬件限制,且大多数人只能无奈接受。30年来,没有人能在大规模场景下解决这一问题。
开发者 James Lambert 刚刚做到了。
N64的雾气问题,终于得到了解释
Lambert曾制作过 Portal 64(一款在真实N64硬件上运行的移植版游戏)以及支持VR的 Super Mario 64 改版ROM。如今,他将目光转向了一个名为 Junkrunner 64 的游戏开发项目。该游戏可在真实的N64硬件以及包括Ares在内的高精度模拟器上运行,并呈现出一种该平台前所未见的特性:其视距(draw distance)可与 The Elder Scrolls V: Skyrim 相媲美——这款由Bethesda开发的开放世界RPG于2011年发布,其运行的硬件比N64晚了15年。
“你可以站在地图的一角,一眼望到另一端,”Lambert在他的解析视频中说道。当他叠加尺寸对比图时,Junkrunner 64 的地图规模完全碾压了同一平台上的 The Legend of Zelda: Ocarina of Time。若要寻找规模上最接近的参照物?那就是 Skyrim。
导致N64雾气问题的技术罪魁祸首是所谓的Z-fighting(深度冲突)。主机的Z-buffer(深度缓冲)用于追踪物体深度以确保它们按正确的顺序渲染,但其精度不足以处理远距离的几何图形。当物体距离摄像机越远,N64就无法准确判断哪个物体更近,导致渲染顺序出错。远处的山脉可能会渲染在近处的山坡之上。雾气是所有开发者为了掩盖这一问题而采取的权宜之计,在问题显现之前就将其遮盖住。
Lambert是如何解决这一问题的
关键在于:Lambert提出的解决方案之所以精妙,恰恰是因为它借鉴了现代游戏引擎的技术,并针对1996年的硬件进行了适配。
“我的解决方案是把世界绘制两次,”Lambert解释道,“首先,我将所有远处的物体缩小约100倍进行绘制,然后进行第二次渲染,专门绘制近处的物体。”整个世界被划分为多个细节层次(LOD)的区块。远处的区块以低细节渲染,随着玩家靠近,更高细节的版本会将其替换。在渲染任何区块之前,引擎会检查它是否在玩家的视野范围内。如果不在,则直接跳过。
其结果是一个由远及近分层构建的世界:低细节的几何图形填充地平线,高细节的区块在前景接管画面,无需任何雾墙来掩盖接缝。
info
Lambert的 Junkrunner 64 ROM已在GitHub上发布,任何想在N64模拟器上尝试的玩家均可下载。协作者 Pyroxene 负责了实际的地图构建,为开放世界的每个区块制作了多种LOD变体。组装完成后,Pyroxene确认该游戏在硬件上达到了“良好,有时甚至是极佳的帧率”。对于一台运行着 Skyrim 规模世界的30年前的老主机来说,这绝非易事。

悬浮摩托加速至180英里/小时
让大地图值得探索
构建开放世界只是问题的一半。Lambert意识到,仅凭规模并不能让游戏变得好玩。“这张巨大的地图真的很酷,但如果里面没什么可做的,且移动速度又很慢,反而会降低游戏体验,”他说道。
针对移动问题的答案是玩家的悬浮摩托,在完全升级并加速后,时速可达180英里左右。而关于探索的答案则更为深思熟虑:地图初始时完全隐藏,玩家在世界中穿行时会一点点揭开地图。这种设计选择赋予了探索真正的意义,而许多充斥着图标的现代开放世界游戏早已悄然放弃了这一点。
Lambert明确表示,Junkrunner 64 只是一个游戏开发项目,不太可能独立扩展成更大的作品。重要的是这项技术未来的去向。此处开发的技术将直接应用于Lambert此前宣布的更大的N64项目——一款类似 Magicka 的合作游戏,该游戏现在将拥有一个成熟的开放世界引擎作为基础。
对于那些在N64的雾气中长大、好奇这台硬件极限究竟在哪里的玩家来说,这就是答案。请持续关注Lambert的下一个项目,并查看最新的游戏新闻,获取更多关于复古开发圈的故事。务必查看更多内容:


