이 글에서는 광범위한 공간 인벤토리 시스템이 어떻게 작동하는지 살펴본 다음, 이 시스템이 게임에 미친 디자인적 영향에 대해 자세히 알아보겠습니다.
이 글은 뉴질랜드의 4명으로 구성된 신생 스튜디오인 Black Salt Games의 프로그래머이자 작가 겸 공동 디자이너인 조엘 메이슨(Joel Mason)이 작성한 것으로, 그는 유니티의 데뷔작인 불길한 낚시 어드벤처 게임 Dredge를 개발 중입니다.
2021년 1월에 우주 공포에서 영감을 받은 낚시 게임인 Dredge의 프로토타입을 제작하기 시작했습니다. 첫 번째 버전에서는 물고기가 가득한 곳으로 항해하여 상호작용 버튼을 누르면 "+1 물고기"라는 알림이 뜨는 방식이었습니다. 한동안 이 작업을 수행한 다음 부두로 돌아와 물고기를 팔아야 했습니다.
굉장히 지루했습니다.
인벤토리 시스템에 뭔가 변화를 줘야 했습니다. 어부가 화물창을 관리하는 게임에서 재고 관리가 가장 지루하게 들리는 Steam 태그일지 모르지만 중요한 역할을 해야 한다는 것을 알았습니다. 결국 이 기능은 저희 게임의 핵심 메커니즘이 되었습니다.
이 글에서는 광범위한 공간 인벤토리 시스템이 어떻게 작동하는지 살펴본 다음, 이 시스템이 게임에 미친 디자인적 영향에 대해 자세히 알아보겠습니다.
공간 인벤토리 시스템이란?
공간 인벤토리 시스템은 물건이 공간을 차지한다는 개념에서 출발합니다. 스카이림과 같이 플레이어가 보유한 최대 공간에 아이템 가중치를 추가하는 시스템은 공간과 관련이 없으므로 여기서는 다루지 않겠습니다.
실제로 공간 인벤토리에는 두 가지 요소만 필요합니다:
- 공간.
- 그 공간에 맞는 물건.
플레이어는 공간에 아이템을 배치하고, 원하는 대로 아이템을 집어 들고, 재배치하고, 정렬할 수 있습니다. Dredge에서 공간은 그리드입니다.
물고기로 가득 찬 컨테이너는 각각 두 개의 타일을 차지하는 물고기로 채워진 6×5 그리드로 표현됩니다.
왜 공간 인벤토리 시스템일까요?
공간 인벤토리의 근본적인 목적은 플레이어에게 결정권을 부여하는 것입니다. 아이템은 다른 아이템과 비교하여 무게를 측정해야 하며, 플레이어의 현재 상황에 따라 한 아이템이 다른 아이템보다 더 적합할 수 있습니다. 플레이어는 내재적으로 가치 밀도 계산을 수행할 수 있으며, 결국 이러한 평가 능력을 숙달하게 됩니다.
규칙적인 모양의 고등어가 규칙적인 모양의 격자 안에 있는 위의 이미지는... 여전히 지루합니다. 만약 아이템의 모양과 크기가 다르다면 어떨까요? 값이 다르다면 어떨까요? 선호하는 위치가 다르다면 어떨까요?
공간 인벤토리 시스템에 대한 정의를 좀 더 복잡하고 흥미롭게 만들 수 있습니다. 다음과 같이 구성할 수 있습니다:
- 그리드.
- (선택 사항) 그리드는 불규칙한 모양일 수 있습니다.
- (선택 사항) 셀은 다양한 유형의 물건을 수용할 수 있습니다.
- 그리드에 맞는 물건.
- (선택 사항) 물건의 크기가 다를 수 있습니다.
- (선택 사항) 불규칙한 모양일 수 있습니다.
- (선택 사항) 물건이 다른 물건 옆에 있거나 다른 물건에서 떨어져 있어야 할 수 있습니다.
작업 예시
이제 이 모든 것을 Dredge에서 사용하는 방법을 살펴 보겠습니다.
먼저 기본 그리드부터 시작하겠습니다. 이것은 몇 가지 특수 셀이있는 7x9 그리드입니다.
- 모서리에는 보이지 않는 사용할 수 없는 빈 셀이 몇 개 있습니다.
- 하단에는 엔진을 배치할 수 있는 셀이 있습니다.
- 양 옆에는 낚시 장비를 놓을 수 있는 셀이 있습니다.
- 위쪽에는 조명용 셀이 있습니다.
따라서 플레이어가 다음과 같은 장비로 인벤토리를 채울 것으로 예상할 수 있습니다:
- 다양한 종류의 물고기를 잡을 수 있는 다양한 낚싯대.
- 안개 속을 이동하고 볼 수 있는 기본적인 조명과 엔진이 필요합니다.
그리고 좋은 날의 낚시는 다음과 같은 어획량을 기대할 수 있습니다:
- 고등어 6마리
- 대구 4마리
동일한 7×9 정사각형 그리드에 기존의 낚싯대, 조명, 엔진에 더해 두 가지 종류의 물고기가 복잡하게 채워집니다.
플레이어의 선택이 중요합니다. Dredge에서는 장비는 전용 부착 지점에만 배치할 수 있지만, 물고기(및 기타 비장비 아이템)는 빈 부착 지점을 포함해 어디에나 배치할 수 있습니다. 따라서 다양한 선택이 가능합니다:
- 낚싯대 일부를 선착장 창고에 보관하면 낚시 속도와 능력은 떨어지지만 화물 공간을 더 확보할 수 있습니다.
- 엔진 일부를 팔아 속도를 늦출 수 있지만, 대신 더 많은 공간을 확보할 수 있습니다.
- 불빛을 완전히 없앨 수도 있지만, 어두워지기 전에 돌아와야 하니까요...
플레이어는 이러한 위험 중 일부(또는 전부)를 감수하여 더 많은 어획량을 확보할 수 있습니다:
- 9 고등어
- 5 대구
마찬가지로 업그레이드된 유압식 낚싯대에 투자하여 상어나 가오리와 같은 더 귀한 어종을 잡을 수 있습니다.
하지만 바다는 예측할 수 없고 하루하루가 계획대로 흘러가지 않습니다. 안개 속에서 길을 잃고 좌초하여 엔진이 손상될 수도 있습니다. 또는 심해에 사는 생물이 시야를 가려 소중한 상어를 배 밖으로 떨어뜨릴 수도 있습니다.
Dredge에서 인벤토리는 체력 표시줄이기도 합니다. 손상은 물리적 공간을 차지하여 아이템을 손상시키거나 파괴하며, 손상이 복구될 때까지 새로운 아이템을 배치할 수 없게 합니다. 물고기를 배 밖으로 잃거나 장비가 오작동할 수 있습니다. 선체에 너무 많은 피해를 입으면 영원히 파도 아래로 가라앉게 됩니다.
지금까지 플레이어가 주어진 그리드에서 내릴 수 있는 결정에 대해 이야기했습니다. 하지만 플레이어가 자신의 그리드를 커스터마이징할 수 있다면 어떨까요? 핵심 루프에 업그레이드를 적용할 수 있는 완벽한 기회입니다. 이를 통해 플레이어는 낚싯대, 엔진 등을 위한 추가 슬롯을 추가할 수 있습니다.
업그레이드 트리를 통해 플레이어는 공간 스토리지를 커스터마이징할 수 있습니다. 사진의 업그레이드는 선체 근처에 4개의 공간을 추가합니다.
아이템 배치를 플레이어의 인벤토리로 제한해야 할 이유도 없습니다. 상점에 자연스럽게 배치할 수 있으며, 상점의 재고를 표현하는 좋은 방법입니다. 상인은 물건을 살 수 있는 금액이 한정되어 있는 대신, 플레이어의 아이템을 넣을 수 있는지 여부에 따라 제한을 받을 수 있습니다.
여행하는 상인이 낚시 장비를 판매하고 플레이어의 물고기를 구매할 수 있습니다.
또는 환경 퍼즐에서 사용할 수도 있습니다. 특정 아이템 세트를 특정 구성으로 배치하는 것이 금지된 비밀을 푸는 열쇠가 될 수 있습니다....
퍼즐은 플레이어가 L자 모양의 물고기 블록을 특정 모양으로 배열해야 합니다.
스틸 이미지에서는 잘 보이지 않을 수도 있지만, 인벤토리를 효율적으로 포장하는 행위는 (플레이 테스터들에 따르면) "재미있다"고 합니다. 완벽한 위치에 생선을 배치했을 때 얻을 수 있는 확실한 만족감이 있습니다. 또한, 미리 계획을 세우고 수평선에 보이는 물고기를 위한 정확한 모양의 공간을 남겨두면 숙달될 가능성이 있습니다.
한데 모으기
지금까지 인벤토리 메커니즘의 여러 측면을 설명했습니다. 위의 내용을 요약하면, 인벤토리에는 다음과 같은 기존 시스템이 캡슐화되어 있습니다:
- 아이템 보관함(아이템을 보관합니다)
- 플레이어 체력(체력이 낮은 플레이어에게 피해를 입히고 불편을 줄 수 있음)
- 플레이어 스킬 및 스탯(장비 장착을 위한 슬롯을 제공함)
- 업그레이드(플레이어가 그리드를 커스터마이징할 수 있음)
- 상점 인벤토리(상인이 보유할 수 있는 아이템의 개수가 제한됨)
- 인벤토리 관리 게임플레이(물건을 옮기는 재미)
- 환경 퍼즐(발견의 깊이를 더합니다)
교훈
위의 예시는 꽤 멋진 게임입니다(적어도 인벤토리 관리 게임치고는 멋지죠). 하지만 모든 게임에 공간 인벤토리를 적용하기 전에, 저희 게임에서 겪었던 몇 가지 디자인 고민에 대해 이야기해 보겠습니다.
아이템 배치
무엇보다도 아이템 배치가 중요하다고 판단했다면 플레이어의 책임으로 만들어야 합니다. 플레이어를 위해 아이템을 배치할 수는 없습니다. 배치할 수는 있지만 현관문을 열었을 때 복도에서 예상치 못한 소파를 발견하는 것과 비슷합니다. 엉뚱한 곳에 놓여 있어서 누가 집에 들어왔는지 궁금할 것입니다.
이는 곧바로 물건을 줍는 데 영향을 미칩니다. 물고기를 잡든, 보물을 찾든, 중요한 퀘스트 아이템을 얻든, 플레이어는 이 새로운 아이템을 자신의 짐에 적절하게 배치할 수 있는 기회가 주어져야 합니다. 이는 게임플레이의 흐름을 방해할 수 있는 많은 잠재적 중단과 시작을 의미합니다. 게임은 잠재적으로 느릴 수 있는 이 리듬에 맞춰야 합니다.
퀘스트 아이템은 특별하다
방금 퀘스트 아이템에 대해 언급했습니다. Dredge 에서 사람들은 여러 가지 이유로 아이템을 자주 제공합니다. 가장 기본적인 예는 배달해야 할 소포입니다. 그래서 우리는 퀘스트 제공자와 대화를 나누고, 퀘스트 제공자가 소포를 우리 손에 쥐어줍니다. 장어가 가득 차면 어떻게 될까요? 즉, 우리 배에 장어가 가득합니다. 물건이 들어갈 때까지 장어를 배 밖으로 던져야 할까요? 이 대화가 시작될 때부터 힘들게 잡은 장어를 버려야 한다는 사실을 어떻게 알았겠습니까?
플레이어에게 적어도 일시적으로나마 아이템을 거부할 수 있는 기회를 주어야 합니다! 즉, 새로운 대화, 즉 "아, 지금 그럴 여유가 없으시다고요? 괜찮아요, 나중에 다시 오세요." 같은 식의 대화가 필요합니다. 다른 한편으로, 플레이어가 장어를 모두 생선 장수에게 팔고 물건을 찾으러 돌아오면 "아, 물건을 찾으러 오셨군요?"라는 대사를 위해 더 많은 퀘스트 로직을 구현하여 독특한 대사를 넣어야 합니다. 물론 이러한 추가 대사와 흐름은 테스트와 로컬라이제이션을 거쳐야 합니다.
퀘스트 아이템은 특별하지 않습니다
자, 그 패키지에 대해 말씀드리자면... 인벤토리가 어떻게 피해를 입는지 보여드렸던 것을 기억하시나요? 그리고 어떻게 인벤토리에 있는 아이템을 '타격'하여 잠재적으로 파괴할 수 있는지도요? 여러분은 퀘스트 아이템(과 그 밑에 있는 세포)은 손상으로부터 면역이라고 생각할 수도 있습니다.
Dredge 에는 수많은 퀘스트 아이템이 있습니다. 엄청나게 많은 수는 아니지만, 주요 아이템이 무적이라면 퀘스트 아이템을 가득 실은 배가 무적의 방패 역할을 할 수 있을 정도입니다. 저희는 이런 상황을 원하지 않았습니다.
Dredge 에서는 대부분의 주요 아이템이 파괴될 수 있습니다. 불운하게 바위에 충돌하는 것뿐만 아니라, 플레이어는 다른 플레이어의 패키지나 고유 아이템, 심지어는...
보트의 그리드 기반 인벤토리에서 사람이 '파괴됨'이라고 표시된 경우 말이죠.
네, 저희는 플레이어가 안전한 통과를 약속하고 배에 탑승한 캐릭터라 하더라도 주요 아이템을 분실하거나 '버릴' 수 있도록 허용합니다. 이러한 이벤트에 따라 퀘스트와 퀘스트 결과가 달라집니다. 잔인하지만 플레이어에게 인벤토리를 완전히 통제할 수 있는 권한을 부여하고 플레이어가 배의 무결성에 대한 책임감을 느끼도록 하기 위한 조치입니다.
하지만 개는 무적입니다.
핫 스와핑
아이템을 재배치하는 동안 플레이어는 아이템을 들고 있다가 그 아래에 있는 아이템으로 바꾸고 싶어하는 경우가 많습니다. 이 기능을 지원하는 것은 플레이어의 불만을 피하기 위해 반드시 필요합니다.
더 나아가, 플레이어가 큰 아이템을 들고 여러 개의 작은 아이템 위에 놓으려는 경우 어떻게 해야 할까요? 1:1 교환은 불가능합니다. 이것은 훨씬 더 어려운 문제입니다. 몇 가지 해결 방법은 다음과 같습니다:
- 플레이어에게 아이템을 놓을 수 있는 임시 배치 격자를 제공합니다.
- 큰 아이템을 배치할 수 있도록 허용한 다음, 작은 아이템 여러 개를 플레이어 커서에 저장하고 배치를 기다립니다.
빠른 종료
아이템 재배치에는 또 다른 함정이 있습니다. 플레이어가 현재 아이템을 보유하고 있고 곧 배치하려고 하는 경우에도 인벤토리에서 나가도록 허용해야 할까요? "그래, 나가게 하고 아이템을 원래 있던 곳에 다시 배치하면 된다"는 간단한 로직이 있습니다.
안타깝게도 아이템 교환이 있는 경우에는 이러한 논리가 적용되지 않습니다. 상대방이 들고 있는 물건이 방금 교체되었을 수 있으며, 다시 돌아갈 수 있는 빈 셀이 없습니다! 그 물건을 대신 바다에 버리나요? 아니면 자동으로 배치하려고 하나요?
컨트롤
그리드를 다루는 것은 사람들에게 가르쳐야 할 또 다른 일입니다. 유비쿼터스 메커니즘이 아니기 때문에 일부 사람들에게는 생소할 수 있습니다. 이 아이템을 '회전'할 수 있다는 툴팁이 큼지막하게 표시되어 있지만, 많은 플레이어가 이를 읽지 않고 비효율적인 낚시를 하다가 결국에는 알아낼 수 있습니다. 다음과 같은 방법으로 사람들을 도울 수 있습니다:
- 일부 아이템을 다양한 각도로 미리 배치하여 아이템 회전이 가능하다는 것을 보여줍니다.
- 모서리와 어색한 모양을 포함하여 회전과 테셀레이션을 유도하는 방식으로 그리드와 아이템을 디자인합니다.
플레이어를 도와주는 추가 작업이 없다면 컨트롤러로 아이템을 이동하는 작업도 번거로울 수 있으며, 특히 플레이어가 먼 거리나 다른 그리드 간에 아이템을 이동하는 경우 더욱 그렇습니다. 여기에서 몇 가지 도움을 제공할 수 있습니다:
플레이어에게 아이템을 다른 그리드에 자동으로 배치하는 '자동 이동' 버튼을 제공하세요. 지능적이거나 최적의 배치를 보장할 수는 없지만, 플레이어가 지름길을 택했다는 점을 고려하면 공정한 방법이라고 할 수 있습니다.
플레이어에게 커서를 다른 그리드의 중앙(또는 유효한 후보 위치)에 놓을 수 있는 '측면 바꾸기' 버튼을 제공한 다음 플레이어가 최종 위치를 조정하고 확인할 수 있도록 합니다.
정보 가시성
플레이어의 인벤토리를 시각적으로 배치할 때의 단점은 개별 아이템의 세부 정보를 표시하기 어렵다는 것, 즉 통계와 값의 간결한 목록이 없다는 것입니다.
앞서 툴팁이 있다고 말씀드렸습니다. 툴팁은 플레이어가 놓치고 있는 세부 정보를 모두 표시합니다. 다음은 Dredge의 툴팁 예시입니다:
문제가 보이시나요? 선택한 항목의 세부 정보가 그리드의 일부 공간 정보를 가리기 때문에 이 게 냄비를 재배치하고 싶어도 인벤토리의 왼쪽이 어떻게 생겼는지 알 수 없습니다.
몇 가지 해결책이 있습니다:
- 툴팁을 더 작게 만드세요.
- 툴팁을 그리드에서 벗어나게 하세요. 이렇게 하면 도구 설명이 항목에 직접 첨부되지 않으므로 항목과 도구 설명 사이의 즉각적인 연관성이 줄어들지만, 그만한 가치가 있습니다.
- 아이템 이미지 상태를 통해 중요한 정보를 전달합니다. 예를 들어, Dredge 에서는 신선한 생선에 물방울이 반짝이거나 썩은 생선에 악취가 나는 선을 표시할 계획입니다. 이렇게 하면 툴팁을 읽기 위해 마우스를 가져갈 필요 없이 유용한 정보를 한 눈에 볼 수 있지만, 너무 많으면 시각적으로 혼란스러울 수 있습니다.
균형
항목에 물리적 치수를 부여하는 것은 균형에 또 다른 측면을 추가하는 것입니다. 모양이 흥미롭고 다양해야 할 뿐만 아니라 플레이어가 원하는 오브젝트를 적시에 물리적으로 잡을 수 있도록 해야 합니다.
저희의 경우, 플레이어가 심해의 특정 생물을 만났을 때 특정 속도로 움직이도록 하려면 엔진을 충분히 넣을 수 있을 만큼 보트의 격자를 크게 만들 수 있어야 합니다.
결론
다음 게임에도 공간 인벤토리 시스템을 포함할 예정인가요? 상황에 따라 다르죠.
모든 게임에 적합하다고 생각하지는 않습니다. 플레이어가 인벤토리를 재배치할 수 있는 적절한 마음가짐을 가질 수 있도록 게임에서 액션을 잠시 멈출 수 있는 그럴듯한 순간을 제공해야 한다고 생각합니다.
예를 들어, 하드코어 FPS인 타르코프도 공간 인벤토리 시스템을 활용하지만, 플레이어가 거의 항상 위험에 처해 있을 때 인벤토리를 자유롭게 최적화할 수 있고 완벽한 최적화를 통해 만족감을 얻을 수 있다는 느낌을 받기는 어렵습니다. 반면, Dredge의 플레이어 캐릭터가 잠시 시간을 내어 고등어를 옮기는 것은 내러티브상 꽤 괜찮습니다.
처음부터 공간 인벤토리로 인해 직면하게 될 모든 디자인 과제를 예상하지는 못했습니다. 하지만 이 문제가 핵심 루프에 깊숙이 파고들면서 이 모든 문제를 해결하기 위해 노력할 만한 가치가 있다는 것을 알게 되었습니다.
결국 결함이 없는 게임 메커니즘은 거의 없습니다. 유니티는 완벽한 게임을 만들겠다는 목표를 세우지 않았습니다. 하지만 저희가 노력하는 것은 이전에 보지 못한 것을 보여드리는 것입니다.
이 글에서는 다소 복잡한 기술적 측면에 대해서는 다루지 않았으므로 궁금한 점이 있거나 몇 가지 팁이 필요하다면 @bsg_joel로 문의해 주세요.
* 원문: https://www.gamedeveloper.com/design/deep-dive-the-surprising-depth-of-spatial-inventories-in-dredge
Deep Dive: How Black Salt Games designed Dredge's spatial inventory
A detailed look at how Dredge's extensive spatial inventory system works, and a game dev cautionary tale of the design ramifications that it had for the game.
www.gamedeveloper.com
* 게임 사이트: https://store.steampowered.com/app/1562430/DREDGE/
DREDGE on Steam
DREDGE is a single-player fishing adventure with a sinister undercurrent. Sell your catch, upgrade your boat, and dredge the depths for long-buried secrets. Explore a mysterious archipelago and discover why some things are best left forgotten.
store.steampowered.com
오역이 있을 수 있습니다. 잘못된 번역은 댓글로 알려주세요.
'게임개발 > 가마수트라' 카테고리의 다른 글
Thirsty Suitors처럼 스토리텔링에 적합한 동료를 찾아야 하는 이유 (2) | 2023.12.10 |
---|---|
심해에서 트롤링하기: 블랙솔트게임즈가 으스스한 낚시 RPG [Dredge]를 만든 방법 (2) | 2023.12.08 |
셰이더를 활용한 스마트한 확장팩 'DREDGE - The Pale Reach' 제작하기 (2) | 2023.12.05 |
육지 위 바다 아래의 파도 속에서 전략 타일 탐색하기 (2) | 2023.12.04 |
25년 동안 기묘한 걸작을 만들어온 수다51, 그래스호퍼 매뉴팩처의 이야기 (1) | 2023.12.01 |
댓글