GameQuant Dev Diary;


All Posts


Automated data collection pipeline (Swagger, ffmpeg, HTTPrequests)

  1. LCU Client API
    • LCU Driver, ffmpeg, replay API 등을 활용하여 제작한 auto data collector.
    • 리플레이를 순차적으로 처음부터 끝까지 8배속으로 녹화하고, 미니맵 부분만 crop filter 적용, 저장공간을 절약한다.
    • API documentation이 없어 꽤 애를 먹었지만, swagger로 콜 보내보면서 열심히 작업한 결과물이다.
»
Author's profile picture Meric Song on gamequant

2021-07-08: Line Push statistics enhancements and First Gank predictions

  1. Line Push Statistics
    • 1) 라인 위치 좌표 지도에 바텀 라인 추가 (블루팀 기준)
    • 노란색: 미는 라인
    • 진녹색: 중간에 걸친 라인
    • 초록색: 당기는 라인
»
Author's profile picture Meric Song on gamequant

2021-07-07 Line Push statistics

  1. Line Push Statistics 결과
    • 탑 미드를 위주로 해당 챔피언이 라인을 중간에서 유지하는지(1), 당기는지(2) 혹은 미는지(3)에 대한 통계값 추출 시스템 완성
    • 1) 탑 미드 라인의 챔피언이 라인을 밀고 있는지 여부를 확인하기 위한 좌표 지도 (블루팀 기준)
    • 노란색: 미는 라인
    • 진녹색: 중간에 걸친 라인
    • 초록색: 당기는 라인
»
Author's profile picture Meric Song on gamequant

2021-07-06 JG Statistics enhancements

  1. JG Statistics 결과
    • 결과물
    • File_Name: 입력 비디오 파일 이름
    • First_Pos: 정글러가 최초로 간 위치 (1: Top, 2:Mid, 3:Bot, 4:Counter JG)
    • Frame_Index: First_Pos에 도달했을 때의 frame index (추후 경기 시간으로 변경 예정)
    • Opposite_JG_ID: 상대 정글러의 챔피언 ID
    • 값이 -1인 경우는 오류가 발생한 경우 (위치 탐색 실패)
»
Author's profile picture Meric Song on gamequant

JG Statistics MVP - 1

  1. JG Statistics
    • 각 진영 별 갱라인 위치와 상대 정글 위치 좌표 추출
»
Author's profile picture Meric Song on gamequant

2021-07-02 Minion tracking enhancements.

  1. Minion Tracking
    • 이것저것 많이 건드려보았는데 미니언 트랙킹 자체가 변수가 많고 고려해야하는 경우의 수가 많아서 앞으로도 계속 보완해야 할 것 같음.
    • 1) Centroid 거리 비교 고도화
    • 기존의 방법은 scikit-image를 활용하여 얻은 미니언 웨이브마다의 centroid를 얻은 다음 단순히 centroid 사이의 거리를 바탕으로 교착상태인지 결정
    • 미니언 웨이브의 크기와 미니언으로 간주된 챔피언 아이콘이 길게 늘어질 경우 centroid와 웨이브의 가장자리 지점까지의 거리가 멀어 centroid 비교로는 정확도가 떨어짐
    • Centroid의 거리에 각 웨이브의 major axis length의 절반(타원의 반지름으로 이해)만큼을 빼주어서 두 웨이브 사이의 최단 거리를 고려하는 방법으로 보완
»
Author's profile picture Meric Song on gamequant

Minion tracking noise interpolation.

  1. Minion Tracking
    • noise(중간중간 엉뚱한 위치에 예측) 제거와 중간 몇몇 프레임에서 누락되는 경우를 보완(interpolate)
    • 기존 방식은 프레임마다 미니언의 위치를 예측하고 morphology dilation을 통해 미니언을 웨이브로 묶은 다음 블루팀 웨이브와 레드팀 웨이브가 가까이 있을 경우 교착 상태(lock)으로 좌표값 반환
    • noise 제거와 일부 프레임 누락 문제 해결을 위하여 각 교착 상태의 좌표를 각각의 상황(위치 기준)으로 구분
    • 각 lock 좌표에 대해 기존 lock 좌표로 구성된 graph(하나의 상황을 묶은 것)와 비교하여 새로운 graph에 해당할 경우 새롭게 graph를 생성하고 그렇지 않으면 기존의 graph에 하나로 합치는 방법
    • 이때 기존 그래프의 좌표와 비슷한 위치에 존재하지만 프레임 차이(frame_dist)가 큰 경우에는 같은 웨이브라고 보기 어려우므로 따로 구
