스스로 익히고 팀원과 협력이 최대과제
밑그림서 벗어나 프로그래밍 이슈 알아야…기술적 문제는 프로그래머와 밀착 ‘해결’

 

 언리얼엔진3는 많은 개발사들이 선호하는 엔진 중 하나다. ‘아바’는 물론 다른 많은 작품에서 이 엔진이 사용된 바 있고 또 사용되고 있다. 필자 또한 ‘아바’ 개발 및 상용화까지 길다면 길고 짧다면 짧을 수 있는 2년이란 시간 동안 언리얼엔진3를 다루어 왔다. 일단 이 엔진에 대해서는 이미 다양한 매체를 통해 다각적인 측면에서 장단점이 소개된 바 있기에 그런 부분보다는 개인적인 경험에서 체득한 내용을 펼쳐볼 생각이다. 이글이 나와 같이 ‘언리얼엔진3’를 접하게 될 그래픽 아티스트들에게 작은 도움이 될 수 있길 바란다.


◆ 첫인상은 ‘쓰기 편하다’
 우선 평범하게 시작할 수 밖에 없는 아트적인 관점에서 이 엔진을 처음 본 인상은 ‘참 쓰기 편하구나’ 정도였고 다른 프로젝트들을 수행했던 경험으로 비춰봤을 때는 편한 엔진이면서도 심도 있게 사용할 수 있다는 점이 눈에 들어왔다.


 어떤 개발툴이든 사용하기에 나름인 최근 상황에서 ‘개발화면=최종결과’와 같은 형식의 게임엔진은 많은 편이다. 그럼에도 일단 개발 중의 화면과 서비스될 화면이 똑같다는 점은 ‘언리얼엔진3’가 가진 큰 메리트다. 이것은 개발 중의 여러 테스트를 툴 안에서 진행 하고, 그 테스트 결과가 완성된 게임화면과 같다는 것으로 곧 결과물을 조립하는 과정의 시간을 절약할 수 있게 된다는 것을 의미한다. 보이는 것이 최종 결과물이니 그 자리에서 튜닝도 가능하게 된다.


 그동안 필자가 사용해본 몇몇 엔진은 우선 ▲ 소스를 만들고 ▲ 작업을 해서 ▲ 프로그래머와 이런저런 조건을 맞춰보고 ▲ 프로그래머가 엔진에 싣는 등 4가지 과정을 거친 이후에야 한가지 테스트를 위한 게임화면을 볼 수 있었는데, 언리얼엔진3를 사용한 뒤로는 3번째와 4번째 과정을 거의 생략하고 작업을 할 수 있게 되었다.

 

 이로 인해 프로그래머는 개발 중 생기는 버그들과 튜닝, 퀄리티면의 업그레이드에 더 많은 시간을 투자할 수 있었고 그래픽아티스트들 역시 스스로 확인할 수 있는 빠른 결과 화면으로 인해 동일시간 내 퀄리티를 더욱 향상시킬 수 있었다. 개발의 과정에서 언제나 발목을 잡아채는 ‘시간’과의 싸움에서 우리 개발팀도 자유롭진 못했지만 그래도 결과물에 대한 문제점을 보다 빨리 찾아 해결할 수 있었다는 것은 상당한 도움이 되었다.

 

◆ 어려움은 있다
△ 더 해보고 싶다
 그럼에도 기존의 개발 방식에 비해 힘들었던 점은 있다. 일단 퀄리티를 높이려는 노력도 거론할 수 있겠지만 좀 더 업그레이드 된 연출에 관한 일이라 생각된다. 차세대 엔진이라 불리는 언리얼엔진3를 통해 개발되는 콘솔 타이틀들. 이들 작품이 보여주는 화면의 퀄리티, 혹은 임팩트를 넘어서는 것을 만들기 위한 노력은 각각의 한 사람 한 사람이 메터리얼 하나, 모델링 하나에 더 매달리게 만들었고 정지된 화면 이상의 움직임, 연기, 먼지 등 이펙트에 관련된 부분이 만들어질 때마다 ‘좀 더 해볼까’ 하는 감각을 건드리곤 했다.


 물론 필자 스스로 콘솔 화면 수준의 그래픽이나 최고를 지향한다는 자만을 가지고 있진 않다. 다만 그만큼 하고 싶은데, 혹은 뭔가 더 멋진 것을 보여주고 싶은데 온라인이란 플랫폼이 가져오는 PC 사양의 이슈는 간과할 수 없는 중요한 문제였다. 한 1년쯤 겪고 난 후에야 진정한 상품으로서의, 유저의 PC사양과 타협할 수 있는 연출을 위해 어떻게 해야겠다는 명확한 방법이 뚜렷이 보이기 시작했다.

 

