NIKKE를 재밌게 하다가 비슷한 작업이 Unreal에서 가능한지 확인하기 위해 해본 RnD입니다.
제가 알기로 NIKKE는 Spine을 쓰고, Spine은 뼈대에 2D 파츠 이미지를 붙이고 뼈대의 Animation을 통해 동작하는 방식으로 알고 있습니다.
흡시 언리얼 엔진에서 MeshMerge로 각 파츠 Mesh를 하나의 Mesh로 만들고, 안에 Skeletal을 넣은 뒤 Animation이 Skeletal에 동작하는 것과 같이요.
목표는 이와 같이 파츠 별 이미지를 따로 관리하는 것.
그리고 각 애니메이션 작업을 뼈대를 기반으로 하는 것입니다.
RnD 해봤던 플러그인은 총 3개입니다.
PaperZD
알아볼 때 가장 그럴듯해 보이던 플러그인이었습니다.
신규 버전에 대한 지원도 잘 되고 기존 언리얼의 Paper2D 기능을 확장하였기에 가장 기대가 컸습니다.
실제로 UE5 5.3 버전에서 잘 동작 하였습니다만 한가지 문제가 발생했습니다.
Paper가 붙었듯, Flip Book 형식으로 2D Animation이 재생된다는 점이었습니다.
이런 식으로 말이죠.
이 말은 각 프레임마다 이미지가 여러 장이 필요하고, 각 이미지는 대상의 모든 파츠를 다 담고 있어야 한다는 의미입니다.
아님 파츠별로 FlipBook을 따로 만들고 이걸 같은 좌표에 중첩해서 출력하거나.
혹은, PaperZD 기능을 확장하여 각 파츠 이미지에 해당하는 Sprite를 여러개 들고 있으며, 각 프레임마다 그 위치와 각도를 컨트롤 할 수 있는 Custom Paper Flip을 제작하는 것입니다.
앞의 2가지 방법은 코스트가 너무 높아져서 부적합하고, 세번째는 당장은 할 수 없는 작업이라 판단하였습니다.
렌더링 코드를 잘 아는 것도 아니고....
Creature2D Skeletal and Mesh Tool
Creature2D는 조사했을 때 제가 원하는 기능에 가장 근접한 Plugin이었습니다.
퀄리티도 꽤 높아서 기대를 많이 했는데, 지원 버전이 4.24에 멈춰있었습니다.
자체적으로 5.0 지원을 준비 하는 것 같기는 해서 설치 후 빌드 에러를 수정하고 작업하려 했으나,
지원 기능이 많은 만큼 렌더링 코드에서 많은 크래시가 발생하여 RnD를 중지하였습니다.
Spine Plugin
Spine과 같은 기능을 UE5에서 할 수 있는지 알아보다가 "Spine은 UE5에서 못쓰나?"라는 의문으로 시도했습니다.
알아본 결과 상당히 지원이 잘 되어 있는 것을 확인할 수 있었습니다.
https://ko.esotericsoftware.com/spine-ue4
이렇게 주의사항도 문서 갱신이 잘 되어 있기도 하구요.
이 부분만 주의를 한다면 테스트케이스 작업 자체는 매우 간단하게 마무리가 됩니다.
모듈 선언 해주고 값 넣고 세팅만 하면 되더군요.
다만 몇가지 주의할 점이 있습니다.
첫째, Spine 정보를 .skel과 .json 2가지로 전달할 수 있는데 .skel은 인식은 하지만 동작하지 않습니다.
그러니 Unreal Engine 5에서 Spine Plugin을 쓸 때 정보는 .json을 사용하는 편이 좋습니다.
둘째, 위 사진에 언급 한 것처럼 한 Spine에 대한 파일들이 확장자와 무관하게 이름이 모두 달라야 합니다.
조사해보니 5.3으로 올라가면서 json, uasset, spine 등의 이름 구분이 안정적으로 지원되지 않게 되었다고 하네요.
결과적으로 사실상 PaperZD, Creature2D, Spine 중에서는 Spine이 압도적인 승리를 거둔 셈입니다.
그냥 Spine을 쓰면 되니까요.
다만 애로사항도 있습니다.
첫번째로 Spine은 별도의 에디터가 있어서 그 에디터로 작업을 해야 한다는 점.
Unreal Engine은 조립만 해야 합니다.
두번째로, 이 때문에 애니메이션 쪽 작업의 디버깅이 불가하다는 점.
순전히 아트의 작업으로 넘어가게 됩니다.
어떻게 보면 좋은건가?
일단 튜토리얼 문서에 아직 못 본 항목도 있어서 조금 더 봐야 알 것 같습니다.
이름은 좀 다르겠지만 2편이 생기겠네요