월 별 글 요약

월 별 요약은 2022년 7월, 8월, 9월 석 달 동안만 진행하고 이후에는 진행하지 않고 있습니다.

2022년 9월 블로그 요약 (4)

인터랙션 오브젝트로 채집물을 만들 수 있을까?

이전에 인터랙션 오브젝트 설계 (1), 인터랙션 오브젝트 설계 (2) 인터랙션 오브젝트 설계 (3)에 걸쳐 단순한 인터랙션 오브젝트를 어떻게 만드는지 알아봤습니다. 이를 기반으로 오딘에 나오는 채집물을 흉내낼 수 있을지 알아봤습니다. 이전에 다룬 인터랙션 오브젝트와 오딘의 채집물은 기능 대부분이 비슷합니다. 다른 점은 채집되고 나면 필드에서 사라졌다가 스폰 시스템에 의해 일정 시간이 지나면 필드에 다시 나타나는 것입니다. 또 사라질 때 인터랙션 오브젝트의 애니메이션을 통해 사라지는 대신 서서히 투명해지며 사라지도록 일괄로 처리해 두면 항상 애니메이션으로 사라지지 않도록 할 수 있을 것 같습니다. 기존 인터랙션 오브젝트의 각 상태에 이 상태가 어떻게 표현될지 설정하는 옵션을 넣고 특정 상태에 진입할 때 서서히 사라지도록 설정했습니다. 다행히 오딘의 채집물은 단순한 형태여서 이 정도로 흉내 낼 수 있었습니다.

어중간한 간편설정

게임 설정은 상당히 복잡해졌습니다. 그래픽이나 사운드 설정을 하는 데서 나아가 자동전투 메커닉의 주요 인자들을 제어할 수 있게 됐습니다. 덕분에 설정은 윈도우의 제어판처럼 상당히 복잡해졌습니다. 원하는 설정을 찾기 힘들어졌고요. 그래서 자주 사용할 만한 설정들을 간편설정 버튼을 눌러 나오는 팝업에 배치해 놓았습니다. 여기에는 포션 자동 사용 시점, 대상 탐색 거리, 매너모드 같은 옵션들이 있습니다. 간편설정 팝업 역시 전투 화면을 절대로 가리면 안되는 리니지 시리즈의 인터페이스 디자인 설계 철학을 따랐을 것 같지만 시간이 지나면서 자동전투가 발전해 이 옵션은 한 번 설정하면 다시는 손대지 않게 되었습니다. 그래서 화면을 절대로 가리지 않는 설계 철학의 지배를 덜 받는 옵션들로 변했습니다. 또 절전모드 버튼은 절대로 HUD에 직접 노출되면 안 되기 때문에 간편설정 안에 배치되었습니다. 현대의 간편설정은 굳이 여기 있을 필요가 별로 없는 딱 한 번만 설정하면 영원히 손 댈 필요가 없는 옵션들과 바깥에 절대 있어서는 안되는 절전모드 버튼이 남은 어중간한 상태가 되었습니다.

인벤토리 한 칸에 아이템을 몇 개 까지 겹칠 수 있나요?

이전 시대에는 인벤토리 한 칸에 아이템이 몇 개 까지 겹쳐질 수 있는지가 데이터베이스 설계와 직접적으로 연관된 중요한 결정사항이었습니다. 시간이 흐르면서 이런 기술적 제한은 줄어들었고 현대에는 아이템 각각이 인벤토리에 몇 개 까지 겹쳐질지는 이 아이템이 인벤토리를 얼마나 차지 하기를 원하는지에 대한 밸런스 요소와 아이템이 아주 많이 겹칠 때 인벤토리 위해 수량이 얼마나 예쁘게 나올지에 따라 결정됩니다. 아이템 하나가 인벤토리 여러 칸을 차지하지 않는다면 굳이 같은 아이템 여러 개가 인벤토리 여러 칸을 차지하도록 설정해 플레이어에게 압력을 가할 이유가 별로 없습니다. 그래서 지금은 거의 시각적으로 아이템 여러 개가 표시될 때 수량을 얼마나 잘 알아볼 수 있는지, 얼마나 예쁘게 보이는지 정도가 남은 고려사항입니다. 숫자가 너무 커지면 오른쪽 하단에 정렬한 수량이 그리 예쁘게 보이지 않을 수 있습니다. 그래서 글자 크기에 따라 자릿수를 제한하거나 수량을 줄여 근사값으로 표현하기도 합니다. 그러면 인벤토리 한 칸에 같은 아이템을 더 많이 쌓을 수 있습니다.

자동퀘스트로 NPC와 대화하기

NPC와 대화하는 목표를 자동퀘스트로 만들다 보면 몇 가지 고려할 점이 있습니다. 먼저 NPC까지 이동하는 것인데 NPC의 정확한 위치까지 이동하면 플레이어캐릭터와 NPC가 같은 지점에 겹쳐 보기에 나쁘게 됩니다. 게임 전체에 인간형 NPC만 나온다면 그냥 NPC가 보고 있는 방향에서 1미터쯤 떨어진 곳을 이동 목적지로 설정하면 그리 나쁘지 않게 해결할 수 있습니다. 하지만 게임 상에 크기가 다른 NPC가 나오기 시작하면 NPC와 플레이어 사이의 적당한 거리와 이동 위치를 계산하는데 좀 더 신경 써야 합니다. 다음으로 자동으로 대화를 시작할지 여부를 결정해야 합니다. 이전에는 결국 자동으로 대화를 시작하게 만들었는데 게임에 집중하지 않은 플레이어들이 NPC 앞에 도착한 다음 무엇을 해야 할 지 잘 몰랐기 때문입니다. 마지막으로 대화 이외의 기능이 있는 NPC에게 말을 걸 때 대화를 우선 할 지 기능을 우선 할 지 이들 중 하나를 선택하게 할 지를 결정해야 합니다.

자동퀘스트에서 지역이동 만들기

게임에 따라 출발지에서 목적지까지 온전히 걸어서 이동할 수 있을 때만 자동이동을 제공하고 이 사이에 존로딩을 하거나 NPC와 대화를 해야 하거나 비용을 지불해야 하는 경우 자동이동을 지원하지 않기도 합니다. 그런데 자동퀘스트와 자동이동을 지원하기 시작했다면 이를 최대한 넓은 범위에 제공해야 한다고 생각합니다. 자동 기능을 잘 제공하다가 이따금씩 플레이어에게 제어권을 넘겨주고 알아서 하라는 행동은 자동 기능을 지원하는 게임에서 적절하지 않은 대응입니다. 일단 자동 기능을 지원한다면 전통적으로 NPC와 대화한 다음 배를 타는 메커닉은 애초에 만들지 않도록 가이드해야 합니다.

2022년 9월 블로그 요약 (3)

선택 보상 상자 설계

보상 시스템 설계 (1), 보상 시스템 설계 (2)에서 단순한 보상 시스템이 동작하는 방법을 알아봤습니다. 리니지W를 플레이 하다가 상자 보상을 받았는데 인벤토리에서 상자를 열어보니 몇 가지 보상 중 하나를 선택하는 보상이었습니다. 이전에 만든 단순한 보상 시스템으로는 이 선택 보상 상자를 만들 수 없습니다. 그래서 선택 보상 상자가 동작하는 방법을 알아보겠습니다. 이전 보상 시스템은 단일 보상에 이 보상이 집행될 방식과 그 하위에 아이템 여러 개를 포함할 수 있는 그룹으로 이루어집니다. 단일 보상의 집행 방법을 ‘선택’ 혹은 ‘선택 보상 상자’로 설정합니다. 이 옵션은 하위에 있는 그룹 각각을 선택 옵션으로 보여주고 이들 중 하나를 선택하게 만듭니다. 그룹 각각은 아이템 하나만 포함하거나 그룹 하위에 독립적인 확률 연산을 사용할 수도 있는데 기능 상으로는 이렇게 사용할 수도 있지만 선택한 그룹 하위에서 다시 한번 확률 연산을 하는 사례를 실제 게임에서는 만나지 못했습니다.

정시퇴근의 효과

지난 여러 해에 걸쳐 긴 시간 동안 일할 일이 많았습니다. 업데이트 전날부터 업데이트 당일에 업데이트가 정상적으로 마무리될 때까지 24시간 이상 대기 한다든지 월말에는 월 최대 근무시간을 가득 채워 중간에 퇴근하는 일이 일상처럼 일어났습니다. 저만 이렇게 일하는 것은 아니어서 불만을 가지기 쉽지 않았지만 퇴근하고 집에 돌아와도 일 생각을 멈출 수가 없었습니다. 결국 회사 밖에서는 회사 일도 회사 일이 아닌 다른 일도 아무것도 할 수가 없었습니다. 어떤 행동을 하려고 마음먹었다가도 평소에는 무의식적으로 할 수 있었던 그 일을 하는데 필요한 준비 절차들을 하나하나 떠올리며 그 하나하나를 모두 하기가 너무 귀찮고 힘들어 결국 아무 것도 하지 않고 우두커니 앉아 있는 나날이 계속되었습니다. 뭘 쓰기로 마음먹었다가도 브라우저를 열고 위키 웹사이트 주소를 타이핑하는 행동을 하고 싶지 않았습니다. 아예 컴퓨터를 켜고 싶지 않기도 했습니다. 그러다가 올 초부터 계속해서 정시퇴근을 하는 환경에서 일하기 시작했는데 한동안은 아무런 변화도 없었습니다. 하지만 개인적으로는 뭔가 변화가 있지 않을까 기대하기는 했습니다. 아무 변화도 없다가 반 년이 넘어가면서 언제까지 이렇게 살 수는 없다는 생각이 들기 시작했고 이전에는 브라우저를 열거나 주소를 타이핑 하기 싫어 아무 것도 쓸 수 없던 상황을 퇴고 없이 한번에 최대한 가볍게 뭐든 작성하는 시도를 해 볼 정도가 되었습니다. 일단 지금까지는 계속하는 중입니다.

