올해 초, 저희는 리그 오브 레전드 클라이언트의 성능을 개선하기 위해 보이지 않는 곳에서 이루어지는 작업에 대해 두 달에 한 번씩 소식을 전하겠다고 말씀드린 바 있습니다.
이번 업데이트는 이 시리즈의 세 번째 블로그 글입니다. (첫 번째 글은 여기서, 두 번째 글은 여기서 볼 수 있습니다.)
요약: 클라이언트를 실행하는 코드를 개선하겠다는 저희의 목표에 도달하기 위한 작업이 꾸준히 성과를 내고 있습니다. 그 과정에서 문제를 일으키는 버그도 수정했죠. (수정한 버그는 아래에서 볼 수 있습니다.) 하지만 성과에도 불구하고 아직 할 일이 많습니다. 개선 작업은 앞으로도 계속될 것입니다.
클라이언트 관련 첫 번째 블로그 글에서 말씀드렸다시피 일부 클라이언트 성능 문제를 해결하는 최선의 방법은 클라이언트 내 플러그인과 엠버(Ember) 앱을 통합하고 개수를 줄이는 것입니다.
이 개념이 생소한 분들을 위해 말씀드리자면, 플러그인은 클라이언트 코드를 활용성 있는 묶음으로 나누기 위해 사용하는 툴이고, 엠버 앱은 클라이언트의 유저 인터페이스를 구동하기 위해 사용됩니다.
저희는 목표를 달성하기 위해 꾸준히 성과를 내고 있습니다. 시간 경과에 따른 플러그인과 엠버 앱의 총 개수가 아래 그래프에 나와 있습니다.
위 그래프를 보면 ‘그런데 이게 클라이언트 성능에 정확히 어떤 영향을 준다는 거지?’라는 생각을 하셨을 것입니다. 이 질문에 대한 대답은 복잡하지만, 넓게 보면 플러그인과 엠버 앱 개수가 줄어들면 클라이언트 코드 효율이 올라갑니다. 코드를 더 간략하게 한다는 것은 성능이 향상된다는 것이고, 이를 통해 개발팀이 클라이언트를 관리하기가 더 용이해지죠.
저희가 하는 작업의 영향을 측정하는 방법 중 하나는 클라이언트 기동에 걸리는 시간을 측정하는 것입니다. 아래 그래프는 시간 경과에 따른 기동 시간 변화를 보여줍니다.
보시다시피 지난 두 달여간 부트스트랩 시간은 크게 변하지 않았습니다. 저희의 작업이 리스크가 클 수밖에 없다는 것을 고려하면 이 추이는 어느 정도 성공적인 결과라고 생각합니다. 복잡한 코드를 다루고 플러그인을 손보는 작업은 주의하지 않으면 예상치 못한 문제를 발생시킬 수 있으니까요. 하지만 지금까지는 이런 문제는 없었던 것으로 보입니다.
앞으로 몇 번의 패치 기간에 부트스트랩 시간이 더 개선될 것이기에 저희는 큰 기대를 걸고 있습니다. 이제 여러분께서 클라이언트를 기동할 때마다 더 지능적으로 어떤 플러그인을 불러올지 선택하게 해줄 새로운 솔루션을 개발했기 때문에 기대가 더 크죠. (이 주제에 대한 세부 내용은 최근 클라이언트 관련 블로그 글의 ‘어피니티의 문제’ 부분을 참고해주세요.)
현재 저희 계획은 앞으로 적어도 두 달 동안은 통합 작업을 계속하는 것입니다. 플러그인과 엠버 앱의 개수를 줄임으로써 의미 있는 장기적 이득을 볼 수 있다고 생각하기 때문이죠. 전반적인 코드 환경을 개선함으로써 버그, 메모리 누수, 프로그램 충돌 문제를 해결하기가 쉬워질 것입니다.
버그와 충돌 이야기가 나온 김에 최근에 있었던 버그 수정에 대해 알아보죠.
클라이언트 팀은 클라이언트 개선 작업과 함께 지난 몇 달간 수없이 많은 버그를 수정하는 데 힘썼습니다. 10.13 패치부터 리그 오브 레전드 패치 노트에 별도의 ‘버그 수정’ 란이 추가될 예정입니다.
클라이언트 팀이 올해의 각 패치를 통해 수정한 클라이언트 관련 버그는 다음과 같습니다.
위 버그가 지금까지 저희가 수정한 버그입니다.
저희는 클라이언트 작업을 하면서 다음과 같은 근본적인 질문을 반복해서 던져봅니다. ‘리그 오브 레전드 클라이언트가 플레이어를 위해 제 역할을 다하고 있는가?’
이 질문에 대한 답은 물론 ‘아니오’입니다. 적어도 아직은 아니죠.
수정해야 할 버그, 예방해야 할 충돌, 근절해야 할 근본적인 아키텍처 문제가 많습니다. ‘클라이언트가 플레이어를 위해 제 역할을 다하는가?’라는 질문에 저희가 당당히 ‘네’라고 답할 수 있을 때까지 올해 저희가 시작한 작업은 계속될 것입니다.
그 시점에 이르기까지 시간이 걸리겠지만, 그 과정에서 여러분께 계속해서 소식 전하겠습니다. 다음 몇 번의 패치 기간에 저희는 계속해서 플러그인과 엠버 앱 통합 작업을 이어가면서 발견된 버그를 수정하려고 합니다. 다음 소식을 전할 때쯤에는 저희가 이 작업의 다음 단계 준비를 완료한 상태라면 좋겠네요. 다음 단계에서는 챔피언 선택 과정의 반응성 개선에 특히 중점을 두고자 합니다.
리그 오브 레전드를 플레이해주셔서 감사합니다. 몇 달 내로 또 다른 클라이언트 블로그 글로 여러분께 다시 인사드리겠습니다.