世嘉土星,是笔者喜爱程度仅次于MEGADRIVE的家用主机。小时候第一次在亲戚家看到这台游戏机时受到了巨大的冲击。当时的土星拥有许多独特的版本优势,譬如土星版的「恶魔城X月下幻想曲」拥有三位主人公,贝尔蒙特、阿尔卡多、玛利亚,相较之下PS版只有贝尔蒙特和阿尔卡多两位角色可以操作。土星版也拥有包括「底下庭院」「被诅咒的牢狱」等更多的关卡。
世嘉土星发售于1994年,掐指一算已经是23年前,当时的技术放到现在早已经过时。它与现在的硬件比,可以说非常贫弱。但是,世嘉土星是一个时代的究极形态,而能挑战这一究极形态的游戏机至今也没有出现。关于土星,可以写的,要写的东西太多。我可能会分成几次来写。而这次主要针对硬件层面,尤其是图像技术来阐述。
世嘉土星除了本家产品外还包括了日立生产的HiSaturn、Victor生产的VSaturn,下文中将统一称作土星。这几台机器并没有什么太大的差别。
在上面提到过,土星是一个「究极形态」,准确的说是「2D游戏机的究极形态」。作为MEGADRIVE的后续机种,土星必须拥有超出MEGADRIVE的性能,而「能挑战这一究极形态的游戏机至今也没有出现」则是因为现在的游戏机是以3D游戏或者3D运算处理为前提而制作的,PS带起了3D风潮之后这一情况延续到了现在。
将3D游戏拍扁的话很容易就能变成2D,以3D游戏为前提的游戏机也能轻而易举地制作2D游戏,所以3D为前提制造游戏机这件事情本身是没有任何问题的。但是从80年代传承下来的「背景图层」已经不复存在。没有背景图层,视差滚动、多重滚动等在红白机的年代里让无数玩家兴奋的技术也消失了。
在3D技术下这些滚动效果只要用多边形或者贴图描绘好,让他们运动就可以了。虽然在玩家的眼里他们没有差别,但是这并不是真正的「滚动功能」。对于程序猿来说,可以花时间通过编程去再现当年的滚动效果——但是又有谁会去花这些时间呢?
当然,这不是在说程序猿懒,而是因为花时间通过编程去再现也就意味着需要让CPU去运行更多的代码,也要消耗更多的存储器空间。这样一来,游戏程序本身就会缺少增改空间,程序一旦变得复杂,BUG的产生与DEBUG也会变得更加棘手。如此一来,最后损失的将会是游戏性本身,得不偿失。
土星是最后一台继承了这一传统技术的游戏机。滚动背景画面、包括精灵图在内的多图层迭加等技术在此落下帷幕。此后的游戏机,基本设计思路已完全改变,所以能在这一传统技术上超越土星的游戏机是不存在的,而将来或许也不会出现。
提到「重叠」首先要说到的就是精灵图。土星的精灵图可以与其他的精灵图或背景图层重叠,半透明的部分里可以看到下面的图层。红白机的背景图层也可以使用半透明功能,可以在背景图层的下方放置精灵图。
80年代的精灵图使用「扫描线缓存」,一次处理一行扫描线来完成这一功能。土星则是一帧一帧地对精灵图进行处理(一秒60帧中的1帧)运用了帧缓存。精灵图的帧其实是作为特殊的背景图层进行处理。也就是说4枚背景图层加上精灵图的图层,共可重叠5枚图层。
后面也会说到,土星的硬件设计上可以重叠6枚图层,多出的那1枚作为日后的扩展预备,但是直到土星时代的结束,也没有哪个游戏用到这第6枚图层。
精灵图所使用的帧缓存与其他的背景图层不同,较为特殊。精灵图图层的帧可以以一个像素点为单位设定图层重叠时的优先度及透明度。土星不仅可以设置背景图层重叠时的顺序,还可以指定背景图层的透明度。有了这一特殊的功能,就可以让只有一枚的精灵图图层穿插在任意背景图层之间。
上图是图层重叠的大概示意图(其实忘了画可以放大缩小旋转的特殊背景图层RBG0和RBG1)。精灵图图层虽然只有一枚,但是可以对单位像素点进行优先度设置,这样即使只有一枚也可以做出看上去似乎就像是被其他的图层夹在中间的效果。像是恶魔城,树木和外面的城墙在NBG2的下方,人物和怪还有信息条则在NBG2图层的上方。
80年代使用的「扫描线缓存」,精灵图会根据「显示优先度」依次从上到下显示。横向排列多枚精灵图时就会来不及处理,出现闪烁的现象,这时优先度最低的精灵图会消失。
而「帧缓存」在进行描绘时是不断的进行覆盖。最初描绘的东西会被后来描绘的东西所覆盖。因此显示优先度最高的图层或精灵图会最后在最后被描绘出来。一旦来不及处理,最后被描绘的画面就会消失。
换句话来说,显示优先度越高,越容易消失。作为对策,就是在编程的时候控制好画面处理的时间。但归根结底,虽然精灵图可以穿插在不同的背景图层之间,精灵图图层只有一枚。如果误以为精灵图图层有很多枚,画面就会变得奇怪。
举个例子,在背景的前面和后面分别放置部分重叠的精灵图。假设精灵图将会从背景下方的精灵图开始描绘。如果精灵图有数枚,那么只要正确设定「背景的上方」「背景的下方」,图层应该就会被正确重叠。
事实却不是这样的。描绘在背景下方的精灵图覆盖了描绘在背景上方的精灵图,背景上方的精灵图消失不见。而且背景下方的精灵图因为被设定在背景下方,和背景图形重合的部分也会消失。背景上方的精灵图就会像是被打了一个洞。
只要规定不管中间有没有背景图层,精灵图都从下方开始描绘的话,也不会出现什么大问题(还可以利用精灵图可以打动的原理来做一些特别的画面表现)。精灵图的重叠问题先放在一边,土星的半透明功能也存在类似的问题。
关于半透明功能之后会再详细解释,首先要说的是这个半透明功能也可以运用在精灵图上。在精灵图上使用这个功能是可以分别设定「对其他的精灵图半透明」与「对背景半透明」。听着挺好,但其实就是灾难。
假设我们要绘制一个半透明的精灵图,于是我们设定成「对其他的精灵图半透明」与「对背景半透明」。这时,半透明的精灵图下方出现了一个不透明的精灵图。见证奇迹了,不透明的精灵图就直接消失,透过半透明直接看到的就是背景。
这个不是Bug,是规格的限制。因为精灵图图层只有一枚,在精灵图图层绘制完之后,在此之上描绘别的图层,所以产生了这种情况。
顺带想象一下只设定一种半透明的情况吧。假设只设定「对其他的精灵图半透明」,那透明就仅在于其他精灵图重叠时有效,不重叠的时候就时候就不会透明。如果只设定「对背景半透明」的话,和其他精灵图重合时,就会像刚才说的那样,本来不应该出现的背景。
既然硬件规格已是如此,让画面正常显示的责任就交到了程序猿手上。半透明功能因规格限制而难以使用。而且使用了这一功能之后,处理精灵图所需要的时间会更多。精灵图之间设定半透明时,需要从已经被描画的位图中取出需要处理的像素,进行半透明的运算处理,然后再次写入。
土星使用的显存,是当时相当昂贵的SDRAM(同步动态随机存取内存),但是对RAM的访问本来就没有那么快。不仅需要写入,还要读取,那么就要话相当的时间去进行,业界共识就是处理半透明会需要成倍的时间,在绘制多边形时使用半透明功能更可能造成致命的BUG。
所以土星虽然有半透明功能,但几乎没怎么被使用。虽然也有少数运用得当的游戏,但是好好的机能就被荒废了。
扫描线缓存一直延续到了MEGADRIVE,一条扫描线的时间(一分钟60帧,一帧224线,也就是13440分之1秒,已经是微秒单位了)太短所以无法进行太复杂的处理,如果是帧缓存的话就有足够充裕的时间来进行复杂的处理。
土星的精灵图可以给图形定四个顶点。旋转四个顶点就可以展现旋转精灵图的效果。甚至可以将精灵图变形,绘制多边形。顶点也可以不是4个,像传统的扫描线缓存那样设置坐标系的方法依旧可用。只设置坐标系虽然无法进行旋转,但是可以进行上下和左右的翻转。指定坐标时,坐标的位置是用来指定精灵图的位置。是左上,还是右下。可以从9个点钟进行选择。
如果要描绘一个站立式人物的图像,只要将底边中央设为原点,无论图像多大都可以简单地描绘出来。如果是飞行射击游戏的话,就将原点设置在中央。设定位置本身只需要进行简单的加法和减法的运算。在制作游戏时设定原点并不是必要功能。设定原点的功能在进行图像的扩大缩小时就会发挥真正的作用。
世嘉土星可以对精灵图进行扩大缩小处理,设置原点后,原点在扩大缩小时可以保持精灵图的位置不变。而在土星之前的游戏机,原点都是固定在左上角。这个功能很小,很不起眼,但是就是这些不起眼的小功能集结在一起,就会让游戏制作变得更加方便。这也是将土星称之为「2D游戏机的究极形态」的原因了。
不仅是设定原点这个功能,土星还具备了以下这些功能。
精灵图之间的半透明以及与背景图层间的半透明运算功能,就像上面阐述过的一样问题重重,实际运用较少。(笔者能短时间内想到的就只有Guardian Heroes)半透明功能在运用上还有其他的限制,比如变形精灵图绘制的原理上导致半透明功能无法运用在变形精灵图和其他精灵图叠加的状态。
变形精灵图的绘制方法要解释起来会非常麻烦,有兴趣的人可以去低下翻阅英文的开发技术文档和日文的Saturn Q&A。
打个比喻,就像是拿个刷子去刷一面墙,要横着刷一条横线是很简单的,但是无法一次性刷完一面墙。涂完一行之后应该要接着涂下一行。但涂下一行的时候,难免会涂到上一行已经涂过的位置。如果不这样做涂色,那么涂色的区域内就可能出现缝隙。
土星的变形精灵图也是如此。在进行一次绘制之后,土星有时候会对精灵图进行再次绘制,以确保绘制区域不出现缝隙。而在变形精灵图上使用半透明时,就会出现问题。在重复描绘的过程中,第二次描绘的变形精灵图将会被识别为其他的精灵图,触发半透明处理。于是,半透明效果就会出现不均。本来是为了让效果更好而进行的重复绘制,结果却造成了处理问题。
这里就有一个PS和土星最大的差别。PS在处理精灵图时,是将其栅格化,但土星则是将精灵图进行映射处理。
栅格化(rasterise)是根据显示对象的像素点来对照材质(texture)所在的位置读出并显示;映射(mapping)则是将材质(texture)取出,将其直接写入显示对象。刚才也有阐述过,2D游戏在设置半透明时,分别有「对其他的精灵图半透明」与「对背景半透明」两个选项,这两个选项的存在让半透明功能难以使用。而3D时,精灵图的半透明绘制算法,同样也让半透明功能无法使用。半透明功能岂不是全灭了?
但作为最后的救赎手段就是「仿真半透明」,网格化描绘。首先判断坐标X+Y的值为奇或偶,然后选择和为奇或偶的坐标去描绘。但是同为奇或偶的仿真半透明化精灵图重叠时,下方的精灵图就会被覆盖,失去透明感。而奇偶不同的仿真半透明化精灵图重叠时,上方的网格与下方的网格会刚好错开,上方网格的孔会被下方网格的网所填充,失去透明感。
仿真半透明终究只是仿真,并不是真的半透明,但确是最够用的机能。三种半透明功能,各有长短。但说到底如果能有完美的半透明功能,就最为理想。只是因为制造成本及电路板规模的问题,就只能提供这三个各有长短的功能,让程序员来想办法解决。
游戏机说到底是作为一种「玩具」被创造出来的。因为是玩具,就会受到成本等各种约束,这样一种情况下还能以2D游戏机为出发点却尽可能兼顾了3D功能,还搭载三种透明功能,他们已经尽力了。
这篇文章已经说了太多次关于半透明的问题。而大部分人在拿PS与图形比较时也总会提起半透明的问题。所以在这里再说明一下土星的半透明问题。
大部分人都会说,PS的半透明很漂亮,土星的半透明很糟糕。这是因为处理方式的区别而产生的。土星在处理半透明时,使用的是取颜色的平均值这样一个处理。加权平均计算,也就是说调节透明度也是可行的。通常处理透明度就会做这样的一个运算。PS的半透明处理不仅进行平均值计算,还会进行其他的一些运算。但我本身对PS兴趣不大,所以并没有特意去了解。
平均计算以外,比较有代表性的应该就是模拟光学式的运算了。很多人可能都发现过,将三原色的光叠加在一起的时候,会呈现白色,但是将三原色的颜料混合在一起之后则会变成灰色。
PS在处理透明时,会通过演算模拟光重叠时的效果。实际的演算方法现在在晚上应该可以查到。有兴趣的人可以自己探索一下。模拟光学的演算方式同时也在Adobe的Photoshop(请不要和PS搞混了,本文中所有的PS都指索尼的PlayStation)中被运用。经过PS的演算之后,重叠的区域会变得更亮。
但土星的半透明仅仅是进行了平均值计算,所以亮的颜色在经过透明处理之后一定会变暗。所以无法通过这个半透明来表现光的质感。虽然和半透明功能无关,土星可以通过之前提到过的Gouraud着色法可以来满足这一要求。
我记得曾经有一个大拿说过,世嘉土星就像是油画颜料,而PS则是像丙烯颜料。油画颜料有厚重感,丙烯颜料有透明感。这只是一个性质,并没有优劣之分。
精灵图的显示极限和张数无关,主要是由像素数来决定。土星的精灵图可以放大缩小,当然,大的精灵图与小的精灵图所需要的绘制时间不一样。不分精灵图的大小,纯粹按枚数来计算的话,不科学。世嘉官方公开的数据表示,土星可显示的精灵图数是「无限大」。我作为世嘉的铁粉都无法相信,一般人可能更不会相信了。
参阅一些过去的资料(下面贴的Saturn Q&A等)后,我们可以知道,因为总线带宽只有16bit,因此,每个处理周期(CPU主频是28.7Mhz也就是每秒28.7兆个处理周期)只能传输一个像素点的数据,那么每秒就是2548像素,每帧可传输像素点42万。
而关于多边形绘制,官方宣称是每秒30万个多边形(含材质)。这个数据也是疑点重重。如果将30万个多边形换算成设定四个端点并显示的8x8材质。那就是1920万像素。中间的差值应该就是变形演算的时候所消耗的CPU算力了。
假设如刚才求得的理论值所说,每秒2548像素。游戏中经常会使用的16x16精灵图。经过计算我们可以得出,一帧(1/60秒)最多可以显示1500枚精灵图。
在此之外,还要将精灵图与4枚背景图层重叠。当时的对手PS在同等情况下能描绘的精灵图则为1000枚左右。同样是在2D游戏的情况下,和土星不同PS的背景图层也是作为精灵图来处理。假设要重叠两个画面,那光背景就要消耗500枚精灵图。那么实际能用在精灵图上的不过500枚。
这样一来,在制作2D游戏的时候,土星能够动用1500枚精灵图,但PS就只能动用500枚,PS就是土星的1/3。从这里也能看出,土星更重视2D游戏的表现。我称「2D游戏机的究极形态」的原因,大家应该可以有所理解了吧。
精灵图也说的差不多了,来说说背景图层。上文提到过,土星能够将包括精灵图在内的五枚图层重叠。
现在我们可以看到,这张图上共有6个图层。在最下方的「渐变层」只能以扫描线为单位设定颜色。没有其他图像输出会放置这样一个图层,相当于红白机的「背景色」图层。它无法设定显示图片,也无法设定重叠时摆放的位置,所以和其他背景图层不同。
4个背景图层,有两个图层是上下左右滚动的普通图层,称它为「基本背景层」。有一面拥有「扩大缩小功能」的背景层,称它为「可放大缩小背景层」。还有一层是拥有包括「放大缩小功能」等「变形」功能的图层,称它为「旋转背景层」。
这四个图层在重叠时可以自由改变放置顺序。上面的图里面可放大缩小背景层被放在了最下面,实际上放在最上面也是可以的。并且,背景图层之间可以设定半透明。给优先度高的层设定半透明之后就可以看到下面的层。
精灵图就像上面已经写到的一样,它是一个特殊的图层。它可以以像素点为单位设定摆放的顺序。当将那个像素点的优先顺序设定在其他背景层之间的时候,看上去就会像是其他的背景层夹在中间。
可旋转背景层是在将显存的数据输出时改变读取显存的时机。刚才提到的变形功能则是利用了这一原理,但通常被称作可旋转背景层。实际上除了旋转,这个背景层还拥有许多功能。
电视(这里指显像管电视)的画面是由扫描线来绘制的。扫描线水平进行扫描,从左往右。这是电视的构造原理,扫描线的运动方向无法改变。画面信息的显存(VRAM)从最初的地址依次读取,输出到电视上就会显示出画面。这时,将读取的顺序,读取的地址改变,也就是倾斜地读取显存。那么读取的画面就是会是倾斜的画面。将这个画面交给扫描线,那么倾斜的画面就会出现在电视上。
土星可以对读取显存做设置。不仅可以让画面旋转,还可以以扫描线为单位进行设置。不仅能设定倾斜,还可以设定读取显存的速度。当加快读取的速度时,得到的图像就会缩小;当减慢读取速度时,得到的图像就会放大。还能以扫描线为单位设定读取的位置。不设定读取的倾斜的话,就相当于视差滚轴。
这个「以扫描线为单位进行设置」是通过准备与扫描线行数相同的table(在内存里划分出来的一行空间,也叫row。纵向一列叫column)。旋转不过是其中的一个应用例。可以实现视差滚轴。可以根据层的不同,设定不同的放大率,还可以双轴旋转。还可以制作怪异的变形动画。但是生成table的运算很复杂。为了更方便的完成这个过程,后来出现了3D游戏制作用的库。那个库里包括了自动生成table进行「放大缩小且双轴旋转」处理的函数。
能够「放大缩小且双轴旋转」这样独特的画面效果,可以说是一个有技术水平的厂家才可以耍的任性。
从320x224到704x512,土星拥有多个解析度可供选择。
当然,解析度越高,需要用到的存储器就更多。上面写到可以将四个背景图层重叠,在解析度变大的情况下,可以重叠的图层枚数也会减少。
精灵图在任何解析度下都能使用,但是高解析度下,精灵图所能使用的数据长度会减半。低解析度模式下,一个像素点的长度是2字节,高解析度模式下,一个像素点的长度就只有1字节。所以高解析度模式下能显示的颜色数量也会减少,所以Gouraud着色法无法使用,无法表现阴影。那2字节的数据里还包含了与其他图层之间的优先顺序及半透明设置的信息。所以当2字节被砍成1字节之后,那些功能也会无法使用。所以在高解析度模式下的制约是非常多的。
造成这些的一个是存储器容量的问题,但也不仅限于此。高解析度模式下,横向解析度会成为两倍,那么显示一个像素点所需要的时间会减半。那么读取一个像素点数据的时间也会只有原来的一半。在如此短的时间里,读取1字节的数据就是极限。
土星的画面模式非常多,还有1600万色的模式,就是一个像素点需要4bit的数据。土星能够将四枚图层重叠,当然,在1600万色模式下,存储器无法容纳4幅画面。不仅是存储器容量,访问显存的速度也是问题。
为什么总是提到访问速度的问题,那是因为在为土星编程时,访问显存的速度是一个非常重要的问题。从头开始详细分析这个问题的话,这篇文章的长度可能就要超过一片大学生毕业论文的长度。所以,我就先假设这篇文章的读者都已大概理解了我的上一篇文章说说80年代游戏的图像技术。 在显示文字时,可以在每8个像素点中放入一个字符。这8个像素点的字符用1个字节来表示。也就是说在扫描线走过8个像素点的时间里必须完成这么一些操作:
这样一来,在扫描线走过8个像素点的时间里就需要访问两次存储器。当然土星的PCG能使用256个以上的图形元件。字符码也不止1字节。文字图形也不是黑白,横向8个像素点的数据长度也不止1字节。
土星的总线带宽16bit,一次最大能访问2字节。显存所使用SDRAM,特性上在访问连续的地址时速度较快,所以通常会一起访问连续的地址。因此「访问两次存储器」读取8个像素点的数据这样一个思路在土星上依旧适用。
土星可以将4枚图层重叠,也就是说,将刚才所说的访问存储器的操作需要重复4次,也就是访问8次存储器。土星即使在低解析度模式下,横向也有320像素,比起红白机(横向256像素)显示「每8个像素点」的时间更短。相较红白机的年代,访问存储器的速度已经大大得到提升。只要基本背景图层不做什么复杂的处理,也不会有什么问题。
但是,各位是否还记得我刚才说的「可旋转背景层」和「可放大缩小背景层」。是的,他们两个就是「复杂的处理」。扩大的话倒还好,如果进行缩小处理,访问存储器的次数就会增加。假设要缩小到原来的一半大小,那么原来的8像素点的数据就会抽取成4个像素点输出。访问存储器的次数就会加倍。
旋转处理就更麻烦。即使读取了横向8个像素点的数据,其中能用的也只有1个像素点。每输出一个像素点就要访问两次内存。等等等等。再有就自己查阅技术文档吧。
结论就是,想要更多的运用画面处理功能,就会需要更加频繁地访问显存。显示「8个像素点」的时间非常的短,所以能够进行的处理十分有限。制作游戏的程序员就必须得把访问显存的时间时常放在脑子里。
总之想要告诉各位的就是,土星在使用各种功能的时候有种种限制。土星搭载的很多功能都是无法在有限的时间下完成处理,非常难以实现的东西。就是这样一个情况下,当时的程序员们各显神通,让运用了各种功能的画面展现在了玩家的眼前。
说白了,土星和DC一样,都是技术过于超前的游戏机,正因此,才产生了无法同时使用各种功能的问题。
最近为了写文章,翻了以前的杂志,看到了这样一篇采访,内容大概是「VR战士2」发售时,对开发人员的采访。开发人员对记者说「还没有完全发挥土星的性能」。很多人也讨论过,究竟有没有哪个游戏将土星的性能发挥到极致。这几乎已经成了一个迷思。
「VR战士2」已经使用了最高解析度的704x480,FPS60。这已经是相当疯狂的事情。毕竟高解析度相较低解析度无论是纵向还是横向,像素数都是低解析度的2倍以上。即使靠隔行扫描来解决纵向的问题,但横向上不想办法填满两倍的面积,就无法出现高解析度的感觉。毫无疑问,需要进行的运算处理是增加了许多。
低解析度模式下,1个像素点可以使用2字节存储器,可以展现更多的显色。但高解析度模式下,1个像素点只有1字节。加上精灵图,也只能显示256色。3D游戏如果没有阴影,画面会显得单薄。
「VR战士2」选择了这样一个充满限制的模式,却用技术展现了如此精美的画面,成了当时土星上最热门的游戏。选择了这样一个充满限制的模式,土星的很多功能就无法使用。可以想象开发人员在做游戏的时候不禁说出“哎,这个功能用不了”的样子。那句「还没有完全发挥土星的性能」或许是对于无法使用想用的功能而发出的叹息吧。
回到刚才那个话题「究竟有没有哪个游戏将土星的性能发挥到极致」,答案应该是不存在的。当年的开发人员在结构复杂难懂,性能又不高的主机平台上,绞尽脑汁来突破技术难关,在各种功能间妥协取舍,费劲心血才能完成一个游戏。
这就是那个年代的浪漫。也是我无法离开那个年代的原因。
关于土星下次应该会写写3D。相较前几篇文章,这次需要翻阅的资料和需要制作的图片都多太多了。下一篇文章应该也会需要相当多的时间去收集资料和整理。
我非常不希望看到有人在评论区里继续讨论PS和土星到底孰强孰弱。这个问题没有意义。现在在淘宝上买一台土星再加一台PS都花不了多少钱,难道还要纠结哪个更好?虽然我是世嘉的铁杆,但我同时拥有SONY出的,包括MSX在内的所有游戏机。倒不如说,我家除了微软的Xbox系列,其他叫的上名字的,拥有40款以上游戏的游戏机我基本都有。游戏软件对我来说才是玩游戏的过程中最重要的部分,硬件其次。出门买个好奇想玩的游戏,回家就一定有相应的主机平台可以玩才是我推崇的状态。
最后,我也在B站上传了从niconico上搬运来的土星图层堆叠解析视频,可以去看看。
本来应该是内部保密,但不知什么时候外流的世嘉土星开发技术文档(英文)
世嘉的CPU 日立研制的SH2处理器的技术文档(日文)
题外话,日立制作所半导体部门在后来与三菱电机合资成立半导体公司Renesas,而这个Renesas又与日本电气的半导体部门合并。最后被美国的Intersil所收购,成为Intersil的全资子公司。日立制作所在后来依旧拥有半导体部门。贵圈真乱。
评论区
共 55 条评论热门最新