Photo Image
게임엔진은 게임 안에서 벌어질 다양한 상황을 정교하게 구현하는 컴퓨터 프로그램이다.

게임을 설명할 때 '언리얼' 혹은 '유니티' 게임엔진을 사용했다는 말을 많이 사용합니다. 게임회사에 들어가기 위한 자격요건 중에 게임엔진 사용가능자라는 말도 있습니다. 게임이 차도 아닌데 왜 자꾸 엔진을 찾을까요? 게임엔진의 개념과 게임산업과 그 이외 산업에서 어떻게 활용되고 있는지에 대해 알아보겠습니다.

Q:게임엔진이 무엇인가요.

A:게임은 게임 안에서 벌어지는 수많은 경우에 대해 어떤 일이 벌어질지 정교하게 짜놓은 컴퓨터 프로그램입니다. 프로그램을 만드는 것을 '프로그래밍'이라고 하는데 컴퓨터가 인지할 수 있는 언어로 일종의 '대본'을 만드는 작업입니다.

프로그래밍 언어만 안다고 게임을 만들 수 있는 건 아닙니다. 다양한 변수와 연출을 위해서는 물체가 부딪히면 어떻게 움직이는지, 탄도가 어떻게 되는지, 물은 어떻게 흐르는지, 빛은 어느 방향에서 들어와 어떻게 반사되는지 등을 구현할 수 있는 물리학 지식이 필요합니다. 이런 장면을 사실적으로 그려낼 수 있는 총소리, 바람소리, 각종 효과음에 대한 지식도 필요하고요.

이렇게 다양한 지식을 바탕으로 일어날 수 있는 수많은 상황을 하나 하나 제어하는 프로그램을 만드는 것은 보통 어려운 일이 아닙니다. 그래서 힘을 조금 덜 들이고 게임을 만들 수 있는 방법으로 '게임엔진'을 고안했습니다.

게임엔진은 게임 개발에 기반이 되는 필수 구성 요소인 그래픽, 물리, 오디오, 사용자환경(UI), 게임 플레이 프레임 워크 등이 잘 융합된 상태의 소스코드와 그 기능을 디자이너가 사용 가능한 툴을 겸비한 게임 개발 소프트웨어를 일컫는 말입니다.

초창기 게임엔진이 모래상자 수준이었다면 현대 게임엔진은 자동차 생산 라인이라고 봐도 무방할 정도로 많은 기능을 제공합니다. 과장을 좀 보태서 얘기하자면 코딩 능력이 전무한 비전공자라도 가이드를 따라 하면 매우 간단한 게임이나 애니메이션을 만들 수 있을 정도입니다.

Photo Image

Q:상용 게임엔진으로는 어떤 것이 있나요.

A:많은 엔진이 있습니다만 최근에는 에픽게임즈가 개발한 '언리얼엔진'과 유니티테크놀로지스가 개발한 '유니티엔진'이 시장을 양분하고 있다고 해도 무방합니다. 그래서 게임사에서 두 엔진 사용 경험을 채용 자격으로 내걸기도 합니다. 두 엔진은 언어와 개발 방식 접근성, 소스코드, 확장성 등 많은 차이를 가지고 있습니다.

두 엔진 모두 일정 규모 이상 매출이 발생하면 로열티를 내는 구조라 개인이 '공부' 목적으로 다뤄보는 것에는 비용이 발생하지 않습니다. 회사 차원에서 영향력을 넓히기 위해 초보자를 위한 입문 가이드를 충실히 제공하기도 합니다. 이들 엔진은 상당 규모의 국내외 커뮤니티를 가지고 있어 정보를 얻기도 비교적 쉽습니다.

Q:상용 게임엔진을 다루지 못하면 게임을 만들 수 없나요.

A:아닙니다. 요즘에야 워낙 상용엔진이 잘 나오고 개발 기간을 줄이기 위해 게임엔진을 사용하지만 규모가 크고 재정적으로 여유가 있는 게임회사는 자체 엔진을 개발해 쓰기도 합니다. 자사 프로젝트에 최적화됐기 때문에 아이디어를 구현하거나 신기술을 녹이는 데 장점이 있습니다. 물론 게임엔진은 만들기 어렵고, 만든다고 해도 '유니티' '언리얼'처럼 오랜 기간 기술을 축적한 상용엔진 보다 좋은 결과물이 나온다고 장담할 수 없어 상용엔진을 많이 사용합니다.

