|
[아이온>메카실험실]
A
라는 프로그램이 있다. 게임상에서 지연시간(핑)을
줄여주는 효과를 가진 이 프로그램은 랙에 시달리는 게이머들이라면
한번쯤은 들어봤을 법한 프로그램이다. 마비노기, WOW 등 여러 온라인
게임에서는 이 프로그램을 사용한 유저들이 상당한 핑, 프레임 개선
효과를 봤으며, AION에도 효과를 볼 수 있다는 소문이 퍼지면서 유저들의
관심을 끌고 있는 중이다.
조금이라도 나은 환경에서 게임을 즐기고 싶은 유저들이라면
당연히 눈길이 가겠지만 운영진 측에서는 AION에서 지원하지 않는 모든
프로그램에 대해서 불법으로 지정하고 제재를 취하겠다는 입장을 밝혔다.
|

|
|
▲
A 프로그램을 쓰면 제재를 당할 수 있다
|
단지 랙을 줄이기 위해 사용했을 뿐인데 제재를
취한다? 하지만 굳이 프로그램을
사용하지 않더라도 간단한 레지스트리 수정으로 프로그램을 사용했을
때와 같은 효과를 얻을 수 있다고 하니 지금부터 레지스트리 수정으로
얻을 수 있는 효과와 적용하는 방법에 대해 알아보도록 하자.
|
레지스트리만 수정했을 뿐인데 화염 발사 스킬이
한번 더 나간다??? |
우선 이 레지스트리 수정이 얼마나 효과가 있는지
한번 알아보도록 하자. 간단한 실험을 통해 45레벨 마도성 캐릭터가 공중
속박 후에
화염 발사를 얼마나 사용할 수 있었는지 알아보았다.
|

|
|
▲
레지스트리 전용 전
|
스크린샷에 나와 있다시피 레지스트리 수정 전에는
화염 발사 스킬을 4번 정도 사용할 수 있었다. 최대한 랙을 줄이기 위해
SHIFT+F12로 주변 캐릭터를 안보이게 만들고 유저가 없는 지역에서 실험을
진행하였지만 스킬 사용횟수는 4회를 넘어가지 않았다.
|

|
|
▲
레지스트리 전용 후
|
하지만 레지스트리를 수정한 뒤에는 화염 발사 스킬을
기본 5번 사용할 수 있었다. 단지 레지스트리만 수정했을 뿐인데 스킬을
한번 더 쓸 수 있다라니… 혹자는 화염 발사를
6번도 사용할 수 있었다고 하니 그 효과는 상당한 수준이라는 것을 알
수 있다.
이런
결과가 나온 이유는 바로 레지스트리
수정으로 서버와 클라이언트 사이의 패킷 교환을 유연하게 하여 온라인
게임에 맞는 설정을 해줬기 때문이다. 현재 이 방법을 사용하거나 A프로그램을 사용한
유저들은 핑을 줄일 수 있을 뿐만 아니라 캐릭터 모션이 좀더 부드러워졌고,
스킬 사용이 빨라졌으며, 지연시간으로 인한 프레임저하까지 잡을 수
있었다고 한다.
레지스트리를
수정하는 방법은 매우 간단하다. 윈도우 시작 버튼을
누른 뒤에 실행을 누르고 “regedit”를 입력하고 엔터를 누르자. 그러면
윈도우의 레지스트리 값을 변경할 수 있는 레지스트리 편집기가 실행이
된다.
|

|
|
▲
레지스트리 편집기를 실행하자
|
레지스트리
편집기를 실행했다면 다음의 경로를 찾아 마우스 오른쪽 버튼을 누르고
새로 만들기-> DWORD 값을 만들자. 이름은 TCPNoDelay, 데이터 값은
16진수 1로 지정한다. 데이터 값은 해당 레지스트리 이름을 더블 클릭하면 수정할
수 있다.
|
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSMQ/Parameters]
|
|
"TCPNoDelay"=dword:00000001
|
다음으로 수정할 레지스트리는 자신이 사용하고 있는
컴퓨터의 IP를 알아야 한다. 하지만 자동으로 IP를 받는 경우나 공유기를
이용하고 있는 경우 등등 IP를 확인하기 어려울 경우도 있는데, 그냥
IP가 대충 어떻게 되어 있는지만 알면 되니 걱정하지 않아도 된다. 우선 아래 경로에 맞게
Interfaces 폴더까지
찾은 뒤에 세부폴더를 하나씩 열어보고 IP가 적혀있는 폴더를 찾아보자.
|

