▲ 퍼니파우 최재영 CTO

[인벤게임컨퍼런스(IGC) 발표자 소개] 퍼니파우 최재영 CTO는 현재 일본 애니메이션을 원작으로 한 모바일 게임을 개발 중이다. 이번 강연에서는 원작의 감성을 표현하기 위한 퍼니파우가 어떤 시도를 했는지와 그간의 노하우를 설명한다.

게임의 그래픽을 좋게 만드는 방법은 다양하다. 가장 단순하게는 하이 폴리곤을 사용하든가 고해상도 텍스쳐를 사용하면 된다. 여기서 더 나아가면 특별한 쉐이더나 포스트 프로세싱을 통해 그래픽 퀄리티를 끌어올릴 수도 있다. 하드웨어 성능이 허락한다면 진짜 같은 그래픽도 구현할 수 있다.

그렇다면 감성은 어떻게 구현해야 할까? 흔히 IP를 사용한 게임에는 꼬리표처럼 따라다니는 게 있다. 바로 ‘원작 감성’이란 요소다. 이 원작 감성은 단순히 한두 개 요소만으로 이뤄지는 게 아닌 만큼, 개발자들을 고민하게 만든다. 단순히 그래픽이 좋다고, 원작 게임의 시스템을 따온다고 해결되는 게 않기 때문이다.

이번 강연에서 퍼니파우의 최재영 CTO는 이 감성에 대한 이야기에 초점을 맞췄다. 퍼니파우가 생각하는 게임에서의 감성이란 어떤 요소일지와 감성을 녹여내기 위한 그간의 시도 및 노하우를 들어보자.



■ 강연주제: 감성을 위한 개발요소


감성이란 뭘까. 사전적으로 감성이란 이성 또는 오성과 함께 인간의 인식능력, 자극이나 자극의 변화를 느끼는 성질을 뜻한다. 감이 오는가? 감이 올 리가 없다. 최재영 CTO 역시 마찬가지였다고 밝혔다. 뭘 뜻하는지는 알겠으나 이를 게임에 접목하는 건 전혀 다른 얘기였기 때문이다.

하지만 그렇다고 ‘감성’이라는 걸 내칠 순 없었다. 퍼니파우가 개발 중인 신작은 만화를 원작으로 한 게임인 만큼, 원작의 ‘감성’이란 걸 추구해야 했기 때문이다. 많은 고민을 했고 고민 끝에 퍼니파우는 감성을 단순한 사전적 용어가 아닌 개발의 디테일로 해석했다. 즉, 디테일을 살리는 게 감성을 살린다고 본 것이다.

감성이 뭔지 정해지자 다음으로 해야 할 건 쉽게 결정됐다. 디테일을 살리는 작업이었다. 이를 위해 그래픽 생산성을 향상시키고 미적으로 어색한 부분에 대한 시스템적 지원이 들어갔으며, 애니메이션의 특징적인 부분을 구현하고자 했다.

1. 룩앳 시스템
2. 페이셜 애니메이션
3. 아이브로우 렌더링
4. 포스트 이펙트
5. Behavior Tree System(BTS)


룩앳 시스템은 간단히 말해서 NPC가 특정 대상을 바라보는 애니메이션으로 가장 기본적인 인터렉션이다. 기존에도 룩앳 시스템은 들어가 있었지만 자연스럽진 않았다. 본 애니메이션(Born Animation)에 머리의 회전이 포함된 상태였기 때문이다. 또한, 생산성과 재사용성도 부족했다.

결국 본 애니메이션 시스템과 분리된 상태에서 어떠한 모션에서도 자연스러운 동작을 보장하는 애니메이션을 만들어야 했다. 그리고 재사용성과 생산성 역시 향상시킬 필요가 있었다.

새로운 룩앳 시스템의 구현 자체는 간단했다. Bip01 Neck에 특정 방향벡터를 링크하면 해당 벡터를 타겟으로 정해 회전하도록 하면 됐다. 또한, 기존 애니메이션과 자연스럽게 연결되도록 연산 후 동작하게 하였다.

