線上遊戲開發記事【43】發生意外事件的處理

線上遊戲的製作人,其工作內容並不像一般玩家所想的只有負責遊戲的研發。遊戲的營運、遊戲的行銷以及各式各樣和專案相關的工作非常的多。而線上遊戲的一大特色,它是每天二十四小時、一年三百六十五天全年無休的在運作的。比起遊戲的開發工作來說,維護遊戲的工作更是辛苦,因為意外事件可能出現在任何時間,當發生這些事件的時候就要進行處理。

銀狐將意外事件分為天災或是人禍這兩大類。像是伺服器當機、硬碟故障、網路中段、機房跳電或是被雷擊﹝不是開玩笑,這真的發生過﹞這一類人力所無法控制而發生的狀況,銀狐通常稱之為天災;另外像是遊戲伺服器被攻擊、入侵、出現重大臭蟲等等因為人為所造成的狀況,銀狐則是將其稱之為人禍。

天災的發生,基本上大多是人力所無法控制的,因此當事情發生的時候,在接到通知後也只能盡快的進行處理。但是人禍﹝特別是遊戲中出現嚴重的臭蟲﹞的發生,需要盡量的避免。當然沒有人敢說自己都不會犯錯,也沒有程式設計師敢保證自己寫的程式不會有問題﹝如果有那位程式敢這麼說,歡迎介紹給銀狐﹞。因此當嚴重的臭蟲出現的時候,除了要找出問題盡快修正,還要想辦法避免以後再發生同樣的錯誤。

銀狐負責的這個專案也曾經發生過許多次的意外事件,當然也出現過某些致命的臭蟲,其中有些臭蟲發生後對於遊戲的影響也不小。因此在銀狐擔任這個專案的製作人期間,週六、週日、假日,晚上回家、清晨睡眠時都曾經接到過來自客服單位的緊急通知電話。在這裡銀狐就舉其中一個在上班時間發生的事件,讓大家瞭解一下這類事件的處理狀況。

某天從客服單位轉來一則玩家回報,有玩家表示在遊戲的排行榜上突然出現一名玩家,這名玩家的升級速度不正常,讓他懷疑是不是遊戲出現了什麼問題。這一類玩家懷疑玩家的回報經常可以見到,雖然大多數這一類的回報都是玩家的誤會,不過對於這種可能是遊戲出現問題的回報銀狐一向都立刻會要求工程師開始進行追查。

調出這段時間的排行榜資料,經過比對之後發現排行榜上的確有某位玩家的等級成長速度不是很正常,於是接下來就是要查出到底這位玩家是怎麼樣提升等級的。在專案中有許多獲得經驗值的管道,這些方式都可以讓玩家的等級提升,因此在那個時候還不確定是什麼地方發生問題﹝找臭蟲並不像某些玩家所想的那麼簡單﹞。

透過過濾玩家的升級記錄檔,我們發現問題可能是發生在某個可以獲得大量經驗值的任務。不過這個任務只能執行一次,為什麼玩家可以多次的完成這個任務來獲得經驗值,在當時還不知道原因。要修正臭蟲,必須要先找到發生的原因,這樣才有辦法進行修正﹝修臭蟲比某些玩家所想的複雜,如果沒有辦法確定臭蟲發生的原因可就無法修正﹞。

反覆測試並追查相關的程式﹝修臭蟲的第一步就是要能重現臭蟲﹞,最後終於找到流程中有問題的地方。根據程式來判斷,應該是這位玩家發現了某個可以中斷流程的方式,於是原本應該是獲得經驗值後就結束的這個任務,卻在不正常的狀況下沒有結束。發現可以重複完成任務獲得經驗值的這位玩家,很貪心的利用這個機會拼命升級,結果被其他的玩家發現。

確認發生問題的地方,立刻就進行了相關的修正,接下來就是將所有的記錄調出來,看看還有沒有其他的玩家也利用了這個臭蟲來獲利。清查資料後整理出相關的名單,然後將名單整理出來和營運單位討論相關的後續處理和懲處。等到相關的懲處都完成時,已經是晚上十一點了。這個從早上上班就接到的回報,就這樣耗掉了一整天的時間﹝包含加班﹞。

在銀狐帶領專案的這段時間裡,發生過各種大大小小的意外事件。根據銀狐的經驗,在意外發生的時候最忌匆忙的處理。像是在這次的案例中,營運單位曾經緊張的想要停機,不過在還沒有發現問題所在時,停機並不能幫助解決問題,所以銀狐並沒有同意營運單位的要求。而且在找到問題之後,更是要確認再確認,直到真正抓到問題的核心才進行修正,免得在匆忙的修正中又造成新的問題。

解決了問題之後,接下來就要進行『再發預防』的流程。這次的問題是出在判斷的流程上,因此銀狐請負責這段程式的工程師針對發生的原因以及後續的處理流程寫一份簡單的報告,然後將這份報告分發給所有擔任相關的工作的人員,讓大家都知道為什麼會發生這問題,以後要如何小心提防再發生,將這次發生的意外當作是訓練的一部份,來提升所有相關成員的經驗。

銀狐見過某些專案的主管,在發生問題的時候會先把造成這個問題的成員罵一頓,銀狐個人的看法是這樣做對於解決問題並沒有幫助。在發生問題的時候,首先要做的是找出問題和解決問題,至於是誰幹的這件事其實可以等到處理完再來追究。先把成員罵一頓,只會讓已經很緊張的成員更是慌張,搞不好會造成更大的意外﹝匆匆忙忙的處理若是造成更大的問題就不好了﹞。因此銀狐在帶領專案的時候,一直是用這樣的態度來面對各式各樣的意外。

    • 銀狐的最新文章就是按照時間順序最近的文章,
      不然的話,年度月份歸檔也可以 XD