게임 프로그래밍
이진 공간 분할로 보강된 셀 오토마타를 이용한 고립 동굴 없는 맵 자동 생성
김지민
*
, 오평*
, 김선정*
, 홍석민**
한림대학교 인터랙션디자인
*
, 한림대학교 광고홍보학과**
{rudengkim, vudhrh}@gmail.com, {sunkim, seokminhong}@hallym.ac.kr
Automatic Map Generation without an Isolated Cave Using Cell Automata Enhanced by Binary Space Partitioning
Ji-Min Kim
*
, Pyeong Oh*
, Sun-Jeong Kim*
, Seokmin Hong**
Graduate School, Dept. of Interaction Design, Hallym University
*
, Dept. of Advertising and Public Relations, Halym University**
요 약
다양한 이유로 콘텐츠 생성에 대한 연구는 최근 게임 인공 지능분야에서 활발히 연구되고 있 다. 디자이너의 개입과 관계없이 자동적으로 콘텐츠를 생성하려는 시도가 계속 되고 있으며, 여 러 게임 장르에서 다양한 형태의 게임 콘텐츠를 생성하는데 사용되어 왔다. 본 논문은 다양한 콘텐츠 생성 연구 중, 고립 동굴이 없는 맵을 자동으로 생성하기 위해 이진 공간 분할을 활용 하여 보강된 셀 오토마타 방법을 제안한다. 이진 공간 분할을 이용하면 원하는 공간의 수를 지 정할 수 있으며, 셀 오토마타를 이용하여 자동 생성된 맵의 통로를 탐색하는데 걸리는 시간도 줄일 수 있다. 본 논문에서는 이진 공간 분할로 보강된 셀 오토마타를 이용하여 자동 생성된 맵을 게임에 적용하여 그 유용성을 보인다.
ABSTRACT
Many researchers have paid attention to contents generation within the area of game artificial intelligence these days with various reasons. Efforts on automatic contents generation without game level designers' help were continuously progressed in various game contents. This study suggests an automatic map generation without an isolated cave using cellular automation enhanced by binary space partitioning(BSP). In other words, BSP makes it possible to specify the number of desired area and cellular automation reduces the time to search a path. Based upon our preliminary simulation results, we show the usefulness of our automatic map generation by applying the contents generation using cell automation, which is enhanced by BSP to games.
Keywords : Artificial Intelligence (인공지능), Binary Space Partitioning (이진 공간 분할), Cellular Automaton (셀 오토마타), Procedural Map Generation (절차적 맵 생성)
Received: Sep. 2. 2016 Revised: Oct. 10. 2016 Accepted: Dec. 9, 2016
Corresponding Author: Seokmin Hong(Hallym University) E-mail: [email protected]
ISSN: 1598-4540 / eISSN: 2287-8211
Ⓒ The Korea Game Society. All rights reserved. This is an
open-access article distributed under the terms of the Creative
Commons Attribution Non-Commercial License
(http://creativecommons.otg/licenses/by-nc/3.0), which permits
unrestricted non-commercial use, distribution, and reproduction in
any medium, provided the original work is properly cited.
1. 서 론
게임을 개발하는데 있어서 콘텐츠를 생성하는 것은 매우 중요하다. 게임에서 콘텐츠가 많지 않을 경우 플레이어는 같은 콘텐츠를 반복해서 소모하게 되고, 싫증을 느끼게 되어 금방 게임을 그만두게 된다[1]. 하지만 게임 개발자들이 콘텐츠를 생성하 는 것은 많은 시간과 비용이 소모된다. 콘텐츠를 절차적으로 생성하는 작업을 디자이너의 개입 없이 컴퓨터가 처리한다면 더 싸고 빠르게 콘텐츠를 제 작할 수 있다. 게임의 콘텐츠가 늘어나면서 수작업 으로 모든 것을 처리 할 수 없게 되었고 최소한의 수작업으로 고품질의 콘텐츠를 만들어야 할 필요성 이 늘어났다[2]. 대규모 개발사에 비해 인력이 적 은 소규모 개발사나 인디 게임 개발자들도 콘텐츠 생성 기술을 사용하면 짧은 시간에 많은 콘텐츠를 생성할 수 있다. 또한 모바일 디바이스의 적은 용 량으로도 많은 콘텐츠를 만들 수 있다.
이러한 다양한 이유로 콘텐츠 생성에 대한 연구 는 최근 게임 인공 지능분야에서 활발히 연구되고 있다. 디자이너의 개입과 관계없이 자동적으로 콘 텐츠를 생성하려는 시도가 계속 되고 있으며, 여러 게임 장르에서 다양한 형태의 게임 콘텐츠를 생성 하는데 사용되어 왔다. 절차적 콘텐츠 생성을 이용 한 가상 세계 생성[3], 절차적 생성을 이용한 게임 의 레벨을 디자인하는 방법[4], 문법을 이용하여 던전을 생성하는 방법[4], 액션 어드벤처 게임의 공간과 미션을 생성 하는 방법[5], 유전 알고리즘 을 이용하여 무기를 생성하는 연구[6] 등 콘텐츠 생성에 대한 다양한 연구가 진행되었다. 이렇듯 절 차적 콘텐츠 생성에도 다양한 분야가 존재한다. 절 차적으로 맵을 생성하는 분야에서는 이진 공간 분 할을 이용한 던전 생성기법[7], 에이전트 기반의 던전 생성 기법[7], 셀 오토마타를 이용한 던전 생 성 기법[8], 문법 기반의 던전 생성 기법[9] 등이 연구되었다.
셀 오토마타를 이용해 동굴을 생성하는 연구[8]
는 임의로 동굴이 생성되는 방식으로 구현되어 있
어 생성된 동굴들의 연결성을 보장하지 않는다. 또 한 임의의 생성방식으로 공간의 구분이 없어 사용 게임에 사용하기에는 무리가 있다. 본 논문은 절차 적 동굴 생성의 한계점을 보완하고 상용 게임에서 사용할 수 있도록 셀 오토마타와 이진 공간 분할 을 이용하여 동굴을 생성하였다. 이진 공간 분할을 사용할 경우 분할된 공간이 생성되고 공간을 연결 함으로서 동굴형 던전을 생성한다. 셀 오토마타만 을 사용하여 생성된 동굴은 공간의 수가 일정하지 않아서 던전으로 사용하기 힘들다. 하지만 이진 공 간 분할을 이용할 경우 원하는 공간의 수를 지정 할 수 있다.
2. 관련 연구
2.1 절차적 콘텐츠 생성
절차적 생성은 컴퓨터 공학 분야에서 알고리즘 으로 데이터를 생성하는 방법이다. 초창기의 비디 오 게임은 하드웨어의 제약이 심하여 알고리즘으로 콘텐츠를 생성하는 방식으로 던전과, 몬스터, 아이 템 등의 콘텐츠를 생성하였다. 1970년대 후반에 ASCII 기반의 게임인 로그(Rogue)를 중심으로 시 작하였으며 현대에는 토치라이트와 문명, 스카이림 등 다양한 상용 게임에서 이러한 기법을 사용하고 있다.
게임 AI에서 절차적 콘텐츠 생성이 많은 연구가
이루어지는 이유는 다음과 같다. 첫 번째로 동적인
절차적 콘텐츠 생성을 이용하면 기존의 게임과는
다르게 메모리의 소비를 줄일 수 있다. 일반적인
게임은 콘텐츠의 사용을 위해 미리 메모리에 해당
리소스를 올려두게 되는데, 절차적 콘텐츠 생성에
서는 필요에 따라 콘텐츠가 생성되기 전까지는 이
러한 리소스에 할당할 메모리가 필요하지 않기 때
문이다. 절차적 콘텐츠 생성을 사용하는 두 번째
이유는 수동으로 게임의 콘텐츠를 생성하는데 드는
많은 비용 때문이다. 세 번째 이유는 절차적 콘텐
츠 생성을 사용하면 완벽하게 새로운 형태의 게임
을 만들어 낼 수 있기 때문이다. 만약 실시간으로
충분히 다양한 형태의 새로운 콘텐츠를 생성해 낼 수 있다면, 진정한 의미의 끝이 없는 게임이 가능 해 질 것이다 [10,11].
2.2 이진 공간 분할
이진 공간 분할은 공간을 재귀적으로 분할하는 기법이다. 분할 과정으로 이진 공간 분할 트리의 구조가 만들어진다. 이진 공간 분할 기법은 3차원 컴퓨터 그래픽스 분야에서 렌더링 효율을 높이기 위하여 사용되었지만, 현재는 다양한 분야에서 공 간을 렌더링하기 위하여 사용되고 있다.
이진 공간 분할의 순서는 다음과 같다.
[1 단계] 시작할 공간을 루트 노드로 지정한 다.
[2 단계] 노드의 공간을 나누고 왼쪽 자식과, 오른쪽 자식으로 지정한다.
[3 단계] 나누어진 파티션 중에 조건에 만족 하는 하나를 선택한다. 2단계로 돌 아간다.
[4 단계] 만족할 때까지 반복한다.
2.3 셀 오토마타
1940년대에 스타니스와프 울람과 존 폰 노이만 이 로스앨러모스 국립 연구소에서 함께 연구하면서 이 개념을 처음 발견했다. 1970년대에 2차원 셀 오 토마타의 하나인 존 호턴 콘웨이의 라이프 게임이 소개된 이후 학계 밖에서 활발히 연구되기 시작했 다.
셀 오토마타는 규칙적인 격자 형태로 배열된 셀 또는 칸으로 정의된다. 각 셀은 유한한 수의 상태 를 가질 수 있는데, 예를 들어 “생존/죽음”이 있다.
격자는 유한한 수의 차원이면 된다. 셀의 상태는 이웃이라 부르는 셀들에 대한 관계로 정의한다. 시 간 t = 0일 때 각각 셀의 상태를 지정하고 이를 초기 상태라 한다. 새로운 세대는 정해진 규칙에 의해 만들어진다. 셀과 이웃들의 상태에 따라서 그
셀의 상태가 정해진다. 일반적으로 규칙은 각 셀에 대해 동일하고 시간에 따라 변하지 않으며 각 세 대의 모든 셀에 동시에 적용되는데, 가장 일반적인 두 가지 유형은 무어 이웃과 폰 노이만의 이웃이 다[Fig. 1].
[Fig. 1] Type of Cellular Automaton
3. 구 현
게임에서 맵은 장르를 가리지 않고 매우 중요하 다. 롤플레잉 게임에서는 필드나 던전을 생성하는 데 사용되고 스타크래프트나 워크래프트 같은 실시 간 전략 시뮬레이션 게임에서는 맵 자체가 하나의 전략이 된다[Fig. 2]. 셀 오토마타만을 사용한 맵 생성에서는 지역 간의 연결을 보장하지 않기 때문 에 본 논문에서는 이진 공간 분할과 셀 오토마타 를 이용하여 공간의 연결성을 보장하는 절차적 맵 을 생성하였다. 또한 구현의 편의성을 위하여 2차 원 타일 방식의 맵을 생성하였다. 절차적 맵의 생 성 규칙은 다음과 같다.
[규칙 1] 이진 공간 분할을 이용하여 적당한 수에 지역 생성
[규칙 2] 각각의 지역에 랜덤 맵 생성
[규칙 3] 셀 오토마타를 이용한 동굴 생성
[규칙 4] 지역 간의 통로 연결
(a) Starcraft (b) World of Warcarft [Fig.2] Examples of Game Maps 또한 다음과 같이 매개변수를 표시하였다.
w: 벽 지형의 비율
n: 셀 오토마타 알고리즘의 반복회수 θ: 셀의 상태를 정의하는 이웃 임계값 r: 이진 공간 분할의 나누어진 공간의 수
3.1 지역 생성
필요한 지역을 생성하기 위하여 우선 적당한 크 기의 2차원 공간을 설정하고 나누어질 지역의 개 수를 정한다. 2차원 공간을 루트 노드로 지정한 뒤 에 가로 혹은 세로로 분할하여 노드의 왼쪽 자식 과 오른쪽 자식으로 나누는 이진 공간 분할 트리 를 형성한다. 나누어진 지역은 하나의 노드이며 원 하는 만큼의 지역이 나올 때까지 분할 작업을 반 복한다. 이진 공간 분할 트리에 단말 노드의 개수 는 나누어진 지역의 개수와 같다[Fig 3].
셀 오토마타에 의해 생성된 동굴은 지역 사이의 연결을 보장하지 않는다. 생성된 지역 사이의 연결 을 위해서 지역 사이의 거리 계산과 적합한 통로 를 선택하는 알고리즘이 필요하다. 하지만 이진 공 간 분할 기법을 이용하면 통로를 연결하는 시간을 단축 시킬 수 있다. m개의 지역이 생성되어 모든 지역을 연결할 때 최단 경로 알고리즘인 Dijkstra 알고리즘을 사용한다면 선형 탐색으로 구현할 경우 O(
)의 시간이 소모된다. 반면에 이진 공간 분할 트리를 탐색할 경우 O(
log )의 탐색 시간이 걸리 므로 더 효율적이다.
[Fig. 3] Binary Space Partitioning(BSP) and BSP Tree
3.2 랜덤 타일 생성
이진 공간 분할을 이용하여 생성된 지역을 하나
의 공간으로 만들기 위하여 지역의 경계선은 이동
불가 지역으로 설정한다. 경계선을 제외한 나머지
부분은 공간 생성 확률을 지정하고 확률에 맞춰서
임의의 타일을 생성한다. [Fig. 4]는 임의의 확률로
타일을 생성하는 방식으로 임의성이 너무 커서 실
제 게임에 적용하기에는 무리가 있는 맵이다.
[Fig. 4] Random Tile Generation
3.3 동굴 생성
지역의 랜덤으로 생성된 타일을 셀 오토마타를 이용하여 동굴을 생성한다. 셀 오토마타는 무어의 이웃을 사용하였으며, 조건식은 다음과 같다.
[조건 1] 이동 가능 타일 < 이동 불가 타일
= 이동 불가 타일
[조건 2] 이동 가능 타일 == 이동 불가 타일
= 현재 타일 유지
[조건 3] 이동 가능 타일 > 이동 불가 타일
= 이동 가능 타일
[Fig. 5]는 랜덤 타일 생성 방식으로 생성된 맵 에 대해 셀 오토마타를 이용하여 동굴을 생성하였 다. [Fig. 4]와 달리 지역을 눈으로 확인할 수 있게 되어 게임에 적용할 수 있는 수준의 맵이 생성되 었다.
생성된 2차원 공간의 크기와 분할된 지역의 수 에 따라서 셀 오토마타의 반복 회수를 적절하게 조절하여 자연스러운 동굴을 생성해야 한다.
[Fig. 5] Cave Generation
같은 크기의 방에도 임의성을 제공한다면, 플레 이어가 패턴을 인식하기 어려워진다. 패턴 인식이 어려울수록 플레이어는 비슷한 콘텐츠를 다르게 인 식하여 장기간 플레이를 할 수 있다.
3.4 통로 연결
단말 노드의 부모를 이용하여 왼쪽 자식과 오른 쪽 자식의 통로를 연결한다. 왼쪽 자식과 오른쪽 자식의 이동 가능 타일을 조사한다. 이동 가능 타 일 중에서 경계에 있는 타일 추출한다. 왼쪽 자식 과 오른쪽 자식의 경계선 타일을 탐색하여 두 타 일 사이의 거리가 가장 가까운 타일을 연결한다.
아래 계층부터 루트 노드에 도착할 때까지 반복하
여 모든 지역의 통로를 연결한다. [Fig. 6]은 자동
으로 생성된 연결 통로를 보여주고 있다.
[Fig. 7] Compare Random Map, CA Map and BSP-CA Map [Fig. 6] Passage Connection
4. 결 과
[Fig. 7]에서는 임의로 맵을 생성하는 방식, 셀 오토마타만을 이용하여 생성하는 방식 그리고 이진 공간 분할과 셀 오토마타를 이용하여 생성하는 세 가지 방식으로 생성된 맵을 보여주고 있다. 각각의 맵은 세가지 방식을 타일 생성 비율 w을 변화시키 며 생성하였다.
첫 번째 방식인 랜덤 타일 생성을 이용한 랜덤 맵 방식은 벽 생성 비율 w를 변화시키더라도 실제 로 게임에서 사용할만한 의미 있는 맵은 생성되지 않았다. 두 번째로 셀 오토마타를 이용하여 맵을 생성하는 경우는 벽 생성 비율 w가 낮을 경우 넓 은 하나의 공간의 형태로 생성되다가, w가 높아질 경우 동굴형태의 맵이 생성된다. 하지만 공간사이 의 연결성을 보장하지 못한다.
마지막으로 이진 공간 분할과 셀 오토마타를 이
[Fig. 8] A Game Example Implemented by Unity3D
용한 방식은 원하는 만큼의 공간 수 r을 지정해 줄 수 있으며 벽 생성 비율 w에 따라서 다른 느낌을 줄 수 있다.
[Fig. 8]은 본 논문의 제안 방법을 Unity3D에서 구현한 화면이다. 좌측은 자동으로 생성된 고립 동 굴 없는 맵에서의 게임 화면이고, 우측은 이진 공 간 분할로 보강된 셀 오토마타에 필요한 매개변수 들을 설정할 수 있는 화면이다. ‘Obstacle Percent'는 매개변수 w(벽 지형의 비율), 'Iteration Number'는 매개변수 n(셀 오토마타의 반복 회수), ‘Terminal Node Max'는 매개변수 r (이진 공간 분할의 공간 개수)에 해당된다. 게임 레벨 디자이너는 자동 생성된 맵을 평가 후 매개 변수들의 값들을 조절하여 [Fig. 9]와 같이 다양하 게 생성 할 수 있다.
5. 결론 및 향후 연구
본 논문에서는 이진 공간 분할과 셀 오토마타를 이용하여 절차적으로 맵을 생성하였다. 생성 결과 를 비교해 볼 때, 기존 연구인 셀 오토마타만을 이 용하여 생성한 동굴 보다 본 논문의 제안 방법인 이진 공간 분할과 셀 오토마타를 이용하는 동굴이 더 유용함을 알 수 있다. 제안 방법은 맵 공간의 지역 개수를 사용자가 제어 가능하며, 지역 사이의 통로를 자동으로 생성할 때 이진 공간 분할 트리 를 이용함으로써 계산 시간을 단축시킬 수 있다는 장점을 갖는다.
하지만 이진 공간 분할과 셀 오토마타를 이용한
맵 생성 방식도 좁은 공간에 많은 방을 생성하려
할 경우 셀 오토마타를 이용한 맵 생성 방식처럼
연결성을 보장할 수 없게 된다. 그러므로 향후 연
구로 좁은 공간에서의 벽 지형 비율이 넓은 공간
에 비해 상대적으로 작게 만드는 적응적 방법을
연구할 예정이다.
(a) w = 0.2, n = 5, r = 5
(b) w = 0.2, n = 5, r = 4
(c) w = 0.2, n = 5, r = 5
[Fig. 9] Another Game Examples Implemented by Unity3D
REFERENCES