|
Bug從來不是個(gè)讓人高興的東西。然而也有例外,那就是當(dāng)你弄明白了這個(gè)Bug的時(shí)候。本文講就是我曾經(jīng)遇到的一個(gè)最大的、至今仍未解決的 Bug的故事。
年青時(shí),我曾經(jīng)開發(fā)了一些魔獸世界的插件。那時(shí)候我除了 沉迷于這個(gè)游戲之外,還對開發(fā)游戲外掛非常感興趣,你知道,那是一種非常上癮的感覺,特別是當(dāng)發(fā)現(xiàn)有新的公共API公布時(shí),真是興奮的不得了。 這樣我也就有了巨大的動(dòng)力去學(xué)習(xí) Lua 語言了,它是個(gè)非常有意思的編程語言。
當(dāng)時(shí),我和我的一個(gè)朋友開發(fā)了一個(gè)叫做 FriendNET 的插件,這是個(gè)非常棒的插件。它能幫助我們在游戲中解決一個(gè)很大的麻煩: 找到你真正的朋友,防住探子。這個(gè)插件會(huì)把你游戲中的好友清單傳送給你的所有朋友。反過來,也會(huì)取回他們的好友列表。最終,你的好友數(shù)量會(huì)不斷增加,而且里面不會(huì)有探子。
你知道,插件API里絕對不會(huì)給你提供任何形式的網(wǎng)絡(luò)交流通道的,所以,我們只好一種黑客注入方式來傳送好友清單。 我們的做法是把這個(gè)清單序列化,通過在線游戲聊天室發(fā)給對方,用私語通知對方接收這些名單。
是的,現(xiàn)在大家都玩Facebook,但幾年前我們就是通過這種地下方式在這個(gè)虛擬世界里擴(kuò)展我們的社會(huì)關(guān)系網(wǎng)的。而且不亦樂乎。
畢竟,F(xiàn)riendNET還是有一些問題存在。P2P程序都是很難維護(hù),每當(dāng)你有Bug修復(fù)、版本升級(jí)時(shí),你很難讓所有的用戶都立即升級(jí)他們的 程序。 于是出現(xiàn)了不同版本一起在線通信,導(dǎo)致了很多莫名其妙的事情出現(xiàn),很難定位是那塊出了問題。
其中有一個(gè)bug特別的讓人困惑,難以確定:每隔幾天,F(xiàn)riendNET就會(huì)出現(xiàn)一些不正常的信息,會(huì)導(dǎo)致這個(gè)插件的有些界面上一片混亂。我們收到了相當(dāng)多的bug反饋,而且確信這個(gè)問題是真實(shí)存在的,但不管我們怎樣的努力測試,總是不能復(fù)制這樣的現(xiàn)象。這是個(gè)來自地獄的bug。最終我們放棄了,為了推托責(zé)任,我們就說這個(gè)問題是由于魔獸惡劣的API導(dǎo)致的。
如今我已經(jīng)不玩魔獸世界好幾年了,然而突然有一天我明白了這個(gè)問題是怎樣產(chǎn)生的了。當(dāng)明白了是什么地方的出來問題后,我意識(shí)到我們是被習(xí)慣性的 思維方式蒙蔽了。
你知道,你在游戲中扮演的人物在魔獸世界里是可以喝醉的。 當(dāng)了喝了太多的烈酒后,你的屏幕開始變形,變模糊,而且你走路走不了直線。 同樣,當(dāng)你在聊天時(shí)敲入一段文字:
Penelope says: I'm so wasted
電腦會(huì)給你顯示成:
Penelope says: I'm sho washted ...hic!
因?yàn)镕riendNET是把所有的交流信息全部打包發(fā)送的,所以每當(dāng)在群發(fā)的人中有喝醉的時(shí),信息就會(huì)變成亂碼。
FriendNET 已經(jīng)在插件網(wǎng)站上消失很長時(shí)間了,估計(jì)你現(xiàn)在已經(jīng)不能下載到它了。我懷疑也許它還能在現(xiàn)在的最新版的魔獸世界里使用。但我始終沒有去修復(fù)這個(gè)bug,每當(dāng) 我回想起這個(gè)事,我都會(huì)覺得非常有趣。
it知識(shí)庫:我曾遇到最大的一個(gè)bug,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。