-
240203 BSP 랜덤맵 통로 생성기록 2024. 2. 3. 15:37
문제점
이전 포스팅에서 랜덤맵 Room을 정상적으로 만들었지만
240201 BSP 알고리즘을 이용한 랜덤맵 생성
전에 벽으로 나누어진 랜덤맵을 만든 내용을 바탕으로 이를 확장하였다. 240104 BSP Algorithm을 이용한 Random Map Generator BSP 알고리즘 아이디어 1. 전체공간을 가지고있는 RootNode를 가지고 시작한다. 2.
hayo-su.tistory.com
이를 연결하는 통로가 정상적으로 생성되지 않는 문제가 발생하였다.
원인 파악
leaf노드의 저장 순서로 인해 근처에 있는 노드를 찾지 못해 발생한 문제다.
해결 방법, 아이디어
1. 저장하는 순서를 변경하는 방법
2. 추가 연산을 통해 근처에 존재하는 리프 노드를 찾는 방법
1번을 먼저 트라이 해본 후 해결이 불가능한경우 2번을 시행해볼 예정이였다.
현황 파악
현재 노드를 저장하는 순서는 다음과 같다.
이를 인접노드가 저장되도록 하기 위해서 다음과 같이 변경하도록 하였다.
if (true == is_reverse) // 역순 { return DivideNode(tree->rightNode, rightnodecnt, _size, nrate, true) && DivideNode(tree->leftNode, leftnodecnt, _size, nrate, false); //왼쪽, 오른쪽 자식 노드들도 나눠준다. } else // 정순 { return DivideNode(tree->leftNode, leftnodecnt, _size, nrate, true) && DivideNode(tree->rightNode, rightnodecnt, _size, nrate, false); //왼쪽, 오른쪽 자식 노드들도 나눠준다. }
해당 코드
결과
모든 리프노드의 룸이 연결됨을 확인할 수 있다.
문제 해결 완료~
'기록' 카테고리의 다른 글
240328 UE5 Replicate 적용 문제 (0) 2024.03.28 240320 언리얼엔진5 트리거박스 C++코딩 (0) 2024.03.20 240201 BSP 알고리즘을 이용한 랜덤맵 생성 (1) 2024.02.02 240113 [IOCP] thread 작동 방식 이해하기 (0) 2024.01.13 240112 C++ 백준 런타임에러(NZEC) (1) 2024.01.12