002.jpg

 

유니티 게임 엔진의 개발자를 위한 이벤트, 유니티 재팬 2014의 첫날인 2014년 4월 7일에 '콘솔 타이틀을 유니티로 이식. 드래곤 퀘스트 VIII의 이식에서 배운 대규모 개발 기술'이라는 세션이 열렸습니다.

 

강연 내용은 제목 그대로입니다. 2004년에 PS2로 나온 드래곤 퀘스트 8을 유니티에 의해 스마트폰(iOS와 안드로이드)로 이식했던 경험을 개발팀이 해설한 것입니다. 유니티 행사이긴 하지만 유니티 이야기 뿐만 아니라 콘솔 게임기용으로 만든 게임 인터페이스를 어떻게 스마트폰용에 맞춰 바꿨는지에 대해 흥미로운 이야기가 나왔습니다.

 

큰 차이가 나는 하드웨어와 운영체제로 어떻게 드래곤 퀘스트 8을 인식한 것일까요? 프로그램, 디자이너, 게임 디자인으로 나눠 소개합니다.

 

 

PS2의 오리지널 리소스 대부분을 계승

 

003.jpg

 

드래곤 퀘스트 8 스마트폰 버전의 메인 프로그래머, 이토 슌스케

 

강연의 첫번째 부분인 프로그램 편 메인 프로그래머인 이토 슌스케가 담당했습니다.

하드웨어가 큰 차이가 나면 프로그래밍 언어도 그만큼 다를 수밖에 없습니다. PS2용 게임을 스마트폰으로 이식하기 위해선 코드의 전면적인 구조는 물론 에셋(게임 안에서 쓰이는 이미지 등의 데이터)의 종류도 고쳤을 것이라 생각하기 마련인데, 실제로는 PS2 버전에서 쓰인 코드나 에셋 대부분을 그대로 써서 만들었다고 합니다.


오리지널 코드는 C++로 만들었지만 유니티의 개발에선 C#을 썼다고 합니다. C++과 C#는 같은 C계열이라고는 해도 실제로는 상당한 부분이 다른 프로그래밍 언어입니다. 거기에 오리지널 코드의 파일 수는 소스와 헤더를 합쳐서 수백개 이상이라서, 수작업으로 이식을 하려면 막대한 시간을 필요로 합니다. 그래서  C++에서 C#로 변환하는 컨버터를 먼저 만들었다고 합니다.


이 컨버터는 C++의 문법을 C#로 변환하는 것이며 아주 복잡하거나 수준이 높은 툴은 아닌 듯 합니다. C++에서 C#로 문법의 기본적인 변환에 추가로 UTF-8의 BOM(Byte Order Mark) 색인을 만드는 기능도 있다고 하네요. 유니티에서 BOM.UTF-8의 코드로 쓰지 않으면 일본어가 깨지기 때문.

 

004.jpg

 

오리지널 코드는 수백가지가 존재하며 컨버터를 만들어 C#으로 변환

 

컨버터를 이용해 인력을 제법 줄일 수 있었다고 하지만 변환만으로 작업이 끝난 것은 아닙니다. 프로그래머의 수작업이 필요했던 부분도 있었지요. PS2 버전의 렌더링 라이브러리는 수작업으로 치환 작업이 필요했다고 하네요. 또 C#으로 변환이 잘 안되는 함수의 경우 함수를 코멘트 아웃해 C#으로 컴파일이 가능하도록 만든 후 수작업으로 다시 만들기도 했었다고.

 

단순 변환만 하면 당연히 성능이 떨어지게 됩니다. 이 부분은 프로그래머가 최적화 작업을 따로 해야 합니다. 성능을 느리게 하는 부분을 루프 밖으로 뺀다던가 등등.

 

특히 큰 수정이 이루어진 부분은 DVD에 최적화된 PS2 버전의 처리를 스마트폰에 맞추는 것이었다고 합니다. 이게 상당히 큰 요소가 됐다고 하네요.

 

PS2는 메인 메모리 용량이 32MB밖에 없어 ODD에서 데이터를 자주 불러와야만 했습니다. 그래서 게이머가 로딩을 기다리지 않도록 프로그램을 짜는 게 중요했습니다. 그러한 부분을 스마트폰에서 어떻게 바꾸는지는 프로그래머의 수작업이 빠지지 않을 수가 없었다고 합니다.

 

 

