东恒机械网

nes格式小游戏一般只有百十k大小,而游戏的内容却不少,还有好多配乐,是怎么做到的?

  

nes格式小游戏一般只有百十k大小,而游戏的内容却不少,还有好多配乐,是怎么做到的?

  

nes格式小游戏一般只有百十k大小,而游戏的内容却不少,还有好多配乐,是怎么做到的?

  

nes格式小游戏一般只有百十k大小,而游戏的内容却不少,还有好多配乐,是怎么做到的?

  

nes格式小游戏一般只有百十k大小,而游戏的内容却不少,还有好多配乐,是怎么做到的?

  这个问题还是非常有难度的,FC游戏对容量的控制是非常精确的,通常一款游戏也就几十KB大小,游戏中的“图形”自然不是以“图片”的方式制作的。下面就来讲解一下原理,希望大家不会被绕晕。

  画面分割

  卡通块与图形字库

  调色板

  组成FC游戏中画面的最小单位是卡通块,FC游戏的画面是用一个个卡通块(cell)拼出来的。每个网格就是一个cell,每个cell为8X8的点阵,与一个字符同样大小。

  《超级马里奥兄弟》中,马里奥在吃红蘑菇之前为即由4个cell组成,当吃了红蘑菇之后身体长大一倍,变为由16个cell组成。

  一个问号图形也是由4个cell组合拼成的(砖也是),通常将4个cell组成一个元素成为block。

  cell有一个图形字库称为CHR,这个库的大小是16X16的,一次最多可定义256个cell,序号依次为0-255。游戏中的所有cell都是从CHR库中调用出来的,因此游戏中的所有画面的cell其实都是重复使用的,图片容量就被限定在这16X16=256的CHR之中。

  调色板是用来给卡通块上色的,FC一共可以用53种颜色,调色盘从这53种颜色里选取3种颜色,“透明”也算一种颜色(此时显示背景的底色),一共4种颜色。这4种颜色用来给方块上色。这就意味着每个方块只能有4种色彩。

  用《恶魔城》的背景举例,将其分割为32x30 = 960 个cell,2x2 = 4个cell组成一个block

  CHR没有颜色或位置,以图块的形式定义

  cell的定义操作极其简单,系统规定一个cell由连续的四个内存单元定义,第一个内存单元指定cell显示的Y坐标、第二个为cell在CHR字库中的序号、第三个为cell的显示状态(配色组合、左右翻转、上下颠倒以及显示于那个卡通页面),第四个为cell显示的X坐标。编程中可任意指定定义卡通的内存页面。

  调色板被分成几部分,但是通过在不同区域之间共享颜色可以巧妙地隐藏这一事实。大门中间的红色与周围的墙壁融为一体,黑色背景模糊了城堡和大门之间的界限。

  为了节约容量,很多FC游戏都会使用循环音乐。有一些游戏为了保证更好的音乐和音效,还会单独使用音乐音效增强元器件,在卡带的硬件层面做处理。

  2个方波(主旋律),1个三角波(低音),1个噪音波(高音),1个PCM(语音)

  FC红白机会将运动中的角色储存于显卡的特定内置储存区域,这样我们看到的角色会以一个整体的结构进行移动,就像上面提到的小马里奥是4个cell拼成的一个整体。角色的显示是覆盖背景的,无论背景如何设置,在角色覆盖到上层时会被设置成角色的颜色。

  FC之前的游戏,在滚屏操作时几乎要覆写整个画面,性价比非常低。FC内部PPU可以预先储存超过显示部分的内容,玩家在触发滚屏操作后,可以移动游戏镜头。

  FC显示画面与声音原理非常复杂,大家就简单了解一下吧,任天堂的黑科技太多了

  NES是美版的叫法,日版叫FC,也就是红白机,我们小时候玩的小霸王游戏机,游戏的大小一般在几十K到几百K,容量虽然小可内容却很丰富,丰富其实主要说的是玩法,实际内容的话,可能如今的游戏随便一副静止画面都比整个游戏大的多,原因如下几点。

  不管是任何游戏,一定是由几个方面组成的,一是画面,二是音乐,三是玩法,玩法是由编程代码实现的,都是文字,其实是整个游戏最不占用容量的地方,最占用容量的可能是画面,也可能是音乐,有的游戏会有各种过场动画,这种东西也很占容量,一般是加密过的影片格式,有的游戏音乐占用了一大半容量,我玩过一款游戏,一共800m左右,音乐就占了600m。

  红白机的游戏只有几十K,玩法首先还是挺丰富的,但是画面上就比较简单了,发色数有限,图形也简单,分辨率也低,这都是不占用容量的原因,复杂的画面红白机也处理不了,而音乐上,红白机的游戏音乐都用的是MIDI电子音乐,是各种电子乐器合成出来的声音,听起来虽然动听,可占用空间非常小,非常适合以前的游戏使用,实际上音色是比较虚的,后来的都用的类似MP3那种格式了,还原度非常的高,而玩法上,可能占用的空间是最少的了。

  游戏首先是用来玩的,再好看的游戏画面如果没有好玩的玩法支撑的话,那也不会是一部好的作品,老游戏为什么可以成为经典,就是赢在玩法和内容上面,你见过哪款游戏是因为画面成为经典的嘛?画面总会过时的,当年第一次看到最终幻想8时候的激动,你现在再去看看那个画面试试,更早的就更不用说,红白机的吞食天地,重装机兵,都是经典的游戏,可容量也只是几百K而已。

  nes是8位机FC的游戏格式,小的只有几十K超过512K的都算是大的了。比如忍者神龟3,星之卡比梦之泉,忍者猫,幽游白书,七龙珠超武斗传,忍者龙剑传2和3,特就指令,快杰洋枪,雪人兄弟。都是经典的红白机游戏。

  而大家现在最关心的是当年的游戏关卡这么多,还有音乐,视频,人物,但是有戏的大小怎么就几十K呢?现在的游戏动不动就个几个G。当年的游戏开发者是怎么做到,让游戏这么小的呢?

  其实最主要的原因是当年的存储技术条件比较有限,一个操作系统只能用两张1.4M的软盘来记录,于是大家都很珍惜存储资源。你看到的游戏画面,看似是一张图,但其实他都是用一个个像素点描绘出来的,并不是图片,而是一段段的文字,告诉处理器,什么位置的点是什么颜色。就这样用一个个像素点描绘了图画,在显示器上我们就看到各种各样马赛克一般的像素画。

  而音乐使用的是音节,一般也都用机器码来实现的,很少在游戏中加入真正的音频,即使有也是midi格式的文件,文件也很小,没有什么太多的音色。而且游戏中大部分的音乐都是循环性质的,可能5-6个音节就能支持整个游戏的BGM。

  一段用C语言控制发出声音的程序

  #include<windows.h>

  main()

  {

  Beep(494, 200);

  Beep(523, 300);

  Beep(578, 400);

  Beep(659, 500);

  Beep(698, 600);

  Beep(784, 700);

  Beep(880, 800);

  Beep(932, 900);

  Beep(1046, 1000);

  Beep(1175, 1100);

  Beep(1381, 1200);

  Beep(1480, 1300);

  Beep(1661, 1400);

  }

  现在大家大致知道了FC游戏的实现方法,我们知道整个游戏可能都是用文本写出来的了,而一本TXT格式的小说,上百万字也就几百K,中文字符占用的字节还比英文多,对半砍也就几十K了。

  所以当年能做出几十K的游戏就好理解了

  其实光论游戏的内容的话,内容其实并不占多少空间的,最简单的一个例子就是小说,你看看一些网络小说动不动就几十万的字,但是txt格式总共占空间也就那样,甚至还没你一张图片占空间大呢。

  所以你拿nes格式的小游戏和现代的普通游戏一比就知道了,其中现代游戏的画面清晰度还有各种功能,比如说联网交友功能、充值功能等,你就能明显发现,完全不是一个世界的产物呀!!!

  并且也受限于当时的机器设备性能,所以虽然当时的nes游戏比较小,但是内容多。

  其实最好的例子就是 生化危机2 PS1是双CD的大约1.3GB,而n64版本的只有不到64MB,而且由于n64的黑科技3D建模竟然比PS1更好,也没有多边形遮盖的bug;

  主要是:

  1、740MB的动画被压缩到极致

  2、游戏的主程序程序代码实际上才2.1MB

  3、支持高和弦的Midi

  4、MPEG1的音视频压缩技术的引入

  5、ROM的高性能读取能力,秒杀CD的速度

  两个方面:

  图像方面,像素低,色深位数低,数据量小。

  声音方面,是midi音乐,游戏文件内仅存储midi数据,播放时靠硬件转换为声音输出。

  所以数据量小。

未经允许不得转载:摇臂钻床_数控钻床_多轴钻床_台式钻床-东恒机械网 > nes格式小游戏一般只有百十k大小,而游戏的内容却不少,还有好多配乐,是怎么做到的?

评论

留言与评论(共有 0 条评论)
   
验证码: