본문으로 건너뛰기

안동민 개발노트

본문 시작

날씨 및 시간 효과 적용

날씨와 시간 상태에 맞춰 시각 효과·오디오·게임플레이 반응을 함께 전환하는 통합 환경 규칙을 구성합니다.

날씨 시스템과 시간 시스템을 각각 구현해도, 서로 따로 움직이면 화면은 좋아 보여도 체감은 쉽게 어색해집니다.

예를 들어 비가 내리는데 소리는 맑은 낮 상태로 유지되거나, 밤인데 노출 값이 낮처럼 밝으면 플레이어는 즉시 이질감을 느끼게 됩니다.

이번 절에서는 시각 효과, 오디오, 게임플레이 반응을 한 규칙으로 묶는 방법을 다룹니다.

상태 전환 시 어떤 값을 함께 바꿔야 일관성이 유지되는지, 블루프린트에서 어떻게 통합 관리하면 운영 부담이 줄어드는지까지 정리하겠습니다.

이 과정을 마치면 레벨의 분위기 변화가 단순 연출이 아니라 재사용 가능한 시스템으로 동작하게 됩니다.

날씨 및 시간 효과 적용

날씨와 시간 값을 하나의 환경 상태로 합친 뒤 시각·소리·게임 규칙에 동시에 배분해야 비 오는 밤의 화면과 체감이 어긋나지 않습니다.

  1. 날씨 및 시간 효과 적용 흐름

    Weather · 맑음/비/안개 Time · 0~24시/전환률 ↓ Shared Environment State V 조명, 안개, 노출, 표면 젖음을 같은 곡선으로 보간합니다. A 강수량과 실내 여부에 맞춰 비·바람·차폐음을 섞습니다. G 시야, 이동 마찰, NPC 감지 범위를 같은 상태로 판정합니다. U 아이콘과 경고 문구가 실제 규칙 변화와 같은 시점에 나타납니다.

  2. Visual

    조명, 안개, 노출, 표면 젖음을 같은 곡선으로 보간합니다.

  3. Audio

    강수량과 실내 여부에 맞춰 비·바람·차폐음을 섞습니다.

  4. Gameplay

    시야, 이동 마찰, NPC 감지 범위를 같은 상태로 판정합니다.

  5. UI Feedback

    아이콘과 경고 문구가 실제 규칙 변화와 같은 시점에 나타납니다.

  6. 날씨 및 시간 효과 적용 기준

    빛, 안개, 노출을 같은 전환 곡선으로 묶습니다. 실외와 실내 소리는 Volume과 트리거로 나눕니다. 이동 속도, 시야, NPC 행동을 바꿀 때는 날씨 상태 enum 하나를 공유해 화면 효과와 규칙 판정이 서로 다른 값을 보지 않게 합니다.


날씨 및 시간 시스템 통합의 중요성

개별적으로 날씨와 시간 시스템을 구축하는 것도 중요하지만, 이 둘을 유기적으로 통합하고 게임 플레이와 연동시키는 것이 레벨의 완성도를 높이는 핵심입니다.

  • 시각적 일관성: 날씨(예: 비)와 시간(예: 밤)이 함께 작용할 때, 조명, 안개, 구름, 그리고 강수량 효과 등이 서로 조화롭게 변화해야 합니다. 예를 들어, 비 오는 밤은 낮의 비와는 다른 어둡고 축축한 분위기를 연출해야 합니다.
  • 청각적 피드백: 시각적 변화에 맞춰 빗소리, 천둥소리, 밤벌레 소리 같은 환경 사운드를 추가합니다.
  • 게임 플레이 영향: 날씨와 시간의 변화가 단순히 시각적인 것에 그치지 않고, 플레이어 캐릭터의 이동 속도, 시야, NPC의 행동 등 게임 플레이에 실질적인 영향을 미치도록 설계합니다.
  • 최적화 관리: 복잡한 동적 시스템은 성능에 큰 영향을 미치므로, 통합된 관리 시스템을 통해 효율적인 최적화 전략을 적용해야 합니다.

시각적 효과 적용 및 미세 조정

날씨와 시간 효과는 조명, 하늘, 머티리얼, 후처리가 함께 움직일 때 자연스럽게 보입니다.

아래 다이어그램은 시간 변화와 날씨 상태를 연결하는 적용 흐름을 보여줍니다.

날씨와 시간 상태는 렌더링 파라미터로 번역되어 분위기를 만든다

값을 무작위로 만지는 일이 아니라 상태 하나를 조명, 안개, 구름, 후처리 값으로 나누는 과정이다.

입력 상태전달 대상조정 값
TimeDirectional Light태양 방향, 광원 강도, 색온도
Time + WeatherSky Light환경광 색, 실시간 캡처 여부
WeatherFog밀도, 높이 분포, 색상
WeatherCloud구름 양, 그림자 강도, 품질 단계
Final TonePost Process노출, 대비, 채도, Bloom

