나이아가라 스크립트 기본 개념
노드·매개변수·네임스페이스·데이터 타입으로 Module Script의 입력과 파티클 속성 계산 흐름을 구성합니다.
지금까지 나이아가라의 구성 요소와 데이터 흐름을 익혔다면, 이제 실제 동작 로직을 설계할 단계입니다.
핵심 도구는 나이아가라 스크립트(Niagara Script)입니다.
이 환경에서는 모듈 내부 동작 정의, 파티클 속성 계산, 복잡한 상호작용 구현을 노드 기반으로 처리할 수 있습니다.
코딩 배경이 적더라도 접근할 수 있도록, 나이아가라 스크립트는 언리얼 엔진의 블루프린트와 유사한 시각적 노드 연결 방식으로 동작합니다.
즉 코드를 직접 작성하는 대신, 논리 흐름을 블록처럼 조립해 파티클의 동작을 제어할 수 있습니다.
나이아가라 스크립트는 코드 대신 노드와 핀을 연결해 위치, 색상, 속도 같은 파티클 값을 갱신하는 시각적 로직 환경입니다.
- Nodes
Add, Multiply, Make Vector처럼 계산 단위를 구성합니다. operation
- Parameters
`Particles.Position`, `System.DeltaTime` 같은 값을 읽고 씁니다. value
- Namespaces
Particles, Emitter, System, User로 값의 출처와 범위를 구분합니다. 범위
- Evaluate
계산의 시작점에서 Output까지 연결해 최종 파티클 속성을 갱신합니다. result
나이아가라 스크립트란 무엇인가요?
나이아가라 스크립트는 에디터의 스크립트 에디터(Script Editor) 패널에서 작업하는 비주얼 프로그래밍 공간입니다.
Initialize Particle, Add Velocity, Scale Color 같은 기본 모듈도 내부적으로 이 스크립트 구조로 되어 있으며, 사용자 정의 모듈 역시 같은 공간에서 로직을 직접 구현합니다.
나이아가라 스크립트의 핵심 개념은 데이터 흐름(Data Flow)입니다.
각 노드는 특정 연산(예: 더하기, 곱하기, 벡터 생성, 값 가져오기)을 수행하고, 그 결과를 다음 노드로 전달합니다.
이러한 데이터의 흐름은 파티클의 최종 속성을 계산하는 데 사용됩니다.
나이아가라 스크립트의 주요 구성 요소
노드 모양보다 값이 어떤 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 노드로 다시 파티클 속성에 반영합니다.
- 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모듈 열기
Initialize Particle이나 사용자 정의 모듈을 선택해 내부 스크립트를 엽니다.
- 3값 가져오기
Get 노드로 Particles, System, User 네임스페이스의 입력값을 읽습니다.
- 4노드 계산
Add, Multiply, Make Vector 같은 노드로 필요한 속성 값을 만듭니다.
- 5속성 쓰기
Output 또는 Set New or Existing Parameter로 계산 결과를 저장합니다.
스크립팅의 기본 원칙: Evaluate 노드
대부분의 나이아가라 스크립트에는 Evaluate 노드가 포함됩니다.
이 노드는 스크립트의 시작점 역할을 하며, 모든 계산이 이 노드에서 시작되어 파이프라인을 따라 흐릅니다.
복잡한 사용자 정의 모듈을 만들 때는 Output 노드를 통해 최종 결과값을 Set New or Existing Parameter 노드로 전달하여 파티클 속성을 업데이트합니다.
나이아가라 스크립트는 파티클 속성과 동작을 노드 기반으로 계산하는 도구입니다.
다음 절에서는 수학 연산을 이용한 파티클 움직임과 속성 제어를 다룹니다.
아래 다이어그램은 나이아가라 스크립트를 만들 때 입력, 노드 연산, 파라미터 쓰기, 검증을 어떤 순서로 확인할지 정리한 기본 설계 체크리스트입니다.
사용자 정의 모듈은 입력을 정하고, 노드로 계산하고, 파티클 속성에 다시 쓰는 작은 데이터 흐름으로 설계합니다.
- 입력 정의
외부에서 조절할 값과 스크립트 내부에서만 쓸 값을 나눕니다. User.Intensity Local.NoiseScale
- 속성 읽기
현재 위치, 속도, 수명처럼 계산의 기준이 될 값을 가져옵니다. Get Particles.Position Get NormalizedAge
- 노드 연산
수학, 조건, 벡터 노드로 원하는 변화를 계산합니다. Multiply Select
- 값 쓰기
계산 결과를 명확한 파티클 속성에 연결합니다. Set Particles.Color Set SpriteSize
- 프리뷰 검증
값 범위, 실행 섹션, 데이터 타입이 의도와 맞는지 확인합니다. Compile Preview + Debug
나이아가라 스크립트는 노드, 매개변수, 네임스페이스, 데이터 타입, Evaluate 흐름을 한 번에 잡으면 그래프를 읽기 쉬워집니다.
기본값이 들어온 것인지, 외부 연결값이 들어온 것인지부터 확인하고 마지막에 어떤 속성을 덮는지 본다.
| 순서 | 읽는 대상 | 문제 신호 | 통과 기준 |
|---|---|---|---|
| 01 Inputs | 모듈 입력과 외부 매개변수 | 기본값만 사용됨 | 노출 이름과 타입이 호출 쪽과 일치 |
| 02 Nodes | 계산 노드와 연결 핀 | 끊긴 핀, 자동 변환, 경고 | 모든 계산 입력이 의도한 값 |
| 03 Namespace | User, System, Emitter, Particle 범위 | 같은 이름의 최종 작성자 혼동 | 값의 소유 범위를 지도처럼 설명 가능 |
| 04 Types | Vector, Float, Bool, Color 타입 | 자동 변환으로 결과가 달라짐 | 컴파일 경고와 오류가 없음 |
| 05 Evaluate | 최종 속성 쓰기 위치 | 아래 모듈이 다시 덮어씀 | 의도한 모듈 이후 Particle 속성이 바뀜 |
스크립트 작업은 입력, 계산, 출력의 경계를 지키는 것이 핵심이므로, 기본 작성 흐름을 점검표로 마무리합니다.
노드 모양을 외우기보다 값이 어느 네임스페이스에서 들어와 어떤 타입으로 계산되고 어디에 쓰이는지 추적한다.
| 구간 | 읽는 대상 | 문제 신호 | 통과 기준 |
|---|---|---|---|
| Inputs 외부 값 | User Parameter와 기본값이 어디서 들어오는지 본다. | 기본값만 들어오면 블루프린트 연결이 끊겼을 수 있다. | 노출 이름과 타입이 호출 쪽과 일치한다. |
| Nodes 계산 단위 | 각 노드가 받은 값과 만든 출력 핀을 따라간다. | 끊긴 핀이나 맞지 않는 타입은 기본값 계산을 만든다. | 계산 입력이 의도한 값으로 모두 연결된다. |
| Namespace 값 범위 | User, System, Emitter, Particles 중 어느 범위인지 구분한다. | 같은 이름을 여러 범위에서 쓰면 최종 작성자를 놓친다. | 값이 지나가는 범위를 지도처럼 표시할 수 있다. |
| Types 핀 타입 | Float, Vector, Bool, Color 타입이 핀 연결과 맞는지 본다. | 자동 변환이나 경고가 있으면 결과가 달라질 수 있다. | 컴파일 경고와 타입 오류가 없다. |
| Evaluate 최종 쓰기 | 최종 출력이 어느 모듈 뒤 파티클 속성에 쓰이는지 본다. | 같은 속성을 여러 모듈이 바꾸면 아래쪽 결과가 이긴다. | Particle 속성이 의도한 모듈 이후에 바뀐다. |