클라이언트 개선 작업: 챔피언 선택 및 게임 종료 과정
올해 초에 리그 오브 레전드 클라이언트의 성능과 안정성을 개선하기 위해 보이지 않는 곳에서 이루어지는 작업에 대해 두 달마다 소식을 전하겠다고 말씀드린 바 있습니다.
오늘 글은 이 시리즈의 다섯 번째 블로그 글입니다. (첫 번째 글은 여기서, 두 번째 글은 여기서, 세 번째 글은 여기서, 네 번째 글은 여기서 볼 수 있습니다.)
요약: 클라이언트 기동 시간 및 아키텍처 개선 작업이 완료되어 드디어 챔피언 선택 개선 작업에 착수했습니다. 또한 게임 종료 과정을 새로운 우선 과제로 삼고자 합니다.
챔피언 선택 시작
3월에 이번 블로그 시리즈를 시작할 당시 주요 목표는 두 가지라고 언급한 바 있습니다. 클라이언트 부트스트랩 시간과 챔피언 선택 과정의 반응성을 차례대로 개선하겠다고 말씀드렸는데요. 9월에는 드디어 90백분위수 플레이어의 부트스트랩 시간(클라이언트 기동 시간)을 15.5초까지 단축하는 데 성공했고 이제 챔피언 선택 작업을 시작할 예정이라고 공지했습니다.
이에 대한 첫 소식을 전해드리겠습니다.
챔피언 선택의 메모리 사용량
예전부터 챔피언 선택을 정비하는 데 필요한 작업은 엠버 앱 통합, 코드 최적화, 버그 수정 등 클라이언트의 다른 부분과 비슷하겠다고 생각했습니다. 하지만 챔피언 선택 과정을 자세히 살펴보는 도중 예상치 못한 유형의 문제를 발견했습니다. 클라이언트를 종료하지 않은 채로 챔피언 선택을 진행할 때마다 챔피언 선택(과 클라이언트)의 메모리 사용량이 증가한다는 문제였죠.
90백분위수의 상황은 아래와 같습니다.
- 세 번째 이후로는 매번 약 15MB에서 25MB 사이의 상대적으로 작은 증가폭을 보입니다.
- 챔피언 선택을 처음 진행할 때 클라이언트의 메모리 사용량이 481MB로 급증합니다.
- 두 번째 진행 시 56MB만큼 증가합니다.
클라이언트를 종료하지 않은 채 게임을 계속 플레이하면 클라이언트가 점점 느려져 결국 재시작이 꼭 필요한 지경에 이르게 됩니다.
클라이언트에 메모리 누수가 있다는 사실은 예전부터 알았으며 어느 정도는 챔피언 선택 때문이겠다고 유추하긴 했습니다. 하지만 누수의 규모와 정도가 이번에 발견한 만큼 큰 경우 접근법을 바꿔야만 합니다. 현재는 클라이언트 전반에 걸쳐 메모리 누수를 더 효율적으로 발견하고 해결할 수 있게 함으로써 개선사항 적용에 필요한 시간을 단축하는, 더 특화된 개발자 툴을 도입하는 작업을 원래 계획한 작업과 동시 진행하고 있습니다.
두 작업을 동시에 진행하고 있으며 큰 진전은 없었지만, 챔피언 선택 성능 개선을 위한 최초의 소규모 변경사항을 10.23 패치에 적용할 계획입니다. 소환사 주문과 와드 스킨을 선택할 때 엠버 앱이 추가로 생성되지 않도록 해당 기능을 개선했습니다. 변경사항이 적용되면 챔피언 선택에서 주문과 와드 스킨을 선택할 때의 메모리 사용량이 적지만 측정 가능한 정도(약 1.6MB)만큼 감소하는 효과가 나타납니다. 두 기능의 메모리 누수는 가장 먼저 발견한 편에 속하며 이를 해결하는 과정은 가까운 미래에 더 심각한 메모리 누수를 해결할 수 있도록 모범 사례를 수립하는 데 큰 도움이 되었습니다! 올해가 끝나기 전에 더 가시적인 개선사항도 적용할 수 있을 거라 예상합니다.
챔피언 선택 UX 및 UI 검토
문제가 있는 부분을 수정하는 작업과 더불어 플레이어가 챔피언 선택 경험의 어떤 부분에 신경을 쓰고 어떤 부분을 덜 중요하게 생각하는지 파악해서 해당 부분을 줄이거나 심지어 삭제하는 일 또한 챔피언 선택을 고치는 작업의 일부입니다. 이러한 작업이 필요한 이유는 게임의 핵심 단계 중 챔피언 선택 경험의 역할이 매우 크며 그 과정이 덜 복잡할수록 문제 발생의 여지가 줄어들기 때문입니다. 플레이어 설문 조사 결과를 토대로 챔피언 선택 과정의 사용자 경험(UX) 및 사용자 인터페이스(UI)에 있어 무엇이 중요한지 파악했으며 조사 결과를 플레이어 활동 데이터와 취합하기 위해 클라이언트 내에서 살펴보는 통계를 추가하고자 합니다.
초기 결과와 이와 관련해 이루어진 조치 또는 추진할 계획은 아래와 같습니다.
- 챔피언을 선택하고 금지할 때 특히 버튼 클릭이 인식되었는지 더 빠르고 명확하게 알 수 있기를 바라는 플레이어가 많았습니다. 명확성을 이러한 수준까지 끌어올리기 위해 인터페이스에서 제공되는 시청각적 피드백의 안정성을 개선할 계획입니다.
- 소환사 주문과 와드 스킨 선택 시 보이는 효과에 중요성을 부여하지 않는 플레이어가 많았습니다. 그러므로 (앞서 말씀드린 메모리 누수 문제를 해결하는 동시에) 관련 애니메이션을 삭제하고자 합니다.
- 게임 준비 과정에 덜 필수적인 일부 챔피언 선택 기능이 어떻게 사용되는지 살펴보기 위해 원격 측정 수단을 활용할 계획입니다. 아래 기능이 ‘있으면 좋은’ 범주에 속하는 경우 성능 향상을 극대화하기 위해 삭제할 가능성이 있습니다.
- 감정표현 패널
- 선호 챔피언 지정
- 임무
챔피언 선택 진입
챔피언 선택에 진입했을 때 각종 문제가 발생해 불편하다는 응답을 굉장히 많이 받았습니다. 곧 시작될 게임에 집중할 수 있으려면 챔피언 선택의 안정성은 필수입니다. 챔피언 금지 또는 선택에 영향을 끼치는 문제를 해결하는 일은 매우 중요합니다. 수백 번 넘게 사용한 스킨, 소환사 주문, 룬 등이 모르는 사이에 바뀌었는지 걱정하실 일은 없도록 하고자 합니다.
작업을 시작하며 세운 주요 목표는 중요한 결정을 내리기에 시간이 충분하도록 하기, 챔피언 선택 및 금지 과정의 안정성 확보하기, 모든 플레이어가 게임에 성공적으로 진입할 수 있도록 하기 등입니다.
게임 종료 과정
게임 종료 과정(승리 및 패배 화면에서 ‘계속’을 누른 순간부터 게임 종료 화면에서 상호작용이 가능해질 때까지 일어나는 모든 일)은 클라이언트 개선 작업을 처음 시작했을 당시 주안점이 아니었지만, 이후 부트스트랩 시간과 챔피언 선택 과정의 반응성 및 안정성에 거의 필적할 정도의 불편을 끼치는 요인으로 떠올랐습니다. 아래와 같은 두 가지 주요 부분에 집중하고자 합니다.
- 게임 종료 후 바로 명예 화면으로 넘어가지 않고 ‘재접속’ 버튼이 표시된 채 클라이언트가 한동안 반응하지 않는 문제가 제보되었습니다. 현재 문제의 원인을 파악하기 위해 노력하고 있습니다.
- 승리 및 패배 화면에서 클라이언트로 돌아갈 때 명예 화면 또는 게임 종료 화면이 표시되지 않거나 상호작용이 불가능한 상태로 클라이언트가 멈추는 현상이 가끔 발생합니다. 긍정적인 효과가 기대되는 몇 가지 해결책이 준비되어 있으며 10.23 패치에서 도입될 예정입니다.
설정 및 팝업 창 관련 버그
챔피언 선택과 게임 종료 과정에 대한 작업을 진행하는 와중 최근에는 지난 몇 번의 패치에 걸쳐 설정 문제와 관련된 제보가 급증한 문제에 대처하기도 했습니다. 소환사 주문 설정이 챔피언 선택에 저장되지 않거나 과거의 팝업 창이 다시(그리고 다시, 다시, 또다시) 표시되는 문제 등이 있었습니다. 문제의 원인을 파악하는 과정은 녹록지 않았습니다. 동시에 여러 팀이 개별적으로 담당 백엔드 체계를 업데이트하는 중이었기 때문에 다수의 극단적인 경우가 산발적으로 발생하게 되어 많은 플레이어가 최소 한 가지 유형의 설정 관련 문제를 겪게 된 끔찍한 상황으로 이어졌습니다. 지난번 블로그 글이 게시된 후 가장 최근으로는 10.21 패치에 적용된 수정사항 등 세 번의 개별적인 수정을 통해 문제 대부분을 완화했습니다.
챔피언 선택과 게임 종료 과정을 대폭 개선하는 작업을 계속하면서 이후 발생하는 심각한 버그를 파악하고 해결하기 위해 다른 팀과 지속적으로 협력할 계획입니다.
이번 글은 여기까지입니다! 연말까지 진행할 작업이 많은데요. 패치마다 클라이언트가 개선되는 모습을 보여드리기 위해 최선을 다하는 동안 너그럽게 기다려주시는 플레이어 여러분께 감사하다는 말씀을 드리고 싶습니다!