△ 더 해보고 싶은데 어떻게 하지?
 일단 앞서 말한 어려움의 발단이 된 것은 다음과 같다. 언리얼엔진3 툴에서는 그 안에서 거의 모든 수치를 아티스트가 조절할 수 있다. 이것은 표현력에 있어 강력한 무기가 될 수 있다. 일일이 다른 팀원들과 세세한 기술적인 부분까지 상의하고 파트를 넘나들며 기초적인 테스트까지 하고 나서야 게임화면을 볼 수 있는 기존의 과정을 생략함으로써 그 일을 맡은 한 사람이 과정과 결과를 모두 볼 수 있기 때문이다.


 그러나 이것은 그 광범위한 수치들의 영향과 역할을 정확히 파악하고 있을 때에 해당한다. 예를 들어 ‘녹물에 얼룩진 한 10년 된 콘크리트 벽에 맑은 물이 흘러내리는 것’을 표현한다고 생각하자. 언리얼엔진3에서는 필요한 기본적인 소스인 디퓨즈, 스페큘러, 노말 등을 아티스트들이 말 그대로 화면 상에서 각 텍스쳐들마다 ‘선을 끌어당겨 연결’하는 작업만으로 무척 쉽게 다양한 요소들이 조합된 메터리얼을 만들 수 있다. 그리고 별다른 익스포트 과정 없이 에디터 상에서 직접 메터리얼을 입히고 그것이 게임화면임을 확인할 수 있게 된다.

 

 여기에 ‘녹물에 얼룩진 표현’을 완성된 화면 위에서 따로 녹물을 입히든, 그것을 흘러내리게 만들든, 표현하고 싶은 효과를 따로 만들어서 붙여도 되고 그 콘크리트 메터리얼 윈도우 안에서도 ‘갖다 붙일’ 수 있다. 심지어 ‘흘러내리는 녹물 옆에 흘러내리는 맑은 물, 그 안에 비치는 녹물에 하늘이 비쳐보인다’까지도 표현할 수 있다.


 이때 아티스트들은 ‘와, 해 보고 싶다!’와 동시에 ‘어떻게 해야 하지?’라는 벽에 부딪히게 될 것이다. 이는 다소 생소한 단어들과 연결될 노드들의 항목과 숫자가 어떻게 작용되는지 파악해야 하는 점 때문이다. 결국 대부분의 아티스트들은 경험해 오던 일과 전혀 다른 물리값과 관련된 부분과 움직이는 요소들과 레벨의 여러 조건을 만들 키스맷이라는 프로그램 기반의 툴에 대한 학습이 필요하다.

 

 물론 우리팀의 경우도 지금까지 그것을 잘 다루는 이들은 레벨을 만드는 몇몇에 해당하고 많은 경우 프로그래머가 콘트롤 해 주고 있다. 이는 문제해결을 위해 상부상조 하는 아름다운 모습이지만 아티스트들의 입장에서는 ‘직접 만질 수 있다!’라는 상황에서 ‘근데 이 숫자들은 뭐지?’에 부딪히며 스스로 영어로 된 수수께끼 미궁에 뛰어드는 모습이 된다.

 

