Animator 컨트롤러(위)와 인게임(아래)에서 볼 수 있는 렐의 애니메이션
독립 개발자 SlugGlove가 Unity를 활용해 게임 ‘Rhell’에 1억 200만 가지의 주문 조합을 구현한 방법: 뒤틀린 월드와 혼란스러운 시대

한 명의 개발자가 어떻게 1억 200만 가지의 잠재적 주문 조합을 가진 비디오 게임을 만들 수 있을까요? 렐: 『Warped Worlds & Troubled Times』는 플레이어가 마법 룬을 연결해 오브젝트에 주문을 걸고, 그 품질을 조작하여 퍼즐을 해결하는 세미 오픈 월드 RPG입니다.
이 복잡한 시스템을 구축하는 일은 대규모 개발팀에게도 상당한 도전이 될 텐데, 솔로 개발자인 SlugGlove는 이를 또 하나의 풀어야 할 퍼즐로 여겼다. 우리는 SlugGlove와 만나 애니메이션에서 프로그래밍으로의 전환 과정, Unity에서 Rhell의 마법 시스템을 설계하고 테스트하는 방식, 그리고 작업 범위를 관리하고 과부하를 피하기 위한 최고의 조언에 대해 이야기를 나누었습니다.
애니메이션에서 C# 프로그래밍까지
슬러그글로브는 처음부터 프로그래머가 되려고 한 것은 아니었습니다. 이들의 배경은 3D 애니메이션과 스프라이트 작업에 있습니다. 학위 취득을 위한 최종 애니메이션 프로젝트를 진행하던 중, 그들은 단편 애니메이션을 만들고 싶지 않다는 것을 깨달았고, 대신 자신들의 작품을 비디오 게임으로 구현하고 싶어 했다.
SlugGlove는 Unity를 접한 뒤 C#을 배우며 실험을 시작했습니다. 게임 엔진으로의 전환을 망설이는 개발자들을 위해, 그들은 Unity의 빌트인 애니메이션 기능의 사용자 친화성을 강조한다.
“당시 저는 Blender를 사용하고 있었는데, 개인적으로 사용하기 매우 편하다고 느꼈습니다,”라고 SlugGlove는 말합니다. “이 작업에서 Unity로 넘어오면서, 저는 기본적으로 클립을 만들고 Animator 컨트롤러를 이용해 이를 배치하는 작업을 했습니다.” 기존의 애니메이션보다 훨씬 쉬웠어요. “다른 애니메이터들이 애니메이션을 테스트할 수 있는 방법을 찾고 있다면, Unity는 배우고 익히기 매우 쉽습니다.”
포트폴리오 프로젝트로 시작된 이 작업은 Rhell의 개발이 본격화되기 전까지 몇 가지 실험적인 게임으로 이어졌습니다: 뒤틀린 월드와 혼란스러운 시대.
조합형 주문 시스템 구축
Rhell의 가장 큰 매력은 모듈식 마법 시스템입니다. 플레이어는 렐의 주문서에서 한 번에 최대 5개의 룬을 조합할 수 있으며, 이로 인해 수백만 가지의 조합이 가능해집니다. SlugGlove는 가능한 모든 조합에 대해 각각 고유한 ScriptableObject나 프리팹을 생성하는 대신, 정수와 프리팹 변형을 활용해 우아한 해결책을 찾아냈습니다.
정수 기반 접근법
각 룬을 복잡한 에셋으로 처리하기보다는, 게임은 룬을 단순히 숫자로 인식합니다. “룬 자체는 사실 이 프로젝트에서 별도의 에셋이 아닙니다,”라고 SlugGlove는 설명합니다. “오히려, 1번 버튼을 누르면 그 값이 정수형으로 저장되는 식이에요. 0에서 40까지 올라갑니다. 주문을 시전할 때는 최대 5개의 정수 목록을 읽습니다.”
“불 + 얼음”과 같은 조합에 대한 구체적인 상호작용을 코딩하는 대신, 시스템은 정수(예: 11, 12)를 읽어온 다음 이를 제거하고, “물”의 프로퍼티(예: 정수 32)를 적용하도록 로컬라이즈된 클래스 오브젝트를 동적으로 조정합니다. 마지막 스펠은 최종 결과 클래스가 생성될 때까지 해당 정수값을 기반으로 조정값을 더하고 수정합니다. 이러한 모듈 단위 수학적 접근 방식은 게임 로직을 간결하게 유지해 주며, SlugGlove가 수천 개의 개별 에셋을 제작해야 하는 수고를 덜어줍니다.
렐이 불과 얼음 룬을 조합하여 물을 만들어낸다
범용 오브젝트 시스템
주문이 일관되게 작동하도록 하기 위해 SlugGlove는 프리팹 변형을 사용했습니다. “렐(Rhell)에 있는 모든 오브젝트는 작은 회색 큐브의 변형체입니다,”라고 그들은 설명한다. “제 생각은 이랬습니다. 만약 어떤 주문이라도 이 한 개의 큐브에 효과가 있다면, 게임 속의 그 어떤 것에도 효과가 있을 수 있다는 것이었죠.” “기본적으로 제가 만들 수 있는 가장 복잡한 큐브를 만들었어요.”
통, 바위, 그리고 용암의 바다는 엄밀히 말해 동일한 기본 프리팹의 변형체이기 때문에, SlugGlove는 각 주문 상호작용을 한 번만 구현하면 되었습니다. 기본 프리팹을 수정하면 게임 내 수백 개의 오브젝트가 자동으로 업데이트되어 개발 시간을 크게 단축할 수 있습니다.
플레이어 캐릭터인 렐은 이 규칙의 유일한 예외입니다. SlugGlove는 커스텀 이동 컨트롤러와 독특한 애니메이션 상태(예: 불에 타면서 튕겨 다니는 모습 등)가 필요했기 때문에, 범용 오브젝트 코드를 플레이어 컨트롤러에 세심하게 반영해야 했습니다.
Rhell에서 플레이어 캐릭터를 위한 다양한 커스텀 애니메이션 상태 중 몇 가지: 뒤틀린 월드와 혼란스러운 시대
무작위 테스트를 통한 시간 절약
언뜻 보면 1억 200만 가지의 주문 조합을 모두 고려하는 것은 테스트 측면에서 악몽 같은 일처럼 보입니다. 슬러그글로브는 굴하지 않고, 다시 한번 간단하면서도 창의적인 해결책을 찾아냈습니다. 바로 무차별 대입 방식의 무작위화였습니다.
개발진은 먼저 룬 시스템의 구성 요소인 정수들 중에서 무작위로 하나를 선택하는 “랜덤” 룬을 게임에 추가하는 것으로 시작했습니다. 가능한 상호작용을 테스트하기 위해, SlugGlove는 방에 진입한 후 오류 메시지가 나타날 때까지 오브젝트들에 무작위 주문을 연달아 시전했습니다.
“방에 앉아서 ‘랜덤’을 계속해서 캐스트하곤 했죠. 우리 모두가 너무나 잘 아는 Unity의 그 작은 빨간 아이콘이 나타날 때까지요,”라고 그들은 웃으며 말했다. “한 가지 상황이 있었는데, 오브젝트를 시간을 거슬러 되돌리고, 복제한 다음 ‘고정’ 상태로 설정한 후, 이 고정 효과를 해제하려고 하면 null 레퍼런스 오류가 발생했습니다.” “랜덤 덕분에 그 문제를 해결해야 한다는 걸 알게 되었어요.”
‘랜덤’ 룬의 실제 행동 모습
포털의 문제점
인게임에서 렐은 포털 룬을 통해 오브젝트를 한 위치에서 다른 위치로 보낼 수 있습니다. 이로 인해 해결해야 할 또 다른 독특한 과제가 생겼습니다. SlugGlove는 ‘Grow’ 룬(오브젝트를 확대하는 효과)의 영향을 받는 오브젝트가 포털을 통과할 때 주변 지오메트리와 겹쳐져 클리핑 문제가 발생한다는 점을 발견했습니다.
‘성장’ 룬의 효과가 적용된 상태에서 포털을 통과할 때 클립 문제가 발생합니다
SlugGlove의 초기 구현 방식에서는, 포털을 빠져나올 때 확대된 오브젝트의 박스 콜라이더가 클립을 감지하면 순간이동이 실패하도록 되어 있었습니다. 하지만 이는 렐의 주문 시스템이 지닌 개방적이고 자유로운 샌드박스적 특성에 대한 그들의 Vision과 상충했기 때문에 이상적인 해결책은 아니었다.
“게임 디자인 측면에서 보면 정말 끔찍한 느낌이었습니다,”라고 SlugGlove는 말합니다. “플레이어의 행동 범위를 제한할 만한 상황을 만들지 않으려 했습니다.” “그냥 ‘아니요’라고만 말하는 건 정말 속이 상했어요.”
약간 더 사실적인 물리 상호작용보다 플레이어의 즐거움을 우선시하기로 결정한 SlugGlove는 커스텀 충돌 처리 스크립트를 작성했다. 오브젝트가 포털을 빠져나가려다 충돌을 감지하면, 스크립트는 해당 오브젝트가 방해받지 않고 생성될 수 있도록 포털을 충돌 지점에서 약간 떨어진 곳으로 푸시합니다.
‘성장’ 룬의 영향을 받는 오브젝트가 포털에서 나오는 모습, 수정 후
결과가 아닌 과정에 집중하기
‘Rhell’ 개발 과정에서 Unity 기술을 연마한 것 외에도: 『Warped Worlds & Troubled Times』를 제작하며, SlugGlove는 게임 사운드트랙을 작곡하기 위해 FL Studio도 익혔습니다. 우리는 그들에게, 그토록 방대한 규모의 프로젝트를 진행하면서 수많은 업무를 동시에 처리하는 와중에 어떻게 번아웃을 예방하는지 물었다.
“그냥 새로운 장난감처럼 대할 뿐이에요,”라고 그들은 말한다. “‘만약 실패하면 어쩌지?’ 또는 ‘내가 만든 게 별로라면 어쩌지?’ 같은 생각에만 집중하다 보면, 그저 스트레스만 받게 될 뿐입니다.” 나는 긍정적인 면에 집중하고 즐기려고 노력한다. 최악의 경우, 이 음악 프로그램을 익히지 못한다면 친구에게 부탁할 수도 있겠지. “언제나 백업이 있으니까요.”
이러한 긍정적인 태도는 게임 엔진을 열어보기도 전에 스코프 크리프나 시장성 같은 난관에 좌절할지도 모르는 예비 게임 개발자들을 향한 슬러그글로브의 격려의 말에서도 엿볼 수 있습니다:
“적어도, 자신을 위해 자랑스러워할 만한 무언가를 만들어 보세요.” ‘이 일을 하면서 즐거움을 느끼고 있는가?’라는 점에 집중해 보세요. 왜냐하면 즐거운 시간을 보내고 있다면, OK니까요. 비디오 게임을 만드는 건 정말 엉뚱하면서도 재미있어요. “항상 스트레스가 되는 일일 필요는 없어요.”
렐: 『Warped Worlds & Troubled Times』가 스팀에서 출시되었습니다. Steam 큐레이터 페이지에서 Made with Unity로 제작된 더 많은 게임을 둘러보시고, Unity 블로그와 리소스 허브에서 Unity 개발자들의 다양한 이야기를 확인해 보세요.
