這種玩意肯定還是古代多啊。
卡帶遊戲機結構很特殊,有很多獨特的技巧,可以用 PC 的 CPU 十分之一不到的主頻實現遠超 PC 的畫面效果。先解釋一下卡帶遊戲機的架構。從 FC (知乎日報注:即紅白機)開始的遊戲機都採用了 CPU+ 顯卡的結構,顯卡可以將內存中的圖像元素按照 CPU 給出的參數進行移動,完全不佔用 CPU 的處理能力。由於顯示功能是做死在硬件裏的,因此也沒有什麼編程技巧可以提高效率,只能從美術角度想一些偏門的辦法。
早期的遊戲製作中,比起程序員的發揮,更重要的是美工的狂歡。當然,那年頭遊戲公司幾乎沒有分工的概念,一個人身兼導演、編劇、關卡設計、美工、程序、音效、廣告、客服才是最最典型最最專業的狀態。
以 FC 主機為例,它的顯卡處理能力包括一層背景和 64 個活動塊,活動塊和背景都是以 8X8(8X16)的單元組成,背景只能機械移動不能相互遮擋,活動塊可以隨意遮擋。活動塊本身有大小和數量的限制,同時只能顯示 64 個活動塊,每個活動塊只能使用 3 種顏色,同水平線上同時只能有 8 個活動塊,假設一個角色由 2X3 個活動塊組成,那麼在地面上就只能同時出現 4 個角色。同屏幕最多可以顯示 56 種顏色,而且這還受到調色盤限制,同類圖像元素只能使用同種的調色盤。
超人學園把角色和背景分離了,看得更清楚些。
這個是 MARIO 的角色圖像,可以看到光用 8X8 連一個大 MARIO 都做不了,需要 6 個活動塊組合才能構成一個角色。相當於屏幕上只能有 10 個 MARIO,地面上只能同時出現 4 個。為了解決限制,製作者設計讓畫面在前後兩幀交替顯示不同的角色,所以 FC 很多遊戲會有畫面閃爍的情況發生。
而真的遇到活動塊數量限制就不能這麼搞了,只能讓背景來代替活動塊處理角色。最典型也是最極端的是火焰之紋章。進入戰鬥後,發起攻擊的一方用活動塊表示,被攻擊的一方設定成背景圖像(遊戲卡是內存,所以圖像元素是共用的),到被攻擊方反擊時,就反過來。
這個圖片上還有一個細節,就是為了規避水平線 8 活動塊的限制,遊戲中所有角色的造型都要經過專門設計,保證橫向出現的像素守恆。右側的龍的姿勢和騎兵拿槍的姿勢都是為了配合限制。
製作 FC 遊戲的困難遠比玩家想象的要大,99% 的遊戲畫面都需要特殊的技巧來規避機能限制。
所有人都看過的,魂鬥羅的標題畫面。大家可以看到,右下角的角色胸像很明顯有 8 種以上的顏色,其實角色的頭髮,身體,衣服是完全分離的,一部分是活動塊,一部分是背景,利用兩者調色盤分離的特性才湊足了顏色。
當年的 SFC 與 MD 機能大戰是中國歷史上第一次遊戲玩家派別大戰。其中的一個重點就是 MD 沒有半透明功能,它的活動塊只能遮擋,不能疊加半透明色。典型的像 SFC 上的遊戲經常可以看到陽光的光柱,而 MD 上就沒有這種東西。但是在個別 MD 遊戲中,偏偏就出現了類似的效果。
MD 惡魔城中,很明顯可以看到人物身上被光照到和沒被照到的部分顏色不同,這是很典型的半透明效果。其實這是利用完全不同的方法實現的,MD 的顯卡可以指定特定區域的輸出亮度,因此你看到的陰影,只是降低了屏幕特定區域的亮度而已。
同類例子,《法蘭克大冒險》,角色在水中的亮度會降一檔,看上去好像加了一層藍色。
《法蘭克大冒險》還實現過更驚人的特效——多重卷軸。
很多老玩家都常犯一個錯誤,把 8 位機的單卷軸當成了多重卷軸。比如帝國戰記的峽谷,不同深度的巖壁按照不同速度滾動,形成縱深效果。這其實是把一個背景切成幾條,按照不同速度移動而已。
判斷是否是多重卷軸的一個硬指標就是看前後兩層是否存在遮擋,如果沒有遮擋關係,那就是同一層背景。而有的廠商就在這上面做文章了,比如 PCE 上的《地牢探索》,畫面上的同山其實下面是背景,上面是活動塊,接到一起同速運動,看上去像一體的,用這種方式實現遮擋。(紅色是背景,綠色是活動塊)
MD 的硬件只設計了 2 層卷軸,角色本身是活動塊,角色所在的一層是背景 1,後面的是背景 2,這樣畫面比 FC 更有層次感和立體感(所以早期 MD 在大陸叫立體機)。但是 3 層以上的卷軸就不可能了。
《法蘭克大冒險》這個畫面中,角色是活動塊,前面的平台是背景 1,後面的是背景 2,然而畫面中央的柱子居然是獨立於這 3 者活動的,也就是説出現了 3 重卷軸!這不像現在的 3D 遊戲是效率高低的問題,當時的圖像都是純硬件特效,超出硬件設計範圍是不可能的(打個比方,顯卡管線沒有貼圖的功能,你非要加入材質貼圖,那就只能用 CPU 去實現,效率降低到原來的萬分之一)。其實方法也很簡單,MD 主機允許自由選擇各層圖像的先後關係,柱子雖然是在背景後面,但它其實是前景的活動塊組成的。
這方面內容太多,光 FC 上的遊戲特效沒幾十萬字都説不完,就不展開了,隨便看看吧。