국내 게임 회사 중에는 펄어비스가 자체 게임엔진을 제작해 게임을 만듭니다. 첫 작품 '검은사막'을 비롯해 차기작도 자체 엔진으로 만듭니다. 펄어비스는 자체 게임엔진 결과물을 세계 최대 컴퓨터 그래픽스 콘퍼런스인 시그라프(SIGGRAPH)에서 발표하기도 했습니다.

Q:왜 상용엔진 경험이 구직에 영향을 미치나요.

A:대부분 회사에서 사용하기 때문입니다. 한국은 로우레벨 프로그래머가 부족해 상용엔진 프로젝트가 대부분입니다. 또 실무에 투입된 후 배우게 되지만 미리 접해보거나 알고 있는 인력을 선발하는 게 게임사에 유리합니다.

모바일게임으로 산업 축이 넘어간 이후에는 개발 기간이 짧아지고 개발 팀이 작아지면서 툴 엔지니어, 렌더링 프로그래머 영역이 인접 직군으로 흡수된 영향도 있습니다. 대표적으로 테크니컬 아티스트(TA)가 있습니다. TA는 3D 그래픽 외형적 부분뿐 아니라 렌더러, 쉐이더 등 기술적인 부분을 다루기 때문에 프로그래밍과 그래픽 양 부문 모두 조예가 깊어야 합니다. 프로젝트에서 사용하는 엔진을 잘 이해해야 합니다.

프로그래밍이나 그래픽 작업과 직접적인 연관이 없는 기획자도 게임엔진을 어느 정도 사용할 수 있으면 UI 수정 등 자잘한 작업을 프로그래머 없이 직접 할 수 있기 때문에 상용엔진을 다루는 능력을 봅니다.

Q:게임 외 산업 분야에서도 게임엔진이 쓰이나요.

A:게임엔진이 제공하는 강력한 실시간 렌더링 성능 덕에 최근에는 게임을 벗어나 다양한 분야에서 사용되고 있습니다. 자동차, 영화, 건축, 엔지니어링, 건설(AEC) 등 엔터프라이즈 분야에서 아이디어와 프로젝트를 시각화하는데 게임엔진을 사용합니다. 작업 후 결과물을 확인해야 하는 기존 워크플로우에서 벗어나 실시간으로 작업 결과물을 확인하고 수정할 수 있기 때문에 생산성과 효율성을 높일 수 있습니다.

주최:전자신문 후원:교육부·한국교육학술정보원

[관련도서]

Photo Image

◇ 유니티 게임 프로그래밍 바이블, 요시야 미키토 외 지음, 김은철·유세라 옮김, 위키북스 펴냄

이제 막 유티니 초보자 길을 졸업한 개발자에게 한 단계 올라설 수 있는 실력을 갖추도록 도와주는 정보를 제공한다. 진화하는 유니티 개발환경의 최신 기능 활용법을 설명한다. 게임 개발 효율화와 새로운 게임에 도전할 수 있게 지원한다. 다양한 장르와 테마를 수록해 실전에서 필요한 정보뿐 아니라 알아두면 게임 제작에 도움이 될 만한 정보를 제공한다. 실질적인 게임 개발에 대한 아이디어와 노하우를 익히는데 유용한 지식을 제공한다.

Photo Image

◇C++를 사용한 언리얼 엔진4 개발 2/e, 존 도란 외 지음, 조경빈 옮김, 에이콘 출판 펴냄


실용적인 레시피 100여개를 담았다. 언리얼엔진 개발에서 필수적인 C++ 스크립팅이 가지고 있는 잠재력을 끌어낸다. 언리얼 편집기 내에서 C++ 클래스를 추가하고 편집하는 방법을 보여주며 프로그래머가 개발한 액터와 컴포넌트를 디자이너가 커스터마이즈 할 수 있는 방법을 소개한다. 게임용 코드를 작성하고 C++을 활용해 게임과 개발환경을 구성하는 방법에 대해 실행 가능한 정보를 제공한다. 언리얼 엔진으로 만드는 게임에서 네이티브 코드를 통합하는데 도움을 준다.


이현수기자 hsool@etnews.com