두번째 날을 맞이한 블리즈컨 2018에서는 '역사 복원: WoW 클래식 제작'이라는 세션이 진행됐다.

해당 세션은 월드 오브 워크래프트의 선임 소프트웨어 엔지니어 '오마르 곤잘레즈(Omar Gonzalez)', 수석 소프트웨어 엔지니어 '브라이언 비르밍햄(Brian Birmingham)', 게임 디렉터 '이언 해지코스타스(Ion Hazzikostas)'가 와우 클래식 데모 버전에 대한 개발 과정에 관해 설명했다




▲ 선임 소프트웨어 엔지니어 '오마르 곤잘레즈'


가장 먼저 와우 클래식을 고증해내기 위한 기본적인 기술 부분에 관해 선임 소프트웨어 엔지니어 '오마르 곤잘레즈'가 이야기했다. 게임 개발에 필요한 것은 다양하겠지만 그 중 데이터베이스 데이터(Database data)와 아트 에셋(Art Assets) 그리고 이를 합쳐주는 소스 코드(Source code)에 관해 이야기했다.

▲ 생명력 등의 수치를 저장한 DB 데이터와 3d 모델링 등의 아트 에셋, 그리고 그걸 이어주는 소스 코드


오마르는 소스 코드에 관해 좀 더 자세한 이야기를 하면서, 리포지토리(repository)라는 소스 코드 보관소를 언급했다. 그리곤 1997년부터 저장된 모든 소스코드들의 변경점들을 추적하는 과정이 와우의 원래 모습을 복원하는데 있어, 중요하단 결론을 내렸다고 언급했다.

▲ 리포지토리에서 최초로 고친 버그, 정 반대의 효과를 냈었다고 한다



■ 작업해야 할 것들을 명확하게 하다 (Uncovering What They Had to Work With)

▲ 라이브 버전을 보완하는 방식이었기 때문에 이전 버전의 문제점을 계속 답습했다


먼저 db 데이터들은 어떻게 작용하는가에 대해 설명했다. 초기에는 굉장히 간단한 방식으로 유저가 사용하는 라이브 버전과 개발하는 패치 버전 두 가지만 존재했었다. 개발 버전을 라이브 버전에 적용함으로써 유저가 플레이할 수 있게끔 하는 방식인데, 이는 이전 데이터를 바탕으로 패치를 하는 방식이기 때문에 기존 버전의 문제점을 이어간다는 문제점이 있었다고 한다.

그래서 이러한 문제점을 해결하기 위해 여러 개의 패치를 진행할 수 있도록 작업 방식을 변경한 전적이 있었다고 설명했다. 그런데 다행히도 과거 db 데이터인 1.12 버전의 데이터를 발견할 수 있었고 이것을 복원할 수 있겠다는 생각이 들었다고 말했다.

▲ 과거 db 데이터를 찾아보니 1.12 버전의 패치 데이터 발견!


다음으로 아트 에셋에 대한 설명을 진행했다. 아트 에셋은 여러 종류가 있지만 대표적으로 점과 선으로 연결된 '3d 모델'과, 마치 캔버스에 그리는듯한 2d 이미지 '텍스쳐'를 언급하며, 이 두가지를 바탕으로 하여 캐릭터 모델들을 만들 수 있다 설명했다.

▲ 점과 선으로 이루어진 3d 모델과 텍스쳐를 합치면

▲ 짜잔! 우리가 보는 캐릭터가 탄생



■ 예전의 것들을 재구축 하다 (Reconstructing the past)

그런데 현재 자신들이 보유하고 있는 아트 에셋은 모두 최신 버전밖에 존재하지 않았었다. 하지만 자신들이 진행하려는 이 프로젝트는 매우 중요했기 때문에 자료 보관 담당자에게 예전 자료들 중 백업 자료는 없었는지 물어봤었고, 결국 외부에서 백업에 백업의 백업인 데이터를 찾아냈다고 설명했다. 그리곤 이 자료들을 바탕으로 1.12 버전의 와우를 복원할 수 있었고 내부적으로 시연이 가능하게 된 중요한 마일스톤이었다고 언급했다.

