furic/排行榜

RESTful API,用于提供排行榜服务和将分数报告给客户端应用程序。

1.0.2 2021-02-07 11:27 UTC

This package is auto-updated.

Last update: 2024-09-07 19:48:59 UTC


README

Packagist Packagist License Scrutinizer Code Quality Build Status

Laravel 5.* 的排行榜管理。此包是在为 Sweaty Chair Studio 中的排行榜解决方案工作时开发的,为玩家提供排行榜。这包括用于读取每日、每周、每月或所有时间的排行榜的 RESTful API,将玩家的分数报告给服务器,以及获取最高排名的奖励。

有两种类型的排行榜

  • 高分:标准排行榜,每个玩家在指定期间只有一个最高分。
  • 得分总和:汇总每个玩家报告的所有得分的排行榜,例如在指定期间收集最多游戏内物品的季节性活动。

Web 控制台在待办事项列表中。同时,您需要手动在数据库中设置排行榜。

目录

安装

使用 Composer 安装此包

$ composer require furic/leaderboards

如果您正在使用 Laravel 5.5 或更高版本,则安装已完成。否则,请按照以下步骤操作。

打开 config/app.php 并按照以下步骤操作

找到 providers 数组并添加我们的服务提供程序。

'providers' => [
    // ...
    Furic\Leaderboards\LeaderboardsServiceProvider::class
],

配置

要创建数据库中的兑换代码表,请运行以下命令

$ php artisan migrate

用法

排行榜表

| Name            | Type      | Not Null |
|-----------------|-----------|----------|
| id              | integer   |     ✓    |
| game_id         | integer   |     ✓    |
| timescope       | tinyint   |     ✓    |
| sum_score       | boolean   |     ✓    |

排行榜设置,您需要手动设置此内容。

  • 游戏 ID:此排行榜属于哪个游戏。
  • 时间范围:排行榜的重复周期:0:所有时间,1 - 每日,2 - 每周,3 - 每月。
  • 得分总和:是否应汇总此排行榜的得分,仅在这是“得分总和排行榜”时设置为 true。

排行榜时间范围表

| Name            | Type      | Not Null |
|-----------------|-----------|----------|
| id              | integer   |     ✓    |
| leaderboard_id  | integer   |     ✓    |
| start_at        | date      |     ✓    |
| end_at          | date      |     ✓    |
| previous_id     | integer   |          |

排行榜时间范围是每个排行榜周期的条目,例如,每日排行榜将每天有一个条目。当第一个玩家在新的周期中报告分数时,将自动创建每个条目。

  • 排行榜 ID:此排行榜时间范围属于哪个排行榜。
  • 开始日期:此排行榜时间范围开始的日期。
  • 结束日期:此排行榜时间范围结束的日期。
  • 上一个 ID:上一个排行榜时间范围 ID,用于提供上一期的排名奖励。

排行榜分数表

| Name                     | Type      | Not Null |
|--------------------------|-----------|----------|
| id                       | integer   |     ✓    |
| leaderboard_timescope_id | integer   |     ✓    |
| player_id                | integer   |     ✓    |
| score_sum                | integer   |     ✓    |
| highscore                | integer   |     ✓    |

排行榜分数是排行榜时间范围周期内玩家的分数条目。当玩家报告分数时,将自动创建每个条目。

  • 排行榜时间范围 ID:此排行榜分数属于哪个排行榜时间范围。
  • 玩家 ID:此排行榜分数属于哪个玩家。
  • 得分总和:此排行榜分数的得分总和,仅用于得分总和排行榜。
  • 高分:此排行榜分数的高分,仅用于高分排行榜。

排行榜奖励表

| Name            | Type      | Not Null |
|-----------------|-----------|----------|
| id              | integer   |     ✓    |
| leaderboard_id  | integer   |     ✓    |
| score_sum       | integer   |          |
| score_sum_rank  | integer   |          |
| highscore_rank  | integer   |          |
| type            | tinyint   |     ✓    |
| amount          | integer   |     ✓    |
| item_id         | integer   |          |

