개발/데이터 분석

배틀그라운드 유저 데이터 분석해보기 1. 프로세스 수립

잠수돌침대 2023. 1. 13. 18:00

완성된 프로젝트를 보고 계십니다. 분석 결과만을 보고 싶으시다면 아래의 URL에 접속해주세요.

https://songmin9813.tistory.com/51(Steam 버전 배틀그라운드유저 분석해보기)


 

게임 데이터 시각화 프로젝트 시작합니다.

다사다난했던 2022년을 보내고 새로운 해를 맞이하면서 지금까지 관심 있게 보고 있던 항목에 대한 개인 프로젝트를 진행해보고자 한다. 대주제로는 'Open API가 존재하는 게임 데이터의 시각화 프로젝트', 그 첫 번째 프로젝트로 모바일로 자주 즐기곤 했던 '배틀그라운드'를 기준으로 데이터를 수집하고, 시각화하는 시간을 가져보고자 한다.

 

이번 프로젝트를 통해 얻고자 하는 것은 크게 두 가지이다.

 

1. PUBG Open API에서 가공할 수 있는 데이터의 확인 및 추출

2. Tableau Public 도구 실전 활용

 

솔직히 이론은 할만큼 했잖아? 실전에서 부딪혀가면서 배우는 것만큼 좋은 게 없지 암요 암요


로그인 및 API 키 발급

 

Open API가 여럿 존재한다만, 필자가 그중 그나마 깊이 있게 즐겼던 '배틀그라운드'에 대한 Open API 또한 존재한다는 것을 알게 되었다.

 

https://developer.pubg.com/(PUBG Developer Portal)

 

여기가 진짜 개발자들의 놀이터인가...

 

나름 한국게임이라 한국어를 기대하며 들어가 보았지만 모두의 언어인 영어로 되어있는 것을 확인했고, 하나하나 정독하면서 사용하는 방법에 대해 관련 Docs를 보며 익히는 시간을 가졌다.

 

💡 다국어 DOCS를 볼 수 있는 깃허브 주소 같은 거 없나? 이런 거 번역하면 어떤 데이터가 존재하는지 확인하며 인사이트에도 도움이 많이 될 것 같다. 혹여나 알고 있다면 제보 바란다.

 

오른쪽 위에 대문짝만 한 로그인 화면을 누른 뒤, 어떤 목적으로 해당 API를 사용할 것인지 작성하게 되면 별도의 승인 없이 사용이 가능한 것으로 보인다.

 

로그인 후 API 사용을 위한 APP 등록화면

 

본인은 개인 데이터 분석 및 공개 발행용 데이터 시각 자료 제작을 위해서임을 명시하였고, 이후에 해당 APP에 대한 인증 키가 보이는 것을 알 수 있었다.

 

API 키는 어떤 일이 있어도 외부에 공개하지 않아야 한다

외부의 유용 및 악용 방지를 위해서라도 API Key는 외부로 절대로 유출되서는 안 된다는 것을 명심하면서 해당 API를 접근하면 좋을 것 같다.

 

해당 Key에 대한 절대적인 Limit은 존재하지 않으며 10 RPM(Requests Per Minute), 즉 1분에 10번의 호출을 허용한다는 내용이 인상 깊었다.

 

💡 이를 통하여 개인 용도의 API 사용을 위해 한 번 호출 뒤 약 7초의 유휴시간(Sleep)을 두는 것이 바람직할 것이다.

무슨 데이터를 어떻게 가지고 놀아볼까나

 

상기 말했듯 하나의 Key당 분당 10개가 최대치이기에 한 게임에 최대 100명이 참가하는 배틀로열 게임의 데이터를 정말 많이 가져올 수 있을까? 에 대한 의구심이 당연히 들 수밖에 없었다.

 

정말 여러 종류의 API가 존재하는 것을 확인했다.

 

여러 DOCS를 보면서 빠르게 데이터의 호출 결과를 볼 수 있는 항목 또한 확인할 수 있었다. 만약 호출하는데 API Keys가 필요하다면 상기 화면과 같이 'AUTHORIZE'를 눌러 자신의 API Keys를 등록해야지만 정상적인 호출이 되는 것을 알 수 있었다.

 

또한 배틀그라운드 또한 모바일 외에도 Steam, Kakao, PSN 등 정말 다양한 서버를 두고 서비스를 진행하고 있기 때문에 특정 플랫폼을 취사 선택하여 호출할 수 있는 것도 인상 깊었다.

 

여러 정보들을 뒤로하고 궁극적으로 찾고자 했던 데이터는 다음과 같았다.

 

 

인증을 최소화시키면서 많은 데이터를 확인할 수 있는 호출을 찾아보자.

 


최대 데이터 수집에 대한 돌파구 - Match 정보

 

여러 DOCS를 뒤져보면서 인증이 필요하지 않은 호출은 단 한 가지. 바로 입력된 Match에 대한 정보였다.

 

야호

 

이를 사용하기 위해 판 별로 고유한 Match ID를 입력하면 해당 Match의 상세 정보를 볼 수 있는 것을 확인했다.

생각보다 자세한 정보들을 알려줘서 놀랐다고 해야 하나. 기본적으로 참여한 모든 플레이어의 정보와 각 플레이어가 죽은 횟수 및 회생/DBNOs, 생존 시간 등 까지 상세히 작성되어 있어 데이터 분석에 아주 적합한 데이터인 것으로 보였다.

 

이를 도출하기 위해 필요한 Match ID는 Sample 데이터를 한 번 호출하는 것으로 전날 시행된 Match의 고유 ID 리스트를 출력하는 것 또한 알 수 있었다.

 

이거 두 개 잘 이용하면 잘 될 것 같은데?

 

Samples 데이터는 지난 336시간(=14일) 전 데이터만 출력하는 것을 확인하였다. 해당 내용을 통합해보면 필자가 어떠한 방식으로 데이터 수집을 진행할 것인지에 대한 정보가 모두 갖추어졌다 할 수 있을 것이다.

 

1. Samples API를 이용하여 하루 단위로 지난 14일의 모든 고유 Match ID를 수집

2. 수집된 Match ID를 기준으로 Match API를 이용하여 정보 검색/추출

3. 추출된 데이터를 바탕으로 필요한 데이터를 찾아내고 정제 및 전처리

4. 전처리된 내용을 기반으로 Tableau 호환성 확인 및 대시보드 작성

5. 공개 발행!