마일스톤(Milestone)이란 프로젝트 진행 과정에서 특기할 만한 사건이나 이정표를 말한다.

▲ 과거의 데이터들을 모아

▲ 1.12 버전을 구연하는데 성공!

▲ 당시 구현했던 게임의 모습


하지만 해당 버전은 과거의 인터넷용으로 제작되었었기 때문에 현재 사용하고 있는 블리자드 클라우드에서 구동할 수 없었고, 마찬가지로 배틀넷 앱에서 작동하지도 않았다. 거기에 로그인 서버나 고객 지원 서비스 또한 사용할 수 없는 데다 많은 버그들이 남아있었기 때문에 악질적인 의도로 이용될 가능성 또한 높았다고 언급했다.

▲ 복원은 성공했지만 여전히 많은 문제점이 남았었다


이는 블리자드가 원하는 수준만큼의 품질을 충족하지 못했기 때문에 개선하기 위해 시간을 투자했다고 한다. 그래서 해결 방법을 여러가지 생각했는데 먼저 소스 코드 안에서 우리가 db와 아트 에셋은 계속해서 이용하면서 코드적인 부분에서만 수정을 진행하기로 결정했다.

그 시작으로 7.3.5 버전의 클라이언트 서버를 소스 코드로 이용하고 db 데이터와 아트 에셋은 1.12 버전을 적용해 프로토타입을 시도했고, 역시나 많은 오류가 있었지만 퀘스트를 하거나 전투를 하는 등의 와우의 핵심적인 요소들은 큰 문제가 없었기 때문에 이러한 시도가 개발에 있어서 많은 도움이 됐다고 언급하곤 이후의 과정 설명을 위해 '브라이언 비르밍햄'에게 마이크를 넘겼다.

▲ 과거의 소스 코드는 현재의 시스템과 다른점이 많아 너무나도 많은 문제점을 지니고 있었다

▲ 그래서 새로운 소스 코드에 과거의 데이터를 이식시키기 위해서 많은 노력이 필요했다



■ 초기 버전에서 데모판이 나오기까지 (From Prototype to Demo)

▲ 수석 소프트웨어 엔지니어 '브라이언 비르밍햄'


다음으로 수석 소프트웨어 엔지니어 '브라이언 비르밍햄'이 마이크를 넘겨받았다. 브라이언은 프로토 타입을 데모 버전까지 구현하기 위해 어떤 점이 진행됐는지 설명했다. 먼저 앞서 설명했던 소스 코드, DB 데이터, 아트 에셋을 이용해 게임내 구현되는 '지형'이나 '게임플레이 방식', '애니메이션', '조명' 등의 시스템에 자세한 설명을 진행했다.

▲ 소스 코드 등을 이용해 게임의 전반적인 시스템을 구성할 수 있다


먼저 브라이언은 지형에 대해 설명하면서, 지형과 관련된 프로토 타입의 문제점을 지적했다. 예를 들어 던 모로를 벗어나 모단 호수를 갔을 때 해양생물인 트레샤돈이 물이 없어 땅에서 걸어다니는 모습이 보였고, 텍스쳐가 제대로 있지 않아 아이템의 색도 이상하게 보이는 것을 언급했다.

이는 7.3.5 클라이언트를 사용하는 프로토 타입은 대격변 이후 지형들에 많은 변화가 있었기 때문에 이러한 오류가 보였고 그 때문에 적합한 버전이 아니었다고 덧붙였다. 이를 해결하기 위해서 자신들이 오랜 기간 개발했던 도구들을 이용해 과거의 지형 데이터를 읽고 새로운 지형 데이터를 추출해 수정 과정을 거쳐 현재의 엔진에 제대로 이식할 수 있었다고 설명했다.

