방 진입 전투와 봉쇄 보상¶
작전 맵의 일반 방 안쪽으로 진입하면 해당 방 전투가 시작됩니다. 적 무리가 방 내부의 걸을 수 있는 위치에 생성되고 모든 출입구가 물리적으로 닫힙니다. 생성된 적을 모두 처치하면 문이 열리고 방 면적에 따라 1~5개의 크레딧 보상 박스가 나타납니다.
시작 방과 탈출 방은 기본적으로 교전 대상에서 제외합니다. 문턱에서 충돌체가 플레이어와 겹치지 않도록 방 경계에서 48px 안쪽에 들어왔을 때 전투를 확정합니다.
플레이 흐름¶
- 통로에서 아직 확보하지 않은 일반 방으로 진입합니다.
- 방 등급 정책의 핵앤슬래시 최소 무리 이상으로 적 수를 정하고, 남은 총 생성 예산 안에서 한 번에 배치합니다.
- 적 생성이 성공한 경우에만 출입문에 봉쇄 장벽을 만듭니다.
- 이 방이 요청한 적 인스턴스만 추적해 전멸을 판정합니다.
- 전멸 시 장벽을 제거하고 방 면적 정규화 값과 ±1 난수 보정으로 보상 박스 수를 정합니다.
- 장애물을 피한 방 내부 위치에 금고·자재함·회수 단말기 형태의 박스를 1~5개 생성합니다.
- 박스 가까이에서
F를 눌러야 휴대 크레딧으로 회수됩니다. - 최대 교전 수를 채웠거나 남은 총 생성 예산이 최소 무리보다 작으면 전투 방 완주 Signal을 보내 제한 시간 전 탈출을 엽니다.
봉쇄·확보·보상 회수는 일반 자원 회수보다 높은 HUD 메시지 우선순위를 사용합니다. 따라서 방을 클리어한 직후 에너지나 체력 Pickup이 자석 회수돼도 방 확보와 보상 안내가 먼저 유지됩니다.
등급별 기본값¶
| 작전 | 방당 적 | 최대 교전 방 | 박스당 크레딧 | 총 생성 한계 |
|---|---|---|---|---|
| 소형 | 12~18 | 12 | 18~32 | 120 |
| 중형 | 18~26 | 18 | 28~48 | 220 |
| 대형 | 24~34 | 24 | 42~70 | 360 |
굵은 숫자는 부분 교전으로 축소되지 않는 하드 최소 무리 수입니다. 남은 총 생성 예산이 최소치보다 작으면 약한 방 전투를 시작하지 않고 유한 생성 한계를 유지합니다. 따라서 maximum_encounters는 방 전투 자체의 상한이고, 실제 횟수는 적 생성기의 남은 총 예산에 의해 더 일찍 끝날 수 있습니다.
박스 수의 최솟값 1, 최댓값 5, 난수 폭 1과 티어별 크레딧 범위는 모두 default_room_encounters.tres에서 조정합니다. 코드에 수치를 박지 않아 맵 방 크기가 다시 바뀌어도 보상 밀도를 Resource만으로 튜닝할 수 있습니다.
모듈 구조¶
RoguelikeMapGenerator
├─ get_room_encounter_snapshot() # 방 경계·중심·출입구 사본
└─ get_room_spawn_positions() # 장애물을 피한 방 내부 위치
EnemySpawner
├─ spawn_enemy_at() # 같은 적 구성 경로 재사용
├─ get_remaining_spawn_budget() # 유한 생성 한계 유지
└─ set_reinforcement_paused() # 방 전투 사용 시 전역 증원 정지
RoomEncounterSystem
├─ 진입→최소 무리 생성→봉쇄→전멸→완주 상태 관리
├─ RoomDoorBarrier # 충돌 레이어 16의 교체 가능한 문 표현
└─ RoomCreditRewardBox 1~5개 # F 상호작용 보상 박스
RoomWarpSystem
└─ 미니맵 요청을 받아 전투 중·클리어·방 종류를 검증한 뒤 이동
방 전투 모듈은 맵의 rooms, floor_cells, obstacle_cells를 직접 읽지 않습니다. 맵이 제공하는 복사된 방 스냅샷과 생성 위치 계약만 사용합니다. 적의 체력이나 사망 내부 구현도 읽지 않고 생성 인스턴스의 tree_exited 수명만 추적합니다.
활성화와 폴백¶
FeatureManifest.room_encounters_enabled로 독립 활성화합니다. 활성 상태에서는 room_encounters 출처가 기존 전역 증원을 정지시키고 방 진입 생성만 사용합니다. 이 기능을 끄면 RoomEncounterSystem, 문 장벽, 방 보상이 설치되지 않으며 기존 목표 동시 개체 수 기반 전역 증원이 그대로 복구됩니다. room_warp_enabled만 끄면 방 전투와 미니맵은 유지되고 지도 클릭 이동만 제거됩니다.
설정은 game/features/room_encounters/configs/default_room_encounters.tres에서 바꿉니다. 방 전투는 map_generation, spawning, credits에 의존하고 방 워프는 room_encounters, minimap에 의존합니다. Manifest가 잘못된 조합과 설정 경로를 시작 전에 차단합니다.
자동 검증¶
- 소·중·대형에서 방당 최소~최대 적 수
- 실제 플레이어 진입이
room_entry출처로 기록되고 최소 무리 수를 충족하는지 판정 - 남은 총 생성 예산이 최소치보다 적을 때 부분 교전을 열지 않는 하드 플로어
- 적 생성 뒤 문 장벽 충돌체 생성
- 해당 방 적 전멸 뒤 장벽 제거
- 방 크기·난수 보정 1~5개 보상 생성과 F 크레딧 회수
- 전투 방 완주 뒤 제한 시간 전 탈출 개방
- 실제 M 입력·지도 클릭 워프와 미클리어·전투 중 거부
- 전체 생성 예산 유지
- 기능 비활성 시 기존 전역 증원 폴백
- 대형 방 적 34기, 전기 스킬 3개 동시 성능 예산
- 실제 방 진입 뒤 적·봉쇄 문 수, 전멸 뒤 문 해제·보상 생성, F 회수 뒤 크레딧 증가를 한 E2E 흐름으로 검증
검색 별칭¶
엔터 더 건전, 방 잠금, 문 닫힘, 방 클리어, 룸 인카운터, 웨이브 룸, 몬스터 방, 전멸 보상, 크레딧 박스, 방 보상, 조기 탈출