절차적 맵 생성, Procedural Map Generation
코드나 컴퓨터 알고리즘을 이용하여 자동(동적)으로 생성하는 기법
게임을 실행할 때마다 새로운 맵이나 레벨을 자동으로 만들어낼 수 있으며 리플레이성 향상과 개발 효율성에 크게 기여한다.
- 로그라이크 게임에서 매번 새로운 맵을 만들 때 혹은 오픈월드 게임에서 넓은 맵을 비교적 적은 시간으로 제작할 때 주로 사용한다.
장점
무한성 : 난수생성기와 알고리즘에 의해 생성되므로 무한한 수의 맵을 생성할 수 있다.
다양성 : 난수, 변수에 따라 다른 맵이 생성되어 플레이어에게 새로운 경험을 제공한다
효율성 : 맵을 수동으로 디자인하는것에 비해 시간/리소스를 절약할 수 있다
단점
예측 불가능 : 때때로 불균형하거나 클리어가 불가능한 맵이 생성될 수 있다.
디자인 제어 어려움 : 특정 구조나 구성 유지가 어려워 설계 의도 반영이 힘듬
주요기법 일부 정리
노이즈 기반 기법 : 자연스러운 랜드스케이프나 높낮이 표현에 적합
Perlin 노이즈
- Ken Perlin이 개발한 알고리즘으로 자연스럽고 연속적인 유기적 잡음을 생성하는데 사용
- 2차원 또는 3차원으로 구성된 그리드에서 각 좌표의 값에 대한 임의성을 추가하여 자연스러운 무작위 패턴을 만든다.
- 산, 언덕, 해변 같은 자연 지형 생성에 자주 사용
Simplex 노이즈
Perlin 노이즈의 개선된 버전으로, 빠르고 더 나은 품질의 노이즈를 제공하고 단순한 구조를 가지고 있다.
셀룰러 오토마타(Cellular Automata)
- 간단한 규칙을 사용하여 맵의 타일을 반복적으로 업데이트하여 유기적인 형태를 만듬
- 초기값을 랜덤하게 준 뒤 이웃셀의 상태를 기준으로 타일을 반복적으로 갱신
- 난수에 의존적이기 때문에 어떤 형태의 지형이 만들어질지 예측하기 어려움
- 흔히 동굴이나 유기적인 형태를 만들 때 사용됨
BSP (Binary Space Partitioning)
- 맵을 큰 직사각형으로 시작해서 재귀적으로 분할
- 각 영역에 방을 배치하고 방들 사이에 복도를 연결
- 3차원(또는 2차원) 공간을 효율적으로 다루기 위해 하나의 공간을 재귀적으로 둘씩 나누어가는 기법
- 구조적이고 미로처럼 이어진 던전을 만들기 좋으며 로그라이크 구조에서 많이 사용됨
파동 함수 붕괴 (Wave Function Collapse, WFC)
- 붕괴(Collapse) : 한칸이 하나의 타일로 확정되는 순간
- 파동(Wave) : 각 칸이 여러가지 가능한 상태를 가질 수 있는 초기 상태(어떤타일이 될지 정해지지 않은 상태)
- 특정 패턴을 유지하면서 맵을 생성하는 알고리즘, 퍼즐처럼 규칙에 맞춰 맵이 채워짐
- 타일 간 제약 조건을 기반으로 자연스럽게 맵 생성(벽 옆엔 벽만, 문 옆엔 바닥만 같은 규칙), 로직이 복잡하지만 결과는 디자인적 일관성 유지
- 구조적 퍼즐형 맵에서 많이 사용
'Unity > Theory' 카테고리의 다른 글
| [Unity] 로직(Logic)과 기능(Feature) (0) | 2025.04.17 |
|---|---|
| [Unity] (New) Input System - Jump (0) | 2025.03.06 |
| [Unity] (New) Input System 이용한 플레이어 이동 구현 (0) | 2025.03.05 |
| [Unity] GameObject, gameObject 차이 (0) | 2025.02.25 |
| [Unity] 기초, Animation 생성 및 설정 방법 (0) | 2025.02.17 |