본문으로 건너뛰기

안동민 개발노트

본문 시작

나이아가라 이펙트 디버깅 기초

파티클 미표시·비정상 움직임·성능 저하를 모듈 스택과 Niagara Debugger·통계 명령·속성 시각화로 진단합니다.

아무리 숙련된 FX 아티스트라도 나이아가라 이펙트 제작 과정에서 예상치 못한 문제에 직면하게 됩니다.

파티클이 보이지 않거나, 이상하게 움직이거나, 성능 저하를 일으키는 등 다양한 오류가 발생할 수 있습니다.

이러한 문제를 효율적으로 찾아내고 해결하는 과정이 바로 디버깅(Debugging)입니다.

언리얼 엔진은 나이아가라 시스템을 디버깅하기 위한 강력한 내장 도구들을 제공합니다.

이 절에서는 나이아가라 이펙트를 디버깅하는 데 필요한 기본적인 접근 방식과 주요 도구 사용법에 대해 알아보겠습니다.


일반적인 문제와 점검 사항

디버깅을 시작하기 전에, 가장 흔히 발생하는 문제들을 파악하고 기본적인 점검을 수행하는 것이 시간을 절약하는 데 도움이 됩니다.

  • 파티클이 전혀 보이지 않을 때
    • Niagara System 컴포넌트가 활성화(Active)되어 있는가?: 블루프린트나 레벨 시퀀서에서 Activate 노드가 호출되었는지, 또는 기본적으로 Auto Activate가 켜져 있는지 확인합니다.
    • Spawn Rate 또는 Spawn Burst가 0으로 설정되어 있지 않은가?: 이미터에서 파티클이 스폰되도록 설정되어 있는지 확인합니다.
    • Lifetime이 너무 짧지 않은가?: 파티클이 생성되자마자 너무 빨리 사라져서 보이지 않는 경우가 있습니다.
    • Sprite Size (스프라이트 크기) 또는 Mesh Scale (메시 스케일)이 0으로 설정되어 있지 않은가?: 파티클이 너무 작게 생성되어 보이지 않을 수 있습니다.
    • 머티리얼에 문제가 없는가?: 머티리얼이 올바르게 할당되었는지, 블렌드 모드, 셰이딩 모델, 투명도 설정이 올바른지 확인합니다. 특히 Translucent 머티리얼은 정렬 문제로 보이지 않을 수 있습니다.
    • 카메라 Cull Distance 설정에 의해 컬링되고 있지 않은가?: 카메라와 파티클 시스템 간의 거리가 너무 멀어 렌더링에서 제외되는 경우입니다.
    • 이미터가 활성화(Active)되어 있는가?: 이미터의 활성 여부, Emitter State 수명 주기와 실행 상태, 품질 단계 제외·컬링 결과를 확인합니다. 작은 Fixed Bounds 때문에 잘리는지도 봅니다.
    • Light Renderer만 사용하고 다른 렌더러가 없는가?: 라이트 렌더러는 실제 파티클을 렌더링하지 않습니다.
  • 파티클이 이상하게 움직이거나 형태가 이상할 때
    • Initial Velocity (초기 속도) 설정이 올바른가?: 파티클이 의도한 방향으로 발사되는지 확인합니다.
    • 각종 Force (힘) 모듈의 강도가 적절한가?: Gravity, Drag, Noise Force 등의 Strength가 너무 강하거나 약하게 설정되어 있는지 확인합니다.
    • Normalized Age (정규화된 수명) 커브가 올바른가?: Scale Color, Scale Sprite Size 등 시간에 따른 변화를 제어하는 커브가 의도한 대로 동작하는지 확인합니다.
    • Collision (충돌) 모듈 설정이 올바른가?: Restitution, Friction, Collision Mode 등이 파티클의 충돌 반응에 영향을 미칩니다.
    • 데이터 인터페이스(Data Interface)의 소스 액터/컴포넌트가 올바르게 참조되었는가?: Actor Component Interface나 프로젝트의 데이터 인터페이스를 통해 외부 데이터를 가져올 때, 참조 대상이 유효한지 확인합니다.
  • 성능 저하가 발생할 때
    • Spawn Rate·Burst·Lifetime과 동시 시스템 수가 너무 높지 않은가?: 파티클 수가 과도하게 많을 때 발생합니다.
    • 복잡한 머티리얼 또는 Translucent 오버드로우: Translucent 머티리얼이 많이 겹쳐질수록 성능에 큰 부담을 줍니다.
    • Light Renderer 또는 Shadows (그림자) 사용: 동적 라이트 생성은 매우 비용이 높습니다.
    • 복잡한 모듈 스크립트: 스크립트의 실제 실행 빈도·입자 수와 프로파일을 확인합니다. 룩업 테이블이나 삼각함수라는 이름만으로 병목을 판정하지 않습니다.
    • Collision 모듈의 복잡도: Trace 모드나 복잡한 지오메트리에 대한 충돌 검사는 비용이 높습니다.

