[技術討論]網路軟體開發的bug分析與公司開發管理問題之網易篇(有更新)

qingrun發表於2013-01-24
接上文阿里篇,地址是:http://space.itpub.net/257598/viewspace-753132
本文是第二篇,網易的東西用的不多,只有這款遊戲,當然,通過筆者和網易開發人員互通的郵件可以看到,筆者對這些bug的認定是存在的。
另外,請網易的人不要感覺不好,也許這篇文字後,你們戰國風雲的玩家會增加不知多少呢,這也是個側面的宣傳呀。

4.    網易
4.1    網易的問題和分析
網易的東西用的不多,2012年上半年看到了支付寶裡面的一個《戰國風雲》的宣傳,貌似和曾經玩過的《熱血三國》很類似(其實自從熱血三國推出後,很多公司都模仿熱血三國模式進行了自己的三國類或者戰國型別的遊戲開發,這樣的抄襲很常見),於是就過去開始玩了一下。
結果發現了這樣的一些問題:
1、    一支部隊從A走到B建立一個據點,然後再到C,如果沒有到C的時候,就撤掉了B據點,部隊會從中途往B據點返回,發現B消失了,就立刻回到A,然後部隊損失一個百分比,好像是10%,因為有段時間沒有玩了,所以,數值記得不是特別清楚。部隊出發的時候每次攜帶都是往返的糧食數量,建立據點後,就可以立刻得到補充——這一點和熱血三國比起來就弱了一些,熱血三國的做法是,每個據點的糧食是單獨計算的,必須運送過去或者收穫到糧食,糧食不是全域性共用的,這兩者之間的數值計算差距,可就非常大了(注:青潤曾經在game2熱血三國第一伺服器成為了那個伺服器的老大,全服的州城12個,我手中的兩個賬號控制了4個,前後玩了將近一年時間,投入60塊錢,最後賣掉一個賬號3000塊錢完全退出。個人認為,熱血三國的數值計算做得很細,大部分地方考慮的都比較合理,幾乎沒有發現如此明顯的弱點。當然後來熱血三國升級後我就沒有再玩,現在的情況就不知道了)。
2、    同樣一支部隊從A走到B建立一個據點,然後再到C建立一個據點,再到D建立一個據點,……中間只要我撤掉一些或者幾個據點,部隊自動返回,就會出現損失同樣百分比的部隊數量,軍隊立刻回到出發城市。
3、    在據點裡沒有出發的部隊會立刻回到出發城市,並且沒有任何兵力損失。
4、    針對這一點,很多玩家開始用這樣的方式進行部隊撤回:將領帶一個兵出去,撤掉據點,將領返回,兵力一個不會損失就全部回到了出發城池。
分析,網易的程式設計師可能是為了減少程式碼的複雜程度,我不瞭解他們的技術水平或者數學到底學的如何,但是從這裡來看,這樣的簡化明顯是不符合常規邏輯的,的確,這樣的方式讓程式碼的複雜度減少了很多,也許是為了效能考慮也許是確實感覺自己的伺服器承受不了這樣程度的複雜計算,但是,真得加上就很複雜麼?筆者認為這是需要評估的,筆者沒有時間去為他們做這方面的詳細評估,所以只能寫出來一洩了之。
當然,熱血三國也出現過一些比較明顯的bug,諸如整點定時養兵法,只要在整點的那一秒,城池內是有糧食的,就可以保證不會出現逃兵的事情。於是本來只能養100萬軍隊的,養了5000萬軍隊,每次出發征戰都要到處調集糧食然後才能出動。當然,別人也無法攻打,無論有多少部隊,一次都只能帶一定數量的,對付別人兵城內的幾千萬軍隊都屬於被秒死。而同樣也出現了使用計謀讓糧草車自動返回然後進攻這個城池的對應戰術。於是激發了後續的應對戰術就是多路定點運糧法和特殊時期道具送糧法等等。
另外,在這類遊戲裡面大都存在距離計算問題的粗略性,基本都採用了筆者稱之為九宮格計演算法的方式,也就是對角線和邊角之間的距離同等。而實際上應該採用的是地圖中心等距計演算法,但是後者的計算複雜度要比前者高出很多個數量級。
關於這類遊戲的內容和如何才能吸引玩家積極投入,而不是報復性投入,筆者曾經做過一些深入的分析,但是還沒有能全部整理出來,諸如,不要故意通過活動製造玩家衝突,要讓玩家主動發生衝突,前者會造成一些玩家的反感而退出遊戲,而後者是必然會發生的。
例如,熱血三國曾經推出一個挖寶的任務,挖寶的時間是24小時內的半個小時以上的採集,而經常開啟寶藏地圖看到的挖寶地點是別人已經佔領正在進行採集的地點,於是,這樣就不可避免的發生衝突,一方花了錢,另一方是先來後到不願意讓,這樣通過活動設定讓玩家發生衝突的活動基本上剛開始沒多久就消亡了。
也就是說,不要拿玩家當傻瓜,刻意的作惡,會引來玩家的反抗的。關於這方面和一些其他部分的資料因為不屬於bug範疇,所以就不在本文中進行分析了。
4.2    網易的答覆和我的失望
網易的人看到我發的微博後就聯絡上我,想要知道是怎樣的數值計算問題。於是,青潤直接把4.1中的內容全部拷給了他們,因為本來就是為了交流溝通。
4.2.1    網易發來的第一封郵件的內容
你好,青潤先生,
 我是網易的***。《戰國風雲》是我負責的一款產品。我聽同事說你對網易的產品有一些評論,其中有點名說到《戰國風雲》有一些數理邏輯的缺陷。比較好奇,所以跟同事要了你的email,冒昧寫信給你,想請教一下,你說的數理邏輯缺陷,具體的是指什麼呢?還望不吝賜教,呵呵。我們也希望和第三方人士多交流一下看法。
 抄送的同事**是《戰國風雲》現在的主****,對其中的一些數值問題,他參與討論,能提供一些直接具體的資訊。
 期待回覆,多謝!
 Regards
