排行榜参考体系结构

以下参考体系结构介绍排行榜用例以及具有不同替代方案的实现,让您能够构建自己的云解决方案,从而可以完全控制和自定义以完美适合您的游戏设计。

提示

如果您要查找开箱即用的排行榜解决方案,PlayFab是一个完整的后端平台,用于生成、启动和发展具有排行榜支持 的云连接游戏。

排行榜设计

在定义排行榜时,有许多变量可供考虑。 下面是一些示例,供您参考:

  • 地理位置:玩家所在的地理位置。 从国家到地区再到大洲乃至更广阔的范围,根据您的需要确定粒度。 示例:法国、中国、美国、北美、亚洲、EMEA。
  • 平台:运行游戏的设备或服务。 您也可以考虑启用合并多个平台的排行榜。 示例:Xbox、PlayStation、电脑、iOS、Android、移动设备、主机。
  • 模式:改变游戏玩法和影响其他游戏机制行为的独有配置。 示例:单人、双人、小组、PvE、PvP、锦标赛。
  • 难度:用户选择的挑战。 示例:容易、中等、困难。
  • 选项:玩家选择的各个选项。 示例:角色(人、车辆)、物品(武器、工具)、设置(手动或自动变速)。
  • 关卡:游戏中的关卡或阶段。 示例:关卡 2-1、赛道 3。
  • 统计信息:玩家生成的各个值(基于使用情况或操作)。 示例:得分、获胜、失败、收集的硬币数。

玩家身份验证和标识

此参考体系结构不涵盖玩家身份验证或玩家标识。 这两项留给读者作为练习。

PlayFab 提供多种形式的身份验证,以便在多台设备上跟踪玩家:

  • 用于访客登录的设备 ID
  • 用户名/密码
  • Google 帐户
  • GameCenter 帐户
  • Facebook 帐户
  • Steam 帐户
  • Kongregate 帐户
  • Twitch 帐户
  • 其他 oAuth 提供程序
  • Android 设备 ID
  • 自定义玩家 ID

大小和复杂性

排行榜可以是基于分数的极为简单的玩家排名系统,也可能因跟踪多个统计信息、选项、关卡、平台等的组合而变得既庞大又复杂。 例如,假设有一个组合了变量平台地理位置模式关卡统计信息的排行榜。 这将允许在游戏场景中使用“法国(地理位置)的 Xbox One(平台)玩家在第 3 关(关卡)进行玩家对战(模式)模式的得分(统计信息)”这样的值计算玩家的排名。 跟踪此数据后,您可以删除地理位置筛选条件,从而计算身处任何位置的所有玩家的排名。

再举一例,假设有一个组合了变量系统关卡统计信息的排行榜。 这将允许游戏在赛车游戏场景(例如“电脑(系统)玩家完成赛道 Nürburgring(关卡)的时间”)中计算玩家的排名。

当然,特定的游戏可能还会有更多计算玩家排名的方式。 提供的示例实现只是使用上述几个变量的起点。 在本用例中,将基于两个变量对玩家得分进行排名:平台和关卡。 每个平台上的玩家都将在每个关卡中夺取最高分数。 请以此为基础随意构建和修改,以适应您的游戏需求。

数据刷新

数据过时的排行榜比根本没有排行榜好不到哪儿去。 但是,出于成本原因,避免频繁刷新数据可能是有意义的。 尝试间隔一段时间刷新并重新计算排名,范围从每分钟到每小时。 在某些情况下,甚至每天刷新一次也是可以的。 但是,如果您确实需要(接近)实时刷新排行榜数据,此参考体系结构也能满足您的要求。

我附近的玩家

最佳实践是显示用户在排行榜上的位置,以便玩家可以看到谁排在他们上面和下面,让他们知道他们可以做得更好。 不要仅向玩家显示游戏中排名最高的玩家,这会令他们感到沮丧;让玩家明白可以轻松地实现排名攀升,这有助于提高他们的参与度。

反作弊

总有些玩家会尝试向您的排行榜中注入虚假分数,这会给社区造成负面影响。 您可以采取一些措施来提高作弊难度:

  • 加密客户端与云之间的通信,以防止数据包探查。
  • 添加遥测并在服务器端使用,以查看分数是否合理(理想情况下是自动生成),从而即时检测出作弊分数。 两项简单的检查是:
    1. 玩家真的能够在宣称的时间内完成关卡吗?
    2. 玩家多久提交一次分数?
  • 不要丢弃不正确的分数。 将分数和提交此分数的玩家标记为可疑(要务必小心,因为您可能会意外影响到合法用户)。之后,当已知的合法用户访问排行榜时,仅检索未标记为“可能作弊”的分数。 当作弊者提交排行榜查看请求时,仅检索不正确的分数。 这样做的目的是避免给作弊者“伪造分数注入无效”的直接反馈,因此他们会以为自己成功了。

参考实现详细信息

选择用于存储排行榜信息的数据库时,首先要做出的决定之一是使用关系型还是非关系型 (NoSQL) 数据结构。 请牢记以下差异:

关系 非关系
准备工作 必须事先确定数据的结构/架构,日后更改可能会造成破坏 所需的最小结构
刚度 所有数据必须使用相同的结构 每个数据条目可以有自己的结构,以后也可以轻松添加新字段
主存储模型 基于表 文档存储、图形数据库、键值存储或宽列存储
可伸缩性 可垂直缩放 - 增加服务器 CPU、RAM 或存储 可水平缩放 - 分片或添加更多服务器

有关不同存储模型的所有详细信息,请参阅选择适当的数据存储文档。

最后一点,要考虑个人对这两个选项的了解程度。 选择已知道路可避免一系列全新的未知问题,节省熟悉新的最佳实践和概念的时间。

下面是一个简单排行榜用例的两种不同实现,可以帮助您入门:

  • 非关系 (NoSQL):小规模部署使用 Azure Redis 缓存,大规模部署使用 Azure Cosmos DB。
  • 关系:小规模部署使用 Azure SQL 数据库或 MySQL,大规模部署使用 Azure SQL 数据库。

其他资源和示例

Azure 数据体系结构指南