앞 절에서 만든 BP_WeatherSystemBP_TimeOfDaySystem을 기반으로, 시간/날씨 상태별 액터 속성 조정을 일관된 규칙으로 묶어 관리해야 합니다.

조명 (Lighting)

  • Directional Light
    • Intensity: 낮에는 높게, 밤에는 낮게. 흐린 날에는 낮의 강도를 약간 낮춥니다.
    • Light Color: 해 뜨고 질 때 주황/붉은색, 낮에는 백색광, 밤에는 푸른색으로 변화시킵니다. 비/눈 올 때는 회색조를 추가하여 흐린 분위기를 냅니다.
  • Sky Light
    • Intensity Scale: Directional Light와 유사하게 낮/밤에 따라 조절합니다.
    • Real Time Capture: 항상 활성화하여 하늘의 변화를 실시간으로 반영합니다.
  • Ambient Cubemap (Lumen / Ray Tracing 미사용 시): Post Process Volume에서 Reflection > Global IlluminationAmbient Cubemap 옵션을 통해 특정 시간/날씨에 맞는 큐브맵을 사용하여 간접광을 보강할 수 있습니다.

안개 (Fog)

  • Exponential Height Fog
    • Fog Density: 안개 낀 날이나 밤에 밀도를 높여 시야를 제한하고 분위기를 어둡게 합니다.
    • Fog Height Falloff: 안개가 지표면에 깔리게 할지(낮은 값), 상공까지 퍼지게 할지(높은 값) 조절하여 다양한 형태의 안개를 만듭니다.
    • Fog Inscattering Color: 안개에 색상을 부여하여 분위기를 연출합니다 (예: 푸른 새벽 안개, 오렌지색 스모그).
  • Volumetric Fog (활성화 시): 밤이나 짙은 안개 시 Extinction (소멸 계수)을 높여 밀도를 높이고, Albedo (반사율)와 Emissive (방출) 색상을 조절하여 빛과의 상호작용을 강화합니다 (God Rays 등).

구름 (Clouds)

  • Volumetric Cloud
    • Coverage: 맑은 날에는 낮게, 흐린 날에는 높게 조절하여 구름의 양을 제어합니다.
    • Layer Height / Bottom Altitude: 구름 층의 높이와 두께를 조절하여 다양한 종류의 구름을 표현합니다.
    • Ground Shadow Strength: 구름이 지면에 드리우는 그림자의 강도를 조절하여 흐린 날의 분위기를 강화합니다.
    • Material Parameters: 구름 재질의 파라미터(예: Cloud Density, Phase Function)를 블루프린트에서 조절하여 구름의 형태와 밀도를 동적으로 변화시킵니다.

후처리 (Post Processing)

  • Post Process Volume
    • Exposure (노출): 낮에는 밝게, 밤에는 어둡게 자동 노출 범위를 조절하거나 수동 노출로 설정합니다. 비 오는 날이나 흐린 날에는 전반적인 노출을 약간 낮춥니다.
    • Color Grading (색상 보정):
      • Global Gain / Gamma / Offset: 레벨 전체의 밝기, 대비, 색조를 조절하여 시간/날씨에 맞는 색감을 만듭니다. (예: 일몰 시 붉은색, 밤에는 푸른색)
      • Saturation / Contrast: 날씨에 따라 채도와 대비를 조절합니다. (예: 비 오는 날 채도 낮춤)
    • Bloom (블룸): 밝은 광원이 있는 장면에서 빛이 번지는 효과를 조절합니다. 밤이나 안개 낀 날에 약간 높여 빛의 확산 효과를 강조할 수 있습니다.
    • Vignette (비네트): 화면 가장자리를 어둡게 하여 시선을 중앙으로 집중시킵니다. 특정 날씨나 시간대에 연출적 요소로 활용할 수 있습니다.
    • Screen Space Reflections (SSR): 비 오는 날 젖은 노면의 반사 효과를 강화하기 위해 강도를 높일 수 있습니다.

청각적 효과 적용 (Audio System)

시각적 변화만큼이나 중요한 것이 오디오(Audio)입니다.

사운드는 날씨 상태와 시간대 변화를 플레이어가 인지하는 데 도움을 줍니다.

앰비언트 사운드 액터 활용

사운드 큐 생성: 빗소리, 천둥소리, 바람 소리, 밤벌레 소리 등 각 날씨/시간대에 맞는 오디오 파일을 가져와 사운드 큐(Sound Cue)를 만듭니다.

사운드 큐 내에서 무작위성, 볼륨 조절 등을 설정할 수 있습니다.

