icon
4장 : 데이터와 매개변수

동적 매개변수 시스템의 기초


데이터 인터페이스가 나이아가라 시스템과 외부 세계를 연결하는 '큰 다리'라면, 동적 매개변수(Dynamic Parameter) 는 그 다리 위를 오가는 '정보의 흐름'을 제어하는 핵심적인 메커니즘입니다. 나이아가라에서 파티클 효과를 실시간으로 제어하고, 게임 플레이 상황에 반응하도록 만드는 데 있어 동적 매개변수는 필수적인 요소입니다.

간단히 말해, 동적 매개변수는 모듈 내에서 직접 값을 고정하는 대신, 외부로부터 값을 받아와 파티클의 속성을 조절할 수 있게 해주는 유연한 시스템입니다. 이는 마치 리모컨으로 TV 볼륨을 조절하듯, 파티클 효과의 다양한 측면을 게임 플레이 중에 변경할 수 있도록 합니다.


동적 매개변수란 무엇인가요?

일반적으로 나이아가라 모듈의 속성(예: Spawn Rate의 스폰 개수, Add Velocity의 속도 값)은 에디터에서 직접 숫자를 입력하여 고정합니다. 하지만 동적 매개변수를 사용하면, 이러한 속성 값들을 게임 내의 다른 변수(예: 플레이어의 현재 체력, 환경의 온도, 시간의 흐름)에 연결하여 실시간으로 변화시킬 수 있습니다.

동적 매개변수를 이해하는 가장 좋은 방법은 '입력(Input)'과 '출력(Output)'의 개념으로 접근하는 것입니다.

  • 모듈의 출력: 각 모듈은 파티클의 속성(위치, 속도, 색상 등)을 계산하고, 그 결과를 다른 모듈이나 렌더러가 사용할 수 있도록 '출력'합니다. 예를 들어, Initialize Particle 모듈은 파티클의 초기 색상을 '출력'하고, Scale Color 모듈은 파티클의 수명에 따라 변화된 색상을 '출력'합니다.
  • 모듈의 입력: 각 모듈은 자신의 기능을 수행하기 위해 '입력' 값을 필요로 합니다. 이 입력 값은 내부적인 계산 결과일 수도 있고, 다른 모듈의 출력일 수도 있으며, 바로 이 동적 매개변수를 통해 외부에서 받아오는 값일 수도 있습니다.

동적 매개변수 시스템은 이러한 입출력 흐름을 더욱 유연하게 만들어, 특정 파티클 속성을 계산하는 데 필요한 정보가 어디에서 오든 간에 쉽게 연결하고 사용할 수 있도록 합니다.


동적 매개변수의 작동 방식

나이아가라 시스템 내에서 동적 매개변수는 크게 세 가지 레벨에서 정보를 주고받을 수 있습니다.

이미터와 시스템 간의 매개변수 공유

하나의 나이아가라 시스템은 여러 이미터를 포함할 수 있습니다. 이때 시스템 레벨에서 정의된 매개변수를 모든 이미터가 공유하거나, 반대로 이미터에서 생성된 특정 데이터를 시스템 레벨로 '끌어올려' 사용할 수 있습니다.

  • 사용 예시
    • 공통 스케일: 시스템 레벨에서 GlobalScale이라는 매개변수를 정의하고, 각 이미터의 파티클 크기나 속도에 이 값을 곱해주면, 시스템 전체의 크기를 한 번에 조절할 수 있습니다.
    • 총 파티클 수: 각 이미터가 생성하는 파티클 수를 합산하여 시스템 레벨에서 총 파티클 수를 실시간으로 파악할 수 있습니다.

모듈 간의 매개변수 흐름

이것이 나이아가라 동적 매개변수의 가장 기본적인 활용입니다. 스크립트 에디터에서 노드를 연결하듯, 한 모듈의 출력 값을 다른 모듈의 입력 값으로 직접 연결할 수 있습니다.

  • 사용 예시
    • Initialize Particle 모듈에서 설정한 파티클의 초기 Color 값을 Scale Color 모듈의 입력으로 가져와 수명에 따른 색상 변화의 기본 색상으로 활용할 수 있습니다.
    • Collision 모듈이 감지한 충돌 위치를 Spawn Burst 모듈의 스폰 위치 입력으로 사용하여 충돌 지점에 파티클을 생성할 수 있습니다.

외부 데이터 (블루프린트, C++ 등)와의 연동

나이아가라 동적 매개변수의 가장 강력한 활용처 중 하나는 게임의 블루프린트(Blueprint)C++ 코드에서 직접 파티클 시스템의 매개변수를 제어하는 것입니다.

  • 사용 예시
    • 캐릭터 속도에 따른 연기 밀도: 캐릭터의 현재 이동 속도를 블루프린트에서 나이아가라 시스템의 Spawn Rate 모듈로 전달하여, 빠르게 달릴수록 더 많은 먼지나 연기가 나도록 만듭니다.
    • 환경 온도에 따른 불꽃 색상: 게임 월드의 특정 지점 온도를 감지하여 나이아가라 시스템의 Color 매개변수로 전달, 온도가 높을수록 불꽃이 더 밝고 붉게 보이도록 합니다.
    • 체력 기반 효과: 플레이어의 체력이 낮아질수록 캐릭터 주변에 나타나는 파티클의 색상이나 강도를 변화시킵니다.

동적 매개변수 생성 및 활용

나이아가라에서 동적 매개변수를 만들고 사용하는 과정은 주로 스크립트 에디터디테일 패널에서 이루어집니다.

  1. 매개변수 타입 확인: 나이아가라의 모든 파티클 속성은 특정 매개변수 타입(예: Float, Vector3, Color)을 가집니다. 디테일 패널에서 속성 이름 옆에 있는 아이콘을 통해 타입을 확인할 수 있습니다.
  2. 드롭다운 메뉴 활용: 대부분의 속성 값은 단순히 숫자를 입력하는 것 외에도 옆에 있는 작은 화살표(드롭다운 메뉴)를 클릭하면 다양한 옵션을 제공합니다.
    • Direct Set: 직접 값을 입력합니다. (기본값)
    • Random Range: 특정 범위 내에서 무작위 값을 사용합니다.
    • From Curve: 시간에 따른 변화를 커브(그래프)로 정의합니다.
    • Link to Emitter/System: 이미터나 시스템 레벨의 다른 매개변수와 연결합니다.
    • Dynamic Input: 스크립트 에디터에서 노드로 연결할 수 있는 입력 핀을 생성합니다. 가장 흔하게 사용하는 방식입니다.
    • Get Niagara Parameter: 다른 모듈이나 시스템 레벨에서 정의된 매개변수 값을 가져옵니다.
    • Set New or Existing Parameter: 특정 매개변수(주로 파티클 속성)의 값을 설정하는 데 사용되는 범용 노드입니다.

예시: Add Velocity에 동적 매개변수 적용

Add Velocity 모듈의 Velocity 속성을 외부에서 제어하고 싶다고 가정해 봅시다.

  1. Add Velocity 모듈의 Velocity 속성 옆 화살표를 클릭합니다.
  2. Dynamic Input을 선택합니다.
  3. 그러면 Dynamic Input (Vector)라는 새로운 항목이 생기고, 그 옆에 이름 입력란과 함께 노드처럼 생긴 버튼이 생깁니다.
  4. 이름을 CustomVelocity와 같이 지정합니다.
  5. 이제 스크립트 에디터에서 CustomVelocity라는 이름의 입력 핀이 활성화됩니다.
  6. 이 핀에 다른 모듈의 출력 값을 연결하거나, Make Vector와 같은 노드를 사용하여 직접 값을 입력할 수 있습니다. 또한, 이 CustomVelocity 매개변수는 블루프린트에서 해당 나이아가라 시스템을 선택했을 때 '사용자 정의 매개변수' 섹션에 나타나, 게임 도중에도 값을 변경할 수 있게 됩니다.

동적 매개변수는 나이아가라 효과에 생명력을 불어넣고, 게임 세계와의 상호작용을 가능하게 하는 강력한 개념입니다. 이 개념을 이해하고 활용하는 것은 단순히 멋진 시각 효과를 만드는 것을 넘어, 게임 플레이와 밀접하게 연동되는 더욱 몰입감 있는 경험을 제공하는 데 필수적입니다.