메모지 속 아이디어가 세상에 나오기까지, 유닛5 최준원 대표

이두현 기자 | 댓글: 3개 |
구글이 게임 개발의 퀄리티 향상을 위한 '유니티를 사용한 안드로이드 게임 개발 응용' 강좌를 유니티와 협력하여 26일, 자사의 서울 캠퍼스에서 진행했다. 이날 구글의 초청으로 강단에 선 유닛5(Unit 5) 최준원 대표는 메모지에서 시작한 아이디어가 어떻게 세상에 나왔는지를 상세하게 들려줬다.

어려서부터 프로그램 개발을 좋아한 최준원 대표는 초등학교 때 배너를 만들며 놀았고, 중학생 때는 성적 처리 프로그램까지 만들어 학교에서 사용됐다. 대학교와 대학원에서는 건축학을 전공해 건축학도가 됐지만, 개발자의 길로 돌아와 지난 2014년에 유닛5를 창업했다.

유닛5가 개발한 모바일 캐주얼 게임 '큐비 어드벤처'는 15개 언어로 글로벌 출시됐다. 이 게임은 지난해 4월, 구글이 주최한 인디 게임 페스티벌에서 Top3, 유니티 프라이즈에 매겨지기도 했다. 또한, 출시 3개월 만에 다운로드 70만을 돌파해 중국을 비롯한 중화권과 미국에서 인기를 끌고 있다.

※ 기사는 강좌 특성상 편한 전달을 위해 강연자 시점에서 서술했습니다.

■ Unity Story: 인디 개발자 고군분투기



▲ 유닛5 최준원 대표

사실, 강연 제의가 처음 들어왔을 때는 거절하려고 했습니다. 이런 자리에서는 성공기나 팁을 전해 드려야 하는데, 아직 유닛5는 성공하지도 않았고 갈 길도 멀었으니까요. 그래서 처음에는 거절했다가 '고군분투기'라도 들려달라고 해서 이 자리에 섰습니다. 그중에서 도움이 될만한 내용이 있을지는 모르겠습니다. 그저 지난 4년 동안 해왔던 일들을 정리해서 말씀드리고자 합니다.

유닛5는 두 명이 창립한 회사입니다. 두 명 모두 게임 관련 업종을 거치진 않았어요. 이후에 다섯 명까지 늘어났습니다. 저희 회사의 슬로건은 'Create&Challenge'인데요. 뭐든 만들어서 팔아보자는 의지가 담겨있습니다. 회사 이름인 유닛5는 무엇을 만들든 가장 효율적인 인원이 5명이라 생각해서 그렇게 지었고요.

저희 회사의 대표작은 '큐비 어드벤처'입니다. 이 게임으로 작년 인디게임페스티벌 Top3와 유니티 프라이즈, BIC 등에서 수상했습니다. 게임 자체는 빅히트 작품까지는 아닙니다만... 이 게임이 어떻게 만들어졌고, 어떻게 행사에 나갔고, 어떻게 발전시켜 나갔지를 소개하고자 합니다.



"왜 유니티였냐고요? 대안이 유니티 밖에 없었습니다"

시작은 메모지에 끄적인 아이디어들로부터 출발했습니다. △레이싱 게임을 만들자 △모바일에서 터치 하나만으로도 조작할 수 있게 만들자 △멈추기, 턴, 점프 등을 넣으면 재밌지 않을까? 등이 메모지에 적혀있었죠. 개발은 'Unity 3.0'로 시작했습니다. 왜 유니티였냐고요? 대안이 없었어요. 3D로 만들어야 했는데 유니티만이 지원했었고, 무료에다가, 도큐먼트가 잘 되어 있었으니까요. 플래시를 다뤄본 적이 있어 유니티 스크립트를 빠르게 배울 수 있었단 점도 하나의 이유입니다.

조작은 굉장히 단순하게 만들었습니다. 콘솔의 스틱 느낌을 원터치로 하는 게 컨셉이었어요. 지금은 흔할 수 있는 '원버튼' 방식인데, 당시엔 굉장히 참신하다고 생각했습니다. 초기 컨셉에 차 종류를 늘리고 레벨 디자인을 한다면 재밌는 게임을 만들 수 있을 거로 여겼습니다.



▲ 디자인, 조작, 장애물 등이 담긴 초기 컨셉



▲ 한 장의 아트워크에서 디자인 영감을 받았다

저희가 모델링 전문가는 아니어서, 개발 초기에는 프로토타입만으로 시작했습니다. 첫 번째 프로토타입은 유니티 내 기능인 박스와 쿼드로만 제작했었죠. 유니티 스크립트로 가볍게 시작했습니다. 프로토타입만으로 당시 지스타에 참가했는데... 3곳의 퍼블리셔로부터 미팅 요청을 받았습니다. 인디로 시작했는데 시드머니까지 받게 됐죠.

이가 없으면 잇몸으로: 할 수 있는 것으로 만들기

○ 초기 프로토타이핑
Unity의 Box + Quad로 기본 프로토타입 제작
UnityScript로 가볍게 제작

○ 프로덕션 모델링
SketchUp으로 모델링
자동차이니까 애니메이션은 필요 없음

○ 유니티에 적응
GUI 환경을 익히기 위해 기본 메뉴얼 탐독
C#으로 제작 환경 구성

추가 차량은 수집욕을 자극할 수 있도록 귀엽고 아기자기하게 만들었습니다. 이것만으로도 게임 콘텐츠가 될 수 있도록요. 차만 만드니 너무 딱딱한 거 같아서 부가적인 수집이 되도록 펫도 만들었습니다. 특별한 세계관 없이 이것저것 귀여운 걸로 만들었어요. 이때 만든 펫들이 이후 아트워크에 많이 적용됐습니다. 그동안은 고정된 모델링으로 스케치 업을 했었는데요. 펫을 만들면서부터 애니메이션 작업을 내부에서 했습니다. 이때 익힌 애니메이션 노하우가 큐빅에 적용되고도 했고요.

이때 고민이 들었던 게, 인원이 적다 보니 레벨 디자인이 힘들다는 점이었습니다. 그래서 개발 초기였지만 쉽고 편하게 디자인할 수 있는 레벨 에디터를 만들어 사용했습니다. 레벨 에디터의 목표는 '10분 안에 기획에서 결과까지 나오게 하자'입니다. 이후 유저가 직접 레벨을 제작할 수 있도록 준비했습니다.

그리고 레이싱 게임이니까 당연히 유저 간 경쟁이 있어야 한다고 생각해 '고스트 레코딩' 로직에 기반을 둬 멀티플레이 구현을 비동기로 개발했습니다. 지속적인 로직 개선으로 고스트의 사이즈를 최소화했습니다. 게임 코어의 특성상 실시간 경쟁은 기술적으로 불가능하다고 판단했습니다. 밀리세컨드 단위의 90도 턴(turn)을 멀티플레이에서는 원활하게 할 수 없더라고요. 억지로 구현할 수는 있겠지만... 플레이 상태에서 같이 달리는 느낌이 덜했습니다.

이후 국내 퍼블리셔와 사업을 진행하면서, 클라이언트 베이스를 서버+클라이언트 구조로 변경하는 작업을 거쳤습니다. 유닛5에는 서버 프로그래머가 없다 보니 반강제적으로 서버 작업까지 하게 됐죠. 외주로 맡겨는 봤는데 다 실패해서... 내부에서 소화했습니다. 지나고 보니 이렇게 고생한 게 노하우가 되더라고요.

글로벌 런칭 준비는 페이스북 소셜을 이용해 테스트를 진행했습니다. 유저의 행동을 MAP의 위치에 기록하는 방식으로 조회했습니다. 그런데, 실제 글로벌 유저의 플레이 패턴이 저희 예측과 너무 달라서 당황했어요. 스테이지1부터 10까지를 준비했는데, 1을 넘어가는 유저가 1%도 안 된다는 게... 다들 생각보다 이 게임을 어려워한다는 걸 그때 처음 알았습니다. 저희는 원버튼 게임에 심플하니 쉽게 플레이할 거라고 생각했으니까요.



▲ 페이스북 글로벌 테스트로 배운 교훈



▲ 교훈을 통해 개선 방향을 찾자



▲ 개선 방향이 적용된 게임 코어

캐릭터가 중요하다고 생각해 처음엔 L사의 캐릭터를 일단 이용해 문의했습니다. 저희 나름대로는 괜찮다고 생각했어요. 데모 영상까지 제작해서 문의했지만... 결과는 실패했습니다. 캐릭터 정책이 '각진' 캐릭터는 안 된다고...

그래서! 직접 만들었습니다. 새로운 캐릭터를 만들어 기존의 펫과 같은 느낌으로 구현했죠. 기존의 펫과 같은 느낌이 난다면 충분히 가능성이 있을 거로 생각했습니다. 캐릭터 제작은 2달 정도 걸린 거 같아요. 원하는 느낌이 처음엔 안 나왔는데, 어느 순간부터 딱! 나오기 시작해 캐릭터 라인업을 만들었습니다.

캐릭터가 쌓이자 세계관과 컨셉을 잡기 시작했습니다. 나름의 스토리도 갖추었고요. 주요 캐릭터들의 관계도와 세부 설정까지 만들었습니다. '루루'라는 캐릭터는 원시인 사냥꾼 소녀를 컨셉으로 제작됐는데요. 직접 사냥한 토끼를 모자로 쓰고 다닙니다. '복서 랜디'는 난폭해 보이지만 마음은 여린 캐릭터죠.



▲ 게임 모드 역시 콘솔 형태를 취해 다양한 버전을 준비했다



▲ 글로벌 취향에 맞도록 메인 UI와 로비 화면까지 새로 제작



▲ 최고의 피드백은 유저에게서 나오니, 행사엔 튜토리얼을 준비해 참가하자

최종 단계에서 고생한 건 역시 '최적화'입니다. 고생한 포인트는 △전 세계를 대상으로 하는 △캐주얼 게임이라는 점이에요. 용량은 무조건 적어야 하고, FPS는 최대로 나와야 했죠. 목표 drawcall은 20을 잡고 옵티마이징을 했습니다.

여기서 한가지 일화를 소개하면, 모 게임사의 개발자에게 "drawcall은 몇으로 잡고 개발해?"라고 물어 보니 "우린 10으로 잡아"라고 답변하더군요. 그래서 저희도 10을 목표로 작업을 했는데, 나중에 알고 보니 UI만 drawcall이 10이었던 거에요. 정말 그거 때문에 한 달은 고생했는데.. 그래도 이때 심하게 옵티마이징 했던 경험이 큰 노하우가 됐습니다.

최적화... 최적화... 최적화...

○ drawcall 최적화: 목표 20 이내, FPS는 최대
UI와 인게임 모든 요소의 material을 줄이고
모든 material을 vertexlit / directional only로

○ 물리 엔진 사용 최소화
Unity 내장 물리 엔진을 사용하지 않고, 모든 collider 류를 최적화해 다시 그림
character controller를 기반으로 모든 움직임을 개선

○ 그림자 최적화
projection shadow 최소 사용
대부분의 그림자는 FakeShadow를 제작해 사용

○ Object Pooling
UI부터 인게임 모든 요소까지

최적화 작업까지 끝낸 이후에 글로벌 퍼블리싱을 받으려 했지만, 모두 무산됐어요. 그래서 직접 글로벌 출시를 진행했습니다. 직접 출시를 위해 내부에서 할 수 있는 모든 것을 진행했죠. 공모전과 전시가 있으면 무조건 지원했고, 각종 커뮤니티에 홍보를 시작했고, 피처드가 될 수 있는 모든 일을 했습니다. 여러분께도 일단 기회가 생기면 해볼 수 있는 모든 것들은 다 해보길 권합니다.

마지막으로 유닛5가 적은 인원으로도 운영과 업데이트를 꾸준하게 할 수 있던 비결을 소개합니다. 저희는 가능한 자동화 기능을 많이 사용했어요. 형상, 업무관리나 빌드 자동화, 데이터 배포, 로컬 DB 등 만들건 만들고 좋은 게 있다면 얼마든지 이용했죠. 아직까지 큰 성과는 아니지만, 글로벌 서비스를 하는 데 있어서 5명이서 큰 무리 없이 진행했습니다. 이런 자동화 작업이 없었다면 절대 못 했을 일들이라 전해드립니다.



"핸드폰 알림 기능까지 있다면 더 좋아요"

댓글

새로고침
새로고침

기사 목록

1 2 3 4 5