나의 'Crazy Taxi' 같은 게임 개발 2년 간의 진행 상황
요약
본 기사는 아케이드 드라이빙 게임 'Cabs of Chaos'의 개발 현황을 다루며, 지난 2년간의 진행 과정을 설명합니다. 특히 레벨 디자인과 콘텐츠 구축에 있어 절차적 툴링(procedural tooling)을 활용하여 효율성을 극대화한 경험을 공유하고 있습니다.
핵심 포인트
- 아케이드 드라이빙 게임 'Cabs of Chaos' 개발 현황 공개
- 절차적 툴링으로 레벨 디자인의 반복 및 변경 시간을 단축함
- 초기 플레이 테스트를 통해 레이아웃 개선과 시스템 문제점을 파악함
- 전통적인 타일형 키트의 한계를 넘어선 유연한 세계 창조가 가능함
지난번 영상에서 제가 'Cabs of Chaos'에 대해 제대로 보여드린 지 벌써 2년이 되었습니다. 그동안 저는 전체 레벨을 디자인하고, 멀티플레이어 기능을 추가했으며, 수많은 새로운 시스템과 콘텐츠를 구축했습니다. 그리고 올해 초에는 마침내 게임 개발에 전념하기 시작했습니다. 지금은 지금까지 중 가장 큰 변화들을 게임에 적용하고 있습니다. 하지만 제가 이 게임이 어디로 나아갈지 보여드리기 전에, 저희가 어떻게 여기까지 오게 되었는지부터 설명해야 할 것 같습니다. 혹시 처음 오신 분이라면 안녕하세요, 저는 Matt입니다. 'Cabs of Chaos'는 도시를 돌아다니며 승객을 태우고, 다른 운전자들과 경쟁하며, 전반적으로 가능한 한 많은 혼란을 일으키는 아케이드 드라이빙 게임입니다.
규칙이 뒤섞이는 다양한 게임 모드가 있을 예정이지만, 핵심 메커니즘 중 하나는 다른 플레이어로부터 승객을 빼앗는 것입니다. 만약 다른 사람이 요금을 가지고 있다면, 그 사람과 충돌하여 승객을 자신이 차지할 수 있습니다. 하지만 이제는 목적지까지 경주하며, 다른 사람들이 당신에게서 승객을 훔치려고 할 때 모두를 피해야 합니다. 이런 것이 마음에 드신다면, Steam 페이지가 이미 공개되었으니 아래 링크를 통해 위시리스트에 추가하실 수 있습니다. 지난 업데이트 영상에서는 첫 번째 레벨인 다운타운 지구의 플레이 가능한 회색 상자(gray box)를 만드는 것이 목표였습니다.
저는 그 레벨을 활용하여 더 큰 개발 질문들에 답하고, 나머지 게임을 구축하는 데 필요한 주요 시스템들을 구체화하고 싶었습니다. 그때쯤에는 이미 맵 블로킹을 시작했고, 제 계획은 가능한 한 빨리 플레이 가능하게 만드는 것이었습니다. 저는 공간을 빠르게 채우고, 초기 플레이 테스트를 진행하여, 제대로 된 아트 작업에 착수하기 전에 레이아웃을 개선하는 데 사용하고 싶었습니다. 그래서 건물들을 어렴풋이 나타내는 단순한 지오메트리(geometry)들을 많이 배치하자마자, 친구들과 가족 몇 명과 함께 그 공간을 테스트하기 시작했습니다.
그리고 이것들은 정말로 매우 가치 있었는데, 사람들이 이 공간을 어떻게 이동하는지 보여주었기 때문이고, 종종 제가 지름길을 추가하고 싶거나 할 만한 영역들을 강조해 주었습니다. 또한 저의 절차적 툴링(procedural tooling) 초기 버전들의 문제점들도 일부 드러나게 했습니다. 저는 초기에 도로, 교차로, [music] 그리고 소품(props)을 배치하기 위한 몇 가지 도구들을 만들었는데, 이 회색 상자(gray box) 덕분에 무엇이 실제로 유용한지, 무엇이 방해가 되는지, 그리고 이것들에 제대로 의존하기 전에 제가 무엇을 개선해야 하는지를 파악할 기회를 얻었습니다.
제가 이 게임을 이런 방식으로 만들고 싶었던 주된 이유는 수동으로 배치해야 할 양을 최소화하고, 따라서 레벨 레이아웃에 변경을 주고 싶을 때마다 잃게 되는 시간을 줄이는 것이었습니다. 물론 저는 좀 더 전통적인 타일형 키트(tileable kit)를 중심으로 게임을 만들 수도 있었겠지만, 그것은 그 타일들이 가진 한계 내에서 도시를 설계해야 한다는 것을 의미합니다. 저의 도로, 보도, 건물, 그리고 대부분의 지형 기하학(terrain geometry)을 절차적 툴로 처리함으로써, 저는 세계의 많은 부분을 빠르게 창조하고 피드백에 기반하여 아주 적은 마찰(friction)로 변경할 수 있습니다.
이것은 개발 과정 전반에 걸쳐 제가 상당히 자주 해야 했던 일이었기 때문에, 이 접근 방식은 지난 2년 동안 엄청난 성과를 가져왔습니다. 저는 결국 레벨의 제대로 된 버전을 구축하기 시작하면서 도구들의 몇 가지 한계에 부딪혔고, 지금은 다음 레벨들을 위해 다시 그 도구들을 개선하고 있습니다. 이에 대해서는 영상 말미에서 더 자세히 다루겠습니다. 하지만, 그러한 문제점들이 있음에도 불구하고, 이 도구들 없이는 레벨을 구축하고 반복하는 것이 전보다 훨씬 효율적이었을 거라고 생각하지 않습니다. 어쨌든, 저는 결국 회색 상자의 레이아웃 수정이 필요 없어졌고, 레벨 플레이 테스트는 꽤 괜찮게 느껴지기 시작했습니다.
그래서 [music] 나는 그 임시 지오메트리(geometry)들을 제대로 된 도로, 건물, 소품(props), 환경 아트워크로 대체하기 시작했고, 다운타운의 첫 번째 본격적인 아트 패스(art pass)를 진행했다. 그리고 솔직히 말해서, 지난 2년 동안 내가 가장 많은 시간을 할애한 것이 바로 그것이다. 나는 그 과정 내내 Generation Exile에 전념하며 작업했기 때문에, 저녁이나 주말에 시간이 생길 때마다 레벨 작업을 조금 하거나 새로운 에셋을 만들었다. 이 일의 이상했던 점 중 하나는 일이 서서히 추진력을 얻는 방식이었다. 돌이켜보면 분명하지만, 처음에는 모든 것이 훨씬 더 오래 걸렸다. 왜냐하면 나에게 기본적으로 에셋도 없고 제대로 된 파이프라인(pipeline)도 없었기 때문이다.
초기 개발의 상당 부분은 필요할 때마다 건물 메시(meshes), 소품, 환경 조각들을 만드는 것이었지만, 시간이 지나면서 내가 가져다 쓸 수 있는 방대한 에셋 풀을 구축하게 되었다. 레벨 후반부로 갈수록 작업 속도는 훨씬 빨라졌다. 나는 새로운 나무나 무작위 소품을 만들기 위해 끊임없이 Blender에 접속할 필요가 없었다. 대부분의 시간 동안은 이미 사용할 수 있는 것이 있었다. 그리고 이제, 벤치 같은 것을 또 만드는 것은 실제로 정당화해야 하는 결정이 되었다. 정말 일곱 번째 벤치가 필요한가, 아니면 이미 만든 여섯 개로 충분한가?
여기서 잠시 다른 이야기(tangent)를 하자면. 제작 과정에서 내가 절대적으로 가치 있다고 생각한 것은 각기 매우 특정한 목적을 가진 장면들(scenes)을 프로젝트에 갖는 것이었다. 나는 보행자를 칠 때 어떤 일이 발생하는지를 다루는 개별 메커니즘을 위한 작은 테스트 장면들을 가지고 있다. 또한 차량 핸들링(vehicle handling) 작업을 할 때마다 모든 것이 여전히 좋게 느껴지고 제대로 작동하는지 확인하기 위해 다양한 장애물로 가득 찬 체육관 장면도 가지고 있다. 그리고 환경 에셋의 경우, 모든 것이 함께 배치된 또 다른 장면을 가지고 있다.
이는 제가 모든 에셋들을 서로의 맥락 속에서 볼 수 있을 뿐만 아니라, 실제로 어떻게 작동하는지 테스트할 수도 있다는 것을 의미합니다. 충돌했을 때 무슨 일이 일어나는지, 제대로 파괴될 수 있는지, 그리고 모든 속성들이 일관되게 설정되어 있는지를 말이죠. 아직 모든 사운드를 배치한 것은 아니지만, 그것들을 갖추게 되면 이곳에서 각 에셋에 대한 다양한 음향 효과를 빠르고 쉽게 테스트하고 검증할 수도 있습니다. 제가 무언가를 격리하여 빠르게 테스트할 수 있는 전용 공간을 갖게 된 것이 매우 큰 도움이 되었습니다.
[music] 어쨌든, 레벨 작업의 대부분은 라이브 스트림 중에 진행되었습니다. 이 기간 동안 제대로 된 개발 로그를 위해 영상을 녹화하고 있지는 않았기 때문에, 지난 2년 동안 시간이 날 때마다 몇 시간 동안 스트리밍에 참여했고 우리는 다음 부분의 레벨 작업을 했습니다. 이것은 제가 앞으로 몇 개의 레벨에서도 계획하고 있는 것이니, 관심이 있다면 주시해 주세요. 하지만 네, 다운타운을 마무리하기 위해 본격적으로 노력한 것은 사실 올해 초가 되어서야였습니다.
2026년 초에 저는 제 미래가 무엇을 가져올지에 대해 특별히 명확한 아이디어가 없었고, 솔직하게 말씀드리자면 원래 의도했던 것보다 훨씬 축소된 형태로 Cabs of Chaos를 출시하는 것을 고려하고 있었습니다. 제 생각은 적어도 이 레벨만 완성할 수 있다면, 최소한 게임이라도 갖게 될 것이라는 것이었습니다. 그것은 제가 몇 달 동안 마무리 작업을 할 수 있고 필요하다면 세상에 내놓을 수 있는 무언가일 것입니다. 프로젝트를 최소 기능 제품(MVP) 상태로 만드는 것이 당시에는 가장 합리적인 일처럼 느껴졌습니다.
솔직히 말해서, 저는 그 결정을 내린 것이 정말 기쁩니다. 다른 개발자들에게도 생각해 보라고 권하고 싶은 부분인데, 제가 결국 4월에 게임 투자를 계속하기로 결정했음에도 불구하고, 원한다면 출시할 수 있는 무언가를 가지고 있기 때문입니다. 핵심 게임은 이미 갖춰져 있습니다. 지금부터 제가 하는 모든 것은 그것을 기반으로 구축하는 것입니다. 그래서 이제 전업으로 게임 개발을 하게 되면서 상황이 어떻게 바뀌었는지 이야기해 보겠습니다. 올해 동안 저는 네 명의 새로운 캐릭터를 추가하여, 플레이 가능한 로스터(playable roster)를 총 8명까지 늘렸습니다.
캐릭터들은 Cabs of Chaos에서 흥미로운 부분이기 때문에, 제가 이 캐릭터들을 가지고 실제로 무엇을 하고 싶은지 잠시 시간을 내어 설명해 드리겠습니다. 이 게임 버전에서는 캐릭터들이 기본적으로 배경 장식에 불과합니다. 자신을 위한 아바타를 선택하는 수단일 뿐, 그 이상은 아닙니다. 이것이 현재의 게임 버전이며, 만약 해야 한다면 출시할 수 있는 것입니다. 하지만 저는 여기에 훨씬 더 많은 잠재력이 있다고 생각합니다. 이 게임의 거대한 영감 중 하나인 The Simpsons: Road Rage에서 제가 가장 좋아했던 것 중 하나는 플레이 가능한 캐릭터와 승객들이 서로 어떻게 상호작용하는지였습니다.
그것이 전체에 훨씬 더 많은 개성을 부여했고, 세계를 훨씬 더 기억할 만하게 만들었습니다. 그리고 그것은 제가 항상 되찾고 싶었던 것입니다. 기술적으로 게임에 필수적인 것은 아니지만, 플레이어 경험(player experience)을 정말로 끌어올릴 수 있는 요소가 될 것이라고 생각합니다. 저에게는 중요한 기능이며, 아마도 게임 예산의 상당히 큰 부분이 결국 여기에 투입될 것입니다. 제가 궁극적으로 원하는 것은 모든 플레이 가능한 캐릭터가 자신만의 개성과 음성 대사(voice lines)를 갖게 하는 것입니다.
그리고 플레이되지 않을 때도 승객으로 등장할 수 있습니다. 이는 캐릭터들이 서로 반응하고, 독특한 교류를 하며, 궁극적으로는 플레이할수록 사랑하거나 싫어하게 될 만한 반응형 출연진을 만들 수 있다는 것을 의미합니다. 저는 또한 재미있고 약간 터무니없는 캐릭터 콘셉트를 생각해내는 것 자체를 정말 즐기고 있습니다. 처음 구현했던 네 명은 훨씬 현실적이었지만, 이 마지막 네 명은 좀 더 엉뚱하고, 저는 분명 여기서 멈출 생각이 없습니다.
자, 그럼 소개해 드리겠습니다. 첫 번째는 Jean 할머니와 그녀의 골프 카트 이동 스쿠터입니다. 그녀는 상냥하지만 날카로운 노년 여성으로, 어떤 것도 용납하지 않으며 스코티시 쇼트브레드를 좋아합니다. 불행하게도 그녀에게는 쇼트브레드가 다 떨어졌습니다. 다음은 Guy입니다. 그는 자신이 새로 산 보트를 너무 사랑해서, 개방된 물이 유일한 운전 장소가 되어서는 안 된다고 생각하는 여유로운 아빠입니다. 그리고 물론 Vincent가 있습니다. 그는 그저 자신의 다음 희생자를 찾아 정직하게 살아가려고 노력하고 있습니다. 음, 공정하게 말하자면요.
그리고 마지막으로 Amelia가 있습니다. 그녀는 예전에 여행을 많이 다니던 조종사였는데, 기체가 이곳에 추락하는 우발적인 사고를 겪은 후 Cedar Wood City에 고립된 상태입니다. 따라서 총 여덟 명의 캐릭터가 있습니다. 그리고 빈 블렌더 장면에서 완전히 구현되어 플레이 가능하게 만드는 데는 각 캐릭터당 약 5일의 작업 시간이 걸립니다. 처음에는 20명의 플레이 가능한 캐릭터를 만들고 싶었지만, 성우 연기와 캐릭터 상호작용을 얼마나 많이 하고 싶은지를 고려했을 때, 이를 16명으로 줄이는 것이 훨씬 더 관리하기 쉬울 것 같습니다.
남은 캐릭터가 8개라 생각하면, 나머지 로스터를 구현하는 데 두 달도 채 걸리지 않을 것 같습니다. 하지만 물론, 이 부분은 적당한 지점을 찾는 것이 중요합니다. 플레이어가 게임 진행 과정의 일부로 충분히 잠금 해제하고 얻을 수 있는 만큼의 캐릭터가 필요하면서도, 로스터가 상당하다고 느껴질 만큼의 다양성이 있어야 합니다. 그러나 너무 많아서 스크립트와 음성 라인을 관리하는 데이터 입력 지옥에 제 인생의 절반을 낭비하게 되어서는 안 됩니다. 어쨌든, 게임이 잘 된다면 출시 후에 더 많은 캐릭터나 레벨을 추가하는 것을 막는 것은 아무것도 없습니다.
현재 제가 게임의 범위를 접근하려는 방식은 대체로 이렇습니다. '첫날부터 모든 것이 있어야 한다'고 느끼기보다는, 제가 구상한 경험을 전달할 만큼 충분히 만들되 나중에 확장할 여지를 남겨두고 싶습니다. 그리고 8개의 캐릭터를 게임에 넣는 것은 정말 보람 있었습니다. 왜냐하면 나머지 상대들은 플레이할 때마다 무작위로 선택되기 때문입니다. 그래서 지금까지는, 단지 4개의 캐릭터만 있었을 때는 항상 같은 다른 세 명이었거든요.
하지만 이제 누가 저와 맞붙게 될지 보는 것에서 실제로 약간의 놀라움이 생겼습니다. 분할 화면 플레이에서도 정말 재미있었습니다. 이 초기 테스트 단계에서도 친구들과 가족들은 이미 최애 캐릭터를 고르기 시작했습니다. 저 자신도요. 댓글에서 제가 가장 좋아하는 아이가 누구인지 맞춰보세요. 그런데 멀티플레이어 주제로 돌아가자면, 처음 구상했을 때부터 항상 로컬 멀티플레이 게임이 될 계획이었습니다. 전체 시스템은 최대 4명이 현지(locally)에서 함께 플레이하는 것을 지원하도록 설계되었으며, 나머지 운전자는 CPU 컴포넌트가 제어합니다.
처음에는 온라인 멀티플레이어라는 아이디어를 완전히 무시했습니다. 제 생각에는 너무 많은 오버헤드가 발생할 것 같았기 때문입니다. 택시 게임의 주요 목표 중 하나는 예산을 낮게 유지하고 게임을 최대한 경제적으로 만드는 것이었습니다. 그리고 온라인 멀티플레이어는 비싸고, 복잡하며, 아마도 가장 중요하게는 제가 경험이 전혀 없는 분야였습니다. 그래서 저에게는 감당하기에 너무 큰 미지의 위험처럼 느껴졌습니다 [music]. 그러다가 리플레이 시스템을 구현하면서 생각이 바뀌었습니다. 이 리플레이 시스템은 게임 상태의 스냅샷을 실시간으로 캡처하는 방식으로 작동했습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 YouTube Game Dev Guide의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기