'대 게임엔진 시대'의 서막, 게임 엔진의 역사와 정의에 대해

칼럼 | 이상우 기자 | 댓글: 15개 |



[▲ 이상우 과장]

인벤에서는 에픽게임즈코리아의 엔진 프로그래머 이상우 과장님으로부터 게임 엔진에 관련한 칼럼을 기고받게 되었습니다.

이상우 과장님은 카이스트 전산학과를 수석 졸업하고 UNC-CH(University of North Carolina at Chapel Hill)에서 Computer Science 석사를 취득했습니다. 전 엔씨소프트와 SK C&C에서 근무했고 현재 에픽게임즈코리아에 몸담고 있습니다.

첫 시간은 '게임 엔진이란 무엇인가'에 대한 이야기로 시작하도록 하겠습니다.

※ 에픽게임즈코리아 홈페이지 바로가기





이것만 알면 당신도 게임 엔진에 대해서 아는 체 할 수 있다 - 제 1 부


언리얼 엔진, 크라이 엔진, 소스 엔진, 유니티 엔진 등 최근 수많은 게임들의 개발 과정에서 이런 단어들을 쉽게 볼 수 있다. 사실 게이머 입장에서는 완성품인 게임이 제일 중요하기에, 게임이 재밌고 매끄럽게 돌아가고 플레이가 흥미롭기만 하면 된다. 그래서 게임 엔진이 무엇이며 개발 과정에서 어떤 엔진을 사용했는지에는 관심없는 분들도 많을 것이다.






[▲ 언리얼 엔진1과 4의 비교 스크린샷]



[▲ 게임 엔진을 개발한다고 하면 일반적으로 자동차 엔진을 연상하는 경우가 많다]


하지만 게임을 사랑하는 일부 게이머들 중에는 개발사보다도 기술의 변화에 민감한 경우가 많다. 특히 한국에서는 컴퓨터 게임을 즐기는 유저가 많기 때문에 콘솔 기기처럼 균일한 하드웨어 구성을 가지기 어렵다. 그로 인해 비등방성 필터링의 퀄리티 차이나 밉맵 레벨 차이 등 미묘한 드라이버 상의 버그를 유저들이 찾아내주는 일이 종종 있다.

현대 게임에는 물리학, 광학, 인지과학, 심리과학, 컴퓨터 그래픽 등 다양한 분야의 연구와 엄청난 소프트웨어 기술력, 수많은 미술적 작업이 필요하다. 발전된 그래픽 기술에 맞춰 유저들의 눈은 높아졌지만 대형 스튜디오가 아니고서는 이런 기술을 내부적으로 발전하고 유지하는 것은 사실상 지극히 어렵다. 그로 인해, 다른 회사가 만들어낸 검증된 기술을 사서 이용하는 경우가 늘어났으며, 그것이 '대 게임엔진 시대'의 서막이었다.

게임 엔진 개발은 대부분 게임 관련 기술의 최첨단에 서있으므로 게임 엔진을 이해한다면 게임 개발 기술의 역사와 개발자들의 고뇌 또한 이해할 수 있으리라 본다. 또한, '왜 이런 것은 안되냐'는 항의에 근거를 제시할 수도 있을 것이다. 그래서 게임을 좋아하지만 개발 과정에 대해서는 잘 모르는 사람들을 위해, 부족하지만 필자가 게임 엔진에 대해 말해보고자 한다.



[▲ '게임 서버를 알려주마!'를 연재하신 배현직 대표님과 달리 일개 직원인 나에겐 거부권이 없다]



게임엔진의 역사: 엔진은 어떻게 만들어졌나?

첫 번째 시간으로, 우선 게임 엔진의 역사를 통해 그 정의를 알아보고자 한다. 게임 엔진의 정의 자체가 형성된지 얼마 되지 않았으므로 시대적인 흐름과 함께 보는 것이 적절하다고 생각하기 때문이다. 상투적인 시작이지만 알아두면 분명 피가 되고 살이 될 것이다.

필자와 같은 80년대에 태어난 세대에게 어린 시절 게임의 추억은 오락실 혹은 집에 있는 게임기다. 당시 오락실의 무서운 형들을 피하기 위해 집에서 게임을 즐기는 길을 선택한 어린 게이머들의 경우 콘솔 게임기인 슈퍼 패미콤 등을 즐기고 게임 팩에 먼지가 끼지 않게 관리해주는 게 전부였다. 하지만 필자처럼 컴퓨터 게임으로 시작한 게이머들은 공부에 도움이 된다는 명분으로 컴퓨터라는 가장 값비싸고 관리가 어려운, 하지만 그렇기 때문에 실제로 공부가 되는 게임기를 사용하게 된다.



[▲ 그 시절 컴퓨터 광고. 할 수 있는 건 많지만 어릴 때는 그저 게임이 최고다]






[▲ 슈퍼 패미콤판 스트리트 파이터를 가진 친구가 게임기로 권력을 휘두를 때,
나의 위로가 되어줬던 건 페르시아의 왕자였다]


오직 게임만을 위해 설계된 콘솔 기기와 달리 컴퓨터는 하드웨어 가격이 비싸고 부품 조합에 있어 많은 제한이 따른다. 그로 인해 당시 컴퓨터 게이머들은 운영 체제(OS)의 메모리 관리, 컬러 화면을 흑백으로 보여주는 컬러 시뮬레이팅 프로그램, 부족한 하드 용량 등으로 골치를 앓으며 클럭에 따라 바뀌는 게임 속도와 싸워야했고, 그 과정에서 적지 않은 컴퓨터 지식을 배우게 되었다.

특히 중요한 것은 게임을 즐기면서 불타오르는 창작 욕구다. '이 게임을 내가 만들었으면 여기는 이렇게 할텐데!'라는 순수한 욕망에서 시작했던 것이 메모리나 세이브 파일을 고쳐서 캐릭터를 먼치킨화하고, 나아가 리소스를 바꾸어 자기만의 캐릭터를 만들어내는 것으로 이어졌다. (물론 실제 게임에서 사용되는 로직이나 룰을 바꾸기엔 상당히 심도 있는 지식이 필요했고, 그것을 계기로 프로그래밍에 입문한 게임업계 개발자들도 적지 않다.)

게임을 즐기다가 스스로 게임 제작자가 되고 싶다는 욕망을 갖게 된 유저들을 위해 등장한 것이 ASCII의 'RPG 만들기' 엔진이다. 비록 RPG라는 장르에 한정되었지만, 당시 전세계적으로 주목받던 일본식 RPG를 만들 수 있다는 것은 정말 신선한 시도였다.

물론 이는 당시 일본식 RPG가 2D그래픽과 낮은 자유도를 가졌기 때문에 탄생한 엔진이라고 할 수 있다. 이 엔진이 처음 등장한 1988년은 대부분의 회사들이 in-house 엔진, 즉 가내수공업형 엔진으로 비슷한 스타일의 게임이 대량으로 쏟아지던 시기였다. 하지만 1990년대 3D엔진이 본격적으로 보급되기 전 엔진의 원조 할배격으로 인정받고 있다.



[▲ 원조 할배격은 그만큼의 가치를 지닌다]



[▲ 일본 RPG가 전세계에 널리 퍼지던 시절에 등장한 파이널 판타지 시리즈]



[▲ 'RPG 만들기'는 당시 온갖 엉뚱함을 발산하기에 매우 적합한 프로그램이었다]



[▲ 어드벤쳐 게임의 제왕이던 루카스 아츠의 SCUMM와 같은 in-house 엔진은 12개의 제품을 남겼다]


'RPG 만들기'는 아무래도 일본 한정이고, 본격적인 게임 엔진이라기보다는 인디 게임 제작자들을 위한 소프트웨어였다. 실제로 많이들 기억하는 게임 엔진의 시작은 실시간으로 돌리기 위해 상당한 기술력을 필요로 하는 '3D 그래픽스'라는 테크놀로지와 함께 시작했다.


최초의 게임엔진, 어떤게 있었을까?

최초의 게임 엔진이라 불릴 수 있는 그래픽 엔진은 BRender(필자도 처음 들어본 엔진이다), EA가 사들여 in-house 엔진으로 변경한 렌더웨어, 마이크로소프트가 사서 DirectX 3D의 모체가 된 렌더모픽(RenderMorphics)으로 3D 그래픽 기술에 집중한 것들이다. 하지만 이 당시는 거의 초창기였기에 게임 엔진이라는 용어 자체가 정립되어 있지 않았다.



[▲ 게임 엔진하면 가장 먼저 생각나는 것은 그래픽(렌더링) 엔진.
실제로 유저가 게임의 가장 핵심 요소라고 느끼는 것은 그래픽이다]


게임 엔진이라는 용어는 FPS 장르의 부흥과 함께 쓰기 시작했으며 사실상 기술 집약적인 3D 게임의 시대는 미국의 프로그래머이자 이드 소프트웨어의 공동 설립자 존 카멕에 의해 열렸다. 그는 울펜슈타인 3D와 둠, 퀘이크의 리드 프로그래머를 맡았는데, 둠과 퀘이크의 경우 그래픽 렌더링이나 충돌 처리 등의 '코어'라고 불리는 부분과 게임 월드, 게임 룰셋, 그래픽 리소스 등의 콘텐츠적인 부분을 어느 정도 분리해서 설계한 것이다.

이를 즐기던 유저들은 차츰 창작의 욕망에 시달리게 되었고, 이 설계로 인해 제공되는 툴을 사용해 'MOD'라고 하는 자신만의 레벨, 무기, 캐릭터, 게임 룰을 만들어 게임을 제작하기 시작했다.

