[PUBG] BattleGround 지표 " 운 "

chaechae·2024년 8월 13일
0

PUBG BattleGround 

목록 보기
7/7
post-thumbnail

파츠 운

먼저, 첫 번째 운에 관한 지표는 서로다른 파츠를 N개이상 발견하는데 소요되는 시간입니다.

아이템과 파츠는 말그대로 맵 랜덤으로 생성되기 때문에, 운을 측정할 수 있는 대표적인 지표라고 생각했습니다. (물론, 대도시에 갈 수록 아이템이 많이 있기 때문에 볼 확률이 높습니다. 이후 결과를 통해 같이 보도록하죠!)

기준

무기장르별로 장착할 수 있는 파츠의 개수가 서로 다르기 때문에 저는 AR 파츠를 5개이상 + DMR,SR 4개이상 이라는 기준으로 잡고 측정해보았습니다.

⚙️ 측정 방법 (전처리)

필요한 로그

  • LogItemAttach : 아이템을 장착 했을 때 남겨지는 로그

유저가 파츠를 줍고 현재 사용하고 있는 Weapon에 해당 파츠를 장착하게되면, 데이터에 방금 장착한 childItem.itemId 과 이미 장착되어있는 parentItem.attachedItems 로그가 남게 됩니다.

  • parentItem.attachedItems : 이미 장착되어있는 파츠
  • childItem.itemId : 지금 장착한 파츠

예시로, 유저의 일부 attach로그를 가져와보았는데요. HK416 무기에 lower_LightweightForeGrip_c (수직손잡이) 파츠를 장착한 것이고 Childitem.itemID 컬럼에 남겨지고 있음을 알 수 있습니다.

그리고 시간이지나 다른 파츠인 AR_HeavyStock (대용량 탄창)을 장착했는데 parentItem.attachedItems 에 아까 장착한 수직손잡이가 리스트형태의 값안에 있다는것을 볼 수 있죠.

그렇다면 (ar기준) 저는 파츠가 5개 장착되는데 걸린 최소 시간을 구해야 하므로 메인 무기에 해당하는 parentItem.itemId 별로 childitem.itemIDparentItem.attachedItems 의 개수를 합쳐주어야 현재 장착된 파츠의 총 개수attach_cnt가 될 것입니다.

각 유저별로 첫 pickup로그가 생긴 timestamp부터 처음으로 attach_cnt 가 5개 완성되는 timestamp를 뺀 값 (파츠를 모으는데 걸린 시간)을 집계하여 구했습니다. (DMR, SR 의 경우 4개이상)

📈파츠를 발견하는데 걸린 시간

실제로 AR 과 DMR,SR 간 파츠가 완성되는데 걸리는 시간에 차이가 있고, 모두 평균보다 느린 편이었습니다.

왜 그런지 알아보니, 아까말한 대도시 파밍짧파밍의 차이 때문이라고도 볼 수 있는데요.

배틀그라운드의 경우 아래의 맵처럼 대도시 지역인 경우 도시명칭이 있으며 해당 지역으로 갈 수록 아이템이 많이 있기 때문에 대부분이 대도시파밍을 많이 하는 편입니다. (그 만큼 사람을 많이만나서 시작하자마자 죽는 경우도 많습니다.😂)

그리고 이 외에 다른 명칭이 없는 지역에서 파밍하는 경우를 짧파밍이라고 합니다. (다소 안전한 파밍)

왁굳님의 경우 파밍속도도 느린편이기도 하고 후자의 짧파밍 위주로 진행하기 때문에 파츠를 발견하는 속도가 다른 사람들의 비해 특히 느린편이다고 볼 수 있었습니다. 물론 어느정도 운의 영향도 무시할 수 는 없습니다

자기장 운

두번째는 자기장 운입니다. 정말 100% 운이라고 할 수 있는 대표적인 지표인데요

In SafetyZone ? (전처리 시나리오)

어떻게 테이블을 만들었는지 간단하게 설명해보도록 하겠습니다!
(SafetyZone 전처리와 관련하여 포스팅을 따로 정리해놓았습니다. 궁금하신분들은 이곳으로!!)

필요한 로그