***
4.2.2    然後回覆
您好
我的文字還沒有寫完,不過,網易的反應算是最快的了。
網易的東西我用的不多,只有這個遊戲也是因為意外才開始玩了一下。我把文字先貼給你們看看,昨晚剛剛寫完關於你們的這個產品的這段文字。
網易的東西用的不多,2012年上半年看到了支付寶裡面的一個《戰國風雲》的宣傳,貌似和曾經玩過的《熱血三國》很類似(其實自從熱血三國推出後,很多公司都模仿熱血三國模式進行了自己的三國類或者戰國型別的遊戲開發,這樣的抄襲很常見),於是就過去開始玩了一下。
結果發現了這樣的一些問題:
……(4.1中內容的大部分,後續的修訂就不可能發出去了)
4.2.3    網易發來的第二封郵件的內容
青潤:
你好,我是戰國風雲的****,針對你所提出的2個問題,我在這裡做下解釋:
存在通過放棄要塞(玩家佔領的野地),使得玩家的兵力瞬間回到主城。
現狀:
    當出征的軍隊戰鬥完畢並返回出發地後,在行軍到出發地時,如果發現不能正確返回時(出發地被放棄、出發地已經有將領駐紮),該將領已經所攜帶的軍隊會瞬間回到主城,並損失10%的士兵。
    當放棄駐紮地的時候,如果駐紮地有將領存在則無法放棄,否則可以放棄。如果裡面有士兵,則士兵會瞬間返還主城,並不會有相關損失。
帶來的隱患:
    玩家可以通過消耗將領的精力和一定數量的士兵(數量可為零),使得玩家的在城外的部分軍隊可以瞬回主城,將領也可以花費很短的時間返回主城。
為什麼這樣設定?
    這個隱患在設計的時候我們預料到了,但是如果為避免隱患,則只有一個辦法:當軍隊出征時,出發地無法被主動放棄。
   如果禁止放棄的話,在09年遊戲剛推出的時候會導致遊戲的自由度過少,並影響遊戲的體驗,這個我們有玩家調查來證實。
另外由於存在要塞增兵機制、將領的出征帶兵人數可自由設定 這些基礎的遊戲設定,必然導致一個要塞裡面有軍隊無將領發生,這個時候如果不允許玩家通過放棄要塞來回收這些士兵,在該要塞的將領在遠距離出征的情況下,則只能通過引入新的將領來帶回這個要塞的士兵,這樣會導致玩家理解起來較為麻煩,也更不容易學習。
  所以我們保留了這個設計。
帶來的隱患有多大?
    這個設定可以這樣理解, 花費 將領的10點精力值一定數量的士兵(數量可為零), 來換取部分軍隊的瞬間回城和將領的快速回城,出征將領一般為主力將,所以玩家不可能真正無損的實現瞬間回城。
    在09年戰國推出的時候,玩家的士兵很珍貴,如果軍隊在外出徵,如果趕回家裡,通常需要,而且沒有加速行軍的方法,後來推出相關道具,也是需要付費的,這個時候,如果遇到有其他玩家入侵,玩家可以利用這個方法快速將軍隊掉回原出發地。
    另外,這個設計只是讓玩家的軍隊快速回城,而無法做到快速出征,所以對整體戰鬥的影響不大,再加上玩家都已經適應了,我們也就作為特色給予保留,沒有進行修改。
問題二:不要故意通過活動製造玩家衝突,要讓玩家主動發生衝突,前者會造成一些玩家的反感而退出遊戲,而後者是必然會發生的。
   玩家的直接矛盾誘發,主要來源於以下六種日常行為:
   a、主動掠奪玩家城池獲得資源,主動掠奪玩家正在採集的要塞獲得材料。
   b、主動搶奪玩家在爭霸賽中的物品,獲得更好的收益。
   c、主動搶奪玩家在衛城中的物品,獲得更好的收入,並可能直接摧毀玩家的建築。
   d、主動佔領玩家聯盟所佔領的名城,使得玩家集體理由受損。
   e、聯盟的產出由盟主一個人來發放,玩家在聯盟內部因為分贓不均等行為產生裂痕。
   f、國王通過封官、研究國家科技、安排邊關戰人員等方式來區別對待不同玩家,使得內部產生矛盾。
   在我們的遊戲中, 新手玩家在遊戲中幾乎不會遇到這些問題,老手玩家通過“獲得利益的同時則必須承擔風險”來引起遊戲內的爭鬥,即使玩家之間發生爭鬥,失敗方遭受的懲罰也有限,不會像某些遊戲,會摧毀數個月的勞動成果。
  總體而言,我們不會在活動上刻意製造衝突,但是會很隱晦的在玩家之間誘發矛盾,告訴玩家如果你這樣做利益更大,而不是跟熱三的那個活動一樣,讓玩家非得這樣做不成。
4.2.4    回覆2
您太急於解釋這個問題了,以至於您根本沒有完全看懂我文中的意思。
4.2.5    實際意思
此後就沒有再收到網易的回信。
既然討論到這個地步,青潤反而有必要把想要表達的,本來應該在另一篇文字中寫出來的東西寫在這裡了。
如果要保留目前的快速撤回的方式,那麼需要考慮如下形式:
1、    撤回到城池的距離,中間撤掉的堡壘數量和位置以及間距,這些都應該影響將領的體力和部隊損耗的數量,而不是用一個10%直接簡化替代。
2、    如果中間堡壘距離成曲線狀,那麼是否可以採用直線撤回的方式,畢竟對於部隊來說,探索一條沒有走過的新路會造成更大比例的部隊減員。
3、    撤回的途中也要根據山地、沼澤、草原、平地、丘陵等地形計算出撤回途中的損失率,畢竟是急行軍,不是平常的一般化前進。
4、    以上三條也就是說應該有兩種部隊減員演算法和將領體力減少演算法,那就是直線撤回的損失演算法和曲線撤回的損失演算法,然後得到兩種演算法的結果,讓玩家進行預設設定考慮或者選擇。
5、    網易的朋友沒有看到我寫的這樣一段文字“……同樣一支部隊從A走到B建立一個據點,然後再到C建立一個據點,再到D建立一個據點,……中間只要我撤掉一些或者幾個據點……”,所以,他沒有想到我要表達的實際上是本段1,2和4的內容,而不是他所強調的設計保留和立刻回兵的問題。(注意:3是與郵件內容無關,額外增加的)
6、    另外,前文中關於玩家衝突的話題本來就不是針對網易寫的,網易的朋友卻急於表達自己的設計和策劃是沒有問題的,於是解釋了大量文字在這上面,忽視了自己本來應該解答的問題,數值計算,數值計算和後面提到的是否可以設定玩家衝突的活動並沒有直接關係,捨本逐末就是我唯一能給網易這位朋友的評價了。但是,作為策劃人員,如果連使用者提出的問題都看不懂,不知道如何抓住重點,我不知道需求他是如何分析的,如何確定問題的,這個策劃的可靠性和可行性就都讓人存疑了。
7、    有人說開發方可以自己設定自己認可的規則!是的,作為開發方,你可以自由的你認可的設定規則,但是,當規則不合理的時候,就會讓玩家要麼轉空子,要麼逐漸離開,而且空子多了,玩家也會覺得沒有意思而逐漸離開,所以,兩個的結果是一樣的。
8、    相反,合理的規則才會更為吸引人,尤其是符合日常常識和規律的規則。
9、    既然是遊戲,在一定程度上就是現實生活的簡化對映或者另一個層面的幻想,對於歷史作戰戰略類遊戲,貼近戰爭規律,就是最應該考慮的問題,我不知道網易的這位回信的朋友對戰爭了解多少,看過多少戰爭史和部隊作戰和遷移的書籍資料。如果沒有,那實在是讓人失望,如果看過還是如此的設計,那我只能嘆息一下,不再言語。
10、    在2008年初,筆者曾經給深圳一家遊戲公司提供過諮詢服務,期間就發現策劃人員往往數學非常差,很多甚至是文科,而且大部分是靠自己的想象來編寫遊戲策劃,這樣是不行的。沒有數學基礎的策劃,就好像沒有筋,不尊重規律規則的策劃就好像沒有骨頭,這兩者是相互依存的。
11、    有人說遊戲策劃一定要遊戲打得多,作為筆者建議,非幻想類遊戲的策劃,類似於用歷史文化背景來支撐的遊戲,可能歷史知識和數學知識更為重要,而這卻往往是他們的短板,因為很多遊戲策劃只是因為愛玩遊戲才來當策劃,而這種興趣的人往往很難坐下來讀書,更不要說讀可能更為枯燥而實際上內涵豐富的史書了。
12、    後期補充1,在熱血三國與戰國風雲的對比中,熱血三國採用的是糧食控制方式來限制部隊的前進距離,因為考慮到遊戲時間和現實時間對比往往是1:n的關係,因此體力可能不是一個重要因素,只要糧食供應到位,體力就可以得到恢復。在戰國風雲中採用的是全域性糧食供應,也就是佔到了任何據點,哪怕不是城市,也能立刻補充糧食,採用的是將領的體力控制。從實際對比來說,糧食控制應該比體力控制更為合理一些。或者說,如果不怕複雜度,可以考慮兩者的並用。但是,從遊戲策劃本身來說,遊戲中建設一個建築物需要的時間明顯不是現實中需要建設同樣建築物的時間長度,所以,遊戲中的幾分鐘有可能就代表現實中的很多天,這中間將領的體力可以通過飲食來獲得恢復,因此,從這裡看,戰國風雲的策劃就不如熱血三國的策劃更為合理。
13、    後期補充2,而同樣,前面提到了熱血三國的整點養兵法,可以約略的看作沒2個小時是實際生活中的一天,如果這樣計算,那整點養兵扣減糧食的方法也是合理的,古代基本上是一日二餐,很少有三餐的,因為在戰國乃至三國時期物資供應都是比較緊缺的,甚至知道元朝也同樣如此,後來南方經濟逐漸發達起來也是因為水稻種植技術得到提升的結果。而蒙古騎兵當年冠絕天下除了他們的騎射技藝和作戰策略以外,還有就是他們發明了便於在馬背上直接食用的食物固體奶塊,行軍途中直接將奶片混合在水囊內,然後就可以化解開,直接飲用,如此就可以不停留連續行軍,比起其他民族必須每日埋鍋造飯兩次損耗1到2個時辰以上的時間相比,他們的行軍速度就快了很多。
14、    後期補充3,在熱血三國中沒有瞬回的做法,如果據點被撤銷或者城池被佔領,部隊會按照部隊的常規速度進行撤回到最近的或者出發的城池。瞬回實際上是違背日常規律的一種做法。而在撤回過程中如果糧食缺少,就會按照里程計算進行部隊的減員,只剩一個兵的時候就不會再減員了,出發途中糧食如果沒有了,兵力就會自動撤回。因此,青潤曾經設計過一種保護名將的做法,就是考慮好糧食消耗,將將領帶著一個兵前往一個很遠的地點,然後,半夜糧食消耗盡,自動撤回,早上上線前後將領回到城池內。


下文開始最大的炸彈,騰訊篇第一部分。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/257598/viewspace-753194/,如需轉載,請註明出處,否則將追究法律責任。

相關文章