지역이동 연출

리니지W를 처음 플레이할 때 말하는 섬을 떠나는 연출이 마음에 들었습니다. 배를 타고 섬을 떠나며 글루딘에 도착하는 월드맵을 통한 연출은 크게 세 가지 장점이 있다고 생각합니다. 말하는 섬이 시작 마을이라는 점을 감안해 다음 마을로 이동한다는 맥락과 작은 섬에서 월드맵 전체로 세계가 넓어진다는 맥락을 잘 전달합니다. 또 세계가 넓어지는 맥락을 전달하면서도 넓은 공간을 실제로 이동하지 않아 플레이어의 시간을 절약해 줍니다. 이 넓은 세계를 느끼는 것도 중요하지만 그 세계를 직접 시간을 들여 지금 당장 체감하게 할 필요는 적다고 생각합니다. 마지막으로 개발 입장에서 비용 효율적입니다. 중요한 챕터를 넘길 때 이런 상대적으로 비용이 낮은 연출 방법을 사용해 두면 이후 비슷한 상황에서도 월드맵을 통해 비용 효율적인 연출을 재사용할 수 있습니다.

기간제 미션 이벤트

디아블로 이모탈에서 지난 룰렛 이벤트에 이어 기간제 미션 이벤트를 시작했습니다. 인게임 업적 시스템에서 사용하는 목표와 크게 다르지 않은 목표들을 제시하고 각 목표를 달성할 때마다 즉시 보상을 지급합니다. 목표를 달성한 횟수에 따라 추가 보상을 지급하는데 8회, 16회, 20회를 달성할 때 추가 보상을 받게 됩니다. 특히 20회차에는 2만5천원으로 살 수 있는 가치를 계산해보자에서 개당 2800원으로 계산한 전설문장을 보상으로 줍니다. 그건 그렇고 이 이벤트에서 요구하는 행동은 인게임에서 규칙적으로 수행하는 행동과 별로 다르지 않은데 그럼에도 이런 이벤트를 통해 같은 행동에 추가로 보상하는 몇 가지 이유가 있습니다. 첫째 모든 플레이어의 플레이 습관이 개발자들의 의도와 일치하지 않습니다. 누군가는 개발자가 의도한 메커닉의 일부만 플레이하고 있을 수 있어 이를 가이드합니다. 둘째. 행동의 순서를 유도합니다. 보상에 민감하게 반응하는 플레이어들은 이벤트 보상을 낭비 없이 얻기 위해 균열을 돌기에 앞서 필드 플레이를 유도합니다.

괴물의 정수는 무슨 의미인가요?

괴물의 정수는 필드사냥을 소극적으로 부스팅 하는 장치입니다. 디아블로 이모탈은 근본적으로 던전을 돌아 괴물을 처치하고 장비를 얻어 성장하는 게임이지만 이전에 비해 멀티플레이 필드 플레이를 강조합니다. 여러 가지 방법으로 필드 플레이를 유도하는데 이들 중 상대적으로 소극적인 방법입니다. 좀 더 필드 플레이를 적극적으로 부스팅하는 사례에는 모바일 리니지 시리즈의 아이템 컬렉션이 있는데 이는 필드 플레이를 강하게 부스팅 할 뿐 아니라 제작, 강화, 합성, 거래소 사용을 강하게 부스팅 합니다. 게임에 따라서는 몬스터마다 다른 정수를 부스팅 하기도 하는데 이때는 몬스터 도감에 몬스터마다 레벨을 올릴 수 있도록 구성합니다.

2022년 9월 블로그 요약 (2)

왜 꼭 길드에 가입해야 하나요?

과거의 길드는 커뮤니티 요소로 게임에 권태기가 찾아올 때 게임에 좀 더 남아있을 이유로써 주로 작동했습니다. 현대에 가까워질수록 길드는 커뮤니티를 가장한 최상위 컨텐츠를 위한 성장 기능으로 변했습니다. 여전히 길드는 개발 계획에서 주로 커뮤니티 카테고리에 들어 있지만 현대의 길드는 성장 컨텐츠 카테고리에 들어가야 한다고 생각합니다. 길드에 가입해야 할까요? 과거에는 장차 찾아올 게임의 권태기를 견딜 수 있게 만들기 위함이었습니다. 이제 현대에는 최상의 컨텐츠를 더 유리하게 플레이 하기 위해 출석 보상, 길드 버프 등을 얻기 위해서 길드에 가입합니다.

퍼시스턴트 월드에서 개인화된 경험

MMO 게임은 처음에 퍼시스턴트 월드를 기반으로 동작했습니다. 같은 공간에 있는 캐릭터들은 같은 경험을 했고 이것이 이 장르의 특징이었습니다. 장르가 성숙해 감에 따라 다른 장르의 플레이 경험을 MMO에서도 할 수 있기를 바라는 요구가 늘어났습니다. 퍼시스턴트 월드에서 플레이어 개개인에 따란 환경 변화나 개인화된 경험을 만들기는 아주 어려웠고 또 기능을 어떻게 정의해야 할지도 알 수 없었기 때문에 이 요구사항을 인스턴스 던전으로 대응했습니다. 던전 안에는 캐릭터 혼자 또는 소수 인원만 있어 퍼시스턴트 월드보다는 훨씬 자유롭게 개인화된 경험을 제공했습니다. 현대의 인스턴스 던전 경험은 이것이 MMO 게임이라고 생각하기 어려울 정도로 대단해졌습니다. 하지만 근본적으로 MMO는 남들 앞에서 플레이 하려고 하는 장르입니다. 언제까지 던전 안에만 있을 수 없습니다. 때문에 아직까지는 꽤 소극적이지만 다양한 방법으로 퍼시스턴트 월드에서 개인화된 경험을 제공하려는 시도를 하고 있습니다.

자동퀘스트 전투 스텝을 자동전투에 의존하는 사례

리니지2M의 전투 스텝을 자동퀘스트로 처리하는 방식이 흥미로웠습니다. 이후에 나온 게임인 리니지W나 오딘 등에서는 더 깔끔한 방법으로 개선됐지만 이런 개선이 일어나기 전인 리니지2M의 전투 스텝을 처리하는 방법을 살펴보면 앞으로 자동퀘스트를 개발할 때 도움을 받을 수 있을 것 같습니다. 리니지2M에서 자동퀘스트와 자동전투는 서로 구분되어 있습니다. 확신할 수는 없지만 퀘스트를 개발하는 부서와 전투를 개발하는 부서가 서로 갈려 있고 이들 사이에 협업을 최소화하는 전략을 통해 개발 속도를 유지했을 가능성이 있다고 생각합니다. 자동퀘스트는 자동전투를 제어할 수 없기 때문에 전투가 필요한 스텝을 자동퀘스트가 스스로 처리할 수 없습니다. 전투를 해야 하는 스텝은 퀘스트가이드를 터치하면 지정된 장소까지 이동한 다음 자동전투를 켜기만 합니다. 자동전투가 켜지면 인터페이스 상 자동퀘스트는 꺼진 것처럼 보입니다. 하지만 자동전투에 의해 주변의 몬스터를 잡음에 따라 퀘스트가 진행됩니다. 퀘스트 목표를 달성하더라도 한번 자동전투에 제어가 넘어가면 자동퀘스트로 다시 돌아오지 않고 이 지역에서 자동전투를 계속합니다. 플레이어가 개입해 퀘스트가이드를 터치해 직접 자동퀘스트로 제어를 돌려야 퀘스트를 계속할 수 있습니다.

암 걸릴 것 같은 경험

리니지 시리즈의 전투 특성을 알고 있고 특별한 만큼 장점이 있다고 생각합니다. 약간 느려 보이는 이동속도나 소위 칼이 안 박히는 경험은 이를 돌파할 때 반대로 강렬한 경험을 하게 해 줍니다. 다만 이걸 머리로는 이해하고 있었지만 몸은 그렇게 반응하지 않았습니다. 디아블로 이모탈 하루치를 플레이 한 다음 게임을 종료하고 바로 이어서 리니지W를 켜서 자동전투를 돌려놓고 화면을 지켜보는데 회피가 일어나 아예 타격이 일어나지 않고 있었습니다. 일부 공격은 타격이 일어났지만 나머지는 ‘휭 휭’ 하며 허공에 칼을 휘두르는 소리만 났습니다. 방금 전까지 디아블로에서 허접한 숫자가 뜰지라도 일단 휘두르면 맞기는 하던 세계에서 온 저는 머리로는 이게 어떤 경험인지 알고 있었지만 지켜보기가 너무나 고통스러웠습니다.