이때까지만 해도 게임의 장르나 구성을 바꾸는데는 한계가 있었다. 하지만 점차 개발 초기부터 게임 엔진을 분리된 소프트웨어로 팔기 위한 설계 및 제작이 시작되었고, 퀘이크3와 에픽게임즈의 언리얼 엔진이 등장한 뒤에는 특정 장르에 국한되지 않고 자유롭게 게임을 만들 수 있게 됐다. 퀘이크 엔진에서 시작한 밸브의 '소스 엔진', 크라이텍의 '크라이 엔진'이 FPS 태생의 주요 게임 엔진들이다. 게임 엔진이 대개 핵심 요소인 그래픽 엔진으로부터 발전했다는 점에서 보면 가장 높은 그래픽 퀄리티를 필요로 하는 FPS 게임에서 시작된 것은 자연스러운 현상이라 할 수 있겠다.



[▲ 하프 라이프의 MOD로 시작한 '카운터 스트라이크'.
엄청난 인기로 밸브에서 개발팀을 스카웃하기에 이른다]



[▲ 3D 게임엔진이 대부분 FPS 게임제작에서 시작되었기에 FPS가 아닌 다른 장르를 큰 변경 없이 만들 수 있는 게임 엔진이 좋은 게임엔진이다.]


게임 콘텐츠와 게임 엔진을 구분하는 것은 사실 쉽지 않다. 게임 엔진에 해당하는 기술적 기능들을 게임 콘텐츠와 완벽히 나눠서 보기는 어려우며, 분리하기 위해 일반화하면 할수록 최적화의 한계와 같은 퍼포먼스 상의 문제가 발생하기 때문이다.

결국, 게임 엔진을 사용한다고 해도 특정 게임을 위한 최적화 문제는 개발자들에게 달려 있으며, 게임의 특화적인 코드는 해당 스튜디오에서 개발할 수밖에 없다. 그 때문에 게임 개발 기간이 길어지다보면 초기 엔진의 모습은 찾아볼 수 없을 정도로 코드가 바뀌는 일도 종종 있다.

궁극적으로는 게임 엔진이 곰플레이어처럼 어떤 동영상(게임 콘텐츠)를 줘도 짜잔~! 하고 멋지게 돌아가주기를 바라지만 이상과 현실은 다르다.



[▲ 슬프지만 이상은 이상일 뿐이다]





[▲ 일반화와 성능, 두 마리 토끼를 모두 잡긴 어렵다]



[▲ WoW는 겜브리오 엔진의 전신인 넷이머스 엔진으로 시작했지만,
오랜 개발 과정에서 자체 코드화되었을 것으로 추정하고 있다]


게임 엔진의 큰 흐름은 그래픽 엔진을 중심으로 발전되어 온 것이 사실이다. 하지만 엔진을 구성하는 데는 그 외에도 캐릭터를 움직이는 애니메이션, 물체의 충돌을 계산하는 물리 엔진, 다른 유저와 상호작용하기 위한 네트워크 엔진 등 많은 기술이 필요하다. 종합선물세트 스타일의 대형 게임 엔진들은 기본적으로 이런 기능들을 모두 포함하고 있지만, 좀 더 나은 기능과 개발자의 편의를 위해 엔진에 추가할 수 있는 미들웨어라는 형태로 나오는 경우도 많다.



[▲ 기어즈 오브 워 2 라인 카운트. 엔진 코드만 백만 라인이 넘고 현재는 훨씬 더 길어졌다]



[▲ 종합선물세트처럼 다양한 컴포넌트로 구성된 게임 엔진은 한번 사면 편하다]


쓰다보니 좀 복잡해진 느낌이다. 서론이 재밌어야 한다는 대전제를 파괴한 느낌이랄까. 이제 게임 엔진이 어떤 것인지 조금 감이 오는가? 아직도 감이 오지 않는 독자를 위해, 아주 간략화한 비유를 하나 들어보겠다.

게임을 하나의 웅장한 빌딩이라고 할 때 빌딩을 완성하기 위해서는 벽돌, 철근, 크레인, 레미콘 등 많은 재료와 장비가 필요하다. 여기서 게임 엔진은 벽돌을 만들기 위한 거푸집이나 철근을 제작하기 위해 철판을 절단하고 녹이고 가열하는 장비라고 볼 수 있다. 크레인이나 레미콘 같은 장비라고 할 수 있는 미들웨어는 외부에서 따로 사올 수도 있고 건축 사무소에서 토털 솔루션으로 제공할 수도 있다.

게임 콘텐츠와 게임 엔진이 잘 분리되어 있다면, 첨단 CAD 장비로 거푸집의 형태를 쉽게 조절하거나 철근의 모양을 쉽게 원하는 대로 바꿀 수 있게 된다. 하지만 가장 중요한 것은 아무리 좋은 재료와 장비를 갖췄더라도 빌딩을 설계하고 완성하는 건 결국 개발자의 몫이라는 사실이다.

다음 시간엔 게임 엔진의 중추이자 꽃이라 할 수 있는 그래픽(렌더링) 엔진에 대해서 알아보도록 하겠다.

댓글

새로고침
새로고침

기사 목록

1 2 3 4 5