멀티프로그래밍 위키로 바로가기 → http://www.devnote.net/wiki
바로 전 글에서 언급한 심각한 윈도우즈 보안 핫픽스를 적용하기 위해 3시간 가량 길드워 서비스를 중단하였습니다. 물론 이번 기회에 그동안 적용하지 못한 모든 업데이트를 한꺼번에 적용하였습니다.

한 서버의 업타임을 보니 아래와 같이 무려 552일 동안 리부팅되지 않고 사용하고 있었습니다. 그러니까 이 하나의 서버만을 놓고 보면, 윈도우즈 업데이트 적용과 리부팅에 약 40분 정도 소요되었으므로 99.99% 이상의 업타임을 가졌다고 볼 수 있겠습니다. "five nines"는 아니라도 "four nines"는 되는 것 같습니다.


\\XXXX-AA00-001 has been up for: 552 day(s), 18 hour(s), 55 minute(s), 17 second(s)

크리에이티브 커먼즈 라이센스
Creative Commons License

온라인 서비스를 함에 항상 고려해야 할 점은 서비스의 업타임 (uptime) 입니다. 특히나, 24시간 서비스를 목적으로 하는 경우 1년에 얼마만큼의 다운타임을 가질 것이냐는 매우 중요한 문제이며 이러한 온라인 서비스를 회사간에 개발하거나 서비스할 때, 1년에 얼마만의 다운타임을 가질 것인가에 관해 회사간에 계약을 하곤합니다.

다섯 개의 9이라는 이른바 99.999%의 availability를 유지하는 것이 아마도 가장 이상적인 목표입니다. (이는 다시 말해 1년에 5.26분 정도의 다운타임만을 갖는 것). 하지만, five nines를 얻기위해 들어가는 비용이 너무 커서 실용성이 없는 것으로 알려져 있습니다.

온라인 게임도 분명 온라인 서비스 입니다. 그런데, 우리나라 온라인 업체들은 대부분 정기 점검이라는 명목으로 1주일에 무려 서너시간씩 서비스 다운 타임을 갖습니다. 다운타임이 커지는 것은 절대로 바람직한 일은 아닙니다. 특히 전세계를 상대로하는 글로벌 서비스를 하기 시작하면 많은 다운타임이 큰 문제가 될 수 있습니다. 즉, 한국의 수요일 오전이 미국의 오후가 되기 때문에, 이 때 서너시간의 정기점검은 용납되지 않습니다. 서버 개발자들의 큰 목표 중의 하나는 물론 365일 24시간 끊이지 않는 서비스를 제공하는 것입니다.

다운타임을 최소화 하는 데에 걸림돌은 여러 가지가 있으나, 해결이 어려운 것 중의 하나가 memeory fragmentation 입니다. 특히 작은 사이즈의 메모리를 아주 많이 할당/해제하는 경우 32비트 윈도우즈의 가상메모리 주소공간 (기본 2GB)은 단편화되기 쉽습니다. 윈도우즈의 LFH(Low Fragmentation Heap)을 사용하더라도, 중단 없이 실행중인 서버 어플리케이션은 결국 언젠가 memory fragmentation 문제를 만나게 됩니다.

최근 어느 한 서버에서 아래와 같이 Virtual Address Fragmentation 문제가 심하게 나타났는데, 이 서버는 사용 가능한 물리메모리를 충분히 가지고 있었지만, 메모리 단편화로 서비스를 재시작하여야만 하였습니다. (Uncommited range가 많아지는 것은 곧 Virtual Address Fragmentation이 많아 지는 것을 의미합니다)

64비트 프로그램의 경우는 이러한 현상을 매우 완화시킬 수 있을 것으로 생각됩니다.

0:020> !heap -s
  Heap     Flags   Reserv  Commit  Virt   Free  List   UCR  Virt  Lock  Fast
                   (k)     (k)    (k)     (k) length      blocks cont. heap
-----------------------------------------------------------------------------
006c0000 00001002 2565820   7232 658924   1302   160   200    0 44f3b4   LFH
   External fragmentation  18 % (160 free blocks)
   Virtual address fragmentation  98 % (200 uncommited ranges)

길드워 서버들의 uptime을 보면 100일이상 동안 실행 중인 서버들도 많습니다. 길드워 게임의 특징상 (인스턴스 맵) 게임 플레이어들에게 영향을 주지 않고 게임서버를 재부팅 할 수 있습니다. 따라서 최근에는 오랜동안 실행 중인 서버는 일정시간 disable 시킨 후 사용자가 모두 logoff 하게 되면 재부팅하고 윈도우즈 업데이트를 적용하고 있습니다.


크리에이티브 커먼즈 라이센스
Creative Commons License

