2022年6月13日,Riot宣布與Microsoft展開全新合作,在Xbox Game Pass推出旗下大作。我們都熱愛玩家本位的競技遊戲,而這次合作把世界上最大的兩個遊戲公司連結起來。六個月後,我們達成了這個重要承諾,成功在Game Pass推出我們的多款旗下大作。
今天我們想分享這幾個月來所做的幕後工作,並介紹大家應該沒聽過的團隊:玩家平台團隊。
玩家平台團隊是什麼?
玩家平台團隊為Riot遊戲和玩家建立連結,打造多遊戲體系和社群,創造一個玩家互聯體驗,讓不同遊戲的玩家和內容能夠匯聚在一處。換句話說,玩家平台團隊的工作,橫跨幾乎所有與Riot遊戲玩法沒有直接關聯的領域,包括與遊戲無關的帳號功能、登入功能、社交功能,以及購買功能等等。這些功能是透過入口網站,整合SDK,以及直接使用API實現的。
由於玩家平台團隊負責所有與遊戲體驗相關的功能,在Xbox Game Pass發行遊戲的大部分工作,都是由這個團隊負責的。團隊必須有合作精神、開放心態,以及許多意志堅定、認真刻苦的成員,才能在持續支援Riot當前和未來遊戲的同時,達成前述任務。
快速啟動專案!
由於這項與Riot Games的合作,是Xbox Game Pass第一次推出PC和手機都可以玩的免費遊戲,所以存在許多未知數。除此之外,為了加強玩家體驗,我們還決定贈送遊戲獎勵給所有連結帳號的玩家。面對這種規模的專案時,我們會嘗試將其簡化,分為多個獨立的功能,這樣便能最大限度分配工作,減少沒有明確目的的會議。
為了應付這一切,專案管理團隊與Microsoft緊密合作,策劃各種大型可交付成果。他們扮演的角色非常關鍵,確保了正確的人選可以在正確的時機參與專案。玩家平台團隊的專案管理團隊與全公司的多個遊戲團隊、發行團隊、客戶服務,以及其他重要相關人士,安排各種例行會議,讓不同遊戲團隊能夠與玩家平台團隊的幾百個成員能夠坐在一起,制定戰略並解決複雜問題。
專為Game Pass設計
製作新系統或修改現有系統前,團隊必須對玩家遇到的問題和成功的定義有共識。玩家平台團隊的使用者體驗設計團隊,在創造良好玩家體驗以及與Xbox Game Pass的合作上,都扮演著關鍵角色。通常講到設計時,大家應該都會先想到經過精心打磨的介面。不過,其實策劃玩家與複雜產品和系統的互動流程,讓使用體驗流暢無阻更為重要。現在,你大概想問說:「讓玩家將帳號連結到Xbox Game Pass會有多難啊?」事實證明,這件事真的挺複雜的!
在Riot與Microsoft合作的早期,使用者體驗團隊領導層與其他總監交流,推動制定「精巧惹人愛」玩家情境,並且要求不同領域和部門提供實現這些情境所需的時間、合作夥伴,以及資源的完整資訊。團隊尤其關注會影響良好遊戲體驗的最大「風險」——因為我們越快同意某一困難的共同目標是否值得去做,就能越快結合不同團隊的專長,將看似不可能的事化為可能。(欲知我們起初如何定義「精巧惹人愛」玩家情境,請閱讀刊登在Medium的Riot Games使用者體驗文章。)
「兩間公司之間的合作往往是個艱鉅的挑戰,因為所用的詞匯不同,並有不同的職責及前提。我們得翻說明書來了解Microsoft的認證系統和Game Pass安裝體驗如何運作,這樣才能在估計開發端到端體驗的成本,以及評估創造精巧惹人愛玩家體驗的確切需要時,將這些因素納入考量。」
—Cheryl Platz

