[25.06.04] TIL( 심화주차 절자적 맵 생성 )

설민우·2025년 6월 4일

내일배움캠프 - Unity

목록 보기
55/85

처음으로 절차적 맵 생성을 진행해보았습니다.
혼자서 진행하기는 어려워서 GPT 와 외부 자료들을 찾아보고 만들게 되었습니다.
그래서 그런지 구조를 잘 신경쓰지 못해, 문제가 많이 발생했습니다...


Unity 절차적 던전 생성 (BSP 기반)

이 문서는 Unity를 이용한 BSP(Binary Space Partitioning) 기반 절차적 던전 생성 방식을 정리한 것입니다.


개요

  • 목표: 맵을 사각형 영역으로 분할하고, 각 리프 노드에 방을 배치한 뒤, 복도로 연결하는 방식의 던전 자동 생성
  • 기법: BSP(Binary Space Partitioning) 방식
  • 주요 구성요소:
    • Leaf: 공간 분할 및 방 할당
    • DungeonGenerator: 전체 생성 로직 수행

구조 요약

1. Leaf 클래스

맵 영역(RectInt)을 재귀적으로 분할하는 클래스

주요 역할

  • 공간 분할 (Split)
  • 방 생성 (CreateRooms)
  • 자식 노드를 통해 재귀적 트리 구성

핵심 파라미터

  • ROOM_MIN: 방의 최소 크기
  • MARGIN: 방과 외벽 사이 여유 거리
  • MIN_SIZE: 리프가 유지할 수 있는 최소 크기

2. DungeonGenerator 클래스

게임 시작 시 전체 맵을 생성하고, 결과를 게임 오브젝트로 배치

절차 요약

  1. 초기화

    • Leaf 트리 생성
    • BSP 방식으로 분할 반복
  2. 방 생성

    • 리프 노드에 방 생성
    • 방의 위치는 랜덤 + 마진 보장
  3. 복도 연결

    • 좌우 자식 노드의 방 중심을 기준으로 복도 생성
    • L자형 복도 방식 (가로→세로 or 세로→가로)
  4. 오브젝트 배치

    • roomPrefab, corridorPrefab을 해당 위치에 Instantiate

profile
클라이언트 개발자를 지망하고 있습니다.

0개의 댓글