1UP의 헬게이트 런던 리뷰 기사 중 아래와 같이 길드워와 비교하는 내용이 나왔는데, 내용인즉 대충 이렇습니다. "그러나, 헬게이트 정말 이게 매달 $10로 제공한다는 것인가? 귀엽게도 길드워가 경쟁 상대가 아닌척 하는가? 길드워는 같은 것을 제공하지만 오히려 더 낫고 월정액도 없다."

But really, Hellgate? This is what you're offering for $10 a month? Do you think you're cute, pretending that your competition isn't Guild Wars, which does what you do -- but better, and without a monthly fee?

길드워를 칭찬하는 것 같아 기분이 좋다가도, 이 살벌한 리뷰 기사에, 게임 평론가나 게이머들의 평가가 얼마나 냉혹한지 느끼게 됩니다. 북미나 유럽은 새로운 게임이 나오면, 이러한 게임 평론가들의 리뷰가 새로운 게임 선택에 상당한 영향을 미칩니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

길드워 아이오브더노스(일명 GWEN)가 출시된지 1주가 넘었다. 그런데, 오늘 "독일 전체 게임 차트"에서 BioShock을 밀어내고 1위를 차지했다고 한다. 얼마나 오래 1위에 머무를 지는 알 수 없으나, 상당히 의미있는 것은 분명하다. ^^

크리에이티브 커먼즈 라이센스
Creative Commons License

드디어 그동안 작업하던 TSF(Text Service Framework) 지원이 거의 끝나 곧 게임에 업데이트 될 예정입니다. 비스타(Vista)에서는 기존 IME가 사라지고 TSF가 기본으로 작동하는 바람에 시작한 일이지만, TSF라면 제가 오래전부터 관여했던 것이라 제대로 구현하려고 노력했습니다.

만약 실제 사용되는 모든 윈도우즈 OS가 TSF기반의 IME 만을 지원한다면 오히려 문제는 간단해 질 수 있습니다. 왜냐면, 표준을 따르지 않는 중국어 IME들을 지원하기 위해 많은 해킹 코드가 사용되고 있기 때문입니다. 하지만, 불행히도 이제 비스타에서만 기본으로 TSF가 설정되어 있기 때문에, 어플리케이션을 개발하는 입장에서는, 오히려 실행 시간에 윈도우즈 버전을 확인하여 IME 혹은 TSF 중 하나를 선택하여 지원해야 하는 부담이 생겼습니다.

그러니까, 게임과 같이 DirectX를 사용하는 어플리케이션은 IME, TSF 둘 다 지원하는 코드를 작성하고 테스트해야만 한다는 것입니다. 저 같은 경우는 매우 오래전부터 이 일에 직접 관여해왔기 때문에 그나마 쉽게 구현하였으나, 처음 IME와 TSF를 접하는 개발자라면 이해하는 데에만 상당한 시간이 걸릴것으로 예상됩니다.

길드워에 TSF 지원기능을 구현하던 중 DirectX 8월 버전에 TSF 지원 기능이 추가된 CustomUI 예제가 발표되었습니다. 그러나, 이것은 TSF를 완전히 지원하는 것은 아니고 기존의 IME지원 코드 중에 비스타에서 동작하지 않는 부분만을 TSF를 직접 사용하여 해결하는 것 입니다. 게다가 그렇지 않아도 지저분한 기존의 코드에 TSF 코드까지 더해져 DirectX의 CustomUI IME 샘플 코드는 정말로 보기 싫을 정도로 복잡해져 있습니다. 다만, 이 코드를 작성한 사람을 만난 적이 있기 때문에, 더 이상의 코멘트는  하지 않겠다.^^

그런데, 여기서 길드워가 TSF를 완전히 지원 (fully enable) 했다는 것이 무슨 의미인지, 그리고 사용자들에게 어떠한 이득이 있는지 간단히 설명해 보겠습니다. (먼저 말하지만 게임에서는 그다지 유용하지 않은 것 같습니다. 더군다나 한자 변환을 많이 사용하지 않는 한국어 사용자들에게는 TSF가 당장 어떠한 편리함도 제공해주지는 않을 것 같습니다.)

우선, 비스타의 TSF에는 게임과 같이 전체화면을 사용하는 DirectX프로그램을 위해 UI Less mode가 추가 되었습니다. 그러나 UI Less mode 인터페이스로는 원래 추천 리스트 (candidate list) UI에 표시되는 모든 정보를 얻을 수 없는 단점이 있습니다.

길드워는 창모드 (windowed mode)를 지원하고 많은 플레이들이 이를 애용한다는 점을 고려해서, 창모드에서는 원래 위도우즈의 Candidate UI를 보여주고, 전체 화면모드에서만 UI Less mode를 사용한 커스텀 UI를 사용하였습니다.