定下初始流程後,使用者體驗團隊便開始考量面向玩家的不同接觸點所需的所有功能,以讓不同地區的所有玩家能夠享有順暢的新平台登陸流程。團隊確保Riot老玩家直接從遊戲內或Riot用戶端連結到Game Pass會員的體驗,會和Riot新玩家從Game Pass應用程式首次登陸的體驗同樣順暢。
第一次將兩間不同公司的平台結合在一起,經常會出現一些Riot用戶端團隊或Xbox團隊都沒有見過的新情況,但必須解決才能提供良好玩家體驗,例如Microsoft的安全模型與我們的有所不同,這讓玩家平台有個有趣的機會,可以探索如何使認證和身分平台更一致。與Microsoft開放溝通和積極合作幫助我們定向目標,並確保我們往正確的方向走。
「他們過去也曾經與其他公司進行過整合工作,不過所用的方法應該與我們合作時差異很大。我們的合作關係很緊密,雙方的程式碼庫都必須進化,這樣做我們才能提供他們所需的支援,因為在這個情況下,Microsoft的立即可用功能若不經過修改,就會無法運作,且從時機角度來看,這也行不通。」
— Luther Baker
從初始探索階段(有時也叫探索前階段)紀錄過程起,設計師就必須清楚認知目前發生什麼事,並問自己「要怎樣做才能達到目標呢」,藉此找出需要什麼必備條件。透過情境映射及使用者流程等方法,Microsoft和玩家平台團隊的設計師合作編寫許多程式碼,給工程師、產品或品管團隊共用,確保流程符合預期,並設立連續不斷的回饋迴圈,評估現有的服務和功能,以實現最棒的體驗。
「在那個情況下,以使用者體驗角度來看,犯錯是件好事,因為當人意識到某些東西與自己的理解有出入時,便會指出問題並提出意見。早點犯錯後坐下來討論,總比花時間嘗試搞清楚正確的答案後再去開發來得要好。」
— Melody Seng
即使在交付完成後,程式碼還是得不斷演化,因為會出現邊緣案例,需要進一步調查改進才能解決。與工程師和技術團隊直接合作,是達成共識的關鍵。

設計近乎即時的服務
為了提供最棒的Riot和Xbox Game Pass的使用者體驗,我們想讓玩家在連結自己的活躍Xbox Game Pass帳號時m立即解鎖新遊戲內容,不過這需要我們發揮許多創意才能實現。內容體驗團隊與玩家平台團隊的帳號團隊合作,並達成共識,決定每當玩家連結或解除連結Xbox帳號時,帳號會發送訊息到Riot事件匯流排((Riot處理訊息通訊的最新方法)。收到訊息後,監聽此訊息的代理主題的服務便會做出反應,並處理這項事件。由於玩家不需要有活躍的Game Pass也能將Xbox帳號連結到Riot帳號,所以團隊必須用連結帳號時生成的權杖查詢Xbox API,才能得到前述資訊。此外,帳號團隊也將這個權杖儲存到新的服務中。不過,這只解決了部分問題,因為我們還需要確認玩家是否擁有活躍的Xbox Game Pass帳號。
內容體驗團隊(玩家平台團隊的一部分)開發閘道訂閱服務(簡稱GSS),在Riot中充當任何呼叫著查詢玩家的Game Pass狀態時的唯一資訊來源,這代表每當某一服務需要確認任何訂閱內容,它可以呼叫閘道訂閱服務,並快速準確地得知玩家應該擁有哪些優惠。GSS的數據來自帳號團隊的帳號連結事件,以及使用Microsoft API確認玩家的Game Pass狀態是否活躍,之後透過HTTP API端點將資料開放給其他Riot服務,讓其他團隊在不同使用案例中使用該資訊,包括:
- 內容取用平台:將特定訂閱內容加到玩家的物品欄
- Martech:根據玩家目前的Game Pass狀態顯示特定廣告
- 客戶服務:客服專員使用此資訊來處理與Xbox訂閱相關的客服表單
- 網路體驗:在玩家帳號管理頁面顯示玩家的訂閱狀態
當玩家將Riot帳號連結到Xbox Game Pass帳號時,GSS會用連結帳號時生成的權杖查詢Microsoft Xbox API獲得玩家的Game Pass狀態,將此資訊儲存在永存資料庫,定期更新它,並透過API讓用戶端可以取用查詢。聽起來很簡單對嗎?
玩家連結Riot和Xbox帳號後,可以隨時啟用Game Pass。這項服務只能定期查詢Xbox API,確認玩家是否擁有活躍狀態。為了提供最棒的玩家體驗,我們想讓玩家可以在連結並啟用Game Pass後立即使用訂閱內容,所以服務必須能夠經常查詢。不過,要多常查詢才是夠的呢?每分鐘查詢是不錯,但只為了確認狀態而每分鐘對API進行數以百萬計的查詢,並非是好的做法,尤其是在99%的情況下,兩次呼叫之間不會有任何狀態變動。
團隊專注於在Riot方面可以反應玩家互動的情況,如玩家啟動遊戲用戶端時,這便是刷新Game Pass狀態的好時機。不過,刷新操作是個HTTP外部呼叫,需要約1秒來執行,但GSS主端及內容取用平台(簡稱CAP)需要在少於0.05秒收到回應,因為它們是玩家物品欄取得程序的一環,對時間要求非常嚴格。要將需時1秒的外部呼叫減少到0.05秒是件不可能的事,所以團隊必須發揮點創意來解決問題。他們決定採用的方法是:傳回從上次刷新取得的數值;如果數值是超過兩分鐘前取得的話,則傳回原先在連結帳號並觸發後台非同步刷新的數值。在前述非同步刷新後,如果服務確認到Game Pass狀態有所變動,則會透過Riot訊息服務發送訊息給用戶端,這樣遊戲便會從CAP取得優惠,確保玩家無需手動刷新用戶端,也能獲得訂閱內容。
「我們的主要目的是盡量減少延遲,因為時間限制非常嚴格。基本上CAP必須呼叫我們,並得知玩家的Game Pass是否處於活躍狀態,這一切必須在0.05秒內達成,所以這在某種程度上可以說是近乎即時的服務。如果我們無法在這時間內回覆,則CAP的呼叫會逾時,導致玩家無法獲得應有的內容。」
— Vasily Katraev
《激鬥峽谷》的玩家物品欄沒有使用CAP系統,所以無需直接查詢訂閱服務來確認玩家是否有活躍的Game Pass訂閱。為了達到0.05秒延遲要求,內容體驗團隊將他們的服務與CAP和帳號管理服務,並置在世界各地的四個資料中心,盡量接近玩家的位置。
限區發行及發行時資料庫限制的臨時解決方法
功能推出的幾天前,團隊進行了限區發行,測試Riot帳號和Xbox Game Pass的連結。他們找到了幾個嚴重bug,並在正式推出前加以修復。
我們最大的顧慮是玩家對於優惠服務的負載,這個服務負責授予玩家所有Riot遊戲的物品存取權,並會收到大量讀取要求——某些地點每分鐘高達80萬個要求!為了幫玩家解鎖優惠,優惠服務每進行一次呼叫,便會對另一個系統進行多一次呼叫,確認玩家是否擁有Game Pass,然後再將Game Pass優惠整合並傳回給玩家。這項流程製造額外壓力和複雜度,導致系統不穩定及回應緩慢的情況,且對下游系統有各種影響。
團隊在多個情境執行負壓測試,但發現最能確認系統是否穩定的方法是進行限區發行。限區發行讓團隊能夠「啟動系統」的完整流程,只是無法讓玩家看到Xbox Game Pass內容。團隊將可在正式推出前看到系統的負荷及需要預料的確切情況。透過限區發行,他們發現其中一個連結池的設定出錯,有很大可能性會令玩家無法獲得優惠,導致正式推出失敗告終。
團隊也發現資料庫的寫入容量有問題:現有架構*導致資料庫無法擴展來應付合作發行時會增加的玩家負載。應付這類服務負荷的常見方法是分批開放給玩家存取。團隊決定放慢「行銷」工作,分多次進行,以嘗試控制人流。這樣玩家便會在較長期間內分批登入,團隊可以確保服務有足夠能力應付更多行銷材料上線時帶來的新一批玩家。與行銷團隊的密切合作,成功將寫入容量保持在50%以下。
*在那之後,我們改動了資料庫的技術堆疊,使它能夠在有帳號變動時橫向擴展。

心態比技術重要
除了整合Xbox Game Pass所需的各種技術能力以外,各種軟技能也扮演了關鍵的角色。謙虛做事、保持好奇,以及在內在外與Microsoft開放溝通合作是成功的關鍵。雖然這個專案只耗時六個月,但有幾百個人參與,並需要調動工作時間,以及學習新的系統。退讓幾步,讓領域專家接手,以不同方式推動專案,是件很重要的事,所以非必要的話,不會只由一個人或團隊負責指揮。
「大家著手進行這項專案,並以它為中心進行合作的方式,讓成果大大不同。」
— Nate Portner
這項合作凸顯了許多Riot Games核心價值。在整個過程中,團隊不斷自問:「這個體驗會怎樣影響我們的玩家?」他們將「玩家本位」精神發揮至極緻,整個Riot都同心合力,參與這項會影響所有Riot遊戲的專案。
「每個部門都做得非常棒,他們專心思考每個抉擇會如何影響玩家,因為我們不希望任何玩家在任何時點會有錯誤的期待。」
— Matt Hawkins
結語
我們做的工作太多了,不可能全部塞進這篇技術專文中,我們希望大家讀完後可以更了解玩家平台團隊,以及他們為這項Riot/Xbox Game Pass合作開發並提供的服務。能夠打造出這個超棒的玩家體驗,並在未來繼續打造更多,是幾百人聚在一起努力工作的成果。