망할 놈의 불타는 마을

전에 퍼시스턴트 월드에서 개인화된 경험에서 MMO 게임을 만들면서도 플레이어들이 퍼시스턴트 월드에서 어느 정도 개인화된 경험을 하게 만드는 방법과 사례에 대해 설명한 적이 있습니다. 게임에 따라 조금 다르긴 하지만 퍼시스턴트 월드는 MMO 게임에서 사실상 모든 플레이어가 공유하는 공간이어서 개인에 따라 다른 경험을 하게 만들기는 쉽지 않습니다. 애초에 초기 MMO 장르는 모두가 한 세계에 모여 같은 경험을 하기를 원하는 목표로 만들어진 장르여서 개인화된 경험 부여 필요를 느끼지 못하거나 그런 필요를 느꼈다고 해도 아주 소극적으로 접근하곤 했습니다. 그러다가 인스턴스 월드를 적극적으로 활용하면서 MMO 장르에서도 플레이어 개인이나 파티 단위로 개인화된 경험을 편안하게 부여할 수 있게 됩니다.

하지만 처음 상상했던 MMO 장르에서 개인화된 경험은 이렇게 나와 내 파티가 퍼시스턴트 월드로부터 완전히 분리된 공간에서 하는 것은 아니었습니다. 어느 도시에 원래는 대장장이 NPC가 없었지만 내가 퀘스트를 플레이 해서 대장장이를 도적단으로부터 구출해 오면 그 시점부터 도시에 대장장이 NPC가 생기는 식으로 다른 플레이어와 공유하는 공간에서도 나 자신의 진행에 따라 개인화된 경험을 원했습니다. 방금 설명한 이런 시나리오는 현대 MMO 게임에서 쉽게 볼 수 있는 장치이지만 고작 NPC 한 명의 유무 정도가 퍼시스턴트 월드에서 마음 편히 할 수 있는 개인화된 경험의 대부분이기도 합니다.

좀 더 세계에 본격적인 변화를 주고 싶을 때 퍼시스턴트 월드에서는 한계가 있습니다. 가령 이동경로를 파괴하는 던전 연출에 대해서 설명한 것처럼 인스턴스 안에서 내 플레이에 의해 기존의 이동 경로가 파괴되는 방식으로 세계에 큰 변화를 주고 싶지만 이를 다른 사람들과 공유되는 퍼시스턴트 월드에서 달성하기는 아주 어렵습니다. 당장 내가 없애버린 다리를 건너 플레이 해야 하는 사람들은 어떻게 할 것이며 동시에 여러 사람이 같은 퀘스트를 플레이 하고 있으면 어떻게 해야 할 지, 내가 부순 다리를 다시 부수려는 퀘스트를 가진 사람이 나타나면 어떻게 해야 할 지 등 같은 세계, 같은 차원에서는 사실상 해결할 수 없는 문제에 가깝습니다.

이런 한계에도 여전히 MMO 게임의 퍼시스턴트 월드에서 개인화된 경험을 부여하려는 시도는 계속되어 퀘스트를 수행 중인 사람에게만 보이는 물체나 NPC, 퀘스트를 수행 중인 사람에게만 보이는 보스 몬스터는 이 사이에 일어날 수도 있는 온갖 문제를 감수하고 아슬아슬하게, 하지만 본격적으로 여러 게임에서 활용되고 있습니다.

가령 퍼시스턴트 월드에서 도적단을 추적해 결국 도적단 우두머리 몬스터와 전투를 해야 하는 상황이라고 합시다. 도적단 본거지는 퍼시스턴트 월드에 위치하고 있어서 평소에 누구나 드나들며 도적단 몬스터와 전투 할 수 있는 곳인데 갑자기 이 곳에 보스 몬스터가 나타난다면 퀘스트를 통해 보스를 불러낸 플레이어의 바램과 달리 이 보스는 다른 사람들에 의해 순식간에 녹아 버릴 수도 있습니다. 어쩌면 보스 스테이지를 쉽게 클리어 했으니 이득이라고 생각할 수도 있지만 또 다른 플레이어는 기대한 보스 스테이지가 순식간애 맥없이 끝나버린데 실망할 수도 있습니다. 또 개발자 입장에서도 이 보스전에는 일정 수준의 성장을 요구해 허들로 사용하려고 했는데 다른 플레이어들에 의해 허들이 무력화되면 게임 전체의 성장 경험을 구축하는데 심각한 어려움을 겪게 됩니다.