아래 그림은 창모드에서 한자변환을 하는 예입니다. 보시다시피 원래 TSF Candidate UI를 보여주며 한자의 음과 훈이 표시되고 있습니다.



아래 그림은 전체화면 모드에서 한자변환을 하는 예입니다. 커스텀 UI를 사용합니다. 그리고 TSF를 지원함으로써 단어 단위의 한자변환이 가능함을 알 수 있습니다. (이러한 단어단위 한자 변환은 DirectX의 CustomUI 샘플코드로는 불가능한 것입니다.)



아래 그림은 일본어 입력기를 창모드에서 사용하는 예입니다. 일본어 입력기의 Candidate UI는 추천단어에 관한 보다 자세한 정보를 따로 보여 주고 있습니다.




아래그림은 또 다른 한글의 단어단위 변환예입니다.



TSF는 키보드 입력 뿐만아니라 다양한 종류의 입력 (음성인식, 필기인식 등)을 지원합니다. 또 완성된 글자의 재변환 (reconversion) 혹은 수정 (correction) 기능을 지원하여 추천 단어를 잘못 선택한 경우 아래와 같이 한자키나 수정 버튼을 이용하면 원래 변환한 단어를 자동선택하며 최초 입력했던 한글도 추천단어로 보여줍니다.

또 다른 예를 들어보면, 음성인식이나 필기 인식을 사용하여 글자를 입력한 경우, 재변환 기능을 이용하면, 원래 입력한 음성을 다시 들어 보거나 필기 인식한 글자의 모양을 볼 수도 있습니다.




한국어 사용자들은 게임상에서 실제 이용할지는 의문이나 필기 인식을 통해 한자를 입력하는 화면입니다. (일본인이나 중국사람들은 가끔 이 기능을 이용한다고 합니다.)




어쨋거나, 길드워는 비스타에서 TSF를 제대로 지원하게 되어 한자변환 추천리스트를 표시하는데 아무런 문제가 없어졌습니다.


크리에이티브 커먼즈 라이센스
Creative Commons License

길드워 (Guild Wars)는 각 언어별 버전이 따로 없다. 하나의 실행파일이 다국어를 지원하기 때문이다. 내가 아는한 이렇게 하나의 실행파일로 다국어 입출력이 가능한 게임은 길드워가 최초인 것 같다. 마이크로소프트 게임 스튜디오에서 제작된 게임들도 각 언어별 버전이 따로 존재한다. 물론 실행파일은 하나이고 리소스 파일을 바꾸거나 레지스트리를 변경하면 언어가 바뀌는 게임들은 있다. 하지만, 이들이 여러 가지 언어의 동시 입출력을 지원하지는 않는다. 그러니까, 한국어 UI를 보면서 한글 입력기와 일본어 입력기, 중국어 입력기를 번갈아 사용하여 일본어와 한자를 채팅창에 입력, 상대방에 전송하는데 아무런 문제가 없다.

길드워가 다른 MMORPG와 크게 다른 점들 중의 하나는, 논리적으로 전세계 플레이어들이 하나의 월드에 있다는 것이다. 지금까지의 MMORPG는 샤드(Shard), 월드 혹은 서버로 불리는 독립적이 여러개의 월드가 존재하여, 다른 월드로 캐릭터를 이동시키기가 힘들며, 다른 월드서버에 있는 캐릭터와는 만나거나 통신할 수 없다.

하나의 월드라는 길드워만의 특징과 다국어 지원이라는 기능 덕분에 다른 언어를 사용하는 세계 여러 나라의 플레이어 캐릭터들이 한곳에 모여서 여러 언어를 동시에사용하는 것이 가능하다. 이것은 실제로 물리적으로 여러 나라 사람들을 한곳에 모아 놓은 것과 다를 것이 없다. 국경을 넘어선 언어와 문화 교류가 게임을 통해 가능하다는 것이다. 그러나, 아쉽게도 이러한 장점이 아직까지는 플레이어들에게 크게 어필하지는 못하고 있는 것 같다. 특히, 길드워가 아시아 시장에서 대중적인 인기를 얻지 못한 것은 안타까운 일이다.

성공한 서양 게임들이 한국에서 실패하는 원인을 문화적 차이라고 말한다, 과연 어떤 문화적 차이인지는 여러 가지 이견들이 많다. 하지만, 길드워의 경우 레벨과 아이템보다는 스킬과 팀워크를 중요시한 것이 아시아인에게 익숙하지 않다는 것이 지배적이나, 과연 그것 뿐만인지는 확신하기 어렵다.

길드워의 UI 언어설정 옵션.


크리에이티브 커먼즈 라이센스
Creative Commons License