포트나이트 챕터 2는 물에 초점을 두고 있으며, 랜드스케이프의 비주얼을 변경하고 맵 이동 방식도 새롭게 개발했습니다. 이와 같은 목표를 염두에 두고 우리는 새로운 물 시스템을 구현했습니다. 그리고 이 새로운 기술을 빌드하면서 나이아가라를 사용할 절호의 기회라고 판단했습니다. 모바일에서부터 최고 사양 PC에 이르기까지 다양한 플랫폼을 즐기는 수백만 명의 플레이어를 위한 최적의 툴 개선 방법입니다. 이 블로그에서는 현재 개발 파이프라인에 나이아가라를 접목하면서 알아낸 정보를 확인할 수 있습니다. 우리가 겪은 시행착오와 문제가 새로운 파티클 툴을 사용하려는 개발자분들께 도움이 되어 순조롭게 시작할 수 있는 계기가 되길 바랍니다.
배운 점
나이아가라에는 이미터 상속(차후 설명 예정)과 프로그래밍이 가능한 워크플로 등 캐스케이드에는 없는 기능이 많고 다양합니다. 하지만 “막강한 힘에는 책임이 따른다’라는 속담이 있듯이 나이아가라 파이프라인을 원활하게 운용하려면 조직화가 절실하다는 사실이 분명해졌습니다. 나이아가라는 캐스케이드보다 훨씬 많은 애셋을 생성하므로 명명 규칙, 파일 구조, 작업 가이드라인이 필요하다고 생각합니다. 아래는 저희가 정한 명명 규칙의 예시입니다.나이아가라 시스템 NS_SystemExample
나이아가라 이미터: FN_EmitterExample
나이아가라 모듈: FN_ModuleExample
나이아가라 다이내믹 인풋: FN_DynamicInputExample
다양한 애셋 유형에 FN_을 사용한 이유가 궁금하실 겁니다. FN_을 사용하면 아티스트들이 툴 내에서 포트나이트 승인 애셋을 쉽게 찾을 수 있습니다. 애셋 목록을 보고 한 눈에 쉽게 이해할 수 있습니다. 이러한 애셋을 콘텐츠 브라우저에서 드래그하지 않고 툴 메뉴를 통해 추가하므로 이미터와 모듈을 구분하기 위해 중복되는 접두어를 추가로 사용할 필요가 없었습니다.
우리가 도입한 또다른 절차는 새로운 이미터와 모듈 생성을 위해 게이트키퍼 역할을 정하는 것입니다. 이펙트 팀의 경우 이펙트 테크니컬 아티스트인 앤드류 멜니처크(Andrew Melnychuk)가 모듈 생성과 매우 복잡한 수학 문제 등을 전담하여 지원했습니다. 앤드류는 포트나이트 팀에서 나이아가라 담당자이기도 합니다. 개발팀에서 한 사람만 새로운 이미터를 생성하거나 다른 아티스트가 각자 새로운 이미터를 빌드하도록 안내하면, 애셋을 절약하고 다수 이미터와 모듈에 거쳐 중복되는 작업을 줄일 수 있습니다. 포트나이트용으로 항상 제작하는 이펙트 유형을 지원하는 기반 이미터를 빌드할 수 있는 여유가 생기기도 했습니다. 일종의 마스터 머티리얼과 같습니다. 게이트키퍼와 같은 담당자를 정하면 새로운 기능을 만들 때 엔지니어에 의존하는 정도를 급격히 줄일 수 있었습니다.
나이아가라는 다양한 방법으로 상속을 지원합니다. 그중 하나는 이미터의 자손을 블루프린트나 머티리얼처럼 만드는 것입니다. 챕터 2 개발 과정에서 힘겨운 리펙터링 작업을 줄이고 개발 시간을 절약할 수 있는 멋진 기능입니다. 모든 무기 이펙트에 디스턴스에 따른 스케일 모듈을 생성하고 싶다고 가정해 봅시다. 부모에게 추가할 수 있으며, 추가하면 모든 자손에도 즉시 추가됩니다. 다른 팀원들이 공유할 수 있는 기본값 이미터를 생성할 수 있는 나이아가라는 아주 유연한 툴입니다. 이미터 구조 구성 방법을 구상하면서 두 가지 생각이 떠올랐습니다. 첫 번째: 광범위하고 일반적인 이미터 몇 개를 빌드하고 이펙트팀이 캐스케이드에서 사용할 만큼 그 이미터를 사용해 작업을 시작합니다. 두 번째: gun_sparks, gun_smoke와 같은 게임 내에서 특정 애셋 유형을 지원하는 특수한 이미터를 빌드합니다. 광범위하고 일반적인 이미터를 사용하는 첫 번째 방식을 적용하면 이론적으로는 애셋이 절약되지만 새로운 이펙트를 빌드할 때마다 아티스트가 처음부터 다시 시작해야 합니다. 반면에 두 번째 방식을 적용하여 특수한 이미터를 빌드하면 아티스트가 아트 디렉션에 맞는 이미터를 추가해 바로 작업을 시작할 수 있습니다. 하지만 파일 양이 많아지고, 창의력을 발휘할 기회가 줄어들며, 상속을 사용할 때의 이점도 누리기 힘듭니다. 그래서 우리 팀은 두 가지 방법을 합쳤습니다. 무기 이펙트는 새로운 총기를 빠르게 제작하도록 돕는 특수 제작 이미터 세트와 워크플로를 개선하고 작업 속도를 높여주는 스카이다이브 트레일(Skydive Trail)을 빌드하는 이미터 세트를 사용합니다. 또한 렌더에 특화된 FN_Mesh, FN_Sprite, FN_Ribbon 등의 일반 이미터 세트도 마련했습니다. 이러한 일반 이미터를 사용하면 캐스케이드에서 새로운 이미터를 추가하던 방식과 유사하게 작업할 수 있습니다. 나이아가라를 계속 사용하면 더 유용한 부모 이미터를 생성할 기회가 많아질 것입니다.
성과
수영! 포트나이트에 새로운 모빌리티 메커니즘을 추가했으며, 이와 관련된 모든 지원 이펙트는 나이아가라에서 제작했습니다. 어마어마한 성과입니다! 포트나이트를 개발할 때, 특히 전혀 새로운 기능과 기술을 도입할 때 안전한 길을 선택해야 하지만 에픽게임즈는 도전을 해봤습니다. 초기 단계부터 캐스케이드로 돌아가지 않고 나이아가라를 계속 사용하는 방법을 선택했습니다. 나이아가라는 아직 개발 중인 툴인 관계로 처음에는 작업 속도가 늦춰지는 경우가 종종 있었습니다. 나이아가라에서 수영 메커니즘을 작업하면서 수많은 버그를 발견하고 툴의 완성도를 높이는 데 필요한 기능을 찾았으며 베타 버전에서 조금씩 벗어날 수 있었습니다. 포트나이트를 작업 자극제로 활용하면서 나이아가라는 더욱더 훌륭한 툴로 거듭났고, 캐스케이드로 이펙트를 개발하는 것보다 선택의 폭이 훨씬 넓어졌습니다. 예를 들면, 나이아가라가 다이내믹 파라미터 제한을 4에서 20으로 올려준 덕에 새로운 물 셰이더가 더욱 강력해졌습니다.또 하나의 성과는 포트나이트의 새로운 탈것인 모터보트입니다. 수영과 관련된 모든 비주얼 요소를 나이아가라에서 제작했으므로 보트도 나이아가라로 만들었습니다. 탈것은 속도, 체력, 부스팅 등 이펙트를 제어하는 변수가 많아서 꽤 복잡한데, 배는 이와 더불어 물 시스템과 함께 움직여야 했습니다. 나이아가라가 최고의 선택이었습니다. 스폰 비헤이비어 등을 제어하는 게임 코드 또는 블루프린트에 전적으로 의존하지 않고 데이터를 적용해 툴 내에서 더 많은 작업을 해냈습니다. 예를 들어 배가 수중에 떠 있을 때 각도와 속도를 읽고 물이 닿는 면에만 물보라가 스폰되는 커스텀 이미터와 모듈을 빌드했습니다. 블루프린트 또는 코드 연계 지원이 없었다면 캐스케이드로 이러한 유형의 스폰 비헤이비어가 가능하지 않았을 것입니다.
포트나이트 챕터 2에서 빛을 발한 것은 물 뿐만이 아닙니다. 챕터 2 개발을 시작하기 몇 개월 전에 포트나이트에서 나이아가라를 일찍 사용해 보았습니다. 가장 먼저 시도한 작업은 기존 스카이다이브 트레일을 캐스케이드에서 나이아가라로 포팅하는 것이었습니다. 챕터 2에서는 나이아가라만 사용해 새로운 스카이다이브 트레일을 처음 만들고 새로운 파티클 툴로만 가능한 작업을 시도할 계획이었습니다. 컨텍스트에서 포트나이트 내 스카이다이브 트레일은 게임을 시작할 때 낙하하는 부분에서 플레이어에 부착된 캐스케이드 시스템입니다. 코드상으로 스폰되며 FX팀은 캐스케이드로 불가능한 작업을 블루프린트에서 작업할 수 있는 접근 권한을 갖고 있지 않습니다. 나이아가라를 사용해 새로운 VFX 시스템 안에서만 플레이어의 입력에 반응하는 최초 스카이다이브 트레일을 구상했습니다. 저희가 구상한 것은 스펙트럼 스카이다이브 트레일입니다. 이 시스템은 플레이어 속도와 각도 등의 데이터와 어트리뷰트를 사용해 색상을 변경하고, 텍스처를 더 빠르게 패닝하고, 머티리얼 안의 다이내믹 파라미터 내 값을 제어해 알파 마스크 안의 텍스처를 더 많이 보여줍니다. 이것이 최초 테스트였으며, 여기서부터 모든 스카이다이브 트레일에 나이아가라만 독점적으로 사용했습니다. 새로운 나이아가라 스카이다이브 트레일은 이미 과거 작업보다 한 발자국 더 앞서 나가는 것이었습니다.
챕터 2 개발 과정에서 이뤄낸 또 다른 성과는 캐스케이드에서의 뷰와 엇비슷한 새로운 시스템 뷰를 만든 것입니다. 캐스케이드의 강점 중 하나는 파티클 시스템 빌드 방법을 한눈에 이해할 수 있는 뷰입니다. 언리얼 엔진을 사용하는 FX 아티스트라면 누구나 알고 있는 공통 언어가 있어 수월하게 애셋을 공유하고 대규모 팀과 작업할 수 있습니다. 지금까지는 나이아가라에 이러한 직관적인 뷰가 없었습니다. 나이아가라 플러그인에서 제공하는 모듈도 캐스케이드 수준에 이르게 되었고, 나이아가라를 처음 사용하는 작업자도 빠르게 적응할 수 있었습니다. 새로운 시스템 뷰에서는 스택 뷰에서 스크롤할 필요가 없어서 나이아가라 작업 속도를 크게 높일 수 있었습니다. 모든 이미터 스택을 끝없이 스크롤하는 대신 집중하고 싶은 모듈을 클릭하기만 하면 됩니다. 이렇게 양쪽의 강점들을 전부 선점하게 되었습니다. 이는 캐스케이드의 빠른 발전, 필요에 따라 전체 그래프 뷰가 보이는 전체 어트리뷰트 및 데이터 기반 파티클 에디터가 결합한 이해하기 쉬운 워크플로를 포함합니다.
초기 실험과 어려운 점
초기 실험은 물 상호작용을 모델링하는 흥미롭고 완전히 절차적인 접근 방법으로 이어졌습니다. 캐릭터의 팔다리와 물 표면의 분석적인 표현 사이의 교차점을 모델링해 물보라를 얼마나 스폰할지, 이동 속도는 어느 정도일지, 위치는 어디가 좋을지를 다이내믹하게 정할 수 있었습니다. 안타깝게도 이 기능은 시간 관계상 챕터2에 적용하지 못했지만 앞으로 어떻게 발전할지 기대하고 있습니다!처음 나이아가라를 도입하고 기존 애셋을 포팅하기 시작했을 때 새로운 이미터와 모듈에 문제가 발생했습니다. 새로운 툴로 아주 복잡하고 역동적인 파이프라인으로 만들려고 노력하는 과정에서 활용하지 못하거나 다시 만들어야 하는 많은 작업을 하게 되었습니다. 물론 초기 실험 단계에서는 앞으로 어떻게 하면 나아갈지 방향을 잡는 데 큰 도움이 되었지만, 기술적으로 처리해야 할 부분들이 많이 발생하고 프로젝트에서 더 이상 필요하지 않은 오래된 이미터와 모듈을 깨끗하게 정리하기 위해 여러 번 작업을 반복해야 했습니다. 결국 새로운 아티스트가 나이아가라를 사용하게 되면서 어떤 이미터를 사용해야 하는지 확신이 서지 않았습니다. 그래서 지원되지 않는 이미터만 남게 되거나 필요하지 않은 이미터를 사용해야 했습니다. 머티리얼 파이프라인에서 자주 발생하는 문제라고 말할 수 있습니다. 프로젝트 조직화가 분명하지 않거나 적절한 명명 규칙이 없으면 콘텐츠 브라우저를 샅샅히 살피면서 어떤 마스터 머티리얼을 사용할지 파악하는 것보다 원하는 기능을 갖춘 새로운 머티리얼을 아예 새로 만드는 것이 훨씬 쉽습니다. 이러한 작업을 통해 팀원 중 한 명을 이미터 게이트키퍼로 정하게 되었습니다. 앤드류와 함께 고민하면서 더 의미 있는 이미터를 선택하고, 개발팀원들이 새로운 툴로 전환할 때 파이프라인 프로세스를 확산시켜 기술적으로 처리해야 할 부분들을 줄이면서 앞으로 나아갔습니다.
나이아가라와 포트나이트의 전망
앞으로는 나이아가라가 캐스케이드 이상의 역량을 발휘할 방법을 찾아주길 기대합니다. 비록 초기 프로시저럴 테스트가 포트나이트에 적용되지 않았지만, 하드웨어 속도가 빨라진다는 점을 고려하면서 개발 시간을 더 투자하면 월드 안에서 완전히 눈에 띄고 역동적인 상호작용을 구현할 수 있습니다. 포트나이트 FX팀에서 항상 추구하는 목표는 FX가 상단에서 컴포짓될 뿐만 아니라 월드에 통합되고 접촉하고 있다는 느낌을 전달하는 것입니다.베타로 출시되지 않은 툴을 사용할 때 수많은 버그와 워크플로 문제에 직면하게 됩니다. 하지만 에픽게임즈에서는 이것이야말로 우리가 빌드하고 있는 툴이 최상위급이며 언리얼 엔진에 의미 있는 기능을 추가하고 있다는 것을 증명하는 유일한 방법입니다. 수많은 툴 개선 요청을 목록으로 정리하고 하나씩 해결하면서 워크플로가 더 빨라지고 많은 작업자가 이미 익숙한 캐스케이드 기능을 뛰어넘도록 개선해 나갈 것입니다.
나이아가라의 강력함과 유연성은 앞으로 기능을 빌드할 때 엔지니어 의존도를 낮추고, 기존에는 불가능하다고 생각했던 일을 자유롭게 할 수 있다는 것을 의미합니다. 나이아가라는 언리얼 엔진 FX의 미래입니다. 포트나이트에 이 툴을 사용해서 보다 안정적이고 빠르고 유연하게 작업할 수 있으며 모든 언리얼 엔진 개발자의 워크플로 속도를 높이기 쉬워집니다. 앞으로 나이아가라에서 어떤 놀라운 것들이 만들어질지 기대가 됩니다.