排行榜奖励是达到给定排名或得分总和的玩家的奖励,如果您的排行榜有奖励并且您需要手动设置此内容,则此内容是可选的。

  • 排行榜 ID:此排行榜奖励属于哪个排行榜。
  • 得分总和:此奖励所需的得分总和,例如,收集 5 个糖果获得 100 个硬币。
  • 总分排名:获得此奖励所需的总分排名,例如,5位收集最多玩家的100枚硬币。
  • 高分排名:获得此奖励所需的高分排名,例如,5位最高分玩家的100枚硬币。
  • 类型:奖励项目类型。
  • 数量:奖励项目数量。
  • 项目ID:奖励项目ID,可选。说明:在总分、总分排名和高分排名中,只设置一个数字;其余两个应为空。低排名将忽略高排名,例如5名和10名的条目,10名的条目将忽略前5名的排名,只奖励5名至10名的排名。

排行榜玩家奖励表

| Name                     | Type      | Not Null |
|--------------------------|-----------|----------|
| id                       | integer   |     ✓    |
| leaderboard_timescope_id | integer   |     ✓    |
| player_id                | integer   |     ✓    |
| score_sum                | integer   |     ✓    |
| score_sum_rank           | integer   |     ✓    |
| highscore_rank           | integer   |     ✓    |

排行榜玩家奖励是每个玩家的奖励条目。每当玩家获得奖励时,就会自动创建一个条目。

  • 排行榜时间范围ID:此排行榜玩家奖励属于哪个排行榜时间范围。
  • 玩家ID:此排行榜玩家奖励属于哪个玩家。
  • 总分:玩家达到的总分,仅用于总分排行榜。
  • 总分排名:玩家达到的总分排名,仅用于总分排行榜。
  • 高分:玩家达到的高分,仅用于高分排行榜。

API URL

GET <服务器URL>/api/leaderboards 返回包含所有有效排行榜的JSON数组,仅用于调试目的。

GET <服务器URL>/api/leaderboards/{id} 返回包含给定ID的排行榜的JSON数据,仅用于调试目的。

GET <服务器URL>/api/leaderboards/{id}/current 返回包含当前排行榜时间范围和奖励信息的JSON数据。

GET <服务器URL>/api/leaderboards/{id}/score-sums 返回包含玩家总分条目周围所有总分条目的JSON数组。

GET <服务器URL>/api/leaderboards/{id}/highscores 返回包含玩家高分条目周围所有高分条目的JSON数组。

GET <服务器URL>/api/leaderboards/{id}/rewards 返回包含玩家在当前(总分)和之前(排名)排行榜时间范围内可以获得的全部奖励的JSON数据。

POST <服务器URL>/api/leaderboards/{id}/score 报告玩家的得分并创建相关数据库条目。

POST <服务器URL>/api/leaderboards/{id}/reward 报告玩家获得的奖励并创建相关数据库条目。

API文档可以在这里找到。

Unity 客户端存储库

您可以直接将此仓库导入Unity,使用此包与Laravel服务器进行通信:<待添加>

待办事项

  • 创建Web控制台以添加/编辑排行榜和上传图片。
  • 为Web控制台添加管理员登录。
  • 添加测试和工厂。

替代方案

在您开始运行和开发Laravel服务器之前,您应该首先考虑其他排行榜解决方案。

  • (仅限移动) App Game Center和Google Play Games排行榜:非常推荐用于移动游戏,但不是跨平台,且如移除黑客得分等控制有限。
  • dreamlo:一个免费的跨平台排行榜服务,控制也有限。
  • GameSparks/Playfab:包括排行榜在内的完整游戏服务器服务,非常适合中核游戏,但需要良好的JavaScript和数据库知识。

许可

laravel-leaderboards许可协议为MIT许可证