|
|
▲
세부폴더를 살펴보면 아이피가 적혀 있는 폴더가 있다
|
폴더를 찾았다면 위에서 수정했던 방식과 동일하게
마우스
오른쪽 버튼을 누르고 새로 만들기-> DWORD 값을 만들어 TcpAckFrequency를
생성하고 값은 16진수 1로 지정한다.
|
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/ Tcpip/Parameters/Interfaces/IP가
적혀 있는 폴더]
|
|
"TcpAckFrequency"=dword:00000001
|
레지스트리를 모두
생성했다면 하던 일을 멈추고 재부팅을 하자.
그러면 레지스트리 설정이 네트워크에 반영되어 원활한 플레이가 가능하게
된다.
레지스트리 수정으로 이런 효과를 볼 수 있지만
운영진의 답변과 몇몇 유저들의 잘못된 사용 후기 덕분에 대부분의 유저들은
사용하길 꺼려하는 편이다. 하지만 적용 원리를 알아보면 순전히 오해에서
비롯된 것임을 알 수 있다.
|
Q. 이 방법을 사용하면 핵이라고 블럭 당하는 것이
아닌가?
|
|
A. 절대 핵이 아니다. 레지스트리를 수정했다고
블럭을 한다면 그건 운영진의 잘못이다. 마이크로소프트에서도 TcpAckFrequency
레지스트리 수정에 관한 기술 문서가 공개 되어 있을 정도로 레지스트리
수정은 윈도우 사용자 개인의 자유에 맡겨져 있다.
Windows XP
에서 TCP 응답(ACK)
동작을 제어하는 새로운 레지스트리 항목
또한 WOW처럼 패치를 통해 기존에 그들이 사용하던
네이글 알고리즘을 자체적으로 삭제해버린 경우도 있으며, 마비노기에서는
이런 네트워크 레지스트리 수정 방법이 불법이 아니라고 GM의 답변을
통해 밝힌 바 있다.
|
|

|
|
▲ WOW에서는 랙의 주범이었던 TCPNoDelay를
패치를 통해 삭제해 버렸다
|
|
Q. 인터넷 속도가 느려진다는 말이 있다.
|
|
A. 체감할 정도로 속도가 느려지진 않으니 안심해도
된다.
|
|

|
|
▲ 인터넷
속도 측정을 통해 레지스트리 적용 전의 지연시간을 측정했다
|
|

|
|
▲ 레지스트리를
적용했더니 다운로드 속도가 약 0.2MB/s 가량 하락했지만
지연시간은 줄었고 업로드 속도가 상승!
|
|
Q. 이걸 쓰고 난 뒤에 컴퓨터가 이상해졌다.
|
|
A. 여기에서 알려주는 레지스트리만 수정하는
것이 좋다. 레지스트리 수정은 윈도우
상급 사용자의 능력을 요하는 것으로 상당히 민감한 부분이다. 이외엔 다른 레지스트리에는 손대지 않는 것이 정신건강에
좋으며, 해당 레지스트리만 수정한다면 컴퓨터에 무리를 주진 않으니
안심해도 된다.
|
|
Q. 레지스트리를 예전으로 돌리고 싶은데 어떻게
하면 되나?
|
|
A. 해당 레지스트리 값을 찾아 지운
뒤, 재부팅만
하면 된다.
|
|
TCPNoDelay란? TCP에서 송신을 지연시키는 방법으로 네이글 알고리즘(Nagle
Algorithm)이라는 것을 사용하게 된다. 일정 크기 이상의 데이터를 모아서
데이터를 한번에 전송하는 네이글 알고리즘은 서버측의 부하를 줄이기
위해 사용하는 편이다. (서버에서 데이터를 받을 때는 작은 데이터를
여러 번 받는 거보다 큰 데이터를 한번에 띄엄띄엄 받는 것이 부하를
줄이기에 좋다)
하지만 온라인 게임처럼 큰 데이터가 아닌 작은
데이터를 실시간으로 전달해야 하는 경우라면 네이글 알고리즘의 사용으로
지연시간(랙)을 유발할 수 있어 적합하지 않다. ‘데이터 전송방식으로
네이글 알고리즘을 사용하지 않는다’라는 것이 바로 TCPNoDelay = 1(끄다)
인 것이다.
|
|
TcpAckFrequency란? 기본적으로 TCP에서는 n개의 패킷이 수신되기 전엔
응답을 하지 않는다. n개 미만의 패킷만 수신된 경우라면 200ms(0.2초)가
흐른 뒤에 대기를 막기 위해 강제로 응답을 하게 된다. 응답이 되는
경우는 2가지라고 할 수 있다. 0.2초가 경과하거나 n개의 패킷이 모두
수신
되었을 때. 이 n 값은 Window 상에선 기본적으로 2로 설정되어 있고,
이 값을 조절할 수 있는 레지스트리 값이 바로 TcpAckFrequency다.
Window 에서는 패킷을 2개 수신하기 전에는 응답을 하지 않는다.
1개의 패킷만 들어오고 나머지 1개가 안들어오는 상황이라면 0.2초가 흘러야 강제로
서버측에 응답을
보내게 된다. 당연히 온라인 게임처럼 송수신이 활발하게 이뤄지는
과정에 0.2초의 지연시간은 보기엔 짧아 보여도 플레이하는 유저 입장에서는
상당히 길게 느껴질 수 밖에 없다. 이것을 막기 위해 TcpAckFrequency를 1로 수정하게
되는데 이는 패킷 1개마다
응답을 보낸다는 말이 되며 0.2초라는 지연시간을 없앨 수 있게 된다.
|
글 : 게임메카 피터케이(quake300@gamemeca.com)
|