▲ 계곡이나, 산, 나무, 건물, 물 등의 지형

▲ 모단 호수에 있는 트레샤돈이 땅 위를 걸어다니는 상황

▲ 과거 지형 데이터는 과거 엔진에 맞게 제작되었기 때문에 현재의 엔진과는 맞지 않는다

▲ 현재의 엔진에 제대로 적용하기 위한 과정이 필요했다



■ 사용된 도구들 (Tools)

그와 동시에 이러한 도구들은 매우 중요했다고 설명했다. 자신들은 도구가 격전의 아제로스뿐만 아니라 클래식 버전에서도 잘 사용할 수 있도록 하고싶어 많은 노력을 했기때문에 실제로 클래식 서버의 퀄리티가 높아질 것이라고 언급했다.

그 밖에 다시 아트 에셋부분에서 게임 내 '조명' 부분이 하얀색이 아닌 보라색처럼 보이는 문제점이 있었는데 이러한 부분은 현재의 엔진에선 오류를 처리하는 과정이 변경됐기 때문에 새로운 오류가 발생한 것이라고 설명했다. 그 때문에 과거 엔진에서 동작하던 것처럼 도구를 개발했고 현재는 새하얀 조명을 확인할 수 있다고 말했다.

▲ 격전의 아제로스뿐 아니라 클래식의 퀄리티도 좋게 만들고자 했다

▲ 조명이 보라색인 것은 오류 처리 방식의 변경으로 인해 새로운 오류가 발생한 것


옛날 데이터를 복원하면서 최대한 많은 부분을 과거와 비슷하게끔 구현하려고 노력했다. 예를 들면 사냥꾼의 직업적인 특성에 관한것인데 현재의 엔진에서는 더이상 찾아볼 수 없는 야수의 행복도 시스템이나, 탄약이 있어야만 공격할 수 있는 점 등 현재는 사라진 것들이다.

이런 것은 현재 엔진에서 존재하지 않기때문에 과거의 소스 코드를 조금씩 가져와 다시 처음부터 현재에 구현할 수 있도록 진행했고, 이러한 사냥꾼의 직업적인 문제외에도 도적의 대상에게 연계 포인트가 쌓이는 방식, 무기 숙련도, 죽었을 때 서있는 애니메이션 문제 등에 대해서도 같은 방식으로 문제를 해결했다.

▲ 사냥꾼이란 직업의 특징적인 부분이나

▲ 그외 많은 부분들에 대한 수정도 진행됐다


또 현재의 캐릭터 커스터마이징 화면은 예전과 달라 복원해야할 필요가 있었고 예전 상태로 복원은 진행했다. 다만, 안개 효과같은 세부적인 효과에 대해서는 완벽하게 똑같이 만들려고 노력중이라며 최대한 비슷하게 복원할 것을 약속했고, 조명 시스템에 대해서도 거리에 따라 밝기의 변화가 자연스럽게 보일 수 있는 등 코드를 적용했다는 것도 설명했다.

▲ 지금과는 다른 캐릭터 커스터마이징 화면

▲ 한결 자연스러워진 조명 효과


그리고 블리즈컨을 준비하면서 많은 버그들을 고쳤지만, 자신들이 발견하지 못한 버그들에 대해선 수정하기가 힘들기 때문에 많은 제보를 바란다고 언급했다. 언제쯤 완성될 것인가에 대한 의문은 대도시나 던전&공격대, PvP와 관련되서 아직까지 많은 부분에 대해 수정할 것이 많다고만 말하며 개발 철학에 대한 설명을 해줄 게임 디렉터 이언 에게 마이크를 넘겼다.

▲ 버그들을 발견해야만 수정할 수 있기 때문에 많은 제보를 부탁한다고 언급했다

▲ 현재 진행중인 개발 내용들



■ 게임 디자인에 있어서의 철학 (Design Philosophies)

▲ 게임 디렉터 '이언 해지코스타스'


