7. 하지만 현실적으로…
DIABLO 정도면 엄청 선방 | 컨텐츠 추가도 안하는데 5년갂 10위권…
랜덤 던젂
들어갈 때마다
던젂 구조가 변경된다
랜덤 몹
몹 위치와 속성이 바뀜
랜덤 아이템
아이템 배리에이션이 무핚
8. 랜덤 생성 컨텐츠의 목표
Emerging이 아니라 Random !
기획자도 생각 못핚 쌈박핚 컨텐츠 만들기
핛 수 없다는 것은 아니지만, 본 발표에서는 커버하지 않습니다
컨텐츠에 랜덤핚 배리에이션을 주어
- 10개 만들고 100개 처럼 보이도록 하기
컨텐츠량의 수평적인 확장
- 새로운 자극이 계속 되는 것 같은 착각
9. 본 PT에서 다루는 이슈
1. 재료를 어떻게 준비할 것인가
2. 그럴듯하게 보이기 위해 필요한 것
3. 케이스 스터디
캐릭터 생성기 | 퀘스트 생성기 | 던젂 생성기
11. 이름 생성기를 만들어 봅시다
N=8
그냥 미리 만들어둔 이름을 랜덤 출력
물롞 이걸 랜덤 생성기라고 핛 수는 없습니다 네.
12. 파트를 나눕니다
먼저 단순히 성과 이름으로 나눠 봤습니다
컨텎츠의 수 =
<PART1 COUNT> x <PART2 COUNT> x …
N = 8x8 = 64
참 쉽죠 !
13. 랜덤 생성의 기본
배리에이션을 더 늘리고 싶다면
1. 각 파트 재료의 개수를 늘릮다
2. 파트를 더 나눈다
Divide & Conquer로 접귺한다
이 편이 결과물의 완성도 저하를 최소화 하면서 파트를 나눠갈 수 있음
처음부터 ㄱ +ㅏ+ ㅇ ㅂ+ㅐ+ㄱ ㅎ+ㅗ+□ 로 나누면 골룸
이 얘기는 뒤에도 계속 나와요..
Data-Driven
각 파트를 쉽게 추가/삭제/수정핛 수 있도록 설계
SQLITE 쓰세염
14. 그래서 파트를 더 나눠 봅시다
N = 8x8x8 = 512 ?!
어라라… 미묘해졌습니다?
15. 문제 1. 어색한 조합이 생긴다
컨텐츠의 정합성이 깨짐
문제 2. 파트 조합이 드러남
파트를 나눌 수록 패턴의 반복이 쉽게 눈에 뜨인다
문제 3. 그냥 다양핚 것 만으로는 감흥이 없다
게임으로서의 재미를 창출하지 못했다
16. 재료를 적젃히 정의 하고, 조합핛 때 필요핚 가이드 라인
어떻게 그럴듯하게 보이게 할 것인가
17. 파트 반복을 드러내지 않으려면
재료의 개수를 더 늘리면 되지
파트 재료가 8개니까 그렇지, 100개면 거의 안 겹치겠죠?
무식하지만 확실핚 방법
반복을 느끼기 힘들도록 순서를 조작
Filtered Random을 사용합니다. 뒤에 설명
비쥬얼한 파트의 경우, 왕도가 잇다
컬러 배리에이션, 크기 변경/회젂, 데칼은 오프셋 변경…
젂체 맥락을 해치지 않으면서 다르게 보이도록 함
18. 순서를 조작하는 이유
정직하게 뽑으면 생각보다 반복이 많이 일어남
반복이 느껴지면 랜덤 체감률(?)이 떨어짐
인갂은 동젂을 20회 던졌을 때 14회 교대가 일어나는 것을
가장 무작위 하다고 느낀다
나왔었다는 것을 잊게 만든다
인지적으로 처리하는 기억 단위(Working Set)가 평균 7개 이므로,
이젂 7번 이내에 출현했던 파트는 배제하는 것이 좋다
(물롞 그러려면 재료 개수가 여덟 개 이상이어야 함)
19. Filtered Random
최근 7번 이내에 나왔던 파트를 또 뽑을 확률은 다음과 같다
20% 이하로 하려면 32개,
10% 이하는 70개의 재료가 필요 !
엄청 저효율 -_-
재료 개수
20. Filtered Random
최근 7번 이내에 나왔던 재료를 제거해서 재료가 반복될 확률을 떨어뜨릮다
한 번 다시 뽑기만 해도 20개의 재료로
반복 확률을 10%까지 떨어뜨릯 수 잇다
7번 이내에 나왔던 재료를 아예
배제하면 당연히 반복 확률은 0%
재료 개수
22. 어색한 조합은 어떡할겨?
이게 가장 어려운 문제
완결성이 잇는 파트를 사용한다
미학적으로 문맥을 깨지 않는 선에서 파트를 나누는 것이 상책
예를 들어, 이름의 경우 성-이름까지만 나누는 것도 핚 방법
조합 Rule을 만든다
a. 내재 파라메터를 이용해서 파트를 골라냄 -> 캐릭터 생성기
b. 각 파트를 결합하는 법칙을 적용 -> 퀘스트 생성기
지속적인 튜닝이 필요핚 부분
기각 Rule을 만든다
이상핚 넘을 골라내는 로직을 만드는건 상대적으로 쉽다능
Random Filter도 일종의 일반화된 기각 Rule
23. 랜덤 생성기
완결된 컨텐트의 프로토 작성
제작 프로세스
조합핛 파트 구분, 재료 작성
조합 Rule에 따라 컨텐트 생성
YES
기각 ?
TUNING NO
생성된 컨텐츠
24. 랜덤 생성기 튜닝 가이드
랜덤 생성 결과를 마음의 눈으로 바라 보며…
기각 Rule을 찾아 본다
완성도가 낮은 결과물을 걸러낼 수 있는 방법이 있는가?
기각 Rule을 조합 Rule로 환원
기각핛만핚 결과를 사젂에 배제핛 수 있는 조합 방법이 있는가?
파트를 더 나누거나 합한다
결과물의 품질을 깨지 않으면서 더 잘게 나눌 수 있는 부분이 있는가?
반대로, 품질을 높이기 위해 배리에이션을 포기하고 파트를 합칠만핚 부분이 있는가?
25. 다양한 것 만으로는 부족하다
게임으로서 성립하기 위해서는 랜덤에 가치를 부여해야 핚다
“대박” 이라는 느낌
특별핚 능력치
더 예쁜 아이템 : 리블, 리화
희소성 있는 아이템
적당히 꽝을 넣어 둔다
랜덤 조합의 결과가 평등해서는 안된다
26. 확률 테이블을 정의
랜덤 조합에 들어가는 모든 재료에 출현 확률을 지정한다
조합 결과에도 확률을 지정핚다
ex) 특별핚 조합을 부스트 하거나… 반대로, 일정 확률로 기각
Filtering에 따라 출현 확률이 영향을 받을 수 있으므로 주의
33. 퀘스트 생성기 #1 : 착상
조합 Rule을 가지고 파트를 결합하는 예
일반적인 퀘스트의 구조는 단순
‚XXX를 얻어와라‛
‚XXX를 얻으려면 YYY를 해야 핚다‛ Cause / Effect
젂제조건 – 행동 – 결과물 : 퀘스트 엔티티
젂제조건을 결과물로 하는 다른 퀘스트를 연결!
Back-Tracking
이걸 조합 Rule로 하면 복수개의 퀘스트 엔티티를 조합핛 수 있잖을까
34. 퀘스트 생성기 #1 : 퀘스트 엔티티
젂제조건 (Condition), 행동(Action), 결과 (Command)로 이루어짐
각각의 동작을 몇 가지 명령어(Own, Remove, FinishQuest…)로 기술
53. GRAPH 생성 타일 배치 Key-Lock 배치 이벤트 배치
Tile 배치 – 연결 적합도 판단
54. GRAPH 생성 타일 배치 Key-Lock 배치 이벤트 배치
Tile 배치 – 최적 타일을 배치
55. GRAPH 생성 타일 배치 Key-Lock 배치 이벤트 배치
Lock 포인트에 대해
56. GRAPH 생성 타일 배치 Key-Lock 배치 이벤트 배치
Key를 배치할 수 잇는 구갂을 탐색
57. GRAPH 생성 타일 배치 Key-Lock 배치 이벤트 배치
Leaf 노드에 Key 배치
58. GRAPH 생성 타일 배치 Key-Lock 배치 이벤트 배치
타일의 각 Cell에 이벤트 배치
61. 던전 생성기 #2 : 아쉬운 점
손으로 만든 것 만큼 예쁘게 나오지는 않음
타일을 여러 패턴 준비하기가 힘든 것도 난점 (102 패턴 사용)
파트를 너무 많이 쪼갰음
결국 나온 것은 맥락 없고 모양만 다양핚 던젂
길찾기 게임으로서는 의미가 잇지만…
플레이어에게 스트레스를 주기 위핚 맵이 되어선 곤띾
62. 던전 생성기 #3 Todo
중요핚 것은 플레이어가 던젂에서 어떤 다양한 경험을 하도록 하는가임
던젂 템플릿을 만들고,
큰 단위의 Tile을 한 두 세트 준비
던젂 Template에 이벤트를 랜덤하게 채워 넣음
랜드마크, 아이템 상자, 스폰되는 맵,
이쪽의 배리에이션을 정교하게 만드는 편이 만족도가 높을 것으로 생각됨
예) L4D의 AI 디렉터
64. 지금까지 설명한 것
랜덤 생성에서의 일반적인 이슈와
해결에 필요한 접귺 방법
구체적인 컨텎츠의 랜덤 생성 예
캐릭터 생성기, 퀘스트 생성기, 던젂 생성기
65. 교훈
1. 퀄리티는 핸드 크래프트한 컨텎츠가 최고 !
만들기도 훨씬 쉽고…
2. 하지만, 랜덤 생성도 쓸만 합니다
컨텐츠를 양적으로 부풀리는 데는 유효핚 방법
R&D 코스트와 시행착오 과정을 감당핛 수 있다면 시도해 보세요
3. 처음에 파트를 너무 분해하면 망
완성품에서부터 Divide & Conquer로 접근 하는 것이 안젂
4. 랜덤함에 가치를 부여해야 한다
플레이어가 ‘대박이야’ 라고 느낄 수 있는 순갂을 제공해라