△ 결국 다른 팀원과의 공조가 핵심
 이런 상황을 비춰봤을 때 내린 결론은 결국 여타 다른 프로젝트와 마찬가지로 각 분야마다의 공조가 상당히 중요하다는 것이다. 언리얼엔진3를 이용해 개발하려는 이가 있다면 이를 명심하길 바란다.


 어려운 프로그램간의 연결이나 숫자를 콘트롤하는데 있어서 그 원리나 현상을 이해하는 수준은 역시 그 툴 자체가 아니라 그 문제되는 요소에 관해 공부해 온 사람들이 가장 잘 해결해 줄 수 있는 해결사들이었다. 말 그대로 이는 기술적 부분에 해당한다.

 

 어깨너머로 봐서 알게 됐다는 듯, 우리팀의 아티스트들도 많은 이들이 대충 ‘아, 어찌어찌 뭘 만지면 저게 움직이는 구나’ ‘어떻게 보이는 구나’라는 것을 파악하게 됐지만 각자의 분야마다 해결해야 할 근본적인 것은 달라지지 않았다. 이러한 엔진의 특성으로 인해 우리팀이 얻은 결과는 기획자, 아티스트, 그리고 프로그래머가 한층 밀착해서 일해야 한다는 것이었다.


 결국 ‘아바’를 개발하던 중 개발팀 자체도 팀 내 파트구성에 있어 많은 변화가 있었다. 언리얼엔진3를 능숙하게 사용하는 것도 또 익숙한 개발 상황도 아니었기에 기존에 일반적으로 해 오던 구성은 오히려 발목을 잡을 수도 있었고 사실 뜻하지 않게 파트간의 공조가 잘 이뤄지지 않았던 적도 많았다. 그런 우여곡절 중에 생긴 변화가 파트 구성과 TFT(Task Force Team) 구성이다.


 먼저 원화와 3D 파트 같은 그래픽 파트는 개발하는 게임에만 맞게 구성하게 됐다. 예를 들어 FPS의 레벨디자인을 할 때 떨어질 수 없는 것이 레벨디자이너, 그래픽 디자이너라면 그 둘을 나누지 않고 한 파트로 묶는 것이다. 가까운 자리에서 레벨의 구성이나 그래픽적인 표현에 관해 함께 공유하고 고민하는 것이다. 경험해 본 결과는 매우 긍정적이었다. 각자가 좀 더 전체적인 것에 관심을 가지고 능동적으로 시간을 절약할 수 있었으니 말이다.


 그리고 또 한가지는 TFT 구성인데 복잡하게 얽힌 문제 해결에 있어 각 분야별로 ‘잘할 것 같다’ 생각되는 멤버들을 임시로 한 팀으로 묶는 것이다. 이는 한 두 사람이 자신들의 일정과 업무 외에 고민하며 시간을 끄는 것보다는 근본적인 문제 해결에 확실한 도움이 될 가능성이 높다.


 앞서 말한 두 가지 사항은 사실 잘 해야 보람이 느껴질 일이기도 하고 역시 운용하는 사람들에 달린 일이기도 하다. 어떤 방법이든 활용하기 나름이겠지만 각자의 상황에서 어떻게 하는 것이 좋겠다고 많은 이들이 공감하는 것이 잘 그려진 출발선일지도 모르겠다.

 

◆ 기본에 충실해야
 일단 언리얼엔진3로 개발한다는 것은 더욱 디테일하고 박진감 넘치는 화면, 그리고 뛰어난 비주얼를 선보이겠다는 의지가 반영된 선택이리라 생각된다. 예를 들어 디퓨즈, 노말, 스페큘러들과 각종 애니메이션들의 무제한에 가까운 조합법과 연출을 예상하기 때문이다. 그러나 ‘멋진 화면을 만들겠어! 눈이 확 돌아가는 게임이면 좋겠어!’라는 결심을 한 개발자들로서 더욱 주의해야 할 점은 바로 ‘기본에 충실한 것’이다.


 전체적인 측면에선 ‘재미에 충실한 것’이 되겠지만 그래픽적 측면에서 볼때 예를 들 수 있는 것은 각 조명에 따라 보여지는 메터리얼의 질감이 제대로 혹은 원하는 대로 표현되려면 기본적으로 어떤 레벨값이나 색상값을 가진 텍스쳐로 메터리얼을 만들어야 하는가와 그 규칙을 얼마나 잘 유지하는가, 그래픽 메모리를 어떻게 잘 활용하기 위해 얼마나 텍스쳐를 절약하며 잘 운용할 것인가 하는 것 등이다. 또 각 요소들의 버텍스 수는 어떻게하고 애니메이션 조합은 어찌해야 하며 이펙트 사용은 어떤 식으로 해야 하나 등을 들 수 있다.

 

 결국 어떤 엔진을 쓰든, 어떤 화면을 만들든, 매 순간 임기응변적인 데이터 관리가 아니라 계획적인 면에서의 데이터·그래픽 소스 관리가 언리얼엔진3에서도 관건이었다.


 이 엔진이 아니더라도 현실감 넘치는 텍스쳐들과 소품, 박력 있는 소리와 이펙트로 가득 찬 화면을 만들 수는 있지만 그것이 유저의 PC에서 부하가 걸릴 화면이라면 아무 소용없으리란 것은 온라인 게임을 만들 때 어떤 엔진을 쓰든 마찬가지일 것이다. 온라인 게임을 만들기 위해 반드시 해결해야 할 문제가 그래픽 분야에선 특히 ‘가볍고 멋진’ 화면이었기에 표현력을 잘 활용할 방법을 찾는 동시에 메모리를 잘 활용해야 한다는 것은 여전히 그래픽 아티스트의 뒤통수를 따라붙는 과제였다.


 비교적 퀄리티 높은 화면과 연출을 할 수 있지만 역시 그것을 어떤 소스로, 어떤 계획하에 조합하느냐가 최초이자 최종적인 관건이다. 그래야 표현하고자 하는 화면을 더 잘 표현할 수 있게 된다는 것이 늦게나마 그것에 대한 고민이나 결과를 쏟아내며 느낀 가장 큰 부분이었다.

 

 우리팀도 게임 개발에 있어 나름 노련한 개발자들로 구성됐다고 생각하지만 언리얼엔진3를 사용한 것은 기본에 더 집중할 수 있는 좋은 기회가 되었다고도 할 수 있다.

 

