暴打暗黑:讓暗黑初代在現代操作系統上煥發新春

暴打暗黑:讓暗黑初代在現代操作系統上煥發新春

1996年的最後一天,暗黑破壞神的初代上市了,作為beta時就被收錄在Windows遊戲光盤裡的大熱門遊戲,它不出意外地登上了當時微軟傾力打造的Windows 95平臺。二十多年過去了,我們的電腦操作系統也經歷了98,NT,XP,Vista,Win7,Win8直到Win10的變遷,“古老”的經典遊戲在現代操作平臺上很多兼容性乃至無法運行的問題,暗黑初代也不例外。

暴打暗黑:讓暗黑初代在現代操作系統上煥發新春

遺憾的是,暴雪的經典遊戲團隊似乎把大部分精力放在了讓暗黑2能順利在現代操作系統中運行上,而對暗黑初代似乎並不怎麼上心。不過,幸運的是,我們暗黑社區絕對不乏狂熱的程序員,他們自覺地負擔起了對經典初代作品的現代化改裝工作。

暴打暗黑:讓暗黑初代在現代操作系統上煥發新春

比如名氣最大的暗黑初代MOD Belzebub就是一個例子。在這個MOD裡,作者為初代增加了三個新的職業:野蠻人,死靈法師和刺客。為遊戲追加了新的法術,職業和技能,這是該MOD的一大亮點。另外還有新的敵人和任務,追加了新暗金裝備,以及更多的裝備(包括套裝)乃至打造系統。而觀感上最大的提升來自改進的用戶界面,加入了大量暗黑2風格的界面,包括商店和大寶箱界面以及小站系統等等,甚至還加入了暗黑3裡的元素,比如掉光。針對現代的顯示器和操作系統,它有針對窗口和全屏模式的各種分辨率的設置以及可縮放的鏡頭。

暴打暗黑:讓暗黑初代在現代操作系統上煥發新春

說了這麼多優點,但這個mod是不完整的,只是一個測試版。Belzebub的創造者在開發一段時間之後就放棄了這個項目,轉而使用另一個mod。但問題依舊,那就是穩定性欠佳,時不時玩家會遇到畫面撕裂,過場動畫無法播放等問題。

暴打暗黑:讓暗黑初代在現代操作系統上煥發新春

另外的一個選擇是DiabloPatch,這是一個與Belzebub那種MOD形式走向完全不同方向的一個修補補丁,最近也剛剛放出了新的版本。它的最大特點就是為與現代Windows版本兼容而製作,同時完全保留遊戲的原始精神,也就是基本不對遊戲做什麼修改。DiabloPatch不會修改原始的遊戲文件,而是採用在內存中打補丁的形式,所以可以很容易地恢復到原來的遊戲中,它的功能包括:與現代版本的Windows完全兼容;可調整大小的窗口模式;多顯示器支持;與Battle.net完全兼容等很重要的功能。當然它也對遊戲有一些改動,比如物品的突出顯示,怪物的血條,以及著名的複製物品修復(這是可選的)等等。但它也是沒能完美地實現在現代操作系統上的運行,比如調整窗口大小隻適用於遊戲,不適用於菜單;菜單界面有點bug;Win10之前的系統UI修正會有錯誤;它只適用於1.09版本等等。

其實針對暗黑初代的現代化MOD工作一直都有在進行,不過讓這個話題重新熱炒起來的是最近出現的一個叫devilution的開源項目,因為這個託管在github上的項目不僅是開源的而且打開了暗黑初代向其他平臺移植的大門。眾所周知,暗黑初代僅在PC,Mac和PS1上推出。devilution的開源項目可以使其比以前更容易更新,修正和移植遊戲到其他平臺上。

說起經典遊戲的移植我們並不陌生,最經典的一個例子是來自DOOM,這款1993年出品打開了3D大門的遊戲在過去的二十多年裡被無數程序員拿來練手,花式登陸各種平臺,包括且不限於自動取款機,照相機,打印機,計算器乃至你家的冰箱。這一切不僅是因為它在遊戲發展史上的地位,更是因為id Software公司很大方地在1997年年底發佈了其源代碼。每當有人想要移植到其他平臺或者是進行MOD擴展時,都可以直接訪問遊戲源代碼,讓工作變得非常輕鬆,如此的做法不僅讓DOOM的經典傳遞到更多平臺,而且幾乎也是給予了它永恆的生命。

暴打暗黑:讓暗黑初代在現代操作系統上煥發新春

所以我們回到了原點,Devilution提供了暗黑初代的源代碼來解決這一系列的問題。有了源代碼,我們就可以像經典的DOOM那樣,各種花式來操弄暗黑初代作品了。而且通過這個源代碼,我們還可以窺見當初暗黑破壞神的開發接近尾聲時,有多少想法被束之高閣,有多少遊戲功能規劃最後只能在源代碼中找到一絲痕跡。

那麼既然暴雪從來沒有公開過暗黑的源代碼,Devilution項目提供的代碼是從哪裡來的呢?

暴打暗黑:讓暗黑初代在現代操作系統上煥發新春

事情要從暗黑初代發售後的第二年講起。看過我之前寫的暗黑故紙堆系列的玩家應該有印象,暴雪在推出暗黑後大受歡迎,按照那時候的遊戲業界風氣,他們很快就要推出資料片和向其他平臺移植了。不過這裡暴雪出現了一點小小的疏漏。因為地獄火和PS平臺的移植工作都不是由暴雪來完成的(那時他們正忙著弄星際呢),所以暗黑破壞神的源代碼提供給了兩個開發商:Synergestic Software(雪樂山收購來的工作室,負責地獄火資料片)以及Climax Studios(很老牌的工作室了,負責了暴雪的魔獸2和暗黑1兩款遊戲的主機平臺移植)。

一旦扯上索尼,大家就能猜到是啥了。是的,索尼日本的QA部門又一次把秘密給洩露了。畢竟是一個能把遊戲從原型到完整的源代碼徹底洩漏(Beatmania)的部門。暗黑初代是在日語的移植作品裡不小心留下了一個符號文件,其中包含了遊戲中所有內容的索引,包括功能,數據,類型等等!這還不算完,關於這次移植的beta版本也被洩露了,其中也包含了這些重要的源文件。

暴打暗黑:讓暗黑初代在現代操作系統上煥發新春

而最重要的是,Devilution項目的作者發現在PC版的Diablo光盤中就包含著暗黑的調試版本。它隱藏在DIABDAT.MPQ -> D1221A.MPQ -> DIABLO.EXE裡面。這個版本包含零售遊戲中所沒有的調試工具,提供了很多關鍵性的代碼信息。將所有這些方面結合起來,我們就得到了一整套更容易閱讀而且更加準確的文件名稱和函數名稱,甚至連程序行號都與真正的源文件相當接近。

通過這樣的逆向工程,Devilution的作者用了超過1200個小時梳理了一個相當接近的暗黑初代遊戲源代碼,他的目標是將過時的圖形API DirectDraw轉為現代遊戲所用的OpenGL,並且移植到Linux和其他平臺上,不過這個時間可能還需要6-12個月。目前的Devilution項目已經可以完整地運行暗黑初代遊戲了,但是依然存在一些瑕疵,比如動態光照無法實現等。有趣的是,在暗黑1的源代碼中,我們看到了一些暗黑2的接口功能,包括敵人的血條指示,地面上的物品顯示以及商店的UI提示與物品描述等。

不管怎麼說,暗黑初代是一款經典的開山之作,能夠在現代操作系統上順利地玩到它對玩家來說是一件好事,尤其是在暗黑2重製版傳聞不斷的今天。


分享到:


相關文章: