從小包包裏掏出一個魔改過的 OpenRA

最近被自己一隻關在了家裏,每天至多能出門四次。除了每天出門吃飯飯以外,甚至見不到一個人、一隻貓。每天的生活也就只剩下了吃飯飯和上班。而碰巧貓貓正好把家裏的電腦給叼跑了,於是百無聊賴的窩就考慮弄個遊戲來玩玩。然而作爲一個玩遊戲的品味更像是油膩的中年大叔的貓貓,一般經常會玩的遊戲也就是曾經火熱一時的那些 RTS 遊戲了。由於家裏只有一臺辦公用的筆記本,所以並不是很想在上面安裝遊戲,也就更不用說 wine 了。思來想去,能有的選項也就只剩下 OpenRA 這個項目了。

OpenRA 項目脫胎自 Westwood 公司的經典 RTS 遊戲 Red Alert,自 EA 將 Red Alert 開源之後便有了這樣一個全平臺的開源項目。再加上由社區接管之後,大家給這個經典遊戲添加了很多更「現代」的操作方式,以及對於更現代化的設備有了更好的支持,因此相較於最原始的 Red Alert 來說,可玩性和兼容性都有了很大的提升。遊戲通過 .Net 框架實現了跨平臺,因此不光支持 Windows 平臺,Mac OS 和 Linux 也都有良好的支持,甚至 OpenRA 都進入了某些激進的發行版的官方倉庫。

Arch Linux 的 Community 倉庫中的 OpenRA 包
Arch Linux 的 Community 倉庫中的 OpenRA 包

「就決定是你啦!」然而可惜的是 Fedora 的倉庫裏面並木有這個遊戲(「人家才不是地溝油!嗚咕!」),而且窩也木有找到別人編譯好的 RPM 包。於是窩只好跑去了 OpenRA 的官網,所幸的是在那裏窩找到了官方打好的 AppImage 鏡像。這對於窩來說真的是非常舒適的,畢竟如果是 RPM 包的話,窩還要裝很多依賴給它,而 AppImage 則不用。即用即下載,就只有單獨一個文件,而不需要了的時候也不需要卸載,直接刪掉這個文件就好了。

鏡像的文件也並不大,只有不到 19 MB,裏面已經包含了所有運行這個程序所需的環境依賴。然而真正讓遊戲能夠跑起來所需要的遊戲資源(音樂、關卡、地圖等)卻有 100 多 MB,好在是初次打開引擎之後就可以自動下載。但提供下載的只是運行引擎所必須的基礎依賴,如果需要其他資源(過場動畫、額外的音樂包等)則需要自己從原版遊戲光盤上提取。

OpenRA 引擎自帶的資源管理器
OpenRA 引擎自帶的資源管理器 (這裏的截圖是已經安裝了所有必須資源之後的狀態)

下載完必須的資源之後重啓引擎,便可以正常啓動遊戲了。遊戲的主菜單更像是照抄了 C&C Generals 系列的主菜單模式:背景上是一張自動執行的動畫地圖,提供了遊戲整體效果的動態演示,然後 logo、選單、新聞等放置於地圖場景之上。(其實窩對於這種放在背景上自動執行的這種動畫地圖還是很感興趣的,最主要的一點就是這種地圖必須要設計的平衡度非常好,要不然一方將另一方擊敗的話動畫就演不下去了)

OpenRA 主菜單
OpenRA 主菜單

進入遊戲之後,遊戲的 UI 佈局和快捷鍵的設置則是基本照抄 Red Alert 3 的了。雷達、建造選項、金錢、電力等信息放置於右上角,超級武器等支援能力的使用選項則放置於左上角。建造選項爲每行三個共四行,對應各項的快捷鍵分別爲 F1F12 鍵。建築、防禦、士兵、載具、飛行、水上的選單分別對應 E ~ I 鍵,而變賣、電力控制、修理則分別對應於 ZXC 三個鍵。幾乎與 Red Alert 3 的完全相同。而建造選單方面不僅相對於原版 Red Alert 加入了單位生產的排程,甚至針對於建築物的建造也可以排程。相信這一點凡是玩過原作的玩家都會覺得是一個非常好的文明。

兩種陣營各自的建造選單
兩種陣營各自的建造選單

到這裏爲止,目前還沒有任何關於標題裏面所提到的「魔改」的內容,下面的內容纔是魔改一詞所涉及的重點。

由於小的時候常常玩的是 Red Alert 2,再加上窩本身玩 RTS 類遊戲玩得是對於全局的掌控感,以及收集了大量資源之後的滿足感,實際上並不喜歡真刀真槍地打來打去,因此每次玩的時候基本上都只是開一個簡單的 bot 然後慢慢玩到老。因此,儘管 OpenRA 對於遊戲體驗有很大程度的改進,玩過幾盤遊戲之後便也厭了。於是,窩又開始打起了 2 代的主意。

非常巧合的一點是窩在查的時候並沒有刪掉 openra 這一關鍵字,於是便發現了一個令我喜出望外的 OpenRA 的 mod:OpenRA-RA2(項目 repo)。在翻看了 YouTube 上的一些演示視頻之後,於是決定自己來上手試試看。然而不巧的是,廢了很大的力氣窩也並木有找到現成的 prebuild 軟件包(這次更衰)。沒辦法,要想玩的話也就只能自己來 build 這個項目了。試着把 repo 上的代碼拉下來,然後照着 Wiki 上的步驟 make 了一下,果然炸了。。。QAQ

