下载APP

满屏的游戏性,满屏的情怀,浅谈FC的图像显示技术

真打
2018-05-12
> 满屏的游戏性,满屏的情怀,浅谈FC的图像显示技术

FC(Family Computer)诞生于1983年,90年代开始在中国大面积流行。想必FC(NES/红白机/小霸王)是各位80后、90后大叔的童年回忆。还记得那个火热的夏天,刚放学的我们,约上几个小伙伴,围坐在电视机前,双打魂斗罗的场景吗?FC上诞生了太多太多经典的游戏,《魂斗罗》《超级马里奥兄弟》《双截龙》《坦克大战》《雪人兄弟》......陪我们度过童年美好的时光。

大家一定很想知道FC是如何用孱弱的机能实现精美的游戏画面的吧。(好吧,大家其实并不想)。

在这里我就简单介绍一下FC的显示技术,顺便带大家找寻童年的记忆。绝不采用生涩难懂的专业术语,力求以最轻松的方式向大家科普,我的目标是,让我奶奶也看得懂。

(0)角色与背景

先考大家一个单选题。

一款游戏最重要的组成部分是():

A开箱与氪金

B欧皇与非酋

C奸商与冷饭

D外挂与土豪

答对有奖(才怪)。

聪明的观众肯定一下子就选出了正确答案。

没错,正如大家所选的,一款游戏最重要的组成部分就是角色与背景

人类历史上第一款家用主机 奥德赛(Odyssey)人类历史上第一款家用主机 奥德赛(Odyssey)

最新的游戏《战神4》最新的游戏《战神4》

两个游戏都是由背景和角色构成。

最老和最新,两者隔了46年,在这46年的岁月里游戏画面的基本组成元素从未改变过。

我们就以这两方面入手,说说FC游戏的画面技术吧。

文章分为4个章节。

1.背景

2.角色

3.水平切割

4.某些游戏运用的奇技淫巧

(1)背景

背景,顾名思义,就是游戏人物活动的场景。没有背景,只有黑漆漆的一片,这游戏还怎么玩?

FC的分辨率很低,只有区区256x224,什么概念呢,我们的“真4K”游戏机ps4 pro的分辨率是FC的145倍,换句话说,ps4 pro能装下145个FC画面。

有人说,低分辨率的点阵图也能表现出很好的效果啊。

没错,点阵组成的图片也能做的很精美。

比如说:

等会儿再开车等会儿再开车

很遗憾,FC不可能达到这种效果(如果能达到,各位小伙伴的童年该会是多么愉快啊),到底为什么,看完以下内容,大家就明白了。

FC的背景绘制存在极大的限制,毕竟是1983年的硬件,当年的程序猿和美工狮是在如此恶劣的环境中开发游戏。

这个场景大家肯定再熟悉不过(为了突出背景,去掉了人物)。玩过FC的人不可能没玩过这个游戏。没错,这个游戏就是大名鼎鼎的《魂斗罗》,又名《双截龙》,俗称《坦克大战》,诨名《沙罗曼蛇》......

大家猜猜,绘制这个背景使用了多大的内存?

这个截图以png格式保存,大小为2.43KB。然而,FC的显存只有2KB。所以,用现代的方法连一个最简单的场景都做不出来。

聪明的程序猿用一个很聪明的方法完成了这个“Mission: Impossible”。

大家仔细观察一下这个背景,有没有发现,地板和砖块都是用方块拼出来的?

对了,就是用方块(tile)拼!

加上网格就很直白了,FC游戏的背景就是用一个个方块拼出来的。

每个网格就是一个方块,方块是8x8像素,横着数32个方块,竖着数28个方块,总共32x28=896个方块。

这些方块都是大量地重复使用。

FC游戏里有个拼图库(个人翻译,专业术语叫CHR)。

如下图所示。

里面一个有16x16=256个方块。

