[기사 본문]
지스타X인벤 게임 컨퍼런스 IGC 2022, 2일차에는 ‘대항해시대 오리진’ 을 제작한 모티프의 이득규 디렉터가 강연을 진행했다. ‘Try & Error: 대항해시대 오리진의 시행착오 개발기’ 라는 제목으로 ‘대항해시대 오리진’ 을 만들어가며 겪은 각종 경험을 공유했다. 워낙 내용이 길어, 흥미로운 비기술적인 내용 위주로 강연자의 입장에서 요약했다.


이번 작품은 제가 처음부터 디렉터로 참여해 완성시킨 첫 게임이다. 기본적으로 이번 강연은 ‘대항해시대 오리진’ 이 개발 발표부터 출시까지 왜 그렇게 오래걸렸는가를 설명하는 내용이기도 하다. 본래 출시 목표는 2020년 12월 출시였지만 CBT도 1개월 밀리고, 출시는 1.5년이 밀린 케이스로, 전체 프로세스를 보면 개발 전 코에이테크모 게임즈와 계약을 만드는데 1년이 걸렸다. 거기에 프로토타입을 만들고 라인 게임즈와 계약하여 계약 2주 만에 2018 LPG 에서 최초 공개했다. 아마 발표 당시에는 오랜기간 만든 게임처럼 느껴졌겠지만 불과 계약 2주만에 공개되었던 것이었다.
개발팀의 규모는 착실하게 늘려 출시까지 개발 인원은 68명, 이번달 채용까지 합치면 대략 80여명이 된다. 기간은 4년 정도 걸렸다. 여기에 협업, 각종 외주 인력이나 서비스, 홍보 등 모든 인력을 합쳐 600명 정도 투입된 프로젝트다.



모티프는 저에게 두번째 창업이었다. 처음 창업 당시에는 회사에서는 내가 원하는 게임을 만들 수 없다는 생각에 뛰쳐나온 것이었고 내가 원하는걸 만들어보자 했지만 일종의 딜레마인게, 정작 창업하면 돈이 없으니 원하는 게임을 만들 수가 없다. 돈을 벌기 위한 프로젝트를 하거나 사람이 부족하고 돈이 없어서 고생하는 현실이 이어진다.
그리고 첫 창업시 그렇게 돈이 다 떨어진 시점에서 넥슨 띵 소프트에서 삼국지 조조전 온라인을 함께 하자고 연락이 왔고, 제게는 선택지가 없었다(웃음). 그리고 그렇게 내놓은 삼국지 조조전 온라인이 피드백이 좋았기에 이제 ‘대항해시대’ IP로 넥슨 내에서 게임을 만들면 좋겠다고 생각했다. 하지만 넥슨에서 따로 계약을 진행하다가 넥슨 내부적으로 진 하지 않는 것으로 결론이 났고, 저는 그게 대항해시대 IP를 활용해 게임을 만들 수 있는 마지막 기회라고 생각했었기에 외부에서 방법을 찾아보자는 생각으로 회사를 차리게 되었다.

다만 이번에는 투자를 확실하게 받아두고 시작하자고 다짐했고, 투자를 받는건 좋은데 처음부터 기반없이 사람을 모으고 모든 걸 쌓아 올리고 회사, 팀을 준비하는 고루한 작업이 이어졌다. 사실 디렉터이기는 하지만 한동안은 기획 실무를 거의 못했다. 제가 각종 비개발 업무들, 인사, 경영, 총무, 등등을 하다보니 개발에 참여하기 어려웠다. 이게 늦어진 첫 이유였던 것 같다. 하지만 꼭 필요한 업무였고, 누군가는 해야하는게 비개발 업무다.
또한 이 시점에서 아직 계약도 안되었는데 창업을 선택한 것에 대해 의문을 가지실 수 있다. 하지만 계약은 회사와 회사가 하는거고 개인에게 IP 권한을 부여하지 않기 때문에, 회사라는 주체가 필요했다. 목표는 1년이었다. 창업 1년 안에 계약이 되면 가는거고, 아니면 망하는거다. 또 빚더미에 않게 생겼다. 넥슨에서 겨우 빚을 털었는데 하는 생각을 했다.
그러나 당시 한 선배가 제게 말해주었는데, 제 나이가 실패가 용인될 수 있는 마지막 나이라는 말이었다. 지금은 대차게 실패해도 다시 취업할 수 있지만, 그 이후는 안된다. 그래서 마지막이라고하니 질러버렸다. 어째 계약이 길어진다 했는데 1년을 채우고 딱 계약이 되었다. 그리고 사람을 구하고, 프로토타입을 다듬고 계약따라 만들어가며 2주만에 프로젝트 공개에 이르렀다.


