콘텐츠로 이동

방 진입 전투와 봉쇄 보상

작전 맵의 일반 방 안쪽으로 진입하면 해당 방 전투가 시작됩니다. 적 무리가 방 내부의 걸을 수 있는 위치에 생성되고 모든 출입구가 물리적으로 닫힙니다. 생성된 적을 모두 처치하면 문이 열리고 방 면적에 따라 1~5개의 크레딧 보상 박스가 나타납니다.

시작 방과 탈출 방은 기본적으로 교전 대상에서 제외합니다. 문턱에서 충돌체가 플레이어와 겹치지 않도록 방 경계에서 48px 안쪽에 들어왔을 때 전투를 확정합니다.

플레이 흐름

  1. 통로에서 아직 확보하지 않은 일반 방으로 진입합니다.
  2. 방 등급 정책의 핵앤슬래시 최소 무리 이상으로 적 수를 정하고, 남은 총 생성 예산 안에서 한 번에 배치합니다.
  3. 적 생성이 성공한 경우에만 출입문에 봉쇄 장벽을 만듭니다.
  4. 이 방이 요청한 적 인스턴스만 추적해 전멸을 판정합니다.
  5. 전멸 시 장벽을 제거하고 방 면적 정규화 값과 ±1 난수 보정으로 보상 박스 수를 정합니다.
  6. 장애물을 피한 방 내부 위치에 금고·자재함·회수 단말기 형태의 박스를 1~5개 생성합니다.
  7. 박스 가까이에서 F를 눌러야 휴대 크레딧으로 회수됩니다.
  8. 최대 교전 수를 채웠거나 남은 총 생성 예산이 최소 무리보다 작으면 전투 방 완주 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 흐름으로 검증

검색 별칭

엔터 더 건전, 방 잠금, 문 닫힘, 방 클리어, 룸 인카운터, 웨이브 룸, 몬스터 방, 전멸 보상, 크레딧 박스, 방 보상, 조기 탈출