《七龍珠:武斗傳奇》與 GCP 后端

來源: Google Cloud
作者:Google Cloud
時間:2020-10-27
17778
作為萬代南夢宮娛樂公司(BNE)打造的一款全新手機游戲,《七龍珠:武斗傳奇》基于公司旗下廣受好評的“龍珠 Z”系列作品,目前已經向全球玩家正式開放。為了做好準備以饗玩家服務,BNE 早在 2017 年 2 月就開始與 Google Cloud 溝通,探討這款游戲可能面臨的種種挑戰(zhàn),希望 Google 方面能夠提供足以應對各類實際負載難題的強大云基礎設施。

ia_800000001.png

作為萬代南夢宮娛樂公司(BNE)打造的一款全新手機游戲,《七龍珠:武斗傳奇》基于公司旗下廣受好評的“龍珠Z”系列作品,目前已經向全球玩家正式開放。為了做好準備以饗玩家服務,BNE早在2017年2月就開始與Google Cloud溝通,探討這款游戲可能面臨的種種挑戰(zhàn),希望Google方面能夠提供足以應對各類實際負載難題的強大云基礎設施。

《七龍珠:武斗傳奇》與GCP后端

根據預期負載強度,BNE方面提出了以下三條雄心勃勃的具體要求:

1.極高的可擴展性。這款游戲將在全球范圍內發(fā)布,因此需要一套能夠支持數百萬玩家并確保良好游玩體驗的強大后端。

2.全球網絡。這款游戲允許玩家之間實時戰(zhàn)斗,因此需要配備跨地區(qū)高可靠性、低延遲網絡。

3.實時數據分析。這款游戲支持玩家間的實時互動,因此要求數據分析流水線將數據流即時傳輸至數據倉庫。以此為基礎,運營團隊將能夠衡量并評估玩家們的具體游玩方式,進而對游戲內容做出快速調整。

在這三個領域,我們都擁有著豐富的實踐經驗。Google在全球范圍內運營著多種十億用戶級別的大型服務,我們也會利用由服務產生的數據對服務內容做出逐步改進。由于Google Cloud Platform沿用這些服務所使用的相同基礎設施,因此Google Cloud Platform客戶也將享受到同樣強大的技術支持方案。

下面,讓我們共同了解BNE如何與Google Cloud合作,共同為《七龍珠:武斗傳奇》構建基礎設施。

挑戰(zhàn)一:極高的可擴展性

日本游戲廠商普遍使用MySQL,工程師們也習慣了關系數據庫中的模式(schema)、SQL查詢以及強一致性等要素。這大大簡化了應用程序層面的工作,保證技術人員不受數據庫限制(例如最終一致性或者架構實施)的影響。事實上,在游戲領域之外,MySQL在日本同樣具有廣泛的使用空間,這里的大部分后端工程師都擁有豐富的MySQL實踐經驗。

MySQL雖然具有諸多優(yōu)勢,但同時也存在一大致命短板:可擴展性差。具體來講,作為一套縱向擴展數據庫,如果要提高MySQL的性能水平,就需要同時添加更多CPU、RAM以及磁盤資源。另外,當單一MySQL實例無法處理當前負載時,我們需要將負載拆分成多個部分——相當于將用戶分成幾組,再逐一分配給不同的獨立MySQL實例。但是,這種分片操作同樣問題多多。大多數游戲開發(fā)人員需要在游戲上線之前核算出必要的數據庫分片數量,這是因為重新分片會占用大量人力而且極易出錯。一旦出錯,游戲廠商要么面臨數據庫過度配置的問題,要么是因玩家數量超出預期而無法提供必要的數據庫資源。這就帶來了一個現實難題:如果游戲的人氣水平與預期相符,那一切都好;但如果游戲大獲成功且需求超出預期,又該如何應對?如果活躍用戶在游戲發(fā)布之初數量可觀,但之后逐步下降,又該怎么辦?MySQL分片無法動態(tài)擴展,相關調整不僅會帶來高昂的維護成本,同時也存在巨大的風險。

在理想條件下,數據庫應當能夠在無停機前提下靈活實現規(guī)模伸縮,同時保持關系數據庫的固有優(yōu)勢。因此,在BNE方面表示他們正考慮利用MySQL分片處理《七龍珠:武斗傳奇》的大規(guī)模預期流量時,我們提出了自己的建議——Cloud Spanner。

為何選擇Cloud Spanner?

Cloud Spanner是一項全托管關系數據庫服務,可提供橫向可伸縮性與可高用性保障,同時實現與MySQL架構類似的高一致性水平。更重要的是,作為一項托管服務,Cloud Spanner由Google SRE負責運營,幫助客戶擺脫數據庫維護負擔并最大程度降低停機風險。我們相信,Cloud Spanner將幫助BNE順利將這款游戲推向全球市場。ia_800000003.png

預先評估

在采用新技術之前,工程師自然有必要首先進行測試,以確保方案能夠在實際情況下提供符合預期的性能表現。在替換MySQL之前,BNE在Google Cloud Platform當中創(chuàng)建了一個新的Cloud Spanner實例,其中的表模式與MySQL用例保持一致。由于BNE的后端開發(fā)人員使用Scala編程語言,因此選擇了Cloud Spanner的Java客戶端庫,同時編寫了部分示例代碼以進行負載測試。通過這種方式,開發(fā)人員希望了解Cloud Spanner能否滿足游戲的每秒寫入率(QPS)需求——峰值約為30000 QPS。通過與Google客戶工程師以及Cloud Spanner工程團隊的通力合作,BNE方面輕松完成了測試目標。BNE方面甚至開發(fā)出自己的DML(數據處理語言)打包程序,用于編寫INSERT、UPDATE以及DELETE等SQL命令。