앰비언트 사운드 액터 배치: 추가(Add) > 오디오(Audio) > 앰비언트 사운드(Ambient Sound) 액터를 레벨에 배치합니다.

사운드 큐 할당: 앰비언트 사운드 액터의 디테일 패널에서 생성된 사운드 큐를 할당합니다.

블루프린트에서 제어: BP_WeatherSystemBP_TimeOfDaySystem 블루프린트에서 각 앰비언트 사운드 액터에 대한 참조를 만들고, Set Volume Multiplier 또는 Play / Stop 노드를 사용하여 날씨/시간 상태에 따라 사운드의 볼륨을 조절하거나 재생/정지시킵니다.

  • 예: 비 오는 날 상태일 때 빗소리 사운드 큐 볼륨을 높이고, 맑은 날에는 볼륨을 0으로 만듭니다. 천둥소리는 특정 비 오는 날씨 상태에서 랜덤하게 재생되도록 합니다.

지면 타입별 사운드 (선택 사항)

  • 비 오는 날에는 플레이어 캐릭터가 걷는 발자국 소리가 젖은 지면(웅덩이 등)에서 나는 소리로 바뀌도록 구현할 수 있습니다. (물리 재질과 서피스 타입(Surface Type) 설정 활용)

게임 플레이 효과 연동

날씨와 시간 상태 전파 지도

날씨, 시간대, 조명, 플레이어 상태가 게임플레이 이벤트와 환경 반응으로 전파되는 경로를 정리한다.

  1. 환경 상태 갱신

    날씨와 시간 값이 주기적으로 바뀌며 전역 상태나 관리 Actor에 저장된다. state

  2. 조건 판단

    플레이어 위치, 실내외 여부, 퀘스트 상태가 환경 변수와 함께 평가된다. branch

  3. 월드 반응

    조명, 사운드, 머티리얼, 파티클이 현재 환경에 맞춰 갱신된다. world

  4. 게임플레이 영향

    동 속도, 감지 거리, NPC 행동, 상호작용 가능 여부가 조정된다. gameplay

  5. 중앙 관리

    환경 값은 여러 블루프린트에 흩뜨리지 않고 한 관리 지점에서 배포한다.

  6. 이벤트 기반

    Tick마다 모든 Actor가 읽기보다 변경 이벤트로 필요한 대상만 갱신한다.

  7. 복원 가능성

    세이브/로드 시 현재 환경 상태가 함께 복원되는지 확인한다.

날씨와 시간 시스템이 게임 플레이에 영향을 미치도록 설계하여 상호작용성을 높일 수 있습니다.

플레이어 캐릭터 영향

  • 이동 속도: 비나 눈이 올 때 Character Movement ComponentMax Walk Speed를 낮춰 플레이어의 이동 속도를 감소시킵니다.
  • 시야 감소: 안개나 밤에는 Post Process Volume의 노출을 낮추고, 짙은 안개 효과를 적용하여 플레이어의 시야를 제한합니다.
  • HUD/UI 변화: 시야가 좋지 않은 날씨에서는 HUD에 습기 찬 화면 효과를 추가하거나, 특정 경고 UI를 표시할 수 있습니다.

NPC 및 AI 행동 변화

  • NPC 스폰/제거: 밤에만 등장하는 적, 특정 날씨에만 활동하는 동물 등을 구현합니다.
  • AI 행동 패턴 변화: 비나 눈이 올 때 NPC가 우산을 쓰거나, 실내로 대피하거나, 순찰 경로를 변경하는 등의 행동을 추가합니다.
  • 시야/청각 영향: 밤이나 안개 낀 날에는 AI의 시야 범위가 줄어들고, 빗소리로 인해 플레이어의 발자국 소리가 묻히는 등의 효과를 적용하여 잠입 플레이에 영향을 줍니다.

환경 상호작용

  • 물리적 변화: 비가 올 때 지면에 웅덩이가 생기거나(머티리얼 변화), 눈이 쌓이는(스태틱 메시 추가) 등의 효과를 구현합니다.
  • 아이템/자원: 특정 날씨(예: 비 온 후)에만 얻을 수 있는 자원이나 아이템을 배치합니다.

통합 관리 및 최적화

복잡한 날씨 및 시간 시스템은 효율적인 통합 관리와 최적화가 필수적입니다.

상태 조합을 하나의 기준표로 두면 시각, 오디오, 플레이 반응, 최적화 값을 같은 규칙에서 관리할 수 있습니다.

날씨와 시간은 상태 조합표로 시각, 오디오, 플레이 반응을 함께 관리한다

비 오는 밤, 맑은 낮, 안개 낀 새벽을 데이터 행으로 두면 블루프린트 분기를 줄일 수 있다.