2022년 9월 블로그 요약 (1)

보상 시스템 설계 (2)

보상 시스템 설계 (1)에서는 여러 게임에서 흔히 사용되는 보상 시스템의 요구사항을 나열해 보고 이들 중 가장 단순한 부분이 어떻게 구성되는지 알아봤습니다. 보상 시스템 설계 (2)에서는 여기에 같은 상황에 드랍되는 보상이 캐릭터 클래스에 따라 달리 드랍되어야 할 때 처리 방법을 알아봅니다. 또 보상에 따라 그룹 내 독립확률에 의해 그룹에 속한 아이템 각각이 독립 확률 연산을 통해 드랍되는 경우와 결합롹률에 의해 그룹에 속한 아이템 중 하나를 골라 드랍해야 하는 상황을 같은 데이터 안에서 처리하도록 구성해 보았습니다. 예제 데이터는 성장재료 중 하나 이상을 드랍하는 경우와 여러 캐릭터카드 중 딱 하나만 드랍하는 경우 데이터를 구성하는 방법을 설명했습니다.

한 스텝에 목표가 여러 개인 퀘스트에 대한 의견

이전에 자동퀘스트를 개발하면서 처음에는 스텝 하나에 한 가지 목표만 수행하는 간단한 모양으로 설계해 개발했습니다. 하지만 시간이 지나면서 한 스텝에 여러 목표를 동시에 수행할 수 있도록 만들어야 한다는 의견이 나왔습니다. 처음에는 여기에 강하게 반대했습니다만 결국 설계할 수밖에 없었습니다. 큰 비용을 지불해야만 했고 게임은 이제 이전으로는 돌아갈 수 없게 되었습니다. 하지만 다시 이로부터 시간이 흐르면서 자동퀘스트를 돌릴 때 같은 공간에서 한 스텝에 여러 목표를 동시에 자동으로 수행하는 모습이 상상한 것 보다 훨씬 좋다는 것을 깨달았습니다. 캐릭터는 적에게 습격 받아 불타는 마을 안에서 가까이 있는 일은 뭐든 했습니다. 가까이에 적들이 있다면 이들과 전투 해서 쓰러뜨리고 사람들의 피난을 막는 장애물이 있으면 파괴했으며 구석에 웅크리고 있는 사람들을 만나면 이들을 구출했습니다. 이러다가 다시 적들을 만나면 전투를 반복하며 앞으로 나아갔습니다. 이 장면은 꽤 그럴싸해 보였고 비용을 투자할 만 했다는 생각을 했습니다.

희미한 자동이동버튼

디아블로 이모탈은 이동은 자동이지만 전투는 수동입니다. 몬스터 스무 마리를 잡는 퀘스트를 수행할 때 퀘스트가이드를 터치하면 가까운 몬스터까지 자동이동한 다음 아무 것도 하지 않습니다. 나를 공격해 오는 적을 상대하는 일은 플레이어의 일입니다. 전투가 끝나면 다음 상대를 향해 이동해야 하는데 이 때마다 자동이동 조작을 해야 합니다. 두 가지 자동이동 방법을 제공합니다. 하나는 퀘스트가이드 인터페이스를 터치해서 껐다가 다시 켜면 자동이동을 시작하며 다른 하나는 화면 가운데 자동이동 버튼을 터치하는 것입니다. 이 자동이동 버튼은 화면 가운데 있어 현재 상태를 잘 알 수 있지만 수동으로 전투하는 도중 시야를 가리기 때문에 전투가 시작되면 조용히 사라졌다가 전투가 끝나면 다시 조용히 나타납니다. 그런데 전투가 끝난 다음 급한 마음에 다른 몬스터까지 빨리 이동하고 싶을 때마다 자동이동버튼이 조용히 나타나기를 기다리고 싶지 않을 수 있습니다. 그래서 자동이동버튼은 전투가 시작되어 희미해졌거나 화면에서 완전히 사라진 상태일 때도 그 자리를 터치하면 동작합니다.

괴물이 튀어나오는 인터랙션 오브젝트 설계

디아블로 이모탈을 플레이 하다 보면 검은 안개를 없애는 퀘스트가 있습니다. 검은 안개는 이전에 설명한 인터랙션 오브젝트와 거의 똑같습니다. 그런데 다가가서 인터랙션 하면 안에서 괴물들이 튀어나온 다음 안개가 사라집니다. 이 요구사항을 전에 설명했던 인터랙션 오브젝트 설계 (1), 인터랙션 오브젝트 설계 (2) 인터랙션 오브젝트 설계 (3)를 확장해 대응해 봅니다. 인터랙션 오브젝트 자체의 동작은 똑같습니다. 검은 안개가 있고 인터랙션 하면 사라집니다. 그런데 인터랙션 해서 상태가 바뀔 때 안에서 몬스터들이 스폰되어 지정된 방향을 향해 두 줄로 달려간 다음 캐릭터와 전투 하게 됩니다. 어떤 팀에서는 이런 요구사항을 이미 개발된 기능 조각을 조립할 수 있는 환경을 통해 추가 구현 없이도 만들 수 있을 겁니다. 또 다른 팀에서는 이를 별도 기능으로 만들어 에디터 환경에서 괴물이 튀어나오기로 약속된 인터랙션 오브젝트를 그냥 배치하기만 하도록 만들 수도 있을 텐데 여기서는 후자의 방법을 알아봅니다.

2022년 8월 블로그 요약 (4)

룰렛 이벤트

고문서와 비슷한 특정 행동에 보상하는 장치입니다. 고문서의 업적 시스템과 거의 비슷하지만 이 이벤트에 의해 정해진 날짜 범위 안에서만 업적 달성을 판단해 보상합니다. 이미 같은 행동에 대해 인게임에서 보상을 받고 있지만 여기에 이벤트를 통해 추가로 보상을 받아 이 행동을 하도록 더 강하게 유인합니다. 이 사례에서는 게임 내에서 정해진 행동을 함에 따라 ‘달의 은총’이라는 전용 재화를 받고 이 재화를 사용해 룰렛을 돌려 아이템을 얻습니다. 한 번 얻은 아이템은 다시 얻을 수 없기 때문에 초반에 원하는 아이템을 얻지 못했더라도 뒤로 갈수록 원하는 아이템을 받을 가능성이 높아지며 마지막으로는 가운데 있는 가치가 높은 아이템을 받을 수 있기 때문에 일단 시작하면 이벤트를 끝까지 진행할 동기가 생깁니다. 이벤트가 종료될 때 재화가 남아있을 수 있는데 게임에 따라 이를 이벤트를 종료하며 회수하거나 내부에 보이지 않는 채 기록해 뒀다가 추후 다른 이벤트에 재사용하기도 합니다.

보상 시스템 설계 (1)

이전 인터랙션 오브젝트 설계 (1), 인터랙션 오브젝트 설계 (2), 인터랙션 오브젝트 설계 (3)을 진행하면서 보상 시스템이 있다고 가정하고 진행했었습니다. 그래서 이번에는 주요 보상 요구사항을 파악해 이를 반영하는 단순한 보상 시스템을 설계해 보겠습니다. 여러 아이템을 드랍할 수 있어야 하고 각 아이템의 확률과 수량을 설정할 수 있어야 합니다. 확률, 클래스, 레벨 조건에 따라 드랍되는 아이템 그룹을 설정할 수 있어야 하고 같은 그룹 안에서 확률과 조건에 따라 일부 아이템만 드랍할 수 있어야 합니다. 단순한 구조부터 생각하면 단일 보상 하위에 아이템 목록이 직접 나타나고 각 아이템마다 확률과 수량을 설정하는 모양이 됩니다. 이 보상을 집행할 때 각 아이템마다 독립적으로 확률연산을 수행해 드랍할지 말지를 결정하고 드랍하기로 결정하면 수량 범위 안에서 드랍할 수량을 선택합니다.

공유오피스 사용기

사정 상 한동안 공유오피스를 사용하게 됐습니다. 공유오피스 광고를 보면 나 같은 늙고 병든 사람이 저런 힙하고 세련된 공간에서 일할 수 있을지 걱정이 앞섰습니다. 하지만 실제로는 들어간 순간부터 온갖 문제에 부딪쳤습니다. 잘 청소되지 않아 보기보다 훨씬 더러웠습니다. 이로 인한 문제가 한둘이 아닙니다. 구조상 환기가 불가능한 사무실들이 있습니다. 이들은 환기를 위해 출입구를 열어두는데 미관상, 보안상 문제가 있습니다. 사무가구가 생각보다 훨씬 저질이어서 불편하고 많은 사람이 사용하는데 비해 소모품 관리가 거의 안됩니다. 네트워크 속도가 지독하게 느리고 주변에 큰 소리를 내며 사무공간을 사용하는 조직이 있어도 전혀 통제할 방법이 없습니다. 공간 전체가 광고판이어서 한 순간도 눈을 편하게 쉴 수 있는 공간이 없을 뿐 아니라 공간의 복잡도와 밀집도에 비해 소방시설이 부족해 솔직히 좀 무서웠습니다.