游戲發(fā)布

有了概念驗證作為前提,BNE方面開始放手實施。根據預期的單日活躍用戶(DAU)數量,BNE公司計算出支持全部預注冊玩家所需要的Cloud Spanner節(jié)點。在發(fā)布籌備階段,他們還先后進行了兩輪Beta封測進行后端驗證——數據庫全程運作良好!最終,《七龍珠:武斗傳奇》的全球預約玩家數量超過300萬,但憑借著充分的準備,官方為用戶帶來了堪稱完美的游戲首發(fā)體驗。

總結而言,在Google Cloud的協助下,BNE公司得以擺脫耗費精力的數據庫運營工作,專注于改進游戲本身的設計與體驗。

挑戰(zhàn)二:全球網絡

現在聊聊BNE面對的第二大挑戰(zhàn):構建一款支持全球玩家實時對戰(zhàn)(PvP)的游戲。BNE在《七龍珠:武斗傳奇》的設計當中,引入了允許世界各地玩家隨時對戰(zhàn)的機制。即使不熟悉網絡知識,大家也會想到這種設計在延遲控制方面提出的挑戰(zhàn)。例如,東京與舊金山之間的往返時間(RTT)均值約為100毫秒。為了解決這個問題,BNE方面決定將每游戲中的每1秒時長拆分為4個250毫秒的基本單位。換言之,盡管玩家在進行游戲時獲得的是實時感受,但游戲本身實際上采取高速回合制設計。有些朋友可能覺得250毫秒的延遲已經提供了充足的余量,但互聯網通信并不穩(wěn)定,實際延遲情況也往往很難預測。

為什么選擇云網絡?

下圖所示,為游戲客戶端如何通過互聯網訪問Google Cloud Platform上的游戲服務器由于每一次訪問的跳數都可能發(fā)生變化,因此玩家的實際PvP體驗也可能時而順暢、時而卡頓。

ia_800000004.png

BNE之所以決定選擇Google Cloud Platform作為《七龍珠:武斗傳奇》的后端,一大重要原因在于Google提供的專用網絡體系。如下圖所示,當游戲客戶端訪問Google Cloud Platform分布全球的數百個入網點(POP)時,即可接入Google專用網絡。如此一來,所有躍點皆在可預測范圍內,從而保證延遲處于最低水平。

ia_800000005.png

充分發(fā)揮Google Cloud網絡優(yōu)勢

通常,游戲廠商在實現玩家PvP操作時會選擇兩種方式:其一,建立玩家間直連;其二,通過專用游戲服務器連接。對于戰(zhàn)斗延遲要求較為嚴格的游戲,廠商往往會選擇P2P通信方式。但遺憾的是,P2P只能在兩位玩家地理位置相距不遠的情況下表現良好,跨區(qū)域通信時則效果不佳(某些運營商甚至會直接阻斷P2P協議)。如果兩位玩家身處不同大洲,那么在通過Google專用網絡進行通信時,系統會首先嘗試通過P2P進行直連;如果直連失敗,則將其轉移至coturn這一開源STUN/TURN Server處,由此作為兩個節(jié)點的通信中繼。如此一來,即使來自不同大洲,玩家也仍可享受到低延遲、高可靠性的Google網絡。

ia_800000006.png

挑戰(zhàn)三:實時數據分析

BNE面對的最后一項挑戰(zhàn),正是實時數據分析。BNE希望為游戲玩家提供最出色的用戶體驗,目前的可行方法之一為實時游戲運營,簡稱LiveOps。這套方案允許運營人員持續(xù)對游戲內容進行變更,從而長期保持新鮮的游戲體驗。但要想了解玩家的真實需求,運營團隊需要數據——通常是用戶的操作日志數據。如果能夠以近實時方式獲取這些數據,運營團隊即可判斷應對游戲做出哪些調整,借以快速提高用戶的滿意度與參與度。

為了收集這類數據,BNE將Cloud Pub/Sub與Cloud Dataflow結合起來,旨在對用戶數據進行實時轉換,并將結果插入BigQuery。

Cloud Pub/Sub提供面向全球網絡的高可靠性消息傳遞系統,該系統可對日志內容進行緩沖,直到Cloud Dataflow接手處理。

Cloud Dataflow是一項全托管并發(fā)處理服務,允許用戶以實時、并發(fā)方式執(zhí)行ETL操作。

BigQuery是一套全托管數據倉庫,用于存儲全部游戲日志。BigQuery提供PB級存儲能力,因此用戶無需擔心其擴展空間。憑借著強大的并發(fā)處理能力,BNE得以輕松應對高強度日志查詢操作并快速獲取響應,甚至能夠在幾秒鐘之內完成對TB級別數據的掃描。

這套系統幫助游戲開發(fā)商以近實時方式對玩家行為建立起可視化洞察,據此判斷應在后續(xù)更新或者即時調整中做出哪些修改,從而滿足游戲玩家的實際需求。

總結

在Cloud Spanner的有力支持下,BNE得以專注于提升游戲品質,而不必將時間與精力耗費在數據庫容量規(guī)劃與擴展身上。

在運營方面,憑借著這套全托管可伸縮數據庫,BNE也能夠顯著降低由人類錯誤帶來的相關風險以及運營的成本。

利用云網絡,BNE通過Google專用網絡為游戲玩家?guī)碜罴延脩趔w驗,確保來自不同地區(qū)的玩家享受對戰(zhàn)的樂趣。

最后,利用Google的分析服務組合(Cloud Pub/Sub、Cloud Dataflow以及BigQuery),BNE得以近實時分析玩家行為、快速調整游戲,最終快速改善玩家的游玩體驗。

立即登錄,閱讀全文
版權說明:
本文內容來自于Google Cloud,本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家