다만, 고려해야 할 사항도 있었다. 바로 고개가 돌아가는 각도의 제한이었다. 너무 많이 돌면 어색하기에 퍼니파우에서는 캐릭터를 중심으로 좌우 90도로만 회전할 수 있도록 했다. 이렇게 새로운 룩앳 시스템이 만들어지자 캐릭터가 전보다 더 자연스럽게 고개가 돌아가는 걸 확인할 수 있었다.


하지만 완벽하진 않았다. 크게 세 개의 문제가 발생했다. 첫 번째는 고개를 숙이고 있는 캐릭터의 시선이었다. 고개를 숙이고 있기에 룩앳 시스템을 적용하니 화난 듯한 표정이 된 것이다. 이 부분은 기존에 링크하던 벡터 위치를 올리는 식으로 해결할 수 있었다.

다음은 비스듬하게 서 있는 모션에서 발생한 문제였다. 캐릭터를 중심으로 고개를 회전시켰는데 비스듬하게 서 있으면 고개가 어깨를 넘어가는 상황이 발생해 기괴함을 느끼게 했다. 테스트 끝에 고개가 돌아가는 기준을 캐릭터가 아닌 어깨선을 중심으로 정하자 이 문제가 해결됐다.

마지막 세 번째는 바로 자연스럽지 못한 움직임이었다. 비록 전보단 나아졌지만, 여전히 어색했다. 그래서 실제로 어떻게 해야 더 자연스러울지 많은 모션을 참고한 끝에 머리, 목, 어깨, 가슴 순으로 몸이 회전하면서 고개가 돌아간다는 걸 알 수 있었다. 이를 애니메이션에 적용하다 비로소 자연스러운 애니메이션을 만들 수 있었다.

아울러 여기에 자연스러움을 더하기 위해 캐릭터마다 고개가 돌아가는데 제한을 뒀다. 이를테면 중후한 아저씨는 몸이 별로 돌아가지 않는 데 반해 여자 캐릭터는 허리가 좀 더 돌아가도록 하는 식으로 캐릭터마다 개성을 더했다.

그런데 이 문제들을 해결하자 다른 문제가 생겨났다. 2번째와 3번째 요소에 중첩이 일어나 머리가 계속 움직이는 상황이 발생했다. 어깨선을 기준으로 한 게 문제가 된 거였다. 이 부분은 테스트 끝에 기준점을 어깨선에서 골반으로 잡는 식으로 해결할 수 있었다.

완성된 룩앳 시스템, 자연스럽게 고개가 돌아가는 걸 볼 수 있다


퍼니파우는 룩앳 시스템 다음으로 페이셜 애니메이션에 착수했다. 페이셜 애니메이션은 표정을 만드는 작업인데 이 역시 본 애니메이션에 포함된 상태였다. 하지만 보디 모션에 페이셜이 포함된 구조로 다양하지 못한 표정과 유연하지 못한 구조가 단점으로 작용했다. 덕분에 생산성은 물론이고 퀄리티 모두 불만족스러웠다고 최재영 CTO는 설명했다.

수정된 페이셜 애니메이션의 목표는 블렌드 샤프(Blend Shape) 방식을 사용해 생동감 있는 페이셜을 구현하는 거였다. 이를 통해 눈, 코, 입, 눈썹 별로 샤프 데이터(Shape 데이터)를 각각 제작해 페이셜 애니메이션을 실시간으로 생산할 수 있도록 함으로써 생산성을 늘리는 동시에 다양한 표정을 만들 수 있도록 했다.

그 결과 6개의 기본 감정(희, 노, 애, 락, 기본표정, 알파) X 2개의 감정 단계(감정의 강약) X 말하는 것과 단순 표정을 추가함으로써 최소 24개의 페이셜 애니메이션을 만들 수 있었다.


하지만 페이셜 애니메이션도 완벽하진 않았다. 가장 큰 문제로는 얼굴의 음영이 이상하게 표현되는 현상이 발생한 거였다. 특히 코와 입 주변의 음영이 심했는데 원래대로라면 당연히 있어야 했지만, 애니메이션들은 대부분 이 음영이 없었다. 즉, 애니메이션과 실제 게임 캐릭터의 모습에서 괴리가 생긴 거였다. 이 문제를 해결하기 위해 특정 코드를 넣어서 버텍스 컬러를 이용해 버텍스 노멀을 얼굴의 경사면과 거의 동일하게 표현하도록 했다.

