View a markdown version of this page

無伺服器型遊戲後端架構 - 遊戲產業鏡頭

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

無伺服器型遊戲後端架構

許多遊戲開發人員不想管理基礎設施,而是偏好使用允許他們專注於軟體的技術來建置遊戲。在此案例中,建議使用無伺服器架構,因為它可讓您更快速地建置和發行功能,並降低營運開銷。無伺服器架構的設計使用雲端服務,可根據需求動態擴展,而不需要設定、管理和擴展伺服器。下列參考架構說明如何使用無伺服器架構建置遊戲。

無伺服器型遊戲後端參考架構

無伺服器型遊戲後端參考架構

此參考架構說明提供單一玩家和多玩家功能的 Web 型三角遊戲。

  • 玩家身分驗證:玩家使用 Amazon Cognito 進行身分驗證,其提供安全身分驗證與玩家身分管理的使用者目錄。

  • 遊戲邏輯作為無伺服器函數:遊戲功能和後端商業邏輯作為回應事件而啟動的 AWS Lambda 函數執行,這會降低成本,因為您只在函數執行時付費。Lambda 可讓您靈活地使用您選擇的程式設計語言,將每個遊戲功能寫入為單獨的微服務。例如,如果您有使用 C# 建置 Unity 遊戲的經驗,您可以選擇開發 .NET Lambda 函數,或者如果您想要在 JavaScript 中編寫 Web 遊戲的前端和後端程式,可以選擇開發 Node.js Lambda 函數。

  • 遊戲和玩家資料的 NoSQL Data Store:使用 DynamoDB 來存放您的玩家和遊戲資料,因為它專為從微服務存放大量資料而打造。如此架構所示,最佳實務是針對每個遊戲功能的資料儲存需求使用個別的資料儲存,這可讓您直接獨立監控和管理功能。如果團隊中的功能或服務擁有權發生變更,這也會建立分離界限。在此參考架構中,DynamoDB 資料表用於存放連線狀態、遊戲詳細資訊、玩家進度和排行榜資訊等資料。

  • 單一玩家遊戲:單一玩家功能可讓玩家執行動作,例如選取和玩遊戲,以及檢視排行榜。這些功能會實作為使用 Amazon API Gateway HTTP API 託管的 RESTful 後端服務,該 API 會叫用適當的 Lambda 函數,以取得和設定 DynamoDB 資料表中的資料。遊戲完成時,後端也會將通知傳送至 Amazon SNS 主題,以非同步方式啟動 Lambda 函數來儲存玩家的進度和統計資料。

  • 多玩家遊戲:多玩家遊戲功能需要玩家能夠與遊戲互動以進行point-to-point通訊,以及廣播和接收來自其他連線玩家的更新。WebSockets 實作適用於輕量型遊戲中的point-to-point通訊,例如 trivia。玩家可以建立與 Amazon API Gateway WebSockets 的 WebSockets 連線,以管理連線,並只在有要為玩家傳送或接收的訊息時叫用 Lambda 函數。 WebSockets 對於玩家之間需要one-to-many通訊的使用案例, AWS IoT Core 支援透過 MQTT 使用 WebSockets 傳送訊息,這允許用戶端訂閱主題並對收到的訊息採取行動。在此架構中,透過 MQTT 的 WebSockets用於支援使用案例,例如廣播即時遊戲內更新,以及向連線的玩家提出問題。或者 AWS IoT,如果您需要訊息保留,您可以選擇 Redis Pub/Sub 進行訊息傳遞,或選擇 Redis Streams。

  • 使用啟用 VPC 的 Lambda 函數來存取私有子網路中的資源:設定啟用 VPC 的 Lambda 函數來存取 VPC 私有子網路中的資源,例如 Amazon ElastiCache,用於縮短即時排行榜等低延遲資料集的查詢時間。

如需詳細資訊,請參閱 上的自訂遊戲後端託管指南 AWS