译 | 为《铲子骑士》打破 NES 规则

作者:highway★
2019-01-09
15 8 3

译注:原文中的 NES,是 FC 的美版名字,后面请自行替换,翻译比较糙,很多地方可能有问题,见谅~

文中视频引自 Youtube,请自备梯子。

我们如何打破规则!

《铲子骑士》(Shovel Knight)是一款包含 NES 经典外观的游戏,但在仔细研究时会有一些很不一样的地方。在开始开发游戏的美学和游戏风格时,我们在 Yacht Club Games(译注:开发工作室,呃,至于为什么叫这个名儿……)时脑子里已经有了一些目标。我们不是精确地模仿 NES,而是创建一个更漂亮的 8 位游戏的视觉效果。
如果 NES 的开发从未停止过,那现在会怎么样?如果现在人们仍旧开发 8 位游戏,那在现在的技术下,游戏玩起来会是什么感受?我们觉得,受益于现今的游戏设计理念下,游戏玩法会更加有趣,技术层面将获得微妙但实质性的提升。这在 NES 上是可能的,其中技术被内置到卡带(译注:我不确定我是不是要加上这个注释,或许有些比较年轻的朋友确实没有玩过卡带机。算了,我只是感叹一下时间过得好快,就好像前一秒,我还在家跟楼上的发小一起打开电视双打忍者蛙与双截龙,下一秒,我们俩就都是爸爸了……)中。

后期的 NES 游戏,如《超级马里奥兄弟 3》包装卡带技术,比起早期的 NES 游戏,比如原来的《超级马里奥兄弟》有了很大的改进。不同的芯片组允许对角滚动,更大的精灵,或(日版 FC - Famicom 独有的功能,详见下文)额外的声道。与改进的技术和对硬件的理解相结合,早期和后期 NES 游戏之间的差异,可能是惊人的。

我们想象一下,也许一些卡带的进步将允许使用 Shovel Knight 中我们用到的技术。我们还打破了一些 NES 的技术限制,纯粹是出于个人偏好……我们决定消除任何阻碍游戏体验的缺点  。一个例子是精灵闪烁,当 NES 试图在每条水平线上显示超过 8 个精灵时,便会发生精灵闪烁。这种效果对某些人来说是怀旧的,但我们觉得这种效果并不好,所以我们不要这种效果。然而,我们确实根据精灵闪烁的想法制定了游戏设计决策:我们试图避免屏幕上出现凌乱的物体,并限制像粒子效果这样的东西。在这种情况下意识到规则,也让游戏的感觉清晰简单。

还有更多的例子,让我们详细介绍一下我们如何扭曲 NES 的规则!

现代硬件!主机和 PC 版本!我们不在 NES 上!

Shovel Knight 本机运行在现代硬件上,无法在 NES 硬件上运行。这让一些非常认真对待 NES 的人感到惊讶,一些玩家希望在自制的 NES 闪存盘上玩 Shovel Knight。

事实上,Shovel Knight 是一款非常复杂的游戏,能够在许多硬件平台和配置上运行。在本世代的任天堂主机上,Shovel Knight 使用 Nintendo 的 Miiverse 和 Streetpass 功能支持一些独特的无线和互联网功能。还集成了第三方中间件,如 FMOD 音频和 SDL 控制器支持。

宽屏 16:9 显示(或 3DS 上的 5:3)

相反,Shovel Knight 每个像素在 1080p 时实际上是 4.5x4.5 像素,虚拟分辨率为 400×240。NES 输出 256×240,我们提供相同的可视垂直分辨率。我们的背景图块(和大多数 NES 游戏相同,译注:图块/瓷砖 - tile,后面保留原文 tile,用瓷砖总会联想到厕所,见谅啊~)尺寸为 16×16,我们拥有与 NES 游戏相同数量的垂直 tile。保持垂直尺寸和 tile 尺寸对我们来说非常重要,以便与 NES 游戏的游戏感相匹配。唯一的区别是额外的水平空间,我们认为这是一个很好的补充,允许额外的空间在关卡内设计谜题,物体和稍微脱离战斗的休息区域。

