안녕하세요 ㅎㅎ 이번에 개인적으로 배틀그라운드 관련한 실력지표들을 개발하면서 요즘 배그에 지대로 꽂힌 종겜스 우왁굳님의 배그실력을 여러 주제로 한번 요약 해보았는데요!
이전에 riot api를 가지고 리그오브레전드 지표를 간단하게 분석 해온적이 있는데 이번에도.. 대시보드 만들다가 갑자기 서브 컨텐츠로 빠져서 빠르게 분석해보았습니다 ㅋㅋㅋ
유튜브 채널 클립에 박제가 되어서 너무 기쁩니다 ㅋㅋ
무엇보다 실제로 우왁굳님의 반응을 보면서 제가 헷갈리게 요약해놓은 부분도 많이 있고, 부족한 부분, 남들에게 설명하는 연습이 더 필요하겠다는 피드백을 저스스로 받았습니다.
배틀그라운드 인게임에는 실제로 매치리포트라는 기능이 존재하는데요. 무기별 헤드샷 비율 , 최장거리킬 등 같은 통계들을 볼 수 있습니다. 저는 매치리포트에서 볼 수 없는 여러 실력지표들을 갖고 분석해보았습니다!
이전에 게시글에서 무기들의 반동제어 능력을 보려면 어떤 지표를 봐야할지? 지표를 정의했던 것 기억하시나요!?
이전에 게시글에 정리해놨던 기준으로 왁굳님은 반동제어를 얼마나 잘하는지 , 한마디로 샷발이 어떤지😂 거리별로 전투력을 측정해보았습니다.
배틀그라운드의 경우 근접거리에서 난사하는 상황이 엄청 많이 나오지는 않습니다. 존버하는 유저가 있을 수 도 있구요, 자기장이 좋아서 굳이 나갈 필요 없는 상황 등등 상대방을 만나는 것 조차 운이 필요하기 때문이죠. 상대방을 한번도 안만나고 top10에 들어가는 경우도 수두룩합니다.
그래서 수집한 데이터에 우왁굳님의 '근접거리에서 난사 할 때' 라는 표본이 많이 있지 않았기에 난사하는 상황의 기준을 '5초동안 10발 이상 사용했을 때'로 넉넉히 정했습니다! (난사라고 하기는 좀 애매하지만 살짝 여유를 준것입니다..하하)
비교 대상은 지금까지 만난 상대들입니다!!
AUG
의 경우 모든 거리에서 밸런스가 좋은 실력을 갖고 계셨는데요. 실제 플레이 영상에서도 샷발이 좋으셨는데 지표로 비교해보니 많이 신기 했습니다. ㅋㅋ
이 외에
ACE
의 경우 20M 이내에서 가장 정확도가 높았으며 오히려M4
는 초 근접전에서 다소 불안정한 모습이군요. 😲
총기의 반동제어능력을 확인하는 방법 두번째는 탄착군 입니다! 마찬가지로 자세한 내용은 이전의 게시글을 참고해주시면 감사하겠습니다.
20M 미만의 거리로 집계한 이유는 20M 이내가 근접전의 마지노선이라고 생각이 들었습니다. (주관적 이긴 합니다..) 그리고 무엇보다 해당 구간이 근접구간이라고 봤을 때, 가장 전투로그가 많이 남겨진 구간이었습니다.
실제로 생방송에서 해당부분을 우왁굳님께 보여드렸는데요 (위 영상에서 볼 수 있듯이) 피드백을 받은 부분이 있었습니다!!
정확히 무엇을 의미하는지 모르겠다는 점이었는데요.
특히, Y축이 무엇인지 궁금해하셨는데 하필 저부분의 라벨이 빠져있었네요.. 처음 보는 사람도 이해하기 쉽고 단순화해서 만들었어야 했었는데, 무엇보다 설명이 부족하고 너무 분포에 집착했던 것 같습니다.🥹
ex) "20M 미만의 거리에서 각 총기별 탄퍼짐 점수를 분포화" →
"20M 미만의 거리에서 발생한 데이터를 갖고 총기별 탄퍼짐 점수를 분포화"또한, 탄과 탄사이의 거리가 적을수록 값이 적게나오니 반동제어를 잘 한것이다! 라고 설명을 해놓았지만 통상적으로 점수라고하면 높을 수록 좋게보니 충분히 헷갈리는 부분이었습니다.
두 번째 챕터는 파밍속도 입니다.🙂 배틀그라운드 피지컬 요소에 빠질 수 없는 부분중 하나라고 생각이들어서 분석을 해보았습니다 ㅎㅎ
아래의 설명처럼 낙하 이후, 아이템을 처음 pickup한 로그를 시작기점으로 3분동안 파밍속도를 측정해보았는데요.
해당 부분을 분석하기 위해서 제가 정한 측정기준을 잠깐 설명드리려고 합니다.
아이템 pick up 하는 속도를 어떻게 계산할 것인가??
- 아이템이 모여있는 경우도 있지만, 보통 계속 움직이면서 파밍을 하기 때문에 순간 Pickup속도를 구하려면 제한이 필요하다. 👉🏻 아이템이 모여있는 경우만 가져와야함 (즉, 아이템 거리차이를 구해야함)
- 아이템간의 거리차이가 50cm 미만인 경우 = 어느정도 아이템이 한 좌표에 뭉쳐있을 때로 볼 수 있음
결론
단순히 아이템을 파밍하는 시간을 계산하려면, 거리와 시간조건을 추가하는것이 좋다고 생각 ( 가장 파밍이 활발히 이루어지는 게임 초기 시간(3분) , 그리고 50cm 미만의 뭉쳐있는 아이템)
처음에는 아이템을 부착하고 떼는 로그도 파밍속도에 포함시키려고 했지만 결론적으로 itemPickup, Drop 만 가져오기로 했습니다. 부착물이 장착된 총기를 Drop하게 되면 Detach 로그도 같은 시간에 자동으로도 남겨지기 때문에 평균속도가 많이 낮춰지기 때문입니다.
아래의 LogItemPickup
로그만 남겨진 샘플데이터만 보면 아이템을 먹은 _D
시간과 location
이 남게되고, 어떤 아이템을 먹었는지도 기록되어 있습니다.
저는 여러개의
matchid
그리고character.name
이 있으므로 group 해주고 다음에 발생한 로그간의 차이를 계산해주면 되겠습니다. 또한 위 로그가 처음 발생한 시간을 기준으로 3분까지의 데이터만 계산할 것 이므로 각 group별end_D
을 정의해주었습니다.
# 유저별로 그룹화
grouped = pickup_df.groupby(['matchId','character.name'])
# 각 유저별 첫파밍을 시작으로 3분 동안 파밍한 로그를 구하고 파밍시간을 구합니다.
# 파밍한 아이템간의 좌표를 통해 0.5m 미만에 있는 경우 뭉쳐있는 아이템으로 파악 -> 이 기준으로 파밍시간을 체크
def farming_speed(group):
group = group.sort_values('_D') # 타임스탬프 기준으로 정렬
end_D = group['_D'].min() + pd.Timedelta(minutes=3)
group['time_diff'] = group['_D'].diff().dt.total_seconds() # 시간 차이 계산
# 거리 차이 계산
group['x_diff'] = group['character.location.x'].diff()
group['y_diff'] = group['character.location.y'].diff()
group['z_diff'] = group['character.location.z'].diff()
group['distance_diff'] = np.sqrt(group['x_diff']**2 + group['y_diff']**2 + group['z_diff']**2) / 100
group = group[group['_D'] < end_D] # 첫파밍이후 3분 이내의 데이터만
return group
# 각 그룹에 대해 함수 적용하여 필터링
df_with_check = grouped.apply(farming_speed).reset_index(drop=True)
이렇게 구해진 컬럼은 time_diff
와 distance_diff
(m단위) 입니다. 테이블을 보면 알 수 있듯이 당연히 아이템을 2번이상 줏어야 클릭속도를 구할 수 있습니다.
제가 정의한 기준으로 아이템의 distance_diff
가 0.5m 미만 인경우, 같은 그룹에 모여있다고 보았을 때, 아래의 초록색 구역 아이템들과 노란색 구역 아이템들은 다른 거리에 있는 아이템 무리들 이라고 보는 것 입니다.
이제 distance_diff
가 0.5m 이상의 값들을 전부 제외시키면
AK47_C 무기의 경우, 이전의 아이템 무리와 7M 거리에서 파밍을 한것(2.3초 걸림)이므로 초록색 무리에있는 아이템 파밍속도를 구하는데 자동적으로 제외됩니다.
또한, 어차피 AK_47를 줍고 762탄을 줍는 시간은 다음행인 762탄에 기록되니까 지워져도 상관이 없습니다.
결론적으로 , 초록색 그룹의 아이템을 파밍하는데 평균 클릭속도는 0.236 , 노란색 그룹의 아이템을 파밍하는데 평균 클릭 속도는 0.138이 됩니다. 이런식으로 평균 클릭 속도를 구해서 파밍속도를 계산했습니다!
왁굳님은 느린편 이었습니다..ㅎㅎ 개인적으로 빙밍님 이라고 배틀그라운드 실력이 좋으신 여성 버튜버분이 계셔서 최근 10경기만 가져와 같이 비교해 보았는데요. 실제로 다른 유저 대부분이 0.4초 이내의 클릭속도를 보여 주고 있었습니다. 역시 FPS 하시는 분들은 평균 클릭속도가 꽤 빠른것 같군요
실제로 0.64초나 0.4초나 별로 차이 안난다고 생각들 수 있지만 아이템이 여러개 파밍할 때, 누적되는 시간이 있기 때문에 꽤 크다는 것을 알 수 있었습니다.
가령, 5개를 줍는다고 할 때, 왁굳님의 경우 3초 이상이 걸리고 나머지는 2초가 걸립니다. 1초 차이면 꽤 큰편인거죠. 1초 먼저 총을 쏠 수 있는 시간이 생기는 것입니다.
배틀그라운드는 어느정도 운이 필요한 게임입니다 ㅎㅎ
가령, 아이템이 나오는 곳, 자기장이 생성되는 위치 등 랜덤인 요소가 있기 때문인데요해당 부분은 좀 길어질 것 같아서 무기별 풀파츠 + 자기장 운과 함께 정리해서 다음에 올려보도록 하겠습니다 !!