後臺收到了許多催更,抬頭一看表,我擦,這次冥想居然冥想了一個多星期!(龍叫獸:你丫是天天在睡覺吧!)咳咳,不過,老衲又回來了!
說起來比起前面幾周的順風順水,這兩周大溼感覺到 Pokemon Go 的熱度明顯降低:比如,在三藩街頭各種姿勢拿著手機浪的道友們慢慢看不見了,比如朋友圈刷屏也刷到天底下再也沒有關於 Pokemon 的新鮮事了,就連新聞逐漸也懶得報導了。這遊戲要是大溼出品,大溼早心裡開始發慌了。可這段時間,Niantic 在忙活什麼?
Niantic 自己可沒跑來跟龍大溼說。大溼夜觀天象才發現,Niantic 這兩周,還真是忙得很!
如果用一場戰爭來比喻他們在做的事情,Pokemon Go 的公司至少在打四條不同戰線的仗,那就是:反作弊、修 bug、開新區、加功能。
時間有限,今天只講一條戰線:反作弊。
不得不說,Pokemon Go 太高的初始熱度造成了它迅速成為眾矢之的的局面。到上周為止,各類外掛如同聞到餅乾的螞蟻一樣,呼朋引伴地衝到這片肥沃的土地,迅速完成了從陽春白雪(github)到下裡巴人(taobao)的蛻變。
作弊與反作弊這件事,既有趣又無趣。對於想要深入理解 Pokemon Go 的遊戲的數值設計、通信工作機制的先驅們來說,作弊器的進展簡直堪比天文望遠鏡、顯微鏡、計算機和更衣室偷拍機的發明。但是你如果只是等著用外掛刷個級別——
呸,真沒生活情趣。
後臺收到了無數的關於要推薦外掛和推薦掛機地點的要求,大溼從前都一一無視了。但是該來的總還會來,既然外掛已成氣候,哪怕是批評,也得來寫一篇。
龍大溼今天就以「科班批八字、祖傳大數據」的科學精神,來說說 Pokemon Go 的這短短幾周的外掛曆史。
Pokemon Go 外掛發展小史
用最簡單的方式來說,一個遊戲嘛,無非就是你點點點,他出出出,你再點點點,你死了或者他死了。歸根結底就是伺服器處理玩家的輸入、給你個答覆的過程。(龍叫獸:我潑威!就這描寫水平還想當文化人?)
龍大溼:咳咳,別打岔,Pokemon Go 也是逃不出這個模式的。一次「戰鬥」發生的過程,無非就是這樣一次對話:
我告訴伺服器:給我真正的挑戰吧!爺爺在這裡等著~
伺服器:好,你丫附近有隻雞!
我劃拉一下告訴伺服器:老子的球可出去了啊~
伺服器:這種姿勢也敢出門?雞都不願跟你走!
我又劃拉一下告訴伺服器:老子的另一隻球也出去了啊!
伺服器:這次幹得漂亮,You do Chicken Right! 雞歸你了!
然後,然後大溼的精靈欄裡就增加了一隻雞。
在你幸福地挑戰一隻又一隻雞的時候,有一隻聰明的程式設計師想了個辦法,修改了手機的 GPS 結果,把步驟1改成了:
給我真正的挑戰吧!爺爺在時代廣場等著~
給我真正的挑戰吧!爺爺在丘比特之箭等著~
給我真正的挑戰吧!爺爺在山景城圖書館等著~
伺服器也沒記性啊,只知道你問了啥,我就按照劇本回答就好了。剩下的步驟一切如常。這就是Pokemon Go 作弊器的第一個階段:
位置模擬
這個程式設計師的辦法,學名叫做 location sproofing。基於 sproofing 的作弊器,也就是 sproofer,早在史前 (Pokemon Go 的歷史)就出現了,用於對付一些需要地理位置的遊戲(比如 Pokemon Go 的前身 Ingress)和應用(比如需要去店裡 check in 的 foursquare)。
同樣的原理稍加修改就可以放在 Pokemon Go 上來用,誠實的程式設計師很快在 Github 上開源出來。
這種簡陋的辦法醜是醜了點,但是扛不住人家出的早啊。這種外掛以及和它齊頭並進的其他形式的 sproofer 因為跑起來比較困難,只是在很少的人群裡默默地、緩慢地發育。
龍大溼其實並不反對這種形式的 sproofer。從它一開始就出現在 github 上開源就能看出來,這純粹是一種程式設計師測試遊戲機制地探索性行為。很多人在論壇上交流反推遊戲檢測外掛的規則、孵蛋的規則、nearby 的規則、以及精靈分布的規則。與其說這是一種「生產力」,倒不如說這是一種「科學儀器」。
龍大溼另一個不反對它的理由是,因為早期 sproofer 的技術門檻有點兒高,所以沒法廣泛被大家使用,不會引發通貨膨脹,這就如同3D列印一元硬幣一樣,成本控制不好都會虧錢的。
直到,一種叫做「Pokemon Go 懶人版」的大殺器外掛出爐了。
這個「懶人版」外掛從技術上實在無甚高明之處,無非就是把一個位置模擬器打包和原有的遊戲打包在一起,變成了一個非官方的版本,然後通過非官方的途徑發布出去。
「懶人版」很容易認,那個十字方向鍵就是最大的特徵。
說它沒有創新的確是不公平的。「懶人版」為被鎖區的大陸同胞提供了破門偷窺的機會。但是龍大溼說它是大殺器,主要是因為以下三個原因。
第一,也是最重要的,它極大地降低了使用外掛的難度,事實上讓位置模擬外掛廣泛傳播和使用,直接引發了通貨膨脹。對正常玩家的不公平自然是不需說,而對使用外掛的玩家就是好事兒嗎?龍大溼覺得不是。我完全能想像從外掛開始入局的玩家們會對整個 Pokemon Go 遊戲留下什麼樣的印象,Pokemon Go 最精華的部分其實在於運動、社交、互動和美景。僅從遊戲性來說,它其實遠不如之前的若干代 Pokemon 掌機作品。去除了這些精華部分,形容它是一個乾澀、無聊、不知所云的低幼版 Pokemon 系列續作毫不過分。
第二,「懶人版」是幾乎是首個大規模非法利用 Pokemon Go 做商業用途的工具。位置模擬明確違反遊戲的用戶協議,非法!發布修改版本的遊戲,吃果果的侵權!通過企業帳戶分發,違反蘋果的企業帳戶協議!而開發者,那個什麼「XX助手」,居然整個就是一個發布盜版應用的平臺。這樣一個「違規」組合肆無忌憚的營銷和傳播,這種滑稽感如同就是一個街頭髮廊一邊提供某服務一邊賣給你地溝油炒飯一邊在門口打大幅 LED廣告,龍大溼只能是贊一聲無恥,嘆一聲佩服。
第三,這個修改版本因為需要進入非官方的分發渠道,所以需要你選擇「信任」代表「XX助手」的那個流氓企業。這裡面有很多手機安全隱患問題。該企業在你的手機裡的權限可不止是運行「懶人版」這一個 app 那麼簡單。
經此一役,「XX助手」也算是一戰成名,代價是所有的遊戲玩家,都是變成了直接受損的或者潛在受損的群體。
地圖掃描
「懶人版」夠狠了?遠著呢!外掛的戰鬥遠沒有停止。
還記得剛才我們和伺服器的對話嗎?
我告訴伺服器:給我真正的挑戰吧!爺爺在這裡等著~
伺服器:好,你丫附近有隻雞!
我劃拉一下告訴伺服器:老子的球可出去了啊~
……
第二類的外掛的想法就更有意思了,還是那句話,伺服器沒記性啊,腦洞程式設計師們就這樣欺負他,把對話變成了這樣:
腦洞程式設計師:給我真正的挑戰吧!爺爺在3街等著~
腦殘伺服器:好,你丫附近有隻雞!
腦洞程式設計師:給我真正的挑戰吧!爺爺在4街等著~
腦殘伺服器:好,你丫附近有隻老鼠!
腦洞程式設計師:給我真正的挑戰吧!爺爺在5街等著~
腦殘伺服器:好,你丫附近有隻迷你龍!
腦洞程式設計師:給我真正的挑戰吧!爺爺在6街等著~
腦殘伺服器:好,你丫附近啥也沒有!
……
就這麼一陣猛聊,雖然我們完全不按套路出牌,但是腦殘伺服器啥也沒意識到,而此時腦洞程式設計師已經拿了一張齷齷齪齪的地圖,默默地在地圖上勾勾畫畫,biu~,一張精靈地圖就這麼新鮮出爐了!
前文中專門介紹過的 PokeVision 就是這個流派的外掛。之所以它被判做惡意外掛,並且被迅速關停,而其他一些精靈地圖沒有,就是因為它通過直接發送伺服器請求得到完整的精靈數據,而不是依賴玩家標註。這簡直就是給派出所打電話問哪兒有站街妹。這種請求既強大高效,又無比脆弱,並且也一些法律問題,實在很難做大做久。
這種外掛聲稱沒有幫你做什麼真正的事兒,但是它的的確確「幫」到了你,因為使用者得到了遊戲規則內本不應該得到的信息。到底是不是惡意,Pokemon Go 根本懶得跟玩家吵這個嘴架,直接依照「不許導出遊戲內數據」的協議要求下架了 PokeVision。
智能掛機
俱往矣,跟最後出來的這一批外掛相比,前面這些都弱爆了。
外掛的終極目標從來就不是輔助!而是替你玩!
如果你注意到了前面的一個說法,就是 PokeVision 「直接發給伺服器請求」來得到哪裡有精靈的數據,這個動作完全不用打開遊戲嘛,那麼我們能不能把丟球啊,摸 PokeStop 啊,甚至進化精靈啊啥的全都代理了,也都不打開遊戲呢?
當然能,如果你知道伺服器和遊戲之間是怎麼說話的話。經過了一個多星期的破解工作,早期探索者們基本上弄清楚了整個通訊的協議,然後,伺服器就像孫子一樣,想怎麼被玩,就怎麼被玩。(龍叫獸:你確定它想被玩?)
邪惡外掛:給我真正的挑戰吧!爺爺在這裡等著~
伺服器:好,你丫附近有隻雞!
邪惡外掛:你看我的嘴型:我用~滿分~姿勢丟了個球!
伺服器:好牛B,你贏了,雞歸你。
這個滿分怎麼定義,答案是想怎麼定義怎麼定義。所以外掛丟出去的球,次次都是 210 XP:100 XP 的捕獲經驗,100 XP 的 Excellent, 10 XP 的 Curveball,每次一定滿分,並且沒有過場動畫(因為連遊戲都沒打開嘛,直接在臺式機跑著呢),1秒鐘解決戰鬥。
再疊加一下之前的技巧,「爺爺在3街等著~」, 「爺爺在4街等著~」, 「爺爺在5街等著~」, ……,來個無限循環,看,這不就是一個無需人管、不開遊戲、24 * 7在戰鬥的 「智能外掛」。
這尼瑪還玩個蛋。
後來這些個有責任心的外掛還放進了「自動清理背包」,「自動選擇優秀精靈」,「自動進化」,甚至「集中雙倍經驗進化」。當然從難度來說,後面這些附加功能全加起來,也不如一開始破解通訊包困難。
龍大溼用小號試用了這套工具,果真誠意滿滿、童叟無欺,每小時3萬~5萬點 XP。這樣算下來,一天時間升20級輕鬆寫意,兩天升25,兩個星期升滿40級。捨得用雙倍蛋,一周就東方不敗。
然後呢?
就沒有然後了啊。
第一個用外掛練滿級的玩家,很有自尊心地,
自殺了。
我相信他是和龍大溼一樣的有榮譽心的人,用外掛練起來的帳號,僅僅是用於測試外掛。這位玩家聲稱此號沒有打任何一座塔,默默升級,不影響正常玩家的樂趣,測試完成之後,自己給 Niantic 寫信自首要求刪號。
當然了。換了龍大溼,也會這麼做。
當東方不敗,有啥意思?
蹲個草叢,起碼還能玩個鳥。
瞬移捕捉
成功?
我才剛上路好不好!
在收集者的眼中,升級只是通向成功的一小步!稀有精靈呢?歐亞澳美大陸專屬精靈呢?151精靈全收集呢?
你猜外掛會不會束手無策?
當然不會!看,瞬移捕捉就來了。
瞬移捕捉聽起來早就應該在位置模擬的時代就應該發明出來了啊,為什麼到現在才露臉?
好問題!能問出這個問題說明你剛才認真聽了!
回顧一下剛才,我們一直在說外掛怎麼怎麼牛逼,能幹這個那個,但是一直沒有提到遊戲方到底有什麼方法防禦?難道 Niantic 就是傻逼,這些都從來沒想過嗎?
他們當然想過。「開飛機」的外掛,早在 Ingress 時期就是 Niantic 的頭號大敵。儘管我們相信這次 Niantic 為了更快發布遊戲並沒有來得及做很仔細的防禦措施,但是畢竟人家對敵經驗豐富。你這麼猖獗地飛來飛去,傻子也看出來你是在作弊了好不好。
Niantic 做了一個很簡易的檢測。如果你在短時間移動了不合理的距離,那麼你一定是作弊。這個道理確實很簡單,也很難辯駁。
遊戲的攻防向來都是這樣,封作弊帳號不怕漏殺,就怕錯殺。漏殺無非就是少量作弊的人沒被抓住,這些得利者並不會跳出來又唱又跳BB說「嘿你個傻逼你沒抓住我」;但是一旦錯殺,這些受損玩家恨不得罵得讓全世界都知道「我是無辜的公司你真是個傻逼啊」。如果公司要以作弊的名義處罰你,那麼他得有確實的證據,否則還不如不管你。
如果你夠狡猾你可能會說,我可不是在作弊,我20秒鐘從東岸跑到了西岸並不是因為我是一顆光子,而是我換了個手機登錄!聰明!但是 Niantic 在用戶協議裡寫了,不許你用多個設備登錄同一個帳號。想坑我,哼哼。
即使是這樣,Niantic 還是留了一個心眼,萬一你跟我說你的 GPS 壞了咋辦,你就是車好開得快怎麼辦,你萬一就是一顆光子怎麼辦?公司的做法也很絕,那就是,我罰,但是我不吭聲,也不罵你是騙子,默默地罰,日你個內傷。
具體的方式是,按照你移動的不合理程度,給予一定的罰時,在罰時內,打塔取消收益(戰鬥一開始就自動假裝伺服器斷線),抓精靈取消收益(球扔出去之後100%逃脫),摸補給站取消收益(補給站假裝冷卻未完成)。注意這裡的「取消收益」這幾個字,並不是不讓你做動作,但是就是不讓你有收益,而且裝得很敬業,你根本拿不出證據來你是被「罰時」了。罰時從15分鐘到90分鐘不等,就是要選擇一個讓你難受,又不讓你放棄的時長。
這樣搞其實很聰明,如果這個邏輯能夠有效地運轉,基本上可以斷絕了「瞬移」這種行為:因為瞬移你不就是為了打塔、摸站、抓精靈嘛,罰時罰個15分鐘,15分鐘正好稀有精靈從圖上也該消失了,瞬移有代價沒收益,這麼蠢的事兒誰還去幹。
所以瞬移捕捉,需要解決的第一個問題,就是瞬移罰時。
而如果想讓瞬移捕捉自動化,需要解決的第二個問題,就是「去哪兒」。我飛去抓稀有精靈,總得有人持續不斷的告訴我精靈在哪兒吧。這個問題好解決,在相當長的一段時間裡,稀有精靈坐標的問題,都可以用剛才提到的第二個時代的「地圖掃描」來解決,無非就是過濾一下掃描結果,只通知你稀有的那些。
Poke Location Feeder,稀有精靈實時坐標源
而瞬移罰時的問題,拖了好幾周,才最後由一個遊戲的 bug 得到了解決,這個 bug 就是:
瞬移罰時按照「丟球」動作的地點判罰,而不是按照開始捕捉地點。
簡單說就是你一直都在地點 A 活動,有人告訴你地點 B 有一隻卡比獸,你一個瞬移飛過去到 B 點,點開捕捉界面,然後飛回到 A 點之後,再丟球捕捉,捕捉依然有效,並且不判罰瞬移!
這個 bug 一公布,瞬移捕捉終於解決了最後一個問題,幾乎是一兩天之內,所有的掛機外掛都加上了這個功能。
Niantic 的反擊
Niantic 坐不住了。
面對一個月來,愈演愈烈的外掛,Niantic 做出了第一次實質性的反擊:改 API。
這也是最簡單直接、也最有力的一種反擊。因為所有的瘋狂影響公平性的外掛都是基於直接發送伺服器請求的,而伺服器通訊的話語權是完全掌握在 Niantic 手裡的。
7月22日,NecroBot, Pokemon 最強大的外掛開源。
7月27日,NecroBot開源項目不斷走熱,一天之內 commit 達到143次,各種功能迅速上線。
7月31日,Niantic 改 API。所有基於 API 的外掛和掃圖工具應聲而倒,全線癱瘓。
8月3日,Niantic 興奮地在自己的 tech blog 上發帖,表示自己封殺外掛卓有成效。
這次反擊的效果整整持續了:
7天。
8月7號凌晨,破解團隊宣布第一次成功調用新 API。
8月7號下午,外掛新版發布,一夜回到解放前。
這七天,史稱「外掛團隊醒醒啊,這是奧運會」。
如果說前幾種外掛是敵人太狡猾、鑽了手機 GPS 的空子,還可以理解的話;如果說一個月內被人拿下 API,是敵人太聰明、你沒有準備好,也可以原諒的話;那麼這個7天被打臉,大溼真的只能說,你太弱逼了。
小史就講到這兒。
是因為,小史,就發展到這兒。
龍大溼公曰:向來遊戲打外掛,最難的無非是「我在明、敵在暗」。現在外掛居然開源給你看,你真的不覺得,有那麼一點點丟人嗎?
反正龍大溼覺得,
很丟人。
天色已晚,大溼先走一步!