TFT 데이터분석 - API 데이터 설명

Jaehyun_onelion·2023년 3월 17일
0

Side Project - TFT

목록 보기
2/10
post-thumbnail

TFT 게임 데이터를 받으려면 어떤 데이터가 있는지 살펴봐야 한다.
라이엇 디벨로퍼에 API 항목을 클릭하면 어떤 api가 있는지 확인가능하다.

다음 화면에서 왼쪽 탭이 api 종류이다. 라이엇 게임즈 모든 게임에 대한 api가 존재한다. 이 중 TFT 항목을 살펴보면 된다.


TFT 항목은 총 4개로 구성된다. 그 중 경기 데이터를 추출하는데 필요한 3개의 항목에 대해 알아보자.

1. TFT-LEAGUE-V1

TFT 랭크 게임에 대한 api이다.

해당 파트에는 7개의 세부 api가 존재하는데, 중점적으로 살펴볼 5개의 세부 api에 대해 알아본다.

1) /tft/league/v1/challenger

랭크가 챌린저인 유저 api이다. 해당 데이터를 불러오면 dictionary 형태로 불러와지는데, dictionary에서 핵심이 되는 데이터는 entries이다.
entries 내에 랭크가 챌린저인 유저 데이터가 저장되어 있다. entries 또한 dictionary이며 10개의 key가 존재한다. 추가로, challenger는 300명만 존재하기 때문에 item 수는 300개이다.

(1) summonerid : 유저 id code, String이다.

(2) summonerName : 게임에서 사용하고 있는 유저의 id, String이다.

(3) leaguePoints : 현재 rank 점수, int이다.

(4) rank : rank. 챌린저이므로 모든 유저가 'I'.

(5) wins : 이번 rank 측정 기간 중 승리 수, int이다.

(6) losses : 이번 rank 측정 기간 중 패배 수, int이다.

(7) veteran : 베테랑 유무. (이번 시즌 게임 수가 100회 이상이면 베테랑), Boolean이다.

(8) inactive : 최근 게임 참여 적극성, Boolean이다.

(9) freshBlood : 이번 시즌이 첫 시즌인 경우 T, Boolean이다.

(10) hotStreak : 3연승 이상 중, Boolean이다.

2) /tft/league/v1/entries/by-summoner/{summonerId}

summonerID 부분에 유저 id code를 입력하면, 해당 유저에 대한 정보를 얻을 수 있다. 정보에 일반 랭크 게임과 초고속 모드 랭크 게임이 나누어져 있는데, 랭크 게임 데이터에 집중하기로 했다.

제공되는 정보는 다음과 같다.

1) leagueId : 현재 소속된 리그 id, String이다.

2) queueType : 게임 타입(랭크, 초고속 모드 랭크로 나누어져 있다.)

3) tier : rank String이고, 범주형이다.(아이언, 브론즈, 실버, 골드, 플래티넘, 다이아몬드, 마스터, 그랜드마스터, 챌린저)

4) rank : rank, 해당 랭크의 몇 티어인지 나타내준다.

5) summonerid : 소환사 id code이다. String이다.

6) summonerName : 게임에서 사용하고 있는 유저의 id.

7) leaguePoints : 현재 rank 점수.

8) wins : 이번 rank 측정 기간 중 승리 수.

9) losses : 이번 rank 측정 기간 중 패배 수.

10) veteran : 베테랑 유무. (이번 시즌 게임 수가 100회 이상이면 베테랑)

11) inactive : 최근 게임 참여 적극성

12) freshBlood : 이번 시즌이 첫 시즌인 경우 T.

13) hotStreak : 3연승 이상 중 여부.

3) /tft/league/v1/entries/{tier}/{division}?page={number}

챌린저, 그랜드마스터, 마스터를 제외한 나머지 티어에 속한 유저 api, challenger와 같이 entries에 유저 정보가 들어있다.
tier 부분에 알고 싶은 랭크(Iron, Bronze, Silver, Gold, Platinum, Diamond), division 부분에 해당 랭크 티어(I, II, III, IV), number 부분에 page 수를 입력하면 된다.
Diamond부터 유저 수가 많아지기 때문에, page를 통해 데이터를 각각 추출해주어야 한다. 페이지마다 205명의 유저 정보가 존재하는데 page가 바뀔 때 이전 page의 후반 5명 정보부터 데이터가 이어진다. (따라서, 한 페이지 당 200명의 유저 정보가 들어있다.)
Challenger 데이터에서 3개의 key가 추가된다.

1) leagueId : 해당 유저가 속한 리그 아이디, String이다.

2) queryType : queryType으로 rank와 초고속모드 rank로 나뉘어져 있다.

3) tier : 해당 유저 티어, 아이언~다이아몬드를 선택할 수 있기 때문에, 해당 key를 통해 어떤 티어에 속하는지 확인할 수 있도록 했다.

4) /tft/league/v1/grandmaster

그랜드마스터에 속한 유저 api
challenger와 같이 entries에 유저 정보가 들어있으며, entries의 key 또한 같다.

5) /tft/league/v1/master

마스터에 속한 유저 api
challenger와 같이 entries에 유저 정보가 들어있으며, entries의 key 또한 같다.

2. TFT-MATCH-V1

게임 정보가 담겨있는 api이다.
두 개의 세부 api가 존재한다.

1) /tft/match/v1/matches/by-puuid/{puuid}/ids

