不是延期就是崩盤,遊戲移植到底有多難?

那些對“傳火”近乎痴迷的冒險者,如今在探索羅德蘭王國時恐怕已不再那麼苦痛,他們可以癱倒在床、捲入被窩,舒適的從北方不死院踏上征程。但在這背後,《黑暗之魂 重製版》邁向 Switch 的旅途卻並不順利,維塔士大約從去年8月起就接手了移植工作,經歷了漫長的等待後,這款作品直到今年10月才正式發售。

移植遊戲得花上一年多的時間?這或許讓人有些困惑。有人將延期的原因歸咎於平臺的性能問題,也有不少人認為任何理由都是託詞,甚至衍生出“是為了給其它作品發售讓路”的陰謀論。這些言論並非單單針對某一款產品,它們或許已經成為玩家看待移植工作的普遍觀點。

不是延期就是崩盘,游戏移植到底有多难?

面對人們積蓄已久的不滿情緒,維塔士製作人 Lukas Codr 此前還詳細剖析過項目的難點,儘管這項工作看似只是簡單的“搬家”,但在實際進行操作時,無論是代碼的兼容、還是幀率的匹配,亦或是截然不同的網絡系統都暗藏著巨大挑戰。

這並非個例,Team Cherry 在將《空洞騎士》搗騰到 Switch 平臺時,前前後後也花去了一年時間。移植同樣成為了許多日本廠商難以跨過的高檻,內容搬運後缺胳膊少腿、錯誤頻出早已被視為一種正常現象。如此看來,要做成這門“吃老本”的生意沒有想象中容易,它背後又需要突破哪些關隘?

老遊戲的隔閡深如海

在高級語言和跨平臺的遊戲引擎興起之前,各平臺的內容移植成本可能難以想象。不同硬件的運行規則,幾乎可以將底層的邏輯全都翻新一遍,隨之而來的結果便是:僅有關卡、數值和系統這些概念層面的東西能夠沿用下來,而圖形素材、音樂資源往往都得重新制作。

作為佐證,上世紀八九十年代的遊戲在移植過程中往往被改得面目全非。1984年,《炸彈人》開發商 Hudson 與任天堂合作,負責將幾款 FC 上的作品搬到家用電腦 PC-8801 和夏普 X1 上,其中不少遊戲受經移植後已經完全變樣,這種改變甚至深入到核心的設計部分。

不是延期就是崩盘,游戏移植到底有多难?

原版《馬里奧兄弟》(水管馬里奧)的主要玩法是從下層撞擊平臺,將敵人撞翻後跑過去消滅它們。底層中央還有個名為“POW”的方塊,撞擊後所有在場的怪物都會翻轉過來,等同於 STG 遊戲中的“保險”。但經由 Hudson 過一道手,PC-8801 上的《馬里奧兄弟 特別版》簡直可以當成另一款遊戲。

劣化後的圖形素材暫且不提,特別版的關卡和玩法幾乎完全變樣。玩家時而需要穿梭左右橫移的平臺,時而又需要利用“蹦床”震翻敵人,遊戲還加入了限時收集道具的元素。有趣的是,這些魔改當時並不讓人反感,設計上也有許多獨特之處,反而彰顯了第三方廠商的創意和實力。

不是延期就是崩盘,游戏移植到底有多难?

從技術層面來看,Hudson 對內容進行換皮和翻新或許也是被逼無奈。早期的遊戲基本都由彙編構築代碼,與今天編程的高級語言不同,它有時會具體到寄存器和內存地址的調用,而在移植過程中,每個平臺、每塊芯片的指令集、位寬,甚至連寄存器數量都不一樣,這成了難以調和的麻煩事。

以 SFC 和 MD 為例,它們處理器分別為65c816和摩托羅拉68000。前者只有2個寄存器,而68000則包含8個通用寄存器和8個地址寄存器,兩者的尋址邏輯、調用命名、資源的處理和存放地址截然不同。

對於彙編而言,在 x86 架構轉向 x64 架構時,改一下數據格式和名稱還勉強管用,而放到 ARM 架構時這套規則就像天書,有時重寫代碼還要更為效率。

2013年時,有開發者試圖將 SFC 上的《星際火狐》移植到 MD 平臺,但他最終只完成了一個簡單的 Demo。不僅缺少聲音和精細的圖形素材,整體的運行效率也就8~9幀,完全算不上一款可玩的遊戲,足以見得這背後的困難程度。

