애니메이션, 영화, 건축, 제품 같은 컴퓨터 그래픽 분야는 일찍부터 셰이더의 중요성을 인식했다. 셰이더는 이미지나 영상의 품질을 좌우하는 핵심 요소였고, 스튜디오의 기술력을 보여주는 척도였다. 반면 게임에서 셰이더는 오랫동안 관심 밖의 초라한 존재였다. 기능 자체도 형편 없었지만, 그나마도 최적화 단계에서 일순위로 버림받기 일쑤였다.
그러던 셰이더의 지위에 변화가 생겼다. PBR이 폴리곤이나 텍스처만큼이나 흔한 말이 됐다. 모바일 게임에 헤어 셰이더와 피부 셰이더가 사용되고, UI 아티스트가 연출을 위해 직접 셰이더를 만드는 모습도 어렵지 않게 볼 수 있다. 굴욕의 시간을 버틴 주인공이 결국은 사문의 복수를 하고 무림의 일인자가 되듯, 셰이더는 어느새 게임의 때깔을 좌우하는 위치로 인정받기 시작했다.
더 강력한 하드웨어, 주요 엔진이 제공하는 직관적인 셰이더 개발 도구, 사용자의 높아진 기대치에 부합하기 위한 그래픽 경쟁. 이런 요인들이 맞물려 셰이더가 부각되는 추세는 더욱 강화될 것이다. 특히 앞으로 다가올 게임 스트리밍 서비스는 오프라인 렌더링과 리얼타임 렌더링 간의 마지막 남은 경계마저 허물어버리는 계기가 될지도 모른다. 게임에서 셰이더의 역할이 어느 때보다 높게 평가 받는 시기다. 이제 게임 개발자, 특히 게임 아트 쪽 개발자에게 셰이더는 반드시 이해해야 하는 대상인 동시에 개인의 역량을 드러낼 수 있는 기회의 영역이라고 할 수 있다.
이 책은 셰이더의 개념과 원리를 코딩을 통해 직접 경험할 수 있는 기회를 제공한다. 코드에서 버텍스와 메쉬를 생성하는 것에서 출발한다. 라이팅, 노말 매핑, 큐브 맵과 같은 현대 게임 그래픽의 근간이 되는 주요 개념을 자세히 설명하고, 직접 코딩을 통해 구현한다. 마지막으로 유니티와 언리얼에서 이 책에서 설명한 내용과의 접점을 확인한다. 당장 쓸 수 있는 화려한 최신 기법을 소개하기보다는 실제 코딩을 통해 리얼타임 컴퓨터 그래픽과 셰이더의 기본 개념을 설명한다.
독자에 따라서는 일부 그래픽과 수학 개념이 다소 어렵게 느껴질 수 있다. 최대한 친절하게 전달하려 했지만 개념 자체가 생소한 독자에게는 여전히 어렵게 느껴질 것이다. 그러나 설령 한 두 부분을 이해하지 못하고 넘어간다 해도 크게 문제가 되지는 않는다. 이 책을 읽은 것 만으로도 셰이더 사용과 게임 엔진의 셰이더 개발 도구를 활용하는 데 큰 도움이 될 것이다.
이 책의 번역이 독자 제현(諸賢)의 학습과 실무에 도움이 될 수 있기를 진심으로 기원한다.
2019년 11월
한적한 겨울 바닷가에서
2014년 현재, 유니티 테크놀로지가 밝힌 등록된 개발자의 수는 200만 명이 넘는다. 게임 타이틀의 판매량이나 온라인 게임의 동시 접속자가 아닌, 게임 개발 도구의 사용자라는 사실을 감안하면 유니티가 내세운 '개발의 민주화'라는 목표가 허언이 아님을 실감할 수 있다. 유니티 애셋 스토어는 이러한 게임 개발 민주화의 한 축을 담당하는 곳이다.
유니티 애셋 스토어는 소수가 만들고 소수가 사용하던 기존 게임 엔진에서는 상상할 수 없는 모습을 보여준다. 개발 상의 다양한 필요를 반영하는 수많은 미들웨어와 애셋이 출시됐고, 적은 비용으로 개발의 효율을 크게 높일 수 있다. 물론 부작용도 있다. 앱 스토어의 경우처럼, 기대하는 수준에 훨씬 미치지 못하는, 실망스런 미들웨어와 애셋도 존재한다. 그러나 일부 미들웨어는 엔진의 기능을 확장하고 한계를 넘어서며, 유니티 게임 개발의 필수 요소로 자리잡았다. NGUI는 바로 그러한 애셋 스토어 미들웨어의 대표적 성공 사례라고 할 수 있다.
이 책은 유니티 미들웨어인 NGUI를 본격적으로 다룬 책이다. 기본 구조와 주요 위젯에 대해 설명하고, 게임의 메인 메뉴에 들어가는 다양한 UI 요소들을 실제로 제작하며 NGUI의 기능을 상세하게 소개한다. 독자는 이 과정에서 NGUI의 기본 활용은 물론, UI 애니메이션, 윈도우 드래그와 스크롤, 로컬라이제이션, 아이템 드래그앤드롭, C# 스크립트 활용 같은 중급 이상의 주제를 학습할 수 있다. 유니티에 대한 기본적 이해를 갖춘 상태에서 NGUI 사용을 준비하는 개발자에게 이 책을 추천한다. 또한 현업에서 UI 애셋을 만드는 UI 아티스트나 UI 기획을 담당하는 기획자에게도 이 책을 추천한다. 업무 영역의 확장을 통해 개인의 만족과 역량의 향상은 물론이고, 향상된 게임 UI를 위한 의미 있는 경험이 되리라 생각한다.
이 책으로 본격적인 학습을 시작하기 전에 두 가지 당부의 말이 있다. 첫 번째는 NGUI의 버전과 관계된 부분이다. 유니티 미들웨어는 사용자의 요구를 반영하며 빠르게 발전한다. NGUI도 예외는 아니다. 이 책은 올 초에 출간된 신간이지만, 벌써 현재 NGUI 최신 버전과는 약간의 차이가 있다. 구체적으로 원서는 NGUI 3.0.2를 기준으로 작성됐다. 그러나 번역하는 현 시점에서 3.0.9가 제공되고 있다. 중간에 여러 차례 업데이트가 있었고, 특히 3.0.7에서 큰 변화가 있었다. 따라서 원서의 내용은 최대한 살리면서 최신 버전 사용자가 보기에도 문제 없도록 일부 내용을 수정했다. 또한 최신 버전에서 권장하는 사용 방법이나 이 책에서 다루지 않는 방법을 소개하기 위해 부록을 추가했다. 부록에서는 새로운 앵커 시스템, 다이나믹 폰트, 컨텍스트 메뉴, 스크롤 뷰와 테이블, 새로운 드래그앤 드롭 시스템, 이벤트 리스너와 NGUITools 클래스 등의 스크립트 활용을 설명한다. 이 책의 내용을 모두 마친 뒤에 부록을 참고한다면 NGUI 활용에 도움이 될 것이다.
또 다른 당부는 예제 프로젝트에 관한 것이다. 이 책은 예제 프로젝트를 제공하지 않는다. 프로젝트를 제공하면 그 안에 NGUI 유료 카피가 포함되기 때문이다. 이런 이유에서 원서도 스크립트와 애셋만을 제공한다. 기존 다른 번역서에서는 책의 내용을 따라가는 과정에서 약간의 문제가 있어도 예제 프로젝트를 통해서 원인을 찾거나 다음 단계로 넘어갈 수 있었다. 그러나 이 책에서는 그런 예제 프로젝트가 제공되지 않고, 책의 실습 내용도 처음부터 끝까지 유기적으로 연결된다. 이 점을 감안해서 학습하는 과정에서 좀 더 주의를 기울이길 당부한다.
이 책의 번역이 유니티와 NGUI를 사용하는 독자 제현에게 도움이 되기를 희망한다.
조 형 재
이 책은 iOS 플랫폼을 기반으로 하는 게임의 기획, 개발, 출시까지의 과정을 설명한 책이다. 유니티에 대한 기본적 지식을 갖춘 상태에서, iOS 게임 개발을 처음으로 시도하는 독자라면 참고할 만한 내용이 많은 유익한 책이다. 특히 모바일 플랫폼에서 레이싱 게임 개발을 처음 시도하는 독자라면 현재 시중에 나와있는 관련 서적 중에서 가장 적합한 책이 아닐까 싶다. 애플 개발자 프로그램 가입과 게임 심사와 출시에 수반된 복잡한 과정을 비교적 상세하게 설명하고, 이를 유니티에서의 iOS 게임 프로젝트 개발을 통해 실습하기 때문이다.
반면 유니티를 처음 접하는 독자에게는 이 책의 설명이 다소 어렵게 느껴질 수 있다. 또한 실전에 바로 활용할 수 있는 다양한 기법을 바라는 독자에게는 일부 내용, 특히 초반에 게임 기획에 관한 내용이나 게임 홍보에 관한 지침 등은군더더기처럼 여겨질 수도 있다. 역자로서 냉정히 말한다면, 1장을 비롯한 일부 내용은 건너뛰어도 문제될 것은 없다. 개발자라면 이미 알고 있을 내용도 많고, 무엇보다 유니티와 크게 관련이 없는 내용이기 때문이다.
그러나 이렇게 생각해 보자. 중간에 접히거나, 계획보다 몇 배나 오래 지연되는 개발 프로젝트를 주위에서 흔히 볼 수 있다. 그런 시행 착오의 원인이 엔진에 대한 세부적인 지식이 부족해서일까, 아니면 너무도 당연한 개발의 원칙에 소홀했기 때문일까? 물론 이 책은 후자를 설명하기 위한 책은 아니다. 독자 역시 그런 내용을 기대하고 이 책을 구매하지는 않았을 것이다. 그러나 본격적인 학습에 앞서 마음을 정리하고, 경험을 되새긴다는 차원에서 저자의 이야기를 들어본다면, 결코 무익한 경험은 아닐 것이다.
이 책만으로 유니티와 iOS 모바일 게임 개발이라는 두 마리 토끼를 모두 잡지는 못할 것이다. 그러나 짧은 시간안에 두 마리 토끼를 잡는 재미를 맛보여주는 역할은 충분히 할 것으로 기대한다. 핸드폰에 자신이 만든 첫 게임을 담아 친구에게 선보일 때의 뿌듯함. 이 책을 통해 독자 제현이 그런 뿌듯함을 경험하기를 희망한다.