유저의 id를 입력하면, 해당 유저의 게임 아이디를 제공해준다. 해당 게임 아이디를 이용하여, 게임 정보를 추출할 수 있다.
puuid 부분에 해당 유저의 puuid를 입력하면, 게임 결과가 제공된다. (puuid는 밑쪽에 나오는 데이터 셋으로부터 얻을 수 있다.)
추가 변수로는
count : 게임 수 - 최근 게임부터 시작하여 몇 경기를 얻을 것인지 설정하는 값
endTime : 마감 기간 - endTime 이전 게임 정보를 얻을 때 사용
startTime : 시작 기간 - startTime 이후 게임 정보를 얻을 때 사용
region : 지역 - 경기가 진행된 지역 (America, Asia, Europe, Sea로 4개의 카테고리가 존재한다.)

2) /tft/match/v1/matches/{matchId}

2-1에서 얻은 게임 id를 matchID에 입력하면, 해당 게임 정보를 제공해준다. 해당 데이터는 조금 복잡하다. 얻는 결과로 metadata, info 두개의 key를 가지는 dictionary를 얻게 된다.

metadata : 게임 정보 - 게임 버전, 참가자, 게임 id로 구성된 dictionary
info : 게임 세부 정보 - 게임 시작 시간, 게임 길이, 게임 버전, 참가자 정보, 시즌 번호, 게임 타입으로 구성되어 있다. 이 중 참가자 정보에 해당 경기의 세부 내용이 담겨 있다.

info - participants

길이가 8인 list로 되어 있다. list의 원소는 dictionary인데, 해당 dictionary의 해당 유저의 플레이 정보가 담겨있다. dictionary의 key는 다음과 같다.

(1) companion : 전설이 정보

(2) gold_left : 게임이 끝났을 때 남은 돈

(3) last_round : 해당 유저가 게임이 끝났을 때의 마지막 라운드

(4) level : 게임이 끝났을 때 해당 유저의 레벨

(5) placement : 해당 유저의 등수

(6) player_eliminated : 해당 유저가 죽인 유저 수

(7) puuid : 해당 유저 puuid

(8) time_eliminated : 해당 유저가 게임한 시간

(9) total_damage_to_players : 해당 유저가 다른 유저에게 입힌 데미지

(10) traits : 해당 유저 특성 정보, dictionary이다.

(11) units : 해당 유저 유닛 정보, dictionary이다.

(12) augments : 해당 유저 증강체 정보, list이다.

participants에서 traits dictionary와 units dictionary가 존재한다. 이 둘에 대해서 알아보자

info-participants-traits

특성 정보를 모아놓은 dictionary이다. 게임이 끝났을 때 유닛들로 만들어진 특성에 대한 정보가 들어있다.

① name : 특성 이름
② num_units : 해당 특성을 가진 유닛 수
③ style : 티어(티어 없음 : 0, 브론즈 : 1, 실버 : 2, 골드 : 3, 프리즘 : 4)
④ tier_current : 현재 티어
⑤ total_tier : 해당 티어의 최대 티어

info-participants-units

유닛 정보를 모아놓은 dictionary이다.

① items : 해당 유닛이 착용한 아이템 - list로 존재한다.
② character_id : 해당 유닛 id
③ name : 해당 유닛 이름
④ rarity : 해당 유닛 희귀도, 비용과 다른 값을 가짐.
⑤ tier : 해당 유닛 성(star) 수

여기서 character_id와 items은 숫자 또는 string으로 구성되어 있는데, 해당 값으로부터 아이템/유닛 이름을 찾는 방법은 data_dragon이라는 데이터로부터 찾을 수 있다. 향후 포스트 예정


해당 데이터가 info - participants 데이터이고


해당 데이터는 info - participants - units (한 유저)

해당 데이터가 info - participants - traits이다. (한 유저)

3. TFT-SUMMONER-V1

유저 정보 api이다. 제공 데이터는 같으나 입력 정보가 다른 4개의 api, 해당 사이트에 로그인 되어 있는(me) 유저의 정보를 알려주는 api로 구성되어 있다.

입력 정보는

  • encrypted Accountid : 암호화된 유저 id
  • summonerName : 유저 닉네임
  • encryptedPUUID : 암호화된 유저 PUUID
  • encryptedSummonerId : 암호화된 유저 닉네임

으로 구성되어 있다.

해당 api로부터 얻을 수 있는 정보는 다음과 같다.

accountid : 해당 유저 id
profileIconId : 해당 유저 프로필 아이콘 id
revisionDate : 해당 유저 프로필 변경 일자(레벨업하거나, 유저명 변경, icon명 변경한 최근 일자로 되어 있다.)
name : 유저 닉네임
id : 암호화된 유저 id
puuid : 암호화된 유저 PUUID
summonerLevel : 해당 유저 레벨(league of legend 레벨이다.)

여기서 얻은 puuid를 2-1. /tft/match/v1/matches/by-puuid/{puuid}/ids에 입력하면 게임 정보를 얻을 수 있다.

게임 정보 얻기

해당 API를 이용하여 다음의 과정으로 게임 정보를 얻었다.

  1. 추출할 유저 랭크 정하기.

  2. 정한 랭크에 해당하는 유저 추출하기. (TFT-LEAGUE-V1 이용)

  3. 추출한 유저 summonerName을 이용, 해당 유저의 PUUID 추출하기. (TFT-SUMMONER-V1 이용)

  4. PUUID를 이용, 해당 유저가 게임한 경기 id 추출하기.(/tft/match/v1/matches/by-puuid/{puuid}/ids 이용)

  5. 경기 id 이용, 경기 내용 추출하기. (/tft/match/v1/matches/{matchId})

  6. 추출한 경기 내용 정리하기.

이를 도식화하면 다음과 같다.

다음 포스트에서는 python을 이용하여 데이터를 어떻게 추출했는지 포스트할 예정이다.

profile
데이터 분석가 새싹

0개의 댓글