▲ 눈썹은 단순한 털이 아닌, 감정을 표현하는 창구인 셈이다

아이브로우 렌더링은 특히 중요한 요소였다. 최재영 CTO는 “룩앳 시스템을 완성하고 페이셜 애니메이션을 추가했는데도 불구하고 여전히 뭔가 어설펐다”며, 그 이유가 뭔지 한참을 애니메이션을 보면서 찾았다고 고백했다. 그리고 그 결과 부족한 걸 찾을 수 있었다. 바로, 눈썹이었다. 일본 애니메이션을 보면 대부분이 눈썹이 드러나도록 캐릭터를 디자인한다. 간혹 머리카락이 길어서 눈썹을 가린다고 해도 눈썹이 튀어나오도록 표현한다. 이유는 단순하다. 눈썹을 통해 표정을 만들고 이를 통해 감정을 표현할 수 있기 때문이다.

이를 게임에 적용하는 건 간단했다. 깊이 테스트(Depth Test)를 뒤집도록 한 거였다. 원래라면 카메라와 거리가 먼 것부터 렌더링하는데 중간에 눈썹을 먼저 렌더링하도록 수정했다. 여기서 살짝 문제가 발생해 캐릭터 눈썹이 나뭇잎을 뚫는 증상이 나오기도 했지만, 이 부분은 캐릭터를 먼저 렌더링하고 배경을 렌더링하도록 함으로써 해결할 수 있었다.


이렇게 감성을 살리는 작업을 마무리한 후에는 포스트이펙트를 만들었다. 포스트이펙트는 이미 여러 게임에서도 많이 쓰는 기법으로 다양한 필터를 통해 게임의 전반적인 퀄리티를 향상하는 작업이다. 퍼니파우가 개발 중인 신작에는 영화 같은 연출을 위해 색수차 필터와 스크래치 필름 필터 등이 사용됐는데 이런 필터들을 디자이너들이 자유롭게 쓸 수 있게 하려고 우버 쉐이더를 이용했다.

지금까지가 외형적으로 감성을 추구하는 작업이었다면 Behavior Tree System(BTS)는 내적으로 게임의 디테일, 재미를 향상하는 작업이 됐다. BTS는 코드의 재사용성과 유연성을 향상시켜 생산성을 높이는 작업으로 빠른 대응과 피드백이 가능하다. 하지만 준비해야 할 것도 많았다. 기획 및 개발 팀의 BTS를 교육하고 올바른 설계 방향성과 지속적인 점검이 필요했다.

지금까지가 외형적으로 감성을 추구하는 작업이었다면 Behavior Tree System(BTS)는 내적으로 게임의 디테일, 재미를 향상시키는 작업이 됐다. BTS는 코드의 재사용성과 유연성을 향상시켜 생산성을 높이는 작업으로 빠른 대응과 피드백이 가능하다. 하지만 준비해야 할 것도 많았다. 기획 및 개발 팀의 BTS를 교육하고 올바른 설계 방향성과 지속적인 점검이 필요했다.

아마 BTS가 생소할 수 있는데 BTS는 컴포지트, 컨디션, 액션, 데코레이터 4가지 노드가 계층적으로 연결돼 if, else 및 switch, case 시각적으로 구현한 모델링 방식이다. 각각의 조건에 따라 동작하는데 가장 큰 장점으로는 기존 코드의 수정 없이 기능을 개선하고 추가 및 복구가 가능해 생산성을 크게 향상시킬 수 있었다.


끝으로 최재영 CTO는 “소개한 것들 외에도 눈동자, 입, 귀 등의 움직임을 넣는 등 원작의 감성을 끌어올리기 위해 노력했다”며, “만약 여러분이 만드는 게임에 감성이 느껴지지 않는다면 오늘 이 강연을 참고하면 좋을 것 같다”고 전하며 강연을 끝마쳤다.