이번 포스트는 에픽 게임즈 (Epic Games) 의 창업자이자 언리얼 엔진의 메인 프로그래머인 Tim Sweeney 의 2006 년 Principles of Programming Languages (POPL) 에서의 invited talk 프리젠테이션에 관한 것이다. POPL 은 프로그래밍 언어 분야에서는 가장 권위있는 심포지움 중 하나이니 굳이 다른 설명은 필요없을 것 같다.
팀 스위니는 오래 전부터 GDC 에서도 OOP 를 이용한 엔진 개발의 중요성을 강조해왔으며 최근에 이르러서는 둠, 퀘이크를 만든 존 카멕의 엔진보다 팀 스위니의 언리얼 엔진이 대세로 떠오르고 있다. 언리얼 엔진은 모듈화가 매우 잘 되어 있어서 범용으로 사용 가능한 유일한 게임 엔진이라는 말을 들을 정도이다. (렌더링 미들웨어스러운 게임브리오는 예외로 하자.) 그리고 자체 스크립트 언어인 UnrealScript 로도 유명하다.
프리젠테이션 제목은 “The Next Mainstream Programming Language: A Game Developer’s Perspective” 이다. 사실 보통 3D 게임 엔진 개발자라면 imperative programming 의 달인이고 주로 SIGGRAPH 논문만 볼거 같은데 의외로 프로그래밍 언어에 대해 깊은 관심을 가지고 있어서 놀랐다. pure functional language 인 Haskell 에도 관심을 가지고 있어서 하스켈의 유용한 기능들을 많이 도입하려고 하고 있었다.
그 외에도
“우리는 절대 어셈블리어를 사용하지 않는다! (We never use assembly language)”
라든지 언리얼의 정수 변수 중 90%가 배열 인덱스로 사용되기 위해 존재했다는 것과 사용된 for 루프 중 40%가 functional comprehensions 그리고 50%가 functional folds 였다는 것도 매우 흥미롭다.
PT 를 보면 기어즈 오브 워(Gears of War)의 예를 들어 몇명의 프로그래머와 몇명의 아티스트가 얼마의 예산을 가지고 몇개월 동안 작업했는가 하는 구체적인 데이터로부터 시작하여 게임에 사용한 라이브러리들도 자세히 설명하고 있다.
그리고 게임 코드를 약 3가지-Game Simulation, Numeric Computation, Shading-로 분류해서 각각에서 중요한 요소들과 우선시되는 요소들(OOP, 속도, 병렬성 등) 을 설명하고 그에 맞는 언어를 소개하고 있다. 게임을 이루는 각 부분마다 특성에 맞는 서로 다른 언어들을 사용하는 것이 매우 흥미롭다. 혹시라도 난 게임 개발만 할거니까 functional language 는 알 필요없어! 라고 하는 분이 있다면 꼭 일독하길 바란다. 이 PT 를 보면 학부 수준에서 배우는 과목은 모두 다 중요하다는 진리를 다시 한번 일깨워준다.
특히나 경험을 바탕으로 한 게임 개발의 구체적인 수치들과 정상급 개발자의 식견은 돈 주고도 배우기 힘든 귀중한 내용들이니 꼭 읽어두도록 하자.
(View on slideshare 로 가면 풀스크린 모드로 볼 수 있다.)
외부 링크
Recent Comments