我们现代升级的一部分是扩展了屏幕的可视空间,避免在 NES 虚拟控制台游戏中看到的黑条。这意味着以 16:9 的分辨率显示我们的游戏,原生于大多数现代显示器。虽然我们确实改变了我们的宽高比,但我们没有改变分辨率,没有让 Shovel Knight 成为像素密集的高清游戏。

背景视差

背景视差滚动是以不同的速率移动 屏幕的不同层/部分屏幕 的能力,从而为 2D 图层提供 3D 移动的视觉表现。我们的第一个预告片的开头就有这种效果。在 SNES(译注:我们所说的日版 SFC)上,效果更好,使用的也更为普遍。它可能在 NES 上也可以实现,但要用一些小技巧。程序员有几个选择:

  • 确保没有背景的任何部分相交并仅在一个方向上滚动它:Shatterhand 中的非交叉点(译注:视频已经挂了,如果需要请自行搜索 shatterhand,此为美版,日版名为特救指令,开发商为 Natsume,一个强到不可理喻的开发商……核心成员部分来自 KONAMI,Natsume 成立的契机来自于 KONAMI 的大裁员……如果由于年龄原因对此工作室不太了解的话,可以搜索一下它的历史和开发过的游戏,在当年,可以说非常……BUG 级了)
  • 创建一个以不同速率滚动的背景动画图块:《金属风暴》中的动画图块(译注:只看技术,请忽略惨不忍睹的视觉效果……特别是令人尴尬的配色)
  • 《蝙蝠侠小丑回归》中:背景中的非交叉点和前景中的精灵(译注:Sunsoft 开发)

在 Shovel Knight 的早期开发中,我们决定增强视差滚动效果,创建平均 5-6 层背景来滚动。这感觉就像 NES 将要做的下一个技术步骤,所以它对我们来说感觉不合适。更重要的是,添加效果使游戏玩法层更具辨识度(译注:反之,上面的金属风暴在有些关卡,辨识度就比较差)。拥有如此多的图层还有另一个好处:我们可以真正利用 3DS 的裸眼3D 效果(译注:呃,前几分钟很爽,后面选择关闭,我想大多数玩 3DS 的玩家或许都会这样吧,眼睛真的不舒服)!

精灵闪烁

当在同一水平线上显示超过 8 个精灵时,在 NES 上会发生精灵闪烁。我们保持精灵数量尽可能低,但如前所述,我们没有确切的数字。我们的一些物体会产生比 NES 游戏更多的粒子...但我们认为它应该看起来更漂亮一点儿。

像 Recca(译注:FC 的 STG 游戏《烈火 92》,系统非常非常丰富……游戏设计在当年,也挺 BUG 级别了)或 Contra(译注:《魂斗罗》)这样的游戏通过每隔一帧显示某些精灵(30fps 而不是60fps)来绕开精灵限制(译注:在玩《烈火 92》的过程中,能很明显的感受到那种闪烁感,尤其是敌人和子弹、爆炸特效)。在运行低分辨率隔行扫描视频的 CRT 监视器上,每帧都会显示对象。除此之外,NES 粒子艺术通常会利用闪烁来表现, 比如爆炸效果。我们在某些情况下使用闪烁精灵来取代 alpha 透明度;例如,Shovel Knight 在被击中后在“无敌”状态下闪烁。总的来说,这并不是一个重要的限制,除非它让游戏玩法不像 NES 游戏玩法(译注:gameplay 这词儿翻译成游戏玩法挺别扭的,您能用 gameplay 的话,就还是用 gameplay 去理解吧)。

调色板添加

NES 只能喷出 54 种不同的颜色......这并不是很多。对我们来说问题主要在于尝试在大多数色调中显示渐变。例如,没有非常有用的黄色,较暗的色彩范围非常不明显,并且没有很多色调可用于显示具有较暗肤色的字符。坚持 NES 调色板对我们来说是一个重中之重,因为它给人一种非常独特的外观。最后,我们最终只加了几个额外的颜色。
有关 NES 颜色的更多信息,请查看此 Wiki