프로젝트 처음에는 50명 채용을 생각했고 지금은 100명이 필요하다고 생각하는데, 쉽지 않다. 생각대로 구인이 원활하게 된 적이 한 번도 없다. 일단 우리는 스타트업이다보니 안정성에 대한 의문도 있고 쿠팡발 개발자 연봉 인상으로 어려웠던 부분도 있고. 미리 인원을 채우지 않고 필요할 때마다 수급하려 했는데 그 계획은 실패였다. 이제 80명을 채웠는데 그래도 사람이 더 필요하다.
이런 사정이니 아트, 사운드는 최대한 외주로 진행했다. 게임을 만들며 20개 넘는 외주 회사를 돌린 적이 처음이다. 외주 인원만 백단위였다. 또한 기술적으로도 우리는 한계가 있다보니 각종 외부 지원을 받았는데, 삼성전자 무선 사업부에서도 도움을 받아 우리 게임이 좀 삼성폰에 특화되어 있기도 하고, 애플, 구글에도 도움을 받았다. 청강산업대에서도 도움을 얻었다.

그런데 창업 후 첫 워크샵 직전에 코로나 사태가 터졌다. 워크샵을 취소하고 최소 1년 이상의 전사 재택, 부분 재택에 들어갔다. 뭐 일단 원격 근무하는건 좋은데 문제는 채용을 할 수가 없다. 일단 면접이 중단됐고, 원격 면접 등 대체 수단을 찾았지만 채용 후 바로 원격 근무를 하게 되니 개발자 간의 유대감이 없다. 채용된 인원을 포함해 다들 매우 외로운 과정이었을거다. 소통도 매우 어렵고, 이게 과연 잘하는건가 하는 생각도 들었다.

대항해시대 2는 고전 IP니까 리소스에서 재활용할게 없었다. 당시는 기획서를 종이에 연필로 하던때라 기획서도 없고, 백업도 테이프로 되어있는데 깨져서 백업도 못쓰고, 일본어 소스코드를 받아서 개발을 시작했다. 삼국지 조조전 온라인은 이미 입사 시기에 계약 납기를 초과해서 일단 해본거로, 아는거로 최대한 빠르게 만들기 위해 진행했었지만, 대항해시대 오리진은 미리 필요한 기술을 만들 시간을 잡았다. 하지만 해본적 없는 걸 시도 하니까 제대로 되는게 없었다.


기본적으로 게임은 언리얼 엔진 커스텀을 사용했는데, 유니티 엔진은 구인이 쉽고 제작이 빠른 장점이 있었지만 퍼포먼스에서 아쉬움이 있었고 이번 프로젝트는 그래서 언리얼로 하기로 했다. 하지만 문제는 언리얼은 생각보다 개발 기간이 오래걸린다는 것. 엔진ㅇ,ㄹ 업데이트 하고 버그 수정하고 사후 대응하는 것만 해도 개발 일정이 1년 넘게 들어가더라. 그냥 순정 언리얼을 썼으면 1년 아꼈을 텐데싶으니 지금와서는 잘한걸까 라는 생각이 들기도 했다. 물론 언리얼이라 가능한것도 많았다. 결국 선택과 집중이라고 생각한다.


언리얼 엔진의 최신 버전이 나오면 바로 가기보다는 반년 정도 기다리고 안정화되면 적용하는 쪽으로 개발 방향을 전환했다. 내년에는 차세대 버전 엔진을 적용할 예정이다. 4.26 버전을 올리니 프레임이 반토막이 나고, 이 버그 핫픽스 등에 시간 소모했다. 4.27 버전은 갑자기 생긴 문제가 불과 이틀 전에 고쳐졌다. 이런 문제들이 발생한다. 또 서드파티 플러그인이나 SDK 도 엔진이 업데이트 된다고 바로 올라오지 않는다. 사용하던 서드파티가 업데이트를 안하면 기능이 막히고 그러다보니 기능을 걷어내기도 한다.

비즈니스 모델도 크게 3차례 변경했다. 처음에는 워게임 스타일에 삼국지 조조전 온라인 스타일의 수집을 넣었다. 하지만 그 반응이 좋지 않아 그 다음에는 1차 클로즈 베타에서 확률형 BM을 넣었다. 이제 2차 클로즈 베타 테스트에서 확률형 BM 요소를 다 걷어내고 거래소 중심의 현재 형태를 넣었다. 앞으로는 지역별로 어떻게 차별화를 할 수 있을까 고민중이다.


