自1983年7月15日任天堂红白机(Family Computer)在日本发售至今已40年有余,随着游戏主机从“第三世代”逐步进化至“第九世代”,相关视频、音频、控制技术也持续迭代。由于设备停产导致被淘汰的技术实质退出历史舞台,不同时代的“游戏美学”也终于成为了相应时代玩家们的“回忆滤镜”。收听了《游戏的人与社会》系列节目后,对刘梦霏老师团队建立“游戏的人”档案馆的工作深表敬意。而无论对于游戏研究的学术群体、老玩家群体的“追忆”,亦或新玩家群体的“考古”而言,尽可能还原“游戏美学”都是一种必要的努力。
个体对于任何事物的体验或可理解为「体验=信息载量÷接收强度」,同时「接收强度=接收时长×接收次数」,则「体验=信息载量÷接收时长÷接收次数」,即接收相同内容的时间越长或/及次数越多,体验越差。“游戏美学”是一个主要由视频、音频、控制构成的综合体验,而在这三者中,视频是一个由于技术迭代导致在保持信息载量和接收时长不变的情况下,显著增加了接收次数的要素。一帧320×240分辨率的画面在不进行任何差值的情况下(软件通常采用双线性插值,插值缩放增加了信息载量,从而改善了最终视觉体验)同比缩放至2880×2160后,画面的信息载量是不变的,但人眼在一帧的时间内实质看到了81次重复的像素,即观感下降了80/81≈99%。相比之下,音频及控制技术的迭代对设备的物理改动较小或兼容性较好,体验的保留程度相对完整和统一。
因此不难理解,电影和游戏都通过不断推出主要强化视频的复刻(remaster)甚至全面强化的重制(remake)版本,提升信息载量,改善用户体验。对于那些没有机会得到复刻或重制的游戏,用户的可选方案按照硬核程度从高到低排名,主要包括:
1、FPGA硬件仿真+原始显示设备(如MiSTer FPGA/Analogue主机+索尼特丽珑/PVM)
2、原始主机+原始显示设备
3、FPGA硬件仿真+倍线器+现代显示设备
4、原始主机+倍线器+现代显示设备(如红白机+Retrotink/OSSC+OLED电视)
5、第三方软件模拟+原始显示设备
6、第三方软件模拟+现代显示设备
7、官方硬件兼容/软件模拟/mini主机+现代显示设备
由于“第三方软件模拟+现代显示设备”方案优秀的易用性及持续迭代潜力,本文仅针对该方案详细说明,并对涉及到的大部分专有名词提供英文,供社区进一步研究。
一、原始显示设备:模拟信号与显像管电视
既然要用现代显示设备仿真原始显示设备,就需要对模拟信号与显像管电视进行一定解释。在第七世代游戏主机(Playstation 3、Xbox 360及Wii)采用高清多媒体接口(High Definition Multimedia Interface)前,游戏主机以模拟信号方式传输,模拟信号电视即显像管电视(Cathode-Ray Tube)。模拟信号与数字信号的本质区别在于,模拟信号基于扫描线(line)而不是像素点(pixel)成像。由于屏幕不以像素点成像,因此就屏幕而言也没有分辨率概念。电子枪发射电子,通过显像管(CRT)加速到屏幕的荧光粉(phosphorus)上成像,电视也故此被称为“Tube”,“YouTube”即意为“你(们)的电视”。
1、长方形(non-square)的像素?
在数字信号环境中,当我们表达一张分辨率为320×240的图片显示在4:3显示设备上时,默认这张图片由320×240=76800个正方形像素点构成。被显示图片320×240的长宽比(Storage Aspect Ratio)为4:3,正方形像素的长宽比(Pixel Aspect Ratio)为1:1,显示设备的长宽比(Display Aspect Ratio)为4:3,显示设备被显示图片等比例完整填充,DAR(4:3)=SAR(4:3)×PAR(1:1)。
SAR=320×240,DAR=4:3,PAR=1:1
在模拟信号环境中,当我们表达一张“有效分辨率”为256×224的图片显示在4:3显示设备上时,由于正方形像素点256×224的长宽比(SAR)为8:7,因此显示在长宽比(DAR)为4:3的显示设备上时,“像素”本身的长宽比(PAR)就必须为7:6,显示设备将显示图片拉伸后完整填充,DAR(4:3)=SAR(8:7)×PAR(7:6)。虽然模拟信号环境中没有像素实体,但为了在数字信号环境中便于理解,就有了长方形像素的概念。
SAR=256×224,DAR=8:7,PAR=1:1
从另一个角度看,对于基于SAR为256×224,PAR为7:6的开发者,在制作游戏画面时,其实需要在7:6的长方形像素格上绘制被游戏主机及显像管电视拉伸后的画面,而本不应该被发现的PAR为1:1的画面,是在模拟器问世后才得以被玩家们了解,引发了 新的讨论甚至争论 。
2、更高的发色数?
显像管成像原理为荧光粉受到不同强度电子的撞击,而电子+荧光粉并不同像素点的成像那样精确(尤其在S-端子(S-Video)问世前,因此也有观点认为使用AV端子(Composite)才真正忠于开发者意图),更高强度的电子不仅会呈现出更亮的画面,同样会使色彩向周围外溢,因此可以用较低发色数的点阵图呈现出更高发色数的图像,彼时的开发者们在绘制点阵图时会充分考虑这一显示设备的物理特性,从而实现层次丰富的烟雾和光影效果(dithering)。 就这一点而言,现代游戏的“像素风”只能说是对传统点阵图效果似是而非的模仿或致敬。 3、隔行(interlaced)、逐行(progressive)、扫描线(scanline)、反交错(deinterlace)及过扫描(overscan)
(1)隔行 vs. 逐行
以日区及美区游戏的NTSC制式为例,共有525条扫描线,其中可见光栅为480条扫描线,电子从左至右自上而下,以每秒29.97Hz的频率进行全屏逐帧(frame)扫描,每一帧由两个240条扫描线的场(field)组成,分别为0、2、4至478的偶数场(even)及1、3、5至479的奇数场(odd),场以每秒59.94H的频率显示。因此也被定义为每秒30帧的240p和每秒60场的480i,p和i即progressive及interlaced的缩写,而事实上无论是逐行还是隔行信号,都是每秒显示两个场,逐行是每秒显示两个完全相同的场。数字信号环境中,240p分辨率通常为320×240,480i分辨率通常为640×240,纵向分辨率为单个场即1/2帧的分辨率。
(2)扫描线
由于逐行扫描永远只扫描奇数场,对偶数场的扫描线完全跳过,因此会在视觉上呈现出恒定的横向“黑线”即所谓的扫描线,而事实上“黑”其实是“无”。隔行扫描交替扫描奇偶场,因此在较人眼更敏感的高速摄像机下会呈现出明显的闪烁(flicker)以及交替的扫描线(alternative scanline),但由于闪烁及扫描线只存在1/29.97秒,因此人眼不易察觉。
(3)反交错
由于数字信号的成像方式不再是扫描线,也不存在场的概念,因此将模拟信号转换成数字信号后,奇偶场就只能合并在一帧中显示。在越是高速运动的画面中,两个相邻场捕捉的画面差异就越大,且每个场只有1/2帧的纵向分辨率,从而导致明显的“毛刺”(combing),所以对于隔行扫描信号(例如Playstation 2的视频)就必须进行反交错。麻烦的是,由于每个场只有1/2帧的纵向信号,必须对实质不存在的另1/2纵向信号进行差值“脑补”,而差值与真实之间永远不可能相同,因此反交错是一个必然失真的过程。在有交替扫描线滤镜的前提下,将纵向分辨率拉伸至两倍的“bob”是最快速也相对“还原”的反交错方式。由于奇偶场的扫描线是交替显示的,画面自然出现上下抖动(bobing),因此得名。通过神经网络算法进行动态补偿的反交错方式一直在进步,民用层面易用性较好的是Avisynth的QTGMC(Quadratic Motion-Compensated Temporal Gaussian Smoothing)反交错滤镜,本文不作展开。
(4)过扫描
由于显像管技术本身及民用电视的品控难度较大,普遍存在阴极电流增加导致阳极电压下降的情况,观感上呈现出比预期更小且更亮的画面,被称为“过扫描”。在无法控制电视质量的情况下,开发者可以划定一个图像的“安全区域”,在该区域外不绘制图像,即画面有效显示区域小于画面最大显示区域。由于扫描技术的物理特性,过扫描通常只会发生在与扫描线平行的两侧区域。
画面最大显示区域为256×240,上下各有8个像素留为黑边(标红区域)。
画面有效显示区域为256×224,去除上下各8个像素。
由于过扫描区域是不成像的,相当于被丢弃的信号,因此是否删除这部分画面不改变有效显示区域的SAR、游戏主机的PAR及显示设备的DAR。大部分第三方软件模拟都支持切除过扫描区域,并默认开启。
4、多分辨率
由于CRT电视屏幕没有分辨率概念,因此开发者可以在4:3的DAR目标下,自由安排同一游戏在不同场景下的SAR及PAR。例如在原版《最终幻想VIII》中,片头demo的SAR为640×480,游戏CG/场景画面的SAR为320×224,游戏菜单的SAR则为366×216。类似案例在Playstation游戏中较为普遍。
5、整数缩放(integer scaling)、非整数缩放(non-integer scaling)及过采样(oversample)
对于图片的缩放而言,整数倍的缩放(resize)永远比非整数倍的重采样(resample)要精确。例如将红橙黄绿各一个像素的2×2图片整数缩放至4×4,只需要简单复制每个颜色的像素三次即可,缩放后每个颜色的占比仍为25%,图像保真;但如果将这个图片非整数缩放至3×3,每个颜色平均为2.25个像素,即一定有三个颜色为2个像素,一个颜色为3个像素,每个颜色的占比为22%或33%,图像失真。在游戏中,常见于横板游戏非整数缩放后,背景移动时的闪烁或抖动(shimmering)现象。
然而通过数字信号的正方形像素还原模拟信号的长方形像素成像,如果对SAR采用整数倍缩放就自然使用了错误的PAR,此外对于同一游戏涉及多SAR的场景,这一努力就显得更不切实际,且违背开发者初衷。所以对于模拟信号转数字信号,需要对原始画面进行过采样,即将原始画面先放大至更高的分辨率,再缩小至目标分辨率,从而缩小构成画面的正方形像素点的相对大小,以降低采样的误差比例,提升画面还原度。
二、原始显示设备:游戏掌机屏幕
1、游戏掌机自诞生之初就采用LCD液晶屏幕技术,传输数字信号基于像素点成像,因此无需考虑上述CRT屏幕的特殊性。
2、在第七世代游戏掌机(Nintendo DS、PlayStation Portable)屏幕采用背光灯/自发光前,游戏掌机屏幕都依赖外部光源提供亮度。(虽然Game Boy Advance SP AGS-001为前光灯,Game Boy Advance SP AGS-101为背光灯,但只有极少数开发者在游戏内提供屏幕类型选项,GBA SP AGS-001的护航作品《最终幻想战略版Advance》为少数案例)掌机开发者会特意将游戏画面调整得较为艳丽以弥补屏幕亮度不够的问题,因此在背光灯/自发光显示设备上,需要基于外部光源的视觉效果对掌机游戏画面进行修正。
三、原始显示设备:最佳视距
1、游戏主机
除了前述原始显示设备本身的诸多特性外,回到最初80/81的例子,高分辨率、更大的尺寸及改变的观看距离也会充分影响最终的观感。根据 索尼的建议 (与SMPTE及THX的建议基本一致):UHD(2160p)电视的推荐视距为窄边的1.5倍,FHD(1080p)电视的推荐视距为窄边的3.0倍,SD(480p)电视的推荐视距为窄边的6.0倍。
结论:电视推荐视距=3240÷显示内容窄边分辨率×显示内容窄边长度。基于480p的泛用性(480p为带扫描线的240p,反交错后的480i),推荐视距=6.75×显示内容窄边长度。
2、游戏掌机
游戏掌机除了上述最佳视距算法外,也需要考虑视觉压力及手臂弯曲等要素, iPhone建议 :推荐视距为12英尺或30厘米,这个距离远于基于上述算法给出的20厘米建议。
结论:掌机推荐视距=30厘米。
四、第三方软件模拟的选择
基于前述对原始显示设备的介绍,不难发现由于开发者已经将显示设备的诸多“技术限制”纳入了游戏制作的考量中,这些限制就反而成了一种特性(features, not bugs)提供了信息载量,因此如果要还原体验就必须还原这些特性,高还原度的滤镜(shader)就成为了一个必要条件。
基于此,软件模拟提供的滤镜及画面缩放功能为首要条件,兼顾模拟的准确性及其他功能。开源的跨平台前端Retroarch除了提供很多独一份的滤镜外,大部分游戏主机最优秀的第三方软件模拟均已开发后端核心,保证了模拟的准确性(不少优于官方软件模拟)。而在统一的前端下,跨平台游玩,统一化热键等QoL的优势也同样明显。
(关于Retroarch的详细介绍请见官方网站「 retroarch 」、「 libretro 」)
五、Retroarch的下载安装及通用设置(以Windows环境为例)
0、下载并安装「 DirectX End-User Runtime 」。
1、Retroarch的下载安装
推荐于「 buildbot 」下载系统生成的最新稳定版。于「版本号/windows/x86_64/」目录下载「RetroArch.7z」(前端)及「RetroArch_cores.7z」(后端),解压至同一目录(默认一级目录为「RetroArch-Win64」)下后启动「retroarch.exe」。
2、Retroarch的通用及QoL设置
(1)进入「设置」---「驱动」, 将「视频」选项设置为「d3d11」,并退出 。 (在Windows环境下推荐使用「d3d11」,尤其在系统已开启HDR时不会发生画面重置,「vulkan」及「glcore」同样为可选视频选项,其余视频选项暂不推荐。) (2)重新启动「retroarch.exe」,按「F」切换至全屏模式。进入「设置」---「视频」---「输出」, 选择「设置显示器报告的刷新率」,对「垂直刷新率」的默认值「60Hz」进行校准。
(3) 仅限系统已开启G-Sync或 FreeSync的场合 ,进入「设置」---「视频」---「同步」, 将「精确同步游戏帧率(G-Sync, FreeSync)」设置为「开」。
(4)进入「设置」---「输入」---「快捷键」, 将「启用快捷键」设置为「手柄特定按键」(推荐「Select」,即「Select」 + 「」为具体快捷键功能),并对其他快捷键进行设置。
以Xbox手柄布局为例,推荐:
菜单开关「X」
退出「Start」
重置内容「B」
快进(保持)「R2」
慢放(保持)「L2」
回溯「A」
暂停「Y」
增大音量「上」
减小音量「下」
加载状态「R1」
保存状态「L1」
下一个保存状态栏位「右」
上一个保存状态栏位「左」
(5)进入「设置」---「限帧」---「回溯」, 将「启用回溯」设置为「开」,将「回溯缓冲区大小(MB)」设置为「目标值」。(推荐「1024」以获得最长的回溯时间)
(6)返回「设置」---「限帧」, 将「快进倍率」设置为「目标值」。(推荐「3.0x」以避免游戏快进失控)
(7) 推荐多设备同步云存档/设置的场合 ,进入「设置」---「文件夹」, 将具体选项逐一设置为「网盘目录」 。(以Onedrive为例,路径为「C:\Users\用户名\OneDrive\具体文件夹」)
六、Retroarch的游戏导入及核心选择
0、获取主机BIOS文件及游戏ROM/ISO文件
由于知识产权的问题,本文不提供任何主机BIOS文件及游戏ROM/ISO文件的获取方式,仅就文件列表及校验方式进行介绍。校验软件不限,可以使用 MD5 & SHA Checksum Utility 。
(1)BIOS列表及校验
各个核心所需的BIOS文件列表及校验值(如Playstation的「Beetle PSX」核心,需要的BIOS分别为日区的「scph5500.bin」、美区的「scph5501.bin」及欧区的「scph5502.bin」)及其路径(BIOS文件通常放置在「system」目录下),具体请参考「 libretro 」的文档。
(2)ROM/ISO校验
ROM类文件可于 DAT-o-MATIC 选择「游戏主机」---「prepare」---「download」获得「游戏主机.dat」文件,用记事本类软件打开即可搜索游戏ROM的明细,包括crc、md5及sha1三种校验值。 ISO类文件可于 redump.org 的「Discs」栏目下选择具体游戏主机查看校验值,也可以在「Downloads」栏目下下载dat文件采用ROM校验的方法。 1、模拟核心选择
在 Emulation Wiki 主页进入游戏主机的对应页面,在「Emulators」---「PC / x86」栏目下,找到「Recommended」栏目为绿色的模拟器,在「Version」栏目中查看指向「libretro」的链接,该链接名称即核心名称。(如Playstation的推荐核心为「SwanStation」及「Beetle」)
在 「libretro」 的「Core Library: Emulation」栏目下,找到核心的对应页面查看使用说明。
(推荐使用有说明的核心) 2、导入游戏列表
(1)进入「导入」---「手动扫描」, 选择「游戏文件夹」为「ROM/ISO路径」,选择「系统名称」为「主机平台」,选择「默认核心」为「选定核心」,选择「开始扫描」。
(2)进入左下角游戏列表,选择具体游戏, 可以进行「下载缩略图」等操作。
注:游戏列表中的游戏名(非文件名,可重命名)需与Retroarch收录的名称完全一致。可与dat文件校准,或前往 「libretro」 手动下载并放置于「Named_Boxarts」、「Named_Snaps」及「Named_Titles」文件夹,并修改图片文件名与列表游戏名一致。 (自定义缩略图也可以使用同样的方法。)
七、第七世代(Playstation 3、Xbox 360及Wii)前游戏主机的画面设置
基于前述CRT屏幕的特征,需要对画面及滤镜做以下安排:
1、不对游戏画面进行整数倍缩放
2、滤镜能够仿真荧光粉虚化效果
3、滤镜能够仿真扫描线的效果
4、滤镜能够对原始画面过采样
5、针对实际视距调整画幅尺寸
(1)运行任意主机游戏,按「F1」进入「快捷菜单」,按「Backspace」退回主界面,进入「设置」---「视频」---「缩放」
将「宽高比」设置为「自定义」
将「自定义宽高比高度」设置为「屏幕纵向分辨率×屏幕视距÷屏幕高度÷6.75」,并取最接近的三的倍数的偶数。(以2米视距观看65寸4K电视为例,自定义宽高比高度=2160×2÷0.81÷6.75=790.12,取792为最接近的三的倍数的偶数)
将「自定义宽高比宽度」设置为「自定义宽高比高度÷3×4」(继续上述案例,自定义宽高比宽度=792÷3×4=1056)
将「自定义宽高比X位置」设置为「(屏幕横向分辨率-自定义宽高比宽度)÷2」(继续上述案例,自定义宽高比X位置=(3840-1056)÷2=1392)
将「自定义宽高比Y位置」设置为「(屏幕纵向分辨率-自定义宽高比高度)÷2」(继续上述案例,自定义宽高比Y位置=(2160-792)÷2=684) (2)退回主界面,进入「菜单」---「快捷菜单」, 选择「独立配置」---「保存核心独立配置」(使该核心的缩放选项不影响其他核心)
(3)退回「快捷菜单」,选择「着色器」
将「视频着色器」设置为「开」
选择「加载」---「shaders_slang」---「presets」---「crt-geom-deluxe-ntsc-adaptive.slangp」
选择「着色器参数」,将「NTSC Resolution Scaling」设置为「2.00」
注1:虽然「crt-royale」滤镜在CRT效果(尤其体现在屏幕遮罩(mask))上比「crt-geom」更丰富,但由于 Retroarch目前支持过采样的CRT滤镜 为「crt-aperture」、「crt-easymode」及「crt-geom」,同时为了实现荧光粉的发色数效果,需要前置增加「ntsc-adaptive」滤镜进行模糊处理,满足这个条件的最佳预设选择为「crt-geom-deluxe-ntsc-adaptive」。
注2:「NTSC Resolution Scaling」的设置为用于补偿「ntsc-adaptive」滤镜的模糊处理对过采样的影响。
(4)返回「快捷菜单」---「着色器」, 选择「保存」---「保存核心预设」(使该核心的所有游戏都将适用这一滤镜配置) (5)对其他采用CRT显示设备的核心重复上述步骤。由于设置通用,也可以直接复制config文件内容。
(*)特别的,对于纵向显示的游戏(TATE),将「自定义宽高比高度」及「自定义宽高比宽度」的数值对调,并重新计算「自定义宽高比X位置」及「自定义宽高比Y位置」即可。
八、游戏掌机的画面设置
基于前述掌机屏幕的特征,需要对画面及滤镜做以下安排:
1、对游戏画面进行整数倍缩放
2、滤镜能够对仿真低屏幕亮度
3、针对实际视距调整画幅尺寸
(1)运行任意掌机游戏,按「F1」进入「快捷菜单」,按「Backspace」退回主界面,进入「设置」---「视频」---「缩放」
* 缩放倍数=屏幕视距÷掌机视距×屏幕PPI÷掌机屏幕PPI,就近取整。(以2米视距观看65寸4K电视,游戏掌机为GBA为例,缩放倍数=2÷0.30×67.78÷99.61=4.54,就近取整为5)
*PPI= (屏幕单向分辨率÷屏幕单向长度) ,官方长度单位为英尺。
将「宽高比」设置为「自定义」
将「自定义宽高比高度」设置为「掌机纵向分辨率×缩放倍数」(继续上述案例,自定义宽高比高度=160×5=800)
将「自定义宽高比宽度」设置为「掌机横向分辨率×缩放倍数」(继续上述案例,自定义宽高比宽度=240×5=1200)
将「自定义宽高比X位置」设置为「(屏幕横向分辨率-自定义宽高比宽度)÷2」(继续上述案例,自定义宽高比X位置=(3840-1200)÷2=1320)
将「自定义宽高比Y位置」设置为「(屏幕纵向分辨率-自定义宽高比告度)÷2」(继续上述案例,自定义宽高比Y位置=(2160-800)÷2=680)
(2)退回主界面,进入「菜单」---「快捷菜单」, 选择「独立配置」---「保存核心独立配置」(使该核心的缩放选项不影响其他核心)
(3)退回「快捷菜单」,选择「着色器」
将「视频着色器」设置为「开」
选择「加载」---「shaders_slang」---「presets」---「retro-v2+gba-color.slangp」 ,滤镜参数无需调整。(此处以GBA为例,实际基于GBA、GBC、NDS、PSP等不同掌机平台具体选择)
(4)返回「快捷菜单」---「着色器」, 选择「保存」---「保存核心预设」(使该核心的所有游戏都将适用这一滤镜配置)
(5)对其他掌机核心重复上述步骤。
九、结语
无论是“研究”、“追忆”或是“考古”,只有以越接近彼时的信息载量去体验和感受,才能在此时给出越中肯客观的评价。“美学”是一个内涵丰富的概念,对于个体而言,构成某刻独一无二游戏体验的信息载量,也许是田野的虫鸣,亦或是街巷的灯火。今日之神作,明日之经典。愿忠于开发者意图的游戏文化保留工作,能够使游戏社区的回忆相册历久弥新。
评论区
共 10 条评论热门最新