PHP code example of eloquent-works / rating-kit
1. Go to this page and download the library: Download eloquent-works/rating-kit library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
eloquent-works / rating-kit example snippets
use EloquentWorks\RatingKit\Traits\HasRatings;
class User extends Authenticatable
{
use HasRatings;
}
$user->ratings;
$user->ratingFor('chess.blitz', 'glicko2');
$user->currentRating('chess.blitz', 'glicko2');
$user->ratingStats('chess.blitz', 'glicko2');
$user->ratingRank('chess.blitz', 'glicko2');
$user->ratingHistory('chess.blitz', 'glicko2');
$user->recentRatedMatches();
use EloquentWorks\RatingKit\Facades\RatingKit;
$match = RatingKit::oneVsOne(
left: $winner,
right: $loser,
result: 'left',
algorithm: 'glicko2',
pool: 'chess.blitz',
externalId: 'game-10001',
);
RatingKit::oneVsOne(
left: $playerA,
right: $playerB,
result: 'draw',
algorithm: 'elo',
pool: 'chess.rapid',
);
RatingKit::teamVsTeam(
left: [$playerA, $playerB],
right: [$playerC, $playerD],
result: 'left',
algorithm: 'glicko2',
pool: 'chess.teams.blitz',
);
RatingKit::teamVsTeam(
left: [$playerA, $playerB, $playerC],
right: [$playerD, $playerE, $playerF],
result: 'right',
algorithm: 'weng_lin',
pool: 'arena.3v3.ranked',
);
use EloquentWorks\RatingKit\Data\RecordMatch;
use EloquentWorks\RatingKit\Data\Team;
$match = RatingKit::record(new RecordMatch(
teams: [
new Team([$a, $b], rank: 1, score: 18, name: 'Red'),
new Team([$c, $d], rank: 2, score: 14, name: 'Blue'),
new Team([$e, $f], rank: 3, score: 9, name: 'Green'),
],
algorithm: 'plackett_luce',
pool: 'arena.trios',
externalId: 'match-9001',
));
RatingKit::freeForAll([
['participant' => $winner, 'rank' => 1, 'score' => 25],
['participant' => $second, 'rank' => 2, 'score' => 18],
['participant' => $third, 'rank' => 3, 'score' => 12],
['participant' => $fourth, 'rank' => 3, 'score' => 12],
], algorithm: 'plackett_luce', pool: 'battle-royale.solo');
use EloquentWorks\RatingKit\Data\Participant;
RatingKit::teamVsTeam(
left: [
new Participant($starter, weight: 1.0),
new Participant($substitute, weight: 0.35),
],
right: [$opponentA, $opponentB],
result: 'left',
algorithm: 'elo',
pool: 'football.doubles',
);
$user->currentRating('chess.standard', 'glicko2');
$user->currentRating('chess.blitz', 'glicko2');
$user->currentRating('chess.teams', 'weng_lin');
$user->currentRating('variant.atomic', 'elo');
$season = RatingKit::createSeason(
name: 'Season 1',
slug: 'season-1',
pool: 'arena.ranked',
startsAt: now(),
endsAt: now()->addMonths(3),
);
RatingKit::teamVsTeam(
left: $redTeam,
right: $blueTeam,
result: 'left',
algorithm: 'glicko2',
pool: 'arena.ranked',
seasonId: $season->id,
);
RatingKit::closeSeason($season);
$leaderboard = RatingKit::leaderboard(
pool: 'chess.blitz',
algorithm: 'glicko2',
limit: 100,
$leaderboard = RatingKit::leaderboard(
pool: 'chess.blitz',
algorithm: 'glicko2',
conservative: true,
);
$rank = RatingKit::rankOf($user, 'chess.blitz', 'glicko2');
$prediction = RatingKit::predict([
new Team([$playerA, $playerB], rank: 1),
new Team([$playerC, $playerD], rank: 2),
], pool: 'arena.2v2', algorithm: 'glicko2');
$quality = RatingKit::matchQuality([
new Team([$playerA, $playerB], rank: 1),
new Team([$playerC, $playerD], rank: 2),
], pool: 'arena.2v2', algorithm: 'glicko2');
$statistics = RatingKit::poolStatistics(
pool: 'chess.blitz',
algorithm: 'glicko2',
);
$history = $user->ratingHistory('chess.blitz', 'glicko2');
$peak = $user->peakRating('chess.blitz', 'glicko2');
RatingKit::void($match, 'The result was entered incorrectly.');
RatingKit::adjust(
model: $user,
amount: 25,
reason: 'tournament_bonus',
pool: 'chess.standard',
algorithm: 'glicko2',
);
RatingKit::setRating($user, 1800, reason: 'verified_import');
RatingKit::resetRating($user);
'decay' => [
'enabled' => true,
'inactive_after_days' => 90,
'period_days' => 30,
'points_per_period' => 10.0,
'minimum_rating' => 1200.0,
'maximum_rating' => 2200.0,
],
RatingKit::algorithms()->extend('my_algorithm', MyAlgorithm::class);
'algorithms' => [
'my_algorithm' => App\Ratings\MyAlgorithm::class,
],
bash
php artisan rating-kit:install --migrate
bash
php artisan rating-kit:install --migrate
php artisan rating-kit:decay
php artisan rating-kit:snapshot --pool=chess.blitz --algorithm=glicko2
php artisan rating-kit:close-season season-1