개인 할일관리 사례

매일 업무내역을 로깅한다는 글을 보고 제가 업무내역을 로깅하는 요령을 공유해봅니다. 다만 업무내역을 직접 공유하면 회사와 계약을 깨게 되니 업무내역을 로깅하는 방법과 완전히 똑같은 방법을 사용하는 개인 할일 기록 방법을 소개합니다. 할일은 지라를 통해 관리합니다. 다른 더 편하고 예쁜 도구가 많지만 자잘한 요구사항에 맞춰 동작을 수정할 수 있는 도구는 지라가 가장 편했습니다. 태스크 타입마다 서로 다른 필드, 서로 다른 오토메이션을 필요로 했는데 이런 요구사항을 만족하는 도구는 거의 없었습니다. 작은 할일들을 생각날 때마다 지라 태스크로 만들어 수행하고 할일마다 메모거리가 있으면 지라 태스크에 답글을 답니다. 그날그날 처리한 지라 링크를 모아 두면 이 자체가 로그 역할을 합니다. 로그를 작성하는데 노력이 거의 필요하지 않기 때문에 로그를 남기면서도 할일 각각에 더 집중할 수 있었습니다.

2022년 8월 블로그 요약 (3)

인터랙션 오브젝트 설계 (3)

인터랙션 오브젝트 설계 (1)인터랙션 오브젝트 설계 (2)에서 각각 상태를 정의하고 상태를 전환시키기 위한 인터랙션을 정의했습니다. 이제 ‘무너진 후’ 상태로 전환될 때 보상을 드랍하고 정해진 시간이 지난 다음 다시 ‘무너지기 전’ 상태로 돌아와 다른 플레이어의 인터랙션을 받아야 합니다. 실제로 인터랙션 오브젝트를 만들 때는 이미 보상 시스템이 구축되어 있을 겁니다. 그래서 여기서는 보상 시스템이 뼈무더기로부터 얻을 보상이 이미 정의되어 있다고 가정하고 간단히 무너진 상태에 보상을 연결해 이 상태로 전환될 때 보상을 드랍하도록 했습니다. 이전까지는 두 번째 상태인 ‘무너진 후’ 상태가 되면 여기서 끝이었는데 이제 이전 상태로 돌아가는 부분을 추가했습니다. 단 이 결과대로 동작한다면 무너진 뼈무더기를 계속해서 지켜보고 있으면 뼈무더기가 부자연스럽게 이전 상태로 뿅! 하고 돌아갈 겁니다. 이건 실제로 만들 때 개선하는 것이 좋겠습니다.

칼자루 주화 상인은 무슨 역할을 하나요?

칼자루 주화는 디아블로 이모탈을 플레이함에 따라 고문서의 업적으로부터 자연스럽게 획득합니다. 칼자루 주화 상인에게 지불하고 물건을 살 수 있습니다. 칼자루 주화 자체는 업적을 통해 메타 플레이에 보상해 성장을 가속하고 매일 성장을 유발하는 플레이를 더 많이 함에 따라 더 많은 보상을 받을 수 있습니다. 칼자루 상인이 판매하는 상품은 일정 시간마다 바뀌는데 이는 일일보상처럼 플레이어의 규칙적인 행동에 보상해 이 행동을 유발합니다. 칼자루 주화 상인이 판매하는 상품은 대체로 다른 곳에서 구할 수 있는 가치보다 낮게 설정되어 있기 때문에 이곳에 있는 상품은 구입할 수 있다면 항상 모두 구입하는 것이 이익입니다.

왜 던전 안에서는 월드맵에서 다른 지역을 볼 수 없나요?

여러 게임에서 인던 안에서는 월드맵을 볼 수 없거나 맵 자체를 볼 수 없도록 합니다. 디아블로 이모탈에서는 던전 안에서 월드맵 대신 던전맵만 보이고 리니지W에서는 월드맵 버튼을 터치하면 아예 지금은 사용할 수 없는 기능이라는 메시지가 나옵니다. 던전 안에서 월드맵을 볼 수 없는 이유는 월드맵에 포함된 이동 기능 때문입니다. 우러드맵은 단순한 맵이 아니라 맵에 표시된 각 지역으로 이동하는 기능을 포함하고 있습니다. 던전은 던전 플레이를 끝내기 전에 다른 곳에 이동했다가 돌아오는 플레이를 허용할 때 수많은 예외를 정의해야만 합니다. 그래서 던전에 한 번 들어오면 던전이 끝날 때까지는 다른 곳으로 이동하지 못하게 하고 대신 던전 세션의 길이를 줄이는 추세입니다.

왜 던전 안에서는 퀘스트 시스템이 달라지나요?

퀘스트가이드 인터페이스의 자동이동 기능 때문입니다. 퍼시스턴트 월드에서는 퀘스트가이드를 조작해 퀘스트가 가리키는 지역으로 걸어서 이동할 수 있습니다. 하지만 인스턴스 던전은 던전 외부로부터 걸어서 이동할 수 있도록 만들어지지 않았을 겁니다. 또 한참 던전을 플레이 하는 도중에 퀘스트가이드를 터치해 던전 밖으로 나가는 동작을 허용하면 던전이 중간에 멈췄다가 다시 진행될 때 생기는 여러 예외상황을 정의하고 대응해야만 합니다. 그렇다고 퀘스트가이드에 던전 안에서 플레이 할 수 있는 퀘스트만 표시하자니 던전 안에 들어가면 갑자기 몇몇 퀘스트가 사라져 이상하게 보일 수 있습니다. 그래서 디아블로 이모탈에서는 던전 안에 들어가면 던전 안에서 수행할 수 있는 퀘스트만 보여주되 아예 던전 바깥과는 다른 인터페이스를 사용해 덜 이상하게 느끼도록 함과 동시에 퀘스트가이드를 사용해 던전 밖으로 나가지 못하도록 합니다.

2022년 8월 블로그 요약 (2)

인터랙션 오브젝트 설계 (2)

인터랙션 오브젝트 설계 (1)에서 인터랙션 오브젝트에는 상태와 전환상태가 있다고 했습니다. 뼈무더기 사례에서 상태는 무너지기 전과 후의 두 가지 상태, 전환상태는 무너지기 전에서 무너진 후로 전환하는 ‘무너지는 도중’ 상태입니다. 인터랙션 오브젝트의 상태를 전환하기 위해서는 플레이어의 인터랙션이 필요합니다. 인터랙션을 대강 정의해 보면 뼈무더기에 다가가면 인터랙션 버튼이 나타나고, 이를 터치하면 정해진 시간 동안 인터랙션 하며 인터랙션이 끝나면 인터랙션 오브젝트의 상태가 전환됩니다. 인터랙션 도중 피격 당해 대미지를 입으면 인터랙션이 취소되고 인터랙션 도중 플레이어 역시 애니메이션을 재생하도록 설정할 수 있습니다. 여기서는 인터랙션 오브젝트에 이런 인터랙션을 받을 수 있도록 설정했습니다. 프로젝트에 따라 여러 오브젝트에 인터랙션 할 수 있어 이 인터랙션을 별도 데이터로 분리해 관리하기도 합니다.

언제 순간이동하고 언제 걸어가나요?

디아블로 이모탈의 자동퀘스트를 플레이 해 보면 어떤 때는 걸어가고 어떤 때는 순간이동 하는 것을 볼 수 있습니다. 퀘스트가이드를 터치해 이동을 시작할 때 목적지까지 직접 걸어서 이동하는 거리와 목적지 근처 순간이동진으로 순간이동한 다음 나머지 거리를 걸어서 이동하는 거리를 비교해 짧은 쪽으로 행동합니다. 지금부터 걸어서 이동하는 거리가 더 짧다면 처음부터 걸어서 이동하고 순간이동진부터 남은 거리를 걸어서 이동할 때 거리가 짧다면 바로 순간이동을 시도합니다. 단 순간이동을 캐스팅 하는 도중 여러 이유로 순간이동에 실패하면 바로 걸어서 이동하기 시작합니다. 상위 컨텐츠에 강한 경쟁 요소가 있는 게임은 게임 내 여러 시스템들이 플레이어의 시간을 아끼는 방향으로 설계됩니다. 순간이동 역시 여기 해당합니다.

왜 자동이동 메시지에 남은 거리를 표시하나요?

