본문으로 건너뛰기

안동민 개발노트

본문 시작

날씨 시스템 설정

비·눈·안개·구름과 조명·오디오 요소를 묶어 날씨 상태를 만들고 블루프린트로 자연스럽게 전환합니다.

조명과 그림자 기반을 갖췄다면, 이제 월드를 움직이게 만드는 날씨 시스템을 다룰 차례입니다.

날씨 시스템은 배경 연출을 넘어 플레이 리듬과 감정선에 직접 영향을 줍니다.

같은 맵이라도 비, 안개, 맑음 전환에 따라 체감 난이도와 몰입감이 크게 달라집니다.

이번 절에서는 언리얼에서 날씨 효과를 구조적으로 구성하는 기준을 정리합니다.

날씨 시스템 설정

하나의 날씨 상태가 구름·안개·강수·조명 값을 함께 바꾸고, 마지막에 시야와 프레임 비용을 통과해야 자연스러운 환경 변화가 됩니다.

  1. 날씨 액터 배치와 노출 보정 순서

    맑음, 흐림, 비, 눈처럼 게임 규칙에서 구분할 상태를 먼저 정합니다. 2 구름, 안개, Niagara 강수, 조명, 오디오가 같은 상태를 읽게 합니다. 3 현재 값과 목표 값 사이를 전환 시간에 맞춰 부드럽게 섞습니다. 4 길 찾기와 적 식별이 유지되는지 확인한 뒤 효과 비용을 줄입니다.

  2. 필요한 날씨 상태 정의

    맑음, 흐림, 비, 눈처럼 게임 규칙에서 구분할 상태를 먼저 정합니다.

  3. 표현 장치 연결

    구름, 안개, Niagara 강수, 조명, 오디오가 같은 상태를 읽게 합니다.

  4. 마스터 블루프린트 보간

    현재 값과 목표 값 사이를 전환 시간에 맞춰 부드럽게 섞습니다.

  5. 가시성·성능 검수

    길 찾기와 적 식별이 유지되는지 확인한 뒤 효과 비용을 줄입니다.

  6. 날씨 세팅 검수 지점

    안개 밀도, 구름 레이어, 광원 방향으로 시간대와 시야 조건을 조정합니다. 비와 안개는 분위기 장식에 그치지 않고 시야 거리, 은신 가능성, 사운드 인지 범위를 함께 바꿉니다. 시간대별 색 보정과 노출로 날씨 분위기를 구분합니다.


날씨 시스템의 중요성

날씨 시스템은 레벨의 시각적 다양성을 제공하는 것 외에도 다음과 같은 중요한 역할을 합니다.

  • 몰입감 증대: 비, 눈, 안개, 천둥 등 사실적인 날씨 효과는 플레이어가 게임 세계에 더욱 깊이 몰입하도록 돕습니다.
  • 분위기 및 감성 변화: 맑은 날은 평화로움을, 비 오는 날은 우울함이나 긴장감을, 눈 오는 날은 고요함이나 신비로움을 연출할 수 있습니다.
  • 게임 플레이 영향
    • 시야 제한: 안개, 폭우, 눈보라 등은 플레이어의 시야를 제한하여 게임 난이도를 높이거나 특정 경로로 유도할 수 있습니다.
    • 이동 변화: 비나 눈으로 인해 지면이 미끄러워지거나, 이동 속도에 제약이 생길 수 있습니다.
    • 환경 상호작용: 물이 차오르거나 얼음이 어는 등의 환경 상호작용을 유발할 수 있습니다.
  • 재플레이 가치: 동일한 레벨이라도 다른 날씨 조건에서 플레이하며 새로운 경험을 제공할 수 있습니다.

기본적인 날씨 효과 구현 요소

언리얼 엔진에서 날씨를 구현하기 위해 주로 사용되는 기본적인 액터들과 개념은 다음과 같습니다.

