지난 번에는 RIOT DEVELOPER 사이트에서 API KEY 발급받는 방법을 알아 봤습니다.
이번에는 최근 한 게임을 선택해서 제가 움직인 경로를 미니맵에 나타내보겠습니다.
저는 잘했다고 생각합니다
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분마다 갱신한 것입니다.
미니맵 안에 나타내보겠습니다.
사이드를 열심히 밀었습니다.
자세한 코드는 여기에서 볼수있습니다.
자세한 코드 url 클릭하면 아무것도 안떠요