◆ 개발자에 필요한 마인드
 기획, 프로그램, 아트 등 분야에 상관없이 언리얼엔진3로 개발하는 경우 가장 필요한 것은 자기 전문 분야에서 조금이라도 관계가 있다고 생각된다면 툴에 그려진 저 이상한 아이콘과 저 이상한 용어 및 문장에 대해 일단 공부하는 것이 중요하다.

 

 공부에 게으른 필자가 이런 조언을하기 부끄럽다 할 수 있지만 프로그래머는 프로그래머대로 미술적 관점에서 문제를 풀어가는 것에 관심을 둘 필요가 있고, 아티스트는 아티스트대로 프로그램적 관점에서 문제를 풀어가는 것에 관심이 필요하다.


 그냥 편하게 ‘아, 이렇게 이걸 여기 연결하면 되는구나’에 그쳐도 별 상관없을 일이 부지기수이지만 건드려야 할 수치들에 관해 조금이라도 지식이 있을수록 각자의 일은 더욱 편해지고 퀄리티도 향상된다.


 언리얼엔진3를 만든 에픽의 개발자들이 과연 어떻게 사용해주기를 바랬는지 말할 순 없다. 하지만 언리얼엔진3를 먼저 사용해 본 개발자 입장에선 활용법을 좀 더 알면 알수록 아티스트가 더 자세하게 파고들어 해결할 수 있는 조건은 충분히 많다고 여겨진다.

 

 어떤 일에 대해 각 개인이 좀 더 할 수 있는 영역이 늘어난다면 그 부분 외의 시간에 다른 개발자들은 더 많은 일을 할 수 있다. 이는 곧 개발팀 전체의 능률 향상에 큰 도움이 되리라 생각한다.

 

◆ 아쉬운 부분도 있다
 무엇이든 완벽할 수 없다는 말처럼 언리얼엔진3도 분명 단점은 있다. 하지만 그 단점이 또 다른 해결책을 만들거나 노하우를 발견하는 일이 될 수 있기에 굳이 단점이라고 말할 수는 없다고 생각된다.

 

 분명 언리얼엔진3로 개발하며 ‘과연!’ 하고 감탄한 적도 많지만 ‘왜 안돼?’하는 부분도 없진 않았다. 그런 대부분의 경우 고민의 결과로 보다 훌륭한 대안을 생각해 낼 수 있었기 때문에 분명 값진 시간이었다고 생각한다.


 언리얼엔진3는 분명 게임 개발에 있어 여러모로 편의성이 강조된 훌륭한 엔진이다. 하지만 어떠한 도구도 사용자에 따라 매우 훌륭한 역할을 해 낼 수도 있고, 기본적인 역할조차 수행하지 못하는 경우도 발생한다는 것을 우리는 주변에서 손쉽게 볼 수 있다.

 

 이 엔진 역시 마찬가지다. 새로운 작품 개발을 시작하며 언리얼엔진3를 선택했다면 엔진의 능력 100%에 개발자 스스로의 노하우 100%를 더해 200%의 완성도를 갖는 작품을 창조해 내길 바란다.


shoku@redduck.com

 

 

| 김성규 레드덕 아트디렉터 |

애니·게임 넘나든 그래픽 전문가

 

 김성규 레드덕 아트디렉터는 지난 2000년 웹애니메이션을 시작으로 2001년 ‘거울전쟁 어드밴스드’로 게임 아티스트로 첫발을 내딛었고 이후 슈팅게임 ‘장보고’ MMORPG ‘샤이닝로어’ 등의 아트디렉터로 활동해왔다. 이후 2004년부터 레드덕에 합류해 ‘싸이파이온라인’과 ‘아바’ 등의 프로젝트에 참여했다. 아트 전문가로서 2002년에는 세종게임아카데미, 2005년에는 SBS 게임아카데미에서 강의를 진행하기도 했다.

 

▲ 프로필
2000년 아툰즈 웹애니메이션 디렉터
2001년 그림디지털엔터테인먼트 ‘거울전쟁 어드밴스드’ 아트디렉터
2003년 판타그램 ‘샤이닝로어’ 아트디렉터
2004년 레드덕 ‘아바’ 아트디렉터

저작권자 © 더게임스데일리 무단전재 및 재배포 금지