Exponential Height Fog

  • 역할: 레벨에 전반적인 안개 효과를 추가합니다. 안개 밀도, 높이, 색상 등을 조절하여 다양한 종류의 안개(옅은 안개, 짙은 안개, 땅에 깔리는 안개 등)를 연출할 수 있습니다.
  • 날씨 연출: 흐린 날, 안개 낀 날, 미세먼지 가득한 날 등을 표현하는 데 필수적입니다.
  • 주요 설정 (디테일 패널)
    • Fog Density: 안개 밀도
    • Fog Height Falloff: 안개 높이에 따른 밀도 변화
    • Fog Inscattering Color: 안개 색상 (빛 산란 색상)
    • Start Distance: 안개가 시작되는 거리

Volumetric Cloud로 날씨 밀도 구성

  • 역할: 사실적인 3D 구름을 구현합니다. 구름의 밀도, 높이, 형태 등을 조절하여 맑은 하늘의 솜털 구름부터 폭풍 전야의 먹구름까지 다양한 하늘을 연출할 수 있습니다.
  • 날씨 연출: 날씨의 시각적 배경을 담당하며, 특히 흐린 날씨나 폭풍우를 표현할 때 중요합니다. 조명과 상호작용하여 구름 그림자를 드리우고 빛을 가리는 역할을 합니다.
  • 주요 설정 (디테일 패널)
    • Material: 구름의 형태와 밀도를 결정하는 재질.
    • Coverage: 구름이 하늘을 덮는 정도.
    • Layer Height, Layer Bottom Altitude: 구름 층의 두께와 시작 높이.
    • Ground Shadow Strength: 지면에 드리워지는 구름 그림자의 강도.

강수량(Precipitation) 파티클 시스템

  • 역할: 비, 눈, 우박 등 공기 중에 떨어지는 물방울이나 입자를 시각적으로 표현합니다.
  • 날씨 연출: 비, 눈, 우박 등의 날씨 효과를 직접적으로 구현하는 핵심 요소입니다.
  • 구현 방법

    Niagara 시스템 생성: 콘텐츠 브라우저에서 마우스 오른쪽 버튼 클릭 FX > Niagara System을 선택합니다.

    템플릿 선택: Empty에서 시작하거나, Simple Rain, Simple Snow 등 기본 템플릿을 사용하여 시작할 수 있습니다.

    파티클 설정: Niagara Editor에서 스폰 속도, 크기, 색상, 물리 시뮬레이션(충돌), 재질 등을 조절하여 원하는 비나 눈의 형태를 만듭니다.

    액터 배치: 완성된 Niagara 시스템을 레벨에 드래그 앤 드롭하여 배치합니다. 일반적으로 플레이어 캐릭터 주변에 배치하고 플레이어를 따라 움직이도록 설정합니다. (블루프린트 활용)


날씨 변화의 구현 (블루프린트 활용)

날씨 상태 전환 블루프린트 흐름

동적 날씨는 버튼이나 타이머 입력이 파라미터 변경으로 이어지고, 머티리얼, 라이트, 파티클이 같은 상태를 공유할 때 자연스럽게 보입니다.

  1. 1
    Input/Timer

    사용자 입력이나 시간 조건이 전환을 시작합니다.

  2. 2
    Weather State

    현재 날씨 enum이나 name 변수를 바꿉니다.

  3. 3
    Material Param

    젖음, 안개, 구름 값을 보간합니다.

  4. 4
    Light/Fog

    Directional Light와 Exponential Fog를 조정합니다.

  5. 5
    VFX Audio

    비, 눈, 바람 효과를 함께 켜고 끕니다.

단순히 날씨 효과를 배치하는 것을 넘어, 날씨를 동적으로 변화시키려면 블루프린트(Blueprint)를 활용해야 합니다.

날씨 시스템 마스터 블루프린트 생성

새로운 블루프린트 클래스 생성: 콘텐츠 브라우저에서 마우스 오른쪽 버튼 클릭 블루프린트 클래스(Blueprint Class)를 선택합니다.

부모 클래스 선택: Actor를 부모 클래스로 선택하고 BP_WeatherSystem과 같이 이름을 지정합니다.

액터 배치: BP_WeatherSystem 블루프린트 액터를 레벨에 배치합니다.

날씨 파라미터 제어

BP_WeatherSystem 블루프린트 내에서 날씨 효과 액터들의 속성을 제어합니다.

