날씨 시스템 설정
이전 챕터에서는 레벨의 시각적 완성도를 높이는 조명과 그림자 설정에 대해 심도 있게 다루었습니다. 이제 레벨에 더욱 생동감과 몰입감을 불어넣을 수 있는 동적인 요소, 바로 날씨 시스템을 구현하는 방법을 배울 차례입니다. 날씨는 단순히 배경 효과를 넘어, 게임 플레이에 영향을 미치거나 레벨의 분위기를 극적으로 변화시키는 강력한 도구가 될 수 있습니다. '나 혼자 언리얼 기본' 교재를 통해 여러분이 언리얼 엔진에서 다양한 날씨 효과를 구현하고, 이를 통해 더욱 풍부한 가상 세계를 창조할 수 있도록 안내해 드리겠습니다. 마치 자연이 끊임없이 변하듯, 여러분의 레벨도 시시각각 변하는 날씨를 통해 살아 숨 쉬게 만들어 봅시다.
날씨 시스템의 중요성
날씨 시스템은 레벨의 시각적 다양성을 제공하는 것 외에도 다음과 같은 중요한 역할을 합니다.
- 몰입감 증대: 비, 눈, 안개, 천둥 등 사실적인 날씨 효과는 플레이어가 게임 세계에 더욱 깊이 몰입하도록 돕습니다.
- 분위기 및 감성 변화: 맑은 날은 평화로움을, 비 오는 날은 우울함이나 긴장감을, 눈 오는 날은 고요함이나 신비로움을 연출할 수 있습니다.
- 게임 플레이 영향
- 시야 제한: 안개, 폭우, 눈보라 등은 플레이어의 시야를 제한하여 게임 난이도를 높이거나 특정 경로로 유도할 수 있습니다.
- 이동 변화: 비나 눈으로 인해 지면이 미끄러워지거나, 이동 속도에 제약이 생길 수 있습니다.
- 환경 상호작용: 물이 차오르거나 얼음이 어는 등의 환경 상호작용을 유발할 수 있습니다.
- 재플레이 가치: 동일한 레벨이라도 다른 날씨 조건에서 플레이하며 새로운 경험을 제공할 수 있습니다.
기본적인 날씨 효과 구현 요소
언리얼 엔진에서 날씨를 구현하기 위해 주로 사용되는 기본적인 액터들과 개념은 다음과 같습니다.
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 시스템을 레벨에 드래그 앤 드롭하여 배치합니다. 일반적으로 플레이어 캐릭터 주변에 배치하고 플레이어를 따라 움직이도록 설정합니다. (블루프린트 활용)
날씨 변화의 구현 (블루프린트 활용)
단순히 날씨 효과를 배치하는 것을 넘어, 날씨를 동적으로 변화시키려면 블루프린트(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
의 품질 설정을 목표 플랫폼에 맞게 조절합니다. (고품질은 성능 소모가 큽니다.) - 지수형 높이 안개: 볼류메트릭 안개 대신 지수형 높이 안개를 사용하면 훨씬 성능 효율적입니다.
날씨 시스템 설정은 레벨에 생명력과 변화를 부여하는 매우 흥미로운 과정입니다. 이 절에서 배운 지수형 높이 안개, 볼류메트릭 클라우드, 강수량 파티클 시스템을 배치하고, 블루프린트를 활용하여 이들을 동적으로 제어하며 다양한 날씨 상태를 구현해 보세요. 조명, 사운드, 후처리 효과와의 연동을 통해 더욱 풍부하고 몰입감 있는 날씨 경험을 제공할 수 있을 것입니다.
다음 절에서는 날씨 시스템과 밀접하게 연관된 시간 시스템(낮/밤 주기) 을 구현하는 방법에 대해 알아보겠습니다. 준비되셨나요?