콘텐츠로 이동

작전 선택과 탈출

한 판의 시작

프로젝트를 실행하면 큰 단일 방의 시작 거점에 진입합니다. 동쪽 작전 게이트로 이동해 F를 눌러야 작전 규모 선택 화면이 열립니다.

선택 투자 표시 방 수 목표 시간 탈출 신호 개방
소형 작전 100 18~24 9분 9분
중형 작전 300 30~40 10분 10분
대형 작전 700 45~60 10분 10분

규모 카드는 계약을 선택만 하고, 우측 아래 작전 투입으로 확정해야 영구 크레딧을 실제 차감합니다. 확정 뒤 맵, 플레이어, 탈출 지점, 미니맵, 전투 모듈 순서로 설치합니다. 검사나 조립이 실패하면 비용과 소모품을 자동 반환하고 선택 화면을 유지합니다. 기본 계약 비용을 낼 수 없으면 0 C 파산 방지 계약과 기본 무장을 제공합니다.

자동 테스트는 소형·중형·대형 카드를 각각 눌렀을 때 전투가 즉시 시작되지 않는지, 선택 강조와 계약값이 갱신되는지, 별도 투입 확정 뒤 방 수·플레이어·탈출 지점·미니맵이 설치되는지 확인합니다.

중형과 대형의 런타임 시계는 모두 600초 목표를 사용합니다. 장기 E2E는 599초까지 탈출이 잠긴 상태와 600초 도달 뒤 신호 개방·HUD 10:00·작전 유지 상태를 분리해 판정합니다.

시간은 일반적인 개방 상한입니다. 최대 교전 방을 모두 확보했거나 남은 적 생성 예산이 티어별 최소 무리보다 작아 더 이상 정상 방 전투를 시작할 수 없으면 all_encounters_completed Signal로 탈출을 즉시 개방합니다. 이 경우 HUD는 모든 전투 방 확보 · 즉시 탈출 가능을 표시하며 남은 시간을 기다리지 않고 탈출 방어전을 시작할 수 있습니다.

작전 브리핑 화면

참조 UI의 정보 계층을 SFH 계약 데이터에 맞춰 다음처럼 재구성했습니다. 장식용 숫자를 새로 만들지 않고 실제 OperationContractService, 맵 등급, 적 생성, 페널티와 영구 프로필 스냅샷만 표시합니다.

영역 표시 정보 플레이 판단
왼쪽 브리핑 지역·규모·난이도, 전술 경로 프리뷰, 목표 시간, 방·적 범위 이번 판의 길이와 교전 밀도 확인
왼쪽 예상 회수 투입 비용, 회수·고등급 배율, 보스 보장 투자 대비 기대 보상 확인
오른쪽 조건 지역·난이도·페널티, 상점·제작·소모품 계약과 준비 상태 변경
오른쪽 규모 소·중·대형 카드와 현재 선택 강조 맵 규모 선택, 즉시 출격하지 않음
오른쪽 위험 적 HP·공격·방어·이동 배율, 선택 페널티 실제 난이도 변화 확인
하단 확정 선택 계약·소모품 요약, 실제 투입 비용 버튼 모든 조건을 읽은 뒤 명시적으로 출격

전술 프리뷰는 외부 이미지가 아니라 교체 가능한 코드 드로잉입니다. 지역은 색상, 규모는 탈출 위험 색, 난이도는 적 접촉점 수로 표현하며 실제 맵 배치의 완전한 스포일러는 제공하지 않습니다.

전투 HUD 정보 계층

작전 진입 뒤 큰 텍스트 패널을 해체하고, 플레이어 주변과 화면 가장자리에 반응형 아이콘 위젯으로 분산했습니다. 아이콘은 이모지 글꼴이나 외부 이미지가 아니라 Godot 코드 드로잉이므로 Web에서도 같은 모양을 유지합니다.

시선권 위치·크기 표시 정보 의도
임무 추적기 좌측 상단 338×108px 작전 지역·방 진행, 현재 교전·탈출 목표, 생존·탈출 시간 이동 중에도 다음 행동만 빠르게 확인
전투 수치 플레이어 위 310×40px 레벨·처치·CR을 도형 아이콘과 숫자로 표시 문장 없이 런 성과 확인
생존 코어 플레이어 바로 위 224×86px HP·XP 아이콘, 게이지와 현재 수치 캐릭터에서 시선을 멀리 떼지 않고 생존 판단
장비·무기 플레이어 좌우 132×100px·224×100px 슬롯·방어·피해·사거리의 최소 수치 변경 뒤 1.8초만 나타나고 자동 축소
액티브 스킬 플레이어 우측 세로 104×267px 이하 에너지, 3개 스킬 아이콘·키·쿨타임·충전 스킬 3종을 같은 축에서 빠르게 비교
행동 도크 우측 하단 392×46px 기본기·스킬·Q·F·I/U/E·K 아이콘과 현재 키 K 재매핑 직후 짧은 키 배지만 갱신
대시 좌측 하단 166×62px 벡터 아이콘, 준비율·재사용 시간 생존기를 독립된 모서리 신호로 확인
미니맵 우측 상단 212×140px 이하, M 확장 최대 920×640px 전체 맵, 플레이어·탈출·워프 후보 평소 저점유, M에서 후보 클릭 이동

