Unity 검색

TUNIC 제작 이야기: 다재다능한 스크롤링 텍스처

2022년 5월 26일 게임 | 14 분 소요
Cartoon fox, in a forest holding a sword and shield
Cartoon fox, in a forest holding a sword and shield
공유

Is this article helpful for you?

Thank you for your feedback!

GDC에서 Twitch를 통해 ISOMETRICORP Games의 인디 크리에이터 Andrew Shouldice와 그가 만든 액션 어드벤처 게임의 제작 과정에 대해 이야기를 나누었습니다.

TUNIC은 주인공인 작은 여우가 몬스터를 무찌르고 드넓은 세계에 숨겨진 비밀과 보물을 찾아가는 여정을 그린 탐험과 모험이 가득한 게임으로, 젤다의 전설다크 소울 같은 대작에서 영감을 얻어 탄생한 독창적인 작품입니다. 현재 메타크리틱(Metacritic)에서 85점을 굳건히 지키고 있는 TUNIC은 '어드벤처 및 탐험 장르의 명작'이라는 평가를 받았습니다.

리드 개발자인 Andrew Shouldice는 Twitch에서 유니티의 Hasan Al Salman, Unity Insider인 Joyce Plokker(@MinionsArt)와 함께 2015년부터 작업해 온 프로젝트를 소개했습니다. 이번 포스팅은 GDC 세션에서 소개되지 않은 여러 인사이트를 포함하고 있으며, 포스팅의 최하단에서 크리에이터 스포트라이트 스트리밍 풀버전을 시청할 수 있습니다.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

환경적 스토리텔링

Shouldice는 "고전 게임이 주는 경외감이나 모험적 요소를 좋아합니다"라고 말하며 "고전 게임은 비밀을 잔뜩 담고 있지만 매뉴얼에 적혀 있는 것 외에는 아무것도 알려주지 않죠. 하지만 매뉴얼과 게임 카트리지는 별개의 것입니다"라고 덧붙입니다. 

Shouldice는 TUNIC의 신비로운 분위기를 강조하기 위해 친근하게 플레이어를 안내합니다. 이 게임은 안내 매뉴얼처럼 향수를 불러일으키는 요소를 더해 장황한 대화 대신 게임 플레이 중에 이벤트를 통해 스토리를 전달하는 환경적인 스토리텔링을 사용했습니다.

TUNIC은 요즘에는 보기 어려워진 고전적인 안내 매뉴얼을 게임 속에 구현해 수집품으로 발견하도록 제작했습니다. 플레이어는 매뉴얼에 적힌 수수께끼 같은 글을 해독하고 모든 사항을 종합하여 유용한 팁, 지도, 적에 대한 설명, 숨겨진 다른 보물을 찾을 단서 등을 얻을 수 있습니다.

"비밀을 찾은 보상으로 업그레이드를 하거나 재화를 얻을 수도 있지만 진정한 보물은 바로 호기심입니다. 이 문 뒤에는 무엇이 있을까? 강 저편에는 어떤 세계가 펼쳐질까? 바로 이런 호기심을 자극하고 싶었습니다."

젤다의 링크나 다크 소울의 선택 받은 불사자처럼 TUNIC의 주인공은 말수가 적고 예측할 수 없는 존재입니다. 대부분의 게임 내 텍스트와 대화는 해독하기 어려운 상형 문자로 쓰여 있으며, 이로 인해 플레이어는 낯선 세계에 빠져드는 느낌을 받게 됩니다. 대신 플레이어는 자신의 직관과 상황 속 힌트를 통해 무슨 일이 일어나는지 파악해야 합니다. 이처럼 새로운 방식의 스토리텔링은 TUNIC의 내러티브와 세계관 을 돋보이게 합니다.

그래픽스와 원근

TUNIC의 세계는 밝은 폴리곤 그래픽스로 렌더링되었으며 기본적으로 아이소메트릭 방식을 채택합니다. 게임 초기 버전에는 완전히 평평한 텍스처를 가진 블록이나 종이접기 형태로 된 모델을 사용했습니다. Shouldice에 의하면 당시 본인의 모델링 기술이 반영된 것이라고 합니다. 모델링 실력이 늘면서 전반적인 그래픽스도 향상되었습니다. 기존의 '로우폴리' 감성을 충실히 유지하면서 원래 의도했던 폐허가 된 세계에 걸맞은 디테일이 더욱 살아나게 된 겁니다.

게임 디자인의 측면에서 보면 직교 원근법이 바로 TUNIC의 수많은 비밀을 숨기는 핵심입니다. "직교 카메라를 정석으로 사용할 경우 축소되는 요소가 없으므로 지오메트리가 까다롭지 않습니다. 여기에는 특별한 작업이 필요 없죠. 그러나 아이소메트릭 직교 투영을 사용하면 수직선이 항상 서로 평행을 이루고 있어서 아이템을 쉽게 숨길 수 있습니다."

Shouldice는 “게임 초반에 나오는 폭포 뒤에는 미끄러져 통과할 수 있는 숨겨진 통로가 있습니다. 어떤 종류든 시야각을 가진 원근 카메라를 사용하면 이 통로가 있다는 걸 바로 알아채게 됩니다. 주변을 움직이는 오브젝트가 보이고 원근감이 바뀌면 비밀도 드러나게 됩니다"라고 덧붙입니다.

하지만 직교 카메라를 사용하면 원근 문제가 발생했으며, 크기나 깊이에 관한 감각을 만들어 내기 위해 이 문제를 극복해야 했습니다. "절벽 끝에서 보는 거대한 숲과 같이 아주 멀리 있는 무언가를 보여주는 등 웅장한 씬을 만들려면 몇 가지 눈속임을 사용할 수 있습니다. 저는 카메라 스태킹을 사용했습니다. 직교 프리즘(병렬 절두체)의 끝부분에 멀리 있는 오브젝트를 포함한 실제 원근 절두체를 붙이면 됩니다."

조명과 셰이더

최적의 성능을 위해 Shouldice는 동적 조명전역 조명(GI)TUNIC에 사용했으며, 조명 개수를 매우 신중하게 고려했습니다. "디퍼드 렌더링이 직교 카메라에서는 지원되지 않기 때문에 조명 개수에 신경 써야 했습니다. 점 광원(Point light) 대신 사전에 계산된 GI를 사용해 조명을 확보했으며, 배칭을 사용해 드로우 콜을 적게 유지했습니다."

전에는 셰이더를 직접 썼지만 TUNIC에는 Shader Forge의 노드 기반 셰이더를 사용하기로 했습니다. Shouldice는 "코드를 직접 작성할 수 있기는 하지만 개인적으로 시각적인 정보를 더 잘 받아들이는 편이라 실시간으로 미리 보기를 통해 공간 구조를 파악할 수 있어서 아주 좋았습니다. 노드 에디터는 머릿속에 있는 내용을 정말 훌륭한 방식으로 구현해 주었습니다. 정말 유연하고 재미있었죠"라고 이야기합니다.

Shouldice는 게임 세계의 요소를 밝히는 데 스크롤링 텍스처를 폭넓게 사용했으며, 이로 인해 작업의 복잡도를 크게 줄이면서 근사하고 성능도 뛰어난 결과를 얻을 수 있었습니다.

게임 초반에 TUNIC의 주인공은 만지면 빛의 파장을 뿜어내는 조각상과 상호 작용하여 금빛 문을 엽니다. Shouldice는 Unity 에디터와 Shader Forge의 몇 가지 컴포넌트를 사용해 이러한 효과를 냈습니다.

'스타버스트'라고 알려진 빛의 시작점은 세 가지 애니메이션 메시에서 비롯되며, 각 메시는 약간씩 어긋나며 회전합니다. 도넛 모양의 '아우라 링'이 메시를 둘러싸고 있으며, 평평한 실린더를 따라 스크롤링 UV 텍스처를 투사하여 텍스처가 바깥쪽으로 스크롤되며 방사형 광채를 내도록 만들었습니다. 이 효과를 위해 UV 좌표를 스크롤하고 확대시킨 다음 마지막에 반전해 광채의 흑백 효과를 만들어냈습니다.

서로 다른 메시에 스크롤링 텍스처를 적용하여 광채의 움직임을 변경할 수 있었습니다. 또 다른 예로는 텍스처를 좁은 고깔 모양의 메시로 이동시켜 마법 에너지를 하늘 위로 모으는 효과를 만들어냈습니다.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

Shouldice는 위와 같은 응용 사례에 대해 다음과 같이 설명합니다. "구체적으로 작성된 메시에 기본 효과를 적용하는 해당 기법에서 특히 마음에 드는 점 중 하나는 UV 좌표 같은 것을 조정해 동일한 머티리얼이 다르게 움직이도록 만들 수 있다는 점입니다. 이 경우에도 에너지를 모아 하늘로 솟구치도록 만들기 위해 메시에서 UV를 가까이 가져오거나 멀어지게 했습니다."

또 다른 효과로는 에너지를 한 점에 모아서 조각상에 쏘기 전에 에너지 패턴을 따라가는 빛의 입자가 있습니다. 이는 파티클 효과 또는 베지어 곡선(Bézier curve)을 사용해 얻을 수 있지만 Shouldice는 자신에게 질문을 던지며 옛날 방식으로 돌아가는 것을 선택했습니다. "여기에서 텍스처를 스크롤한다면 어떨까?"

이 사례에서 빛의 궤적은 뒤틀리거나 회전, 왜곡 또는 복제되기 전에 원래 Blender에서 작성되고 UV 처리된 긴 튜브입니다. 튜브마다 표면에 UV가 적용되어 있기 때문에 여기에 부드러운 그래디언트와 색상이 들어간 텍스처를 스크롤하고 후처리와 '화려한 블룸'을 마지막에 적용해 불완전한 부분을 가릴 수 있습니다.

Shouldice는 에너지 볼이 상상했던 것처럼 백열로 표현될 수 있도록 색상을 신중하게 선택했습니다. "사실 아주 높은 채도를 의도했지만 다른 채널도 존재를 드러낼 수 있도록 포화도를 조금 끌어내렸습니다. 단순히 파란색, 빨간색 또는 초록색을 선택하는 것이 아니라, 보조 색상을 선택하고 끌어내려서 휠 반대편에 있는 색상이 약간 반영되도록 해야 합니다. 그러면 HDR에서는 색이 날아가서 흰색이 됩니다."

캐릭터 컨트롤, 전투, 애니메이션

Shouldice 는 Unity의 NavMesh 시스템이 적과 플레이어 캐릭터 모두의 행동에 영향을 주도록 했습니다. 기본적으로 적에게 NavMesh 에이전트를 적용하면 적이 특정 타겟으로 안내됩니다. NavMesh는 적의 이동 방향을 알려주고, 몬스터 리지드바디가 적절하게 충돌할 수 있도록 물리 시스템과 커뮤니케이션하며, 루트 모션 기반 동작을 구동합니다.

Shouldice도 NavMesh 에이전트를 비슷하게 사용하여 게임 세상의 경계를 만들었습니다. 플레이어 캐릭터가 NavMesh를 벗어나지 않도록 NavMesh 에이전트를 활용하여 이동 방향을 정한 후 파라미터를 통해 애니메이션 컨트롤러에 이 정보를 제공했습니다.

적의 방향은 TUNIC의 게임플레이에서 중요한 부분이었는데, 여기에는 다크 소울의 애니메이션 기반 전투 스타일을 사용했습니다. TUNIC의 애니메이션 중 많은 부분이 Blender에서 생성된 다음 Unity에서 보완되었으며 여기에는 애니메이션 커브가 사용되었습니다. Shouldice는 적이 전투 중에 플레이어를 마주하게 되는 부분이나 캐릭터 모델의 특정 부분과 연결되는 히트 박스 같은 것을 세밀하게 조정할 수 있기를 바랐습니다. "검을 휘두르는 데 적에게 맞지 않는다면 적을 맞추지 못한 것입니다."

이런 접근 덕분에 적이 서로를 때리도록 속이는 방식같이 좀 더 정교한 전투 매커니즘과 능숙하게 적과 일정 거리를 유지하거나 공격을 피하고 타겟팅하는 기술 등이 필요한 보스전이 가능해집니다.

Shouldice는 적과 보스가 플레이어의 물리적 위치에 반응하는 방식을 임의화하는 델리게이트 시스템까지 만들었습니다. 일례로 보스 뒤로 가면 보스가 부하들을 만들어 내거나 불을 뿜거나 왼쪽 또는 오른쪽 발톱을 거칠게 휘두르는 등 사용할 수 있는 여러 메커니즘 중 하나를 트리거할 수 있습니다.

보스 동작 코드 스니핏은 다음과 같습니다.

                                         if (far) { // FOX OUT OF MELEE RANGE Mathx.Choose( delegate { cachedAnimator.SetTrigger("ACT_freem"); }, delegate { cachedAnimator.SetTrigger("ACT_deployAdds"); }, delegate { StartCoroutine(gunSequence()); }, delegate{ cachedAnimator.SetTrigger("ACT_advancingSwipe"); }, delegate{ cachedAnimator.SetTrigger("ACT_missiles"); }.); }

Mathx.Choose를 구현하면 다음과 같습니다.

    internal static void Choose(params System.Action[] paramList) { paramList[Random.Range(0, paramList.Length)] (); }

플레이 테스트와 QA로 다듬기

훌륭한 게임을 개발하려면 플레이어의 피드백은 필수입니다. 1인 개발이라도 마찬가지입니다. Shouldice는 플레이 테스트와 피드백을 위해 다양한 방법을 물색했습니다. 적극적으로 참여하며 키운 그룹인 Halifax 게임 개발 커뮤니티의 동료들에게 자문을 구했으며, Stugan 액셀러레이터 프로그램에 참여하여 스웨덴의 한 오두막집에서 다른 개발자들과 두 달을 함께 지내기도 했습니다.

Shouldice의 퍼블리셔인 Finji는 QA 테스트 지원뿐 아니라 아이디어에 관한 조언을 제공하며 이 프로젝트를 잘 다듬어진 게임으로 만드는 데 중요한 역할을 도맡아 했습니다. "절대 단순히 게임을 퍼블리싱하기만 했다고 할 수 없습니다. 플레이어를 직접 관찰하거나 플레이 내용을 녹화하는 등 예전 방식의 플레이 테스트를 수행했는데, 특히 Finji의 QA 팀이 정말 잘해주었습니다."

다른 사람의 플레이를 지켜보고 Finji QA 팀과 협업한 덕분에 Shouldice는 플레이어가 게임 진행에 어려움을 겪거나 혼란스러워하지 않고 TUNIC을 통한 추억 여행에 푹 빠져들 수 있도록 게임의 탐험적 측면을 보다 정교하게 다듬을 수 있었습니다. 반응은 매우 긍정적이었습니다. "사용자들이 '다시 어린 시절로 돌아간 기분이었다'는 내용의 이메일을 보낼 때마다 해냈다는 느낌이 들어요. 저에겐 마법 같은 일이에요. 이 게임을 통해 사람들에게 전하고 싶은 감정이 어떤 것인지 종이에 끄적이던 게 7년 전인데, 그게 결국 비트로 구현되고, 바이너리로 컴파일되고, 사람들의 감성적인 반응을 이끌어냈으니까요. 기적처럼 느껴지죠."

인디 혁신가에게 전하는 조언

TUNIC이 세상 밖으로 나온 지금, 다음 계획에 대한 질문에 Shouldice는 다음과 같이 답했습니다.

"일부러 다음 프로젝트에 대해서 생각하지 않았어요. 집중해야죠. 아마도 약간의 휴식을 취하지 않을까 싶네요. 게임을 만든다면 소규모에 상업적이지도 않고, 무언가 단어를 가지고 하는 게임일 것 같아요."

대화를 마무리하며 Shouldice는 독창적인 게임을 만들고자 하는 인디 개발자들에게 영감을 주는 조언을 전달했습니다. "당장 만들어보세요. 그리고 사람들에게 플레이하라고 해보고요. 퀄리티가 떨어지는 게임을 빨리, 또 많이 만들어 보세요! 구상해둔 게임 아이디어 중에 처음 100개 정도는 정말 별로일 거예요. 일단 만들어 보고 피드백을 받은 다음 그것들을 반영해서 수정하세요."

TUNIC데스크톱(PC 및 MacOS)과 Xbox 시리즈 X|S, Xbox One, Xbox Game Pass Ultimate에서 플레이할 수 있습니다. 더 많은 소식과 개발자 팁을 얻으려면 Twitter에서 Andrew Shouldice(@Dicey)와 @TunicGame을 팔로우하고 아래에서 크리에이터 스트림 전체 영상을 확인해 보세요.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

2022년 5월 26일 게임 | 14 분 소요

Is this article helpful for you?

Thank you for your feedback!