laxity7/glicko2
Composer 安装命令:
composer require laxity7/glicko2
包简介
A PHP implementation of glicko2 rating system
README 文档
README
A PHP implementation of Glicko2 rating system
The Glicko2 rating system is a popular algorithm used to calculate the skill levels of players in various competitive games. It takes into account both the player's performance and the strength of their opponents, providing more accurate and up-to-date ratings compared to traditional methods like Elo. The system uses a logarithmic function that adjusts a player's rating based on the outcome of their matches, with higher-skilled players having a greater impact on their opponent's ratings. Glicko2 also employs a confidence interval and a smoothing parameter to further refine the accuracy and stability of the rankings.
The Glicko2 rating system is an advanced Elo system that was used in Mark Zuckerberg's infamous Facemash website
Supports PHP versions 7.4 and 8.*
Installation
For installation via Composer run:
composer require laxity7/glicko2
Usage
For example, you have a table in the database with the following fields:
use laxity7\glicko2\Player; use App\UserRating; class UserRating { public int $user_id; public float $rating; public float $rating_deviation; public float $rating_volatility; } class Repository { public function getUserRating(int $userId) { $userRating = $this->findInDbFromId($userId); if (!$userRating) { $userRating = $this->createUserRating($userId); } return $userRating; } public function createUserRating(int $userId) { $player = new Player(); $userRating = new UserRating(); $userRating->user_id = $userId; $userRating->rating = $player->getRating(); $userRating->rating_deviation = $player->getRatingDeviation(); $userRating->rating_volatility = $player->getRatingVolatility(); $this->saveToDb($userRating); return $userRating; } public function updateRating(int $userId, Player $player) { $userRating = $this->getUserRating($userId); $userRating->rating = $player->getRating(); $userRating->rating_deviation = $player->getRatingDeviation(); $userRating->rating_volatility = $player->getRatingVolatility(); $this->saveToDb($userRating); } }
Ok, preparation completed, lets play
use laxity7\glicko2\MatchGame; use laxity7\glicko2\MatchCollection; use laxity7\glicko2\Player; $repository = new Repository(); $userRating1 = $repository->getUserRating(1); $userRating2 = $repository->getUserRating(2); $player1 = new Player($userRating1->rating, $userRating1->rating_deviation, $userRating1->rating_volatility); $player2 = new Player($userRating2->rating, $userRating2->rating_deviation, $userRating2->rating_volatility); //$player2 = new Player(); available defaults for new player // match chain $match1 = new MatchGame($player1, $player2, 1, 0); $match1->calculate(); // The calculation method does not return anything, it only calculates and changes the rating of players $match2 = new MatchGame($player1, $player2, 3, 2); $match2->calculate(); // or match collection $matchCollection = new MatchCollection(); $matchCollection->addMatch(new MatchGame($player1, $player2, 1, 0)); $matchCollection->addMatch(new MatchGame($player1, $player2, 3, 2)); $matchCollection->calculate(); // just get a new ratings $newPlayer1Rating = $player1->getRating(); $newPlayer2Rating = $player2->getRating(); // for example, save to the database $repository->updateRating(1, $player1); $repository->updateRating(2, $player2);
Author
Aleksandr Zelenin, e-mail: aleksandr@zelenin.me
Vlad Varlamov, e-mail: vlad@varlamov.dev
laxity7/glicko2 适用场景与选型建议
laxity7/glicko2 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 126 次下载、GitHub Stars 达 1, 最近一次更新时间为 2019 年 07 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「Rating」 「ranking」 「glicko」 「glicko2」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 laxity7/glicko2 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 laxity7/glicko2 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 laxity7/glicko2 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A PHP glicko2 implementation with an easy to use interface
This Extension integrates a credit check and more made by the LEONEX Risk Management Platform into your order process. Extensive configuration and evaluation options is provided in the Platform
A PHP implementation of the Glicko2 rating system. Fork of zelenin/glicko2, updated and compatible with PHP 8.1+
A PHP implementation of Glicko2 rating system
A points-based leaderboard extension for Flarum with configurable point sources, period filtering, and podium display.
Rating syetem for Laravel 5
统计信息
- 总下载量: 126
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 5
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-07-02