스크립트를 만들어 경량화 작업을 수행

 

005.jpg

 

디자인을 담당한 카네코 아츠시

 

다음은 디자인을 담당한 카네코 아츠시입니다. PS2 버전의 리소스를 유니티 버전으로 변환하는 작업이 어떻게 이루어졌는지를 설명했습니다.


먼저 디자인 작업에선 데이터의 경량화가 중요했다고 합니다. PS2 버전은 DVD 미디어를 사용하지만 스마트폰 버전은 인터넷에서 데이터를 다운로드하기에 데이터의 양을 줄여야 했다네요.


또 PS2 버전의 데이터는 하드웨어의 특성상 드로우 콜을 신경쓰지 않아도 됐다고 합니다. PS2는 드로우 콜이 가벼웠기 때문에 3D 모델이 그 특성에 맞춰 만들어져 있었는데, 이걸 그대로 유니티를 통해 스마트폰으로 가져오면 쾌적함이 떨어지게 된다고. 그래서 드로우 콜을 줄이는 것까지 포함해 데이터의 경량화가 필요했다고 합니다.

 

007.jpg

 

PS 버전에서 스마트폰 버전으로 모델 데이터 변환을 해설한 슬라이드. 왼쪽이 PS2, 오른쪽이 변환 후

 

실제 작업에서는 PS2 버전의 데이터에서 모델 데이터와 조직을 스크립트로 변환하고 유니티에 넣은 후 경량화 작업을 거쳐 이용한다고 합니다. 변환이나 경량화는 스크립트를 사용해 가능한 한 자동화 처리, 데이터의 양 치고는 매우 적은 인원으로 작업을 수행했습니다.

 

006.jpg  

 

주요 데이터 변환/경량화 작업을 나타낸 슬라이드. 스크립트를 사용해 자동으로 변환하는 구조를 구축

 

애니메이션 역시 경량화가 필요했으며 이쪽도 많이 자동화 작업이 들어갔다고 합니다. 스케일 애니메이션의 변환을 예로 들면 트랜스폼의 스케일 애니메이션을 버텍스 쉐이더에 넘기고 버텍스의 위치를 움직여 확장하도록 바꾸는 것 만으로 60ms 정도 걸리던 처리가 15ms만에 끝났다고 합니다.

 

009.jpg 

 

PS2 버전에선 4600개의 쉐이더를 사용했습니다. 쉐이더의 예측 방식에 따라 쉐이더의 수를 줄이지 않고 성능의 문제를 해결할 수 있었습니다.

 

데이터뿐만 아니라 쉐이더도 경량화할 필요가 있었다고 합니다. PS2 버전에서는 쉐이더를 통해 텍스처의 애니메이션이나 블렌딩에 사용하고 있어 4600개의 쉐이더를 썼다고 합니다. 그래서 런타임에서 쉐이더를 컴파일하는 영상이 버벅거리는 문제가 생기게 됐는데, 이건 쉐이더를 예측하는 방법으로 4600개의 쉐이더를 거의 그대로 스마트폰 버전에서 사용했다고 합니다.

 

 

인터페이스는 스마트폰 전용으로 바꿈

 

010.jpg

 

타츠다 켄지

 

타츠다 켄지는 게임 디자인의 사용자 인터페이스에 대해 설명했습니다.


스마트폰 버전 드래곤 퀘스트는 세로 화면 표시를 씁니다. 반면 PS2는 가로 화면이니까 화면 방향부터 다른 것입니다. 세로 화면으로 만든 이유에 는 스마트폰으로 플레이하는 게임이기에 그렇게 했다고.

 

스마트폰 사용자는 귀찮다고 생각이 든 순간 조작을 멈추고 그만두는 경향이 있다고 합니다. 그래서 스마트폰을 가로 방향으로 돌려야만 플레이할 수 있는 게임이 아니라, UI 개발 과정을 거쳐서라도 일반적인 스마트폰 사용법과 같은 세로 형태의 UI를 만들었습니다.

 

012.jpg

 

스마트폰에서 부담없이 즐길 수 있도록 인터페이스를 대폭 변경

 

스마트폰 버전 UI에서 주목할 점은 2개가 있습니다. 하나는 NPC와의 대화입니다. 터치 패널로 가상 게임 패드를 조작할 경우엔 의도대로 캐릭터를 움직이지 못할 수 있습니다.

 