大家仔细找找,这个场景里的所有方块都能在拼图库里找到。库里甚至还能找到一些奇奇怪怪的东西,那是之后的场景素材。

比如说这个问号,就是由4个方块组成。

库里每个方块都有自己的索引,简单说就是编号。

如果想用一个方块,直接从拼图库里按编号找就行了。

所以,FC游戏的画风其实是这样的

逼死密集恐惧症。

整个屏幕被分成32x28个方块,每个方块包含一个编号,根据编号找到拼图库里对应的拼图,然后显示出来。

大家注意到没有,屏幕一共有32x28个方块,拼图库一共有16x16个方块,所以,拼图库的方块必然有很多被重复使用的。比如说满屏幕的24号......拼图库里24号对应的就是蔚蓝的天空。

16x16/(32x28)=28%,整个背景只有28%的内容是不重复的,剩下的72%必须重复,这是逼死美工狮的节奏啊。

所以,FC游戏的过场动画大多都是很小的一块屏幕,比如

全屏?美工狮:“臣妾做不到啊!”

FC游戏已经把素材重复利用发挥到了极致。

大家有没有发现,这朵云和这颗树长得一模一样。

没错,云和树用了拼图库里同样的6个方块,只是换了颜色而已 。

它们是如何换颜色的呢?

用调色板(PALETTE)。

调色板,顾名思义,就是给方块上色的。

FC一共可以用53种颜色,调色盘从这53种颜色里选取3种颜色,“透明”也算一种颜色(此时显示背景的底色),一共4种颜色。

这4种颜色用来给方块上色。

这就意味着每个方块只能有4种色彩

绝对不可能有超过4种颜色的方块存在,请大家发动写轮眼找吧,找到第5种颜色,奖励游研社社长的初吻。

调色板可以有4个,每个方块就有4个配色方案。

4个调色板如图所示。

每一行就是一个调色板,数字表示该颜色的号码,0F代表透明色。

小伙伴们知道云和树分别用的是哪个调色板吗?

当年的程序猿就是用如此巧妙的方法绘制背景来节省内存的。

但是,这种背景绘制方法是美工狮的灾难。

大家有没有发现,这些平台的边缘有点不正常,有锯齿状的东西。

给图片加上网格。

大家明白了吧。

这些锯齿就是因为方块与方块之间的过度没处理好所造成的。

前文说过,每个方块只能有4种颜色,如果两个方块用的调色盘颜色差异比较大,处理不好就容易出现这种问题。

所以,背景的绘制很考验美工狮的水平。

美工狮:“总监,我实在肝不动了......”

也有很多天才的美工狮用如此苛刻的条件做出精密的作品。

比如这个场景,惊为天人,完全看不出方块的痕迹,也看不出太多重复的东西。堪称FC游戏美工的典范。

总监:“嗯,干的不错,晚上加鸡腿......麻呆,刚才那个背景也是你画的吧?”

其实这两张图出自同一个游戏,《忍者蛙》。

说了那么多,终于到了万众期待的开车时间。

大家终于知道为什么FC做不出开头那些galgame的效果了吧。

我带大家复习一下这章的内容。

1.FC画面是由方块组成,而且方块只能在拼图库里找。

2.构成背景所用的方块至少有72%的内容重复。

3.每个方块只能有4种颜色,且总共有4种配色方案。

那么,用FC到底能不能画出美女来呢?

答案是肯定的。

大家坐稳,老司机开车了。

拿走,不谢,请叫我雷锋。

(2)角色

现在我们已经有背景了,再加上角色,就可以愉快地游戏了。

很幸运,角色和背景一样,也是由方块构成,然后由调色盘上色。

为什么说幸运呢?因为我可以不用把同样的内容讲两遍了......

就用大家最熟悉的《双截龙2》做例子。

《双截龙2》的主角就是大家最喜爱的比♂利。

Oh不,应该是这个比利。