상태 조합시각 값플레이/사운드 반응
비 오는 밤낮은 노출, 짙은 안개, 약한 직접광빗소리, 좁은 시야, 조심스러운 이동
맑은 낮강한 태양광, 낮은 구름 밀도, 밝은 환경광밝은 환경음, 넓은 시야
안개 낀 새벽푸른 색감, 높은 Fog Density, 부드러운 그림자느린 탐색 리듬, 낮은 대비 UI
  • 단일 마스터 블루프린트: 모든 날씨 및 시간 관련 액터의 참조와 로직을 하나의 마스터 블루프린트(BP_WeatherTimeSystem 등)에서 관리합니다.
  • 데이터 테이블 / 커브 에셋: 시간이나 날씨 상태에 따른 조명 강도, 색상, 안개 밀도 등의 변화 값을 데이터 테이블(Data Table)이나 커브 에셋(Curve Asset)에 저장하여 관리하면 블루프린트 로직을 간소화하고 수정이 용이합니다.
  • LOD 및 컬링: 강수량 파티클 시스템, 볼류메트릭 클라우드 등 고성능을 요구하는 요소들은 플레이어 시야 밖에서 컬링되거나 낮은 LOD로 렌더링되도록 설정합니다.
  • 모바일/저사양 플랫폼 고려: Volumetric FogVolumetric Cloud 대신 Exponential Height Fog와 간단한 2D 구름 텍스처를 활용하거나, 실시간 그림자를 줄이는 등 최적화된 대안을 고려합니다.
  • 성능 프로파일링: 주기적으로 Stat FPS, Stat Unit, ProfileGPU 등의 콘솔 명령어를 사용하여 성능 병목 현상을 파악하고 개선합니다.

통합 시스템에서는 상태 조합이 늘어날수록 어떤 값을 데이터로 빼고 어떤 로직을 블루프린트에 남길지 구분해야 합니다.

통합 시스템 데이터 분리 흐름

날씨와 시간이 합쳐지면 상태 수가 빠르게 늘어납니다. 반복되는 값은 데이터로 빼고, 이벤트 판단만 블루프린트에 남기는 편이 안정적입니다.

  1. 상태 조합

    맑은 낮, 비 오는 밤, 안개 낀 새벽을 행으로 정리합니다.

  2. 수치 파라미터

    노출, 안개, 구름, 사운드 볼륨을 표에서 읽습니다.

  3. 전환 커브

    갑작스러운 변화는 커브 에셋으로 부드럽게 보간합니다.

  4. 이벤트 판정

    시간 도달, 트리거 진입, 퀘스트 진행을 상태 변경으로 변환합니다.

  5. 참조 배포

    조명, 안개, 오디오, 캐릭터 컴포넌트에 값을 전달합니다.

  6. 예외 처리

    실내, 컷신, 보스전처럼 규칙을 잠시 고정하는 조건을 처리합니다.

  7. State Key
  8. Data Table
  9. World Actors

마지막으로 화면, 소리, 플레이 규칙을 한 번에 바꿀 때는 상태 전환 순서를 고정해 서로 다른 효과가 엇갈리지 않게 해야 합니다.

상태 전환 적용 순서

날씨와 시간이 동시에 바뀔 때는 화면, 소리, 플레이 규칙을 같은 상태 키에서 순서대로 적용합니다.

  1. 1
    조합 키 결정

    State Rainy Night처럼 시간과 날씨를 합쳐 하나의 기준 상태를 만듭니다.

  2. 2
    화면 값 적용

    Visual 조명, 안개, 구름, 노출을 커브로 보간해 시각 톤을 먼저 맞춥니다.

  3. 3
    사운드 레이어 조정

    Audio 빗소리, 바람, 야간 앰비언트의 볼륨을 같은 전환 시간에 맞춥니다.

  4. 4
    플레이 반응 갱신

    Rules 이동 속도, 시야, AI 감지값은 화면 전환과 충돌하지 않게 적용합니다.

날씨와 시간 효과는 시각, 오디오, 게임플레이 반응을 같은 상태 값으로 관리해야 합니다.

각 상태의 파라미터와 전환 조건을 분리해 검증하세요.

날씨 시간 효과 연결표

날씨와 시간은 조명, 안개, 구름, 후처리, 오디오를 함께 조정해야 장면 변화가 설득력 있게 이어집니다.

  1. Lighting
    Lighting

    비 오는 낮과 맑은 낮은 태양 강도와 색 온도를 다르게 둡니다.

  2. Fog
    Fog

    습도와 시야 거리 변화는 안개 밀도와 높이 감쇠로 표현합니다.

  3. Cloud
    Cloud

    구름 밀도와 그림자는 시간대 색과 함께 보간합니다.

  4. Audio
    Audio

    빗소리, 바람, 천둥은 시각 변화보다 조금 먼저 반응시켜 전환을 자연스럽게 만듭니다.