자동이동 할 때 남은 거리를 표시하는 게임은 상위 컨텐츠에 강한 경쟁요소가 있습니다. 내가 지금 낭비하는 시간은 나보다 위에서 경쟁하는 사람들이 성장하는데 사용할 시간입니다. 나는 내가 성장에 사용할 시간을 최대한 단축해야 다음 번 그들과 맞붙을 때 유리한 위치에 설 수 있습니다. 그래서 항상 순간이동 버튼을 사용해 이동하곤 합니다. 이런 상황에서 순간이동을 사용하지 않고 걸어서 이동해야만 하는 상황이라면 적어도 남은 거리를 표시해 이 이동에 걸리는 시간을 예상할 수 있게 해야 합니다. 가장 좋은 방법은 남은 거리 대신 남은 예상시간을 표시하는 것입니다. 하지만 시간은 여러 방해 요소 때문에 정확히 표현하기 어렵기 때문에 이를 거리로 갈음해 표시합니다. 모든 사람들이 시간에 쫓기며 플레이 하고 있습니다. 이를 게임디자인 곳곳에 반영해야 합니다.

자동전투 기능의 내러티브화 사례

현대 모바일 게임에 자동퀘스트와 자동전투는 이 장르가 모바일에 있을 수 있도록 해주는 가장 중요한 메커닉 중 하나입니다. 너무 중요하고 또 너무 당연하다 보니 이 기능의 존재를 설명할 때 이 시스템이 존재함을 설명하는데 그치곤 합니다. 튜토리얼에서 그냥 퀘스트가이드 인터페이스를 터치하면 자동퀘스트가 시작되며 자동전투 버튼을 터치하면 자동전투가 시작된다는 것 이외에는 아무것도 설명하지 않습니다. 우리들도 딱히 이 상황이 이상하다고 생각하지 않아 왔습니다. 그런데 리니지W에서는 마법인형을 통해 자동전투를 할 수 있다고 설명합니다. 마법인형을 얻지 못했을 때는 내가 직접 전투해야 하지만 마법인형을 얻어 시험해보는 시점부터는 자동으로 전투할 수 있습니다. 너무나 당연한 기능이지만 내리티브를 통해 자동전투가 게임 시스템의 일부이고 동시에 세계관의 일부임을 전달하는 경험이 좋았습니다.

악마의 살점 퀘스트는 왜 여러 단계로 되어있나요?

디아블로 이모탈의 웬만한 현상금 사냥 퀘스트는 한 단계로 되어 있습니다. 위치에 이동해서 목표 몬스터를 정해진 수량만큼 처치하면 끝입니다. 그런데 종종 두 단계 이상으로 된 퀘스트들이 있고 악마의 살점 수집도 그런 퀘스트 중 하나입니다. 몬스터를 처치해 악마의 살점을 수집한 다음 이를 재단에 바쳐 보스 몬스터를 스폰시켜 이를 처치하는데까지가 한 퀘스트로 되어 있습니다. 성장구간에서는 캐릭터의 현재 강함보다 약간 더 강한 몬스터를 출연시켜 다른 플레이어들로부터 도움을 받거나 포기할 수 있는 허들을 만드는데 사용합니다. 이후에는 필드에 보스를 스폰시키는 이벤트를 작위적이지 않도록 하기 위해 플레이어들의 플레이에 따라 보스가 스폰되는 메커닉 역할도 합니다.

2022년 8월 블로그 요약 (1)

계약 상품

계약 상품은 온라인 게임에 소액결제가 도입된 이후 가장 흥미로운 유료 상품이라고 생각합니다. 플레이어는 상품 가격을 결제해 구입하지만 여느 상품과 달리 구입 시점에 상품의 전체 가치를 받지 않습니다. 플레이에 따라 달성한 레벨에 따라 가치를 일부분씩 받으며 이 경우에는 정복자 레벨 85에 도달해야 모든 지불한 금액에 해당하는 모든 가치를 받을 수 있습니다. 플레이어는 자신의 선택에 따라 게임을 계속하거나 그만 둘 수 있지만 이 계약 상품을 구입하면 상품 구입비를 매몰비용으로 처리하기 어려워지기 때문에 게임에 더 오래 남아 있을 가능성이 커집니다. 또한 이 상품은 구매하지 않아도 계속해서 이 화면으로부터 무료 보상을 받도록 설계하는데 이 때마다 받지 못한 유료 아이템의 전체 가치와 내가 지불할 금액을 비교해 보게 만듭니다. 참고로 2만5천원으로 살 수 있는 가치를 계산해보자에서 정복자 레벨 65를 달성한 시점에서 전체 아이템의 가치를 계산해봤습니다. 꽤 사고 싶네요.

인터랙션 오브젝트 설계 (1)

굳이 모바일 게임이 아니더라도 웬만한 MMO 게임에서 자주 마주칠 수 있는 단순한 형태의 인터랙션 오브젝트가 어떻게 구성되어 있는지 알아봅니다. 분명 더 똑똑한 설계 방법이 있겠지만 그동안 제가 주로 경험한 더 바쁘고 더 많은 인원이 비슷한 수준으로 일하는 조직에서 주로 사용한 방법 기준으로 작성했습니다. 달성하려는 시나리오는 디아블로 이모탈에 나오는 뼈무더기입니다. 뼈무더기는 쌓여 있고 캐릭터가 다가가 인터랙션 하면 무너지며 보상을 드랍합니다. 한 번 무너진 뼈무더기는 정해진 시간 안에는 다시 인터랙션 할 수 없습니다. 이 시나리오를 달성하는 시스템을 구축해보고 나면 게임에 나오는 어지간한 인터랙션 오브젝트로 쉽게 확장할 수 있습니다. 일단 인터랙션 오브젝트가 두 가지 상태와 전환상태로 구성되는 점을 파악해 이 특징을 데이터로 설명해 봅시다.

왜 퀘스트 가이드 인터페이스에 순간이동 버튼이 있나요?

언제는 순간이동하고 언제는 걸어가는지를 설명할 때 예로 든 디아블로 이모탈은 퀘스트가이드 인터페이스를 터치할 때 상황에 따라 순간이동하거나 걸어갑니다. 반면 리니지W에는 퀘스트가이드 인터페이스 구석에 순간이동 버튼이 분리되어 있습니다. 그래서 퀘스트가이드의 넓은 부분을 터치하면 항상 걸어서 이동하고 순간이동 버튼을 터치하면 항상 순간이동하며 이를 자동으로 판단해주지 않습니다. 이유는 리니지에서 순간이동은 기본 재화를 요구하는 유료 기능이기 때문입니다. 만약 리니지에서 디아블로처럼 상황에 따라 적당한 이동 방법을 게임이 판단해서 실행하면 큰 반발에 부딪치게 됩니다. 절대로 플레이어의 의지와 관계 없이 재화를 받아서는 안됩니다.

전통적인 모바일 튜토리얼과 인터페이스의 충돌 사례

모바일 리니지 시리즈의 인터페이스 디자인 철학 중 하나는 핵심 인터페이스가 절대로 중앙의 전투 화면을 가려서는 안된다는 것입니다. 리니지는 필드 PvP를 허용하기 때문에 안전하지 않은 곳에서는 항시 전투 상황을 주시하고 있어야 하고 상황에 따라 재빨리 행동해야 합니다. 모바일 환경에서 모든 인터페이스를 이렇게 만들 수는 없었지만 인벤토리, 인첸트, 스테이터스, 장비장착 같은 주요 기능은 화면 중앙을 가리지 않기 위해 부자연스러움을 감수하며 디자인 되어 있습니다. 반면 전통적인 모바일 튜토리얼은 화면 전체를 덮고 플레이어에게 알려줘야 할 부분만 조작할 수 있게 만든 채로 진행되는데 이는 인터페이스 설계 철학과 충돌합니다. 게임 초반이어서 이이 충돌 상황이 딱히 문제를 일으키지 않았지만 잠재적으로 튜토리얼 시스템을 개선하지 않으면 위험할 수 있습니다.

인터랙션 버튼의 위치

인터랙션 버튼은 인터랙션 할 수 있는 오브젝트 가까이 가면 나타납니다. 평소에는 누를 일이 없으니 아예 나타나지 않습니다. 디아블로 이모탈에서는 오른쪽 하단 조작계에서 엄지손가락을 뻗어서 닿을 수 있는 위치에 나타납니다. 이 자리는 눈에 잘 띄기 때문에 인터랙션 가능한 위치에 도착했음을 쉽게 알 수 있습니다. 대신 비슷한 위치에 궁스킬 버튼도 나타나므로 실수로 조작할 가능성이 있습니다. 실수로 스킬을 써버리면 좀 아쉽긴 하지만 그리 치명적이지는 않아 이 자리에 인터랙션 버튼을 놔뒀습니다. 반면 리니지는 이런 실수가 심각한 결과를 불러일으킬 수도 있습니다. 리니지에서는 실수를 막기 위해 인터랙션 버튼이 오른쪽 하단 조작계에서 엄지손가락을 완전히 접어야 터치할 수 있는 안쪽에 나타납니다. 손으로 조작계를 가리고 있어 인터랙션 버튼이 나타났는지를 잘 알 수는 없지만 웬만해서는 실수하지 않는 자리입니다.

자동퀘스트 스텝이 끝나면 다음으로 넘어가야 할까요?

