주기적 생성: Unexplored의 비밀!
목차
- 서문
- 프로시저 생성이란?
- 게임 개발에서 프로시저 생성의 역할
- 루돌모션의 Unexplored에서의 주요 아이디어
- 주기적 생성 방식의 동작 원리
- 주기적 생성의 장점과 한계
- 레벨 그래프와 공간 매핑
- 잠긴 문 문제와 그 해법
- 주기적 생성이 적용된 Unexplored의 맵 설계
- Unexplored 2: The Wayfarer's Legacy 소개
- Unexplored 2의 주요 변화
- 결론
주기적 생성: 새로운 레벨 생성 시스템의 탄생 🔄
게임 개발에서 레벨의 프로시저 생성은 매우 오래된 역사를 가지고 있습니다. 매 판마다 독특하고 새로운 레벨을 만들기 위해 사용되는 이 아이디어는 어떻게 실행될까요? 이를 위한 정확한 방법론이 존재하지 않아서 당연히 이러한 접근법은 섣불리 이용하면 안될 것입니다. 게임에 따라 각각 다른 유형의 디자인 요소가 적용되기 때문에 예를 들면 'Dwarf Fortress', 'Spelunky', 'Binding of Isaac'처럼 각각의 게임마다 다른 레벨 디자인이 필요합니다. 그러나 이러한 경우에도 디자인과 기술적인 도전은 새로운 레벨을 생성하는 방법을 찾는 것입니다. 이러한 레벨은 일정한 조화와 노골적은 새로움을 유지하면서도 이질감을 줄 수 있어야 합니다.
🎮 러덤모션의 'Unexplored'가 주목받는 이유
이번 이야기에서는 2017년 롱로그라이크 던전 크롤러인 러덤모션의 'Unexplored'에 대해 살펴보려고 합니다. 이 게임의 흥미로운 점은 레벨을 직접 생성하는 대신 주기적 생성 시스템에 의존한다는 점입니다. 이 시스템은 흥미로운 게임플레이 사이클을 생성한 후, 이를 완전한 플레이 가능한 던전으로 변환합니다.
초기에는 조금 혼동스러울 수 있는데, 주기적 생성은 실제 세계에서 비롯된 개념입니다. 인간이 만든 실제 구조물을 살펴보면 주기적인 모습이 많이 보입니다. 도시 구역에서부터 공원, 도로망에 이르기까지, 주기적인 패턴들이 재미있는 구조와 레이아웃, 사람들의 이동 경로에 기여합니다.
대부분 인간이 디자인한 비디오 게임 레벨들도 이러한 주기적 모습이 나타납니다. 멀티플레이어 게임의 맵이나 전통적인 싱글 플레이어 게임에서도 주기적 패턴을 찾을 수 있습니다. 플레이어들은 잠겨있거나 돌파해야 할 장애물을 만나면, 해결책을 찾기 위해 맵을 모험한 후, 이제 문제가 해결되었는지 확인하기 위해 루프의 시작지점으로 돌아갑니다.
하지만 프로시저 생성을 사용하여 레벨이나 환경을 만드는 게임들은 이러한 패턴 대신 가지를 치는 동향을 보입니다. 출발점에서부터 종점까지 나아가면서 막다른 길과 산출물을 만들어가는 것입니다. 이 방식도 작은 규모의 레벨에서는 잘 작동하지만, 레벨이 커질수록 더욱 뚜렷이 드러나게 됩니다. 게임의 디자인도 이에 맞추기 위해 조치를 취합니다. Spelunky의 레벨은 4x4 격자의 방으로 제한되며, 가지에는 먼저 수집할 수 있는 아이템과 지형을 파괴하는 데 도움이 되는 아이템이 추가됩니다. Dead Cells의 레벨은 훨씬 큰데, 이는 리스크/리워드 교환적 요소로 활용됩니다. 여기에는 유용한 아이템과 보스 셀 문이 방향를 잃어버린 길로 배치되어 있지만, 플레이어가 도로의 마지막 갈림길로 돌아갈 수 있도록 위치에는 포탈이 배치되어 있습니다.
이러한 이유로 'Unexplored'는 흥미로운 게임입니다. 레벨 크기는 일반적으로 작지만 미로처럼 복잡한 구조와 해결해야 할 퍼즐들로 가득 차있습니다. 플레이어는 Amulet of Yendor을 수집하기 위해 아래로 내려갈 때 또는 탈출하려고 올라갈 때 퍼즐을 해결해야 합니다.
주기적 생성이라는 개념은 Unexplored의 창조자인 Joris Dormans 박사에 의해 고안되었으며, 계속된 프로시저 생성 레벨에 대한 연구의 일환으로 등장했습니다.
🔄 주기적 생성이 작동하는 방식은?
일반적으로 레벨 생성 알고리즘은 시작점에서 목표 지점까지 가는 경로를 찾는 데 초점을 맞춥니다. 레벨의 일부를 경로를 구축하면서 또는 기존 레벨 청크를 검색하면서 생성될 수도 있습니다. 시작점부터 출구까지 하나의 완전한 경로가 존재하기만 하면, 해당 레벨은 최소한 기능적이며 생성 프로세스는 더 많은 기능을 추가할 수 있도록 진행될 수 있습니다.
하지만 주기적 생성에서는 시작점에서 목표지점으로 돌아오는 두 번째 경로가 존재한다는 아이디어가 있습니다. 이것이 모든 Unexplored 던전의 핵심입니다. 던전은 다음과 같이 하나의 단순한 사이클로 시작됩니다. 하지만 대부분의 생성기와 달리 시작과 종료 지점 사이의 이러한 아크들은 레벨 공간 내에서 물리적인 경로가 아닐 수도 있습니다. 대신, 실제 레벨에서 어떤 위치에 있던지 상관 없이 시작과 종료 지점 사이에서 일어날 게임플레이를 나타냅니다.
그런 다음 이 사이클에는 특정한 게임플레이 패턴이 내장됩니다. 두 개의 경로 중 하나는 매우 짧을 수도 있고, 다른 하나는 길 수도 있습니다. 각 방향으로 한 번에 하나의 경로만 선택할 수도 있으며, 두 경로 모두 유효한 경로를 제공할 수도 있습니다. 리스크와 리워드를 각 경로에 적용할 수도 있으며, 하나는 적이 적은 길일 수 있고, 다른 하나는 더 짧지만 적이 많은 길일 수 있습니다.
그런 다음 잠긴 문 패턴에서 가장 흥미로운 부분을 볼 수 있습니다. 플레이어는 목표에 도달하기 위해 경로 A를 따라갑니다. 하지만 잠긴 문을 발견하게 됩니다. 그런 다음 경로 B를 선택해 진행하다가 열 문을 열 수 있는 열쇠를 찾습니다. 경로 B를 완료한 후, 플레이어는 다시 시작점에 도달하므로 경로 A를 통해 문을 열기 위해 이동합니다.
이 과정에서 퍼즐의 통합성을 유지하기 위해 여러 가지 미묘한 요소들이 추가됩니다. 예를 들어, 경로 B는 시작점에서 접근할 수 없을 수 있습니다. 경로 A에는 키를 얻은 후에만 작동하는 함정이 있을 수도 있습니다. 또한 목표에서 경로 B로의 입구는 입장 후에 닫힐 수 있으므로 플레이어는 A를 통해 루프를 완료해야 합니다.
그러나 핵심은 전체 레벨이 사이클로 구축된다는 것입니다. 플레이어는 처음으로 플레이하면 전체 사이클을 경험할 수도 있고, 다음 레벨로 나아가는 출구로 이동하기 위해 일부분만 경험할 수도 있습니다.
실제로 주기적 생성의 본질은 덧붙일 수 있는 노드가 있는데, 이 노드들은 현재의 사이클 옆에 추가되지 않고, 기존 사이클에 추가됩니다. 던전 사이클은 디자이너가 작성한 규칙에 따라 변형되는 변형 문법 시스템으로 구축됩니다. 이를 통해 새로운 노드를 사이클에 추가하여 던전의 새로운 부분, 즉 지도 한 부분에서 다른 곳으로의 지름길, 함정과 몬스터가 가득한 새로운 방, 장소를 도입할 수 있습니다. 또한 라디오 그래프가 플레이 가능한 던전으로 변환되는 과정에서 기존 던전 부분을 꾸며 주는 규칙을 사용할 수도 있습니다.
하지만 각 맵은 반드시 하나의 사이클만 갖는 것은 아닙니다. 패턴은 새로운 사이클을 기존 사이클 안에 중첩시킬 수 있습니다. 따라서 시작점에서 목표지점까지 두 가지 경로를 가지고도 잠긴 문이 있는 경우, 기존 경로에 새로운 잠금과 키 사이클을 주입할 수도 있습니다. 또는 다른 부분에 새로운 갈림길 경로를 추가할 수도 있습니다.
이러한 패턴들은 'Ludoscope'라고 불리는 시스템을 사용하여 인코딩됩니다. 이 시스템은 레벨 디자인 원칙에 대한 예비 연구 프로젝트로서 Dormans가 과거에 개발한 게임 디자인 도구입니다. 사용자는 필요한 미션 구조와 사용 가능한 패턴, 규칙을 인코딩할 수 있습니다. 따라서 이는 흥미로운 과정으로, Ludoscope에서 작업할 때 이를 할 수 있는 playable한 형태가 아니라 게임 내에서 이 문법이 무엇을 의미하는지를 전달할 수 있는 것입니다. 따라서 동일한 문법을 다른 게임에서 완전히 다른 방식으로 해석할 수 있습니다. 하지만 현재는 Unexplored가 주기적 던전을 어떻게 완전한 플레이 가능한 레벨로 변환하는지 살펴보겠습니다.
주기 생성과 게임 레벨 디자인의 융합: Unexplored의 독특한 레벨 생성 시스템
'Unexplored'는 20개의 완전한 던전을 한 번의 플레이어 턴 동안 생성해야 합니다. 그러나 각 던전은 양방향으로 해결할 수 있도록 디자인되어 있습니다. Amulet of Yendor를 획득하기 위해 아래로 이동한 후, 경로를 따라 다시 시작 지점으로 올라가서 플레이를 완료해야 하기 때문입니다. 이러한 주기적 생성 시스템은 이를 가능하게 하기 위해 설계되었습니다. 주기적 시스템은 맵이 어마어마하게 커지거나 복잡해질 수 있는 기능이지만, 게임 내 평균 지도는 몇 개의 중첩된 사이클을 포함하고 있으며, 각각의 런을 통해 다양성을 보장하기 위해 레벨 그래프에 추가된 추가 데이터를 사용합니다.
하지만 주요한 질문은 미션 그래프가 실제 게임 던전으로 어떻게 번역되는가입니다. 그래프를 제한된 게임 공간으로 맵핑하는 문제뿐만 아니라, 미션 주기에서 가져온 잠긴 문 퍼즐이 어떻게 다양한 방법으로 번역되어 던전 디자인에 다양성을 가져올 수 있는지가 중요합니다.
그러면 먼저 게임이 레벨 그래프에서 어떻게 맵을 구축하는가부터 살펴보겠습니다. 이는 실제로 프로세스에서 가장 복잡한 부분일 수 있습니다. 왜냐하면 레벨 그래프에는 공간 정보가 포함되어 있지 않기 때문입니다. 레벨 그래프에는 방 B가 방 A와 C 사이의 어딘가에 배치된다는 구조적 데이터와 키와 잠긴 문과 같은 요소들 간의 관계 정보만 포함되어 있습니다. 따라서 Unexplored의 생성 엔진은 레벨 그래프를 분석하고 이를 고해상도 타일맵으로 변환하여 게임에서 렌더링하는 별도의 시스템을 가지고 있습니다.
Unexplored의 던전 생성은 빈 노드들의 그리드 그래프로 시작됩니다. 그런 다음이 노드 그리드에 주기적 생성 시스템을 실행하여 던전을 작성합니다. 이것은 일종의 타협이지만, 레벨이 항상 2D 레벨 공간에 매핑될 수 있도록하는 미묘하면서도 영리한 디자인 전략입니다. 던전이 그리드에 생성되면 맵을 매우 낮은 해상도의 타일맵으로 변환한 다음 해상도를 높이기 위해 여러 번의 패스를 통해 다시 증가시킵니다. 고해상도 맵이 구축되면 레벨 그래프에 저장된 추가 정보를 사용하여 복도에 나타날 몬스터, 특정 방에 함정, 키와 잠긴 문을 지정해 줍니다.
문제의 화폐/장애물 요소에 따라 게임 내에서 어떻게 표현되는지, 미션 그래프에 의한 이러한 퍼즐의 다양한 해석 방식이 레벨 디자인에 어떤 다양성을 가져오는지 단순하게 다루었습니다.
키는 특정한 잠금이나 해당 키와 일치하는 잠금에 사용될 수 있도록 설계됩니다. 특정 잠금을 위해 사용되는 것이거나 해당 잠금과 일치하는 잠금 모두에 사용할 수 있는 것이 될 수 있습니다. 키는 여러 번 사용할 수 있는 것이기도 하고 한 번 사용하면 소진되는 것이기도 합니다. 그러나 열쇠는 그것이 사용되는 잠금에 따라 의존합니다.
잠긴 문이 항상 문에 있는 자물쇠가 아니라는 점 역시 주목할 만합니다. 그리고 키 또한 물리적인 키가 아닐 수 있습니다. Unexplored에는 여러 종류의 키와 잠금 조합이 있으며, 이는 고전 'The Legend of Zelda'와 유사한 트로프에서 찾을 수 있는 키/잠금의 개념을 활용하고 있습니다. 예를 들어, 특정 잠금을 여는 데 필요한 물리적인 키가 있다고 가정할 수 있습니다. 이를 '조건부 잠금'이라고 하는데, 이때 잠금은 적이나 사용 가능한 무기일 수 있습니다. 또는 잠금은 인쇄물을 찾아야 하는데 이를 "키"라고 정의합니다. 그러나 이 잠금은 "조건부"가 아니라면 열쇠가 필요하지 않습니다. 그러나 이러한 열쇠-잠금 조합은 설명한 것 외에도 다양한 변주가 가능합니다. 예를 들어, 기간 내에 스위치를 사용하여 열린 잠금은 다시 잠길 수도 있습니다. 잠긴 문은 무너지는 다리와 같이 일방향일 수 있으므로 한 번 건너면 다시 돌아갈 수 없습니다. 사실, 가장 흥미로운 기능 중 하나는 언제나 모든 상황에서 푸는 것이 보장되지 않은 불안전한 잠금으로 설계될 수 있다는 것입니다. 이는 자주 사용되는 것은 아니지만, 레벨을 완료할 수 있는 주요한 키/잠금 주기는 안전하고 따라서 해결책이 있다는 것을 보장하는 반면, 안전하지 않은 잠금은 더 많은 비밀 통로를 위한 것입니다.
이 글을 작성할 때, 'Unexplored 2: The Wayfarer's Legacy'는 아직 개발 중입니다. Ludomotion 팀의 도움으로 미리 플레이해보는 기회를 얻었으며, 여기에서 그 일부를 공유하고자 합니다. 이전 게임과 비교하여 플레이어는 어둡게 변하는 던전의 범위를 벗어나 광활한 오픈 월드를 탐험하게 됩니다.
플레이어들이 탐험할 새로운 광활한 세계가 있지만, 여전히 각 플레이어의 진행에 포함되는 던전도 있습니다. 주기 생성 시스템은 여전히 중요한 역할을 하지만 미션 그래프가 어떻게 번역되고 있는지뿐만 아니라 다른 부분을 위해 다른 문법이 구축되고 있는 것에 초점을 맞췄습니다. 오픈 월드, 환경 퍼즐, 던전 및 보다 큰 이야기에 대해서도 별도의 생성기가 사용되고 있습니다.
Unexplored 2는 현재 2021년 출시 예정이며, 올해 더 많은 변화에 대해 자세히 설명하는 비디오로 돌아오려고 합니다. 한편, 게임에 대한 자세한 내용은 설명란에 링크로 제공되므로 참조하시기 바랍니다.
AI and Games는 Patreon을 통해 후원받고 있습니다. 커뮤니티에 참여하고 투표를 통해 주제를 정하며 이름이 화면에 표시되는 좋은 분들과 함께할 수 있습니다. 자세한 내용은 화면과 설명란에 있는 링크를 확인해 주세요. Patreon 커뮤니티의 투표를 통해 결정된 주제와 관련된 내용으로 곧 다시 찾아뵙겠습니다. 안녕히 계세요.