액터 참조 변수 생성
  • ExponentialHeightFog 액터를 월드 아웃라이너에서 선택한 후, 블루프린트 이벤트 그래프로 드래그 앤 드롭하여 참조 변수를 생성합니다. (또는 변수를 생성하고 Actor 타입으로 설정한 후 레벨에 있는 액터를 참조시킵니다.)
  • VolumetricCloud 액터와 강수량 Niagara 시스템도 동일하게 참조 변수를 만듭니다.
타임라인(Timeline) 또는 타이머(Timer) 활용
  • 날씨를 점진적으로 변화시키기 위해 타임라인 노드를 사용합니다. (예: 맑음에서 비로 바뀔 때 안개 밀도, 구름 범위, 강수량 파티클의 스폰 속도를 서서히 조절)
  • 타이머 노드를 사용하여 특정 시간 간격으로 날씨 상태를 전환할 수도 있습니다.
파라미터 설정 노드
  • 참조 변수에서 각 액터의 디테일 패널에 있는 속성들을 가져와 Set 노드를 사용하여 값을 변경합니다.
  • 예: Set Fog Density, Set Coverage, Set Emitter Spawn Rate 등.

날씨 상태 (Weather States) 구현

열거형(Enum)을 사용하여 날씨 상태를 정의하고, Switch on Enum 노드를 통해 각 상태에 맞는 날씨 효과를 적용할 수 있습니다.

열거형 생성: 콘텐츠 브라우저에서 마우스 오른쪽 버튼 클릭 블루프린트(Blueprint) > 열거형(Enumeration)을 선택하고 E_WeatherState와 같이 이름을 지정합니다.

상태 추가: 열거형 에디터에서 Clear, Rainy, Foggy, Snowy 등 원하는 날씨 상태를 추가합니다.

블루프린트 로직
  • BP_WeatherSystem 블루프린트에 CurrentWeatherState라는 E_WeatherState 타입의 변수를 생성합니다.
  • 이 변수의 값에 따라 Switch on E_WeatherState 노드를 사용하여 각 날씨 상태별로 다른 파라미터 값(안개 밀도, 구름 범위, 강수량 등)을 설정하도록 로직을 구성합니다.
  • 날씨를 전환하는 이벤트(예: 특정 시간 도달, 플레이어 상호작용)가 발생하면 CurrentWeatherState 변수 값을 변경하고, 해당 변경에 따라 날씨 효과들이 업데이트되도록 만듭니다.

날씨 효과의 시각적 강화 및 최적화

포스트 프로세스 볼륨과의 연동

  • 날씨 변화에 따라 레벨의 색감(Color Grading), 노출(Exposure), 블룸(Bloom) 등을 동적으로 조절하여 날씨의 분위기를 더욱 강화합니다.
  • 예: 비 오는 날에는 채도를 낮추고 노출을 어둡게, 안개 낀 날에는 블룸을 강조하는 등.
  • 블루프린트에서 Set Members in Post Process Settings 노드를 사용하여 Post Process Volume의 설정을 변경할 수 있습니다.

사운드 효과 추가

  • 비 소리, 천둥소리, 바람 소리 등 날씨에 맞는 사운드 큐(Sound Cue)를 배치하고, 블루프린트에서 날씨 상태에 따라 사운드의 볼륨을 조절하거나 재생/정지시킵니다.
  • 앰비언트 사운드(Ambient Sound) 액터를 활용하여 배경 소음을 추가합니다.

최적화 고려 사항

  • 파티클 시스템 최적화: 강수량 파티클의 Spawn Rate, Max Particles를 너무 높게 설정하지 않도록 주의합니다. Culling Distance, LODs 등을 활용하여 플레이어 시야 밖에서는 파티클이 렌더링되지 않도록 합니다.
  • 볼류메트릭 클라우드 품질: Volumetric Cloud의 품질 설정을 목표 플랫폼에 맞게 조절합니다. (고품질은 성능 소모가 큽니다.)
  • 지수형 높이 안개: 볼류메트릭 안개 대신 지수형 높이 안개를 사용하면 훨씬 성능 효율적입니다.

날씨 상태를 만들 때는 연출 목표와 성능 한계를 함께 보고 어떤 효과를 켤지 판단해야 합니다.

