Google 開源專案 Open Saves 簡介:遊戲專用的雲原生儲存

今天許多大型 AAA 級遊戲,都致力打造「身歷其境」的豐富體驗,讓玩家穿梭於逼真的遊戲世界與故事線中。當然,要營運這樣的一款遊戲,就需要大量的儲存、高效能的儲存技術來確保遊戲資料能達到玩家要求水平。遊戲開發人員不僅需要儲存不同類型的資料(例如存檔、庫存、補丁、回放等),還必須保持儲存系統的高性能、可用​​性、可擴展性和成本效益。近期 Google 就與遊戲商 2K 共同開源一項 Open Saves 專案,這是一項專為多個儲存後端所打造的單一介面,由 Google Cloud 提供支援並與 2K 合作開發。現在,開發團隊可以儲存遊戲資料,而無需為該使用哪種儲存解決方案如:Cloud Storage、Memorystore、Firestore 做出技術決策。

2K 的 IT 安全副總裁 Joe Garfola 表示:「Open Saves 表明了我們致力與頂尖開發者,合作遊戲解決方案的承諾。要做到這件事,需要具備遊戲產業的豐富經驗,以及 Google 這樣的規模。我們很期待和 Google Cloud 的持續合作。」

(延伸閱讀:遊戲開發者必讀懶人包,Google Cloud 專家對談,重點筆記帶著走

Open Saves 技術架構簡介

對遊戲開發團隊而言,他們可以根據 Open Saves 保存遊戲資料,而不必顧慮後端儲存解決方案;對運營團隊來說,他們可以專注於所需的擴展性和儲存選擇。下圖是 Open Saves 的架構概述:

gcp open saves
Google Cloud Open Saves 解決方案架構

遊戲開發者可以利用 Open Saves 運行一套雲原生的遊戲儲存系統,優點如下:

  • 簡單:
    Open Saves 為 metadata、結構化 / 非結構化物件,提供統一且定義明確的 gRPC 端點
  • 快速:
    藉由內建的緩存系統,Open Saves 能根據存取頻率和資料大小,優化資料放置。如此,能同時使較小的二元物件實現低延遲,並在大型物件上實現高吞吐量。
  • 可擴展:
    Open Saves API 伺服器可以在 Google Kubernetes EngineCloud Run 上運行。這兩個平台都可以水平擴展、每秒處理數十萬個請求。Open Saves 還將資料儲存在 FirestoreCloud Storage 中,每秒可以處理數百 GB 的資料和高達數百萬的請求。

Open Saves 的設計考慮到了可擴展性,並且,可以整合到任何遊戲中 — 從手遊到遊戲機、從多人遊戲到單人遊戲 — 它能在任何基礎設施上運行,不論是地端、雲端或混合式基礎架構。Open Saves 的伺服器由 Go 編寫,但因為 API 被定義在 gRPC,用戶可使用多種程式語言並從客戶端或伺服器進行連接。

點此按鈕聯絡 iKala Cloud,索取更多遊戲產業專屬解決方案

您可以用以下代碼,非常簡單地寫入、讀取 Open Saves:

// To write
	record := &pb.Record{
		Key:      uuid.New().String(),
		Tags:     []string{"tag1", "tag2"},
		OwnerId:  "owner",
	}
	createReq := &pb.CreateRecordRequest{
		StoreKey: storeKey,
		Record:   record,
	}
	_, err := client.CreateRecord(ctx, createReq)
	if err != nil {
		t.Fatalf("CreateRecord failed: %v", err)
	}

	// To read
	getReq := &pb.GetRecordRequest{StoreKey: storeKey, Key: recordKey}
	response, err := client.GetRecord(ctx, getReq)
	if err != nil {
		t.Errorf("GetRecord failed: %v", err)
	}

 

更多文件歡迎參考:

 

(本文翻譯改編自 Google Cloud。)


連絡「GCP 專門家」