본문으로 건너뛰기

안동민 개발노트

본문 시작

나이아가라 스크립트 기본 개념

노드·매개변수·네임스페이스·데이터 타입으로 Module Script의 입력과 파티클 속성 계산 흐름을 구성합니다.

지금까지 나이아가라의 구성 요소와 데이터 흐름을 익혔다면, 이제 실제 동작 로직을 설계할 단계입니다.

핵심 도구는 나이아가라 스크립트(Niagara Script)입니다.

이 환경에서는 모듈 내부 동작 정의, 파티클 속성 계산, 복잡한 상호작용 구현을 노드 기반으로 처리할 수 있습니다.

코딩 배경이 적더라도 접근할 수 있도록, 나이아가라 스크립트는 언리얼 엔진의 블루프린트와 유사한 시각적 노드 연결 방식으로 동작합니다.

즉 코드를 직접 작성하는 대신, 논리 흐름을 블록처럼 조립해 파티클의 동작을 제어할 수 있습니다.

파티클 속성 계산

나이아가라 스크립트는 코드 대신 노드와 핀을 연결해 위치, 색상, 속도 같은 파티클 값을 갱신하는 시각적 로직 환경입니다.

  1. Nodes

    Add, Multiply, Make Vector처럼 계산 단위를 구성합니다. operation

  2. Parameters

    `Particles.Position`, `System.DeltaTime` 같은 값을 읽고 씁니다. value

  3. Namespaces

    Particles, Emitter, System, User로 값의 출처와 범위를 구분합니다. 범위

  4. Evaluate

    계산의 시작점에서 Output까지 연결해 최종 파티클 속성을 갱신합니다. result


나이아가라 스크립트란 무엇인가요?

나이아가라 스크립트는 에디터의 스크립트 에디터(Script Editor) 패널에서 작업하는 비주얼 프로그래밍 공간입니다.

Initialize Particle, Add Velocity, Scale Color 같은 기본 모듈도 내부적으로 이 스크립트 구조로 되어 있으며, 사용자 정의 모듈 역시 같은 공간에서 로직을 직접 구현합니다.

나이아가라 스크립트의 핵심 개념은 데이터 흐름(Data Flow)입니다.

각 노드는 특정 연산(예: 더하기, 곱하기, 벡터 생성, 값 가져오기)을 수행하고, 그 결과를 다음 노드로 전달합니다.

이러한 데이터의 흐름은 파티클의 최종 속성을 계산하는 데 사용됩니다.


나이아가라 스크립트의 주요 구성 요소

Niagara Script는 파라미터를 읽고 써서 파티클 상태를 만든다

노드 모양보다 값이 어떤 namespace에서 들어와 어느 Particle 속성으로 쓰이는지 추적하는 편이 흐름을 빨리 잡는다.

요소역할읽는 방식점검 포인트
Node작은 계산 단위입력 핀을 받아 출력 핀 생성끊긴 핀과 타입 경고가 없는가
Parameter공유되는 값User, System, Emitter, Particle 이름으로 접근실제 값과 기본값을 구분하는가
Namespace값의 소유 범위같은 이름도 범위가 다르면 다른 값최종 작성자가 어디인지 보이는가
Attribute write파티클 속성 갱신Position, Velocity, Color 등으로 저장아래 모듈이 다시 덮어쓰는가
Evaluate순서대로 계산위에서 아래로 최종값 확정컴파일 경고 없이 실행되는가

스크립트 에디터에서 여러분이 다루게 될 주요 구성 요소들은 다음과 같습니다.

노드 (Nodes)

노드는 스크립트의 가장 기본적인 빌딩 블록입니다.

각 노드는 특정한 기능이나 연산을 수행합니다.

  • 입력 핀 (Input Pins): 노드의 왼쪽 또는 상단에 위치하며, 다른 노드로부터 데이터를 받거나 직접 값을 입력받습니다.
  • 출력 핀 (Output Pins): 노드의 오른쪽 또는 하단에 위치하며, 노드에서 처리된 결과를 다음 노드로 전달합니다.
  • 연결선 (Wires): 노드의 출력 핀과 다른 노드의 입력 핀을 연결하여 데이터의 흐름을 만듭니다.

매개변수 (Parameters)

매개변수는 파티클이 가지고 있는 속성(예: Particles.Color, Particles.Position, Particles.Velocity)이나 시스템/이미터의 속성(System.DeltaTime, Emitter.Age)을 나타냅니다.

  • Get 노드: 특정 매개변수의 현재 값을 가져올 때 사용합니다. (예: Get Particles.Color, Get Particles.Position)
  • Set 노드: 특정 매개변수의 값을 설정하거나 변경할 때 사용합니다. (예: Set New or Existing Parameter 노드를 사용하여 Particles.Color 값을 변경)

네임스페이스 (Namespaces)

나이아가라의 매개변수는 체계적인 관리를 위해 네임스페이스를 사용합니다.

이는 매개변수의 출처나 종류를 명확히 구분하는 데 도움을 줍니다.

주요 네임스페이스는 다음과 같습니다.

  • Particles.: 개별 파티클의 속성 (예: Particles.Position, Particles.Color, Particles.Lifetime).
  • System.: 나이아가라 시스템 전체의 속성 (예: System.DeltaTime, System.EffectType).
  • Emitter.: 개별 이미터의 속성 (예: Emitter.Age, Emitter.SpawnCount).
  • User.: 외부(블루프린트, C++ 등)에서 전달되는 사용자 정의 매개변수 (예: User.MyCustomValue).
  • Engine.: 언리얼 엔진 자체에서 제공하는 매개변수 (예: Engine.WorldTime).
  • Local.: 스크립트 내부에서 임시로 사용하는 지역 변수.

네임스페이스를 통해 어떤 매개변수가 어떤 스코프(Scope)에서 정의되고 사용되는지 명확히 알 수 있으며, 같은 이름의 매개변수가 다른 스코프에 있을 때 충돌을 방지합니다.

데이터 타입 (Data Types)

각 매개변수와 핀은 특정 데이터 타입을 가집니다.

올바른 데이터 타입끼리만 연결할 수 있습니다.

  • Float: 소수점을 포함하는 단일 숫자 (예: 1.5, 3.14).
  • Int: 정수 (예: 1, 100).
  • Vector2: 2차원 좌표 (X, Y).
  • Vector3: 3차원 좌표 (X, Y, Z), 위치나 속도에 주로 사용.
  • Vector4: 4차원 벡터 (X, Y, Z, W), 색상(RGBA)이나 쿼터니언 회전에 주로 사용.
  • Color: 색상 값 (RGBA).
  • Bool: 참/거짓 논리 값.
  • Enum: 열거형, 미리 정의된 목록 중 하나를 선택하는 타입.

스크립트 에디터에서 작업하기

스크립트 에디터 열기: 나이아가라 에디터에서 이미터의 모듈(예: Initialize Particle, Add Velocity)을 선택하거나, 사용자 정의 모듈을 생성하면 스크립트 에디터 패널에 해당 모듈의 내부 스크립트가 나타납니다.

노드 추가: 스크립트 에디터의 빈 공간에 마우스 우클릭하면 노드 검색창이 나타납니다.

여기서 원하는 노드를 검색하여 추가할 수 있습니다. (예: Add, Multiply, Sine, Make Vector, Get Particles.Position 등)

노드 연결: 노드의 출력 핀을 마우스로 클릭하고 드래그하여 다른 노드의 입력 핀에 연결합니다.

연결선이 나타나며 데이터가 흐르는 것을 시각적으로 보여줍니다.

값 설정: 노드에 직접 값을 입력해야 하는 경우, 해당 노드를 선택하면 디테일 패널에 속성이 나타나 값을 변경할 수 있습니다.


아래 다이어그램은 스크립트 에디터에서 모듈을 열고, 값을 읽고, 노드 연산을 거쳐 파티클 속성을 갱신하는 실제 작업 루프를 정리한 것입니다.

스크립트 에디터 흐름

모듈을 열면 먼저 필요한 파라미터를 가져오고, 노드로 값을 계산한 뒤, 결과를 Output 또는 Set 노드로 다시 파티클 속성에 반영합니다.

  1. node graph
    작업 순서

    node graph 1 Initialize Particle이나 사용자 정의 모듈을 선택해 내부 스크립트를 엽니다. 2 Get 노드로 Particles, System, User 네임스페이스의 입력값을 읽습니다. 3 Add, Multiply, Make Vector 같은 노드로 필요한 속성 값을 만듭니다. 4 Output 또는 Set New or Existing Parameter로 계산 결과를 저장합니다. Module Get Calculate Set / Output

  2. 2
    모듈 열기

    Initialize Particle이나 사용자 정의 모듈을 선택해 내부 스크립트를 엽니다.

  3. 3
    값 가져오기

    Get 노드로 Particles, System, User 네임스페이스의 입력값을 읽습니다.

  4. 4
    노드 계산

    Add, Multiply, Make Vector 같은 노드로 필요한 속성 값을 만듭니다.

  5. 5
    속성 쓰기

    Output 또는 Set New or Existing Parameter로 계산 결과를 저장합니다.


스크립팅의 기본 원칙: Evaluate 노드

대부분의 나이아가라 스크립트에는 Evaluate 노드가 포함됩니다.

