Social Game服務器開發隨筆

 

Social Game服務器開發隨筆

         前幾天看了一篇博客Scaling FarmVille,其中談到了一種服務器設計的理念。FarmVille是由著名的social game運營商zynga開發的。這款遊戲創造了750萬人月活躍的驚人成績,做爲同行的我當然要關注一下。

         從畢業開始到現在做social game7個月的時間了,先說說我自己的體驗。

要完成一款成功的Social game對於服務器開發者來說有很大的挑戰。從social game本身的特點來說,由於“病毒式”的傳播方式,social game在發展的過程當中用戶的安裝量往往呈指數級增長。以FarmVille爲例,其遊戲上線4天后的日活躍用戶爲一百萬,60之後就達到了一千萬。9個月之後,FarmVille有兩千八百萬的日活躍,七千五百萬的月活躍用戶,也就是說其月活躍用戶甚至超過了法國的人口數量!做爲一款facebook的應用,其與facebook之間的通信峯值在3Gbps左右

另外,由於social game對於大部分用戶提供的是免費的服務,只靠一小部分玩家花錢購買遊戲道具獲得收入,這樣在開發social game服務器的時候既需要我們提供儘量可靠的服務以提升用戶的遊戲體驗,同時還要注意節約成本,儘量減少不必要的計算消耗。

第三,同其它所有互聯網應用一樣,social game的開發週期要求很短。想在激烈的互聯網行業取得先機,你就必須趕在競爭對手之前獲得更多的用戶,因此時間是一個產品成功的關鍵性因素之一。

第四,social game的精髓在於簡單和互動。前者導致了social game可能競爭對手被快速的複製,以一款經典的遊戲《開心農場》爲例,其在前年年底發佈之後引發了互聯網的一陣農場熱潮,一時間,農場遊戲滿天飛。從技術上來講,《開心農場》的客戶端爲flash,後臺是一個web框架。Flash可以進行完全的反編譯,而後臺也有比較成熟的高性能Web框架(LAMP),因此換換美術素材,複製一款social game技術上並不存在很高的瓶頸。另外,爲了滿足互動,遊戲需要實現用戶規模的高速增長,以使得用戶不會因爲沒有更多的好友參與而失去互動的樂趣,最終離開遊戲。這兩個“精髓”都會導致運營商不希望剛剛開發好的遊戲進行外網測試,因爲測試可能會引發競爭對手的copy,而且測試的規模限制也會導致遊戲用戶數量無法滿足需求。但是,如果不進行外網測試,可能會增加服務器出現問題的機率,而不穩定的服務勢必造成很多新玩家的流失,因此這對於服務器開發者來說無疑難度會增加。

Balabala的說了一大堆,下面回來說說服務器的設計。對於FarmVill來說,用戶的狀態包含大量的數據信息,而且它們之間還存在着比較複雜的關係。這樣,如果改變用戶在遊戲當中的狀態,可能需要操作更改一批的數據。對比GoogleFacebook這樣以讀操作爲主的應用來說,FarmVill需要更多的寫操作,其讀寫數據的比例大約爲31,這是一個很高的寫入率了。此外,FarmVill還在不斷的維護更新,以提供更多的遊戲功能擴展,這樣無疑會在很大程度上增加服務器的負載。前面提到,social game的開發要注意節約資源,所以計算資源可能在服務峯值時做不到完全充裕,新增服務與大規模的用戶數量可能導致服務器在服務峯值階段出現問題。FarmVill引入了一種機制叫做:graceful degradation mode(降級服務)

所謂降級服務就是指應用程序可以隨時動態的關閉或者打開一個服務。在實際應用中,爲了保證低延時,以及服務器的正常運轉,在負載的峯值階段關閉某些服務。這種服務的核心觀點就是儘量的保證用戶可以進行基本遊戲,即使有時需要降低某些用戶體驗。按照這種原則,在設計服務器的階段,需要通過回調錯誤處理與超時等機制,將某些高負載的服務以及一些擴展服務分離出來,並且在必要的時候關閉某些功能服務。

參考文章:

http://highscalability.com/blog/2010/2/8/how-farmville-scales-to-harvest-75-million-players-a-month.html

http://perspectives.mvdirona.com/2010/02/13/ScalingFarmVille.aspx

http://highscalability.com/blog/2010/3/10/how-farmville-scales-the-follow-up.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章