게임프로그래밍계의 거인, Tim Sweeney가「미래의 게임 개발 테크놀로지」를 말한다
초병렬처리, 차세대 게임 그래픽은 소프트웨어 렌더링으로 회귀한다
9월9일~11일개최
장소:쇼와여자대학
「CEDEC 2008」의 최종일, 해외 트랙의 특별한 세션이 개최되었다. 강연자는 미국 Epic Games의CEO, Tim Sweeney씨. Sweeney씨는 Epic Games의 창설자인 동시에, 1997년 릴리즈 되었던 FPS「Unreal」의 메인 개발자이고, 현재는 동사(同社)의 기술 디렉터를 겸임하면서 연구 개발을 진행하고 있는 현역 최첨단 테크놀로지스트다.
「미래의 게임 개발 테크놀로지」라고 제목이 붙은 이 강연에서는 Sweeney씨가 예측하는 게임 개발의 미래 모습이 제시되었다. Sweeney씨는 평론가나 애널리스트가 아니고, 그 미래상을 구현하는 최전선에 서있는 인물이다. 따라서, 강연 내용은 단순한 예측이 아니고, 지극히 설득력이 있는 내용이었다 .현재의 게임 개발 기술이 향하는 곳에는 무엇이 있는지, Sweeney씨의 강연 내용을 소개하고자 한다.
■ 「CPU와 GPU의 아키텍쳐는 서로 수렴하고 있다」
하드웨어 플랫폼은 초병렬처리의 시대로
 |
연단에 선 Epic Games의CEO, Tim Sweeney씨 |
본지의 독자라면 Epic Games에 대한 소개는 거의 필요없을 것이다. GPU가 아직 존재하지 않는 시대에 소프트웨어 렌더링을 사용하여 훌륭한 FPS 게임 「Unreal」을 만들어내고, 그 기반기술을 이용하여「Unreal Engine」을 게임 업계에 공급해 온 기업이다. 최신 버젼의 「Unreal Engine 3.0」은 고급 지향 게임 플랫폼에 있어서 최신 기술의 상징이며, 개발중의 타이틀을 포함하면 모든 장르로 150개 이상의 최신 게임이 채용하고 있다.
그 기술 기반을 낳은 Tim Sweeney씨의 게임 개발 기술 트랜드에 대한 영향은 수를 셀 수 없다. 이번 강연에서는 Sweeney씨가 현재 Epic Games에서 취하고 있는 차세대 게임 개발 기술에 대해서, 구체적이고 본질적인 전망을 말하였다. 우선 자기 소개부터 운을 뗀 Sweeney씨는 본 주제에 해당하는 현행의 프로세서 아키텍쳐가 향하고 있는 방향성에 대해 말했다.
CPU는 최근 급격한 기세로 멀티 코어화가 진행되고 있다. 최근 들어 일반적인 PC의 CPU는 2코어내지 4코어를 탑재하고 있고, 최신 게임기에서는 6코어, 8코어와 같은 상황이 되었다. 이러한 방향성은 한층 더 기세를 더하고 있어, Intel이 2009년~2010년에 출하를 예정하고 있는 CPU「Larrabee」(코드네임)에서는 10코어의 범용 프로세서가 실현될 전망이며, 각 코어가 1 클럭으로 16개의 32bit부동 소수점 연산을 수행할 수 있다고 하는데, 이는 GPU처럼 벡터 처리를 서포트할 수 있게 되는 것이다.
한편, 그래픽 프로세싱의 메인 스트림을 담당해 왔던 GPU분야에서는 종래에 픽셀 셰이더, 버텍스 셰이더로 불려 온 처리 방식이 보다 범용성을 더해, 100코어를 넘는 프로세서로서 기능하도록 되어가고 있다. NVIDIA의 C언어스러운 처리 시스템 「CUDA」의 등장도 있고, 이러한 코어로 일반적인 데이터 처리도 할 수 있게 되어, GPU는 슬슬 CPU에 가까워지고 있다.
 |