等一下,自己 build 這個項目?憑藉着前 Arch Linux 用戶的本能,窩便又隨手去翻了一下 AUR,沒想到居然真的找到了:openra-ra2-git(AUR 信息頁)。既然有了 AUR,那接下來的工作便簡單了。在 chroot 環境下的 Arch Linux 子系統中通過 yaourt 便可以 build 出一個這個項目的軟件包。然後把軟件包裏的內容安裝到外面的系統上便可以正常運行了。

使用 yaourt 來 build 這個包的這一步進行得非常順利,果然還是別人已經寫好了的自動化腳本用起來更舒服。同時 openra-ra2-git 這個 AUR 包裏不僅提供了 build 的腳本,也額外提供了一些方便於在系統中使用的一些額外的配置文件和圖標等,因此 AUR 上的包往往會讓人用起來非常舒適。

然而 build 好了這個包之後,如何把它安裝到外面的系統裏,同時又讓它能正常運行,這便是在得到了這個包之後的一個新問題了。畢竟 openra-ra2-git 的信息頁上明確寫着要運行這個東西有多達 12 項依賴。幸虧 Arch Linux 打的包一般 granularity 都很大,要是像 Ubuntu 那樣非常細地拆分包的話,真是不知道要再裝多少個依賴包了呢。在對這個問題思考了好久之後,窩突然想到一點:AppImage 包含了運行這個程序所需要的全部必須的依賴,而同時它又可以 extract 到一個文件夾中然後再運行的。而 extract 之後得到的是一個完整的目錄樹,可以往其中添加其他的東西並通過這個環境來運行加進去的東西。

誒?窩不是正好有 OpenRA 的 AppImage 嗎?於是,把 OpenRA 的 AppImage 拆包,然後把 openra-ra2-git 這個軟件包中的內容與拆包之後的目錄樹合併在一起,然後改了一下 AppImage 的 AppRun 腳本,將啓動 OpenRA 的命令換成了啓動 OpenRA-RA2 的。果然引擎正常地跑起來了。

OpenRA-RA2 也需要原版 Red Alert 2 中的資源文件
OpenRA-RA2 也需要原版 Red Alert 2 中的資源文件

然後便是 OpenRA-RA2 的 Wiki 上所提到的運行時所必須的 Red Alert 2 的若干 *.mix 文件了。而窩碰巧有遊戲的原版安裝光盤 ISO 鏡像,於是 mount 了這個鏡像,然後根據 Wiki 上的指引把所需的文件放到了指定的資源文件夾中。啓動引擎,發現還是沒有找到資源文件。複查了幾遍之後發現沒有問題,那唯一的一種可能就是官方 Wiki 上給的資源目錄有問題。於是窩在那個 repo 中搜了一下那個目錄,發現有一份配置文件中有提到這個目錄,然而是一個相對於 OpenRA 引擎資源目錄的一個相對目錄。憑藉直覺窩覺得應該是找到問題了,因爲窩拿到的那個 AppImage 中的引擎所指定的資源目錄和 OpenRA-RA2 的 repo 中假設的資源目錄並不一致(窩這邊的話,OpenRA 的資源目錄是在 ~/.config/openra/Content 目錄,而不是 ~/.openra/Content 目錄)。於是把那些資源文件移到了正確的位置之後,遊戲被正常加載了。

進入遊戲主菜單之後,主菜單的佈局還是與 OpenRA 的相同(畢竟是同一個引擎),而不同的是用作背景的動畫地圖變成了一張空白地圖,甚至連邊框都沒有。這不禁讓人很沮喪。但萬幸的是,自帶的地圖編輯器可以修改這張地圖,所以如果有人有閒心的話是可以做一個動畫地圖來替換這張白板的。

OpenRA RA2 的主菜單
OpenRA RA2 的主菜單

進入遊戲之後,相對於 OpenRA 風格就變了很多。UI 的樣式更接近原版(至少作者把原作的素材都用上了),而佈局和快捷鍵還是 OpenRA 的樣式,並沒有遵循原作對於快捷鍵的設置。但在玩過幾盤 OpenRA 熟悉了鍵位的設置之後,建造、放置,一切又都是那種熟悉的感覺……

OpenRA-RA2 中兩種陣營各自的建造選單
OpenRA-RA2 中兩種陣營各自的建造選單

總體來講,這個 mod 目前的完成度並不低,但也並沒有完全做完全部的功能。單從我隨便試玩的兩盤來講,就發現和很多並沒有完成的功能點。比如:Lightning Storm 並沒有支持,建完 Weather Control Device 之後就沒有然後了;Mirage Tank 並不會變成樹,Chrono Legionnaire 只會在地上噠噠噠跑,等等。遊戲中的一些屬性參數的實現也有些許微妙的不一致,玩起來既有那種熟悉的感覺,又總會覺得哪裏怪怪的,更像是一個新遊戲。而遊戲的手感相較於原版的 Red Alert 2 來講更加的棉軟,像是往棉花包裏面打拳那樣的感覺。希望作者能繼續做下去,完成這個項目,甚至發展成一個類似於 OpenRA 這樣的完整改進版本。就目前來看,403 個 star 、91 個 fork 的關注度雖然並不是很高,但作者幾乎每天都有 commit 這件事還是能讓人有所期盼,布吉島後續作者會不會咕~