던전 생성의 맥락에서 절차 적 콘텐츠 생성에 관한 좋은 자료는 무엇입니까?
내가 찾을 수있는 가장 가까운 기사 는 2d 미로를 생성하는 알고리즘 이었습니다 . 이것은 내가 찾고있는 것이 아닙니다. 객실 및 연결된 복도와 같은 기능이 이상적입니다.
감사!
던전 생성의 맥락에서 절차 적 콘텐츠 생성에 관한 좋은 자료는 무엇입니까?
내가 찾을 수있는 가장 가까운 기사 는 2d 미로를 생성하는 알고리즘 이었습니다 . 이것은 내가 찾고있는 것이 아닙니다. 객실 및 연결된 복도와 같은 기능이 이상적입니다.
감사!
답변:
이것은 이전에 다소 대답되었습니다. 당신의 첫 번째 장소는 http://pcg.wikidot.com/ 이어야합니다 .
나는 이것이 전혀 유용한 답변이 아니라고 비난 받았기 때문에 (실제로? 누군가 자원을 요구하고 주제를 다루는 위키에 대한 링크를 게시합니까? ), 위키의이 페이지는 던전 생성기를 다루고 주제에 대한 다양한 기사에 대한 링크를 제공합니다.
http://pcg.wikidot.com/pcg-algorithm:dungeon-generation
절차 적 컨텐츠 생성은 매우 창의적인 접근 방식이며 모든 아이디어가 유효하기 때문에 전체 위키를 탐색하는 것이 좋습니다. 그것은 측면 사고의 도전이며, 그 점에서 재미있는 것입니다.
나는 사각형 격자를 기반으로 다음 알고리즘을 사용하여 상당히 좋은 수준을 얻었습니다.
먼저 방 세트를 만듭니다. 임의의 매개 변수는 방의 크기와 그 수를 정의합니다. 적응 형 알고리즘은 큰 복도로 만들어진 일부 구역과 매우 작은 방의 일부 구역을 정의 할 수도 있습니다.
그런 다음 모든 방이 서로 연결되어 있는지 확인해야합니다. 이를 위해 패스 파인더를 실행하여 각 객실 쌍 사이에 복도 (A라고 말하자)를 파서 아직 조각되지 않은 공간 (벽)에 비해 기존 공간 (객실 또는 기타 복도)에 무작위로 선택된 가중치를 부여합니다. 무게의 차이가 작 으면 새로운 복도를 파는 것이 합리적으로 저렴할 것입니다. 알고리즘은 방 사이에 많은 복도를 만들어 장소에서 다른 장소로 갈 가능성이 많습니다. 무게의 차이가 크면 알고리즘은 기존 방과 복도를 통과하는 것을 선호하여 경로를 더 구불 구불하게 만들고 특정 목적지에 도달하기위한 선택의 폭을 줄입니다.
이를 통해 적은 수의 매개 변수를 사용하여 작은 복도가있는 스파 스 거대한 홀에서부터 밀접하게 연결된 챔버의 벌집 모양의 미로에 이르기까지 매우 다른 외관 수준을 만들 수 있습니다.
이 알고리즘을 기반으로 영역에 따라 벽 장식을 추가하고, 복도를 더 작게 또는 더 크게 만들고, 특별한 방을 만드는 등의 작업을 수행 할 수 있습니다.
코드를 읽는 것이 좋으며 C #을 구문 분석 할 수있는 경우, 로그 로그인 Amaranth가 사용하는 던전 생성기를 제안해도됩니까? 그것은이다 여기 . 연결된 객실, 확장 가능한 기능 및 기타 멋진 기능을 처리합니다.
전체 프로젝트를 풀고 빌드하면 던전을 생성하고 그릴 수있는 독립형 도구가있어 조정하고 작동 방식을 볼 수 있습니다.
이 모든 것이 훌륭한 아이디어입니다. RogueBasin 과 pcg.wikidot.com 에서 약간 가져 와서 C #으로 자체 구현을 작성했습니다.
나는 셀룰러 오토마타 방법을 사용하여 생성 될 수있는 동굴 같은 레벨의 '자연적인'모습을 정말 좋아했습니다. 셀룰러 오토마타 방법의 의미를 이해하려면 Conway의 Game of Life를 상상해보십시오. 내 코드는 4-5 방법을 사용합니다. 즉, 타일이 벽이고 9 개 이웃 중 4 개 이상이 벽이거나 벽이 아니고 5 개 이상의 이웃이 벽이면 타일이 벽이됩니다. 먼저 벽이나 공간으로지도를 무작위로 채운 다음 각 x / y 위치를 반복적으로 방문하여 4-5 규칙을 적용합니다. 고립 된 동굴을 형성하는 문제를 완화하기 위해지도를 무작위로 채운 후 4-5 규칙을 각 타일에 적용하기 전에지도 전체에 수평선을 비워 각 타일을 벽 대신 공간으로 설정했습니다.
내지도 핸들러 클래스의 코드와 여기에서 내가 개선 한 부분을 볼 수 있습니다
또는 보관 된 버전은 여기 .
이것을 찾는 가장 직접적인 장소는 실제로 소스 코드를 보는 것입니다. Angband와 Nethack의 두 주요 업체는 모두 오픈 소스입니다.