그렇다고 도적단 본거지를 인스턴스 던전 모양으로 만들기에는 컨텐츠가 충분하지 않아 난처한 상황입니다. 도적단 몬스터를 여럿 만들기는 했는데 다들 인간형으로 실은 조금씩 다른 몬스터이지만 게임을 플레이 하며 실루엣을 통해 몬스터를 인식하는 입장에서는 보스를 포함해 던전 안에 모두 똑같이 생긴 몬스터들만 나와 던전이 재미있게 느껴지기 어렵습니다. 그렇다고 도적단 본거지를 퍼시스턴트 월드에 배치하면 위에서 이야기한 서로의 경험이 뒤섞여 퀘스트 플레이어는 기대한 경험을 하지 못하고 경험치나 좀 먹으러 온 플레이어는 예상하지 못한 보스를 갑자기 맞닥뜨려야 하며 개발자는 허들을 통한 성장 경험을 구축할 수 없게 되어 그 누구도 행복하지 않은 상황이 됩니다.

이런 상황과 요구사항을 좀 더 적극적으로 해결하는 방법에는 인스턴스 월드를 사용하되 인스턴스 월드를 굳이 던전 모양으로 거창하게 만들지 않고 아주 작은 영역만 인스턴스 월드로 만드는 방법이 있습니다. 실은 흔히 알고 있는 인스턴스 던전과 완전히 똑같고 그냥 크기가 좀 작을 뿐입니다. 위 도적단 시나리오에서 퀘스트 진행에 따라 도적단 보스를 만난 플레이어는 전투를 시작하기 직전에 인스턴스 월드로 이동해 그 안에서만 나타나는 보스와 전투를 하고 이 퀘스트를 수행하지 않는 플레이어들은 보스가 없는 나름 평화로운 도적단 본거지에서 예상한 전투를 벌이며 경험치를 먹을 수 있게 됩니다. 대략 모두가 행복한 것처럼 보이고 또 게임 대부분이 같은 방법을 사용하고 있지만 이 방법이 적극적으로 활용되면서 이 게임은 그럴싸한 경험 대부분을 인스턴스 월드에서 하고 퍼시스턴트 월드에서는 그저 다른 사람들을 잠깐 씩 스쳐 지나가는 모양으로 변해 장르도 MMO이고 기술적인 요구사항도 MMO 게임이지만 그 경험은 MMO 스럽지 않은 상태가 됩니다.

일단 인스턴스 월드를 적극적으로 활용하게 된 다음부터 중세 판타지 배경의 MMO 게임에 항상 등장하는 요소는 바로 퀘스트 진행에 따라 경험할 수 있는 불 타는 마을입니다. 평소에는 멀쩡했지만 퀘스트 진행에 따라 누군가가 쳐들어와 마을을 공격해 불을 질러 구조는 이전과 똑같지만 생김새가 완전히 달라지고 또 이전에는 전투가 없는 마을이었지만 이번에는 같은 배경과 구조에서 전투를 하는 경험을 할 수 있습니다. 누가 맨 처음 시작했는지는 잘 모르겠지만 정신 차리고 보니 어지간한 메인 퀘스트를 밀어야 하는 MMO 치고 불 타는 마을이 등장하지 않는 게임이 드물 정도입니다. 퀘스트를 통해 마을에 쳐들어 온 누군가와 전투를 벌여 승리하고 퀘스트를 마무리하고 나서 다른 곳에 갔다 돌아오면 온 마을이 불타며 완전히 박살 났던 마을이 순식간에 이전과 똑같이 재건 되어 있어 이 시대의 건축 기술력이란 얼마나 대단한가 하는 놀라움을 느끼기도 합니다.

게임마다 불타는 마을을 만들어내는 방법은 조금씩 다르겠지만 흔한 방법은 마을 레벨을 최소 두 개 이상 만드는 겁니다. 하나는 멀쩡한 마을, 다른 하나는 불 타는 마을입니다. 멀쩡한 마을은 전투 할 수 없고 여러 기능 NPC가 있고 퍼시스턴트 월드로 설정되어 서로 다른 플레이어들을 볼 수 있지만 불 타는 마을은 던전 설정이어서 전투할 수 있고 몬스터가 나타나며 건물에 불이 붙어 있고 마을 곳곳에 이전에 없던 바리케이트가 쳐져 있어 동선을 제한해 던전 경험과 비슷해지며 마지막으로 불을 효과적으로 보여주기 위해 대부분 배경이 밤입니다.

이들을 서로 분리된 레벨로 만들면 만들 때는 별 일이 없지만 이들을 유지보수하기는 힘들어지는데 개발을 진행하면서 마을 구조를 바꾸면 이를 불타는 마을에도 똑같이 반영해야 하는 부담이 생깁니다. 만약 멀쩡한 마을 담당과 불타는 마을 담당이 서로 다른 사람이라면 어느 날 테스트에 멀쩡한 마을에 새로 생긴 건물이 불 타는 마을에는 아예 빠져 있어 이를 수작업으로 다시 맞춰야 하기도 합니다.

여러 문제를 완화하기 위해 사용하는 방법에는 두 마을을 같은 레벨에 만들되 탑뷰 상에서 두 마을이 정확히 일치하게 만들되 옆에서 보면 두 마을이 서로 다른 높이에 위치하게 만드는 것이 있습니다. 일단 같은 마을의 두 상태가 같은 레벨 에셋에 들어 있으니 위에서 소개한 수정할 때 어느 한 쪽 수정을 빠뜨릴 가능성이 줄어듭니다. 레벨 에셋이 하나이니 같은 마을의 두 가지 상태를 담당할 사람이 서로 다른 사람으로 나뉠 가능성이 확실히 줄어들고요. 또 탑뷰에서 볼 때 두 마을은 완전히 같은 위치에 있어 상황에 따라 미니맵을 공유하는 등 자잘한 귀찮음을 줄일 수 있습니다.

반면 두 레벨의 높이가 충분히 멀리 떨어져 있지 않으면 두 레벨이 서로 영향을 주고 받아 오동작을 일으키기도 하는데 가령 어느 한 쪽 레벨에 설치한 이벤트 볼륨 높이가 너무 높아 다른 한 쪽 레벨에 나타나 엉뚱한 이벤트를 일으키거나 바닥에 붙여 놓은 스폰포인트에 나타날 몬스터가 플랫폼마다 조금씩 다른 좌표 정밀도 때문에 바닥에 빠져 다른 레벨에 나타날 수도 있습니다. 그냥 다른 레벨에 나타나기만 하면 다행인데 다른 레벨에서 몬스터가 이동하거나 소리라도 내면 게임이 순식간에 호러 장르로 바뀝니다.

또 다른 방법으로는 언리얼 기준으로 서브레벨을 만들어 같은 레벨 에셋 안에 두 레벨이 서로 같은 좌표를 공유하게 만들고 어느 서브레벨을 로딩하는지에 따라 같은 마을의 불 난 상태와 멀쩡한 상태를 구분할 수도 있습니다. 모든 서브레벨을 다 켜 놓으면 아수라장이 되겠지만 정신 바짝 차리고 작업하면 앞에서 일어났던 두 마을의 건물이나 환경이 어긋나는 문제를 근본적으로 방지할 수 있습니다. 같은 공간에 나타날 NPC와 몬스터가 서로 다른 시점에 나타나고 이들이 같은 공간에 기반해 배치되므로 어색하게 스폰되거나 위에 설명한 정밀도 문제 같은 이상한 일을 겪지 않아도 됩니다. 하지만 한 번에 어느 레벨들을 활성화 해야 같은 상황을 만들 수 있는지 정교한 약속을 만들어야 하고 작업에 참여하는 모든 사람들이 이 약속에 따라 행동해야 하므로 이 역시 만만하지는 않은 방법입니다.

한편 이런 모든 귀찮음에도 불구하고 망할놈의 불 타는 마을은 같은 공간의 서로 다른 상태를 극명하게 구분해 보여줄 수 있는 방법으로 사랑 받아 왔고 앞으로도 그럴 것 같은데 이번 디아블로에서도 또 다시 멀쩡한 마을에 불을 질렀습니다. 퀘스트를 따라 마을에 들어가자 마자 ‘아 또. 이 망할놈의 불 타는 마을’이라고 말할 수밖에 없었습니다. 그런데 이번 디아블로 4에서 불 타는 마을에 흥미로운 점은 이 인스턴스 공간을 로딩을 통해 구분하지 않았다는 점입니다. 앞에서 도적단 보스 사례를 설명할 때 도적단 보스와 전투하기 직전에 퀘스트를 수행하는 플레이어 한 명을 인스턴스 공간으로 옮겨 전투를 하게 만들고 이 때 환경변화는 없게 하는 수준은 흔히 사용하곤 하지만 환경을 바꾸면서도 로딩이 없을 수 있는 건 흥미롭습니다.

퍼시스턴트 월드에서 플레이 하는 사람 관점에서는 내 옆을 지나 마을로 들어가던 사람이 갑자기 사라지는 것처럼 보일텐데 이 때 눈에 띄는 로딩 없이 불 타는 마을 환경을 경험하도록 하는 것은 이전에 다른 게임에서 기술적인 귀찮음으로 여간해서 시도하기 어려웠습니다. 그냥 까놓고 말해 이런 거 하자고 하면 굳이 그렇게 까지 해야 하는 이유를 책 한 권 분량으로 서술해 가도 될까 말까 했기 때문에 굳이 그러는 대신 보기 나쁜 포탈을 배치해 그 지점을 클릭하면 다른 환경으로 이동하게 만들곤 했습니다. 이 주제로 엔지니어들을 설득하기는 극도로 어려웠지만 이제 디아블로에서 했으니 더 이상 설득할 필요가 없어질 거란 점은 상당히 마음에 듭니다.

물론 디아블로라고 해서 이 경험을 완벽하게 매끄럽게 만들지는 못했는데 종종 서버 응답이 늦어지면 로딩 없이 바로 달려가야 할 것 같은 변화하는 환경의 경계선에서 뭔가에 부딪친 채 앞으로 나아가지 못하는 상황이 일어나기도 합니다. 하지만 근본적으로 이들은 환경 변화를 체험하는데 로딩을 거치지 않고 대체로 매끄럽게 동작하도록 만들어 망할놈의 불타는 마을을 이전과 똑같이, 그러면서도 이전에 비해 훨씬 발전된 경험으로 만들었습니다.

결론. MMO 게임에서 개인화된 경험은 인스턴스 던전에서 환경 변화 없이 소극적으로 사용하는 퍼시스턴트 월드로 변했고 게임에 따라 퍼시스턴트 월드에서 물체나 NPC 스폰을 제어해 환경을 조금 바꾸기도 했습니다. 시간이 지나며 적극적인 환경 변화는 인스턴스 던전 안에서 마음 놓고 만들어냈는데 새 디아블로에서는 인스턴스 전환 과정에 로딩을 없애 서버가 충분히 받쳐 준다면 이 경험이 매끄럽습니다. 하지만 여전히 중세 판타지에서 같은 공간의 서로 다른 환경을 보여주는 방법이 너무 뻔한 점은 좀 아쉽습니다.