상호작용 프롬프트는 플레이어 아래 독립 영역에 놓고, 표시 중에는 임무·행동 도크를 흐리게 해 F 입력이 먼저 읽히도록 합니다. 1100px 이상은 player_orbit, 그 미만은 compact_edge 배치를 선택하며 좁은 화면에서는 장비·무기 상세를 숨기고 핵심 수치와 행동만 가장자리에 유지합니다. 미니맵은 900px 아래에서 edge_compact로 한 번 더 축약됩니다. 각 영역은 1280×720 경계·상호 교차·지속 점유율 20% 상한과 800px 축약 전환을 자동 검사합니다. 전투 수치는 새 UI가 계산하지 않고 기존 체력·성장·장비·스킬·이동 모듈의 Label, ProgressBar와 스냅샷을 그대로 사용합니다.

F 상호작용

프로젝트 입력 액션 interact에 물리 키 F를 할당했습니다. 앞으로 문, 상자, NPC 같은 기능도 하드코딩된 키 대신 이 액션을 공통으로 사용합니다.

현재 구현된 상호작용은 탈출입니다.

  1. 시작 방에서 가장 먼 방의 탈출 지점을 확인합니다.
  2. 신호 개방 전에는 마커가 회색이며 F 탈출 요청을 거부합니다.
  3. HUD에서 목표 시간과 탈출 신호까지 남은 시간을 확인합니다.
  4. 신호 개방 후 마커가 주황색으로 바뀌고 범위 안에 F · 작전 지역에서 탈출이 표시됩니다.
  5. F를 누르면 방어 카운트다운이 시작됩니다. 범위 이탈 시 남은 시간이 일시정지되고 재진입 후 이어집니다.
  6. 방어 성공 Signal 뒤 생존 시간, 작전 규모, 처치·반출 가치·3종 순위를 결과 화면에 표시합니다.
  7. Enter 또는 버튼으로 전투 세션을 정리하고 시작 거점으로 복귀합니다.

모듈 경계

탈출 기능은 game/features/extraction/에 독립 Scene으로 있습니다.

  • 맵 모듈은 탈출 가능한 월드 위치만 제공합니다.
  • 탈출 모듈은 범위 판정, F 입력, 마커 표현을 담당합니다.
  • Game은 등급 Resource의 개방 시각만 읽어 set_locked() 공개 계약으로 상태를 전달합니다.
  • Gameextraction_completed Signal을 받아 작전 결과 화면을 엽니다.
  • 탈출 모듈은 맵의 방 배열이나 A* 객체를 참조하지 않습니다.
  • OperationSetupPresenter는 계산을 하지 않고 기존 계약·프로필 스냅샷을 브리핑 화면에 투영합니다.
  • CombatHudPresenter는 기존 HUD Label과 ProgressBar를 임무·전투 수치·생존·장비·무기·행동 위젯으로 재배치하고, 화면 폭에 따라 스킬·대시·상호작용 좌표만 조정합니다.
  • TacticalHudIcon은 체력·경험치·무기·방어·스킬·대시·상호작용 도형만 그리며 게임 상태나 입력을 소유하지 않습니다.
  • 장비·무기 변경 Signal은 Presenter의 일시 표시만 요청하며 1.8초 Timer 종료 뒤 상세 카드는 자동으로 사라집니다.
  • TacticalMinimap은 전체 스냅샷 렌더링과 저점유 프레임을 분리해 화면 크기가 바뀌어도 지도 데이터는 다시 계산하지 않습니다.
  • RoomWarpSystem은 시작·끝·클리어 4방향 방 조건과 봉쇄 전투 중 거부를 소유하고, 미니맵은 방 번호 요청만 보냅니다.
  • 방 전투 완주와 시간 경과는 모두 Game._unlock_extraction() 조립 계약으로 합쳐지므로 탈출 구역은 개방 원인을 알지 않습니다.
  • 두 Presenter를 제거해도 작전 계약·비용·맵 생성·전투 계산은 유지됩니다.

기능 토글

  • start_hub_enabled: 이동 가능한 큰 시작 방과 작전 게이트 활성화
  • run_setup_enabled: 게이트에서 등급 선택 화면 표시
  • extraction_enabled: 주황색 탈출 지점과 F 탈출 활성화
  • map_obstacles_enabled: 맵 내부 충돌 방해물 활성화
  • room_warp_enabled: M 확장 지도에서 조건부 방 워프 활성화

세 기능은 game/core/feature_manifest.tres에서 켜고 끕니다. run_setup, extraction, map_obstacles는 모두 map_generation에 의존하므로 맵을 끄려면 세 기능도 함께 꺼야 합니다.

아직 구현하지 않은 것

  • 여러 탈출구와 지역별 탈출 조건
  • 전용 탈출 웨이브·경보 연출

검색 별칭

F키, 인터랙션, 상호작용 키, 탈출 방법, 익스트랙트, 조기 탈출, 전투 방 완주, 탈출 잠금, 탈출 신호, 10분, 클리어 타임, M 지도, 방 워프, 작전 선택, 작전 진입 UI, 작전 브리핑, 투입 확정, 전투 HUD, 임무 추적기, 하단 HUD, 스킬 쿨타임 UI, 전술 HUD, 맵 선택, 소형 중형 대형, 로비