»
Author's profile picture Meric Song on gamequant

2021-06-30 Code refactoring

  1. Code Refactoring
    • 기존 코드가 jupyter notebook에 너무 난잡하게 짜여져 있어 code refactoring 진행
    • 정리한 코드 구조
    • main.py : main code
    • utils └ io.py : input/output └ champ_tracking.py : functions for champion icon tracking └ jg_tracking.py : functions for jungle monster tracking └ minion_tracking.py : functions for minion tracking └ time_log.py : functions for kill and object log tracking
    • 정리된 main.py 코드
»
Author's profile picture Meric Song on gamequant

Jg mobs/minions tracking enhancement from minimap

  1. 정글몹 tracking
    • 이전에 정글몹 아이콘을 이용한 tracking 방법 대체. 정글몹은 미니맵 상에서 고정된 위치에 존재하므로 해당 위치에 정글몹 아이콘이 존재하는지 여부를 바탕으로 tracking
    • 각 정글몹별 미니맵 상의 좌표 (수작업으로 구한 값이라 오차가 있을 수 있음.)
»
Author's profile picture Meric Song on gamequant

Timeline video analysis of LoL replay(cont'd) and Objective tracking from minimap

  1. 타임라인 오브젝트 로그
    • 1.1 오브젝트 아이콘 이미지 확보 (링크)
»
Author's profile picture Meric Song on gamequant

Timeline video analysis of LoL replay - 1

  1. 리플레이 영상으로부터 시간 추출
    • 2.1 전체 영상에서 현재 게임 시간 영역 추출 (빨간색 박스)
»
Author's profile picture Meric Song on gamequant

Automated data collection pipeline via frame-by-frame SSIM analysis - 5 (JgPos v1.4)

  1. JgPos v1.4 개발
    • 아래의 예시와 같이 JgPos v1.3에서 귀환 모션을 잡아내지 못하는 문제점 발견
»
Author's profile picture Meric Song on gamequant

Automated data collection pipeline via frame-by-frame SSIM analysis - 4

  1. JgPos v1.3 개발
    • 매칭의 대상이 되는 query icon 테두리에 각 진영(red, blue)에 해당하는 원을 추가하여 매칭 정확도 향상
»
Author's profile picture Meric Song on gamequant

Automated data collection pipeline via frame-by-frame SSIM analysis - 3

  1. 플레이어의 위치 예상 AI 모델 학습용 csv 데이터셋 확보를 위한 코드 제작
    • csv에 기록되는 값: Time step, here (챔피언 ID; 해당 링크의 챔피언 ID 엑셀 파일 사용), x_coord, y_coord, position (탑:0, 정글:1, 미드:2, 원딜:3, 서폿:4)
    • JgPos v1.2이 예측하지 못한 프레임의 경우, 별도의 방법(e.g., 전후의 프레임 정보 활용)을 이용하여 해당 프레임에 누락된 챔피언의 위치를 기입할 예정
    • JgPos v1.2 기반 샘플 csv 데이터셋 (링크)
»
Author's profile picture Meric Song on gamequant

Automated data collection pipeline via frame-by-frame SSIM analysis - 2

  1. 각 챔피언의 프레임 당 위치 예측 모델 성능 개선 (JgPos v1.2)
    • 챔피언 아이콘이 겹치는 경우에도 최대한 예측이 가능하도록 수정
    • Center-cropping: query icon의 크기를 조금씩 줄여가며 matching
    • Portion matching: occlusion된 경우를 고려하여 전체 icon 중 일부만 crop하여 matching
    • HSV difference: 단순히 SSIM만 고려하였을 때, 협곡의 지형과 챔피언 아이콘의 모양이 유사하여 매칭되는 경우가 있어 매칭된 영역과 챔피언 아이콘 사이의 HSV값을 추가적으로 비교
»
Author's profile picture Meric Song on gamequant

Automated data collection pipeline via frame-by-frame SSIM analysis - 1

  1. 샘플 영상 확보
»
Author's profile picture Meric Song on gamequant