Fighting Latency on Call of Duty Black Ops III
Room 2006, West Hall
Speaker : Benjamin Goyette | Senior Engineer, Activision
혹시 온라인 게임 PVP를 하다가 스킬 한번으로 승패가 결정되는 순간에 분명 내가 먼저 스킬을 썼는데 패배 한 경험을 한 적이 있나요? 아니면 분명히 상대를 공격했는데 무효가 된 적은 없나요? 또 제자리 달리기를 한 적은 없나요?
이러한 현상을 latency라 하는데, 단순한 행동에서의 latency는 치명적이지 않을 수 있지만, 어떠한 결과를 만들어내는 과정에서 발생하는 latency는 플레이에 아주 큰 방해가 될 것입니다. 이로 인해 많은 유저들이 좋지 않은 경험을 하고 이탈 하게 될 것이구요.
이번 강연에서는 이 latency를 해결하기 위해 어떤 방법을 사용했는지 소개했습니다.
먼저 문제를 해결하기 위해선 원인이 무엇인지 파악해야 하는데, latency가 발생할 수 있는 부분은 controller에서의 입력, 애니메이션 rendering, 서버 / 클라이언트간 통신 등이 있습니다.
그리고 어느 부분에서 얼마 만큼의 latency가 발생하는지 측정 하기 위해서 CPU / Network profiling tool을 사용하고, 제게는 아주 인상 깊었던 비디오 촬영을 한다고 합니다.
프레임이 아주 높은 카메라로 플레이 화면을 촬영하며 얼마 만큼의 latency가 발생하는지 측정 하는 것이지요.
만약 초당 100프레임을 촬영하는 카메라를 사용했고, 두 클라이언트 사이의 동작이 5프레임 차이가 났다면 50ms의 latency가 발생했다고 판단 할 수 있는 것입니다.
이러 방법을 사용해 발표자는 controller 입력, 서버 / 클라이언트간 통신에서 발생하는 latency를 해결 하였는데, 유저들의 불만은 여전했다고 합니다.
그래서 애니메이션 rendering에 문제가 있는지 확인 해보기 위해, 모든 애니메이션을 끄고 테스트를 진행했는데도 아무런 문제가 없었다고 합니다.
과연 이 latency는 어디서 발생 한 것일 까요?
정확한 원인 파악에 어려움을 겪고 있던 때에, 특정 방향으로 움직이는 유저들의 승률이 높다는 것을 알아낸 발표자는 캐릭터가 특정 방향으로 움직이는 애니메이션 rendering에 문제가 있다는 것을 알아낼 수 있었다고 합니다.
온라인 게임에서 발생 할 수 있는 latency는 단순 서버 / 클라이언트 통신에서만 발생하지 않는 다는 것과, 조그마한 부분이라도 놓치지 않고 테스트 해봐야 하다는 것을 다시금 일깨워준, 앞으로 개발 하게 될 실시간 통신 feature개발에 큰 도움이 되는 강연이었습니다.
By Justin Hwang