这里的深紫色是#22123B

那么我们的耻辱是什么颜色?(译注:耻辱?有什么好耻辱的……)在这个来自 Treasure Knight 舞台的镜头中,你可以看到地面上的深紫色细节。一旦添加,这种紫色在其他地方使用,主要作为黑色和任何给定背景的冷色调之间的桥梁。

深红色调是#360900

与紫色相似,我们需要一种颜色来弥合从黑色到暖色调的差距。这个深红色在 Mole Knight 的舞台 The Lost City 中显得突出。你不会看到这种红色常用作紫色,因为 NES 调色板倾向于冷色调。众所周知,Mega Man(译注:美版名,日版为 ROCKMAN,我们俗称的《洛克人》)被认为是一个红色机器人,但在开发人员看到光谱之后变成了蓝色(译注:我开始不知道他在说什么,在查 wiki 之后看了这个梗,wiki 中为最初为白色,选择蓝色是为了让动画更清晰,其他的一些文章和 wiki 还有本文也有些出入,一些文章中写的是稻船敬二最初设计的是白色机器人,但开发团队想要制作蓝色的角色,因为 NES 上,蓝色的调色板比任何颜色都要多。之后,二哥便接受了。之后获得 BOSS 武器后改变洛克人的颜色,也是二哥所为,因为他觉得一个蓝色的家伙取得了火焰喷射器,射出红色火焰会很奇怪。如果您对这段历史比较感兴趣,还请自行查阅)。

米色斗篷是#9E9E5C

这个下一个作弊颜色实际上是第一次创造。我们需要 Polar Knight 佩戴的羊皮斗篷的颜色,NES 调色板中没有任何颜色真的符合要求。这种米色也用于他的皮肤,并保持主题关卡的统一。我们实际上打算回去修复这个米色,因为它是整个游戏中唯一用到的地方,但我们尝试过的任何东西都没有这个效果好。最后我们决定就放这儿不修复了。

村民:#824e00

最后的作弊颜色需要帮助使 Shovel Knight 的演员更加多样化。默认的 NES 调色板提供了很少的选择,尤其是创建具较暗肤色的角色时。当做 “Pixel My Face” Kickstarter(译注:国外的众筹平台,相对于国内的那些实际上已经沦为增加曝光率的众筹平台来说,还是更实在一些,当然……我国国籍不能发起众筹)奖励(在某个承诺层,支持者在游戏中作为肖像永生化)时,这尤其成问题,因为我们有来自世界各个角落的支持者。因此,我们最终的作弊颜色是浅棕色,给这个家伙的脸带来阴影!

每个 Sprite 的颜色数

NES 上的精灵限制为 4 种颜色(或 3 种颜色+透明度),您可以看上面的《塞尔达传说》屏幕截图中的角色精灵。

一些开发者使用另一种技巧创建了更多彩色精灵。像 Mega Man 这样的角色是由两个精灵构成的,一个用于他的身体(蓝色,浅蓝色和黑色),一个用于他的脸(米色,白色和黑色),脸的精灵覆盖在身体上。这就是为什么 Mega Man 的脸有时会与他的身体分开闪烁。对于 Shovel Knight,我们决定像 Mega Man 这样处理大多数精灵,除了透明度之外,还可以使用 4-5 种颜色。

获得这种平衡是一个棘手的过程,因为有太多颜色的角色,有的地方会伸出来像拇指一样。我们调整了很久细节的程度和颜色,直到找到一个看起来很棒的组合。(下图:右侧为调整后)

一个太精细的精灵也很难做动画!

在这个例子中,你可以看到原始的 King Knight 设计。虽然左侧精灵只有 5 种颜色(正如我们所说的限制),但它细节太多了,几乎感觉更接近 16 位精灵。在通过几次通过以简化形状以便于辨识和简化之后,我们最终得到了你在游戏中看到的精灵!