나이아가라 디버거 활용

언리얼 엔진의 나이아가라 디버거(Niagara Debugger)는 이펙트의 실시간 상태를 모니터링하고 성능 병목을 식별하는 데 가장 강력한 도구입니다.

디버거 열기
  • Niagara 에디터의 Debug 메뉴에서 Debug HUD 또는 FX Outliner를 엽니다. 레벨 에디터 메뉴 위치는 버전에 따라 다를 수 있습니다.
대상 세션과 시스템 좁히기
  • 연결된 PIE·대상 장치 세션을 확인하고 시스템·액터 필터로 문제 효과를 좁힙니다. 같은 맵, 카메라, 입력, 재생 시점을 기록합니다.
관측 목적에 맞는 도구 선택
  • Debug HUD: 실행 상태·입자 수 등 표시 항목을 켜고 필요한 속성과 bounds를 확인합니다. 모든 속성이 모든 시뮬레이션 타깃에서 같은 방식으로 보이는 것은 아닙니다.
  • FX Outliner: Capture로 월드·시스템·인스턴스·이미터 상태를 수집합니다. Perf 옵션을 사용한 측정은 표시되는 항목과 수집 범위를 확인합니다.
  • Playback: Pause/Play, 한 프레임 전진(Step), 재생 속도를 사용합니다. 이전 프레임으로 되감는 기능을 가정하지 말고 필요하면 초기화 후 같은 조건으로 다시 재생합니다. Niagara 속도 변경이 월드 전체의 시간을 같이 바꾸지는 않습니다.

통계 명령어 (Stat Commands) 활용

콘솔 명령어를 사용하여 나이아가라 시스템의 전반적인 성능 통계를 빠르게 확인할 수 있습니다.

콘솔 열기: 게임 플레이 중 ~ 키를 눌러 개발자 콘솔을 엽니다.

stat Niagara
  • stat Niagara로 Niagara의 집계 통계를 확인합니다. 표시 항목은 빌드와 엔진 버전에 따라 달라지며 모든 개별 시스템의 GPU 비용을 직접 제공한다고 가정하지 않습니다.
  • 개별 원인 시스템은 FX Outliner·필터·프로파일과 함께 좁힙니다.
stat GPU
  • GPU 렌더링에 대한 자세한 통계를 보여줍니다. Translucency (반투명), Post Processing (후처리) 등의 항목을 통해 GPU 병목 현상의 원인을 파악할 수 있습니다.
stat InitViews
  • 가시성·컬링·오클루전 등 뷰 초기화 작업의 비용을 분석합니다. SSAO 비용을 직접 측정하는 명령은 아닙니다.
profilegpu
  • 현재 화면을 렌더링하는 데 사용된 모든 GPU 작업에 대한 자세한 타임라인을 보여줍니다. GPU 오버드로우나 특정 렌더링 단계의 문제점을 파악하는 데 매우 유용합니다.

나이아가라 에디터 내 디버깅 기능

나이아가라 시스템 에디터 자체에서도 여러 디버깅 기능을 제공합니다.

  • 스택과 프리뷰: Spawn에서 초기값을 설정하는지, Update에서 매 프레임 덮어쓰는지 확인합니다. 힘·충돌·Solve Forces and Velocity 순서와 Local/World 공간을 대조합니다. Collision은 해당 solver 바로 앞에 둡니다.
  • 속성 캡처: Attribute Spreadsheet는 지원되는 시뮬레이션의 속성을 캡처하여 비교하는 데 사용합니다. 일반 Parameters 패널은 모든 살아 있는 입자의 현재 값 목록이 아닙니다. CPU VM 모듈 통계와 GPU 측정을 구분합니다.
  • 재현: 일시정지·프레임 전진으로 처음 값이 어긋나는 시점을 좁힙니다. 외부 User Parameter는 호출 대상 컴포넌트, 변수 이름·타입, Activate 전후 전달 시점을 함께 확인합니다.

증상에 따라 먼저 볼 곳

증상첫 확인다음 확인
보이지 않음실행·생성·수명크기·머티리얼·bounds·컬링
움직임 이상Spawn/Update의 값 기록좌표 공간·힘·충돌·solver 순서
외부 값 불일치대상 컴포넌트와 User 이름·타입값 설정 시점과 모듈의 실제 읽기
느리거나 끊김CPU·GPU·인스턴스 비용 구분해당 이미터·렌더러를 분리해 비교

한 번에 한 원인을 바꾸고 같은 조건에서 다시 측정합니다. Debug HUD·텍스트·readback도 비용을 만들 수 있으므로 최종 성능 비교에서는 필요한 측정만 유지합니다. GPU 통계와 콘솔 명령 지원은 빌드 구성·RHI·대상 장치에 따라 확인합니다.

도구 구성은 Niagara Debugger와 Niagara Editor UI를 참고합니다.