그래서 NPC가 원만하게 대화할 수 있도록 대화가 가능한 NPC엔 풍선 팝업을 넣어 눈에 잘 듸도록 한 후, 그 NPC와 가까워지면 대화가 가능하다는 걸 알려주는 원을 표시, 원 안에서 멈추면 자동으로 대화가 시작하도록 만들었습니다.

 

011.jpg

 

렌더링 관련 개선점. 가상 게임 패드의 한계를 고려해 대화를 시작하기 쉬운 기능을 도입

 

전투에서도 다양한 개량이 들어갔습니다. 자동으로 조작되는 부분을 늘리거나, 앞서 선택했던 항목을 쉽게 고를 수 있도록 했다고 합니다.

 

장거리 이동 시엔 자동 이동 기능을 포함해 계속해서 가상 게임 패드를 누르고 있을 필요가 없도록 했습니다.

 

013.jpg

 

자동화 전투를 추진하고 항목을 고르기 쉽도록 개선

 

스마트폰으로 이식된 게임의 경우 오리지널 타이틀을 충실히 재현하려다가 스마트폰의 특징을 제대로 살리지 못하는 경우가 있습니다. 특히 드래곤 퀘스트 8처럼 네임 벨류가 있는 게임 타이틀에서 조작 계통을 새로 바꾼다는 건 개발자들이 용기를 내야만 가능한 일입니다.

 

 

멀티 플랫폼 대응의 장점은 크지만 이식 과정에서 유니티의 사용은 제대로 검토해야 할 것

 

014.jpg

 

스마트폰 버전의 테크니컬 디렉터인 스퀘어 에닉스의 하다 케이스케

 

강연의 마지막에는 스퀘어 에닉스에서 드래곤 퀘스트 8 스마트폰 버전의 테크니컬 디렉터를 맡은 하다 케이스케가 나와 콘솔 게임을 스마트폰이 이식하는 작업의 전체 과정을 정리했습니다.


우선 이식 작업에 유니티를 사용하는 것이 적합한 게임인지를 알아봐야 한다고 지적합니다. 예를 들어 콘솔 게임은 대부분 프로그래밍 언어로 C와 C++를 사용하는데, 유니티는 C#과 자바스크립트를 씁니다. 이는 코드 전환이 어떻게 되는지를 알아보는 데 중요한 부분이 됩니다. 또 유니티에선 C# 특유의 성능 저하가 있기에 이런 문제도 대처할 수 있는지를 확인할 필요가 있습니다.

 

015.jpg

 

오리지널 버전은 유니티에서 적합하지 않을 수도 있으니, 우선 유니티를 쓸 것인지를 검토할 필요가 있습니다.

 

또 새로운 OS로 무엇을 고를지도 정해야 합니다. iOS와 안드로이드 중 하나만 고르면 그만큼 게이머의 수가 줄어들게 되니, 두 플랫폼 모두를 지원하는 것이 중요하다고 주장합니다. 그런 의미에선 유니티처럼 멀티 플랫폼 대응 게임 엔진을 사용할 경우 매리트가 크겠지요.

 

또 게임이 필요로 하는 기기의 성능이나 스토리지 용량도중요합니다. 특히 게임기에서 이식할 경우 스토리지 용량이 부족할 경우가 많으니 가능한 데이터를 줄일 필요가 있다고 합니다. 드래곤 퀘스트 8의 경우 1.3GB까지 줄였다고 합니다.

 

016.jpg

 

DVD로 나온 PS2 버전을 스마트폰 버전에선 1.3GB까지 압축했으나 설치에는 그 2배의 용량이 필요합니다.

 

이번 강연을 듣기 전까진 현 세대의 고성능 스마트폰이라면 PS2용 게임은 간단하게 구동할 것이란 선입견이 있었으나, 실제 강연을 들어보니 그렇게 단순하진 않다는 걸 알게 됐습니다.

 

게임 이식에 유니티를 사용할지는 게임마다 다르겠지만, 과거의 인기 게임을 스마트폰으로 이식하는 수요는 클 것입니다. 유니티를 통해 많은 명작 게임을 스마트폰에서 플레이할 수 있게 되길 기대합니다.

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.