요약 : 먼저 Graph(각 Slot이 vertex이고, 인접하고 길이 연결되는 tile 쌍을 edge로 연결한) 를 생성하고, 그에 맞게 tile 을 배치한다.
-
용어 정의
- Cell : 레벨에서 한 칸을 나타내는 단위. 타입(도달 가능, 도달 불가능, 길, 산, 강 등등)의 속성을 가짐
- Tile : Tile의 2차원 배열로 이루어짐. 레벨 디자이너에 의해 미리 생성되며 이미지 파일을 가진다. 레벨 디자이너가 지정한 Puzzle을 포함할 수 있다.
- Slot : Tile 하나가 배치되는 공간
- Main Path : 레벨을 생성하기 전에 path를 미리 만들고, 이 path가 솔루션이 되도록 레벨을 구성한다. 이 path를 Main Path라고 한다.
- Sub Path : Main Path로부터 랜덤하게 뻗어나간 갈림길을 Sub Path라 한다.
- 그래프 : Tile 단위의 그래프와 cell 단위의 그래프가 있다. Tile(혹은 cell)을 vertex로 보고 인접한 Tile(혹은 cell) 사이에 Edge가 연결되어 있다.
- Tile 적합도 : 두 개의 Tile이 인접하게 되면 경계에 마주하는 cell들이 생긴다. 이러한 마주하는 cell 간에 타입이 얼마만큼 일치하는 지를 수치로 나타낸다. 이 값이 높을수록 인접한 Tile 간에 지형이 자연스럽게 연결된다
-
알고리즘
-
tile을 배치하기 전에 그래프를 생성한다.
- 먼저 시작점을 랜덤하게 선정한다.
- 시작점에서 백트래킹을 시작하여 주어진 턴 횟수와 길이를 만족하는 패스를 생성한다.(이를 Main Path라 한다.)
- Main Path를 따라 사용자가 지정한 Lock 과 Puzzle을 배치한다.
- 이 때 이 지점은 Graph 에서 Articulation Point가 되도록 할 것이다.
- 전 단계에서 배치한 Lock과 Puzzle을 경계로 하여 Section으로 나눈다.
- 각 Section에 해당하는 Main Path를 사용자가 지정한 두께로 넓힌다.
- 각 Section의 Main Path로부터 Sub Path를 생성한다. 이 때 생성하는 갈림길은 사용자가 지정한 난이도를 만족하도록 한다.
- 이 때 cycle 을 허용한다. 즉 Sub Path 가 뻗어나가다가 다시 Main path와 연결되는 경우를 허용한다. 단 이 cycle은 Section 사이를 뛰어넘어서는 안 된다.
- 이 단계까지 하면 그래프가 생성된다.
-
생성된 그래프를 만족하도록 각 slot에 Tile을 배치한다.
- Tile 배치 원칙은 다음과 같다.
- 그래프에 나타난 인접 Tile과의 연결 관계가 일치하는 Tile을 배치
- 위의 원칙 하에, 인접한 Tile 간에 Tile 적합도가 높도록 배치한다.
.JPG)