03.06 nes格式小遊戲一般只有百十k大小,而遊戲的內容卻不少,還有好多配樂,是怎麼做到的?

JianV7777


這個問題還是非常有難度的,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顯示畫面與聲音原理非常複雜,大家就簡單瞭解一下吧,任天堂的黑科技太多了


AGamer


NES是美版的叫法,日版叫FC,也就是紅白機,我們小時候玩的小霸王遊戲機,遊戲的大小一般在幾十K到幾百K,容量雖然小可內容卻很豐富,豐富其實主要說的是玩法,實際內容的話,可能如今的遊戲隨便一副靜止畫面都比整個遊戲大的多,原因如下幾點。

一款遊戲的組成

不管是任何遊戲,一定是由幾個方面組成的,一是畫面,二是音樂,三是玩法,玩法是由編程代碼實現的,都是文字,其實是整個遊戲最不佔用容量的地方,最佔用容量的可能是畫面,也可能是音樂,有的遊戲會有各種過場動畫,這種東西也很佔容量,一般是加密過的影片格式,有的遊戲音樂佔用了一大半容量,我玩過一款遊戲,一共800m左右,音樂就佔了600m。

NES遊戲容量小的原因

紅白機的遊戲只有幾十K,玩法首先還是挺豐富的,但是畫面上就比較簡單了,髮色數有限,圖形也簡單,分辨率也低,這都是不佔用容量的原因,複雜的畫面紅白機也處理不了,而音樂上,紅白機的遊戲音樂都用的是MIDI電子音樂,是各種電子樂器合成出來的聲音,聽起來雖然動聽,可佔用空間非常小,非常適合以前的遊戲使用,實際上音色是比較虛的,後來的都用的類似MP3那種格式了,還原度非常的高,而玩法上,可能佔用的空間是最少的了。

如今的遊戲就比以前的遊戲好玩嗎?

遊戲首先是用來玩的,再好看的遊戲畫面如果沒有好玩的玩法支撐的話,那也不會是一部好的作品,老遊戲為什麼可以成為經典,就是贏在玩法和內容上面,你見過哪款遊戲是因為畫面成為經典的嘛?畫面總會過時的,當年第一次看到最終幻想8時候的激動,你現在再去看看那個畫面試試,更早的就更不用說,紅白機的吞食天地,重裝機兵,都是經典的遊戲,可容量也只是幾百K而已。


8090遊戲迷


nes是8位機FC的遊戲格式,小的只有幾十K超過512K的都算是大的了。比如忍者神龜3,星之卡比夢之泉,忍者貓,幽遊白書,七龍珠超武鬥傳,忍者龍劍傳2和3,特就指令,快傑洋槍,雪人兄弟。都是經典的紅白機遊戲。

而大家現在最關心的是當年的遊戲關卡這麼多,還有音樂,視頻,人物,但是有戲的大小怎麼就幾十K呢?現在的遊戲動不動就個幾個G。當年的遊戲開發者是怎麼做到,讓遊戲這麼小的呢?

其實最主要的原因是當年的存儲技術條件比較有限,一個操作系統只能用兩張1.4M的軟盤來記錄,於是大家都很珍惜存儲資源。你看到的遊戲畫面,看似是一張圖,但其實他都是用一個個像素點描繪出來的,並不是圖片,而是一段段的文字,告訴處理器,什麼位置的點是什麼顏色。就這樣用一個個像素點描繪了圖畫,在顯示器上我們就看到各種各樣馬賽克一般的像素畫。


而音樂使用的是音節,一般也都用機器碼來實現的,很少在遊戲中加入真正的音頻,即使有也是midi格式的文件,文件也很小,沒有什麼太多的音色。而且遊戲中大部分的音樂都是循環性質的,可能5-6個音節就能支持整個遊戲的BGM。

一段用C語言控制發出聲音的程序

#include<windows.h>
/<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遊戲比較小,但是內容多。


geo丹


兩個方面:

圖像方面,像素低,色深位數低,數據量小。

聲音方面,是midi音樂,遊戲文件內僅存儲midi數據,播放時靠硬件轉換為聲音輸出。

所以數據量小。


分享到:


相關文章: