RIOT API 사용법 2
지난 번에는 RIOT DEVELOPER 사이트에서 API KEY 발급받는 방법을 알아 봤습니다.
이번에는 최근 한 게임을 선택해서 제가 움직인 경로를 미니맵에 나타내보겠습니다.
저는 잘했다고 생각합니다
👨💻 최근 1게임 선택해서 데이터 보기
RIOT API를 통해 받은 매치기록 중 최근 1게임의 게임 id 입니다.
'KR_5873049405'
해당 게임아이디로 매치기록을 요청합니다.
# 매치 타임라인 데이터 요청
req_url_match_timeline = 'https://asia.api.riotgames.com/lol/match/v5/matches/KR_5873049405/timeline?api_key=발급받은키'
match_timeline = requests.get(req_url_match_timeline)
데이터 프레임으로 만들어서 대략적인 부분을 살펴보겠습니다.
metadata에는 dataVersion, matchId, participants 데이터가 존재하고
info에는 participants, frameInterval, frames, gameId 데이터가 존재하네요.
participants에는 게임 참가자들의 고유 아이디가 있고
frames에는 게임의 각 프레임(시간)별 게임 데이터,
frameInterval에는 프레임의 간격 데이터가 있습니다.
프레임의 간격은 60000ms로 60초
즉, 1분의 간격으로 게임의 데이터를 전송해 줍니다.
이번에는 info의 frames의 데이터를 간략하게 보겠습니다.
frameInterval대로 60초를 기준으로 행이 나누어져있습니다.
총 42행으로 43분 게임을 했네요.
1분마다의 events와 유저 캐릭터 정보, timestamp 데이터가 있습니다.
게임 내 이벤트로 전달 받은 데이터는 아래와 같습니다.
{'BUILDING_KILL',
'CHAMPION_KILL',
'CHAMPION_SPECIAL_KILL',
'ELITE_MONSTER_KILL',
'GAME_END',
'ITEM_DESTROYED',
'ITEM_PURCHASED',
'ITEM_SOLD',
'ITEM_UNDO',
'LEVEL_UP',
'OBJECTIVE_BOUNTY_FINISH',
'OBJECTIVE_BOUNTY_PRESTART',
'PAUSE_END',
'SKILL_LEVEL_UP',
'TURRET_PLATE_DESTROYED',
'WARD_KILL',
'WARD_PLACED'}
🕺 게임 속 나의 데이터만 뽑아보기
participants에서 자신의 puuid와 비교해서 게임 내에 몇번의 유저인지 알 수 있습니다.
print(f'저의 경우 이번 게임에서 {player_number_per_match}번 입니다.')
저의 경우 이번 게임에서 9번 입니다.
{'championStats': {'abilityHaste': 0,
'abilityPower': 0,
'armor': 33,
'armorPen': 0,
'armorPenPercent': 0,
'attackDamage': 25,
'attackSpeed': 100,
'bonusArmorPenPercent': 0,
'bonusMagicPenPercent': 0,
'ccReduction': 0,
'cooldownReduction': 0,
'health': 550,
'healthMax': 550,
'healthRegen': 0,
'lifesteal': 0,
'magicPen': 0,
'magicPenPercent': 0,
'magicResist': 32,
'movementSpeed': 345,
'omnivamp': 0,
'physicalVamp': 0,
'power': 300,
'powerMax': 300,
'powerRegen': 0,
'spellVamp': 0},
'currentGold': 500,
'damageStats': {'magicDamageDone': 0,
'magicDamageDoneToChampions': 0,
'magicDamageTaken': 0,
'physicalDamageDone': 0,
'physicalDamageDoneToChampions': 0,
'physicalDamageTaken': 0,
'totalDamageDone': 0,
'totalDamageDoneToChampions': 0,
'totalDamageTaken': 0,
'trueDamageDone': 0,
'trueDamageDoneToChampions': 0,
'trueDamageTaken': 0},
'goldPerSecond': 0,
'jungleMinionsKilled': 0,
'level': 1,
'minionsKilled': 0,
'participantId': 9,
'position': {'x': 14539, 'y': 14394},
'timeEnemySpentControlled': 0,
'totalGold': 500,
'xp': 0}
participantFrames 데이터에서 9번 유저에 해당하는 정보만 따로 추출했습니다.
위와 같은 다양한 정보가 나오네요.
이 중에서도 position 데이터만 사용해 보겠습니다.
위 분포표는 게임하면서 제 캐릭터가 움직인 위치를 1분마다 갱신한 것입니다.
미니맵 안에 나타내보겠습니다.
🗺 미니맵에 나타내기
이상으로 RIOT API를 사용하기 두 번째 글을 마치겠습니다.
읽어주셔서 감사합니다 :)
자세한 코드는 코어닷투데이에서 볼수있습니다 :)
Author And Source
이 문제에 관하여(RIOT API 사용법 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dongdongju96/RIOT-API-사용법-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)