콘텐츠로 이동

방·통로 전장의 안개

현재 동작

플레이어 위치에 따라 안개가 두 모드로 자동 전환됩니다.

위치 월드 시야
방 내부 현재 방의 바닥과 경계 벽 전체 공개, 다른 방과 통로는 차단
통로 주변 170px 안전 시야 + 바라보는 정면 780px·반각 62도 원뿔 시야
문턱 전환 입장 0.22초·퇴장 0.32초 동안 방 시야와 통로 시야를 부드럽게 혼합

자동 E2E는 전환을 room → leaving_room → corridor → entering_room → room 다섯 단계로 관측합니다. 모든 단계에서 현재 방 이외의 방 차폐 정책과 전체 미니맵 독립 계약이 유지되어야 통과합니다.

통로 정면 시야는 좌우 합계 약 124도로 넓게 열리고, 각도 경계 12도와 거리 경계 130px를 부드럽게 처리합니다. 뒤쪽은 짧은 주변 시야 밖부터 빠르게 어두워집니다.

방 단위 던전 슈터식 문턱 전환

Enter the Gungeon에서 참고한 핵심은 화면을 원형으로 계속 밝히는 방식이 아니라 현재 방은 하나의 전투 공간으로 읽히고, 문과 통로가 다음 공간을 가르는 방식입니다. SFH는 카메라 구성까지 복제하지 않고 다음 가시성 원칙만 적용합니다.

  • 방 안에서는 방 전체를 안정적으로 읽을 수 있습니다.
  • 방 경계를 한 칸 벗어났다고 전체 방이 한 프레임에 검게 닫히지 않습니다.
  • 퇴장 시 0.32초 동안 떠나는 방이 통로 시야로 서서히 접힙니다.
  • 입장 시 0.22초 동안 정면 시야에서 새 방 전체 시야로 열립니다.
  • 전환 중인 방만 통로의 방 차단 마스크에서 잠시 제외하고, 다른 방은 계속 완전히 가립니다.

입장보다 퇴장을 조금 느리게 설정해 플레이어 뒤의 공간이 갑자기 사라지는 느낌을 줄였습니다. 시간은 BattlefieldFogOfWar export 값으로 독립 조절할 수 있습니다.

방 차단 규칙

맵은 플레이어의 현재 위치가 방인지 통로인지만 판정해 복사된 가시성 설명을 제공합니다.

  • 방에 들어오면 0.22초 전환 뒤 해당 방 전체의 안개를 제거합니다.
  • 방을 나오면 0.32초 동안 방 시야를 접은 뒤 통로 정면 시야로 복귀합니다.
  • 통로 원뿔이 다른 방 방향을 향해도 다른 방 내부는 검은 안개로 유지합니다.
  • 현재 방을 공개할 때는 외곽 벽 한 칸까지 포함해 방 경계를 읽기 쉽게 합니다.
  • 통로에서 방을 차단할 때는 방 바닥만 가려 문턱 바로 밖의 플레이어가 안개에 묻히지 않게 합니다.

방은 최대 60개이고 Shader 마스크는 64개까지 처리합니다. 방 경계는 맵 생성 직후 한 번 복사해 보관하며, 매 프레임 화면과 겹치는 방만 Shader에 전달합니다. 따라서 화면에 없는 수십 개 방은 픽셀별 마스크 계산에서 제외됩니다.

미니맵과의 관계

월드 시야와 미니맵 정보는 계속 분리합니다.

  • 월드: 현재 방 또는 정면 통로만 확인
  • 미니맵: 전체 방·복도·장애물·플레이어·탈출 위치와 M 확장 워프 후보 유지

따라서 통로와 미확인 방의 전투 정보는 숨기면서도 대형 맵의 전체 경로는 계획할 수 있습니다. M 확장 지도는 월드 안개와 별도 CanvasLayer에서 계속 동작합니다.

모듈 계약

제공자 계약 소비자
플레이어 get_facing_direction() 안개 정면 방향
get_visibility_region(world_position) 방·통로 모드와 현재 방 경계
get_visibility_room_rects() 통로에서 차단할 전체 방 경계 복사본
안개 configure(actor, visibility_provider) Game 조립부
안개 get_snapshot() 자동 테스트·향후 옵션 UI
Shader 방/통로 마스크와 완화 곡선만 렌더링 안개 상태기계

BattlefieldFogOfWar는 맵의 rooms, 바닥 셀이나 미니맵 텍스처를 직접 읽지 않습니다. 전환 상태는 안개 모듈에만 있고, 렌더링은 별도 fog_of_war.gdshader가 담당합니다. 맵 생성을 끄고 제공자를 넘기지 않으면 정면 통로 시야만 사용하는 독립 폴백으로 동작합니다.

활성화와 확장

FeatureManifest.fog_of_war_enabled로 독립 활성화합니다. 플레이어 모듈만 필수이며 맵과 미니맵은 선택 의존성입니다.

시야 거리, 각도, 부드러운 경계는 fog_of_war.gd의 export 값으로 조절할 수 있습니다. 향후 장비·버프 시야 보너스, 조명탄, 센서, 영구 탐색 기록은 이 설정과 공개 계약 위에 추가합니다.

검색 별칭

포그, 전장의 안개, 정면 시야, 원뿔 시야, 방 밝히기, 통로 시야, 문턱 전환, 방 전환, 다른 방 숨기기, 시야 제한, 전체 미니맵, 엔터 더 건전