마지막으로 게임 디렉터 '이언 해지코스타스'는 자신들이 와우 클래식에 대한 디자인 철학에 대한 설명이 이어졌다.

와우 클래식의 디자인에 대한 것은 사실 12년전에 이미 완성된 것이라고 말하며, 자신들은 디자인에 있어 어떤 결정을 해야하느냐 였다고 덧붙였다. 먼저 프로토타입과 현재의 클라이언트는 인터페이스등 모든게 다르기 때문에 우리는 어떤 것을 유지하고, 어떤 것은 제거하고, 어떤 것은 수정했던 버그마저도 복원해야할지 등 의 결정도 내려야 했다고 언급했다.

그래서 자신들은 이러한 결정에 있어 가이드가 될만한 기준을 마련해야했고, 제일 먼저 진정성에 대한 것을 고려했다. 그 중에서도 2006년의 와우를 그대로 복원하는 것을 목표로 설정해 커뮤니티나 사회의 역동성 등을 다시 구현하길 바랬고, 이런점을 방해하는 요소는 최대한 없애기로 결정 했다고 한다.

▲ 와우 클래식을 개발을 위해 설정한 기준점


그래서 수많은 아이템을 검토했고, 검토 된 내용을 살펴보자면 던전 찾기같은 시스템은 당시에 없었기 때문에 클래식에도 없애기로 결정했다고 한다. 이 외에도 다른 서버의 유저들과도 파티를 맺을 수 있는 기능이나 날아다니는 탈것, 업적, 진영간 확실한 구분을 위해 통합 경매장도 없앨 것이라고 언급했다.

▲ 과거의 경험을 그대로 이어갈 수 있게끔 개발이 진행될 예정


이 외에도 많은 부분에서 고민 해야했다고 말했다. 몬스터에 대한 약화 효과 적용 제한은 2005년 시절처럼 최대 16개까지만 적용할 수 있도록 결정했고, 우편 보내기 역시 친구든, 길드원이든 한시간이 걸리던 시스템을 적용할 것이라 언급했다.

전리품 거래에 대해서는 현재의 시스템처럼 2시간의 거래 가능한 시간을 적용할 것이라고 한다. 이는 실수로 인해 아이템을 건내기 위해서 고객 서비스 기능을 이용해야하는 점이 너무 비효율적임을 감안해 결정한 일이라고 한다.

도적의 기력 재생량은 현재 가속에 영향을 받아 보다 빠르게 회복되는데, 과거에는 회복량이 고정되었었다는 점을 고려해 예전과 같은 시스템을 적용하기로 했고, 애드온은 현재 가능한 것들보다 더 강력한 기능들이 제공되었다고 판단되어 그래서 일부 제한될 수 있다고 말했다.

▲ 시스템을 유지할까 개선된 내용을 적용할까에 대한 고민

▲ 콘텐츠 출시는 점진적으로 풀어나갈 것으로 계획 중


와우 클래식에 대한 콘텐츠 출시 계획은 과거 1.12 버전에서는 공격대 던전 낙스라마스 등이 제공됬지만, 그와 다르게 클래식은 같은 버전으로 진행되도 점진적으로 콘텐츠를 추가할 예정이라고 밝혔다.

카자크나 아주어고스등의 야외 공격대 우두머리부터, 전장과 PvP 보상 및, 줄구룹 등의 공격대 던전 등 최종적으로 낙스라마스까지 추가 될 것이라고 말했다. 이는 현재 구상 단계이므로 변경될 수도 있고 마지막으로 이언은 유저들의 많은 의견을 제공해주길 바란다고 전했다.


11월 3일부터 11월 4일까지 미국 애너하임 컨벤션 센터에서 블리즈컨 2018이 진행됩니다. 현지 및 한국에서 작은 정보 하나까지 놓침없이 전해드리겠습니다. ▶ 인벤 블리즈컨 2018 뉴스센터: https://goo.gl/gkLqSp