不是延期就是崩盘,游戏移植到底有多难?

不過,隨著硬件性能的提升,人們想到另一個圍魏救趙的辦法:既然重構老遊戲的彙編代碼這麼麻煩,倒不如重構老遊戲的運行環境,將程序和模擬器捆在一起。一個較為常見的說法是,如果新平臺和老平臺的指令集、操作系統完全不同,那麼大致需要10~40倍的 CPU 算力才能實現模擬,這在今天已經不是問題。

西班牙開發商 BlitWorks 就是“模擬移植法”的好手,該公司的創始老哥 Angel Horna 痴迷於鑽研新舊遊戲平臺的特性,曾經還編寫過盛名在外的 Nebula(星雲)模擬器。它們在2012年接到世嘉委託,負責將 DC 上的《街頭塗鴉》(Jet Set Radio)高清化,並移植到各個主流平臺。

儘管 DC 上的遊戲已開始通過高級語言編寫,但要對細枝末節進行修改,並將其帶到 PC、移動端和其它主機平臺仍是不小的工作量。讓人出乎意料的是,BlitWorks 只花9個月就完成了任務,達成這項壯舉的訣竅在於,它們構建了一種新的混合技術,從而使得新平臺能夠運行舊代碼 —— 說白了,其實也就是將 Dreamcast 模擬器和遊戲整合了一下。

實際上,為了讓新機器能夠玩上老遊戲,索尼這些年來也一直在研究模擬器。PS3 上有 PS1、PS2 的模擬器,PS4 上也默默出了幾個 PS2 遊戲的模擬版,與 BlitWorks 的邏輯可能十分相似。而在剛剛發佈的 PlayStation Classic(迷你 PS)中,索尼還植入了它們過去所反對的東西:以開源架構設計的民間模擬器 PCSX ReArmed。從中也能看出潛移默化的態度轉變。

下一頁:一個世代的距離同樣遙遠

一個世代的距離同樣遙遠

如果說太久遠的作品有點難搞,那麼隔代、或者同世代遊戲的移植又如何呢?它們的出產日期最多差個 6~7 年,代碼和硬件制式的變化也沒那麼大。在這一點上,雖然現今的內容移植確實簡單不少,但如果要彰顯誠意,保留原汁原味的體驗、甚至高於原汁原味的體驗,同樣是個勞神費力的苦差事。

讓我們繼續述說 BlitWorks 的幕後軼事。在將 PC 平臺的《Fez》移植到 PS3 上時,它們又發現了一個新的難點,該作主要由 C# 編寫,而 PlayStation 平臺當時對此並不支持。該問題有兩種解決方案,要麼是將 Mono Runtime 整個移植到新平臺,要麼是用 C++ 把遊戲重寫一遍。

*注:PS 不支持 C# 原生開發,但支持 Mono 這個環境,所以可以將《Fez》代碼整合到 Mono 中。)

如果繼續使用 C#,遊戲可能會受到 CPU 性能的掣肘,就像早期的 Xbox 360 版本一樣;而如果將代碼轉寫為 C++,又會變成漫長而乏味的任務。由於無法預估 C# 移植產生的問題,BlitWorks 最終還是選擇了轉寫,這也能夠保證遊戲更順暢的運行。

事實證明它們做出了正確的決斷,儘管《Fez》看起來是一款 2D 像素遊戲,但內部其實包括很多 3D 結構和多邊形塊。處理這些圖形對於 PC 和本世代主機來說是小菜一碟,但直接搬運到移動平臺、或上世代主機時卻會遭遇著色器相關的麻煩。不過正因為進行了轉寫,BlitWorks 此時可以輕鬆的對部分代碼進行調整。

不是延期就是崩盘,游戏移植到底有多难?

《Fez》在移植的過程中還衍生出一個副產品。為了日後更輕鬆的將 C# 轉換成 C++,BlitWorks 在2013年推出了一個名為“Unsharper”的自動化軟件,它隨後也被應用於《全金屬狂怒》《堡壘》等獨立遊戲的移植工作。

你或許會認為這些專接外包的小廠技術力不夠,所以才會把事情搞得這麼麻煩。但為了將《最後生還者》從 PS3 弄到 PS4,即使是大名鼎鼎的頑皮狗也愁白了頭。在接受 Edge 雜誌採訪時,該作的創意總監 Neil Druckmann 就半開玩笑的說:“我真希望有個按鈕能夠一鍵「打開 PS4 模式」,但結果與預期一致,(移植過程)就像地獄一般。”

