沒有源代碼,他用5年時間把紅警2給重寫了

差友們,我要說一個離譜的事。

有這麼一款遊戲,過了二十多年,還有一堆人一樣天天玩。

你別不信。

在各大媒體平臺,也有很多專門製作紅警視頻的 UP 主,粉絲高達幾十萬甚至百萬。

看到這,可能有差友回憶被勾起來了,腦子裏已經框好幾十輛光棱坦克準備 All in。

但問題來了,當你突然想來一把紅警,回味下童年時——

抱歉,你一定會被勸退。

你網上搜到的那些紅警安裝包,雖然能玩,但很容易遇到問題。你要調好兼容性,解決一個個報錯彈窗,才能勉強進入遊戲。

你可能想問,有沒有電腦小白能玩上的版本?

有是有。

一些紅警玩家會和你說,去下一個對戰平臺,再註冊一個賬號,接下驗證碼,完事了去大廳里加入或創建對局。。。

還是有點麻煩,有官方正版嗎?

也有。

但即便在 Steam 上買了 EA 官方的紅警 2,大概率也是花錢找罪受,黑屏、卡頓、報錯的問題非常多,很多人表示體驗還不如盜版。

以上,還是針對 Windows 用戶而言。

至於 Mac 用戶?哥們建議直接放棄治療。

所以世超就想問了:

在這個地球上,到底還有沒有簡單粗暴點的方法,讓咱們這種普通玩家想回味童年時,馬上就能來一把紅警呢?

別搞什麼兼容性,什麼報錯,什麼對戰平臺,系統要求,最好那啥,也別讓我找資源,下載安裝包。。。

有嗎,有嘛?

其實算有的。

最近世超摸魚時,找到一個網頁版紅警Chrono Divide(時空分裂)。

注意,重點是:網頁版,免費。

不管你是 PC、Mac、手機、平板還是小天才電話手錶、冰箱門的顯示器——

只要有瀏覽器,點開就能玩。

其實一開始啊,世超對它沒抱太大期望。畢竟網頁性能擺在這,估摸着是個青春版,體驗體驗得了。

直到我打開它。。。

臥槽。

單機、聯機對戰有了,天梯排位有了,甚至還支持打 mod。

遊玩成本幾乎沒有,進入網頁點 download,它會自己下載並解壓遊戲包。

10 秒後,你就能看到下面的畫面了。

只能說,世超一下就回到了當年的暑假。。。

別急,再進入遊戲操作兩下。

光棱坦克、蜘蛛機器人、V3 火箭、基洛夫飛艇,你童年記憶裏的一切,全都回來了。

就連更高階點的操作,按住 Ctrl 強制攻擊,工程師修復建築,這些也都完美支持。

真要說美中不足,就是巡邏功能無法循壞,粒子效果沒有復現。

但各位,這可是一個網頁啊!

更離譜的事情還在後面。

我本以爲這是某種移植、封裝、模擬器技術,把原版紅警塞進網頁裏,但通過一週的努力聯繫上作者 Alexandru Ciucă,一個有 15 年編程經驗的羅馬利亞程序員。。。

他告訴我——

哦,我用 TypeScript(JavaScript)重寫了紅警。

不是?

重寫遊戲?

兄弟們,你要知道:

紅警 2 源代碼,官方都弄丟了。。。

所以Alexandru 要重寫遊戲,就要通過黑盒逆向工程,分析紅警 2 所有的行爲邏輯。

有點難以理解?

想象一下,你要復刻一道菜,但沒有菜譜。你只能觀看別人喫這道菜的視頻,通過筷子動作、咀嚼節奏,來猜測食材的軟硬、口感。

Alexandru 就是這樣復刻紅警的。

除了官方的美術素材,rule.ini 配置文件(寫着每個單位的攻擊力、血量、成本)可以直接引用——

整個遊戲邏輯核心引擎,都是 Alexandru 靠着錄屏、慢放、逐幀分析、修改 rules.ini 文件、一遍遍測試、試錯,推導出遊戲邏輯的。

火箭飛行兵起飛時的動畫是怎樣的?在空中時那種一上一下的飛行狀態如何復刻?建築摧毀後四散碎片是怎麼飛濺的?

這些都需要反覆斟酌,反覆模擬的。

這個工程量到底有多大,沒人知道。

但看到官網的更新日誌密密麻麻記錄了整整 5 年,咱心裏也差不多有數了。

不過,有意思的來了。

世超在日誌中翻到了幾個版本,說修復了紅警 2 原版 bug。

比如 0.64 版本,修復防空步兵對防空炮的傷害(原版《紅警2》bug)。

0.18版本,建築工場不再能夠同時被打包/移動和出售(紅戒2及尤里復仇 bug );防止免費工程師被刷出。