이 노드는 스크립트의 시작점 역할을 하며, 모든 계산이 이 노드에서 시작되어 파이프라인을 따라 흐릅니다.

복잡한 사용자 정의 모듈을 만들 때는 Output 노드를 통해 최종 결과값을 Set New or Existing Parameter 노드로 전달하여 파티클 속성을 업데이트합니다.


나이아가라 스크립트는 파티클 속성과 동작을 노드 기반으로 계산하는 도구입니다.

다음 절에서는 수학 연산을 이용한 파티클 움직임과 속성 제어를 다룹니다.

아래 다이어그램은 나이아가라 스크립트를 만들 때 입력, 노드 연산, 파라미터 쓰기, 검증을 어떤 순서로 확인할지 정리한 기본 설계 체크리스트입니다.

스크립트 설계 점검 기준

사용자 정의 모듈은 입력을 정하고, 노드로 계산하고, 파티클 속성에 다시 쓰는 작은 데이터 흐름으로 설계합니다.

  1. 입력 정의

    외부에서 조절할 값과 스크립트 내부에서만 쓸 값을 나눕니다. User.Intensity Local.NoiseScale

  2. 속성 읽기

    현재 위치, 속도, 수명처럼 계산의 기준이 될 값을 가져옵니다. Get Particles.Position Get NormalizedAge

  3. 노드 연산

    수학, 조건, 벡터 노드로 원하는 변화를 계산합니다. Multiply Select

  4. 값 쓰기

    계산 결과를 명확한 파티클 속성에 연결합니다. Set Particles.Color Set SpriteSize

  5. 프리뷰 검증

    값 범위, 실행 섹션, 데이터 타입이 의도와 맞는지 확인합니다. Compile Preview + Debug

나이아가라 스크립트는 노드, 매개변수, 네임스페이스, 데이터 타입, Evaluate 흐름을 한 번에 잡으면 그래프를 읽기 쉬워집니다.

나이아가라 스크립트는 입력에서 최종 쓰기까지 추적한다

기본값이 들어온 것인지, 외부 연결값이 들어온 것인지부터 확인하고 마지막에 어떤 속성을 덮는지 본다.

순서읽는 대상문제 신호통과 기준
01 Inputs모듈 입력과 외부 매개변수기본값만 사용됨노출 이름과 타입이 호출 쪽과 일치
02 Nodes계산 노드와 연결 핀끊긴 핀, 자동 변환, 경고모든 계산 입력이 의도한 값
03 NamespaceUser, System, Emitter, Particle 범위같은 이름의 최종 작성자 혼동값의 소유 범위를 지도처럼 설명 가능
04 TypesVector, Float, Bool, Color 타입자동 변환으로 결과가 달라짐컴파일 경고와 오류가 없음
05 Evaluate최종 속성 쓰기 위치아래 모듈이 다시 덮어씀의도한 모듈 이후 Particle 속성이 바뀜

스크립트 작업은 입력, 계산, 출력의 경계를 지키는 것이 핵심이므로, 기본 작성 흐름을 점검표로 마무리합니다.

스크립트는 입력·계산·쓰기 계약으로 읽는다

노드 모양을 외우기보다 값이 어느 네임스페이스에서 들어와 어떤 타입으로 계산되고 어디에 쓰이는지 추적한다.

열 구성 · 구간 · 읽는 대상 · 문제 신호 · 통과 기준
구간읽는 대상문제 신호통과 기준
Inputs 외부 값User Parameter와 기본값이 어디서 들어오는지 본다.기본값만 들어오면 블루프린트 연결이 끊겼을 수 있다.노출 이름과 타입이 호출 쪽과 일치한다.
Nodes 계산 단위각 노드가 받은 값과 만든 출력 핀을 따라간다.끊긴 핀이나 맞지 않는 타입은 기본값 계산을 만든다.계산 입력이 의도한 값으로 모두 연결된다.
Namespace 값 범위User, System, Emitter, Particles 중 어느 범위인지 구분한다.같은 이름을 여러 범위에서 쓰면 최종 작성자를 놓친다.값이 지나가는 범위를 지도처럼 표시할 수 있다.
Types 핀 타입Float, Vector, Bool, Color 타입이 핀 연결과 맞는지 본다.자동 변환이나 경고가 있으면 결과가 달라질 수 있다.컴파일 경고와 타입 오류가 없다.
Evaluate 최종 쓰기최종 출력이 어느 모듈 뒤 파티클 속성에 쓰이는지 본다.같은 속성을 여러 모듈이 바꾸면 아래쪽 결과가 이긴다.Particle 속성이 의도한 모듈 이후에 바뀐다.