事實上,由於新老兩代主機的規格和運行方式略有不同,《最後生還者》起初在 PS4 上的運行效率不到10幀。即使對渲染相關的代碼進行重新優化,遊戲也沒能達到每秒30幀的“基礎要求”,就更別提宣傳口號中的“60幀”目標了。根據首席程序員 Christian Gyrling 的回憶來看,當時距離作品的發售節點已不足3個月,團隊中瀰漫著一股恐慌的情緒。

不是延期就是崩盘,游戏移植到底有多难?

問題的癥結主要在於,將分辨率提高到1080P、並更新了一批美術素材後,每幀畫面的處理和渲染速度實在是太慢了。頑皮狗的解決方案是將 CPU 的負載分流為兩部分,讓它首先只計算玩法,算完之後再對圖形進行渲染,畢竟一個有序通行的岔路口,可比大家都擠在一起堵死要好得多。這麼整搗一下,開發團隊陡然發現 —— “1080P+60幀”的目標居然真成了。

不過,幀數提高本身又會給項目帶來新的挑戰。為了填充這多出來的30幀,《最後生還者 重製版》還得從原始動畫數據中重新採樣,並逐幀調整美術細節。這在動作遊戲中可能更加麻煩,《黑暗之魂2》最初的武器耐久值就通過幀數判定,當 PC 玩家以60幀的效率運行遊戲時,裝備的損耗速度明顯增加。

源代碼丟了怎麼辦

關於遊戲移植的另一則趣聞是,就在幾個月前,國內媒體盛傳《最終幻想8》沒有移植的原因是“源代碼丟失”。但事實上,該作的高清復刻早在2013年底就登陸了 Steam,這一傳言甚至漂洋過海,還被 Square Enix 的技術總監土田善紀拿出來調侃了一番:

我聽到了有傳言說 FF8 不能移植是因為源代碼丟失了,不知道這種流言是怎麼來的呢?但是明明已經有移植過了的 Steam 版了呀?一般來說,不可能會有這都保管不好的事情發生吧?不過話說有人看到我 FFT 的角色動畫程序了嗎?我找不到它了。

土田可能沒想到,此番針對傳聞的發言,最後卻陰差陽錯指到了社友野村哲也的腦袋上……在開發《王國之心HD 1.5 Remix》時,他們其實搞丟過初代的源碼,為此只能深度的挖掘原作,並對內容進行重建。碰巧的是,搞丟源代碼的糊塗蛋絕非只有 Square Enix,這甚至成了一種行業常態。

不是延期就是崩盘,游戏移植到底有多难?

對於許多專注遊戲移植的團隊而言,它們的工作往往始於一張光盤,而不是源代碼。《旺達與巨像 重製版》的開發商 Bluepoint 創始人 Marco Thrush 曾經表示,為了湊齊100%的內容,它們總是得從零售光盤裡獲取數據,然後進行拆包和反向編譯。儘管經驗豐富的開發者,能從拆包文件中找到許多有用的資源,然後通過重建引擎的方法將所有內容都拼回去,但這背後又會徒增許多不必要的成本和精力。

Hyjinx 工作室就是“源代碼遺失”的受害者,在幫 Konami 製作《寂靜嶺 高清典藏版》時,它們拿到的源碼居然不是最終版本,其中還包含了早期的 Bug 和內容缺陷。負責移植的製作人 Tomm Hulett 打趣的說到:“遊戲中有一處 Heather (《寂靜嶺3》人物)還是藍色的。”

由於摻雜了大量的紋理問題和 Bug,一部分材質和聲音也得自己提取,Hyjinx 工作室花了兩年時間才把這個 HD 合集給搞定。作為參考,《寂靜嶺2》從無到有其實也才用了兩年。

不是延期就是崩盘,游戏移植到底有多难?

值得警醒的是,反向編譯有時還不能解決所有問題。

加拿大開發商 Beamdog 曾打算對《冰風谷2》進行重製,但該作的所有權隨著混亂的企業收購多次易手,導致遊戲的源代碼無從追跡。它們調查過雅達利轉交給威世智的數據,也向黑曜石的朋友尋求過幫助,最終還是無功而返。而最大的難點在於,現存市面上《冰風谷2》(包括 GOG 版)的代碼幾乎都經過了壓縮,Beamdog 也無法從本體中取得完整、有效的信息,只能取消整個項目。

即使是暴雪這樣的廠商,對源代碼的保護有時也會疏忽大意。2017年5月,時值《星際爭霸 重製版》的製作節點,Reddit 用戶 Khemist49 卻從 eBay 上淘到了一張“《星際爭霸》母盤源代碼”的刻錄盤。他將光盤返還後得到了“隆重”的感謝,暴雪寄來了一大摞外設和周邊產品,還為他報銷了嘉年華活動的所有費用,並邀其共進晚餐。

下一頁:再來看看黑暗之魂

再來看看黑暗之魂

近幾年涉及到移植的難度,通常與平臺之間的程序、引擎支持相關。比如用 DirectX 技術編寫的程式,在只支持 OpenGL 的硬件上就不會那麼好用。由於許多廠商都開始使用虛幻和 Unity 等跨平臺引擎,與之對應的遊戲只需要進行較少的適配工作,已經算是很好移植了。

讓我們將眼光聚焦回《黑暗之魂》Switch 版本身。黑暗之魂初代所用的引擎名為“PhyreEngine”,這是索尼2008年在 GDC 上開始宣傳的一款產品,Falcom 旗下的《英雄傳說 閃之軌跡1》,以及 Square Enix 旗下的《勇者鬥惡龍 建造者》都使用了這個引擎開發。雖然 PhyreEngine 由索尼製作,但它們倒是持開放態度,無論你是開發商、發行商還是中間件團隊,都可在任何平臺上基於引擎打造產品。

不是延期就是崩盘,游戏移植到底有多难?

問題在於,PhyreEngine 直到今年1月17日才支持 Switch,而維塔士至少從2017年8月起就已經開工了。這意味著它們要麼參照老思路,可能得自行一個個調用 OpenGL 的原生 API;要麼廢棄一部分之前的工作,研究 PhyreEngine 的新版特性。相比之下,前者的工序複雜而不穩妥,後者可能更便於紋理、著色器的直接調整,但又面臨著新版引擎兼容不完善的風險。

Unity 此前也不乏踩坑的例子,《Sword of the Guardian》製作人 Billy Chan 認為,Unity 對 Switch 的支持就不太完善,他的作品在 PC 和 Xbox One 上能以60幀運行,而當縮減為30幀的 Switch 版本時,遊戲中人物移動將有不自然的滑動。

《尤卡萊莉大冒險》和《戰神:夜襲》的移植工作,同樣也因引擎問題而遭受阻礙,這些中小型的開發者和外包團隊,當然不具備頑皮狗那樣的資源去逐幀修改內容。

除了引擎所帶來的問題外,雜七雜八的小毛病還需要耗去更多時間,比如現代化的操作適配,長寬比和界面的調整,以及遊戲本身與平臺的內容聯動。《黑暗之魂》Switch 版就新增了6人聯機,其中需要做大量的優化工作。而 Bluepoint 重製《旺達與巨像》的第一項工作 —— 是得搞一套日版的 Linux 系統,用來打開官方提供的硬盤文件。

不是延期就是崩盘,游戏移植到底有多难?

從商業的角度來看,移植、復刻、重製如今都成了一種有利可圖的策略。整體上,它能以低於新內容的製作成本,來重新煥發老品牌的價值。與此同時,玩家也樂於在續作或者系列重啟前,體驗到一款經過細緻包裝的老遊戲,這理應是享受經典的絕佳方式。

不過,電子遊戲歷史基金會創始人 Frank Cifaldi 卻認為,這些工作在情感和藝術上還有著額外的意義:“我認為意識也是繼承的一種形式。我想說的是,通過重新制作來延續這些作品的生命力,絕對是在保護遊戲的傳統、理念和世界地位。”

無論對應的是成功的商業模式、亦或是背後的藝術價值,它們本身就已決定了,移植和翻新在最為基礎的理念中也不應被當成簡單工作。從最早的硬件隔閡,到現今數不盡的爛攤子,一款作品的轉移過程也可能包含著密密麻麻的任務,這需要非凡的專業知識,同樣面臨著額外的後勤和美術需求。

儘管在缺少官方信息的情況下,外人無法剖析更為深入的原因,但《黑暗之魂》的移植工作或許也捲入了相似的漩渦。試想一下,結合之前那些苦痛的案例,當你需要重整幾萬行陌生的代碼時,它的困難與否自然也就心中有數了。


分享到:


相關文章: