在各種意義上,Aliens: Colonial Marines 都是一款普通得很的遊戲。ACM 於 2013 年推出,畫面粗糙,相比起後來 2014 年的 Aliens: Isolation,確實只能以無甚特色來總結。ACM 僅僅是一款極其普通的第一身射擊遊戲,異形成群結隊向玩家湧來,顯得毫無顧忌,玩家動輒就可射殺數以百計的敵人。相反,Aliens: Isolation 就只有一隻機智非常的異形,玩家無從以武力壓制對手,只能東奔西躲,逃避追擊,果真有 In space, no one can hear you scream 的意味。也許,從群體到個體,處理人工智能的方式,正好展示出兩款遊戲絕對的不同之處。
事隔五年,日前 ACM 竟再次成為了玩家的焦點。去年 10 月,一位遊戲模組開發者表示,他發現遊戲的 .ini 檔案中,程式碼有一個筆誤,而這個筆誤正好造就了 ACM 裡 AI 的嚴重問題。在原版遊戲中,異形通常表現呆滯,有時呆站原地,攻擊時也只會向玩家直線衝來,與電影中奸狡靈活的形象大相徑庭,更難以與 Aliens: Isolation 中的敵人媲美。自遊戲推出後,這位模組人員 TemplarGFX 一直致力開發可以全面改善遊戲的模組,結果竟花了三年才發現這一處筆誤。
▶ 一字之差,異形失靈
要處理這一個 bug,方法非常簡單,尋常玩家也能做到,只需把程式碼中的一行:
ClassRemapping=PecanGame.PecanSeqAct_AttachXenoToTether ->
PecanGame.PecanSeqAct_AttachPawnToTeather
改成:
ClassRemapping=PecanGame.PecanSeqAct_AttachXenoToTether ->
PecanGame.PecanSeqAct_AttachPawnToTether
最後一個指令 AttachPawnToTether 在原版遊戲中,被誤植為 Teather,竟然就使整個 AI 系統幾近崩潰。AttachPawnToTether 這一指令,其實是為異形定位的程序,令異形知悉自己身處關卡的哪一部分,可以採用哪些攻擊與撒退路線,並與其他異形敲定誰進誰退等等。結果,因為指令指入虛無,異形就形如切除了大腦一樣,難以理解周遭環境,以致無法適切對玩家作出反應。經檢測後發現,修改程式碼修改之後,遊戲體驗確實變得正常一點,異形較常採用掩護,也會撒退側擊,以至穿梭於場景之間,顯得機智許多。2013 年遊戲發行時,因為與先前宣傳營造的印象大有分別,無論畫面、AI、關卡設計等方面皆有不實之嫌,結果使開發商被消費者控告。這一個筆誤,或許也是遊戲命運中的一環。
▶ 未可致命的代碼錯誤
不過,有趣的倒是,這一個 bug 其實一直潛藏在程式碼之中。即使有一群熱心而有編程經驗的遊戲愛好者與代碼持續搏鬥,也是在四年多後才終於發現問題所在。一個令遊戲跡近崩坍、開發商承受官司、玩家大呼頭痛的 bug,竟然可以在不影響遊戲「正常」運作之下一路存在,也就難免叫人想到,會否有更多這類的事例?你所愛所憎的遊戲,會否同樣在某個環節出現了小差錯,卻一直不為人所知?隨着現代編程技術發展,程式碼只會越加繁複,一步扣一步,ACM 或許不會是孤例。
由 ACM 的個案可見,程式的漏洞其實早已潛藏於軟件之中,關鍵只在於會否為人所發現。開發費用動輒數以百萬美元的遊戲尚且如此,這一個問題會否昭示出其他現象?放在一個更大的框架去看,我們日常所用的各種機器與程式,同樣也受這種不穩定性所影響。每一套軟件、每一行程式碼,都隱含出現問題的可能,犯錯的可能隨複雜性幾何疊加,懂得利用的人自然可以乘虛而入。而這一種處置甚至難以稱之為攻擊,皆因弱點早在程式之內,駭客只是揭露出程式本有的問題。正如 ACM 的情況一樣,商品在市面上流通後,竟是由業餘人士而非開發者本身發現問題,程式的製作者難以保守每段指令。當我們以程式碼包圍生活,大抵就不得不覺察,代碼錯誤形同異形一般,始終伺機而動,等候偷襲的一瞬。