외부 협업은 참 어렵다. 한국에서도 말이 안통하는데 해외는 오죽할까. 한 번은 러시아 아티스트와도 협업했는데 정말 어려웠다. 커뮤니케이션 자체가 힘들다. 이 과정에서 도움 받은게 슬랙이나 라인 같은 메신저들인데 실시간 번역을 지원한다. 이 기능들로 많은 커뮤니케이션을 하면서 일주일에 2번씩 컨펌, 추가로 화상회의, 각종 소통을 이어갔다. 그래서 일정은 늦춰졌지만 아웃풋은 납득 가능했다.
중국 판호 심사 빌드를 초기부터 추진했고, 바꾸어야 하는 부분이 매우 많았다. 지형도 달라야 하고 지명도 다르고, 중국 가이드에 맞춘 여러가지 수정사항이 있었는데, 정세가 안좋아서 심사를 넣지는 않았다. 이 작업을 하지 않았어도 반년 정도는 아꼈을 듯 하다. 이 뿐만 아니라 각 국가에서 이것저것 제도적으로 요구하고 필요로 하는게 많았다. TGS 2020 온라인 출품도 원래 예정에 없었는데 갑자기 진행됐고, 이 준비에만 1.5개월정도 시간을 썼는데 빌드가 역대급으로 불안정했던 시기였다. 내부적으로 절대 가짜 영상 만들지 않는다. 실제 플레이만 캡쳐한다는 기준으로 엄청나게 리테이크 했는데, 영상을 따로 만드는게 훨씬 빠를 뻔했다.

재난, 사건사고도 많았다. 반도체 수급이 어려워서 입사가 딜레이되는건 애교였다.
새로 오신 분이 서버실 에어컨을 꺼서 서버가 다 터져버렸다. 그런데 그걸 보고도 안하고 몰래 A/S를 받았는데, 동일한 장비를 쓰면 수리비가 비싸니 하위 등급으로 바꿔서 받은거다. 어느날 제가 보는데 서버 퍼포먼스가 안나온다. 그래서 업체에 전화를 했더니 저번에 사고나서 바꾸셨잖아요? 하는데 전혀 모르는 소리인거다. 결국 조사해서 당사자는 퇴사조치하고…(한숨) 정말 충격적인 사고였다.
또 저희가 이사를 많이했는데, 항상 서버를 꼭 제가 직접 옮겼다. 그러다 한 번 맡겼는데 누가 발로 차서 스토리 서버가 날아갔다. 안에 20테라 가량의 데이터가 들어있었는데 그 20테라가 없어지면 3년간 만든게 날아가는 상황이었다. 집에도 못가고 서버만 붙잡고 일주일동안 복구하면서 다같이 기도하면서 기도메타로 사무실에 살다시피했다. 다행히 운좋게 복구가 되었는데, 정말 수명이 깎인 기분이었다. 대략 이런 사고가 반년에 한 번 정도씩 일어났는데, 지난 10월에는 건물이 전기 검사를 했는데 전기가 안들어와서 4일간 업무를 못했다.


이제 게임 측면에서 이야기하자면, 게임의 기본 컨셉이 다이나믹, 세계가 동적으로 변화하는걸 만들고 싶었는데 여러모로 만들어놓고 티가 안나는게 많았다. 먼저 둥근 지구를 만드는 것 자체는 잘 되었고 바다는 흡족하게 나왔는데, 도시를 둥글게 하려니까 영 결과물이 나오지 않았다. 리소스는 많이 들어가는데 예쁘지가 않고, 그래서 쿼터뷰로 다시 만들었다. 제가 미련이 있어서 3개월 단위로 기간을 더 투자해서 총 9개월을 버렸다.
또 맵이 크다보니 시간, 계절, 그림자 등 동적 변화를 표현하기 위해 실시간 동적 라이팅을 고려했다. 문제는 테스트를 좀 해볼까 했는데 라이트맵 용량이 수기가 넘더라. 게임 목표 사이즈가 2기가인데… 그래도 라이트매스 같은 기능이 아니라 동적 조명을 꼭 원했기에 모바일 디퍼드 렌더링을 직접 만들어서 썼다. iOS는 메탈, 안드로이드는 불칸으로 직접 제작했다.




항해 지형 생성도 지구 전체를 모델링하는건 너무 고단한 작업이라 자동적인 절차 생성을 시도했는데 역시 불가능했다. 그래서 다 사람 손으로 직접 모델링했다. 이게 모두 인간의 힘이다. 항해 지형, 전투 지형의 HLOD 도입도 문제가 있었는데, 에픽 게임즈에서 적극 권장하고 퀄리티도 좋고 모두 훌륭하지만 용량만큼은 절대 안잡혔다. 용량 목표를 도저히 맞출 수가 없었다.
특히 전투 관련해서는 많은 부분의 개선이 있었는데 결과적으로 25% 가량의 용량 증가가 있었지만 퍼포먼스에 비하면 만족스럽다고 생각한다. 전투로직과 선박 부하도 최적화하여 메모리 많으면 듀얼 스레드, 메모리 부족하면 싱글 스레드로 진행하고 전투 당 선박 대수도 제한하고 각종 선박의 부품도 최적화했다.




게임 전체의 바다 환경 표현에 거의 목숨을 걸었는데, 보기만해도 바다가 어떤 상태인지 알려주고 싶었다. 해류, 파도, 바람 등 실제 실시간 지구의 바다 환경에 따라서 게임에도 적응하고 싶었다. 그런데 환경 데이터가 생각보다 컸다. 또한 전지구 스캔도 오래걸리기에 동시에 수집되지 않고, 이걸 실시간으로 전송해서 쓰는건 말이 안된다. 태풍이 오면 측정기가 날아가기도 하고, 1년치 데이터가 있어도 전지역에 균등하게 분포해 있는게 아니다.
웨더데이터를 파는 회사들의 데이터는 정리가 잘 되어있는데 무료 데이터들은 기준도 제멋대로, 정보도 정리도 안되어 있다. 어떻게 환경 데이터 3년치를 마련하긴 헀는데 적용 방법이 없었다. 너무 용량이 크다. 그래서 한달 단위로 낮과 밤의 기준 데이터를 땄다. 어쩔 수 없이 정밀도를 줄이고 줄이고 줄였는데도 200메가였다.



이제 이걸 바다에 적용해서 보여야 한다. 바다 지역에 따라 색도 다르고, 해류의 흐름도 표현했다. 실제로 가진 데이터에 따라 바다가 움직이고 있고 수심 깊이, 파도 방향이 적용되고 있다. 바람은 눈에 안보이니 고전적으로 파티클로 표시하고 깃발 방향 돛 방향으로 보여주고 UI에도 추가하기도 했다. 그런데 많이 시간 투자했는데 티가 영 안나는게 아쉽다.
번인 방지에도 많이 신경 썼다. 80시간 항해하면 번인이 오더라. 그 때문에 항해 연출도 들어갔고 시각 변화를 더 극적으로 한 색상이 계속 화면을 채우지 않도록 했다. 게임의 메모리 관리도 핵심으로 데이터가 워낙 많아서 메모리 사용량이 많았다. 런타임 메모리가 590메가로 작은 폰에선 돌아가지도 않았다.

길찾기 성능 문제도 있었다. 지구 위의 길을 찾는데 지구를 구형으로 순환하게 만들었으니 가장 짧은 길을 찾게 되는데, 현재 제일 길 복잡한 루트로 찍으면 연산에만 3분이 걸린다(웃음). 그래서 한번에 연산하지 않고 쪼개서 연산하도록 바뀌었다. 최종 도착 시간 표기를 포기하고 항해 도중에 계속 연산을 수행하도록 했다.


수많은 시행착오 외에 성공적이었던 시도도 있었다. 언리얼 스크립트 도입이 그중 하나인데 언리얼은 풀 컴파일이 너무 오래 걸리기 때문에 매번 컴파일하지 않아도 되는 개발 환경을 구축했다. 패치에서 코드 변경도 가능해졌고, 다만 현재 쓰레드 및 언어 표현성 문제가 있어 변화가 필요하다고 생각한다.

크래시 리포트와 로그도 자체 수집을 굉장히 많이 하고 있는데 에러 로그가 클라이언트에서 발생하면 서버에 누적된다. 그렇게 오류율이 높은 버그부터 수정하고 있다. 패치노트에 보면 재현 조건이 이상한 버그가 있는데 이걸 어떻게 알았냐? 하시는데 보통 이건 크래시 리포트를 추적해서 고친 사례다.

이미지 퀄리티를 몇차례 올렸는데, 이게 도저히 외주로는 견적이 안나와서 머신러닝으로 해상도, 퀄리티를 놀리는 걸로 결정했다. 결과적으로는 상당히 만족한다.

처음 제가 발표 자료를 만들었을 때 PPT가 200장이었다. 발표 시간에 맞춰야해서 깎았는데 정말 할말이 많았다. 지금도 여러가지로 시행착오 많이 겪었고 많이 겪고있는데 그로 인한 문제를 최소화하려고 노력중이다. 개선하고 게임을 잘 만들고, 게임을 통해 사회에 좀더 긍정적인 변화나 영향을 끼칠 수 있었으면 한다는 바람이다.
|
이명규 기자 sawual@ruliweb.com
|