This repository holds the source code and data of the paper "PandaSkill - Player Performance and Skill Rating in Esports: Application to League of Legends".
Player performances and ratings can be visualized here.
-
Clone the repository with Git LFS:
Ensure you have Git LFS installed to handle large files. If Git LFS is not installed, follow these instructions to set it up.
Then, clone the repository and pull the large files:
git lfs install git clone https://github.com/PandaScore/PandaSkill.git cd PandaSkill
-
Set up the environment: Create a virtual environment and install dependencies:
conda create -n pandaskill python=3.12.7 conda activate pandaskill pip install -r requirements.txt
All the data needed to reproduce the results are located in the pandaskill/artifacts/data/
folder. More specifically:
pandaskill/artifacts/data/
├── app/ # performance scores and skill ratings of PandaSkill, used in the visuzalization app
├── expert_surveys/ # files used for the expert evaluation of the models
├── preprocessing/ # features extracted from the raw data, used in the visualization app
└── raw/ # raw data used to produce the experimental results
Details for the `raw` subfolder content
game_metadata.csv
: metadata of the gamesgame_id
: ID of the gamedate
: date in format YYYY-MM-DD HH:MM:SS.ssssssmatch_id
: ID of the match (e.g., a BO5 is a match of max 5 games)tournament_id
: ID of the tournamenttournament_name
: name of the tournament (e.g., Playoffs)series_id
: ID of the serieseries_name
: name of the series (e.g., LCK Summer 2024)league_id
: ID of the leagueleague_name
: name of the league (e.g., LCK)
Note: every game can be included in a tree structure such that: Game ⊆ Match ⊆ Tournament ⊆ Series ⊆ League
.
game_players_stats.csv
:game_id
: ID of the gameplayer_id
: ID of the playerplayer_name
: name of the playerteam_id
: ID of the player's teamteam_name
: name of the player's teamteam_acronym
: acronym of the player's teamrole
: role of the player (e.g., Mid)win
: whether the player has won the game or notgame_length
: length of the game in secondschampion_name
: name of the Champion played by the playerteam_kills
: total number of champion kills of the player's teamtower_kills
: total number of tower kills of the player's teaminhibitor_kills
: total number of inhibitor kills of the player's team (destroying an inhibitor that has respawned is counted as a kill)dragon_kills
: total number of Drake kills of the player's teamherald_kills
: total number of Rift Herald kills of the player's teambaron_kills
: total number of Baron Nashor kills of the player's teamplayer_kills
: player's number of champion killsplayer_deaths
: player's number of deathsplayer_assists
: player's number of assiststotal_minions_killed
: player's number of minions killedgold_earned
: player's total amount of gold earnedlevel
: player's final level (max 18)total_damage_dealt
: damage dealt by the player, disregarding the targettotal_damage_dealt_to_champions
: player's damage dealt to Championstotal_damage_taken
: player's damage taken, disregarding the sourcewards_placed
: player's number of wards placedlargest_killing_spree
: player's largest killing spreelargest_multi_kill
: player's largest multi-kill (max 5)
game_events.csv
:id
: ID of the eventgame_id
: ID of the gametimestamp
: game timestamp in secondsevent_type
: type of the event (e.g.,player_kill
)killer_id
: ID of the killerkilled_id
: ID of the killed if it existsassisting_player_ids
: list of ID of the assisting playersdrake_type
: type of the drake (e.g.,infernal
)
To reproduce the results presented in the paper, follow these steps:
- Compute the features from the raw data:
python pandaskill/experiments/preprocess_data.py
- This is optional, as features are already precomputed in
pandaskill/artifacts/data/preprocessing
- Compute the performance scores for each game:
python pandaskill/experiments/run_performance_score_experiment.py
- you can edit the configuration in the file itself, configurations used in the paper are provided
- Compute the skill ratings:
python pandaskill/experiments/run_skill_rating_experiment.py
- you can edit the configuration in the file itself, configurations used in the paper are provided
Results are located in pandaskill/artifacts/experiments/
.
- provide arxiv link to paper
- provide doi of software