무작위로 생성 된 던전으로 게임을 디자인하고 있습니다. 이것을 노드가 방이고 모서리가 문 또는 복도 인 연결된 무 방향 그래프 로보고 싶습니다 . 그런 다음 "측면"노드를 던전 입구로 선택하고이 입구와 다른 모든 노드 사이의 거리를 계산하고 가장 먼 노드 중 하나가 던전의 "목표"(보물, 보스, 공주 등).
마지막 던전 지형을 생성하는 두 가지 방법을 보았습니다.
- 먼저 임의의 그래프를 생성 한 다음 가장자리 연결을 고려하여 임의의 위치에 방으로 2D 세계를 채우십시오. 나는 방이 불가능한 장소에 방을 맞추려고 "잠금"될 수 있기 때문에 이것이 때때로 어려울 것이라고 생각했다.
- 첫 번째 방을 생성하여 원하는 곳에 무작위로 놓고 결과를 노드와 모서리에 매핑합니다. 나는 이것을 시도하기로 결정했다.
내 아이디어는 다음으로 구성됩니다.
- 먼저 전체 던전을 포함 할 큰 방을 생성하십시오.
- 큰 방을 임의의 위치에 큰 방 안에 놓고 큰 방을 다른 지역의 2 개의 작은 방으로 나눕니다.
- 그런 다음 각 객실을 너무 작거나 총 객실 수가 최대치 (또는 다른 조건)에 도달 할 때까지 각 객실을 2로 계속 나눕니다. 각각의 새로운 방은 노드입니다.
- 완료되면 각 방을 확인하고 인접한 다른 방을 모두 찾아서 두 노드를 가장자리로 연결 한 것으로 표시합니다.
이렇게하면 모든 방이 2D 세계에서 가능한 위치를 유지하고 연결된 그래프로 올바르게 매핑됩니다.
내 문제는 방을 연결하는 문과 복도가 너무 많다는 것입니다.
그래서 연결된 무 방향 그래프의 가장자리 수 를 줄이는 알고리즘을 원 하지만 결국 에는 연결 상태를 유지합니다 (모든 노드에 도달 할 수 있음).