자동퀘스트를 설계하고 개발하면서 가장 많이 들은 질문입니다. 그때와 지금 모두 같은 입장인데 자동퀘스트 스텝이 끝나면 다음 스텝으로 넘어가야 합니다. 단 게임에 따라 그 다음 스텝도 자동으로 수행할지 아니면 플레이어의 입력을 기다릴지는 선택의 여지가 있습니다. 이번 스텝의 목표가 전투가 아니라면 이번 스텝 목표를 달성하면 다음 스텝으로 넘어간 다음 플레이어의 입력을 대기합니다. 캐릭터는 아무 행동도 하지 않고 그냥 서 있을 겁니다. 이번 스텝 목표가 전투라면 자동전투를 통해 스텝 목표를 달성하고 다음 스텝으로 넘어가지만 자동전투는 유지합니다. 캐릭터는 자동전투를 하고 있지만 퀘스트는 진행되지 않습니다. 퀘스트 스텝 목표를 달성할 때 자동전투를 멈추지 않는 이유는 선공 몬스터로부터 맞아 죽을 수 있기 때문입니다. 이런 상황을 방지하기 위해 자동 반격을 넣는 경우도 있는데 이건 상황을 꽤 복잡하게 만들어 추천하지는 않습니다.

2022년 7월 블로그 요약 (4)

버프와 디버프를 표시하는 규칙들

버프 및 디버프(이하 버프) 정보는 캐릭터의 남은 체력만큼 중요한 정보입니다. 그래서 주로 체력 근처에 함께 표시합니다. 버프 정보는 좁은 공간에 정보를 아주 많이 표시해야 합니다. 가령 버프와 디버프를 구분할 수 있어야 하고 각각의 남은 시간이 어느 정도인지 알 수 있어야 하며 같은 계열 버프가 얼마나 중첩되었는지도 파악할 수 있어야 합니다. 남은 시간 순서대로 정렬하면서도 치명적인 디버프는 앞쪽에 정렬해야 하고 같은 목록에 긴 기간에 따라 적용되는 길드 버프나 유료 버프류도 표시해야 합니다. 이런 상황에서 버프 종류는 많고 아이콘은 버프와 디버프를 구분하지 않고 제작될 때가 많습니다. 화면 상에서는 좁은 공간을 차지하는 인터페이스이지만 제대로 만들려고 마음먹으면 상당히 까다롭습니다.

부드러운 패스워드 확인 방법

패스워드 중에는 자주 사용하지 않는 것들이 있습니다. 제 경우에는 비트락커 투 고 패스워드가 그렇습니다. 평소에는 입력할 일이 거의 없기 때문에 패스워드를 잘 기억하고 있는지, 관리하고 있는지 확인할 기회가 없습니다. 몇 주 동안 잊고 살다가 어느 날 암호화된 드라이브를 분리했다가 다시 연결할 일이 생길 때 내가 잘못된 패스워드를 보관했다면 정말 큰일입니다. 가끔 패스워드가 여전히 유효한지 확인해 보고 싶지만 드라이브를 직접 분리해 보거나 패스워드를 삭제했다가 재설정하는 방법 밖에 없습니다. 상당히 부담스럽습니다. 반면 텔레그램 메신저는 가끔 이유 없이 계정 패스워드를 묻습니다. 답하지 않을 수도 있고 시험해볼 수도 있는데 덕분에 올바른 패스워드를 보관하고 있는지 부드럽게 확인해볼 수 있어 좋았습니다.

즈위프트 라이딩 할 때 HUD를 껐더니 경험이 더 좋았습니다

즈위프트는 자전거로 가상 라이딩을 하는 앱입니다. 이렇게 표현하면 잘 와닿지 않지만 우리들에게 익숙한 방법으로 설명하면 자전거 MMO라고도 할 수 있습니다. 이 정의가 별로 잘못되지 않았습니다. 라이딩 할 때 함께 달리는 다른 사람들의 현재 위치와 내가 내는 파워, 케이던스, 속도, 심박 등을 함께 화면에 띄워줍니다. 평소에는 항상 이 숫자들을 보고 달리며 페이스를 조절했습니다. 즈위프트 컴패니언 앱이라는 모바일 앱을 사용하면 화면의 숫자들을 내 폰에만 띄우고 화면에는 아무것도 없이 자전거를 타는 나와 주변 모습만 표시할 수도 있는데 이렇게 설정하고 달렸더니 밖에서 타는 것과 비슷한 느낌으로 숫자를 보는 대신 주변 사람들을 보며 페이스를 맞추는 경험을 할 수 있었습니다. 개인적으론 이쪽이 더 좋았습니다.

퍼시스턴트 월드에서 개인화된 경험

이제 웬만한 MMO 게임에서 강하게 개인화된 경험은 인스턴스 던전으로 옮겨졌지만 여전히 퍼시스턴트 월드에서도 개인화된 경험에 대한 미련을 버리지 못했습니다. 성장구간에서 퀘스트를 할 때 자잘한 개인화된 경험을 위해 던전에 들여보내는 것도 썩 좋은 경험은 아닙니다. 또 만드는 입장에서 상당히 손이 많이 가고 또 관리하기 어렵기도 하고요. 그래서 퍼시스턴트 월드에서도 간단한 인터랙션 오브젝트나 NPC는 플레이어에게만 표시하기도 합니다. NPC와 대화하는 모습은 다른 플레이어들이 보기에도 딱히 이상하지 않고 인터랙션 오브젝트 역시 플레이어 애니메이션을 동기화하지 않으면 딱히 이상해 보이지 않습니다. 다만 개인화된 경험에 전투 가능한 몬스터가 들어있다면 이는 완전히 개인화하기는 좀 어렵습니다. 그래서 몬스터가 들어가는 이벤트는 던전에서 진행하거나 몬스터가 다른 플레이어에게도 노출된다는 점을 감안해 퀘스트를 개발합니다.

언제 순간이동하고 언제 걸어가나요?

이 규칙을 정하는데 고려할 가장 중요한 점은 우리는 플레이어가 이동하는데 사용하는 시간을 줄여 줘야 하는 것입니다. 플레이어가 본격적으로 시간을 투자해야 할 다른 행동들이 있기 때문에 이동에서 그런 시간을 함부로 축내면 안됩니다. 그래서 퀘스트가이드 인터페이스를 터치해 이동하려고 할 때 순간이동과 걸어서 이동 양쪽의 예상 소요시간을 계산한 다음 시간이 짧은 쪽을 선택합니다. 왜 자동이동 메시지에 남은 거리를 표시하나요?에서 설명한 것처럼 시간을 직접 계산하기는 어려우므로 시간을 거리로 갈음해서 계산하고 비교합니다. 캐릭터의 현재 위치에서 목적지까지 걸어서 이동할 때 거리와 순간이동 지점으로 이동한 다음 남은 거리를 걸어서 이동할 거리를 비교해 더 짧은 방법을 선택합니다. 다만 순간이동에 비용을 부과하는 게임은 이렇게 하지 않습니다.

2022년 7월 블로그 요약 (3)

마일스톤 시작할 때 기획서가 완성되어 있으면 좋겠어요

여러 프로젝트를 진행하면서 마일스톤 시작할 때 마일스톤 목표에 해당하는 기획서가 모두 완성된 상태였으면 좋겠다는 말을 여러 번 들었습니다. 기획팀은 하나이고 팀에 속한 모든 스탭들이 이전 마일스톤 마감 기간에 이전 마일스톤 업무 대응을 하고 있기 때문에 이 상황을 바꾸지 않으면 이전 마일스톤 후반에 다음 마일스톤 기획서를 먼저 작성하기는 어렵습니다. 이상적으로는 마일스톤 목표를 줄여 기획팀에 마일스톤 후반 시간을 확보해 주거나 아예 인원을 늘려 이번 마일스톤 마감에 대응하는 인력과 그렇지 않은 인력을 구분한다면 다음 마일스톤 시작할 때 기획서가 완성되어 있는 행복한 상황을 만들 수 있습니다.

지역 타이틀은 언제 보여주고 언제 안 보여줄까요?

단순해 보이지만 인게임에서 실제 동작할 상황을 생각하기 시작하면 점점 더 복잡해지는 사례입니다. 지역 타이틀은 단순히 레벨에 볼륨을 쳐 놓고 볼륨 안에 들어갈 때 보여주면 됩니다. 하지만 캐릭터가 짧은 시간 안에 볼륨 안팎을 오갈 때 지역 타이틀이 계속해서 반복될 겁니다. 인터페이스에 쿨타임을 줘 해결할 수 있지만 쿨타임보다 짧은 시간 안에 지역 타이틀을 보여줘야 하는 존 이동이 일어난다든지 걸어서 볼륨에 진입하는 대신 다른 이동수단을 사용해 불연속적으로 볼륨에 진입해 이벤트가 일어나지 않거나 순간이동을 통해 볼륨 안에 생성되는 등의 상황을 고려해야 합니다. 다른 주의사항은 지역 타이틀 업무를 하고 있었더라도 인터페이스에 쿨타임 기능을 넣는 업무는 지역 타이틀 관점이 아니라 공통 인터페이스 관점에서 처리하는 것입니다.

왜 경험치 게이지는 화면 아래쪽에 있나요?

