brunch

You can make anything
by writing

C.S.Lewis

by 이기곤 May 27. 2019

월드오브워크래프트 대회 해킹하기

2011-2014년동안 PVP 대회에서 에드온을 사용할 수 있던 이유

제목이 조금 거창하지만 나는 2011년부터 2014년까지 월드오브워크래프트(이하 WOW) PVP 대회를 해킹하는 데 성공했다. 국내 대회뿐만 아니라 세계 대회까지말이다.

정확히 말하면, 대회의 규칙을 무시할 수 있는 방법을 찾았고 규칙을 부숨으로써 다른 팀보다 유리한 위치에 서는 데 성공했던 것이다.


2015년부터는 블리자드측에서 새로운 규칙을 만들었고, 1년 정도는 어느 정도 우회할 방법을 찾았지만 그 이후에는 완벽하게 차단당했다. 당시에는 나 또한 월드오브워크래프트를 하지 않았기 때문에 2015년 이후에는 사용하지 않았던 것 같다.


지금부터 이 방법이 무엇이었는지, 어떻게 규칙을 무시하고 다른 팀보다 우위에 설 수 있었는지 소개하려 한다. 혼자만 알기에는 조금 아쉬운 이야기다.


WOW의 특별한 기능, 에드온(Addon)


대회 이야기를 하기 전에 WOW의 기능 두 개를 소개하려 한다. 하나는 에드온이고, 다른 하나는 매크로다.


에드온은 루아(Lua)라는 스크립트 언어를 사용하며 자신만의 인터페이스를 만들 수 있는 기능이다. 안드로이드나 iOS에 새 애플리케이션을 설치하면 여러 기능을 사용할 수 있는 것처럼, 에드온을 설치하면 기본적으로 제공하지 않던 여러 기능들을 사용할 수 있다.


"건담 조종석" 이라 부르던 유명한 스크린샷이다. 이제는 출처를 알 수 없을 정도로 오래됐다.

WOW가 처음 발매했을 당시에는 에드온 사용이 필수였다. 자신이 사용한 스킬의 재사용 시간을 보여주는가 하면, 적이 사용한 스킬의 재사용 시간도 보여주는 등 유용한 기능들이 많았기 때문이다.


그 외에도 퀘스트 진행을 도와주는 에드온, 레이드 보스를 처치하는 데 도움을 주는 에드온 등 현 세대에 있는 모든 게임의 인터페이스는 에드온으로부터 영감을 받거나, 파생된 거라 해도 과언이 아니다. 초창기에는 에드온만 이용해 자동 사냥을 할 수 있을 정도로 강력한 기능이었다.


에드온을 사용하기 위해서는 블리자드에서 지정한 규격에 따라 lua  언어로 작성한 파일을 만들어야 한다. 간단한 에드온은 500줄 내외로 끝나지만, 큰 규모의 에드온은 만 줄에 육박하기도 했다. 블리자드는 새 버전이나 확장팩을 출시할 때마다 lua 인터페이스 구조를 자주 바꿨는데, 이 때문에 패치만 하면 많은 유저들이 에드온이 작동하지 않는다고 호소하기도 했다.

익숙한 그림이면, 당신도 열혈 와우저다.

WOW의 또 다른 특별한 기능, 매크로(Macro)


매크로 또한 에드온비슷했다. 매크로는 간단한 명령어들을 한 번에 누를 수 있도록 제공하는 기능이다. 예를 들면 여러 스킬들을 한 번에 묶어서 사용하거나, 아이템과 스킬을 동시에 사용하거나, 스킬 사용과 동시에 채팅으로 주변에 알리는 등 여러모로 유용했다. 특정 직업의 경우 버튼 하나만 눌러 모든 공격 관련 행동들을 자동화하는 매크로도 많았다.

당시에는 라면 냥꾼, 라면 법사 등 여러 별명이 많았다.

매크로는 에드온과 달리 255자 제한이 있지만, 단순한 스킬이나 아이템 사용 외에 lua 스크립트를 작성하는 것도 가능하다. 하지만 나는 이때까지만 해도, 에드온과 매크로를 함께 사용할 줄은 꿈에도 몰랐다.


WOW의 PVP 대회


레이드보다 PVP에 관심이 많았던 나는 소위 말하는 싸움질만 하고 다녔다. 레이드를 하는 이유 또한 PVP에 유리한 아이템을 먹기 위해서였다.


PVP 대회에도 나가볼까 했지만, 리더보드에서 상위권에 들긴 해도 대회에 나갈만큼 실력이 좋진 않았다. 그나마 다행인 것은 잘하는 여러 사람들과 인맥을 쌓을 기회가 있었고, 덕분에 좋은 팀원을 만나 항상 상위권 유지했다.


PVP 대회는 에드온 사용을 철저하게 금지한다. 즉 기본 인터페이스 상태에서 게임을 해야 하는 것이다. 그러나 매크로는 사용할 수 있었다.


대회에 나가는 형이 처음 이 이야기를 했을 때, 개발자의 꿈을 가지고 있던 나는 문득 이런 생각을 했다.


