설명

유지보수를 쉽게 하기 위해 행동 트리로 맵 절차생성을 해본다.


절차생성은 모듈화와 범위 지정이 중요한데 행동트리에 딱 맞는 조건이라 생각했다.



코드 설명


viewimage.php?id=2ab4c42ef0d0&no=24b0d769e1d32ca73ced82fa11d02831fe384ecd5bf5471a0304a3eb0e961586f70f6a5f9d3f551404eaff6af8b4747c462e15adaf0dea72469d359968b41e89cff12885cdda08bb1425a6811017ff82


이번에 쓸 행동트리다.

44라인 : 대충 맵 생성할 범위를 표시해줬다.


45라인 : 노드 변수를 루트의 레퍼런스로 초기화


46라인 : 시퀸스 노드를 루트에게 만들어주고 노드 변수에 대입. 이로써 노드 변수는 시퀸스를 가르킨다.

시퀸스 노드는 자식노드가 하나라도 false를 리턴하면 중단하고 false를 리턴한다.


47라인 : 랜덤한 크기의 섹터를 지정한다. true리턴


48라인 : 어... 이름이 이상한데 위에서 랜덤하게 지정한 방이 기존의 섹터들과 겹치는지 확인한다. 겹치면 false 아니면 true. 여기서 블랙보드를 갱신해준다.

블랙보드는 행동트리가 외부에서 들어온 입력을 확인하기 위해 존재한다. 내 행동트리는 블랙보드에 섹터를 그대로 넣는다.


49라인 : 시퀸스 노드의 자식이라 48라인에서 안겹쳐서 true가 나오면 실행해준다. 기능은 47라인에서 지정한 섹터를 그대로 생성

viewimage.php?id=2ab4c42ef0d0&no=24b0d769e1d32ca73ced82fa11d02831fe384ecd5bf5471a0304a3eb0e961586f70f6a5f9d3f551404eaff6af8b4747c462e15adaf0dbb75479833cf6bb01e89f351f2ae82a6f296a5e4c56796ad5ce5


스페이스바를 누르면 행동트리가 실행된다.





viewimage.php?id=2ab4c42ef0d0&no=24b0d769e1d32ca73ced82fa11d02831fe384ecd5bf5471a0304a3eb0e961586f70f6a5f9d3f551404eaff6af8b4747c462e15adaf0dea73469f379c6fe11e8981ac8eb6bd8344d4d706ecc42a74bd68

행동트리 안쓰면 이렇게 코드가 나올것으로 예측되는데 복잡한 맵을 만들기 시작하면 훨씬 더 지저분해질 것이다.




viewimage.php?id=2ab4c42ef0d0&no=24b0d769e1d32ca73ced82fa11d02831fe384ecd5bf5471a0304a3eb0e961586f70f6a5f9d3f114652eb9868feb6737152a62a883989590e497cbfc6e13b8952eae572a530b5c68a0aacff

벽끼리는 겹치는것을 허용했다.

범위를 벗어나는건 귀찮아서 안만짐.





다음은 통로 연결이나 생성하는 공간의 형태 같은걸 만들듯