레벨 디자인을 할 때 배경 에셋을 마치 레고처럼
정해진 규격에따라 미리 만들어두고 조립하는 방식을 모듈식 레벨디자인이라고 합니다.
어느정도 규모있는 게임들은 모듈식 레벨디자인을 사용하고 있으며 다음과 같은 장점이 있습니다.
- 재사용 가능
- 쉽게 배치하고 수정할 수 있음
- 최적화에도 어느정도 도움됨
모듈식 레벨 디자인 기초
(기본적으로 정해야하는 것 + 지켜져야하는 사항들)
용어 정리
이게 모든 회사 (특히 우리나라)에서 공통적으로 사용하는 용어인지는 모르겠습니다.
베데스다 기준 + 지금 우리 팀에서 진행중인 프로젝트를 기준으로 작성됨
적당히 이해하기 좋게 의역함
- 키트 : 모듈 모음집 (테마별로 구분)
- 범위 : 모듈 하나가 차지할 수 있는 범위
- 규격 : 문, 창문 등 모듈 사이의 통로에 사용되는 항목의 규격
- 모듈 : 최종적으로 엔진에서 배치하는 것
- 접착제 : 모듈을 그리드에 맞추지 않고 배치했을 때 틈을 메꾸는 파츠
- 플러그/소켓 : 문, 창문등의 구멍과 틀
- 부품 : 모듈을 구성하는 기본 요소 (바닥, 벽, 천장 등)
범위 정하기
플레이어를 기준으로 정육면체의 기본 범위(Foot Print)를 정해야 합니다.
범위에 벗어난 모듈을 만들지 않기
기본 범위는 플레이어가 돌아다닐 수 있는 공간의 크기를 의미하는 것이 아니라
모듈의 모델이 속한 공간을 의미합니다
정해전 범위 외부까지 모델링하면 모듈들끼리 겹쳐보이거나
z-fighting 등의 이슈가 발생할 수 있습니다.
범위 확장
만약 높은 통로처럼 기본 범위안에 들어갈 수 없는 모듈이라면
기본 범위의 배수만큼 늘려 활용할 수 있습니다. (256 → 512 → 768 …)
피봇 정하기
보통 모듈의 하단 + 중앙에 피봇을 설정합니다.
당연하지만 한번 정한 피봇을 변경하면 기존에 배치해둔 레벨이 망가지니 주의해야 합니다.
규격 정하기
문이나 창문같은 모듈 사이의 통로에 사용되는 항목의 규격을 정해야 합니다.
규격을 정해야하는 이유?
- 다른 종류의 모듈끼리 잘 연결될 수 있음
- 문을 통과하는 캐릭터를 설계할 때 (AI 혹은 애니메이션) 발생할 수 있는 문제를 줄일 수 있음
플러그와 소켓
모듈 사이의 통로에 플러그를 추가해 자연스럽게 연결할 수 있습니다.
(응용편)
그리드에서 벗어나기
모든 것을 그리드에 맞춰 배치하면 레벨이 지루하게 느껴질 수 있습니다.
그리드에 벗어나게 모듈을 배치하고
모듈의 틈을 기둥 등 다른 모델(접착제)로 채우면 자연스러운 배치가 가능해집니다.
모듈 겹치기
구멍이 있는 모듈들을 같이 배치해 다양한 조합을 만들 수 있습니다.
모듈 만들기
모델링
위 이미지처럼 범위에 맞는 모델을 통째로 모델링해 사용할 수도 있지만
모듈 단위가 아니라 모듈의 부품을 다 분해해 제작하고
엔진에서 모듈 단위로 다시 조립하여(프리팹) 사용하면 제작 비용을 아낄 수 있습니다.
참고자료
레벨디자인 북 (겁나 유용한 무료 레벨디자인 가이드 북)
https://book.leveldesignbook.com/process/blockout/metrics/modular
스카이림의 모듈러 레벨디자인 (2013 GDC 강연)
http://blog.joelburgess.com/2013/04/skyrims-modular-level-design-gdc-2013.html
폴아웃4의 모듈러 레벨디자인 (2016 GDC 강연) (스카이림 강연의 확장팩 같은 느낌)
(이 강연에서 많이 참고했습니다)
https://www.slideshare.net/JoelBurgess/gdc-2016-modular-level-design-of-fallout-4