경험치 게이지는 바로 앞 지역 타이틀은 언제 보여주고 언제 안 보여줄까요?와 비슷하게 너무 당연해 보이지만 이야깃거리가 있는 요소입니다. 게임 중후반에 가면 레벨을 올리는데 막대한 플레이를 요구하는 게임에서 가장 올리기 어렵고 변화가 적은 숫자가 경험치입니다. 동시에 플레이어들이 가장 큰 관심을 가지는 숫자 중 하나이기도 합니다. 숫자가 잘 변하지 않기 때문에 시각적으로 표현하려면 화면에서 가장 긴 독립적인 영역을 사용해야 하고 현대 모바일 게임에서는 화면 가장 아래쪽 영역이 이에 해당합니다. 여기에 최대한 길게 경험치 게이지를 표시해 작은 변화라도 눈에 띄게 합니다. 동시에 경험치 숫자는 소숫점 여러 자리까지 표시해 몬스터 한 마리를 잡더라도 숫자에 변화가 일어나도록 합니다.

이동경로를 파괴하는 던전 연출에 대해

인스턴스 던전에서 소수의 플레이어들을 대상으로 한 강력한 연출은 플레이어들에게 기억에 남는 경험을 줍니다. 종종 이런 연출은 이동경로 파괴를 포함하는데 뒤로 돌아갈 경로가 부서지는 연출과 이에 의해 실제로 환경이 변화하는 경험은 훌륭하지만 만드는 사람 입장에서는 고려할 점이 많습니다. 먼저 이동 경로를 파괴하기에 앞서 모든 플레이어들이 이 경로를 지나갔는지 확인해야 합니다. 또 파괴된 경로 이전에 부활 지점이 있어 죽었을 때 플레이가 불가능해지지는 않는지 확인해야 합니다. 부활 규칙에 따라 파괴된 경로 이후에 부활 지점이 있다 하더라도 이곳에서 부활하지 않는 경우를 고려해야 합니다. 이런 고려를 좀 단순하게 만들기 위해 보스룸 같은 개념을 사용하기도 합니다.

어떤 기획에는 단단한 컨셉이 필요해요

시스템디자인 하던 사람들에게 규모가 큰 할일을 맡기면 잘 진행되지 않을 때가 있는데 규모가 큰 기능도 작은 기능의 집합으로 보고 기능 단위로 접근할 때가 대표적입니다. 큰 기능은 물론 작은 기능의 집합으로 분해할 수도 있지만 이렇게 진행하면 협업 부서의 모든 사람들이 자잘한 기능 하나하나의 필요여부에 의문을 제기하기도 하고 자신이 경험한 더 나은 플레이를 제시하기도 합니다. 이런 의견을 모두 받아들이면 좋겠지만 시간이 제한되어 있어 모두의 의견을 받다 보면 개인이 불행해집니다. 규모가 큰 기능은 낱낱의 기능 요구사항의 집합으로 접근하기에 앞서 기능 전체를 관통하는 단단한 컨셉이 필요합니다. 컨셉은 실제 낱낱의 기능에는 별 영향을 끼치지 않지만 이 기능의 집합을 바라보는 협업부서 사람들에게 낱낱의 기능 집합을 도출하게 된 이유를 설명하는 역할을 합니다.

문장 없이 도는 균열

디아블로 이모탈의 태고 균열은 문장을 넣고 던전을 돌아 전설 아이템과 자원을 획득하는 장치입니다. 문장은 일반 문장과 전설 문장, 그리고 영원의 전설 문장으로 나뉘며 문장의 수량과 구성에 따라 다른 보상을 받게 됩니다. 그런데 이 균열은 아예 문장 없이도 플레이 할 수 있습니다. 던전에 문장을 설정하는 행동이 대단히 중요하다면 문장을 던전 입장 재화로 설정해 문장이 없으면 아예 던전에 입장하지 못하도록 설계할 수도 있습니다. 이 설계도 우효합니다. 문장 없이 균열 돌기를 허용하면 균열이 상대적으로 느슨한 메커닉이 되지만 문장을 입장 재화로 설계하면 성장 크리티컬한 메커닉으로 변합니다. 그래서 이 설계는 신중해야 합니다.

2022년 7월 블로그 요약 (2)

언제 던전 입장횟수를 차감해야 할까요?

던전 플레이에 입장 재화를 요구하는 던전을 대하는 플레이어들의 관점은 던전이라기보다는 입장 재화에 시간을 더해 보상과 맞바꾸는 메커닉에 가깝습니다. 게임이 플레이어들 사이에 더 강한 경쟁을 요구할 때 던전에 재화를 투입했음에도 보상을 받지 못하는 상황에 플레이어들은 더 민감하게 반응합니다. 전통적인 입장횟수 차감 방법은 던전에 입장할 때 하는 것입니다. 가장 단순하고 이해하기 쉽습니다. 다만 이 방법은 현대 모바일 환경에서 순단이나 클라이언트 종료 등의 원인으로 문제가 생길 수 있어 던전이 클리어 될 때 차감하기도 합니다. 이때는 던전 클리어 조건을 정확히 설계해야 합니다. 마지막으로 던전의 핵심 보상을 획득할 때 차감할 수도 있습니다.

균열 끝의 대장장이

디아블로 이모탈에서 균열 끝에 나오는 대장장이는 균열을 반복해서 돌 수 있게 도와주는 편리한 메커닉입니다. 던전을 반복해서 플레이함에 따라 인벤토리가 아이템으로 가득 차는데 이를 비워 성장재료를 얻으려면 대장장이에게까지 이동해야 합니다. 서부원정지에서 대장장이는 순간이동으로 이동할 만큼 멀리 떨어져 있습니다. 인벤토리를 비우려면 균열 플레이를 멈출 수밖에 없는데 균열 끝에 대장장이가 나타나 정식 대장장이에게 덜 방문하고 균열에 더 집중하게 도와줍니다. 이 대장장이는 기능 상으로도 편리할 뿐 아니라 게임 전체 설정을 크게 망가뜨리지 않습니다. 이전에 참여했던 프로젝트에서 반복 플레이를 요구하는 던전에 비슷한 장치를 도입하려고 했지만 그리 간단하지 않았고 균열 끝 대장장이도 분명 만만찮았을 거라고 예상합니다.

파괴적 행동 재확인

게임을 포함한 여러 컴퓨터 프로그램 인터페이스에서 중요한 행동을 실행하기 전에 사용자에게 이 행동을 원하는 것이 맞는지 확인하는 절차가 있습니다. 이런 상황을 가장 똑똑하게 처리하는 방법은 행동을 되돌릴 수 있게 하는 것입니다. 하지만 모든 행동을 그렇게 할 수는 없습니다. 가령 돈을 보낸다면 이를 되돌리기는 아주 어려울 겁니다. 게임에서도 비슷한데 전설 장비를 분해하는 행동이 그렇습니다. 그래서 전설을 분해하기 전에 이 파괴적 행동이 혹시 실수에 의한 것인지 해결하는 여러 절차가 있습니다. 먼저 전설 장비로부터 정수를 추출하는 기능은 기존 분해 기능을 가진 대장장이와 분리된 별도 NPC를 통해야 합니다. 또 장비를 선택할 때 기존 인벤토리와 다른 완전히 별도로 만들어진 선택 인터페이스를 통해 선택합니다. 마지막으로 전통적인 ‘정말로 하시겠습니까?’ 다이얼로그를 거칩니다. 서로 다른 세 가지 방법으로 파괴적 행동을 재확인합니다.

내가 컨플루언스를 싫어하는 이유

컨플루언스 위키를 주력으로 사용하지만 이를 싫어하는 여러 가지 이유가 있습니다. 비싸고, 검색이 만족스럽지 않습니다. 이미지, 비디오를 처리하는 방식이 낡았습니다. 문서 간의 연결관계 관리 방법이 전통적인 수준에 머무릅니다. 여느 위키라면 그런가보다 했겠지만 컨플루언스는 대규모 위키를 관리하는 도구로써 좀 더 나은 방법을 제시해야 한다고 생각합니다. 드래프트 상태 문서 여러 개를 같은 목적에 의해 한 번에 관리하고 한 번에 공개하는 기능이 없습니다. 노션에서 지원하는 강력한 데이터베이스 기능을 컨플루언스 자체적으로 지원하지 않습니다. 플러그인이 있지만 충분히 잘 통합되지 않습니다. 배치 익스포트 기능 거의 대부분이 정상 동작하지 않습니다. 오히려 클라우드 시대에 쓸모 없는 전체 백업 기능은 정상 동작합니다. 현대의 위키 소프트웨어라고 하기엔 모바일 지원이 형편없습니다. 마지막으로 기대만큼 안정적이지 않습니다.

필요 재화를 언제 버튼 위에 표시할까요?

