差友們,我要說(shuō)一個(gè)離譜的事。
有這么一款游戲,過(guò)了二十多年,還有一堆人像磕了藥一樣天天玩。
它就是紅警 2。
你別不信。
咱們編輯部就有好幾個(gè)老哥,每天中午不看小姐姐也不刷差評(píng)君,就逮著紅警視頻下飯,完了周末還上對(duì)戰(zhàn)平臺(tái) PK。
在各大媒體平臺(tái),也有很多專門制作紅警視頻的 UP 主,粉絲高達(dá)幾十萬(wàn)甚至百萬(wàn)。
看到這,可能有差友回憶被勾起來(lái)了,腦子里已經(jīng)框好幾十輛光棱坦克準(zhǔn)備 All in。
但問(wèn)題來(lái)了,當(dāng)你突然想來(lái)一把紅警,回味下童年時(shí)——
抱歉,你一定會(huì)被勸退。
你網(wǎng)上搜到的那些紅警安裝包,雖然能玩,但很容易遇到問(wèn)題。你要調(diào)好兼容性,解決一個(gè)個(gè)報(bào)錯(cuò)彈窗,才能勉強(qiáng)進(jìn)入游戲。
你可能想問(wèn),有沒(méi)有電腦小白能玩上的版本?
有是有。
一些紅警玩家會(huì)和你說(shuō),去下一個(gè)對(duì)戰(zhàn)平臺(tái),再注冊(cè)一個(gè)賬號(hào),接下驗(yàn)證碼,完事了去大廳里加入或創(chuàng)建對(duì)局。。。
還是有點(diǎn)麻煩,有官方正版嗎?
也有。
但即便在 Steam 上買了 EA 官方的紅警 2,大概率也是花錢找罪受,黑屏、卡頓、報(bào)錯(cuò)的問(wèn)題非常多,很多人表示體驗(yàn)還不如盜版。
以上,還是針對(duì) Windows 用戶而言。
至于 Mac 用戶?哥們建議直接放棄治療。
所以世超就想問(wèn)了:
在這個(gè)地球上,到底還有沒(méi)有簡(jiǎn)單粗暴點(diǎn)的方法,讓咱們這種普通玩家想回味童年時(shí),馬上就能來(lái)一把紅警呢?
別搞什么兼容性,什么報(bào)錯(cuò),什么對(duì)戰(zhàn)平臺(tái),系統(tǒng)要求,最好那啥,也別讓我找資源,下載安裝包。。。
有嗎,有嘛?
其實(shí)算有的。
最近世超摸魚(yú)時(shí),找到一個(gè)網(wǎng)頁(yè)版紅警Chrono Divide(時(shí)空分裂)。
注意,重點(diǎn)是:網(wǎng)頁(yè)版,免費(fèi)。
不管你是 PC、Mac、手機(jī)、平板還是小天才電話手表、冰箱門的顯示器——
只要有瀏覽器,點(diǎn)開(kāi)就能玩。
其實(shí)一開(kāi)始啊,世超對(duì)它沒(méi)抱太大期望。畢竟網(wǎng)頁(yè)性能擺在這,估摸著是個(gè)青春版,體驗(yàn)體驗(yàn)得了。
直到我打開(kāi)它。。。
臥槽。
單機(jī)、聯(lián)機(jī)對(duì)戰(zhàn)有了,天梯排位有了,甚至還支持打 mod。
游玩成本幾乎沒(méi)有,進(jìn)入網(wǎng)頁(yè)點(diǎn) download,它會(huì)自己下載并解壓游戲包。
10 秒后,你就能看到下面的畫面了。
只能說(shuō),世超一下就回到了當(dāng)年的暑假。。。
別急,再進(jìn)入游戲操作兩下。
光棱坦克、蜘蛛機(jī)器人、V3 火箭、基洛夫飛艇,你童年記憶里的一切,全都回來(lái)了。
就連更高階點(diǎn)的操作,按住 Ctrl 強(qiáng)制攻擊,工程師修復(fù)建筑,這些也都完美支持。
真要說(shuō)美中不足,就是巡邏功能無(wú)法循壞,粒子效果沒(méi)有復(fù)現(xiàn)。
但各位,這可是一個(gè)網(wǎng)頁(yè)啊!
更離譜的事情還在后面。
我本以為這是某種移植、封裝、模擬器技術(shù),把原版紅警塞進(jìn)網(wǎng)頁(yè)里,但通過(guò)一周的努力聯(lián)系上作者 Alexandru Ciuc?,一個(gè)有 15 年編程經(jīng)驗(yàn)的羅馬利亞程序員。。。
他告訴我——
哦,我用 TypeScript(JavaScript)重寫了紅警。
不是?
重寫游戲?
兄弟們,你要知道:
紅警 2 源代碼,官方都弄丟了。。。
所以 Alexandru 要重寫游戲,就要通過(guò)黑盒逆向工程,分析紅警 2 所有的行為邏輯。
有點(diǎn)難以理解?
想象一下,你要復(fù)刻一道菜,但沒(méi)有菜譜。你只能觀看別人吃這道菜的視頻,通過(guò)筷子動(dòng)作、咀嚼節(jié)奏,來(lái)猜測(cè)食材的軟硬、口感。
Alexandru 就是這樣復(fù)刻紅警的。
除了官方的美術(shù)素材,rule.ini 配置文件(寫著每個(gè)單位的攻擊力、血量、成本)可以直接引用——
整個(gè)游戲邏輯核心引擎,都是 Alexandru 靠著錄屏、慢放、逐幀分析、修改 rules.ini 文件、一遍遍測(cè)試、試錯(cuò),推導(dǎo)出游戲邏輯的。
火箭飛行兵起飛時(shí)的動(dòng)畫是怎樣的?在空中時(shí)那種一上一下的飛行狀態(tài)如何復(fù)刻?建筑摧毀后四散碎片是怎么飛濺的?
這些都需要反復(fù)斟酌,反復(fù)模擬的。
這個(gè)工程量到底有多大,沒(méi)人知道。
但看到官網(wǎng)的更新日志密密麻麻記錄了整整 5 年,咱心里也差不多有數(shù)了。
不過(guò),有意思的來(lái)了。
世超在日志中翻到了幾個(gè)版本,說(shuō)修復(fù)了紅警 2 原版 bug。
比如 0.64 版本,修復(fù)防空步兵對(duì)防空炮的傷害(原版《紅警2》bug)。
0.18版本,建筑工場(chǎng)不再能夠同時(shí)被打包/移動(dòng)和出售(紅戒2及尤里復(fù)仇 bug );防止免費(fèi)工程師被刷出。
嘶,是不是不太對(duì)?
按理說(shuō),游戲引擎和代碼都是自己重寫的,為啥會(huì)有原版 Bug?
對(duì)于這個(gè)問(wèn)題,Alexandru 的回答很讓人震驚。
我給大伙總結(jié)下,網(wǎng)頁(yè)紅警 bug 有 3 種。
第一種屬于邏輯 bug。
Alexandru 寫了一些基礎(chǔ)規(guī)則后,一些復(fù)雜的游戲機(jī)制就可以在這個(gè)規(guī)則基礎(chǔ)上直接形成,同樣也會(huì)帶來(lái) bug。好比你用樂(lè)高按照別人的設(shè)計(jì)堆房子,別人的房子有 bug 不太穩(wěn),你的也一樣。
第二種屬于數(shù)據(jù) bug。
Rules.ini 配置文件,里面記錄著所有單位的攻擊力、血量、建造成本這些參數(shù)。當(dāng)官方自己寫錯(cuò)了參數(shù)值,那 Alexandru 導(dǎo)入這個(gè)配置文件時(shí),也會(huì)出錯(cuò)。
第三種屬于故意的 bug。
眾所周知,有些 bug 存在久了,反而會(huì)成為游戲特色和文化,比如 CF 鬼跳,街霸 2 的取消技,文明的核彈狂魔甘地。
紅警也是如此。
現(xiàn)在很多對(duì)戰(zhàn)平臺(tái)會(huì)評(píng)估紅警 bug:不影響平衡性的就保留,成為游戲特色;嚴(yán)重破壞公平的才打補(bǔ)丁修復(fù)。
所以到這你也明白了:
Alexandru 為了完美還原紅警 2 的手感,把某些原版 bug 也復(fù)刻了出來(lái)。
什么叫真正的原汁原味啊。。。
但這,還不算復(fù)刻紅警最困難的部分,最讓Alexandru頭疼的是在 3D 引擎里渲染 2D 的素材。
原版紅警用的是畫家算法(一種圖形渲染技術(shù))。
它把 2D 圖像一層層疊在平面上,靠著先后排序(比如讓士兵蓋在草地上面),達(dá)到一種立體效果。
但網(wǎng)頁(yè)版紅警用了真正的 3D 引擎來(lái)顯示這些貼圖后,反而出問(wèn)題了。
坦克該壓著草地還是草地該露出來(lái),建筑該擋住士兵多少,這些細(xì)節(jié)會(huì)很難和原版對(duì)得上。
“ 這種底層決定一旦做了就改不了,我在這些細(xì)節(jié)上花的時(shí)間簡(jiǎn)直荒謬 ”,這是 Alexandru 原話。
所以,這么一個(gè)方便你游玩紅警的網(wǎng)頁(yè)項(xiàng)目,背后真下了很大的功夫。
目前 GitHub 上有個(gè)叫 redalert2 的倉(cāng)庫(kù),里面反編譯了 Chrono Divide 的代碼并開(kāi)源,大家有興趣的或者也想重制一個(gè)網(wǎng)頁(yè)紅警,可以逛一逛。
寫到這,世超發(fā)現(xiàn) Chrono Divide 雖然牛逼,但對(duì)國(guó)內(nèi)玩家還是有門檻:
英文界面得慢慢適應(yīng),第一次進(jìn)入要等待下載美術(shù)資源,國(guó)內(nèi)聯(lián)機(jī)時(shí)延遲也比較高,平板上操作也很費(fèi)勁。
原本世超還打算寫一點(diǎn)使用教程,但發(fā)現(xiàn)有人已經(jīng)把事情辦了。
北京一個(gè)前端程序員阿晨,做了一個(gè)中文鏡像網(wǎng)站 ra2web。
https://www.ra2web.com/
這哥們不光把界面全部漢化,還用付費(fèi) CDN 加速,優(yōu)化玩家網(wǎng)絡(luò)體驗(yàn)。
最關(guān)鍵的是,他花了兩周時(shí)間逆向 JS 代碼,給移動(dòng)端加上了快捷面板——編隊(duì)、強(qiáng)攻、回基地,這意味著你即便用手機(jī)、平板,也能爽玩紅警了。
后來(lái)Alexandru知道后,還專門為中文站開(kāi)發(fā)了一套 API,也把中文站寫進(jìn)了致謝名單。
阿晨做 ra2web 原因很簡(jiǎn)單,他的經(jīng)歷和各位一樣。
2021 年他在 Win10 上玩紅警,調(diào)試兼容性調(diào)到崩潰。后來(lái)偶然接觸到 Chronodivide 項(xiàng)目,想到國(guó)內(nèi)一堆玩家還在買模擬器玩紅警,于是注冊(cè)了 ra2web 做中文站。
時(shí)至如今,ra2web 聯(lián)機(jī)用戶數(shù)已經(jīng)超過(guò) 10 萬(wàn),備受粉絲歡迎。
但阿晨為這個(gè)用愛(ài)發(fā)電的項(xiàng)目,也付出不少代價(jià)。
可能因?yàn)橛绊懥松虡I(yè)平臺(tái)和商家的利益,他的網(wǎng)站被攻擊過(guò),域名被 DNS 劫持過(guò),還遭過(guò)一些人身攻擊,也因?yàn)樽蕴脱貌坏郊胰死斫?。。?/p>
阿晨和我說(shuō),他的網(wǎng)頁(yè)紅警賬號(hào)之前莫名其妙上了次熱門,原因是一堆人@網(wǎng)警時(shí),把他也艾特上了。
時(shí)代確實(shí)變了,已經(jīng)有很多人不知道紅警是啥了。
但看著 Alexandru 那份持續(xù) 5 年、密密麻麻的更新日志,看著阿晨說(shuō)的那句“網(wǎng)站的運(yùn)營(yíng)就是滿足我自己對(duì)紅警的熱愛(ài)”,你會(huì)明白:
當(dāng)這個(gè)經(jīng)典游戲在現(xiàn)代系統(tǒng)上越來(lái)越難運(yùn)行,當(dāng)官方?jīng)]有推出適配新系統(tǒng)的版本,總有人會(huì)站出來(lái),用自己的方式守護(hù)共同的記憶。
他們不圖錢,甚至賠錢。
他們只是想讓每一個(gè)突然想起紅警的人,打開(kāi)瀏覽器,就能回到那個(gè)夏天。
撰文:刺猬
編輯:莽山烙鐵頭
美編:萱萱
圖片、資料來(lái)源:
網(wǎng)頁(yè)紅警:https://chronodivide.com/
網(wǎng)頁(yè)紅警中文站:https://www.ra2web.com/
GitHub - huangkaoya/redalert2
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.