CPU는 병렬화가 진행되고 ,GPU는 범용화가 진행된다. 양쪽의 아키텍쳐는 서로 수렴하고 있어, 장래에는 초병렬처리가 게임 기술의 기반이 된다 |
Sweeney씨는 이러한 프로세서의 최신 동향을 보면서 「결국, CPU와 GPU의 아키텍쳐는 서로 수렴하고 있다」라고 표현하였다. 그 때 슬라이드에 표시된 「미래의 그래픽 하드웨어」의 모습이 재미있었다. 영상 신호용의 소켓 외에는 아무것도 없는 손가락 크기 정도의 판 모습이었다. Sweeney씨는 무슨 말을 하려 하는 것일까.
Sweeney가 말하는 2012년부터 2020년에 등장할 수 있는 하드웨어는 지금까지 그래픽 칩이 자랑으로 여기던 벡터형의 연산과 CPU가 자랑으로 여겨온 스칼라형의 연산을 통합한 아키텍쳐를 채용한다고 한다.
즉, CPU와 같이 거대하고 복잡한 프로그램을 실행하는 파트와 GPU와 같이 방대한 데이터를 스트림 처리 하는 파트가 혼재하게 되는 것이다. 그 합으로 실현되는 계산능력은 2012년에 4테라 플롭스급되는 방대한 것이 된다. (역주 : 현재 GeForce GTX280이 933기가 플롭스로 약 1테라 플롭스를 보여준다.)
게다가 이러한 움직임은 더욱 코어수를 늘리는 방향으로 확장되어 갈 것으로 전망된다. Sweeney씨는 이것에 대해서 종래 클럭수의 개념은 별로 변하지 않게 되겠지만, 멀티 코어, 다수 코어화가 진행되는 것으로 2020년까지 현재의 1,000배의 멀티 스레드 및 벡터 처리 성능을 얻을 수 있다는 전망을 나타냈었다.
 |  |
장래의 그래픽 하드웨어의 그림. 프로세서의 병렬화가 진행되어 일반적인 처리와 그래픽스 처리의 본질적인 차이가 사라지게 되어, 전용의 하드웨어는 필요없게 되는 것은 아닌지 하는 전망을 상징적으로 나타내고 있다 |
■ 게임 그래픽스는 소프트웨어 렌더링으로 회귀한다
 |
장래의 게임 그래픽스는 「Unreal」이래의 소프트웨어 렌더링으로 회귀한다고 한다 |
거기서 Sweeney씨는 장래의 게임 그래픽에서는 100%의 소프트웨어 렌더링으로의 회귀가 이루어진다고 말했다. "회귀"하는 것은 GPU등장 직전에 소프트웨어 렌더링으로 3D를 표현한 「Unreal」이나, 그 이전에 소프트웨어 3D렌더링의 길을 연 「DOOM」, 「Quake」라는 세대로의 원점 회귀를 의식한 것일 것이다.
렌더링 처리를 소프트웨어로 수행하는 것은 이제 곧 Direct3D나 Open GL과 같은 API를 통한 하드웨어 처리가 불필요하게 되는 것이다. 안티 에일리어징, 래스터라이즈와 같은 고정 기능의 렌더링 파이프라인은 완전히 우회하게 되어 그래픽 프로그래머가 모든 픽셀을 소프트웨어적으로 출력한다.
Sweeney씨가 대부분의 프로그램을 했던 「Unreal」에서는 모든 렌더링을 CPU를 통해 소프트웨어적으로 수행하고 있었다. 그리고, Sweeney씨가 향후 개발할 차세대의 렌더링 엔진에서는 역시 모든 렌더링을 CPU 혹은 GPU상에서 동작하는 소프트웨어로 행할 것이라 보여진다.
 |
1픽셀을 그리기 위해서 사용할 수 있는 명령의 수는, 「Unreal」시절의 1,000배로 확대되어 여러가지 렌더링 방법이 이용 가능하게 된다 |
Sweeney씨에 의하면, 「Unreal」시절에 60Mhz의 Pentium은 1픽셀에 대해서 16 인스트럭션으로 320x200도트, 30fps의 영상을 그려냈다고 한다. 그리고 2012년에 예상되는 4테라 플롭스급의 프로세서에서는 1,920 x 1,080도트의 풀 HD해상도에서 60Hz로 1픽셀에 대해 16,000 인스트럭션을 사용할 수 있게 된다.
그 계산능력으로 실현 가능한 리얼타임 렌더링 처리는 지금까지의 폴리곤 베이스의 래스터라이저의 방식과는 크게 다르게 된다. 한가지 가능성은 레이 트레이싱. 각 픽셀에 대해서 게임 씬내의 빛의 움직임을 추적하는 방법이다. 물리학적으로 올바른 라이팅을 얻을 수 있지만 방대한 계산량이 필요하고, 지금까지는 리얼 타임 처리가 어려웠던 방법이다.
Sweeney씨가 예상하는 또 하나의 방법은 "REYES(레제스)" (역주 : 저게 어떻게 해서 '레제스'로 발음되는 거야. 마치 바이퍼 시리즈의 SOGNA(소니아)가 연상되는 -_-)로 불리는 렌더링 모델이다. 이것은 모든 오브젝트를 화면상의 픽셀보다 작은(서브 픽셀)사이즈의 다각형까지 잘게 잘라 그것을 플랫 셰이딩(Flat Shading)으로 그려내는 것.
"REYES"는 영화 업계에서도 사용되고 있는 방법으로, 문자 그대로 영화 품질의 그래픽을 그려내기 위해서 사용되어 왔다. 그러나, 종래에는 1프레임 렌더링 하는데 수분~수십분 걸려버리는 엄청난 비싼 처리방식이었다. 이것을 장래의 CPU/GPU위에 소프트웨어로 내장하여 리얼타임으로 처리하고자 한다고 한다.
Sweeney씨는 이러한 렌더링 모델에 의해 현재는 노말맵으로 상세한 요철을 재현했던 400만 고폴리곤 캐릭터를 그대로 게임내에서 묘화 하는 것이 가능하게 된다고 한다. 이러한 렌더링 방법의 패러다임 체인지에 의해 게임 그래픽은 진정한 영화 품질에 다가갈 수 있다.
GPU가 처음 등장했을 때 게임 그래픽의 기술에 대해서 혁신이 된 것처럼, 이번은 GPU로부터 멀어지는 것으로 다시 혁명이 일어나는, 그것이Sweeney씨의 비전이다.
■ 초병렬처리 시대에 대비해 게임 개발은 어떻게 변해가야할 것인가?
개발자가 최대로 중요시 해야 하는 것은 「생산성」이며, Epic은 이미 투자를 시작하고 있다
 |
