「매년 릴리스 하는 것이 숙명 이었던 타이틀」이라고 말해지는 「용과 같이」시리즈.
「매년」이라고는 말해도 실질적인 개발 기간은 10개월. 게다가 퀄리티는 유지하기는 커녕 새로운 향상이 요구.
그러한 가혹한 상황 하에서 어떻게 타이틀을 세상에 내보낼까? 그
내막이 밝혀졌다
본 세션은 「개발 환경편」 「기초 기술 라이브러리편」 「디버그편」의 3부로
완성되며 다루어지는 내용은 2008년 이후에 발매되었던 PS3 타이틀에
관한 것.
「PC에서의 대체 개발이 자랑」―개발 환경편
「개발 환경의 개선은 얼마나 시간을 줄일까에 있다」라고 한다. 그 때문에 포인트가 되는
것은 자원 관리의 고속화, 빌드 시간의 단축, PC에서의
대체 개발, 그리고 코딩 하기 쉬운 환경 만들기의 4개라고
한다.
「용과 같이」의 개발에서는 수 100GB의 방대한 자원이 LAN을 통해서 움직인다. 그 대응으로는 고성능 서버나 서버 네트워크가
도입되고 있다. 코스트를 아까워하지 않고, 신뢰성 높은 것을
선택하는 것에 의해서 결과적으로 시간이 단축.
또, 독자적인 자원 관리 툴 「TiVersion」를 작성. 이것은 최대 5 노드와 P2P 접속을 실시하는 것으로 서버의 부하를 경감. 직종에 따라 필요한 파일이 다르기 때문에 이 툴에서는 필요한 파일만을 선택적으로 복사하는 기능도 있다라는 것. 다만 백업 등은 서버로 관리하기 때문에 버젼 관리에 대해서는 기본적인 기능 밖에 없다고 한다.
「용과 같이 4」에서는 소스 코드가 약 120만행 있었다고 한다. 거기서 빌드 시간의 단축이 중요하게 되는데
이것에 대해서는 빠른 단계로부터 분산 빌드 시스템을 도입하고 있다고
한다. 결과 빌드 시간이 10분의 1로 단축되었다고 한다. 그리고 64bit OS를 도입하는 것으로 링크
시간도 단축되었다는 것.
3번째의 「PC로의
대체 개발이 자랑거리」라는 카쿠씨. PS3 개발기의 기동에는 수십초 걸리고 이것이 쌓이고 쌓이면 방대한
시간이 된다. 또 섬세하게 디버그를 하고 싶다고 하려는 의도와 원래 개발기 자체의 코스트가 비싸지 않으므로
PC로의 대체 개발을 추진하고 있다라는 것.
그리고 코딩 하기 쉬운 환경 만들기. 「용과 같이」개발 팀에서는 프로그래머에게 부과되는 코딩의 룰은 매우 느슨하다고
한다. 일정 기준 내이면 자유롭게 코딩 할 수 있는 것으로 개인의 실력을 발휘할 수 있는 것과 동시에
모티베이션의 유지가 되어 있다고도 말한다.
또, 팀 내의 커뮤니케이션과 육성에도 배려하고 있다. 「용과 같이」에 관련되는 프로그래머는
35명. 위로는 경력 23년차으로부터
아래는 신인까지 있다. 거기서 당구나 다트라고 하는 게임 중의 「플레이 스포트」부분을 신인에게 맡기는 것으로 신입을 육성하였다.
파티션을 만들지 않고 잡담하기 쉬운 환경인 것도 중요하고, 질문 보고를 부담 없이 실시할
수 있다고 한다.
「PC에서 PS3 게임을
개발하기 위해서」 ― 기초 기술 라이브러리편
개발용 멀티 플랫폼 라이브러리에 관한 것. 여기서 말하는 「개발용」이란
제품의 릴리스를 목적으로 한 것이 아니고, 어디까지나 개발 향상을 목적으로 한 것임을 의미하고 있다. 「PC에서 PS3의 개발을
행하기 위한 라이브러리」라고 바꾸어 말할 수도 있다.
이러한 라이브러리에 요구되는 요건으로서는 PC·PS3 공통의
소스 기술을 할 수 있는 공통의 메모리 사용량이다. 거동이 같고 바이너리 데이터도 동일한 것을 사용할
수 있다. Directx9에서도 동작하는…이라는 것이 있다.
소스 기술에 대해서는 공통의 형태를 준비. 플랫폼이나 컴파일러에
의존하지 않고 같은 형태는 같은 것으로서 취급할 수 있도록 한다. 특징적 것은 vf128이라고 하는 벡터 플로트형의 변수로 이 형태를 계승한 반환 값으로 사용하는 것으로 효과를 얻을 수 있다고
한다.
또, 컴파일러 의존의 기술은 매크로로 흡수한다. 예를
들어 강제 인 라인으로 쓰는 방법은PC(Visual C++)와 PS3(DCC)에서
서로 다르며 데이터 정렬에서는 정의의 앞에 쓰는 것과 뒤로 쓴다고 하는 차이가 있다. 이러한 차이를
매크로로 대응한다는 것.
게다가 내부 클래스의 메모리 사용량을 맞추는 궁리가 이루어지고 있다. 메모리 사용량의 큰
플랫폼에 맞추어 어플리케이션 사용 메모리를 동일하게 취급할 수 있게 되어 있다.
API나 하드의 차이를 흡수하여 PC 위에서의
거동을 PS3으로 동등하게 하기 위한 예로서는 실제의 원시 코드가 스크린상에 비추어져 PC 위에서도 PS3에서 같은 렌더링 패스를 실행할 수 있는 것이 표시되었다. 「고속이라고 하기에는 미묘하지만 같은 거동을 실현하고 있다」라고 한다.
「용과 같이」의 팀에서는 쉐이더 작성을 프로그래머가 한다. 쉐이더의 총수가 너무 증가하는
것 을 억제하려는 의도와 장황한 쉐이더를 사전에 배제하려는 목적이 있다고 한다. 쉐이더 소스 코드 자체는
공통으로 쓸 수 있게 되어 있어 PC,PS3에 가세해 DCC 툴용의
쉐이더도 같은 원시 코드로 움직인다라는 것. 쉐이더의 컴파일러는 컴파일러의 차이를 흡수하는 프론트 엔드를
준비. Visual Studio로부터 PC용의 fxc.exe와 PS3용 sce-cgc.exe
각각의 커멘드 라인 호출을 실시할 수 있다고 한다.
또, 그 쉐이더가 무엇을
하고 있는지 이름으로부터 판단할 수 있도록 룰화 된 이름으로 취급하도록 하고 있다. 당초는 디자이너로부터
저항이 있을 지도 모르는 생각했지만 곧바로 익숙해질 수 있었다고 한다. 「애매한 말투로 발주가
오지 않게 되었으므로 작업의 효율화가 진행되었다」라고 하는 이점도 있다.
최적화에 대해서는 PC와 멀티 플랫폼 환경은 유지하는 게임 개발자에게는 가능한 한 부담을
주지 않는, 효과 큰 최적화를 작업한다라는 이 3개의 지침에
따라 진행되었다.
「용과 같이」에서는 잡다한 길거리를 표현하기 위해서 오브젝트 수나 매테리얼 수가 많아져, 장면에
따라서는 렌더링 커멘드의 발행 회수가 12000회에 달한다. 그대로는
GPU 렌더링 전에, PPU셋업 처리가 늦어지기 때문에 시간이
걸리는 PPU의 처리를 SPU로 했다고 한다. 실제로 SPU로 옮긴 처리의 예로서 모션 처리, 씬의 컬링 처리, 정점 쉐어더 셋,
프라그먼트 쉐이더의 정수 패치 등을 들 수 있다.
「프로젝트 운용을 지원하는 기술」 ― 디버그편
「용과 같이」의 디버그 환경에 관한 이야기. 「용과 같이」에는 디버그를 위한 주된 기능으로서
시점을 변경하는 디버그 카메라, 실행 페이즈를 일시 정지하는 디버그 스톱, 각종 파라미터를 변경하는 디버그 윈도우, 시나리오를 선택하는 시나리오
셀렉터, 어디에서라도 세이브·로드, 스크린 무비 캡쳐-가 갖춰지고 있다고 한다.
그 중에서도 잘 사용되는 것이 딥 스위치로 불리는 기능으로 온 마을을 걷고 있는 인물 캐릭터의 패스를 표시하는 것 등을 할 수 있다. 「용과 같이」는 자원 량이 많아, 한 번에 가져 로딩 할 수 없기
때문에 지역 마다 가지고 있다. 지금 어느 지역의 자원을 읽고 있는지,
또는 읽어들이려 하고 있는 것인가? 그러한 정보도 분류 해서 표시.
디버그에 할당할 수 있었던 기간은 개발 후기와 겹치고 있고, 짧은 것. 거기서 삽질을 없애는 것과 동시에 비 디버그 기간의 유효 활용, 휴일
심야 시간의 유효 활용을 유의할 수 있고 있다고 한다.
구체적인 예로서는 게임 어플리케이션의 데일리 릴리스를 들 수 있다. 개발의 초기 단계부터
하루에 1회, 최신 버전이 개발 팀에 릴리스 된다.
아침 10시까지의 중간 데이터를 컨버터, 에러가
나온 것에 대해서는 환송. 문제가 없으면 실기 데이터와 프로그램 소스를 빌드 하여 체크. 여기에서도 문제가 발견되지 않으면 실행 파일을 릴리스 한다고 하는 순서.
2중 체크를 하는 것으로 문제가 있는 데이터를 프로젝트 전체에 전파 시키는 것을 막을 수
있는 한편, 규칙적인 스케줄로 움직일 수 있다고 하는 메리트도 있다라는 것.
「프로그래머의 지각은 없다」라고 말한다.
또 특징적인 디버그 수법으로서 오토 테스트가 있다. 이것은 「디버그 기능의 집대성」이라고
하는 것으로 게임 패드의 입력을 랜덤으로 실시하는 것으로 프로그램 상의 이상 점을 찾아내는 툴.
이것을 휴일 ·심야에 실행하는 것으로 일손을 걸치지 않고 디버그를 실시할 수 있다.
오토 테스트에는 서버로부터 무슨 테스트를 실시할지의 파일을 취득, 최신판에 업 데이터 한
후 실행. 에러 발생 시에는 자동적으로 메일이 송신된다고 하는 기능이 갖춰지고 있다. 개발 팀의 멤버는 퇴근 시에 이것을 움직이고 출근하면 종료시킨다. 이것에
의해 약 80침대의 개발 PC에서 자동 디버그가 실현되었다.
「사전 준비로 가능한 한 고속화합시다」라고.
「멤버가 일하기 쉬운 환경을 정돈하여 프로젝트를 안정화 시키는 노력을 하는 것도 소중합니다」라고 세션을 매듭지었다.
출처 : http://www.gamebusiness.jp/article.php?id=2116
RECENT COMMENT