버튼 위에 필요 재화 종류와 양을 표시하는 것은 모바일 게임에서 재화를 소모하는 행동을 할 때 자주 사용하는 인터페이스입니다. 경우에 따라 재화를 버튼 안에 표시하거나 버튼 위쪽에 표시할 수 있습니다. 인터페이스 정책에 따라 달라지겠지만 주로 요구하는 재화가 하나일 때, 이 재화가 게임의 주요 재화에 가까울 때 필요 재화를 버튼 안에 표시합니다. 간단히 골드만 요구하면 버튼 안에 이를 표시합니다. 반대로 재화가 둘 이상일 때, 이 재화들이 게임의 주요 재화와 멀수록 필요 재화를 버튼 바깥에 표시합니다. 재화를 동시에 둘 이상 요구하는 설계는 웬만하면 피해야 하지만 이를 사용해야만 한다면 버튼 안에 넣기에는 이미 너무 복잡합니다. 또 주요 재화와 멀다면 플레이어는 이 재화가 뭔지, 어디서 얻었는지조차 모를 수 있어 버튼 안에 넣으면 이 정보를 제공하기 어렵습니다. 그래서 버튼 바깥에 표시합니다.

기획서 작성에서 외부 팀 리뷰 과정의 의미

여러 프로젝트에서 기획서 작성 후 처음 외부 팀에 리뷰하는 자리가 기획서 작성 완료를 의미하지 않는다고 여러 차례 관리 부서에 설명해 왔지만 설명할 때는 이해하는 것처럼 행동하다가 기획서 작성 일정을 추긍하는 시점에는 모른 척 행동할 때가 많았습니다. 많다기보다는 ‘모든’ 프로젝트의 관리 부서들이 모두 다 똑같이 행동했습니다. 작은 팀에서는 보다 유기적으로 행동하겠지만 규모가 큰 팀에서 어느 정도 폭포수 형식으로 개발하는 것을 부정할 생각은 전혀 없습니다. 하지만 마일스톤을 시작할 때 모든 요구사항들이 아웃라인 수준으로 모든 협업 부서에 공유되지 않는 한 기획서 작성 후 외부 팀 리뷰는 협업부서들이 거의 처음으로 요구사항을 전달 받는 자리입니다. 이 단계는 기획서 작성 완료와는 아직 한참 멀리 떨어져 있으며 결코 기획서 작성 완료로 평가해서는 안됩니다

2022년 7월 블로그 요약 (1)

왜 자동획득 옵션에 전설템이 없나요?

디아블로 이모탈은 전투할 때 아이템을 자동으로 줍습니다. ALT키를 눌러 아이템 하나하나의 이름을 확인하며 줍는 경험도 나쁘지 않았지만 모바일 환경에서 플레이 할 것을 고려해 어느 정도 경험을 타협했을 겁니다. 옵션에서 아이템 등급에 따라 자동으로 주울지를 결정할 수 있는데 이 옵션에는 전설 등급이 없습니다. 전설은 항상 수동으로 주워야 합니다. 이유는 디아블로에서 전설 아이템이 가지는 상징성, 성장 시스템에 속한 위상, 그리고 전설 아이템을 획득하는 경험 때문입니다. 거칠게 말하면 디아블로에서 전설 아이템을 획득하는 경험이 아주 쩔기 때문에 이 경험을 생략할 수 없도록 했습니다.

숫자 조사처리 사례와 요구사항 정의의 업무범위

게임에 조사처리 기능을 넣은 다음 시간이 흐른 뒤 조사 앞 단어가 숫자로 끝날 때 조사처리가 예상한 대로 동작하지 않는 문제를 해결하던 경험 이야기입니다. 조사처리는 한국어로 서비스하는 게임에는 당연히 필요하다고 생각해 왔지만 실제로 이 기능을 마일스톤 계획에 끼워넣기 위해서는 예상보다 훨씬 어려운 설득을 해야 했습니다. 그 결과 조사처리는 최소한의 기능으로만 동작해 단어가 숫자로 끝날 때 잘못된 조사가 붙었는데 이 문제를 해결하기는 더더욱 어려웠습니다. 규칙은 복잡하지 않았지만 처음 기능 개발을 요청할 때 이런 케이스에 대한 대비가 왜 되어 있지 않았는지 추긍 받아야 했고 결국 이 문제는 마일스톤 마감에 포함되지 않았습니다.

왜 디아블로 이모탈은 전투가 자동이 아니죠?

자동전투를 지원하는 모바일 MMO 게임과 장르가 다르기 때문입니다. 자동전투를 지원하는 여느 모바일 MMO 게임은 장르에 MMORPG라고 표시되지만 실제로 우리가 플레이 하는 게임의 장르는 매니지먼트입니다. 플레이어가 하는 일은 플레이어캐릭터가 원활히 성장할 수 있도록 포션을 채워주고 사냥터를 선택하고 길드에 가입해 버프를 받아주고 가득 찬 인벤토리를 정리해주고 또 아이템 컬렉션을 채워 추가 스탯을 받도록 하는 겁니다. 그러면 내 플레이어캐릭터가 전투를 더 잘 할 수 있고 더 빨리 성장해 경쟁에서 승리할 수 있습니다. 반면 디아블로 이모탈은 전통적인 디아블로와 비교해 이런 매니지먼트 속성이 없다고 할 수는 없지만 여전히 핵 앤 슬래시 장르를 유지하고 있습니다. 전투를 직접 조작해 핵 앤 슬래시 플레이를 하는 경험 자체가 이 장르의 핵심입니다. 자동전투를 지원할 수 있었겠지만, 또 게임 곳곳에서 개발 버전에서는 자동전투가 있었을 것 같은 흔적이 눈에 띄지만 자동전투를 넣지 않고 디아블로의 장르를 유지했습니다.

상단에 주요 재화를 표시해야 할까요?

모바일게임의 장르에 따라 화면 상단에 작게 주요 재화를 표시하기도 하고 표시하지 않기도 합니다. 이 재화 표시가 필요한 장면에서는 표시하고 필요하지 않을 때는 숨기면 되겠지만 재화 표시 여부를 결정하기에는 부족합니다. 이 결정을 내리는 핵심은 게임 장르입니다. 매니지먼트 장르에서는 플레이어캐릭터가 자동전투를 하는 동안 가장 중요한 정보는 남은 포션 수, 경험치 증가, 획득한 주요 재화입니다. 오히려 화면 중앙에서 일어나는 전투 행동은 자동전투 상황에서 크게 중요한 정보가 아닙니다. 물론 필드 PvP를 허용하는 게임에서는 필드에 따라 이 중앙의 전투 상황이 중요한 정보이겠지만 자동사냥을 돌려 놓는 대부분의 필드에서는 중요하지 않습니다. 경험치는 이미 화면 하단에 깔려 있고 남은 포션 갯수 역시 독립된 인터페이스에 표시됩니다. 그리고 주요 재화는 화면 상단에 대부분의 상황에 표시됩니다. 만약 장르가 매니지먼트에 가깝다면 필드, 마을 가릴 것 없이 상단에 주요 재화를 표시해야 합니다.

왜 디아블로 이모탈은 포션 갯수가 제한되어 있나요?

P2W 모델에서 컨텐츠에 도전하는 방법을 바꿔야 하기 때문입니다. 포션은 컨텐츠에 도전할 때 충분한 성장 수준을 갖추지 못했더라도 한번 비벼볼 수 있을 여지를 줍니다. 보스 전투 중에 멀리 도망쳐 체력을 회복한 다음 전투를 계속할 수 있어 예상한 것 보다 성장 수준이 낮더라도 보상을 획득해 성장의 다음 단계로 넘어갈 수 있습니다. 이런 플레이는 P2W 설계를 아주 어렵게 만듭니다. 예상한 플레이어캐릭터의 성장 수준에 따라 클리어 할 수 있기를 기대하는 컨텐츠를 대부분 예측할 수 있어야 그에 맞춘 상품을 설계할 수 있습니다. 그래서 디아블로 이모탈 스타일의 포션 시스템을 도입하고 또 보스룸 공간을 제한합니다. 한편 전통적으로 포션은 기본 재화로 구입하는데 한때는 이를 이용해 포션을 기본 재화 하수구로 사용하기도 했지만 현대에는 플레이어캐릭터 간에 격리된 경제시스템을 통해 더이상 기본 재화를 이렇게 소모시킬 필요도 없습니다.

왜 던전을 클리어 한 다음 일정 시간이 지나면 나가야 하나요?

첫째. 동시에 유지할 수 있는 인스턴스 수에 제한이 있기 때문입니다. 던전 서버가 동시에 서비스하는 인스턴스 수에 제한이 있고 이를 초과하면 던전 플레이 경험이 나빠질 수 있습니다. 그래서 플레이가 끝난 던전을 명시적으로 제거해 던전 플레이 경험을 기대 수준으로 유지하기 위해 제한 시간을 두고 던전 클리어 후에도 정해진 시간이 지나면 던전을 닫고 안에 있던 플레이어캐릭터들을 내보냅니다. 둘째. 단위 기간 당 입장횟수 제한이 있는 던전을 통제하기 위해서입니다. 던전에 입장한 상태로 단위기간의 경계를 지나면 입장횟수를 처리하기 귀찮아집니다. 그래서 단위기간이 초기화되는 경계를 지날 때 입장횟수에 제한이 있는 던전이 플레이 중이지 않도록 던전을 닫아 문제가 일어나지 않도록 합니다.