본문 바로가기

컨퍼런스 노트/NDC

(NDC2014) 야생의 땅:듀랑고의 자유도 높은 아이템 시스템 디자인

(NDC2014) 야생의 땅:듀랑고의 자유도 높은 아이템 시스템 디자인


1. 디자인 방향

- 야생의 땅 듀랑고 : 개척형 RPG, 전투, 생활이 있으며 자신만의 이야기를 만들어나가는 게임

- 자기만의 이야기란? : 독특하고 흥미로운, 남들과는 다른 과정이나 결과

> 남들과 다른 과정/수단의 예 : 롤러코스터 타이쿤 - 자기만의 방식으로 놀이동산을 운영

> 남들과 다른 결과의 예 : 시뮬레이션 게임, 삼국지 - 나의 운영 방식에 따라 나라의 흥망성쇠가 결정

> 그림으로 나타내면, 왼쪽의 과정과 수단은 자유도, 오른쪽의 결과의 예는 창발성이라 할 수 있다.



- 자유도와 창발성은 게임을 더욱 풍부하게 해준다.


- 듀랑고의 자유와 창발은? 

> 자유 : 디아블로3 vs GTA5

ㆍGTA의 캐릭터는 디아블로의 캐릭터에 비해 인간다운 면모가 있다.

  (디아블로는 때려잡기도 하지만, GTA는 자유의지를 가진 것처럼 다양한 행동을 한다.)

ㆍ즉 자유란, 인간다운 것을 의미한다고 생각!

ㆍ인간과 같은 게임을 만들자.


> 창발 : 리그 오브 레전드

ㆍ금방 질리는 봇전에 비해 사람과 하는 대전은 덜 질린다.

ㆍ각 플레이어가 예상치 못한 행동을 하기 때문 = 즉, 사회와 같다.

ㆍ우리 게임은 개인과 사회가 들어있는 게임이 될 것이다.


> 아이템에서의 자유와 창발은?

ㆍ아이템에서 자유란, 인간이 그 아이템의 용도를 지정할 수 있는 것 혹은 여러 물건이 있을 때 선택지에 대한 자유

ㆍ아이템에서 창발이란, 조합으로 인해 생기는 예상치 못한 결과

ㆍ결론은 자유도란 인간과 대체재, 창발성이란 사회와 조합을 나타내는 것


2. 시스템 디자인

- 아이템 시스템 디자인의 목표

> 한가지 아이템을 여러가지 용도로 사용

> 조합 등으로 아이템이 변화


- 기존 아이템 시스템은 용도가 딱 하나로 지정되어 있다.(예:디아블로는 한 번 무기는 평생 무기)

- 그러나 인간의 기지는 무궁무진하여 어디든 사용할 수 있을 것이다.

- 좀 더 살아있는 인간다운 시스템을 만들기 위해 인간에 주목

> 대상과 행동 : 사람은 어떤 대상을 보면 경험에 의해 그 대상에 대해 빠르게 인지, 분석하고, 그 인지 결과에 따라 행동한다.

                 (예 : 음식 - 맛있다. 힘이난다 - 먹는다 / 돌 - 딱딱하다, 못 먹는다 - 먹지 않는다.)

> 즉, 어떤 대상에 대해 '조건 체크'를 한 다음 행동에 옮긴다. 이 조건 체크 결과를 '특성'이라고 할 수 있다.

> 특성이란, 그 사물이 실제로 가지고 있는 성질이나 속성, 실체이다. 이 특성이 사람의 인지에 영향을 미친다.

> 정리하면, 대상이 있고, 그 대상의 속성이 특성을 결정하며, 그 특성이 우리의 인지, 즉 조건 체크에 영향을 미쳐, 그 조건 체크 결과에 따라 행동한다. 

  (대상 - 속성 - 특성 - 조건 체크 - 행동)

> 즉 대상은 특성과 속성으로 정의될 수 있다.


- 위에서 언급한 대상이 게임에 옮겨지면 결국 게임 내의 대상이 된다.

  자연물, 아이템 이런 것이 모두 게임의 대상이 된다. 


- 모듈화를 시켜서 태그를 붙였다 떼듯이 오브젝트의 특성을 관리 = 태그 시스템


3. 태그 시스템

- 아이템은 태그와 속성을 담는 그릇이다.

- 아이템의 특성과 속성은 상태에 따라 자유롭게 변화가 가능하다.

- 아이템의 특성

> 주관적인 정보

> 한 아이템이 여러 개의 특성을 가질 수 있다

> 속성, 행동에 따라 변한다.

> 용도, 모양, 재질, 성질로 분리될 수 있다.


- 아이템의 속성

> 객관적인 정보

> 태그와 관련이 있을 수도 있으며, 단독으로 존재할 수도 있다.


4. 시스템 구현기록

- 아이템은 특성과 속성을 가지며, 그 특성이 아이템의 기능 및 행동을 결정한다.


- 아이템 1.0(프로토타입 Z5) : 본부테스트, 게릴라 사내테스트 실시

> 아이템 1.0 이전 : 특성은 행동으로 이어지지만, 모호한 특성이 존재.(모양을 의미하는 막대, 재질을 의미하는 나무) 

> 나무라는 특성을 깎는다는 행동을 실시하면, 그 결과가 칼이 될지 도끼가 될지 아무도 모른다.

> 행동을 하는데에는 어떤 목표나 의도가 있어야 한다. 따라서 이런 이유 때문에 새로운 모델이 필요해졌다.

> 인터랙션 모델(기존의 1차적 행동, 대상-행동)에서 '목적'이 추가된 '제작 모델'을 추가했다.(대상/재료-목적-행동)

  이때 목적과 행동을 묶어서 레시피라고 정의(아이템을 만들어주는 하나의 레시피)

> 레시피 : 재료 - 조건체크 - 레시피(속성, 특성의 변화) - 아이템 생성

            재료를 받아서 목적에 맞춰 특정 조건을 체크하고, 부합하면 레시피를 거쳐 아이템을 생성한다.


> 예 : 가죽장화 레시피(이미지 참고)

ㆍ가죽 장화 레시피가 가죽 재질을 가진 것을 조건으로 가지고 있다.

ㆍ가죽은 가죽이라는 재질 속성을 가지고 있어 레시피에 통과되어 가죽장화를 만들었다.

ㆍ가죽장화는 가죽을 가지고 만들었으므로 가죽의 속성을 가질 수 있다.

ㆍ가죽으로 만든 가죽장화는 가죽으로 만들었기 때문에 먹을 수도 있고, 불에 탈 수도 있다.

ㆍ천 모양 가죽을 꿰맸기 때문에 장착할 수 있다.



> 잘된점

ㆍ재질별 대체재가 유효하게 작용(레시피가 막대를 요구하면 막대 속성을 가진 무엇이든 넣을 수 있다.)

ㆍ위의 이유로 아이템의 자유도 확보, 여러 방향으로 사용됨

ㆍ태그의 모듈화 시스템이 잘 작동(태그를 떼였다 붙였다하는 것이 레시피대로 잘 작동함)


> 아쉬운점

ㆍ레시피도 결국은 코드. 코드를 복붙하면서 손으로 메기다보니 실수가 많았음

ㆍ잘못된 데이터 확인이 지원이 안 되서 잘못된 데이터가 그대로 올라가 시스템이 죽는 경우 발생

ㆍ엑셀로 뽑으려고 했으나 몇 개를 제외하곤 깊이가 너무 깊어 VBA로도 무리

ㆍ제작 성격성 무한제작이 가능할 수 있는데, 수치 모델을 어느정도 제한하지 않아 무한정으로 수치가 올라감.

ㆍ무언가 발생하는 일을 기획자가 제어하기가 어려웠음

ㆍ어느정도 룰로 제어하면 되는 문제를 전체 시스템 문제로 치부해버림


- 아이템 2.0(랩터빌드) : 본부 테스트 및 티저 영상 버전

> 의도

ㆍ좀 더 기획자가 제어권을 가질 수 있게 하자

ㆍ데이터 검증, 확인을 강화하자

ㆍ좀 더 태그를 직관적으로 이해하게 해보자

+ 가죽장화를 먹을 수는 있되 권하지는 말자


> 시도

ㆍ특성-속성을 그룹화해서 관리

ㆍ특성간의 포함관계가 있게 디자인

ㆍ제작시 단일 특성 단위로 이동하도록

분해개념 추가


> 특성-속성 그룹화

ㆍ아이템 1.0에서 특정한 특성에 특정한 속성이 많이 왔다 갔다 그룹지어 다니는 현상 발견

ㆍ예 : '에너지'와 '기분'이라는 특성을 '먹을 수 있다'는 속성과 그룹화해서 특성 중 하나라도 빠지면 에러 메시지가 뜨도록 만들어서 데이터 검증 절차 확립


> 특성간의 포함관계

비슷한 개념이 계속 중복되어 보이는 특성이 있었다.

ㆍ예 : 요리를 하면 먹을 수 있는데, '요리'와 '먹을 수 있음'이라는 속성이 각각 따로 존재했다.

       나무는 당연히 불에 타지만, 나무로 만든 아이템은 '나무'와 '불에 탐'이라는 속성이 모두 존재했다.

각 속성간의 상,하위 포함 관계를 만들었다.(그룹화와 비슷)

  즉, '요리'와 '먹을 수 있음'을 그룹화하되 '요리'가 '먹을 수 있음'을 포함하여 '먹을 수 있음'이 할 수 있는 것을  모두 할 수 있게 하였다.

가장 상위의 특성만을 볼 수 있도록 했다.

ㆍ재질이나 용도가 성질같은 것들을 흡수하기 시작


> 단일 특성 단위의 이동

ㆍ레시피에서 조건을 통과하는 특성이 필요 특성이라고 생각

ㆍ나머지 특성, 속성들이 딸려와서 복잡해지는 것이라 판단

ㆍ레시피에서 조건을 통과하는 특성의 정보만 이용하자

!!!! 그러나 이것은 잘못된 선택이었다.


> 분해개념

ㆍ가죽장화를 그대로 먹는 것은 이상하다.(다른 재료도 섞여있음)

ㆍ그대로 먹지 말고 분해해서 먹도록 했다.



> 아이템 2.0의 결과

ㆍ가죽장화 레시피 조건에 맞게 가죽을 사용하면, 가죽이라는 상위개념에 딸린 가죽의 하위 개념(그룹)들이 딸려온다.

ㆍ이때, 천(모양)이라는 속성은 무시

ㆍ가죽장화는 신발이라는 속성을 가지고 있으므로, 장착 가능이라는 특성이 있다.

ㆍ가죽장화는 잠재적으로 가죽이라는 속성을 가지고 있으나, 가죽의 하위 속성은 보여주지 않고 가죽만 보여준다.

ㆍ가죽장화를 먹으려면 다시 분해해서 가죽을 얻어야 한다. 결과적으로 가죽장화는 못 먹게 된 것

ㆍ빌더 버전, 반응은 괜찮았으나, 생활이나 아이템에는 아쉬움이 남았다.


> 잘된점

ㆍ벨리데이터(검증, 확인) : 데이터 작성이 많이 나아졌다.


> 아쉬운점

ㆍ여전히 어려운 데이터. 언어를 바꾸면서 데이터 구조 및 변수 사용이 복잡해졌다.

ㆍ아트에셋으로 인해 추가되는 데이터(모션과 모델 등)

ㆍ툴 없이 코드만을 왔다갔다하면서 다루는 파일들

ㆍ랜덤상수를 쓰면서 에러를 확률적으로 못 잡기 시작(1을 넘기면 OK라고 해놓고 1을 안 넘겼을 경우는 체크하지 못함)

ㆍ단일 태그단위의 이동 - 창발성이 많이 사라짐


- 아이템 3.0

> 아이템 응급처치 필요

ㆍ랩터에서 사라진 창발성을 복구하자

ㆍ데이터 작성이 다시 지옥이 되선 안 된다.


> 게임적으로 허용한다고 하고, 가죽장화를 분해해서 먹는 것보다 더 재미있게 만들자.

ㆍ부드러워서 먹을 수 있는 치킨과 딱딱해서 먹을 수 없는 가죽장화, 그렇다면 가죽장화가 부드러워진다면?


> 가죽장화를 끓여먹게 하자

ㆍ먹을 수 없는 가죽장화

ㆍ끓여서 부드러움 5 증가 > 먹을 수 있음의 임계점 돌파 > 먹을 수 있는 가죽장화

보이지 않던 것들이 보이게 되는 패턴이나 임계점이 존재하는 것


> 이것이 가능하려면 아이템이 잉여속성을 가져야 한다.

ㆍ잉여함에서 예상치 못한 것이 나오는 법

ㆍ잉여 속성이 있어야 현재 발현되지 않은 특성이 후에 발현될 가능성이 생김

ㆍDNA의 메틸화에 비유 가능(※DNA의 메틸화 : 유전자 형질 발현을 조절하는 화학적 변형)


> 아이템이 하나의 생물체라면? : 제작이 일종의 짝짓기이자 유전 방법론이라면?

ㆍ자신이 가진 유전인자(속성)을 다음 세대에 전달

ㆍ어느 세대에선가 아이템 내부의 속성이 임계점을 넘어서면 형질(특성)이 발현


> 룰에 의해 발현되는 특성

ㆍ기획자가 의도대로 붙여주는 특성 이외에 속성에 따라 특성이 발현되거나 없어질 수 있어야 한다.

ㆍ이 룰로 인해 붙는 특성이나 속성은 기획자 눈 밖에서 일어나야 한다.

ㆍ하지만 이 룰을 기획자가 제어해야 한다.


> Tagger(특성을 붙이는 도구)

ㆍ기획자가 작은 단위의 룰을 정리해 놓으면 Tagger가 아이템 생성후 조건을 체크해서 후보정

  (예 : 돌과 도끼가 만나 어떤 아이템이 제작되면 어떤 것은 살리고 어떤 것은 죽인다.)

ㆍ세계의 법칙/법전과 같은 역할

ㆍ재료 - 레시피 - Tagger - 아이템



5. 리마인드



- 태그 시스템 : 아이템을 특성과 속성을 가지는 존재라고 정의하고 레시피가 조건을 체크해서 아이템을 생성, 특성과 속성은 자유롭게 왔다 갔다 할 수 있다.


- 아이템 1.0/2.0/3.0 요약정리

> 1.0에서는 흩어져 있었다.

> 2.0에서는 특성과 속성을 그룹을 맺어서 블록 쌓기를 하듯이 쌓아서 아이템을 만드는 것(연관성 없는 것은 제거)

> 3.0에서는 2.0의 빈칸에 존재하던 속성4,5를 다시 풀어주되 조금씩 제어를 해주자.(Tagger를 활용)

  2.0에 비해서 약간의 연관성을 보장하고 대신 보장이 안 되도 어딘가에 디폴트 값을 끌어 쓸 수 있게 하자.


6.UX

- 유저들이 쉽게 인지할 줄 알았으나, 그렇지 않았다.


- 랩터빌드(2.0)으로 넘어오면서 UX가 범람했다.

> 너그러웠던 프로토타입Z5에 비해 UX가 엄격해졌다 : 그 전에는 비교적 UX에 대한 불만이 들어오지 않아 가볍게 생각

> 시스템/비주얼 복잡도와 러닝커브(학습곡선) : 러닝커브를 낮추려는 시도에 비해 시스템의 복잡도가 가파르게 성장(늘어나는 특성과 자연물)


- 랩터(2.0)에서 시도했던 것들

> UI : 자동 채우기 모드로 유저가 모르는 특성을 알아서 채워줌

> 시스템 : Z5에서 어려웠던 특성을 간략하게

> 튜토리얼 : 천천히 인지할 수 있도록 여러가지 특성을 언급해줌


- 그러나 러닝커브가 낮아지는 속도보다 시스템이 복잡해지는 속도가 더 빨랐다.

  따라서 처음에 디자인 할 때부터 UX에 신경을 써야 한다.


- 추구하는 플레이가 어렵다면 진입장벽을 낮춰 유저가 조금씩 할 수 있도록 하자.


7. 디자인 공유 프로세스

- 슬로건이자 마지노선 : 가죽장화를 먹게해주세요.

> 디자이너가 스스로에게 던지는 질문(어떻게 해야 먹을 수 있나, 어떻게 해야 플레이어가 하고 싶은 걸 할 수 있나)

> 모두가 왜 가죽장화를 먹어야 하는지 알고 먹고 싶게 한다.


- 디자인을 아끼는 팀문화

> 누구나 디자인에 참여할 수 있다.

> 디자인을 모두가 아끼는 문화

> 결정은 팀장님의 몫

> 모두 함께 우리 게임에서 뭘 하면 좋을지 생각해보는 시간을 가진다.

  그 모두의 생각을 포괄하고 모두가 디자인에 참여하고 있다고 마음 먹도록 하는 것이 중요하다.

> 결국 다같이 만드는 게임이고, 게임에 애정을 갖는 것이 중요한데, 결국 게임 역학쪽에 참여하는 것이 가장 좋을 것

> 그럼에도 격렬한 논쟁은 있을 것이지만, 제일 중요한건 같은 방향을 보고 목표를 공유하고 있는 것

> 생각을 언제나 공유하고 바라보는 방향을 같게 만드는 것이 중요(주로 디렉터의 역할), 수시로 게임의 방향이나 비전에 대해 제시


- 사소한 이야기를 많이 하자

> 게임에 대한 큰 이야기보다 사소한 이야기가 대화하기 쉽다.

> 무겁게 대화를 시작하기 보다는 가볍고 재밌게 대화를 시작하자.

> 수시로 말을 걸자

> 예시를 들어 이야기하면 더 빠르다.


8. 마무리

- 자유도 높은 시스템

> 현실 모사로 시작

> 사람의 인터랙션 패턴을 바탕으로 블럭들을 만들고 그 블럭을 쌓는 시스템을 구현

> 예기치 못하게 발산하기 쉽기 떄문에 제어에도 신경을 많이 써야 한다.

> 현실적인 예시를 많이 모으면 도움이 많이 된다.

> 마지노선(끝점)을 정해놓고 시작하자(예:가죽장화)


- 정리

> 자유도와 창발성과 제어도 사이의 밸런스를 잘 잡아야 한다.

> 완벽한 시스템에 대해 고민하되 집착하지 말자

> 중요한 것은 UX나 인지흐름을 생각하며 디자인하자.

> 계속 생각을 공휴하며 함께 상상하자.