안녕하세요 여러분!어제 테스트에 참가해 주신 모든 분들께 직접 감사하다는 말씀을 드리고 싶습니다. 저희의 와우 클래식 팀이 모두 이에 참가했으며, 여러분과 대화를 나눌 수 있어 기뻤습니다.테스트에 대한 좀 더 자세한 내용을 알려드리고자 합니다.저희가 본 것많은 분들이 본 게임에서도 서버 성능이 이렇게 좋지 않을 것이냐고 물어 보셨고, 어떤 분들은 이미 준비가 다 된거 같다고 농담해 주시기도 했습니다. 어쩌면 농담이 아니었을지도요? 저희가 어제 스트레스 테스트가 겪었던 것은 2006년 시절 안퀴라즈가 열렸을 때와 비슷하긴 했으니까요. 저희는 엄청난 렉과 몇 번의 서버 다운을 겪었고, 마침내 플레이어 분들이 포기하고 인구수가 줄었을 때야나 이벤트가 마침내 끝을 맺었었습니다. 저희는 이보다는 더 낫게끔 할 계획입니다만, 렉을 완전히 없앨 수는 없을 것입니다.만약 태평양 시간 기준 오후 5시까지 계속 계셨다면, 저희의 테스트 컨디션이 실제 게임에 볼 수 있을 수준의 렉과 가깝게 바뀌었음을 보셨을 겁니다. 저희는 서버 렉과 인구 밀도 중 하나를 포기해야 할 수 밖에 없었습니다-- 사람이 많을 수록 렉 또한 더욱 심해지고, 한 지역에 플레이어가 너무 몰리면 렉이 너무 심해져 서버가 교착 상태 ("복구가 불가능한 상태"를 뜻하는 컴퓨터 용어입니다)에 빠졌다고 생각해 재시작하게 되니 말이죠. 서버가 교착 상태에 빠졌다고 판단해 재시작되는 건 흔히 부르는 서버 다운을 뜻하나, 이는 또 다른 문제를 제공합니다. 다른 크래시는 프로그램이 무언가 좋지 않은 걸 하려고 할 때 일어나기에 저희가 그걸 해결하면 됩니다만, 교착 상태의 경우 하나의 문제가 아니고 그냥 처리해야 할 것들이 계속해서 밀리는 상황이기 때문에 훨씬 더 해결이 어려운데요. 그래도 이를 해결하기 위한 개선점들이 존재하기는 합니다.인구 밀도저희의 첫 문제점은 지수 스케일링입니다. 눈보라가 10명의 플레이어에게 영향을 끼쳐 각 플레이어에게 오라를 적용시키고, 이동 속도가 감소한다고 (눈보라가 이동 속도를 감소시켜 주는 특성 찍으셨죠, 그렇죠?) 상정해 봅시다. 이감 오라를 받는 각 플레이어마다 저희는 주위의 모든 플레이어에게 그 오라가 적용되었다는 메세지를 보내야 합니다. 영향을 받은 10명의 플레이어가 각각 10개의 메세지 (눈보라 시전자에게 1개, 나머지 플레이어에게 9개)를 보내면 총 100개가 되죠.눈보라가 20명의 플레이어에게 영향을 끼치면, 메세지의 수는 4배로 증가합니다. 40명이라면, 1600개가 되죠. 플레이어의 수가 두 배가 될 때마다 처리해야 할 메세지의 수는 4배로 증가합니다. 한 지역의 플레이어 수가 10명에서 100명이 되면, 하나의 주문만으로 메세지의 수가 100개에서 10,000개로 증가하게 됩니다. 저희는 이미 강력한 하드웨어를 갖추고 있는 만큼 이는 저희가 교착 상태에 빠치지 않고 지원할 수 있는 플레이어의 수가 얼마나 되느냐를 이해하는 문제이며, 이는 이 스트레스 테스트의 큰 목표 중 하나이자 많은 분들이 참가해주신 덕에 좋은 데이터를 얻을 수 있었던 기회이기도 했습니다.코드 최적화이건 저희가 2004년 때부터 해오던 것이며, 지난 몇 달 동안 저희는 이 이벤트를 염두에 두고 코드를 최적화해 왔습니다. 최근의 예시를 몇 개 들어보겠습니다.먼저, 이동 속도 감소 메세지를 생각해 보죠. 오라 업데이트 메세지를 한꺼번에 보내지 않는다면 어떨까요? 100명이 눈보라에 맞았다면, 정말로 오라가 적용된 그 순간에 메세지를 받아야만 할까요? 서버는 당연히 바로 알기에 오라의 효과는 적용되어 이동 속도가 감소하기는 하지만, 오라를 한 1-2초 동안 보지 않아도 괜찮을까요? 만약 이가 서버가 다운되지 않는 것으로 이어진다면 저희의 답은 괜찮습니다이므로, 오라 메세지 처리를 미루는 방식을 선택했습니다. 이는 만약 첫 메세지 처리를 기다리고 있는 도중에 또 다른 오라 업데이트가 이루어진다면 이 메세지를 합쳐 더 적은 양의 메세지를 보낼 수 있는 만큼, 이런 추가 장점이 있기도 합니다.저희가 어제 테스트한 또 다른 코드 최적화는 방향에 있습니다-- 플레이어가 어느 방향을 향하고 있느냐에 대한 정보인데요. 인구수가 특정 수를 넘어가면 이런 방향 메세지 업데이트를 늦추거나 멈추면 어떨까요? 비용은 그렇게 크지 않습니다: 과밀된 지역에서 플레이어가 움직일 때 조금 버벅이는 정도이므로, 그렇게 눈에 띄는 영향을 끼치지 않으면서 성능을 크게 개선하는 방법이 되겠죠. 저희는 테스트 때 이가 적용되지 않았을 때 오히려 플레이어들이 더 많이 버벅이는 걸 확인했었습니다.저희는 그 외에도 누구에게 메세지를 보내야 하는지를 결정하는 성능 또한 개선했습니다. 몇 천명의 플레이어가 한 곳에 몰렸을 때, 누가 오라에 대해 알아야 하고 어느 방향으로 움직이는지를 결정하는 것조차 아주 큰 작업이므로, 이 역시 개선하고자 했습니다.플레이어 이동이런 문제들을 해결하고 나면, 다음과 같은 문제를 고려해야 합니다. 2006년에 안퀴라즈가 처음 열렸을 때에는, GM들이 직접 플레이어들을 지역 밖으로 순간이동 시키면서 이벤트가 진행되도록 했었습니다. 그 후 디자이너들은 플레이어들을 자동으로 순간이동 시키는 시스템을 제작했죠. 오늘날 저희는 아주 잘 작동하는 자동 순간이동 시스템을 갖고 있으며 이를 이용해 게임이 아직 플레이 가능한 정도로 지역의 인구수를 제어하고자 합니다. 실리더스는 당연히 렉이 만연할 것입니다만, 서버를 다운시키기보다는 플레이어들을 순간이동 시키는 게 낫다고 생각합니다.이 이벤트는 칼림도어 남부 대부분을 다루고 있으므로, 실리더스에 들어서지 못하신다고 해서 이벤트를 놓치는 것은 아닙니다. 처치해야 할 아누비사스와 실리시드는 징을 울린 후 10시간 동안 타나리스, 버섯구름 봉우리, 페랄라스 그리고 불모의 땅 전역에서 등장합니다.한 번 더어제의 테스트를 통해 저희는 이런 한계가 어디인지를 알 수 있었고 다운된 서버를 어떻게 복구하는지에 대해 알 수 있었으나, 더 자세한 정보를 얻고 싶으므로 한국 시간 기준 6월 26일 금요일 아침 7시에 또 다른 테스트를 진행하고자 합니다. 이번에는 방해나 조사가 더 적으리라 생각되므로, 좀 더 빠르게 완료하려고 노력해 보겠습니다.각주: 레손이 그러는데, 버섯을 반찬으로 여러분의 영혼을 아주 맛있게 즐겼다고 전해달라는군요.