출처와 잡설.
출처:
북미 공홈.
개발자의 작업장 - 어둠땅에서 여러 확장팩을 지원하는 와우 어플.
어둠땅용 와우 어플 개밮에서 가장 큰 기술 업데이트 중 하나는 여러 확장팩을 지원하는 기능입니다. 우리는 많은 플레이어들이 요구해온 기능이라는 것을 잘 알고 있으며, 이 대규모 기술 변경과 관련된 몇 가지 도전과 결정의 과정을 공유하고자 합니다.
간추린 역사.
와우 어플은 원래 군단 확장팩을 지원하도록 설계되었습니다. 격전의 아제로스에 이르기까지 우리는 어플이 PC 클라이언트와 코드를 공유하는 기능을 포함하여 몇 가지 주요 후처리 개선 사항의 우선 순위를 정하기로 하였습니다. 이를 통해 어플이 그 전에 엑세스할 수 없었던 게임 UI등 사용 가능한 많은 기능과 도구를 활용할 수 있지만, 단점으로는 한 번에 두 개 이상의 확장팩을 지원하는 프레임 워크를 구축할 수 없다는 것입니다. 따라서 어플 자체에 적용되는 확장팩을 군단에서 격전의 아제로스로 교체하였습니다.
우리는 플레이어들이 어플로 군단 내 콘텐츠에 접근할 수 없어서 실망한 것을 잘 알고 있기에, 어둠땅에서 두 개 이상의 확장팩을 지원하겠고 약속했습니다. 또한 모바일 팀은 커뮤니티가 원하는 군단 콘텐츠를 다시 불러올 수 있기를 바라고 작업을 진행하였습니다.
처음에 우리는 어둠땅 콘텐츠 작업 능력을 극대화하기 위해 이전 확장팩은 일부 기능만 지원하는 옵션에 대해 논의하였으나, 가능한 많은 부분을 지원하기로 경정하였습니다. 또한 어둠땅이 되면 플레이어가 군단 확장팩을 선택하여 레벨업을 할 수 있는 옵션이 생기기에 해당 플레이어가 레벨업 중에 완전한 모바일 지원을 받을 수 있도록 하고 싶었습니다.
(*어플을 통해 플레이어는 소둠땅부터 군단과 격전의 아제로스 확장팩을 선택할 수 있고, 어둠땅 출시 후부터는 어둠땅 콘텐트를 사용할 수 있습니다.)
다행이자 불행인 것은, 대부분의 군단관련 코드가 여전히 어플에 남아있기에, 군단 콘텐츠를 다시 추가하는 것에 대한 완벽한 테스트가 되었습니다. 새로운 다중 확장팩을 위한 프레임 워크를 위해 구현해야할 부분이 많지는 않았지만, 군단과 격전의 아제로스를 완벽하게 분리하게 위해서는 해야할 일이 많았습니다.
다중 확장팩 프레임 워크를 만들려면 세 가지 중요한 일이 있습니다.
- 어플은 현재 확장팩 콘텐츠에 대한 데이터를 지우고 서버에서 새로운 확장팩에 대한 데이터를 필요로 합니다.
- 기능을 분리하기 위해 확장팩에 관련된 UI 코드를 분리해야 합니다.
- 어플의 용량을 최소화하기 위해 확장팩 관련 특징을 끊을 필요가 있습니다.
확장팩 데이터.
군단 어플이 처음 개발되었을 때 어플의 요청을 처리하는 대부분의 서버 코드는 군단 데이터만 반환하도록 특별히 제작되었습니다. 격전의 아제로스로 전환할 무렵, 우리는 이 기능을 격전의 아제로스 데이터만 반환하도록 수정하였습니다. 그러나 이번에는 선택한 확장팩에 대한 데이터를 가져올 수 있는 기능이 필요했습니다. 즉, 우리는 모바일 요청에 응답하는 모든 서버 기능을 살펴보아야 했고 데이터를 가져올 확장팩을 지정하는 매개 변수를 허용하도록 변경해야 했습니다. 예를 들어 추총자 데이터에 대한 요청은 추종자 유형(예 군단 추총자 또는 격아 추종자)을 지정할 수 있어야 했고, 전역 퀘스트 요철에는 퀘스트 데이터를 원하는 영역에 포함해야 했습니다.
어플 자체에는 격전의 아제로스를 특별히 지원하기 위해 확장된 여러 요소가 있습니다. 군단에서 어플은 특별히 여러분의 연맹 자원을 요청했습니다. 격전의 아제로스에서는 단순히 그 메세지에 전쟁 자원을 추가했습니다. 어둠땅에서는 동일한 메세지에 더 많은 화폐를 계속 추가하는 대신 PC 클라이언트의 전체 화폐 시스템을 격전의 아제로스 용으로 개발된 새로운 공유 코드 프레임 워크로 이식하기로 결정하였습니다. 즉, 모든 확장팩은 이제 우리가 원하는 화폐를 수동으로 지정하지 않고, 스스로 화폐를 자동으로 요청할 수 있습니다.
(*작업 전 - 어플이 특정 화폐를 요청합니다.)
(*작업 후 - 각 확장팩의 자체 화폐를 요청할 수 있습니다. 어둠땅에서 화폐 시스템을 사용하는 애드온의 모습과 익숙해 보입니다. 이는 와우 어플이 메인 게임과 기능을 공유할 수 있도록 허용하는 공유 프레임 워크 때문입니다.)
UI 코드.
격전의 아제로스 확장팩을 지원하기 위해 작성된 코드 중 상당수는 기존 군단 코드 위에 작성되었기에, 어떤 코드가 활발하게 사용되었는지 찾기는 어려웠습니다. 예를 들어, 격전의 아제로스 추종자 목록에는 여전히 추종자 템렙 기능이 있지만, 이 기능이 숨겨져 보이지는 낳습니다. 군단과 격전의 아제로스 확장팩의 기능은 큰 문제가 아닐정도록 유사하지만, 우리는 어둠땅에 추가하는 새로운 기능이 그런 종류가 아니기에 이런 작업으로 유지할 수 없다는 것을 알고 있습니다. 군단 및 격전의 아제로스와 공유되는 코드가 갑자기 영혼결속 및 성약의 단과 같은 것들으루 지원해야했다면 이미 그랬던 것보다 더 복잡해질 것입니다.
대신, 우리는 각 스크립트를 살펴보고 어떤 기능이 공유되고 어떤 기능이 각 확장팩의 고유 요소인지를 파악했습니다. 확장팩 관련 코드를 하위 분류 또는 완전히 새로운 분류로 분할하여 상위 분류에서 공유된 기본 기능만 유지하고 새 하위 분류를 사용하여 각 확장팩에 대해 새로운 게임 요소를 만들었습니다. 이제 동일한 시스템의 지원을 받고 대부분의 기능을 공유하더라고, 군단 임무에만 템렙이 뜨고 다른 두 확장팩에는 이 기능이 제거되는 작업을 같이 수행할 수 있습니다. 군단과 격전의 아제로스가 사용하는 임무 유형 아이콘 대신 적의 초상화를 표시하게 디자인하기도 하였습니다.
(*군단 임무 리스트와 어둠땅 모험 리스트 비교.)
어둠땅용 어플에서 진행되는 또 다른 중요한 변경 사항은 데이터베이스 파일을 생성하는 방식입니다. 어플은 이제 PC와 동일한 파이프 라인을 사용하여 데이터베이스 코드와 데이터 파일을 작성합니다. 이 기능이 편리하게 사용된 곳 중 한 곳은 바로 전역 퀘스트가 뜨는 지도를 고르는 코드입니다. 이 어플은 원래 각 지도 IC에 대한 수동적인 구조를 사용하여 결정을 내렸는데, 부서진 섬과 아르거스까지는 문제가 없었습니다. 하지만 격전의 아제로스에서 더 많은 지역이 추가됨에 따라 금세 문제가 생겼습니다. 어둠땅에서 해당 코드를 계속 유지하는 시스템을 대신하여 시스템을 완전히 동적으로 만드는 UI 맵 데이터베이스 테이을블 쉽게 가져올 수 있었으며, 새 확장팩 모두에 대한 영역을 처히하는 수 많은 코드를 단일 코드로 변경할 수 있었습니다. 확장팩 전용 구조는 없고 모든 전역 퀘스트를 자동으로 처리할 수 있는 슬림할 기능입니다.
데이터 관련.
모바일과 PC 개발의 가장 큰 차이점 중 하나는 모바일에서 플레이어의 데이터 연결이 좋지 않은 셀룰러 연결을 할 수 있다는 점입니다. 플레이어가 인터넷 연결에 과계없이 어플을 사용하는 동안 불편함이 없이 즐거운 경험을 할 수 있어야 하며, 이를 수행하는 방법 중 하나는 플레이어가 어플을 사용하기 위해 다운로드해야하는 데이터 양을 줄이는 것입니다.
각 확장팩에는 추가되는 많은 데이터가 있는데, 군단 및 격전의 아제로스 용 어플(확장팩 1개 지원)에서 어둠땅 용 어플(확장팩 3개 지원)으로 변경되면 어플에 필요한 데이터량을 3개가 될 것입니다. 그러나 고해상도 세계 지도, 임무 위치 및 배경, 추종자 및 적의 초상화와 같은 많은 데이터는 각 확장팩에만 사용되므로 이러한 데이터를 각 확장팩에 대해 다른 번들로 분리하기로 결정하였습니다. 이렇게 하면 어플은 현재 활성화된 확장팩에서 사용하는 메모리로 데이터를 불러오기만 하면 되기에 어플에 사용하는 용량을 줄일 수 있습니다.
또한 우리르 각 확장팩을 자체 게임 씬으로 분리하기로 결졍하였습니다. 이를 통해 확장팩 간 기능을 깔끔하게 분리할 수 있습니다. 군단 게임씬에서는 성약의 단과 관련된 페이지가 필요하지 않으며, 어둠땅 게임씬에서는 군대 모집 창이 없습니다. 우리가 코드를 변경한 것처럼, 이렇게 하면 주어진 시간에 어플에서 일어나는 모든 일을 훨씬 쉽게 파악할 수 있습니다. 이와 같이 데이터와 게임 장면은 모두 분할하여 각 확장팩에 자체적으로 포함되어 있는 사용자 친화적인 다운로드 환경을 만드는 길을 열었습니다.
우리는 플레이어들이 어플에 데이터를 다운로드해야할 시기를 더 잘 제어할 수 있도록하고 싶었습니다. 안정적인 연결 상태일 때 모든 것으 한번에 다운로드하게 선택하게 하여 나중에 다른 확장팩 어플도 더 빠르게 들어갈 수 있습니다. 특정 확장팩과 상호작용하지 않기를 선택하면 해당 확장팩 데이터 다운로드를 건너뛰어 다운로드받지 않을수도 있습니다. 확장팩 당 30~40MB의 데이터를 건너뛸 수 있어서 상당한 데이터 량입니다.
(*각 확장팩 다운로드를 분히하면 다운로드 시간이 짧아져서 플레이하기 윤택해집니다.)
파이프 라인 변경.
확장팩 별로 데이터를 분할하려면 파이프 라인의 두 부분을 변경해야했습니다. 데이터 분류 및 분배 도구는 어떤 데이터가 어떤 확장팩에 속하는지 알아야 하고, 데이터 일괄 생성 도루는 최종 번들을 만들 때 데이터를 그룹화할 수 있어야 했습니다. 데이터 분류 및 분배 도구는 군단과 격전의 아제로스를 지원하기 위해 매우 전문화되었기에 더 확장팩 무관 코드를 만들기 위해 다시 마들어야 했습니다. 새 버전은 와우 어플이 원하는 콘텐츠가 포함된 확장팩 목록을 살펴모고 각 확장팩에 대한 데이터를 별도의 폴더로 출력합니다. 전체 확장팩 목폭을 사용하도록 데이터 분류 및 분배 도구를 수정항에 따라 향후 해당 목록에 추가되지 않은 모든 값이 자동으로 선택되어 작업되므로 툴을 계속 업데이트하지 않고도 와우 어플에 새 콘텐츠를 쉽게 추가할 수 있습니다.
데이터 뷴류 및 분배 도구와 런타임 로딩은 터이터의 목록 변형 기능을 많이 사용하므로, 어플에서 단일 목록 파링릐 여러 버전을 동일한 목록이 것처럼 처리할 수 있습니다. 목록 생성 파이프 파인은 분류 및 분배 도구에서 출력한 확장팩 관련 폴더를 기반으로 각 확장팩에 대한 각 목록의 다른 변형을 만듭니다. 이 데이터 목록은 어플에서 확장팩을 전환할 때마다 런타임에 교체됩니다. 목록을 모든 변형이 동일하게 처리될 수 있습니다. 예를 들어 추종자 초상화를 가져와야 하는 코드는 현재 불러온 특정 추종자 초상화를 깔끔하게 불러올 수 있습니다. 이는 데이터 불러오기 및 불러오지 안힉 코드가 너트와 볼트같이 서로를 보완하기에 가능합니다. 각 확장책은 어플에서 유일한 확장팩같아 보이게 되는 셈이죠.
어둠땅으로.
어움땅에서 새로운 모험 콘텐츠 뿐 아니라 군단, 격전의 아제로스 필드에서 레벨업을 하는 유저들을 위해 새로운 콘텐츠를 제공할 수 잇다는 점에 매우 만족스럽습니다. 이것은 우리가 단지 지금한 작업이 아니라 차후 와우의 미래를 위해 준비할 수 있는 작업입니다.
(IP보기클릭)220.76.***.***
드군때는 보물사냥꾼특성 맞춰서 임무 보내면 짭짤하게 골드가 벌렸지만 세팅이 귀찮은 부분이 있었지만 격아때는 말그대로 퍼주는 수준이었죠..시간제 끊어놓고 다캐릭 임무만 보내는 사람도 부지기수. 이때문에 시간제가 없어졌다는 썰이 있는정도고... 격아는 확실히 덜 퍼준다고 느껴짐돠...
(IP보기클릭)175.223.***.***
(IP보기클릭)220.76.***.***
Esper Q.LEE
드군때는 보물사냥꾼특성 맞춰서 임무 보내면 짭짤하게 골드가 벌렸지만 세팅이 귀찮은 부분이 있었지만 격아때는 말그대로 퍼주는 수준이었죠..시간제 끊어놓고 다캐릭 임무만 보내는 사람도 부지기수. 이때문에 시간제가 없어졌다는 썰이 있는정도고... 격아는 확실히 덜 퍼준다고 느껴짐돠... | 20.09.16 09:22 | |
(IP보기클릭)211.51.***.***
뭐 북미는 최신 확팩 안 하는 사람도 많을테니 그거 지원용 아닐까요..? | 20.09.16 09:33 | |
(IP보기클릭)222.100.***.***
격아가 아니라 군단때 퍼주던거 | 20.09.16 10:07 | |
(IP보기클릭)220.76.***.***
흡...왜 격아라 썼을까요;;ㅠㅠ; | 20.09.16 17:30 | |
(IP보기클릭)14.34.***.***
군단은 탈것얻으려고 격아 이후로도 주마다 계속 임무돌려서 계귀 평판템 얻어놓는데 나쁘진 않더라구요. 지금 창고 절반이 가득차잇는 상태긴합니다만 ㅋ | 20.09.16 18:06 | |
(IP보기클릭)106.102.***.***
(IP보기클릭)61.72.***.***
(IP보기클릭)211.108.***.***