多个调色板同时使用

尽管 Shovel Knight 中的每个精灵都是使用有限的颜色创建的,但我们没有让屏幕上的所有精灵都遵循单一的调色板。再举一点 Mega Man 为例,玩家的精灵颜色变化也会影响 1-Ups(译注:加一条命,在东北,俗称奖人儿,读人不读淫,感谢!)和 其他道具。这是由于均匀的调色板;当为一个精灵调整颜色时,所有精灵都会改变颜色。我们选择不担心这个限制,因为使一个调色板工作让人头痛,而且并没有让 gameplay 收益,但我们确实使用有限的调色板来创建敌人变体以及循环伤害和爆炸效果。

这些效果使游戏更加清晰和令人兴奋; 例如,循环伤害使你很明显的看到你正在伤害敌人,因为所有物体的效果都是一致的,并增加了乐趣,因为颜色循环比典型的“受击”动画或闪烁更具影响力。 这些调色板循环和移位效果是通过将表示精灵的索引无符号字节纹理和表示调色板的完整 32 位颜色纹理传递给像素着色器来创建的......这是 8 位技术的飞跃,可以模仿过去的美好时光!(译注:这里这个受击效果很像《洛克人》蓄力射击的感觉。)

要查看调色板效果的限制,请查看此站点,该站点显示您可以通过循环单个调色板创建的惊人动画。

内存限制

一个 NES 卡带只能容纳如此多的信息:代码,动画,背景,文本,音乐,以及其他一切都必须适应 32k 的内存,尽管通过使用称为内存映射器的盒式芯片大大扩展了因为更高级的图形和特殊效果需要 ROM 大小大到 4-6 兆位(0.5~0.75 MB)(译注:这里是机翻,我……不校对了,我觉得有点儿难受。)。Shovel Knight 的容量接近1.2GB(大约有150 MB - .mp3文件)。因为我们不需要安装在小型卡带上,所以不需要极端优化和数据压缩,我们能够将我们的技术工作集中在游戏系统和稳定性上。

我们的作曲家兼声音设计师 Jake'Virt'Kaufman 喜欢提醒我们,当编译成真实的机器代码(见下文)时,配乐将很好地融入6MB 的 Kirby's Adventure(译注:星之卡比)卡带中,但前提是所有图形和游戏代码都被删除。

大精灵

NES 上的精灵硬件对于绘制非常大的移动物体并不是很有利,因为它施加的限制(毕竟,即使是一些小东西也可能导致闪烁)。为了解决这个限制,聪明的开发人员将大的精灵图显示为动画背景 tile 层。这就是为什么每当你在 NES 上与一个体积很大的敌人作战时,他们通常都是在没有背景艺术的黑屏上。BOSS 是背景。(译注:真佩服 FC 时代那些程序员,真是带着脚镣跳舞,在痛苦中传递快乐。)

BOSS 的黑色背景总是给 NES 游戏一个独特和史诗般的感觉,其中焦点只关注你和你的敌人,所以我们认为保持这一点非常重要。但是,由于没有精灵限制,我们不需要使用背景图层或其他变通方法来制作大型精灵。我们只是使用我们的动画精灵代码,小心设计,并确保精灵在黑色(或很暗)的背景上。

摄像机振动

在 NES 上,相机抖动仅发生在单个轴上。下次看到 Bowser 在《超级马里奥兄弟 3》的最后一次遭遇中(译注:传送门 1:50)砸地时要注意 。这与 NES 在对角线滚动方面的困难有关。我们没有这样做,因为我们没有找到令人信服的理由来保留它。

HUD 作为一个层

