인디 개발자 사이먼 쿠바슈와 루카 스카라무치노는 GDC에서 유니티 크리에이터 스포트라이트 세션에 참석하여, 미끌미끌한 촉수가 등장하는 VR 샌드박스 게임의 제작 과정 중 반복 작업이 많은 디자인 프로세스에 대해 이야기를 나눴습니다.
고질라에서 킹콩까지, 괴수(기괴한 야수)는 모든 것을 파괴하고 아수라장으로 만드는 사악한 괴물로 표현되어 왔습니다. 그런데 예상과 달리 Firepunchd의 새로운 VR 게임인 Tentacular 에서는 혼란을 일으키기는 하지만 따스한 마음을 가진 크라켄 괴수가 우리의 주인공으로 등장합니다. 플레이어는 괴수의 촉수를 조종하여 섬마을을 위한 건설 프로젝트를 진행하면서 흥미롭고 예측할 수 없는 결과를 마주하게 됩니다.
Firepunchd의 사이먼 쿠바슈와 루카 스카라무치노는 Twitch로 방송된 GDC 2022 세션에서 유니티의 하산 알 살만, 칼 오브라이언과 Unity Insider 저스틴 P 바넷과 함께 디자인 반복 작업부터 최적화까지 Tentacular의 개발 과정에서 겪었던 모든 비하인드 스토리를 풀었습니다. 세션 주요 내용을 읽어 보고, 게임 출시 후 어떤 일이 있었는지 알아보세요. 스크롤을 끝까지 내려 블로그 하단의 크리에이터 스포트라이트 영상도 풀 버전으로 시청해 보세요.
VR 게임 잼으로 시작된 게임
Tentacular는 실험에 대한 게임이며, 그 자체로도 어느 정도 실험이라고 할 수 있습니다. 여러 게임 잼을 반복하며 발전한 독특한 프로젝트입니다. 쿠바슈와 스카라무치노는 긴밀한 유대 관계가 형성되어 있는 베를린의 게임 개발 커뮤니티를 통해 친분을 쌓았고(Tinytouchtales와 Studio Fizbin도 해당 커뮤니티에 속해 있음), 현재 베를린 최초의 인디 공동 사업체인 Saftladen의 핵심 멤버로 활동하고 있습니다.
2015년, Firepunchd는 Tentacular의 기반이 될 프로토타입을 함께 제작했습니다. Hatchlings라는 이 게임은 곤충처럼 생긴 생물체가 집게를 사용해 계란을 두고 경쟁하는 8인 로컬 협동 게임입니다. 로컬 협동 게임을 판매하기 어렵다는 점을 인지하고 있었음에도 Firepunchd에서는 게임의 잠재력을 보고 아이디어를 계속 발전시켰고, 초기 HTC VIVE Dev Kit를 비롯해 커뮤니티에서 귀중한 의견과 리소스를 받았습니다.
쿠바슈는 "개발 초기에는 Saftladen에 연락하여 퍼블리셔와 연결해 줄 사람이 있는지, 예산과 비즈니스 계획을 도와줄 수 있는지 문의했어요"라며, "모두가 엄청나게 큰 도움이 되었습니다"라고 말했습니다.
스카라무치노는 "베를린에는 정말 유능하고 뛰어난 게임 개발 커뮤니티가 있습니다. 필요한 규모의 팀에서 일하는 개발자에게 연락하여 도움과 조언을 받을 수 있죠"라고 덧붙였습니다.
스토리텔링 및 게임플레이
Firepunchd는 촉수가 등장하는 VR 게임을 만들고 싶었으나, 게임 내러티브와 기술적인 면을 모두 고려했을 때 적합한 관점을 찾기가 흥미로우면서도 어려운 문제였습니다. 처음에는 괴물이 노점을 운영하며 배고픈 섬 주민들에게 작은 핫도그를 만들어 파는 게임을 만들려고 했지만, 부동 소수점 오류가 문제였습니다. Medienboard Berlin Brandenburg에서 성황리에 발표한 적이 있는 또 다른 아이디어는 Life, Love, and Tentacles라는 괴수 연애 시뮬레이션이었지만, 범위 문제로 인해 더는 발전시키지 않기로 했습니다.
게임플레이를 더 다듬는 과정에서 Tentacular의 내러티브에 초점이 맞춰졌습니다. 초기에는 게임의 시점이 톱다운 뷰였지만, Firepunchd는 눈높이에서 볼 때 월드가 훨씬 아름다워 보인다는 것을 발견했습니다. 그래서 괴물을 바다로 옮기기로 했으며, 따라서 괴물이 항상 허리 깊이의 물속에 있어야 한다는 설정에 대한 타당한 이유를 제시해야 했습니다. 아니, 제 바지는요?(My Pants, WTF?)라는 우스운 이름이 붙은 첫 번째 아이디어는 괴물이 바지를 도난당해서 수줍은 괴물이 물속에 숨어 있다는 설정이었습니다.
Firepunchd는 파괴적인 게임플레이와 건설적인 게임플레이가 결합된 초기 Tentacular 프로토타입의 플레이 테스트를 보면서 완벽한 스토리라인을 정립했습니다. 개발 팀은 환경을 부수는 플레이가 재미있지만, 괴물의 촉수를 서툴게 사용해서 건물을 짓는 것이 훨씬 매력적인 경험이라는 점에 착안했습니다. 또한 물 밖으로 나온 물고기처럼 느껴지는 경험이 큰 역할을 했습니다. 개발 팀은 매우 작은 인간들의 세상에 맞추기 위해 어설프게나마 노력하는 괴물의 스토리에서 잠재력을 발견했고, 이 부분에 집중하여 성공의 실마리를 잡아 냈습니다. Tentacular는 Firepunchd가 GDC에서 유니티와 함께 이야기를 나눈 다음 날 출시되었고, 매우 긍정적인 반응을 얻었습니다. 이 게임은 현재 Metacritic에서 80점을 기록하고 있습니다.
스카라무치노는 다음과 같이 말합니다. "특별한 관점이 요구되는 게임이기 때문에 플레이어의 반응이 안 좋을까 조금 걱정했습니다. 하지만 반응이 매우 좋았죠."
쿠바슈 역시 "플레이어가 무엇을 해야 할지, 어디로 가야 할지 모를까 걱정했어요. 하지만 Tentacular가 어떤 게임인지 이해하고, 좌절과 재미를 동시에 느끼며 즐기는 것 같습니다"라고 덧붙였습니다.
VR 콘텐츠의 몰입감 구현
촉수
촉수는 Tentacular 게임플레이의 핵심이며, 플레이어가 게임에 계속 몰입하도록 하려면 반드시 촉수의 느낌을 제대로 구현해야만 했습니다. 두 촉수에는 무게와 강성도의 기본값이 설정되어 있습니다. 무거운 물체를 들면 촉수가 중력에 의해 구부러져야 하고, 대미지를 입히는 물체를 만지면 괴물이 다치고 촉수가 퍼덕여야 합니다. 초기에는 반복 작업 시 빌트인 조인트와 리지드바디를 함께 사용하여 촉수의 애니메이션 작업을 진행했습니다. 촉수의 움직임을 제어하는 것은 시행착오와 프로파일링의 균형을 맞추는 까다로운 작업이므로 개발 과정에서 가장 많은 시간이 드는 프로세스입니다.
쿠바슈는 이야기합니다. "처음에는 촉수가 아주 무거웠어요. 초기 프로토타입부터 실제 게임 출시까지 전체 재작업을 세 번이나 진행했죠. 전반적으로 촉수의 움직임뿐만 아니라 100단위부터 50,000단위까지 질량이 정말 다양한 오브젝트와의 물리 상호 작용을 구현하는 것도 문제였습니다. 이러한 오브젝트를 상대로 움직이는 촉수는 관통이 발생할 수도 있고 물리 계산이 폭발적으로 증가할 수 있죠."
또한 스카라무치노는 "조인트가 제대로 움직이도록 하기 위해 정말 많은 노력을 했습니다. 첫 시도는 완전히 실패했죠"라고 덧붙였습니다. 촉수가 떨어져 나가거나, 떨리거나, 심지어 폭발할 수도 있었습니다. 구성 가능한 조인트 설정을 찾는 데도 시간이 걸렸지만, 처음으로 안정적인 설정을 적용했을 때조차도 문제가 발생했습니다. 촉수가 뒤쪽에서 서로 닿을 정도로 너무 길었습니다. 스카라무치노는 웃으며 이야기합니다. "플레이어가 그냥 돌아다니기만 해도 전체 플레이 영역을 파괴할 정도였죠."
다음으로 Firepunchd는 훨씬 효율적인 떠다니는 촉수를 사용해 봤지만, 스탠드얼론 VR 지원을 추가했을 때 문제가 발생했습니다. 스카라무치노는 설명합니다. "성능 측면에서 너무 무거웠습니다. 릭(rig)의 각 뼈대에 캡슐 조인트를 사용했어요. 모든 빨판에 조인트가 있었기 때문에 리소스 사용량이 엄청나게 많았고, 여전히 계산량이 폭발적으로 증가했죠."
촉수를 수정하기 위해 오브젝트를 잡을 때의 충돌 설정을 조정했습니다. 쿠바슈는 실제로 오브젝트를 잡는 것은 조인트이므로 충돌 설정이 필요하지 않다고 단언합니다. "최적화는 성능뿐만 아니라 사용성에도 필요하고 글리치(glitch)를 방지하는 데도 꼭 필요하죠."
Firepunchd는 촉수의 움직임과 성능 모두 원하는 결과를 얻을 때까지 조인트와 리지드바디의 수를 조금씩 줄였습니다. 각 조인트의 관성 텐서를 조작하여 강성도와 퍼덕거리는 정도를 미세 조정했습니다. 각 촉수의 리지드바디에는 잡아 올린 오브젝트에 사실적으로 반응하는 두 개의 스크립터블 오브젝트가 있습니다.
"거대한 바위를 집어 올리든, 작은 인간을 집어 올리든, VR에서는 모든 것이 가볍게 느껴집니다"라고 스카라무치노는 말합니다. "현실 세계의 실제 손과 촉수를 레이어로 분리하면 사용자가 무게감을 느끼게 할 수 있습니다. 매우 무거운 물체를 들어 올리면 촉수가 늘어나며 실질적인 무게감을 전달하죠."
쿠바슈는 다음과 같이 덧붙였습니다. "힘에 반응하는 리지드바디 체인을 사용하면 정말 흥미로워집니다. 무거운 물체를 들 때는 실제로 팔을 들어 올려야 하죠. 플레이어가 경험할 수 있는 수많은 게임플레이가 준비되어 있습니다. 아주 특별한 경험이에요.”
메뉴 디자인
Firepunchd는 메뉴로 인해 게임플레이가 방해받지 않도록 모든 메뉴가 인터랙티브 오브젝트로 구성되는 다이제틱(diegetic) UI를 제작했습니다. 게임의 간단한 튜토리얼 역할을 하는 옵션 화면에는 슬라이더와 스위치가 있어서 플레이어는 촉수를 사용하여 오디오, 그래픽스, 설정, 접근성을 제어할 수 있습니다. 접근성 설정 중 하나인 촉수 크기 설정을 사용하면 키가 작은 게이머라도 모든 오브젝트에 접근할 수 있습니다. "처음부터 포용적인 게임을 만들고 싶었습니다"라고 스카라무치노는 강조합니다. "이 게임은 자신에게 맞지 않은 세상에 자신을 맞춰 가는 내용이므로, 최대한 많은 사람이 플레이하도록 구현해야 했어요."
VR 최적화
VR 작업의 핵심은 최적화라 할 수 있습니다. 90fps와 최소 4K의 해상도를 유지하는 것이 필수적이며, 그렇지 못하면 플레이어가 멀미로 고생할 수 있습니다. 드로우 콜 수를 낮게 유지하기 위해 스카라무치노는 오브젝트에 아틀라스를 사용하여 텍스처를 최대한 재활용했습니다. 또한 개발 팀은 스크립터블 오브젝트를 사용해서 잠금 해제, 타이틀 화면, 레벨, 진행 상황, 퀘스트, 캐릭터 디자인, 현지화 등 모든 것이 포함된 거대한 게임 데이터 청크를 정리했습니다.
셰이더
Tentacular의 모든 에셋은 두 개의 거대한 아틀라스에서 관리합니다. Firepunchd에서는 픽셀 아트 스타일을 굉장히 선호해서 이 스타일을 사용하기로 했고, 두 개의 1K 텍스처를 사용하여 게임의 대부분을 렌더링했습니다. 스카라무치노는 컬러마다 텍스처를 적용하고 싶지 않았다고 말합니다. “빨간 자동차의 아틀라스, 파란 자동차의 아틀라스를 따로 두고 싶지도 않았지만, 모든 컬러를 하나의 아틀라스에 두고 싶지도 않았습니다. 네 가지 자동차 컬러가 있으니, 자동차가 4분의 3을 차지했죠."
이 문제를 해결하기 위해 스카라무치노는 직접 셰이더를 작성했습니다. 이 셰이더는 텍스처의 알파 채널을 컬러 영역의 마스크로 사용하고, 컬러 자체는 메시의 버텍스 컬러에 저장됩니다. 스카라무치노는 프리팹의 Awake에서 또는 Blender에서 직접 버텍스에 컬러를 입혔습니다. 그러면 셰이더는 텍스처의 샘플링된 픽셀에 알파 채널이 있는지 확인하고, 알파 채널이 있으면 RGB 컬러를 메시의 버텍스 컬러와 블렌딩합니다. 덕분에 같은 머티리얼을 사용해서 다른 오브젝트를 각기 다른 컬러로 렌더링할 수 있습니다.
스크립터블 오브젝트
Tentacular 게임 진행은 메인 퀘스트와 사이드 퀘스트로 나뉘며, 퀘스트별 스토리와 레벨은 스크립터블 오브젝트로 구성되어 있습니다. 퀘스트 시스템에는 게임의 모든 요소뿐만 아니라 Firepunchd가 각 빌드 중에 로드하는 데 필요한 씬이 포함되어 있습니다. 이를 통해 한곳에서 중앙 집중식으로 진행 상황을 관리할 수 있었습니다. 쿠바슈는 강조합니다. "어떤 게임은 긴 목록이 있는 데이터로 진행 상황을 관리하지만, 개인적으로 모듈을 선호합니다. 모듈을 클릭하거나 복사하면 되기 때문에 이 워크플로를 정말 좋아해요."
스크립터블 오브젝트로 퀘스트 데이터를 구조화한 덕분에 게임 데이터를 조작하고 레퍼런스 예외 오류를 최소화할 수 있었습니다. 스카라무치노는 "많은 요소를 추가하거나 삭제해야 할 때 아주 쉽게 수정할 수 있어요. 레벨 생성 반복 작업이 훨씬 원활하게 이루어졌죠"라고 언급합니다.
스크립터블 오브젝트는 캐릭터 제작에도 영향을 줬습니다. 개발 팀은 눈 컬러, 머리 컬러, 옷, 헤드기어 등 수많은 개별 캐릭터 에셋을 만들었으며, 파라미터를 사용하여 구성을 무작위로 생성했습니다. 덕분에 프리팹 생성 속도가 상당히 빨라졌습니다. 대부분의 배경 캐릭터는 완전히 무작위로 생성된 반면, 메인 캐릭터는 Unity 에디터에서 커스터마이즈했습니다. 그런 다음, 이러한 스크립터블 오브젝트를 익스포트해서 게임에 추가하면 런타임 중 프리팹이 생성됩니다.
언어 변경을 간소화하기 위해 Firepunchd는 스크립터블 오브젝트를 Tentacular의 현지화 문자열이 포함된 데이터베이스에 연결했습니다. 스크립터블 오브젝트에는 폰트 및 특정 문자의 존재 여부를 확인하는 함수가 있습니다. 쿠바슈는 "다른 기술로도 가능했겠지만, 스크립터블 오브젝트는 사용하기가 정말 편리하기 때문에 언제든지 사용하기 좋습니다"라고 강조합니다.
스카라무치노는 "모든 현지화 문자열은 Google Sheets 문서에서 관리했습니다. Google API를 사용하여 Google 문서에서 데이터를 가져와서 스크립터블 오브젝트를 채워 넣을 수 있죠. 그러면 새로 빌드할 때마다 최신 버전의 현지화 파일을 사용할 수 있습니다"라고 설명합니다.
인디 혁신가에게 전하는 메시지
Firepunchd는 빠르게 누릴 수 있는 재미를 추구하며 즐기는 마음으로 러프한 프로토타입을 대량 생산하는 게임 잼 애호가들로 구성되어 있습니다.
"경험에 따르면 혁신은 기발한 아이디어에서 나오는 것이 아닙니다. 아이디어는 프로세스의 시작일 뿐이죠. 저희 팀의 경우, 초기 아이디어의 가능성을 살펴보는 것으로 작업 대부분을 끝냈다고 할 수 있습니다"라고 스카라무치노는 이야기합니다. "반복 작업 속도가 빨라질수록 혁신을 향한 여정이 더 쉬워집니다. 실패를 두려워하지 말고, 모든 것을 버리고 다시 시작하는 것을 겁내지 마세요. 엄청나게 잘 만든 하나의 프로젝트보다 실패한 수백 번의 실험에서 더 많은 것을 배울 수 있습니다."
"즐겨야 한다는 점도 꼭 기억하세요"라고 쿠바슈는 덧붙입니다. "강요하지도 말고, 너무 복잡하게 만들지도 않아야 합니다. 설명이 필요한 농담은 실패한 농담이죠. 테스트 중에 놀랄 만한 일이 생겼다면 제대로 가고 있다는 의미일 것입니다. '웃으면서 재미있게 진행하는' 개발 과정이 저희에게는 많은 도움이 되었습니다."
Firepunchd의 Tentacular 프로젝트는 아직 끝나지 않았으며, 게임에 여러 업데이트를 적용하기 위해 열심히 노력하고 있습니다. 더 많은 VR 플랫폼에서 게임을 출시할 예정이고, 완전히 새로운 도전 과제와 새로운 도시 건설 모드인 à la Townscaper 모드를 추가할 예정입니다. Tentacular는 현재 SteamVR과 Meta Quest에 출시되어 있습니다. Tentacular의 최신 소식을 받아 보고 싶다면 Twitter에서 사이먼(@firepunchd)과 루카(@MrLucaGames)를 팔로우하세요. 아래에서 크리에이터 스포트라이트 풀 버전 영상도 꼭 시청해 주세요.