먼저 위 자료에서 정의한 것 처럼, 저는 자기장 운이 좋았다는 기준을 다음 SafeyZone이 만들어지기 전에 이미 유저가 그 안에 들어가 있는 경우로 정했습니다.

  • LogPlayerPosition : 10초 간격으로 남겨지고 있는 현재 유저의 좌표 데이터
    (아무래도 유저의 포지션 좌표는 10초 간격으로 남겨지기 때문에 SafetyZone이 줄어드는 순간 딱 유저의 위치를 구하는데는 한계가있음)
  • LogGameStatePeriodic : 시간에 따라 점점 좁혀지는 SafetyZone의 영역 좌표 데이터

table1. SafetyZone

matchId, MapName, _D , 페이즈 별로 SafetyZone 영역을 정리한 테이블

table.2 PlayerPosition

matchId, MapName, character, safetyZoneRadius, _D 순으로 정리된 유저의 좌표 테이블

  • 새로운 safetyZoneRadius가 정의되는 시간 이전행에 바로 남겨지는 유저의 position 좌표들을 lag 해서 한행으로 만듬
  • SafetyZone 영역안에 유저의 좌표가 들어가있는지 체크 is_in_zone
  • SafetyZone 좌표가 Nan 이지만 유저의 좌표가 있는 경우 -> 게임에 승리해서 다음 세이프티존이 없는 것
  • SafetyZone 좌표가 있지만 유저의 좌표가 Nan 인 경우 -> 새로운 자기장이 정의되기 전에 죽은 경우
  • 결론적으로 Nan 값인 경우를 제외하면 유저가 살아있을 때, SafetyZone 영역에 들어가있는지를 나타내는 테이블 완성

요약하면 새로운 SafetyZone 영역이 정의 될 때, 같은 시간 (정확히는 10초뒤) 유저의 좌표를 찾아 하나의 행으로 만든 테이블 입니다.

Visualize

아래는 완성된 테이블의 매치중 하나를 갖고 유저의 이동경로, 페이즈별(3페이즈) 세이프티존 영역, 이때 유저의 좌표를 이용해 간단하게 시각화한 결과 입니다.

자기장 운이 좋으면 아래처럼 이동빈도가 매우 적습니다.

결과

정확히는 운 + 생존력에 관한 지표

아무래도 모든 경기가 6페이즈 이상 진행된 경기가 아니다보니, 그전에 죽은 경우 자기장에 들어가지 않았다고 집계가 됩니다..ㅎㅎ 정확히 '자기장운'에 관한 지표를 구하기 위해선 모든 경기를 똑같은 페이즈가 진행된 경기를 갖고 구하는 것이 더 정확할 것입니다. (해당 데이터에서는 4페이즈 이상 진행된 경기가 절반 이상입니다.)

또한 지금 생각해보니 사녹의 경우 다른 맵들에 비해 크기가 절반이상 작기 때문에, 다른 맵에 비해 템포가 빠른 편입니다. 그만큼 전투가 활발히 일어나고 생존확률이 더 빡셀 수 있다고 생각합니다.

그래서 다른 맵에 비해 3페이지 이후 급격히 내려가는것을 볼 수 있습니다. 물론, 대부분의 경기가 4페이지 이상인것을 보면 자기장운도 어느정도 있겠지만요! 정확히는 해당 플레이어인 wakgood님의 운 + 생존력이 반영된 그래프(by map)이며 재미로 보시면 좋겠습니다 ㅎㅎ

profile
다양한 컨텐츠가 있는 곳을 좋아합니다. 시리즈를 참고하시면 편하게 글을 보실 수 있습니다🫠

3개의 댓글

comment-user-thumbnail
2024년 8월 6일

안녕하세요 채채님 포스트로 많은 도움 받고 있는 초보자입니다
다름이 아니라 제가 매치별로 자기장을 시각화 해서 자기장 패턴 분석을 해보려고 하는데, 코드를 이리 써보고 저리 써봐도 페이즈별로 자기장 영역을 정리해서 데이터프레임을 출력하면 자기장 영역 값이 전부 'NaN'으로 뜨더라구요 ㅠ_ㅠ
혹시 페이즈별로 자기장 영역 정리하실 때 어떻게 풀어나가셨는지 알 수 있을까요 ?!

1개의 답글