今天的许多游戏提供丰富的、身临其境的游戏体验,它们能让游戏玩家能够参与一持续发展的游戏故事。为了创造这些持久的体验,需要使用大量的存储技术来确保游戏数据可以扩展并满足游戏玩家的需求。游戏开发人员不仅需要存储不同类型的数据(例如存档、游戏道具、补丁、回放等),而且还必须保持游戏存储系统的高性能、可用性、可扩展性和存储成本。
Open Saves,这是一个全新的、专门为多种后端存储技术构建的统一接口,由 Google Cloud 提供支持并与 2K 公司一起合作开发。使用 Open Saves,游戏开发者可以统一存储游戏数据,而无需就使用哪种存储解决方案做出技术决策,这些后端的存储技术包括 Cloud Storage、Memorystore、Firestore 。
“Open Saves 表明我们致力于与顶级开发者开发游戏行业的解决方案, 使得 Open Saves 具备深厚的游戏行业专业知识以及与 Google 业务的扩展性水平。” 2K 的 IT 和安全副总裁 Joe Garfola 表示。“我们期待与 Google Cloud 继续合作。”
游戏开发团队可以通过 Open Saves 保存游戏数据,而不必担心如何选择何种最佳后端存储解决方案,而运维团队可以专注于所需的可扩展性和存储的运维选项。使用架构图如下:
使用 Open Saves,游戏开发者可以运行一个云原生游戏存储系统:
简单:Open Saves 为元数据、结构化和非结构化对象的所有操作提供统一的、定义良好的 gRPC 端点。
快速:Open Saves 内置缓存系统,根据访问频率和数据大小优化数据放置,实现较小对象存储访问的低延迟和大对象存储访问的高吞吐量。
可扩展:Open Saves API 服务器可以在 Google Kubernetes Engine 或 Cloud Run 上运行。 这两个平台都可以横向扩展以每秒处理数几十万个请求。Open Saves 还将数据存储在 Firestore 和 Cloud Storage 中,并且每秒可以处理数百 GB 的数据和高达数百万的请求。
Open Saves 的设计考虑到了可扩展性,可以被集成到任何游戏中——无论是移动游戏还是端游、多人游戏或单人游戏——可以在任何基础设施上运行,从本地到云或混合环境。服务器采用 Go 编写,但因为 API 是在 gRPC 中定义的,因此您可以使用多种编程语言并从客户端或服务器进行连接。
写入和读取 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)
}
我们正在与 2K Games 合作并积极开发 Open Saves。
文章信息
相关推荐
