Node기반 맵 생성
탐색을 진행할 때 사용될 맵을 우선적으로 개발하기로 했다.
2D 그리드 기반의 노드 연결 방식을 선택했고, 참고 게임은 슬레이 더 스파이어이다.

다른 사람들이 구현한 구조와 알고리즘을 참고하며 R&D를 진행하였고, 이를 기반으로 현재 프로젝트에 맞는 형태로 기능을 구현하고자 하였다.
Node 데이터 구조 설계
먼저 Node형 맵 생성 구조를 구현하기 위해 데이터 구조 설계를 진행하였다.
노드의 종류를 관리하기 위한 NodeType 열거형과, 노드의 위치·층(layer)·연결 정보 등을 저장하기 위한 MapNodeData 데이터 클래스를 구현하였다.

Node 생성 구조 구현
이후 실질적으로 맵을 생성하게 될 MapGenerator 스크립트를 추가하였다.
해당 스크립트에서는 Node형 맵 생성에 필요한 노드 생성 및 맵 구조 생성을 담당하도록 구성하였다.

노드 생성은 MapNodeData를 기반으로 진행되었으며, layer, 노드 위치(position), 노드 타입(type) 등의 정보를 사용하여 각 노드를 생성한다.
또한 생성된 노드마다 고유 ID를 부여하여 각 노드를 구분하고 추적할 수 있도록 구성하였다.
생성된 노드는 MapNodeData에 필요한 정보를 저장한 뒤, 전체 노드 리스트에 추가하여 맵 전체에서 관리할 수 있도록 구현하였다.
이렇게 구성한 이유
생성된 노드마다 고유 ID를 부여한 이유는, 노드 간 연결 관계를 관리하고 특정 노드를 구분할 수 있도록 하기 위함이다.
이후 가까운 노드끼리 연결하거나, 연결이 끊긴 노드를 탐색하는 기능 등을 구현하기 위해 ID 기반 구조를 사용하였다.
Layer 기반 Node 배치

일단 노드가 정상적으로 생성되고 연결되는 것을 확인하는 것이 우선이라고 판단하여, 임시로 맵의 층을 5개로 구성하였다.
또한 현재 단계에서는 구조 확인을 목적으로 위에서 아래로 내려가는 형태로 노드가 생성되도록 구현하였다.
생성된 노드들은 층(layer) 단위로 관리하기 위해 층별 리스트에 저장하도록 구현하였다.
Node 연결
우선 노드 간 연결 구조가 정상적으로 동작하는지 확인하기 위해, 각 노드가 다음 층(layer)의 노드 중 하나와 연결되도록 구현하였다.

노드 간 연결 로직 구현
현재 층과 다음 층의 노드 리스트를 기반으로, 현재 층에 존재하는 모든 노드가 다음 층의 노드 중 하나를 랜덤하게 선택하여 연결되도록 구현하였다.

OnDrawGizmos를 활용한 노드 간 연결

OnDrawGizmos를 통해 Scene에서 노드와 연결선을 시각화하도록 구현하였다.
GetNodeById 메서드는 ID를 기반으로 해당 노드를 찾아 반환하는 기능을 담당하며, 이를 통해 다음 Layer의 노드를 참조할 수 있도록 구성하였다.
이를 활용하여 각 노드는 연결된 다음 노드와 위치 정보를 기반으로 Line을 그려 연결 상태를 시각적으로 확인할 수 있다.

R&D를 진행하면서 Node를 활용한 맵 구조를 직접 구현해보며, 해당 시스템이 어떻게 동작하는지에 대한 이해를 높이고 있다.
앞으로 추가적으로 구현해야 할 내용도 많지만, 현재 단계에서는 최대한 구조를 이해하고 정리하여 이후 유사한 구조의 맵을 구현할 때 더 원활하고 개선된 방향으로 개발할 수 있도록 하는 것을 목표로 하고 있다.
참고한 블로그
https://dawninthemoon.tistory.com/95
Slay the Spire 카피 - 절차적 맵 생성
Slay the Spire라는 게임을 카피해보기로 했다. 이제는 20승천을 밥먹듯이 깰 만한 정도의 실력이 되어서 나름 시스템에 대해 잘 알고있다고 자부하기도 하고, 기왕 만들거면 좋아하는 게임을 만드
dawninthemoon.tistory.com
https://sangeun00.tistory.com/295
#4 슬레이 더 스파이어 방식 스테이지 랜덤 생성
이번엔 슬레이 더 스파이어의 맵 생성 방식과 유사하게랜덤 맵 생성을 해보도록 하겠다 이 맵의 특징이 있다면 7x15 정도 사이즈의 그리드를 만들어일정한 규칙으로 상황에 맞는 오브젝트를 생
sangeun00.tistory.com
'Unity > 개발일지' 카테고리의 다른 글
| [Project_MTS] 개발 일지 - 7 [Node기반 맵 생성 R&D 및 UI추가] (0) | 2026.05.20 |
|---|---|
| [Project_MTS] 개발 일지 - 6 [Node기반 맵 생성 R&D 및 개선] (0) | 2026.05.14 |
| [Project_MTS] 개발 일지 - 4 [시간 데이터 추가, UI 닫기, 채굴 미니게임 조건 추가 및 설계 수정] (0) | 2026.05.12 |
| [Project_MTS] 개발 일지 - 3 [광산 이동, 광물 데이터 추가, 채굴 미니게임 구현] (0) | 2026.05.11 |
| [Project_MTS] 개발 일지 - 2 [상호작용을 통한 위치 이동] (0) | 2026.05.03 |