자동으로 양초미로 생성
이 글도쿄고등전문연구반① Advent Calendar 202120일째보도
② 이것은: https://adventar.org/calendars/6569
집필할 때 이미 하와이 표준시간까지 늦었어, 미안해...
이번에는 정말 단락이 없어서 고민을 많이 했는데 드디어 로거렉의 지하 감옥을 만들어야 한다는 생각이 들었으니 이번엔 이걸 쓰자.
촛불이란?
로거렉은 게임 유형 중의 하나로 그 특징은
- 격자로 구분된 맵
- 랜덤으로 지하 감옥 생성
- 각 지하감옥은 유저의 상태를 초기화합니다
잠깐만요.
주로 바람이 불어오는 사이렌 시리즈와 포켓몬스터의 불가사의한 미로 시리즈가 유명해 놀아본 사람도 많죠.
지하 감옥 생성 알고리즘
이번에는 자동적으로 지하 감옥을 생성하려고 하기 때문에 생성 알고리즘을 고려할 필요가 있다.
제가 조금 조사해 봤는데 어떤 커뮤니티에서 로고릭 Dev 커뮤니티라는 log like의 개발에 대해 토론을 했습니다. 거기는 총결산알고리즘 목록 생성이 공개한 것이고 저는 이것을 참고했습니다.(Roguelike Dev 커뮤니티 여러분, 감사합니다.)
차트에는 다양한 알고리즘이 기재돼 있지만 이번에는 가장 기본적인 Basic BSP Dungeon Generation(이하 BSP라고 함)을 사용하기로 했다.
BSP는 한 구역을 몇 차례로 나눠 분할된 각 구역에 방을 만든 뒤 도로를 통해 연결하는 방법을 간단히 설명한다.
이 방을 생성한 후 도로로 연결하는 수법을 실시하는 데 있어서 문제는 고립된 방과 도로와 방의 충돌이다. BSP는 간단한 실장으로 이러한 문제를 해결할 수 있다.
다음에 나는 그림으로 상세하게 설명하고 싶다.
이번 예에서 우리는 어떤 구역을 세 번(방 8개 생성)으로 나누는 것을 고려했다.
먼저 영역을 세 번 분할합니다.분할할 때 세로든 가로든 자유롭다.또 분할된 구역이 쉽게 이해될 수 있도록 부모에게 AorB라는 이름을 붙인다.
분할이 끝난 후 각 구역으로 수납하기 위해 방을 생성합니다.
마지막으로 가장 가까운 부모는 같은 방 길에서 연결된다.이렇게 하면 반드시 모든 방을 연결할 수 있다.
또한 구역 내에 방이 여러 개 있다면 경계선에 가장 가까운 방을 선택하면 다른 방과 충돌하지 않고 연결할 수 있다.
완성된 지하감옥은 이런 느낌이다.상세한 설명은 wiki에 있으니 함께 참고하십시오.
이루어지다
python에 설치된 게 이거예요.
끝맺다
초등학교 때 신기한 포켓몬스터의 미로를 너무 좋아해서 재밌게 놀았는데, 이제 미로의 생성 방법을 알게 되고 또 다른 재미있는 곳을 볼 수 있어서 글을 쓸 때 다시 사고 싶은 마음이 생겼어요.
이번에는 간단한 BSP와 또 다른 재미있는 생성 알고리즘을 소개했으니 관심 있는 분들은 꼭 조사해 보세요.
마지막으로 지금까지 저의 졸렬한 글에 대한 지지에 감사드립니다.
Reference
이 문제에 관하여(자동으로 양초미로 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fazerog02/items/4855cd7303dc9365aa79텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)