「Gears of War」개발에 걸린 인원과 코스트. 게임 규모가 더 이상 커져도, 개발 규모를 더 크게 하는 것은 곤란하다 |
 |
「Unreal Engine 3.0」의 스레드 구성. 멀티 코어에 대응하려면 근본으로부터의 설계 변경이 필요 |
Sweeney씨는 이러한 논의를 진행시켜 나가는 가운데, Epic Games가 지금까지 개발한 게임을 거론하며 멀티 코어 시대를 맞이하는데 있어서 규모의 확대, 프로그램이 복잡하게 되는 것을 최대의 과제로서 지적했다.
「Unreal Engine 3.0」의 런칭 타이틀이 된 「Gears of War」에서는, 15명의 프로그래머, 45명의 아티스트가 2년간 개발에 임해, 대략 13억엔의 개발비를 사용했다. 게임 프로그램은 25만라인 정도의 C++과 스크립트 코드로 짜여졌고, 그 베이스가 되는 엔진은 200만라인 정도의 C++코드이다. 그 아래에는 20개 정도의 미들웨어 라이브러리가 있다.
「Unreal Engine 3.0」은 멀티 코어 세대의 게임 엔진이며 4개의 스레드로 동작하고 있다. 캐릭터나 스크립트를 움직이는 게임 플레이 스레드, 영상을 만들어 내는 렌더링 스레드, 그리고 물리 처리나 애니메이션을 위한 헬퍼 스레드가 2개이다.
이러한 4개의 스레드 구성은, 현재의 멀티 코어 세대의 플랫폼에는 친숙하다. 그러나, 미래에 예상되는 수십, 수백의 코어를 가지는 멀티 코어, 매시브 코어 세대의 플랫폼에서는 비효율적이다. 따라서, 차세대를 겨냥하는데 있어서, 멀티 코어의 프로세서를 충분히 활용할 수 있는 대량의 스레드에 분할된 게임 엔진을 만들지 않으면 안된다.
그러나, 현재의 상황조차 멀티 스레드 프로그래밍은 개발의 곤란함이 지적되고 있는 분야이다. 동시 병렬적으로 동작하는 프로그램이 모델 데이터나 게임내 상태등의 공유 데이터에 접근 하려고 할 때, 거기에는 반드시 데이터 경쟁에 의한 버그의 발생이나, 데드락에 의한 프로그램의 정지와 같은 리스크가 덧붙게 된다. 게다가, 그것을 효율적으로 디버그 하는 것은 매우 어렵고, 개발 규모의 확대나 기간의 길어지는 결과를 낳게 된다.
Sweeney씨는, 이러한 것은 현재 주류의 개발 언어인 C++의 절차형 언어로서의 특성에 유래한다고 지적한다. 멀티 스레드에 있어서의 문제를 피하기 위한 각종 테크닉은 있지만, Sweeney씨가 말하는 그것은 「싱글 스레드의 프로그램을 어셈블러로 기술하는 것처럼 하는 것」이며, 생산성이 나쁘다고 한다.
 |
Sweeney씨가 주목하는 순수 함수형 언어는, 병렬처리를 안전하게 실행할 수 있어 다수 코어시대의 생산성에 기여한다고 한다 |
슬슬 프로그래머에게만 이해되는 설명이 되어가고 있지만, 여기서의 논의를 간단하게 소개한다. Sweeney씨는, 이러한 문제를 해결하기 위해서는 게임 개발 언어로서 순수 함수형의 언어가 필요하게 될 것이라고 한다. 순수 함수형 언어란 프로그램중의 함수가, 오직 반환값에 의해 작용하는 처리방식이다.
이런 종류의 처리 방식에서는 C++과 같은 공유 메모리의 액세스나 I/O조작은 기본적으로 행할 수 없다. 그 교환으로서 각 함수의 원자성이 구조적으로 보증되고 있어 안전하게 병렬적으로 실행할 수 있다. 게다가 컴파일러가 대응만 하면 함수를 자동적으로 다수의 코어에 분산 처리시킬 수 있는 확장성있는 실행 바이너리를 만들어 낼 수 있다.
Sweeney씨는 순수 함수형 언어가 가지는 병렬처리 안전성에 주목하고 있고, 장래에 게임프로그래밍은 앞서 언급한 방식으로 이행해 가야 한다고 했다. Sweeney씨는 그러한 형태의 언어 "Haskel"을 언급하고 있지만, 게임 개발의 메인 스트림에 충분할 수 있는 언어는 아직 등장하고 있지 않고, 장래에 기대하고 있다고 한다.
■ 하드웨어는 몇 배로 고속화되고 있지만, 예산은 몇 배로 늘릴 수 없다. 게임 개발자는 생산성을 중시해야 한다.
 |
퍼포먼스가 떨어져도 하드웨어가 견인해 준다. 게임 개발에서는 생산성을 최우선으로 해야하는 것이 Sweeney씨의 원칙론이다 |
Sweeney씨의 개발 언어에 관한 논의를 들으면서, 게임 개발자가 반드시 신경쓸 문제가 한가지 있다. 그러한 「고급」언어를 사용해 게임을 개발하면, C++과 같은 저 레벨 메모리 접근 가능한 언어에 비해 잠재적인 실행 속도는 떨어져 버릴 것이다. 이 문제는 어떻게 파악하면 좋을까.
거기서 Sweeney씨가 말한 것이, 장래의 게임 개발에 있어서의 원칙론이다. 스위니 왈, 「생산성은 필수」. 전술한 것처럼, 플랫폼의 처리 능력은 수년에 2배, 10년에 1,000배가 될 수 있다. 그러나, 게임 개발의 예산을 10배, 1,000배로는 할 수 없다. 때문에, 생산성을 위해서 성능을 희생할 수 밖에 없다. 그냥 그것으로 좋은 것이다.
거기에 플러스하여, Sweeney씨는 현재의 게임 플랫폼 하드웨어가 너무 복잡한 것도 지적했다. 만약, Sweeney씨가 말하는 순수 함수형 언어에 의한 게임 개발이 실현되었다라고 했을 때, 그것을 기준으로 한다면, C++에 의한 프로그램 개발비는 멀티 스레드판으로 2배, 플레이 스테이션 3판으로 5배, 셰이더 언어로 기술한 GPGPU판에 대해 10배나 그 이상이 된다고 한다. 2배이상의 코스트는 게임 회사의 비즈니스에 있어서 합리적이라고는 할 수 없다.
따라서, 6코어, 8코어로 끝나지 않는 다수 코어 세대 플랫폼에 대비하고, 게임 회사는 개발 기반을 갖출 필요가 있다. 이러한 논의를 밟아나가면서 Sweeney씨는 마지막에 이렇게 말했다.「 「Unreal Engine 3.0」의 개발에는 3년의 기간을 필요로 했습니다. 그리고, 차세대의 엔진을 개발하려면 5년 정도는 걸리겠지요. 즉, 금년 개발을 시작했다면, 출하 가능하게 되는 것은 2013년입니다. 그러니까, 지금 시작해야 하는 것입니다. 우리는 이미, 차세대로의 투자를 시작하고 있습니다」.
Epic Games의 「차세대 엔진」은 아마도 Tim Sweeney씨가 말한 논의를 기초로 하는 설계를 가지게 될 것이다. 그리고 2013년에는 Sweeney씨가 말한 대로, 수십 코어에서 수백 코어 클래스의 게임 플랫폼이 등장할 가능성이 있다. Sweeney씨 자신이 게임 개발 기술을 리드하는 실천자인 것을 보면, 이것은 단순한 예측이 아닌, 확실함이 배여있는 있는 예정 사항이라고 파악해야할 것인지도 모른다.
그것이 그래픽 렌더링 모델에 미치는 영향을 보자면, 「차세대 엔진」등장에 의한 임팩트는 「Unreal Engine 3.0」이 등장한 시점의 그것과는 차원이 다를 것이다. 다가올 패러다임의 변화에 게임 업계가 어떻게 대응해야할 것인가, 많이 생각하게 하는 세션이었다.
□「CEDEC 2008」의 홈페이지
http://cedec.cesa.or.jp/
(2008年9月11日)
[Reported by 사토 카후지]