論壇炸了。
梁永琪是在公測第二十三天早上看到那條帖子的。
那時候她剛在辦公桌前坐下,水還沒來得及倒一杯,電腦一打開,瀏覽器首頁還停在昨晚沒關的論壇頁面上,她就看見那個帖子被頂到了最頂上。
帖子的標題用了加紅加粗的字體,發帖人的ID她有點印象,是內測時期就在的老玩家,那時候在論壇上發過不少攻略帖,寫得挺細的,底下跟帖的人都說他有耐心,是個熱心腸。
標題一共就八個字:「這遊戲還能不能玩了。」
她點進去的時候帖子已經有了四百多條回復。
這個時間點按理說在線的人不多,四百多條回復已經算是很高的熱度了。
主樓的內容不長,附了一條短視頻,畫質模糊,一看就是用手機對著電腦屏幕錄的,晃晃悠悠的,但能看清楚畫面里的內容。
畫面里一個戰士角色在野外追一個法師,那個戰士的移動速度明顯不正常,幾乎是平移著往前滑過去的,每一步之間的間隔比正常速度快了一倍多。
法師往後跑了幾步,回頭放了一個火牆,那個戰士從火牆上面直接沖了過去,血條幾乎沒怎麼掉,然後一刀把法師劈死了。
視頻只有十幾秒,法師從滿血到倒地也就幾秒鐘的事,整個過程快得不像話。
主樓最後一句寫著:「他打我的時候我數了,他的攻速比我快了起碼兩倍。
這不是技術差距,這是開掛。
盛大不管的話我退遊了。」
帖子底下跟帖的人從第一頁吵到第七頁。
梁永琪一頁一頁翻過去,看到有人說自己也被這種人殺過,說昨天在豬洞門口遇到一個道士,召喚出來的骷髏跑得比自己的馬還快,追著咬了半張地圖。
有人說在蜈蚣洞見過一個十級的新手穿著一身商店裝,追著一個穿極品裝備的三十級玩家滿地跑,那個三十級的玩家放什麼技能都打不中,新手的走位看著就不對勁,每一步都像是計算好的一樣精確,根本不像是真人操作出來的。
有人貼了一張截圖,截圖里是兩個角色的PK畫面,但截圖只能看到靜態的畫面,看不出什麼問題,發截圖的人就在底下補了一句:「你們看他的血條,我打他一下他血條動都不動,他打我一下我半管血沒了。」還有一個人發了一條長長的分析帖,那個人的ID梁永琪也見過,是個喜歡研究遊戲機制的玩家,內測的時候寫過好幾篇關於屬性計算方式的帖子。
他在分析帖里推算這個外掛的原理大概是在客戶端修改了移動速率的封包,讓伺服器誤以為玩家的坐標每次更新的時間間隔縮短了,導致角色在地圖上的移動頻率翻倍,同時攻擊動作的幀數也被壓縮了,原本需要一秒鐘做完的揮刀動作變成了半秒鐘完成,所以攻速看起來就翻了一倍。
他還在帖子裡說,這種外掛的技術門檻不算高,只要有人寫了第一版,後面很快會有各種變種出來,到時候什麼變速的、瞬移的、鎖定血量的都會冒出來,如果盛大不抓緊時間想辦法,這個遊戲的風氣就完了。
梁永琪把帖子從頭翻到尾,中間看到好幾條回復是玩家在互相罵,有人說「你自己菜就怪外掛」,有人說「你眼瞎吧這速度明顯不正常」,樓歪了又正,正了又歪。
她把最後一條回復看完,然後關掉了網頁。
她沒有坐在椅子上,站起身走到辦公室門口,朝李軒的工位方向喊了一聲:「李軒,來我辦公室。」
李軒進來的時候手裡還拿著半塊麵包,咬了一口的那個豁口朝外,麵包邊上的碎屑沾在他嘴角。
他昨天晚上加班到凌晨兩點多,早上來得晚,估計還沒來得及正經吃早飯,那半塊麵包就是他的早餐。
梁永琪把屏幕轉過去讓他看那條帖子裡的視頻,他咬著麵包看完,把麵包放在桌角,麵包屑掉在桌面上,碎碎的幾粒。
「加速外掛。」他說。
聲音沒有起伏,像在陳述一個他早就知道會來的東西。
「客戶端修改了移動指令的發送頻率,伺服器收到之後按正常邏輯處理,但移動速度的實際值被客戶端篡改了。
國外的遊戲也遇到過這種問題,目前沒有完全堵死的方案。」
「沒有完全堵死的方案是什麼意思?」梁永琪看著他。
「意思是你堵住了一個埠,他會換另一個。
你封了一種算法,他重新編譯一個。
這類東西永遠追在後面跑。
你能做的就是提高作弊的成本,讓開掛的人被封號之後重新練號的代價高於他開掛獲得的收益。」
梁永琪靠在椅背里,手指在桌面上敲了兩下。
她心裡算了一下,公測才二十三天,玩家的等級普遍還不高,裝備也還沒成型,這個時間點出現外掛其實不算太意外,但問題的關鍵是,如果現在不及時處理,等到玩家的等級和裝備都上去了,外掛造成的破壞會更大,到時候再來補救就晚了。
她看著李軒,李軒的表情還是那副樣子,不慌不忙的,好像這個問題他早就想過了,只是在等一個合適的時間點提出來。
「一周。」梁永琪說。
「我給你一周時間,出一個反外掛的初步方案。
這周內我不要求你徹底解決,但你至少要拿出一套可以上線運行的反制系統。」
李軒把桌角那半塊麵包拿起來又放下了,麵包已經涼了,他看了一眼沒有咬。
「我試試。」
「不是試試。
是做。」
李軒走了之後,梁永琪拿起手機給陳浩打了一個電話。
她把情況簡短地複述了一遍,包括帖子裡的視頻、玩家的反應、李軒的判斷。
她說得很急,語速比平時快了不少,電話那頭陳浩沒有打斷她,一直聽她說完。
她說完之後等著電話那頭的回應。
陳浩沉默的時間比她預想的久了一些,久到她以為信號斷了,正要開口問的時候他的聲音響了起來。
「技術和制度要同時走。」陳浩說,「技術上是李軒的事情,你去定目標讓他執行。
制度上有一個東西你可以現在就做。
在遊戲裡增加一個舉報功能,讓玩家在野外被開掛的人殺了之後可以直接把對方的ID提交到後台。
同時成立一個人工巡查小組,找幾個信得過的人,24小時輪班進遊戲裡觀察可疑帳號。
代碼堵不住的東西,人眼能看見。」
梁永琪把手機換到另一隻耳朵上。
「舉報功能要加在界面的哪個位置?」
「放在PK死亡的結算界面。
玩家被殺了之後彈出來的那個窗里,加一個『舉報對方作弊』的按鈕。
點擊之後自動把戰鬥日誌和對方的IP信息打包提交。
玩家不需要手動填寫任何內容,一鍵完成。
這樣操作門檻低,願意用的人就多。
你要是讓他們自己填表單、寫描述,大部分人嫌麻煩就不報了。」
梁永琪拿起桌上的筆,在手邊的便簽紙上寫了一行字。
寫完她又補了一句:「巡查小組的人從哪裡找?」
「從玩家裡面找。」陳浩說。
「挑內測期間最活躍、在論壇上口碑最好、發言最理性的那些人。
給他們發工資,按兼職算,每個人一個月進遊戲巡查固定時長的班。
讓他們簽保密協議,不對外透露身份。
這些人對遊戲的理解比新招的員工深,他們知道什麼行為是作弊、什麼行為是正常操作。
而且他們在玩家群體裡有公信力,以後就算有人說盛大亂封號,這些巡查員出去說一句『我親眼看到的』,比官方發十篇公告都有用。」
「好。
這個我來安排。」
「李軒那邊的技術方案,你讓他做一個內存掃描模塊,在客戶端運行的時候檢測是否有外部程序在修改遊戲進程的內存地址。
這個檢測做到登錄階段,一檢測到就禁止客戶端登錄。
不給他進去玩再封號的機會。
省得有人開著小號進去試掛,封了也不心疼。
直接在門口攔住,讓他連門都進不去。」
梁永琪在便簽紙上又加了一行字。
她的筆尖在紙面上停了片刻,然後說:「浩哥,你這套東西想過多久了?」
「你打電話前半個小時。」陳浩說。
梁永琪把便簽紙從本子上撕下來,折好放進上衣口袋裡。
「掛了,我去推進。」
之後的幾天,開發部的燈光沒有在凌晨兩點之前熄滅過。
李軒帶著兩個技術骨幹連夜寫內存掃描模塊的底層代碼,一邊寫一邊在本地測試。
那個模塊的原理說起來不算複雜,就是監控遊戲進程在內存里的數據區域,看有沒有外部程序往這個區域寫入或者讀取數據,但具體實現起來有很多麻煩的地方。
一個是不同玩家的電腦配置差別很大,掃描速度不能太快也不能太慢,快了容易誤報,慢了影響登錄體驗。
另一個是外掛的程序也在不斷變化,有些外掛藏在系統進程裡面偽裝成正常軟體,掃描模塊得能識別出來。
李軒帶著人一行一行代碼地改,每改一版就拿到測試機上跑一遍,跑完看日誌,看哪裡報錯了哪裡漏了,再改再跑。
第三天的時候他跑通了第一版檢測邏輯,把一個專門用來測試的外部程序掛在客戶端旁邊,登錄的時候檢測模塊直接攔截了登錄請求,屏幕彈出一行紅色提示:「檢測到第三方程序,請關閉後重新嘗試。」李軒截圖發到工作群里的時候,群里幾個人都發了鼓掌的表情,梁永琪回了一句:「繼續壓誤報率。」
【跪求禮物,免費的為愛發電也行!】