나이아가라 스크립트 기본 개념
노드·매개변수·네임스페이스·데이터 타입으로 Module Script의 입력과 파티클 속성 계산 흐름을 구성합니다.
지금까지 나이아가라의 구성 요소와 데이터 흐름을 익혔다면, 이제 실제 동작 로직을 설계할 단계입니다.
핵심 도구는 나이아가라 스크립트(Niagara Script)입니다.
이 환경에서는 모듈 내부 동작 정의, 파티클 속성 계산, 복잡한 상호작용 구현을 노드 기반으로 처리할 수 있습니다.
코딩 배경이 적더라도 접근할 수 있도록, 나이아가라 스크립트는 언리얼 엔진의 블루프린트와 유사한 시각적 노드 연결 방식으로 동작합니다.
즉 코드를 직접 작성하는 대신, 논리 흐름을 블록처럼 조립해 파티클의 동작을 제어할 수 있습니다.
나이아가라 스크립트란 무엇인가요?
나이아가라 스크립트는 에디터의 스크립트 에디터(Script Editor) 패널에서 작업하는 비주얼 프로그래밍 공간입니다.
Initialize Particle, Add Velocity, Scale Color 같은 기본 모듈도 내부적으로 이 스크립트 구조로 되어 있으며, 사용자 정의 모듈 역시 같은 공간에서 로직을 직접 구현합니다.
나이아가라 스크립트의 핵심 개념은 데이터 흐름(Data Flow)입니다.
각 노드는 특정 연산(예: 더하기, 곱하기, 벡터 생성, 값 가져오기)을 수행하고, 그 결과를 다음 노드로 전달합니다.
이러한 데이터의 흐름은 파티클의 최종 속성을 계산하는 데 사용됩니다.
나이아가라 스크립트의 주요 구성 요소
스크립트 에디터에서 여러분이 다루게 될 주요 구성 요소들은 다음과 같습니다.
노드 (Nodes)
노드는 스크립트의 가장 기본적인 빌딩 블록입니다.
각 노드는 특정한 기능이나 연산을 수행합니다.
- 입력 핀 (Input Pins): 노드의 왼쪽 또는 상단에 위치하며, 다른 노드로부터 데이터를 받거나 직접 값을 입력받습니다.
- 출력 핀 (Output Pins): 노드의 오른쪽 또는 하단에 위치하며, 노드에서 처리된 결과를 다음 노드로 전달합니다.
- 연결선 (Wires): 노드의 출력 핀과 다른 노드의 입력 핀을 연결하여 데이터의 흐름을 만듭니다.
매개변수 (Parameters)
매개변수는 파티클이 가지고 있는 속성(예: Particles.Color, Particles.Position, Particles.Velocity)이나 시스템/이미터의 속성(System.Age, Emitter.Age)을 나타냅니다.
Map Get: 입력 Parameter Map에서Particles.Color,Particles.Position등의 값을 읽습니다.Map Set: 계산한 값을 속성에 기록한 Parameter Map을 다음 노드에 전달합니다.
네임스페이스 (Namespaces)
나이아가라의 매개변수는 체계적인 관리를 위해 네임스페이스를 사용합니다.
이는 매개변수의 출처나 종류를 명확히 구분하는 데 도움을 줍니다.
주요 네임스페이스는 다음과 같습니다.
Particles.: 개별 파티클의 속성 (예:Particles.Position,Particles.Color,Particles.Lifetime).System.: 나이아가라 시스템 전체의 속성 (예:System.Age,System.LoopCount).Emitter.: 개별 이미터의 속성 (예:Emitter.Age,Emitter.DistanceTraveled).User.: 외부(블루프린트, C++ 등)에서 전달되는 사용자 정의 매개변수 (예:User.MyCustomValue).Engine.: 언리얼 엔진 자체에서 제공하는 매개변수 (예:Engine.DeltaTime).Local.: 스크립트 내부에서 임시로 사용하는 지역 변수.
네임스페이스를 통해 어떤 매개변수가 어떤 스코프(Scope)에서 정의되고 사용되는지 명확히 알 수 있으며, 같은 이름의 매개변수가 다른 스코프에 있을 때 충돌을 방지합니다.
데이터 타입 (Data Types)
각 매개변수와 핀은 특정 데이터 타입을 가집니다.
올바른 데이터 타입끼리만 연결할 수 있습니다.
Float: 소수점을 포함하는 단일 숫자 (예:1.5,3.14).Int: 정수 (예:1,100).Vector2: 2차원 좌표 (X, Y).Vector3: 3개 성분 (X, Y, Z), 속도나 방향에 사용. 위치는 대규모 월드 좌표를 구분하는Position타입을 사용하며 좌표 공간과 변환을 확인합니다.Vector4: 4개 성분 (X, Y, Z, W).Color와Quaternion은 각각 색상과 회전의 의미를 가진 별도 타입이므로 성분 수만 보고 서로 바꾸지 않습니다.Color: 색상 값 (RGBA).Bool: 참/거짓 논리 값.Enum: 열거형, 미리 정의된 목록 중 하나를 선택하는 타입.
스크립트 에디터에서 작업하기
스크립트 에디터 열기: 스택에서 모듈을 선택하면 입력 설정을 볼 수 있습니다. 내부 그래프는 모듈 헤더를 더블 클릭하거나 해당 스크립트 에셋을 열어 확인합니다. 실습 수정은 공유 엔진 모듈 대신 새 Scratch Pad 모듈에서 진행합니다.
노드 추가: 스크립트 에디터의 빈 공간에 마우스 우클릭하면 노드 검색창이 나타납니다.
여기서 원하는 노드를 검색하여 추가할 수 있습니다. (예: Add, Multiply, Sine, Make Vector, Map Get 등)
노드 연결: 노드의 출력 핀을 마우스로 클릭하고 드래그하여 다른 노드의 입력 핀에 연결합니다.
연결선이 나타나며 데이터가 흐르는 것을 시각적으로 보여줍니다.
값 설정: 노드에 직접 값을 입력해야 하는 경우, 해당 노드를 선택하면 디테일 패널에 속성이 나타나 값을 변경할 수 있습니다.
Parameter Map으로 읽기와 쓰기 연결하기
모듈의 기본 연결은 Input Map → Map Set → Output Module입니다. Map Get은 입력 맵에서 필요한 속성을 꺼내고, 연산 노드의 결과를 Map Set의 해당 속성 핀에 연결합니다. 출력 노드는 변경된 맵을 다음 모듈로 넘깁니다.
연결선은 데이터 전달입니다. 왼쪽은 속성 집합인 맵, 오른쪽은 읽어 계산한 값이며 Exec/Do 실행 핀이 아닙니다.
Parameter Map 선은 속성 집합을 전달합니다. Blueprint의 Exec/Do 실행 핀이 아니며, 모든 Niagara 스크립트가 Evaluate라는 시작 노드를 갖는 것도 아닙니다. 모듈이 놓인 Spawn/Update 단계와 스택의 앞뒤 모듈이 어떤 값을 읽고 쓰는지를 함께 확인합니다.
다음 절에서는 이 흐름에 수학 연산을 연결합니다.