嘶,是不是不太對?

按理說,遊戲引擎和代碼都是自己重寫的,爲啥會有原版 Bug?

對於這個問題,Alexandru 的回答很讓人震驚。

我給大夥總結下,網頁紅警 bug 有 3 種。

第一種屬於邏輯 bug。

Alexandru寫了一些基礎規則後,一些複雜的遊戲機制就可以在這個規則基礎上直接形成,同樣也會帶來 bug。好比你用樂高按照別人的設計堆房子,別人的房子有 bug 不太穩,你的也一樣。

第二種屬於數據 bug。

Rules.ini 配置文件,裏面記錄着所有單位的攻擊力、血量、建造成本這些參數。當官方自己寫錯了參數值,那 Alexandru 導入這個配置文件時,也會出錯。

第三種屬於故意的 bug。

衆所周知,有些 bug 存在久了,反而會成爲遊戲特色和文化,比如 CF 鬼跳,街霸 2 的取消技,文明的核彈狂魔甘地。

紅警也是如此。

現在很多對戰平臺會評估紅警 bug:不影響平衡性的就保留,成爲遊戲特色;嚴重破壞公平的纔打補丁修復。

所以到這你也明白了:

Alexandru 爲了完美還原紅警 2 的手感,把某些原版 bug 也復刻了出來。

什麼叫真正的原汁原味啊。。。

但這,還不算復刻紅警最困難的部分,最讓Alexandru頭疼的是在 3D 引擎裏渲染 2D 的素材。

原版紅警用的是畫家算法(一種圖形渲染技術)。

它把 2D 圖像一層層疊在平面上,靠着先後排序(比如讓士兵蓋在草地上面),達到一種立體效果。

但網頁版紅警用了真正的 3D 引擎來顯示這些貼圖後,反而出問題了。

坦克該壓着草地還是草地該露出來,建築該擋住士兵多少,這些細節會很難和原版對得上。

“ 這種底層決定一旦做了就改不了,我在這些細節上花的時間簡直荒謬 ”,這是 Alexandru 原話。

所以,這麼一個方便你遊玩紅警的網頁項目,背後真下了很大的功夫。

目前 GitHub 上有個叫 redalert2 的倉庫,裏面反編譯了 Chrono Divide 的代碼並開源,大家有興趣的或者也想重製一個網頁紅警,可以逛一逛。

寫到這,世超發現 Chrono Divide 雖然牛逼,但對國內玩家還是有門檻:

英文界面得慢慢適應,第一次進入要等待下載美術資源,國內聯機時延遲也比較高,平板上操作也很費勁。

原本世超還打算寫一點使用教程,但發現有人已經把事情辦了。

北京一個前端程序員阿晨,做了一箇中文鏡像網站 ra2web。

https://www.ra2web.com/

這哥們不光把界面全部漢化,還用付費 CDN 加速,優化玩家網絡體驗。

最關鍵的是,他花了兩週時間逆向 JS 代碼,給移動端加上了快捷面板——編隊、強攻、回基地,這意味着你即便用手機、平板,也能爽玩紅警了。

後來Alexandru知道後,還專門爲中文站開發了一套 API,也把中文站寫進了致謝名單。

阿晨做 ra2web 原因很簡單,他的經歷和各位一樣。

2021 年他在 Win10 上玩紅警,調試兼容性調到崩潰。後來偶然接觸到 Chronodivide 項目,想到國內一堆玩家還在買模擬器玩紅警,於是註冊了 ra2web 做中文站。

時至如今,ra2web 聯機用戶數已經超過 10 萬,備受粉絲歡迎。

但阿晨爲這個用愛發電的項目,也付出不少代價。

可能因爲影響了商業平臺和商家的利益,他的網站被攻擊過,域名被 DNS 劫持過,還遭過一些人身攻擊,也因爲自掏腰包得不到家人理解。。。

阿晨和我說,他的網頁紅警賬號之前莫名其妙上了次熱門,原因是一堆人@網警時,把他也艾特上了。

時代確實變了,已經有很多人不知道紅警是啥了。

但看着 Alexandru 那份持續 5 年、密密麻麻的更新日誌,看着阿晨說的那句“網站的運營就是滿足我自己對紅警的熱愛”,你會明白:

當這個經典遊戲在現代系統上越來越難運行,當官方沒有推出適配新系統的版本,總有人會站出來,用自己的方式守護共同的記憶。

他們不圖錢,甚至賠錢。

他們只是想讓每一個突然想起紅警的人,打開瀏覽器,就能回到那個夏天。

撰文

:刺蝟

編輯

:莽山烙鐵頭

美編

:萱萱

圖片、資料來源

網頁紅警

網頁紅警中文站

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com