랜덤 맵 생성¶
목적¶
익스트랙션 진입 비용이 커질수록 더 많은 방을 생성할 수 있게 합니다. 현재 비용은 경제 시스템에 연결하기 전의 밸런스 데이터이며 실제 재화를 차감하지는 않습니다.
| 등급 | 임시 진입 비용 | 생성 방 수 | 방 크기 범위 |
|---|---|---|---|
| 소형 | 100 | 18~24 | 42×25~54×34 셀 |
| 중형 | 300 | 30~40 | 46×28~60×38 셀 |
| 대형 | 700 | 45~60 | 50×30~68×42 셀 |
설정 파일은 game/features/map_generation/configs/에 있습니다. 비용과 방 수를 바꾸려면 각 .tres Resource를 Godot Inspector에서 수정합니다.
기본 타일은 32px를 유지합니다. 가장 작은 소형 방도 1344×800px이므로 기본 1280×720 화면 한 장보다 작지 않습니다. 방 수는 그대로 유지하면서 개별 노드가 독립 전투·파밍 구역처럼 느껴지도록 면적을 확장했습니다.
각 등급 Resource는 맵 크기뿐 아니라 목표 플레이 시간과 탈출 신호 개방 시간을 함께 가집니다. 자세한 값은 작전 선택과 탈출에서 확인합니다.
생성 과정¶
- 중앙에 시작 방을 만듭니다.
- 기존 방 하나를 무작위로 선택합니다.
- 상하좌우 중 한 방향에 새 방 배치를 시도합니다.
- 기존 방과 겹치지 않으면 새 방을 확정합니다.
- 두 방의 중심을 L자 복도로 연결합니다.
- 시작 방에서 가장 먼 방을 탈출 위치로 지정합니다.
- 방 중앙 통로와 시작·탈출 안전 반경을 피해 문이 있는 긴 칸막이, 설비 블록, 다중 기둥을 배치합니다.
- 모든 바닥 셀 주변에 벽과 충돌체를 만듭니다.
- 벽과 방해물을 반영해 A* 길찾기 그리드를 구성합니다.
- 미니맵과 방 워프 정책이 소비할 방의 동·서·남·북 연결 방향을 포함한 읽기 전용 지형 스냅샷을 제공합니다.
- 전장의 안개가 소비할 현재 방·통로 판정과 방 경계 복사본을 제공합니다.
모든 방은 생성 시 복도로 연결되므로 고립된 방이 생기지 않습니다.
등급 변경¶
game/core/feature_manifest.tres를 열고 Map Size를 변경합니다.
small: 소형medium: 중형large: 대형
Map Seed가 0이면 실행할 때마다 새 맵을 생성합니다. 0이 아닌 같은 숫자를 입력하면 같은 등급과 설정에서 같은 맵을 재현할 수 있습니다.
게임과의 연결¶
- 플레이어는 첫 번째 방 중앙에서 시작합니다.
- 적은 플레이어와 충분히 떨어진 방의 바닥 셀에 생성됩니다.
- 적은 생성된 A* 그리드로 복도와 방을 따라 플레이어를 추적합니다.
- 투사체, 플레이어, 적은 생성된 벽과 방해물에 충돌합니다.
- 초록 원은 시작 지점이며 주황 원은 별도 탈출 모듈이 표시합니다.
- 우측 상단 전술 미니맵은 생성된 전체 지형과 현재 위치·탈출 위치를 표시하고, M 확장 시 시작·끝·클리어 4방향 방 후보를 표시합니다.
- 전장의 안개는 공개 계약으로 받은 현재 방과 전체 방 경계만 사용합니다.
방해물¶
FeatureManifest.map_obstacles_enabled로 방해물만 따로 켜거나 끌 수 있습니다. 밀도는 각 등급 Resource의 Obstacle Density에서 조절합니다.
- 시작 방에는 생성하지 않습니다.
- 탈출 방에는 생성하지 않습니다.
- 각 방의 중앙 가로·세로 통로는 비워 둡니다.
- 8~18셀 길이의 칸막이는 2셀 출입구를 남겨 실제 실내 구획처럼 배치합니다.
- 3×2~5×3 설비 블록은 기계실·창고 내부 구조물처럼 넓은 면적을 차지합니다.
- 2~3개의 원형 기둥은 일정 간격의 지지 구조로 묶어서 배치합니다.
- 서로 무작위로 흩뿌리는 대신 방마다 벽·기둥 패턴을 선택합니다.
- A* 경로가 끊기면 해당 시드에서는 방해물을 제거하고 경로를 다시 만듭니다.
파밍 모듈에는 위치뿐 아니라 벽 안쪽 방향과 wall_safe, material_locker, recovery_terminal 배치 힌트를 제공합니다. 실제 외형·상호작용 문구·크레딧 수치는 크레딧 파밍과 회수에서 관리합니다.
기능 비활성화¶
FeatureManifest.map_generation_enabled를 끄면 맵 Scene을 불러오지 않습니다. 플레이어는 원점에서 시작하고 적 생성기는 기존 원형 거리 스폰을 사용합니다.
맵 HUD도 함께 숨겨지며 적은 직선 추적으로 돌아갑니다. 자동 테스트가 이 비활성화 구성을 별도로 조립해 확인합니다.
모듈 경계¶
- 맵 내부: 방 배치, 복도, 벽, 길찾기 그리드, 등급 Resource
- 조립부: 맵 Scene 선택 로딩, 시작 위치 전달, HUD Signal 연결
- 소비자: 적 생성기는 스폰 위치, 적은 월드 경로, 미니맵은 지형 스냅샷, 안개는 가시성 영역만 요청
다른 기능은 MapTierConfig, 방 배열, A* 그리드를 직접 참조하지 않습니다. 대체 맵 구현에 필요한 공개 계약과 점검 결과는 모듈화 점검 기록에 정리되어 있습니다.
아직 구현하지 않은 것¶
- 진입 시 보유 재화 차감
- 방별 전리품과 위험도
- 문, 잠금 구역, 비밀방
- 발견 구역의 작전 간 저장
검색 별칭¶
프로시저럴 맵, 절차적 생성, 랜덤 던전, 화면 한 장 방, 방 개수, 소형 맵, 중형 맵, 대형 맵, 투자 비용, 시드, AStar, 실내 벽, 칸막이, 설비 블록, 장애물, 방해물