第一章里已经对方块进行过介绍了,在这里我就直接把网格画上。(为何裆部有一块迷之凸起?)

在这里,我们就不能把这个叫做方块了,我们要叫它“活动块”(sprite)。

活动块,顾名思义,就是“可以活动的方块”,背景的方块无法灵活活动,但是,活动块就没有这个限制,所以我们控制的角色可以上天入地,无所不能。

大家可以看出,比♂利一共由10块活动块拼成。游戏里,主角,敌人,子弹等一切活动的东西都是由活动块构成。

但是,活动块也不是无限使用的,不然为何真三国无双不出FC版(删除这句话)?

同一个画面最多能使用64个活动块。

而且,64块也不能随便乱用,因为FC是用“行”为单位逐行输出画面的,由于机能的限制,同一行最多只能输出8块活动块。

那么,万一同一行活动块超过这8块,会怎么样呢?FC会爆炸?

我们先来玩一个找茬的游戏。

大家来找茬

无奖竞猜,以上3张图有几处不同?

每张图的活动块都有不同程度地缺失。

想必大家已经知道答案了吧。

当同一行活动块的数量超过8个的时候怎么办?只要让超过部分消失就行了。

程序猿:“我是处女座,每行活动块数量绝对不能超过8个!”

但是,消失过狠了,这游戏就没法玩了,可以看出来,图上有2颗子弹,一颗红色,一颗绿色,但是3张图都没有把子弹显示全。也就是说,子弹隐身了。

“子弹隐身?玩毛啊!”摔手柄。

在消失活动块时有个优先级设置,优先级低的活动块消失。

程序猿在设计游戏时,通常让每个活动块的优先级轮流起来。这一帧你优先级低,你滚蛋,下一帧我优先级低,我消失,谁也不吃亏。

此时,在玩家眼里就表现出闪烁的现象。

子弹并没有消失,只是变闪了,还能愉快玩耍。

此时,有些观众肯定想拿这张图打我脸。

看这个BOSS,宽度明显已经超过8个活动块了,为何它没有闪烁?

这个问题问的太好了(观众:明明是你自己问的好不好)。

我偷偷告诉大家,其实这个BOSS不是敌人,而是背景。

惊不惊喜,意不意外?

用背景如何做出BOSS来?请看下一章。

(3)水平切割

上两章内容,已经介绍了FC画面的基本原理,这一章就是进阶内容。

水平切割(Raster Scroll)是背景处理的一个特殊技巧,能大幅提高游戏画面效果,广泛运用于FC后期的大作中,由于它比较重要,所以单独列出一章。

第一章讲了背景的组成,但是这种方法组成背景有局限性。背景只能有一张,缺乏层次感。

众所周知的一个道理,离我们近的东西走的快,离我们远的东西走的慢。当所有东西都绘制在同一张背景里时,就看不出快慢的区别了。

比如这张图:

当马里奥往前走时,所有的背景(山树云砖块)都是同步运动的,就像在一张巨大的墙纸前移动,没有层次感,这显然和实际生活体验不服。

玩家对画质的追求是无止境的。

但这显然难不倒我们聪明的程序猿。

前面提到过,FC是用“行”为单位逐行输出画面,那么,在输出完一行时,重写背景的坐标,就能造成背景行的错位现象,就能实现行与行之间的相对运动。层次感就这样处来了。

看这个图,是不是舒服多了呢?

近的东西走的快,远的东西走的慢。

水平切割不止能制造出层次感,还能制造出巨大的boss来。

回到第二章的结尾。

第一章说过,活动块有64个总数限制和同行8个限制。直接用活动块做BOSS就难免显得小家子气。

《忍者龙剑传3》的这个boss,和隼龙差不多大,没有boss应有的魄力。但是没办法,这是活动块所能达到的极限了。

怎么办?

中国有句古话,“活动块不够,背景来凑!”

聪明的程序猿想到了用背景充当boss的方法。