에드온을 잘게 쪼개서, 매크로 안에 넣으면 되지 않을까?


프로토타이핑 시작


내가 이 이론을 생각할 수 있던 이유는 모든 매크로는 개별적인 샌드박스 위에서 실행되지 않으며 공용으로 다른 메모리에 접근할 수 있기 때문이다. 즉, 매크로 1로 만든 변수를 매크로 2에서 접근할 수 있는 것이다.


첫 번째 프로토타이핑 대상은 해외 프로게이머 Kollective가 만든 인터럽트 바(Interrut Bar) 에드온이었다. 상대 플레이어의 핵심 기술들의 재사용 시간을 보여주기 때문에, 전략적으로 행동하기 위해서는 반드시 필요한 에드온이기 때문이다.

 상대가 기술을 사용할 수 없을 때 공격하면 이길 확률이 높다.


인터럽트 바 에드온은 약 300줄정도로, 적당한 길이였다. 개발자가 아닌가하는 생각이 들 정도로 코드가 잘 정돈되있어서 깜짝 놀랐던 기억이 난다.

근데...이걸 어떻게 줄이지?


1단계: 함수 이름 줄이기


가장 처음 했던 일은 모든 함수의 이름을 줄이는 것이다. 매크로에서 lua 스크립트를 실행하려면 가장 앞에 /run 을 추가해야 하므로 내가 사용할 수 있는 길이는 총 250자다.  줄일 수 있는 건 다 줄여야 했다. 그냥 보면 이해할 수 없는 이름도 정말 많다.

개발자 입장에서는 최악의 네이밍이기도 하다.

 아래는 공백을 모두 제거한 버전이다.

총 171 글자다.

2단계: 나누고, 또 나누기

그 다음에 했던 일은 인터럽트바에서 사용하는 함수들을 나누고, 또 나누는 것이었다. 이 때 글자 수를 줄이기 위해 여러 트릭들을 썼는데, 대안으로 선택할 수 있는 옵션이 있다면 항상 가장 짧은 대안을 선택했고, 공백을 최소한으로 했다. 예를 들어 한 줄에 적은 명령어의 끝이 큰/작은 따움표(")나 중괄호로 끝나면 공백을 추가하지 않고 이어서 쓸 수 있다.

전투 이벤트를 후킹해 스킬 사용을 확인하는 코드, 229자다.
스킬 재사용 시간을 활성화하는 코드, 246자다.

3단계: 성공적인 테스트와 후속 매크로들


이렇게 만든 인터럽트바는 총 7개의 매크로로 나눠졌다. 처음에는 잘 동작하지 않았지만 몇 번의 테스트 후 정상 동작하는 걸 확인했다.


이제 이 7개의 매크로를 누르면 에드온보다는 조잡하지만 인터럽트바와 동일한 기능을 하는 에드온을 사용할 수 있는 것이다. 그것도 대회에서 말이다!

이 사진은 프로토타입보다 이후 시점이지만, 거의 비슷하다.

인터럽트바를 성공적으로 만든 후 나는 다른 여러 에드온을 매크로로 포팅하는 데 성공했다.

계급장 재사용 시간을 보여주는 매크로 5개
자신 또는 팀원의 중요한 버프만 필터링하여 원하는 곳에 보여주는 매크로, 7개

그 외에 인터페이스 이동, 아군의 주요 기술 재사용 표시, 스턴 또는 공포와 같은 방해 기술의 점감 시간 표시 등의 에드온을 매크로로 만들었다. 기억으로는 총 60개가 넘었던 것 같다.


4단계: 결과, 그리고 경험


이 매크로를 가지고 대회에 나간 내 친구들과 지인들은 어떻게 됐을까? 세계 대회를 기준으로 2011년에는 OMG 팀이 우승을 했고 2012년과 2013년에는 Incredible Miracle 팀이 3위를 두 번, 2014년에는 Push Push 팀이 3등을했다.


물론 에드온 사용보다는 본인들의 실력이 더 큰 기여를 했을거라 확신한다. 하지만 다른 팀이 사용하지 못하는 에드온을 쓸 수 있다는 것도 큰 기여를 했을 것이다.


2015년부터는 매크로 사용이 화이트리스트 기반으로 바뀌고 게임을 쉬면서 아레나 정키스(Arena Junkies)에 올린 매크로가 퍼져, 모든 대회 유저들이 매크로를 사용하게 됐다.


그러나 그 이후에도 많은 지인과 친구들은 가볍다는 이유로 매크로를 계속 찾았고, 2017년까지 유지보수를 했던 기억이 난다. 지금은 우리 모두 각자의 삶을 살고 있기 때문에 더 이상 사용하지 않는다.


이 추억은 내 인생 중 가장 특별했던 경험이었고, 여러 지식들을 얻었다. 친구들의 요구 사항을 어떻게 정의하고 처리하는지, 어떻게 피드백을 주고받아야 하는지, 인터페이스를 어떻게 제공하고 결과물의 버전을 관리하는 방법 등을 말이다.


 

작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari