채집 오브젝트 생성 간격
인게임에 채집 오브젝트를 배치한 다음 각각의 리스폰 타임을 설정해야 한다면 무엇을 근거로, 어떻게 이 시간을 구해 설정해야 할까요?

요즘 구글이 구글 서치 콘솔을 통해 저에게 알려주는 검색어에 이전보다 큰 관심을 가지고 있습니다. 이전에는 오직 제가 생활하다가 문득 생각난 주제를 메모해 뒀다가 글을 쓰고 또 제가 쓰고 싶은 주제가 생기면 이를 한동안 고민하다가 어느 정도 이야기를 풀어 갈 수 있을 정도의 수준에 도달하면 생각을 계속하며 글을 쓰기도 했습니다. 한동안은 글 쓸 거리가 거의 바닥나 주변 사람들에게 뭐 글 쓸만한 주제를 던져 달라고 요청했던 적도 있는데 이 시도는 별로 성공적이지 못했습니다. 사람들 대부분은 글을 쓰지 않을 뿐 아니라 글 쓸 거리를 생각하고 있는 사람은 더더욱 적습니다. 그나마 글 쓸 거리를 생각하고 있는 사람이 있다 하더라도 그 사람이 생각한 주제는 보통 제가 생각하는 주제와는 거리가 너무 멀어 주제를 듣고 주제의 의도를 이해했지만 이 주제를 바탕으로 실제 생각을 하고 글을 만들어내는 일은 완전히 다른 일이었습니다. 사람들마다 경험이 다르고 생각이 다르며 의견 역시 다를 수밖에 없다는 사실을 깊이 이해하지만 그런 차이를 딛고 다른 사람이 제시해 준 주제에 대해 글을 만드는 일은 상상을 초월하도록 어려운 일이라는 점을 배웠습니다. 이 실험을 할 때 다른 분으로부터 받은 주제로 작성한 글에는 인도로 달리는 따릉이, 디지털 쓰레기는 과연 쓰레기로 정의해야 할까?, 몬스터 네임플레이트 정보수준 조절의 세 가지가 있는데 셋 모두 제가 바닥부터 생각을 시작하지 않았기에 지금 살펴보면 이게 도대체 무슨 소리인가 싶습니다. 게다가 디지털 쓰레기 이야기는 지금 보면 완전히 무슨 소리인가 싶어 생각을 완전히 다시 한 다음 디지털 쓰레기란 없다를 작성하기도 했습니다.
지라와 컨플루언스의 차이 역시 구글 서치 콘솔로부터 여러 유입을 관찰했는데 구글이 이 검색어와 관련이 있을 거라고 생각해 제시한 페이지들은 그다지 이 주제를 잘 설명하고 있지 않았기 때문에 아예 검색어를 제목 삼아 제가 생각하는 이 검색어에 대한 답변을 작성했습니다. 비록 숏폼 블로그 실험에 조금 설명한 대로 검색어를 제목 삼아 제 생각을 적은 글은 검색을 통한 유입 개선에 별 도움을 주지 못합니다. 아무리 검색어의 의도를 추측해 의도에 일치하는 글을 작성한다 하더라도 글 길이가 너무 길고 또 글 전체가 읽기 힘들어 보이는 줄글 모양이어서 원하는 정보를 발견하는데 시간을 얼마나 써야 할 지 잘 예측하기 어렵다면 아무리 의도에 맞는 정보를 제공한다 하더라도 방문이 일어나지 않는다는 현대에 너무나 당연한 사실을 꽤 긴 시간을 들인 다음에야 깨달았습니다. 그래서 얼마 전부터는 검색어의 의도를 추측할 수 있는 글은 그 의도를 정확히 설명하는 아주 짧은 글을 만드는 실험을 하고 있고 이 이야기를 숏폼 블로그 실험에 소개했습니다. 통계 상으로는 긴 글을 보고 즉시 튕겨 나가는 모양과 숏폼 블로그 글을 보고 정보를 획득한 다음 튕겨 나가는 모양을 서로 잘 구분할 수 없다는 한계가 있고 또 검색엔진이 같은 검색어에 대응하는 정보 밀도가 낮은 긴 글과 정보 밀도가 높은 짧은 글 중 글 길이가 긴 쪽을 검색 결과 상위에 올려주는 모습을 보고 구글이 생각보다 똑똑하지 않다는 사실을 알게 됩니다. 하지만 여전히 방문 즉시 ‘튕겨지는’ 모습이더라도 구글 검색 결과에 더 낮은 우선순위의 글이라도 여전히 유입이 일어나는 일은 고무적이라고 보고 있습니다.
한편 이 글의 제목인 ‘채집 오브젝트 생성 간격’ 역시 유입 검색어에 표시된 것인데 이 검색어는 누가 사용했느냐에 따라 의도를 상당히 달리 해석할 수 있습니다. 물론 고객이 이런 언어를 잘 사용할 거라고 추측하기는 쉽지 않지만 만약 고객이 이 검색을 시도했다면 특정 게임의 필드에 등장하는 어떤 채집 오브젝트가 있고 이 오브젝트가 어느 정도 시간 간격마다 생성되는지 파악하고 싶었을 수 있습니다. 하지만 고객 관점에서 보다 정확한 결과를 얻기 위해서는 정확한 게임 이름과 정확한 채집 오브젝트 이름을 포함해서 검색했어야 합니다. 어떤 게임의 무슨 필드에 나오는 산삼을 캐야 하는데 아무리 기다려도 생성되지 않아 기다리다 못한 고객이 도대체 얼마나 기다려야 산삼이 나타나는지 궁금해서 검색한 것일 수 있고 이 경우 정확한 이름과 상황을 언급해야만 간신히 원하는 결과를 찾을 수 있을 것입니다. 또 경험 상 어지간한 게임 관련 커뮤니티는 재미있게도 검색을 거의 허용하지 않기 때문에 이 사실을 알고 있다면 차라리 자신이 플레이 하는 게임의 가장 큰 커뮤니티에 가입해 검색해 보는 쪽이 나을 수 있습니다. 물론 이번에는 어지간한 커뮤니티 시스템의 검색 기능은 놀라울 정도로 낡았기 때문에 구글에 검색하는 것처럼 검색을 시도했다가는 분명 그 정보를 정확히 언급한 글이 있음에도 발견할 수 없을 가능성이 높습니다. 있으나 마나 한 검색을 유지하느니 구글 검색을 허용하는 편이 장기적으로는 더 이익일 것 같지만 그런 생각을 커뮤니티 운영자 관점에서 하기는 쉽지 않을 겁니다.
자. 이번에는 글 제목인 ‘채집 오브젝트 생성 간격'이라는 검색어를 고객이 아니라 저와 비슷한 동업자가 입력했다고 가정하면 이제부터는 완전히 다른 이야기를 시작할 수 있습니다. 만약 저와 비슷한 동업자가 ‘채집 오브젝트 생성 간격’이라고 구글에 검색했다면 일단 이 사람은 꽤 절박한 상황일 수 있습니다. 있을법한 시나리오를 상상해보면 게임회사에서 일하기 시작한지 썩 오래 되지는 않은 사람에게 갑자기 소위 ‘밸런스'라고 부르곤 하는 게임의 여러 가지 숫자를 결정해야 하는 업무가 맡겨졌을 수 있습니다. 게임에 표시되거나 내부에서 동작할 때 필요한 여러 가지 숫자를 설정해 게임의 플레이 경험을 만들어내는 일을 보통 ‘밸런스’라고 부르곤 합니다. 이 역할을 맡은 사람은 여러 숫자를 결정해야 하므로 숫자에 밝은 사람일 필요가 있지만 또 한편으로는 자신이 설정한 숫자에 근거해 동작하는 게임을 직접 만져보고 일단 자신의 의도대로 동작하는지 파악하기 위한 적당한 감각이 필요합니다. 이는 마치 최근 인공지능 분야의 연구에서 개발, 테스트, 결과반영의 이터레이션 과정을 서로 다른 사람에게 분산 시키기 어려운 것과도 비슷합니다. 최근의 인공지능 연구 방식에 대한 소문을 들어보면 회사에서 가장 뛰어난 사람들을 불러다가 인공지능 개발 및 튜닝을 시키는데 이들은 이전 같으면 요구사항에 맞춰 개발한 다음 파이프라인에 따라 자기 다음에 있을 테스터들에게 테스트를 맡기고 이들이 발견한 결함을 해결하는 식으로 일해 왔습니다. 그런데 인공지능 연구는 테스터가 인공지능 모델의 반응을 테스트하며 이 결과가 어떤 튜닝에 의한 영향일지 스스로 판단할 수 있어야 하고 또 결과를 개선하기 위해 무엇을 수정해야 할 지 스스로 판단할 수 있어야 합니다. 만일 이 과정이 여러 사람으로 나뉘어 있다면 인터레이션이 느려질 수밖에 없고 각자의 지식 수준이 달라 이터레이션 결과도 그리 훌륭하지 않을 겁니다. 그래서 스스로 모델을 설계하고 튜닝하고 실험을 통해 가설을 검증한 다음 다시 이를 개선하는 이터레이션 과정 전체를 같은 사람이 담당하도록 한다고 합니다.
밸런스 역시 이와 비슷한 측면이 있습니다. 종종 무책임한 밸런스 담당자들은 직접 구축한 아름다운 엑셀 정원으로부터 도출한 숫자들을 여러 테이블에 입력해 놓고 그저 다른 사람들의 플레이를 지켜보기만 하는 경우도 있습니다. 이들은 테스트를 통해 어느 부분이 너무 어렵거나, 한동안 성장감을 전혀 느낄 수 없거나 무기를 다음 단계로 성장 시키는 과정에 같은 던전을 너무 반복해서 돌아야 하기 대문에 지겹다는 피드백을 받곤 하는데 이 각각의 피드백을 그저 각각의 문제로 정의한 다음 이를 하나하나 해결하는데 집중하곤 합니다. 하지만 현대에 MMO를 기반 장르로 삼은 여러 게임들은 적어도 우리들 같은 보통 수준의 사람들이 보기에 그 모든 동작을 예측하기에는 상당히 복잡한, 우리들 같은 보통 수준의 사람들 관점에서 복잡계 문제에 가까운 문제를 풀고 있습니다. 때문에 피드백 모두를 받아들여 문제로 정의한 다음 문제 각각을 해결하려고 하면 당장은 문제 각각을 해결할 수는 있습니다. 가령 특정 구간에서 무기 성장에 시간이 너무 오래 걸린 나머지 던전을 지겹게 여러 번 돌아야 한다는 피드백은 그냥 그 던전에서 드랍되는 무기 성장 재료를 던전을 한 두 번만 돌면 얻을 수 있는 수준으로 늘리면 즉시 문제를 해결할 수 있습니다. 또 어느 구간에서는 한동안 성장감을 전혀 느낄 수 없다면 그 구간에 플레이 해야 하는 던전 내 몬스터들로부터 획득할 경험치를 상향하는 식으로 문제를 해결할 수 있습니다. 이전 시대처럼 플레이 대부분이 퍼시스턴트 월드에서 일어난다면 이런 조치를 하기 쉽지 않지만 현대와 같이 플레이 대부분이 인스턴스 월드에서 일어난다면 상대적으로 이런 조치에 훨씬 적은 파급효과를 감수할 수 있습니다.
하지만 아무리 그렇다 하더라도 여전히 기반 장르를 MMO로 삼은 이상 보통 사람 수준에서는 거의 복잡계 문제처럼 느껴지는 시스템을 대상으로 피드백 하나하나를 문제로 정의해 이들을 해결해 나가다 보면 밸런스 담당자인 자신에게 할당된 지라를 모두 해결할 수는 있겠지만 테스트 과정에서 이전에는 발생하지 않던 또 다른 문제들을 맞닥뜨리게 됩니다. 분명 지난 수정 이전에는 특정 구간에 성장 재료 아이템이 딱 적당히 드랍 되던 상황이었는데 지난 수정 이후에는 그 수정에 의해 해결된 결함은 이제 재현되지 않지만 이제부터는 재료 아이템이 너무 많아져 의도한 성장 속도와 차이를 만들 수 있습니다. 특히 이런 이터레이션을 수행할 때 밸런스 디자이너가 자신이 구축한 아름다운 엑셀 장원으로부터 숫자를 꺼내 게임에 적용한 다음 실제 게임을 직접 만져보지 않는 이상 의도 반영은 커녕 자신의 숫자들이 올바르게 반영되어 동작하고 있는지 여부조차 알 수 없게 됩니다. 또한 실제로 게임을 만져보고 적절한 성장 감각을 느끼지 않는 이상 직접 구축한 아름다운 엑셀 정원이 정말 아름다운지 아니면 겉보기에만 아름답고 사실은 요구사항을 전혀 반영하지 못하는 통제 불가능한 수식 뭉치인지 판단할 수도 없습니다. 사실 이 지경이 되면 거의 항상 정원인 줄 알았던 엑셀은 사실 통제 불가능한 수식 뭉치이곤 합니다. 이런 어려움을 여러 사람들이 알고 있고 또 자신이 스스로 밸런스 디자인을 할만한 자질을 갖추고 있다고 당당하게 말할 수 있는 담력을 가진 사람들은 많지 않기에 밸런스 디자인을 담당할 사람을 찾기는 결코 쉽지 않습니다. 숫자에 밝은 사람, 웬만하면 산수를 좀 할 수 있는 사람, 엑셀 정원을 가꿀 줄 아는 사람을 주요 요구사항으로 제시한 다음 구인을 하면 1년 내내 이력서조차 받을 수 없을 가능성이 높습니다. 그래서 겉으로는 종종 시스템 디자인 같은 프로그램 지식이 조금 있고 자신의 의견을 논리적으로 표현할 수 있는 사람을 구인한 다음 적당히 밸런스 관련 업무를 조금씩 끼워 넣어 간을 본 다음 적당한 사람을 사내에서 전직 시키곤 합니다.
이 글 제목인 ‘채집 오브젝트 생성 간격’을 검색했을 사람을 저와 비슷한 일을 하는 동업자라고 가정한 다음 이 사람이 처해 있는 상황을 지금까ㅣㅈ 설명한 밸런스 디자이너의 관점에서 생각해보면 어쩌면 이 분은 이제 게임 상에 등장하는 채집 오브젝트들이 얼마마다 한번씩 다시 생성되어야 할 지 이른바 리스폰 시간을 결정해야 하는 상황에 놓인 사람일 수 있습니다. 실은 무지성으로 대강 여기 있는 나무는 누군가 나무를 베어 사라진 다음 1분 뒤에 나타난다고 결정하고 이 숫자를 적당한 곳에 입력하면 별 문제 없이 의도 대로 동작할 겁니다. 사실 핵심 메커닉이 대부분 전투인 게임에서 채집 오브젝트가 얼마마다 다시 나타나는지에 관심을 가지는 사람은 고객들과 개발자들 모두에 걸쳐 그리 많지 않습니다. 테스트 환경에서는 대부분 내 자리에서 실행한 로컬 서버 환경에서 나 혼자 플레이 하므로 채집 오브젝트가 적절한 간격마다 생성되는지 판단할 이유도 없고 판단할 방법도 없습니다. 필드에 생성된 모든 나무는 서버에 나 혼자 밖에 없는 상황에서 모두 처음 생성된 다음 사라지지 않고 늘어서 있고 유일한 플레이어인 나 자신이 나무를 베기 전에는 결코 사라지지 않으므로 테스트 환경에서는 항상 필요할 때 나무를 채집할 수 있어 생성 시간이 적절하게 설정되어 있는지 판단할 수도 없고 또 그런 판단이 필요한지조차 알기 어렵습니다. 그렇게 아무렇게나 입력한 숫자에 기반해 개발하다가 어느 날 사내 테스트를 하기 위해 게임을 배포하고 한 서버에 이전에 받아본 적 없는 수의 사람들을 받아 이들이 동시에 서버에 나타나 나무를 채집하기 시작하면 문제가 순식간에 드러납니다. 만약 나무를 채집에 획득한 나뭇가지 아이템이 여러 가지 제작에 필요하도록 설정되어 있다면 갑작스레 서버에 들이닥친 사람들이 마치 어제 하루 종일 손님이 10명 밖에 오지 않아 10인분의 식재료만 준비해 놓은 식당에 갑자기 40명이 들이닥쳐 당장 음식을 내놓으라고 아우성치는 것과 비슷한 상황을 맞게 됩니다.
한 가지 다행인 점은 식당에 갑자기 찾아온 손님 40명을 위한 식재료를 즉시 만들어낼 수 없어 최소 30명은 그냥 돌려보내야 하지만 우리들은 가상 세계에서 가상의 자원을 생성할 수 있기 때문에 손님을 미리 예측할 수 있다면 손님들을 아무도 돌려 보내지 않고 모든 손님들을 서빙할 수 있다는 것입니다. 이를 위해 여러 숫자들을 결정하고 어떤 숫자들은 현재 플레이어 수, 현재 레벨의 플레이어 수, 현재 채널의 플레이어 수 같은 근거에 따라 유동적으로 조절되도록 할 수도 있습니다. 그런데 여러 MMO를 기반 장르로 삼은 게임들이 소위 ‘채널’ 개념을 도입해 같은 레벨에 일정 이상의 인원이 접속을 시도하면 인원을 같은 레벨의 다른 차원으로 분산 시켜 의도한 수준의 인원만으로 플레이 할 수 있도록 만들고 있기 때문에 플레이어 수에 따라 레벨에 나타나는 여러 컨텐츠가 유동적으로 조절될 필요는 거의 없습니다. 채집물의 재생성 시간은 나무가 배치된 레벨에서 플레이 하는 사람 수에 따라 유동적으로 조절하도록 만들 수 있지만 이미 사람 수에 따라 채널이 유동적으로 조절되므로 채집물 재생성 시간과 채널 당 인원 수 양쪽 모두가 조절되도록 만들면 오히려 일이 더 복잡해질 뿐입니다. 그래서 채널 개념이 있어 인원 수에 따라 유동적으로 플레이어들을 같은 장소의 다른 차원으로 분산 시키는 기능이 있다면 나머지 값들은 굳이 유동적으로 조절되도록 설계할 필요가 없습니다. 이제 특정 레벨의 플레이어 수에 따라 채널이 자동으로 조절된다는 사실을 알고 있으니 한 채널에 최대 몇 명의 플레이어가 함께 플레이 할 수 있는지 알고 있으면 이 글 제목의 문제를 풀기 위한 고민을 시작할 수 있을 것 같습니다. 여기서는 어떤 게임인지 알 수 없으니 대략 어떤 레벨은 한 채널 당 플레이어 30명이 될 때마다 새로운 채널을 생성하고 플레이어가 이 지역에서 플레이 하기 위해 진입을 요청할 때 여러 채널을 살펴본 다음 각 채널 별 인원을 대략 25명 수준에 맞추도록 동작한다고 해보겠습니다. 이런 상황에서 이 레벨에 배치할 채집 오브젝트가 얼마마다 재생성 되도록 설정해야 할까요.
채집 오브젝트의 재생성을 잠깐 정의하고 이어가겠습니다. 채집 오브젝트는 주로 필드에 배치된 나무, 풀, 열매 같은 것들을 말합니다. 이들은 사실 시간을 투입하면 보상을 얻는다는 관점에서 핵심 메커닉인 전투를 통해 보상을 획득하는 대상인 몬스터와 똑같습니다. 다만 몬스터에 비해 더 적은 에셋, 더 적은 수의 애니메이션, 더 단순한 시스템을 사용한다는 특징이 있을 뿐입니다. 하지만 몬스터와 전투하는 게임에 채집 오브젝트를 넣으려면 몬스터와는 다른 소위 인터랙션 오브젝트를 별도로 설계해야 하기 때문에 꽤 귀찮을 수 있습니다. 장기적으로 핵심 메커닉인 전투에 의해 계속해서 유지보수되는 몬스터들과 달리 한 번 만들어지면 이를 사용하는 부서는 여럿 있지만 이들을 유지보수하는 정해진 조직이 사라지기 십상인 채집 오브젝트는 개발 중 일어나는 여러 가지 변화에 의해 유지보수 없이 순식간에 낡아 고장나기 쉽습니다. 그럼에도 굳이 채집 오브젝트를 별도로 설계해 구현하는 이유는 몬스터에 비해 훨씬 간단한 시스템을 통해 채집 오브젝트 기반으로 컨텐츠를 확장할 때 비용이 훨씬 낮고 또 사실상 게임의 전체가 전투로 이루어진 세계는 그 전투가 아무라 화려하고 다양하더라도 지루해질 수밖에 없기 때문입니다. 이를 좀 더 험악하게 말하면 전투만 넣으면 편한게 전투만 넣자니 게임이 좀 밋밋할 수 있으니 채집을 집어넣는데 다행스럽게도 채집은 전투에 비해 비용이 낮아 한 번 만들어 놓으면 적은 비용으로 확장할 수 있어 채집을 별도로 만들곤 합니다. 이런 채집 오브젝트는 시간을 투입하면 보상을 획득하지만 전투에 비해 더 적은 자원을 위험부담 없이 투입하면 보상을 얻을 수 있기에 단위 시간 당 획득하는 보상 수량을 더 적게 설정하곤 합니다. 그런데 몬스터를 처치하고 나서 일정 시간이 지나면 다시 나타나는 것과 같이 채집 오브젝트 역시 누군가 채집해 그 자리에서 사라지고 나면 일정 시간 후 그 자리에 다시 나타나야 하는데 이를 채집 오브젝트의 재생성 또는 리스폰이라고 합니다.
이제 닭이 먼저인지 달걀이 먼지인지를 결정할 때가 왔습니다. 앞서 채집 오브젝트는 채집 행동에 따라 시간을 투입하면 보상을 주는 시스템으로 이 관점으로 보면 전투와 별로 다르지 않다고 설명했습니다. 몬스터와 전투할 때 획득하게 될 경험치량을 설정하는 방법은 플레이어가 성장 과정에 따라 플레이 하게 될 각 필드를 거쳐 갈 시간 동안 플레이어에게 요구할 성장 수준에 따라 달라집니다. 몬스터로부터 획득할 경험치를 설정할 때 고전적인 접근은 각 플레이어가 24시간 내내 플레이한다고 가정하고 플레이어가 첫 전투를 시작해 계속해서 성장해 나감에 따라 걸리는 시간을 먼저 설정한 다음 게임 전체가 이 시간에 맞춰 동작하도록 나머지 숫자를 설정하는 것입니다. 가령 플레이어가 레벨 1에서 레벨 2가 되는데 필요헌 경험치가 있을 때 이 구간에서 주로 플레이 하게 될 필드는 마을 바로 바깥에 있는 가칭 ‘앞마당’이라고 하고 레벨 2가 될 때 까지 10분이 소요된다고 설정했다면 ‘앞마당’레벨에서 이 플레이어가 연속으로 전투한다고 가정할 때 10분 동안 전투한 결과 레벨 2가 되도록 몬스터들의 경험치를 설정하면 됩니다. 가령 레벨 1에서 레벨 2로 올라가는데 필요한 경험치가 10000이고 몬스터 한 마리와 전투하는데 걸리는 시간이 30초라면 10분 안에 경험치 1000을 모아야 하니 몬스터 한 마리를 사냥할 때마다 경험치 50을 주면 됩니다. 그러면 1분에 몬스터 두 마리를 잡아 경험치 100을 획득하고 이 과정을 10분 동안 반복하면 경험치 1000을 획득해 레벨 2가 될 수 있습니다.
그런데 이 필드에 항상 연속으로 전투를 계속할 수 있는 몬스터가 있을 거라고 가정할 수 없을지도 모릅니다. 필드에 몬스터가 지속적으로 나타나게 만들기 위해 몬스터에 재생성 시간을 설정하는데 이는 몬스터가 전투에 의해 사라진 다음 이 재생성 시간이 지난 다음 몬스터가 생성되도록 하는 장치입니다. 만약 이런 장치가 없다면 몬스터를 처치하자마자 바로 다른 몬스터가 나타나게 되는데 아무리 고객이 이 세계가 다 가상 세계이고 실제 세계와 달리 몬스터를 아무리 사냥해도 영원히 멸종하지 않는다는 사실을 알고 있다 하더라도 처치한 몬스터가 그 자리에 즉시 다시 나타난다면 아무리 생각해도 좀 허접하게 느낄 것 같습니다. 그래서 고객이 이 세계가 가짜라는 인식을 너무 쉽게 하지는 않도록 하기 위해 한 번 죽인 몬스터는 적당한 시간 동안 기다렸다가 아무래도 플레이어가 안 보는 적당한 장소에 다시 생성되면 그럭저럭 자연스러워 보일 겁니다. 그래서 재생성 시간 또는 리스폰 타임이라는 개념을 사용합니다. 이런 상황에서 한 번 처치한 몬스터는 즉시 다시 나타나지 않기 때문에 앞서 설명한 레벨 2에 도달하는데 필요한 20회의 전투를 연속으로 수행할 수 없을지도 모릅니다. 또한 필드에 몬스터를 너무 우글거리도록 배치하면 보기에 조힞 않을 뿐 아니라 만약 이들이 선공일 경우 그저 이 사냥터를 지나가고 싶었을 뿐일 고객들의 플레이를 아주 심각하게 방해할 수 있기 때문에 플레이를 계속할 수는 있을 정도로 많이, 하지만 다른 플레이어들을 방해할 정도로 많지는 않은 적당한 수를 배치해야 합니다. 보통 필드에 배치하는 몬스터 수는 수량을 정확히 설정하기 보다는 감각적으로 적당한 수를 배치한 다음 이들이 적당한 간격으로 재생성 되고 또 전투 당 적당한 경험치를 드랍하도록 설정합니다. 이런 이유로 필드에 보기 좋은 수준으로 배치된 몬스터 10마리가 모두 사냥 되고 나면 필드에는 몬스터가 한 마리도 남지 않게 되고 플레이어는 10분 동안 전투하면 레벨 2가 될 거라고 예상했지만 실제로는 10분보다 더 오랜 시간이 경과한 다음에야 레벨 2가 되는 문제가 생깁니다.
여기서 우리는 두 가지 선택을 할 수 있습니다. 핵심 목표는 플레이어가 이 필드에서 10분 동안 연속으로 전투한다고 가정한 상황에서 레벨 2가 되도록 만드는 것입니다. 이 필드에는 몬스터가 최대 10마리 까지만 동시에 등장할 수 있기 때문에 플레이어 한 명이 연속으로 5분 동안 사냥하고 나면 필드에 몬스터가 모두 사라져 성장이 멈추게 됩니다. 이런 상황을 해결하기 위해 몬스터 한 마리 당 드랍하는 경험치를 두 배로 늘려 5분 동안 사냥한 다음 레벨 2가 되지만 필드에는 더이상 남은 몬스터가 없어 5분 더 기다려야만 다음 성장을 이어 갈 수 있도록 하거나 몬스터의 재생성 시간을 몬스터 한 마리에 소요되는 전투 시간 정도로 설정해 전투가 끝날 때마다 이전에 처치한 몬스터 한 마리가 재생성 되어 전투를 계속해서 이어 갈 수 있도록 할 수도 있습니다. 첫 번째 방법은 단위시간 10분 동안 플레이어가 필드에 머물게 만들 수 있지만 이미 레벨 2에 도달하는데 10분이 걸려야 한다는 조건을 위반했고 또 필드에 더이상 플레이 할 컨텐츠가 없는 상황에 플레이어를 방치할 수 있습니다. 하지만 필드에 전투 외에 다른 할 거리가 있다면 이렇게 설정하고 남은 시간 동안 퀘스트 NPC와 대화 하러 다니거나 몬스터가 아닌 채집 오브젝트를 채집하러 다니도록 일부러 시간을 비워 주는 역할을 할 수도 있습니다. 두 번째 방법은 이 필드에서 플레이어 한 명이 연속으로 플레이 한다고 가정할 때 레벨 2에 도달하는데 10분이 소요되고 중간에 몬스터가 계속해서 나타나 필드에 전투할 몬스터가 없어지는 상황이 일어나지 않으므로 레벨 2에 도달하는데 10분이 걸려야 한다는 조건에 맞습니다. 다만 앞서 소개한 전투 이외의 할 거리가 있을 경우 이들을 전투 시간에 포함해 계산할지 그렇지 않을지에 따라 이 결정은 이론적으로는 목표를 달성했지만 실제로는 목표를 달성했다고 판단할 수 없을 수도 있습니다. 관점에 따라 레벨 2에 도달하는데 몬스터와 전투 시간만 계산해 10분에 맞추면 목표를 달성했다고 판단할 수 있고 또 퀘스트를 위해 NPC와 대화하고 나무를 베는데 걸린 시간을 포함해 10분에 맞춰야 한다고 생각할 수도 있기 때문입니다.
만약 퀘스트나 채집 같은 다른 플레이를 고려하지 않고 오직 전투 시간과 경험치량을 고려해 레벨 2가 되는데 걸릴 시간 10분을 만들도록 문제를 단순하게 바꾸면 이미 한참 전에 정답을 만들었습니다. 몬스터의 재생성 시간은 플레이어가 몬스터 한 마리와 전투하는데 필요한 30초 정도로 설정해 플레이어 한 명이 필드에 배치된 몬스터 10마리를 모두 사냥한 다음에도 여전히 필드에는 방금 사냥한 몬스터 한 마리를 제외한 나머지 아홉 마리가 돌아다니고 있을 테니 이 플레이어는 필드에서 10분 동안 전투를 반복하면 레벨 2에 도달할 수 있습니다. 이제 마지막으로 이 시나리오를 실제 시나리오에 맞춰 바꾼 상황을 생각해 봐야 합니다. 플레이어 한 명이 몬스터가 최대 10마리까지 동시에 나타날 수 있는 필드에서 전투하는 상황을 생각해 봤는데 우리가 만들고 있는 게임의 기반 장르는 MMO이고 이 장르에서는 한 필드에 플레이어가 한 명 보다 더 많을 수 있습니다. 앞서 이 레벨은 한 채널에 최대 30명의 플레이어가 입장할 수 있고 새로운 플레이어가 이 레벨에 진입을 요청할 때 채널을 살펴보고 한 채널 당 대략 25명 정도의 플레이어가 유지되도록 제어하는 상황일 때 아주 쉽게 한 채널 당 25명의 플레이어가 있을 거라고 가정할 수 있습니다. 현실은 이보다는 약간 더 고려해야 합니다. 모든 순간 한 필드에 플레이어가 25-30명 수준으로 유지되지 않기 때문에 시간의 흐름에 따른 플레이어 수를 가정하고 이를 표현할 적당한 분포를 선택한 다음 분포를 단순화한 값을 기준으로 계산하는 쪽이 안전합니다. 하지만 그 이야기를 모두 꺼내는 건 글 제목으로부터 너무 멀리 나가게 될 것 같으니 여기서는 이 레벨의 한 채널에 대략 25명의 플레이어가 항상 플레이 한다고 가정하겠습니다. 필드에 몬스터는 10마리 뿐인데 레벨 2가 되기를 원하는 플레이어 25명이 동시에 필드에 나타났습니다. 이 전까지 우리는 정답을 찾았다고 생각했지만 팀 내 테스트를 통해 한 레벨에 동시에 플레이어가 10명만 들어와도 대번에 이전에 고려한 적 없는 완전히 이상한 상황이 발생합니다.
일단 한 채널에 25명의 플레이어가 입장하면 그 중 10명은 필드에 있는 몬스터 각각과 전투를 시작합니다. 각각의 전투에는 약 30초가 걸리며 이 사이에 남은 15명의 플레이어는 아무것도 할 수 없습니다. 만약 전투 외에 다른 컨텐츠가 있다면 이걸로 어느 정도 버틸 수 있겠지만 만약 전투만 할 수 있다면 이 필드에서 오직 10명만이 단위 시간을 의미 있는 행동에 소모하고 나머지 15명은 아무 것도 못 하고 그저 다른 사람 전투 하는 모습을 구경할 수밖에 없습니다. 일단 이 극단적인 시나리오는 몬스터의 재생성 시간을 조절한다고 해서 문제를 해결할 수 없습니다. 일단 앞서 감각적으로 적당한 수준이라고 생각해 배치한 몬스터 수를 이 채널에 상주할 것으로 예상하는 인원인 25명에 맞춰 25마리로 늘리거나 이 채널의 입장 인원 수를 몬스터 수와 동일한 10명으로 낮춰야 합니다. 이 의사결정을 하는데 아마도 관련 부서들 사이에 이해충돌이 일어날테고 이를 해결해야 할 겁니다. 몬스터 10마리가 감각적으로 이 레벨에 어울린다고 생각한 부서는 몬스터가 10마리여야만 하는 이유를 주장하고 이 레벨에 25명의 플레이어가 플레이 하게 될 거라고 주장하는 누군가는 적어도 그 정도 플레이어는 있어야 상호작용이 일어나고 또 플레이어 각각이 다른 플레이어의 행동을 보며 이 게임이 멀티플레이 환경이라는 사실을 인지할 수 있다고 주장할 수 있습니다. 사실 이 가상의 과정을 상상하며 멀리서 지켜보기만 하는 제 입장에서는 어느 쪽이든 별로 상관 없지만 개인적으로는 감각적인 배치가 그리 안전하지는 않다고 생각하기에 25명의 플레이 인원에 맞춰 몬스터 개체 수를 최소 25마리로 조절하는 쪽을 선택하겠습니다.
자, 이제 이 레벨에는 몬스터 25마리가 있고 한 번에 25명의 플레이어가 들어와 전투를 시작합니다. 이제 문제가 극도로 단순해졌습니다. 여전히 플레이어 한 명은 몬스터 한 마리와 전투하는데 약 30초 정도를 소모하며 다음 몬스터를 찾는데 5초 정도를 소모한다고 가정하더라도 여전히 이 필드에 배치된 몬스터의 적당한 재생성 시간은 전투에 필요한 시간인 약 30초입니다. 이 설정에서 필드에 동시에 들어와 전투를 시작한 플레이어 25명은 각자 몬스터 한 마리를 상대해 약 30초에 걸쳐 전투하는데 다른 몬스터를 찾으러 이동하는 시간을 약 5초라고 가정하면 이 사이에 이미 새로운 몬스터가 스폰 되어 있을 테니 25명의 플레이어는 이론 상 계속해서 전투를 이어 갈 수 있습니다. 이들 모두가 레벨 1부터 시작했다면 대체로 레벨 2가 되는데 10분 보다 조금 더 긴 시간이 걸릴 겁니다. 모든 30초 간의 전투를 연속으로 이어서 한다면 정확히 10분에 맞춰 레벨을 올릴 수 있겠지만 실제로는 새로운 몬스터를 찾아 이동하는 시간, 몬스터와 전투로 떨어진 체력을 회복하는데 걸리는 시간, 고객에 집중력을 잃어 플레이어를 필드에 방치해 놓고 잠깐 유튜브 영상을 보는 시간 등을 감안하면 실제로는 10분보다는 더 긴 시간만에 레벨업이 일어납니다. 하지만 이 정도는 오차로 간주하고 보면 이 레벨에 몬스터 25마리를 배치하고 몬스터 각각의 재생성 시간을 전투 시간에 근거해 약 30초로 설정하면 채널에 입장해 있을 플레이어 수의 평균에 해당하는 플레이어들이 예상한 시간을 소요해 레벨을 올리도록 만들었습니다. 여기서 몬스터의 생성 간격은 30초입니다.
분명 이 글은 제목부터 채집 오브젝트의 재생성 시간이라고 해 놓고 지금까지 몬스터 이야기를 했는지 의아해 하실 수 있습니다. 실은 몬스터의 전투 시간을 예로 드는 편이 훨씬 더 간단하기 때문입니다. 우리들이 주로 개발하고 있을 기반 장르인 MMO에서는 핵심 메커닉이 주로 전투이기 때문에 어느 레벨에 진입하든 일단 냅다 전투 할 거라고 가정하면 시나리오가 굉장히 단순해집니다. 앞서 몬스터의 재생성 시간을 결정하는 과정을 살펴볼 때 느끼셨을 수 있지만 이 세계의 플레이어들이 몽땅 살의에 가득 찬 전쟁광들인 것처럼 생각하고 있습니다. 필드에 진입한 플레이어들이 하나같이 각자의 무기를 들고 아직 자신들에게 아무런 피해도 입히지 않은 몬스터들에게 다짜고짜 달려들어 이 거대한 살육의 한 장면을 시작할 거라고 생각하면 이 모든 숫자를 결정하기 훨씬 쉽습니다. 하지만 이는 실제와는 상당히 다릅니다. 물론 게임이 어느 정도는 플레이어들을 전쟁광으로 몰아 붙이는 경향이 있는 것은 사실입니다. 하지만 온통 전투로만 가득 찬 세계는 그 화려한 전투 경험에도 불구하고 밋밋하고 심심해질 수 있기에 채집 같은 전투와 다르고 그보다 훨씬 단순하면서도 전투와 분리된 행동을 포함하기도 합니다. 채집 행동 역시 기본적으로는 전투와 똑같은 방식으로 생각을 시작하면 됩니다. 감각적으로 이 레벨에 나무가 몇 그루 정도가 있으면 될지 결정한 다음 적당히 보기 좋은 수준으로 나무를 배치하는데서 시작합니다. 그 다음은 나무 하나를 채집할 때마다 획득할 자원, 그리고 자원을 얼마나 모아야 의미 있는 첫 번째 행동에 사용할 수 있는지 결정하면 됩니다. 하지만 이 둘은 어느 한 쪽을 먼저 정하면 나머지 한 쪽을 정할 수 있기에 앞서 잠깐 이야기하고 지나간 닭과 달걀의 문제에 빠지기 쉽습니다. 개인적인 추천은 먼저 만들어진 시스템이 숫자를 먼저 정하는 것입니다. 만약 채집을 먼저 만들었다면 그냥 채집 쪽에서 나무 한 그루로부터 얻을 수 있는 자원의 양을 그냥 정하면 됩니다. 반대로 자원을 사용해 무기를 강화하는 부분을 먼저 만들었다면 이 쪽에서 무기 레벨을 1 올리는데 필요한 자원 양을 먼저 정하면 됩니다.
몬스터 사례와 같은 방식으로 생각하면 이번에도 이 레벨에는 나무 10그루가 배치되어 있는 편이 가장 적절해 보이고 닭과 달걀의 문제를 해결해 나무 한 그루로부터 자원 10개를 얻기로 결정해 보겠습니다. 마침 이 자원을 사용해 무기 레벨을 1에서 2로 올리는데 필요한 자원의 양이 25개라는 사실도 알게 되었습니다. 나무 한 그루를 채집하는데 드는 시간을 몬스터와 비슷한 30초로 설정할 때 무기 레벨을 올리는데 필요한 자원을 확보하기 위해서는 연속으로 채집하는 시나리오를 가정할 때 나무 세 그루, 즉 90초가 필요합니다. 그런데 앞서 25명의 플레이어가 이 레벨에 한꺼번에 들어와 문제가 되었던 것처럼 이번에도 이 레벨에는 동시에 함께 플레이하는 다른 플레이어가 있을 테니 이들을 반영해야 합니다. 앞서 몬스터 사례에서는 채널 당 플레이어 수에 맞춰 몬스터 수를 조절했으니 이번에는 나무 수에 맞춰 채널 당 플레이어 수를 조절해 보겠습니다. 나무는 10그루, 모든 플레이어가 무기 레벨을 올릴 재료를 채집하기 위해 레벨에 진입하자마자 나무를 향해 달려갈 것을 예상한다면 이 채널에서 동시에 플레이 할 수 있는 적정 플레이어 수는 10명이 되어야 합니다. 그리고 각 플레이어가 30초 동안 채집 행동을 하고 채집을 마칠 때 자원 10개를 획득하고 나서 다음 나무를 찾는데 시간이 약간 더 걸릴 것을 감안하더라도 나무 각각의 적당한 재생성 시간은 30초 정도로 설정하면 됩니다. 모든 플레이어가 나무 채집에 집중한다면 이 시나리오는 무기 레벨을 올리는데 필요한 자원 25개를 채집하는데 90초가 필요하다는 조건을 달성할 수 있습니다.
채집 오브젝트 생성 간격을 설명하기 위해 레벨에 몬스터만 있는 경우, 그리고 나무만 있는 경우를 각각 살펴봤습니다. 이들을 각각 살펴본 이유는 이들을 섞어 놓고 생각하기 시작하면 이제 문제가 정말 본격적으로 복잡해지기 때문입니다. 이미 글이 충분히 길어진 것 같으니 이들이 뒤섞인 상황에서 채집 오브젝트의 적당한 재생성 시간을 설정하는 사례를 직접 설명하지는 않겠지만 채집 오브젝트의 적당한 재생성 간격을 실제 시나리오에 근거해 산출하는 요령을 설명하겠습니다. 먼저 실제 환경에는 같은 레벨에 몬스터, 채집 오브젝트, 퀘스트 NPC 등 다양한 플레이 대상이 있습니다. 이들 각각은 서로 다른 단위 시간 당 효율을 가지고 있습니다. 또한 이들이 한 번에 필드에 흩뿌려져 있기 때문에 모든 플레이어가 동시에 몬스터에게만 달려들거나 모든 플레이어가 동시에 나무에 달려드는 상황은 억지로 이런 시나리오를 테스트하기 위해 의도하지 않는 이상 일어나지 않는다고 봐도 됩니다. 때문에 몬스터의 재생성 시간이나 나무의 재생성 시간을 계산하기 위해 레벨에 오직 몬스터만, 또는 오직 나무만 있다고 가정했던 것과 달리 이번에는 레벨 위에 있는 모든 종류의 플레이 대상을 감안해야만 합니다. 앞서 설명한 두 가지 시나리오를 모두 고려할 때 한 레벨에 몬스터는 25마리, 나무는 10그루가 동시에 나타나며 이 레벨에는 퀘스트 NPC를 고려하지 않더라도 총 35개의 플레이 대상이 있습니다. 몬스터 시나리오에서 가정한 채널 당 플레이어 수를 가정하면 총 35개의 플레이 대상이 있는 레벨에 한번에 25명의 플레이어가 진입해 플레이 하는 상황을 고려하면 됩니다. 이들이 각기 다른 목적에 따라 몬스터 또는 나무를 붙잡고 행동하기 시작할 테고 이들은 단위시간 당 적당한 수준의 보상을 획득해 플레이를 진행합니다.
플레이어가 몬스터를 선택할지 아니면 나무를 선택할지 가정하기 어려울 수 있는데 이는 가정할 필요가 없고 가정할 수도 없기 때문입니다. 이는 그저 서로 다른 전투 시간, 서로 다른 단위 시간 당 경험치를 주는 몬스터 여러 종류가 같은 레벨에 뿌려진 상황일 때 여러 플레이어가 몬스터의 종류를 가리지 않고 몬스터와 맞서는 상황을 생각해보면 됩니다. 몬스터 한 종류와 나무 한 종류가 흩뿌려진 레벨 역시 근본적으로는 몬스터나 나무나 서로 다른 행동을 요구할 뿐 단위 시간 당 경험치 또는 자원을 드랍할 뿐 본질적으로 이들의 역할은 서로 다르지 않습니다. 또한 모든 플레이어가 동시에 레벨에 진입하지 않을 뿐 아니라 모든 플레이어는 서로 절대적 시점에 게임을 시작하므로 플레이어 25명이 한 번에 레벨에 진입해 몬스터 25마리에 한 번에 달려드는 상황 역시 실제로는 이를 의도하지 않은 한 발생하지 않습니다. 서로 다른 플레이어는 서로 다른 시간에 서로 다른 목적을 위해 이 레벨에서 플레이 하며 각자의 목적에 따라 몬스터에 달려드는 플레이어와 나무를 향해 달려드는 플레이어가 어느 정도 분산될 거라고 가정해도 크게 틀리지 않습니다. 때문에 몬스터 수와 채집 오브젝트 수, 이들이 단위 시간 당 드랍하는 경험치와 자원의 양, 그리고 이들의 재생성 시간을 모든 플레이어가 동시에 등장할 것을 감안해 정확한 숫자로 설정하는 것 보다는 정확한 숫자보다 조금 더 긴 시간으로 설정하는 것을 추천합니다. 사실 이 ‘조금 더 긴 시간’ 역시 몬스터 사이의 간격과 플레이어들의 이동 속도를 사용해 근거를 가지고 계산해낼 수 있지만 개인적으로는 이 정도 수준의 계산은 실제 경험을 만들어내는데 필요하지 않다고 생각합니다. 오히려 더 많은 근거를 기준으로 만들어진 숫자들은 게임에 자잘한 변화가 생길 때 이를 하나하나 반영할 수 없어 복잡할 뿐 실제 적용하기는 아주 어려운 앞서 언급한 유지보수가 불가능한 엑셀 수식 뭉치가 되는 경우를 더 많이 봐 왔습니다.
이제 제목의 ‘채집 오브젝트 생성 간격’으로 돌아가 이 질문 자체에만 집중해 대답해 보겠습니다. 채집 오브젝트는 근본적으로 몬스터와 똑같습니다. 그저 단위 시간 동안 전투 해야 하는지, 아니면 채집 행동을 해야 하는지의 차이가 있을 뿐입니다. 그래서 같은 레벨의 같은 채널에 모두 합쳐 몇 개의 플레이 대상이 있는지와 이 채널에 일상적으로 들어올 플레이어 수를 알아내 이를 기준으로 단위 시간 당 각자가 플레이어에게 지급할 보상을 결정하고 각 플레이어가 끊김 없이 계속해서 플레이 할 때 각자가 원하는 보상을 시간에 맞춰 획득할 수 있도록 플레이 대상 수가 일정한 수준으로 유지되는 시간을 설정하면 됩니다. 이것 저것 생각하기 어렵다면 가장 간단한 방법은 몬스터라면 예상 전투 시간, 채집 오브젝트라면 채집에 소요되는 시간보다 조금 더 긴 시간으로 설정하면 일단 별 무리 없이 동작하기 시작할 겁니다. 이제 여기서 몬스터의 종류가 늘어나고 몬스터가 비선공이거나 선공일 때 플레이어가 경험하는 상황이 달라져 전투를 멈추고 싶을 때 멈출 수 없게 되며 채집 오브젝트 역시 선공 몬스터의 영향으로 채집에 요구한 시간보다 더 긴 시간을 투입해야만 보상을 획득하는 식으로 상황이 조금씩 복잡해지며 같은 레벨에 퀘스트 NPC가 배치되어 있다면 단위 시간 당 퀘스트로부터 경험치 획득 역시 어느 정도 고려해야 합니다. 이 과정들이 예상보다 너무 단순하다고 생각할 수도 있고 또 예상보다 복잡하다고 생각할 수도 있습니다. 어느 쪽이든 핵심은 기반 장르를 MMO로 잡은 여느 게임에서 같은 레벨의 같은 채널에 등장하는 플레이 대상의 재생성 시간은 채널에 진입한 모든 플레이어들이 중단 없이 계속해서 자신의 플레이를 이어 갈 수 있도록 플레이 대상의 전체 개체 수가 일정하게 유지되도록 하는 것입니다. 혹은 가장 간단하게는 전투 대상은 전투 시간 만큼, 채집 대상은 채집 시간 만큼 혹은 이보다 약간 더 길게 설정해야 합니다.
한편 이번에는 미시적인 관점에서 레벨 위의 개체들을 통제하는 요령을 살펴보았습니다. 하지만 접근 방법은 이것 뿐은 아닙니다. 완전히 반대 방향으로 접근할 수 있습니다. 가령 런칭 시점까지 게임에 등장할 모든 레벨과 모든 몬스터, 모든 채집 오브젝트를 망라해 성장 구간에 지나가게 될 각각의 레벨과 레벨 별 체류 시간을 배분하고 성장 구간을 마무리할 시점에 플레이어의 성장 수준과 여기까지 소요해야 할 시간을 먼저 결정한 다음 각 레벨의 각 채널에서 단위 시간 당 생산되어야 하는 자원의 양을 설정해 이들을 이 레벨에 배치될 ‘플레이 대상’ 각각에 분배하는 방식을 사용할 수도 있습니다. 이는 미시적으로 접근할 때 플레이어 각각의 끊기지 않는 플레이와 예측 가능한 시간에 이루어지는 성장 경험을 목표로 삼아 숫자를 설정하는 것에 비해 전체적으로 플레이어가 최초로 엔드컨텐츠에 도달하는데 걸리는 플레이 시간을 30시간으로 설정하고 30시간 동안에 거칠 레벨 10개가 각기 적당한 시간 동안 적절한 보상을 드랍 해 예측 가능한 시점에 플레이어들이 예측 가능한 컨텐츠에 도달하도록 만들어 예측 가능한 운영을 하게 만들기도 합니다. 이전 시대에는 엔드 컨텐츠 개념이 희박해 미시적인 관점에서 숫자를 정하는 사례가 훨씬 많았지만 엔드 컨텐츠 개념이 뚜렷해진 시대부터는 마치 싱글플레이 게임을 디자인하는 것처럼 엔드컨텐츠에 진입할 때까지 요구하는 플레이 시간을 설정한 다음 게임 상의 모든 숫자들을 이 결과를 만들어내는 도구로써 동작하도록 접근하는 사례가 나타나고 있습니다. 때문에 오늘 설명한 미시적인 방법만 있는 것은 아니라는 사실 역시 알아 두면 좋을 것 같습니다.
이번 72호에도 지난 2주간 공유한 이야기를 함께 보내 드립니다.





요즘 하는 고민은 왜 디저트를 잘 하는 가게는 커피를 잘 못하고 커피를 잘 하는 가게는 디저트를 못하는가, 왜 둘을 같이 먹어야 하는데 둘 다 잘 하는 가게는 없거나 거의 없는가에 대한 것입니다. 정말 디저트와 커피 둘 다 잘 하는 가게는 이 세계에 존재하지 않는 것일까요? 좀 더 열심히 돌아다녀 봐야겠습니다.
그럼 또 2주 뒤에 뵙겠습니다.