NES 游戏的一个奇怪之处在于精灵通常会在 HUD(译注:HUD - head-up display)前面画出来。在 NES 上,大多数 HUD 都是在背景层上绘制的。这是因为只有1层,所以背景和 HUD 必须共享。在许多情况下,支持大 ROM 大小的内存映射器芯片还包含支持“分屏”状态栏的特殊时序硬件,但背景层仍然只是一个背景,并且精灵被绘制在它上面。因此,如果玩家能够到达屏幕顶部,HUD 将被他们的精灵掩盖。偶尔,这种行为被用作游戏机制,因为秘密或路径可能隐藏在这种“无法到达”的屏幕空间中。我们喜欢这个怪癖,尽我们所能坚持下去,但有时层次结构太怪异了,我们不得不根据具体情况改变一些实例。

声音限制

音乐可能是 Shovel Knight 中最真实的 NES 部分,虽然它可能看起来比你对 NES 游戏的预期更加丰富和饱满。这是因为它被编写为使用一种称为 VRC6 的特殊存储器映射器/声音芯片,该芯片在 NES 时代结束时用于几个 Konami 游戏中。该芯片允许使用先进的图形技术,但最着名的是增加了 3 个声道,使音乐更加丰富和深入。然而,VRC6 等外部声音芯片仅适用于日本家庭,因为西方 NES 缺乏必要的卡带连接,因此对于大多数西方游戏玩家来说这是一种不熟悉的声音。比较美国版恶魔城 III 中的音乐和日本版:差异是惊人的。(译注:机核网做过一期 gadiopro,重轻老师讲的 8bit 音乐的历史和基础原理,非常硬核。)

作曲家 Jake Kaufman 使用名为 Famitracker 的免费程序开始创作 Shovel Knight 的音乐和声音效果。Famitracker 以 NES 机器代码导出音乐,该机器代码能够在实际的 NES 或 Famicom 控制台上运行,具有所有限制和硬件怪癖。我们使用母带制作工具(EQ 和压缩)完成音频,以便在今天的声音设备上给它一些额外的冲击,但避免使用混响效果或立体声混音,这会破坏声音的原始特性。你听到的任何回声或特殊效果都是按照它们在 NES 上的方式逐个编程。这是一个 Jake 的视频,演示了在 Famitracker for Shovel Knight 中创建的几首曲目的复杂性。

NES 的另一个限制是声音效果通常会导致其中一个音频通道掉线。NES 为音乐和声音共享了相同的 5 个基本通道,因此 SFX 会暂时窃取一个或多个音乐频道以便播放。Shovel Knight 中没有这种效果 - 声音效果简单地叠加在音乐之上,这完全是不真实的,但听起来要好得多。

下次启动 NES 游戏时,请仔细聆听并注意大多数游戏如何将低音,鼓声或和声调整到旋律中以便打包更多声音效果。

我们打破了 NES 的规则!

当你把所有的变化加起来时,看起来 Shovel Knight 和 NES 的技术之间存在着巨大的鸿沟。但是,我们觉得8位时代美学的核心得到了尊重,甚至可能得到了提升! Shovel Knight 是一个梦想项目,让我们探索一种今天很少见的游戏风格。尝试解决过去的技术问题,同时避免任何可能真实现代性的陷阱,这是非常有趣的。我们希望通过不仅仅是肤浅的方式对 NES 表达了忠诚,而且我们也建立了奇特的坚如磐石的基础。

近期点赞的会员

 分享这篇文章

您可能还会对这些文章感兴趣

参与此文章的讨论

  1. Mr.LeiDeSen 2019-01-09

    写得很棒!

  2. 方程 2019-12-17

    “调色板添加”一节,那句“那么我们的耻辱是什么颜色”(So what are the colors of our shame)里的shame估计是错字,他想写的是shade,像是“那么我们添加了哪些暗色调”(So what are the colors of our shade)这样。

  3. 方程 2019-12-17

    油管主播Shesez邀请过本文作者David做过一期Boundary Break专栏,讲解了本作的背景视差设计:
    SHOVEL KNIGHT IS A 3D GAME?! Its Own Developer Explains - Boundary Break
    https://www.youtube.com/watch?v=vjENktnbCaE
    墙裂推荐这期的Boundary Break专栏!!

您需要登录或者注册后才能发表评论

登录/注册