날씨 상태 판단 기준

날씨를 추가할 때는 분위기, 시야, 파티클 비용, 보조 효과를 한 줄로 비교하면 필요한 액터와 파라미터가 빨리 정리됩니다.

  1. 맑음

    낮은 안개와 밝은 하늘

  2. Sky Atmosphere

    구름 Coverage 최소

  3. 시야 확보

    탐색과 전투 기준 상태

  4. 저비용

    동적 효과를 줄여 예산 확보

  5. 젖은 노면과 낮은 채도

  6. Niagara

    강수량과 충돌 스플래시

  7. 이동 변화

    미끄러짐, 소음 마스킹

  8. 오버드로

    Spawn Rate와 컬링 제한

  9. 안개

    깊이감과 긴장감 강화

  10. Height Fog

    Density와 Start Distance

  11. 시야 제한

    경로 유도와 은신 강화

  12. 샘플링

    볼류메트릭 사용 범위 제한

처음부터 모든 효과를 한 번에 붙이기보다 상태, 액터, 전환값, 예산을 나누어 잡으면 날씨 시스템을 안정적으로 확장할 수 있습니다.

날씨 시스템 확장 순서

상태 정의를 먼저 고정한 뒤 액터 참조와 전환값을 붙이면 효과가 늘어도 구조가 흔들리지 않습니다.

  1. 1
    상태 정의

    Clear, Rainy, Foggy처럼 플레이에 의미 있는 날씨만 먼저 고릅니다.

  2. 2
    액터 연결

    Fog, Cloud, Niagara, Post Process를 마스터 블루프린트에 참조합니다.

  3. 3
    값 보간

    Density, Coverage, Spawn Rate를 타임라인이나 커브로 부드럽게 바꿉니다.

  4. 4
    예산 확인

    파티클 수, 볼류메트릭 품질, 컬링 거리를 목표 플랫폼에 맞춥니다.

날씨 시스템은 안개, 구름, 강수 파티클, 조명 값을 같은 상태로 묶어 제어해야 합니다.

후처리와 사운드까지 포함해 상태별 비용을 확인하세요.

아래 다이어그램은 날씨 시스템을 구성할 때 액터 배치, 상태 전환, 파라미터 보간, 최적화 기준을 하나의 운영 흐름으로 정리한 것입니다.

날씨 시스템은 하나의 상태가 안개, 구름, 강수, 소리를 함께 바꾼다

액터를 많이 배치하는 것보다 맑음, 비, 안개, 눈 상태가 어떤 파라미터를 동시에 움직이는지가 핵심이다.

상태 축바뀌는 값독자가 봐야 할 결과
FogDensity, Height Falloff, 색상시야 거리와 분위기가 상태별로 달라진다.
CloudCoverage, Shadow Strength하늘 밀도와 지면 그림자가 함께 변한다.
Rain / SnowSpawn Rate, 충돌, Cull Distance카메라 근처만 충분히 풍성하게 보인다.
Post Process노출, 채도, Bloom화면 톤이 날씨 감정과 맞는다.
Audio비, 바람, 천둥 볼륨시각 변화와 소리 반응이 따로 놀지 않는다.

다음 절에서는 날씨 시스템과 밀접하게 연관된 시간 시스템(낮/밤 주기)을 구현하는 방법에 대해 알아보겠습니다.

날씨 시스템 구성 카드

날씨는 안개, 구름, 강수, 조명, 사운드가 같은 상태 값을 바라볼 때 자연스럽게 느껴집니다.

  1. Fog
    Fog

    Exponential Height Fog와 볼류메트릭 옵션으로 거리감과 습도를 표현합니다.

  2. Cloud
    Cloud

    Volumetric Cloud의 밀도와 그림자로 하늘 상태를 만듭니다.

  3. Rain Snow
    Rain Snow

    Niagara 파티클로 강수량, 방향, 충돌 반응을 조절합니다.

  4. Light
    Light

    광원 색과 강도를 날씨 전환 곡선에 맞춰 보간합니다.

  5. Audio
    Audio

    바람과 강수음을 같은 상태 값으로 섞어 체감을 맞춥니다.