大家有没有发现一个有趣的现象,凡是打这些用背景做的巨大boss时候,背景画面都是纯色的(以纯黑色居多)。

就拿刚才的《超级魂斗罗》为例。

在打boss前,天上有云。

走过这个房子之后,云消失了,背景变成纯黑色。

打完boss之后,云又回来了。

让云消失,背景变成纯黑色,就是为了利用背景来绘制boss。

假如云没消失,boss战时云就会跟着boss一起动,那就露馅了。

(4)某些游戏运用的奇技淫巧

看完了前三章内容,相信大家对FC打画面技术有一定的了解,下面我们就进行实战吧,对一些有特殊效果的画面进行分析,运用之前学的知识,看看这些特殊效果到底是如何实现的。

FC游戏,堪称奇技淫巧的大合集,程序猿和美工狮们大显神通,运用这孱弱的机能实现了很多不可思议的效果。玩FC游戏的其中一个乐趣就是,看到一个不错的画面,思考它的实现原理。我将举一些例子,在我公布答案之前,大家可以思考一下,看看聪明的你能不能猜到答案。

1.震惊!一个方块居然出现了第五种颜色

第一章曾经说过,调色盘只能用4种颜色,所以一个方块最多只能有4种颜色。

但是,请大家看这张图。

请看箭头指出的那个位置,组成龙嘴的那个方块。

大家发现了什么没有?

把方块单独拿出来,放大看看。

数数有几种颜色。

黑白浅绿深绿红!

一共5种颜色!

我之前说过,一个方块绝对找不出第5种颜色,如果找出来,奖励什么来着?

看来社长的初吻不保了。

但是这到底是怎么实现的,莫非是用了特殊芯片不成?

我就公布答案吧。

刚才说了,中国有句古话,“活动块不够,背景来凑!”

其实美国也有句俚语,“背景不够,活动块来凑!”

没错,这第5种颜色就是用活动块凑出来的。

这是去掉活动块之后的样子。只剩4种颜色。

一口洁白的牙就这么没了。

一个方块+一个活动块,里最多能显示7种颜色。为何不是4+4=8种?留给聪明的观众自己思考。

FC游戏里,活动块和背景难舍难分,背景可以做boss弥补活动块的数量限制,活动块也能做一部分背景弥补背景不够灵活的缺点。一些boss就是背景和活动块共同组成。

比如《魂斗罗》中的这个boss,身体是背景,灵巧的双手是活动块。

活动块:“我和背景君通力合作,不信阻止不了你!”

2.两根粗又硬打架,究竟是为何?

《鸟人战队》的关底boss战,机器人和boss对打。

两者的体型都比较大,那么,他们到底是活动块构成还是背景构成?

如果是活动块构成,同行的活动块数量肯定超过8个了,但是却没有出现活动块消失现象。

如果是背景构成,它们就无法相对运动。

给大家一分钟思考时间。

其实答案很简单,只要把对方打败就能看出来。

把对方打败之后,出现爆炸效果。

眼尖的朋友一下子看出来了,对方没有活动块消失,而我方却出现了活动块消失现象。游玩时候很明显感受到,此时我方在闪烁,对方没有闪烁。

这是因为爆炸效果是活动块构成的,同一行的活动块增加到超过8个,势必会产生闪烁现象。

我方闪烁,对方没闪烁。这意味着什么?我方是活动块,对方是背景。

活动块大战背景!大家猜对了吗?

原本还准备了2个奇技淫巧的例子,但由于篇幅的关系,就不展示了。

感谢大家观看。

在这里,我只想说一句话——奶奶,我对不起你,没让你看懂。


展开全文

扫码关注

游研社公众号

小程序

游研社精选

13
快速评论
热门评论
全部评论
评论时间
查看全部评论
  • 首页
  • 下一页
  • 页 / 共
作者:真打
这个人很懒,什么都没留下
相关阅读
App内打开